openpond 0.2.51 → 0.2.53
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 +1 -0
- package/dist/app-server.js +1 -1
- package/dist/chunks/{app-layer-RRFI27N4.js → app-layer-I7MZYVLL.js} +1 -1
- package/dist/chunks/{app-server-runtime-4YKIZB22.js → app-server-runtime-KZP2LB5X.js} +1 -1
- package/dist/chunks/{apps-NELJL377.js → apps-TM74FFQB.js} +1 -1
- package/dist/chunks/{chunk-OC6UWKBL.js → chunk-3LX6RU3C.js} +2 -2
- package/dist/chunks/{chunk-7YR6CBNU.js → chunk-4SHKI3BH.js} +1 -1
- package/dist/chunks/{chunk-7MXZJQS7.js → chunk-4TZHH5FC.js} +1 -1
- package/dist/chunks/{chunk-ZCWHVLJ4.js → chunk-5TNDPNS3.js} +1 -1
- package/dist/chunks/{chunk-42GOV5ZU.js → chunk-6JAN4RMN.js} +1 -1
- package/dist/chunks/{chunk-OE2VF6KU.js → chunk-6VF3Q6QJ.js} +1 -1
- package/dist/chunks/chunk-7ZG3IT7C.js +9 -0
- package/dist/chunks/{chunk-EPY7M5XS.js → chunk-AFUDIT36.js} +1 -1
- package/dist/chunks/{chunk-Q4H3NUVW.js → chunk-AH22RHPS.js} +2 -2
- package/dist/chunks/{chunk-DLZP22WV.js → chunk-FPUUZQUP.js} +1 -1
- package/dist/chunks/{chunk-O7VGFMDO.js → chunk-GCOUYYHG.js} +1 -1
- package/dist/chunks/{chunk-MASJQWA2.js → chunk-GXSTZBM6.js} +1 -1
- package/dist/chunks/{chunk-IOQUF34U.js → chunk-H2VT22JK.js} +1 -1
- package/dist/chunks/{chunk-TBNBCOW7.js → chunk-NHFGEVVH.js} +1 -1
- package/dist/chunks/{chunk-JCCU3VFK.js → chunk-PQHTZ5CP.js} +1 -1
- package/dist/chunks/{chunk-QJRXTIOC.js → chunk-USKE34VR.js} +1 -1
- package/dist/chunks/{chunk-2ZJJFBIA.js → chunk-USMZT5FZ.js} +12 -12
- package/dist/chunks/{chunk-KXEG7HCG.js → chunk-XGE2XI6M.js} +115 -114
- package/dist/chunks/{chunk-UBFRWC6I.js → chunk-YD55Z5H3.js} +1 -1
- package/dist/chunks/{chunk-RLZPX4YP.js → chunk-YJ4PNAST.js} +1 -1
- package/dist/chunks/{cli-ZLDLOKPL.js → cli-JVB345H2.js} +1 -1
- package/dist/chunks/{configuration-command-SA56RV5B.js → configuration-command-MATM4XR5.js} +1 -1
- package/dist/chunks/{connected-evidence-IVSQZYIB.js → connected-evidence-YDPGNHLP.js} +1 -1
- package/dist/chunks/{core-commands-W5IGIITV.js → core-commands-MTV4EKXY.js} +1 -1
- package/dist/chunks/{datasets-KSO2UG6R.js → datasets-CP3IT47T.js} +1 -1
- package/dist/chunks/{desktop-test-6HXFM7PO.js → desktop-test-IAZC5MAH.js} +1 -1
- package/dist/chunks/{dist-BLBZENVB.js → dist-SAABJU5F.js} +1 -1
- package/dist/chunks/{evaluation-coordination-MOFBXRXN.js → evaluation-coordination-EPHLZXYM.js} +1 -1
- package/dist/chunks/{experiment-improvements-TDHM6NEA.js → experiment-improvements-6JTOPA74.js} +1 -1
- package/dist/chunks/{experiments-HFPDFD4I.js → experiments-XHPFGECH.js} +1 -1
- package/dist/chunks/{extension-R373LYIB.js → extension-GX7DLW2X.js} +1 -1
- package/dist/chunks/{help-PEFQDDTA.js → help-WLKSACLZ.js} +1 -1
- package/dist/chunks/{hosted-experiment-improvement-NTYYSPQX.js → hosted-experiment-improvement-HAB3UE6A.js} +1 -1
- package/dist/chunks/{hosted-harness-runtime-FZZLWLBR.js → hosted-harness-runtime-YM23QNDK.js} +1 -1
- package/dist/chunks/{hosted-profile-candidate-LVNKOTKJ.js → hosted-profile-candidate-EOBGKQAS.js} +1 -1
- package/dist/chunks/{hosted-profile-compiler-JODGZCA7.js → hosted-profile-compiler-OZAOZ2ES.js} +1 -1
- package/dist/chunks/{hosted-profile-evaluation-control-7B3RAZU2.js → hosted-profile-evaluation-control-RJ6XJZCS.js} +1 -1
- package/dist/chunks/{hosted-profile-evaluation-inspection-FPCV42DD.js → hosted-profile-evaluation-inspection-SJIDXPHI.js} +1 -1
- package/dist/chunks/{hosted-profile-evaluation-preparation-F2SPAEKK.js → hosted-profile-evaluation-preparation-26EI5LJR.js} +1 -1
- package/dist/chunks/{human-review-HRGGACEM.js → human-review-AAVMISBF.js} +1 -1
- package/dist/chunks/{import-RSAQ44GG.js → import-V3HUGRHR.js} +1 -1
- package/dist/chunks/{opchat-I7ZWJ5XK.js → opchat-QK43DXTY.js} +1 -1
- package/dist/chunks/{organizations-LFCZIH7E.js → organizations-SRPAWKC7.js} +1 -1
- package/dist/chunks/{profile-EPIX5QVK.js → profile-C6CQNVYE.js} +1 -1
- package/dist/chunks/{project-agent-DGOPMECP.js → project-agent-GZV5HNYI.js} +1 -1
- package/dist/chunks/{sandbox-command-Q5F6VUOS.js → sandbox-command-4TJXQTKT.js} +1 -1
- package/dist/chunks/{sandbox-template-7GICPIKJ.js → sandbox-template-BBGGPJMI.js} +1 -1
- package/dist/chunks/{src-DH5AQ4Z7.js → src-CR6UZYTX.js} +1 -1
- package/dist/chunks/src-P3VYLFLI.js +329 -0
- package/dist/chunks/{teams-bot-Z6RJGHME.js → teams-bot-7I4BAUVO.js} +1 -1
- package/dist/chunks/{workspaces-XIQNPAP7.js → workspaces-MFZ3OO6O.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/web/assets/App-CO2F717V.css +1 -0
- package/dist/web/assets/App-CuhaCsfb.js +235 -0
- package/dist/web/assets/{AppDialog-1iGodoot.js → AppDialog-BdusXgU0.js} +1 -1
- package/dist/web/assets/{AppTerminalPanel-udtBdWFn.js → AppTerminalPanel-C4uRpnBz.js} +2 -2
- package/dist/web/assets/{AppsView-DhKsU4yi.js → AppsView-BS1czXUP.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-BnOyqIQT.js → BrowserSidebar-Bl7V6YO2.js} +1 -1
- package/dist/web/assets/{CartesianChart-C24DAywn.js → CartesianChart-BstFbsdn.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-DgmOF5Fe.js → CollaborationTabs-B8YAf0c1.js} +1 -1
- package/dist/web/assets/{CommandMenu-CUNGtHwS.js → CommandMenu-DZct7zUJ.js} +1 -1
- package/dist/web/assets/{CommunityView-CE7qeJnr.js → CommunityView-CR0-W-uG.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-BixNsg2a.js → ComposerCreateImproveStrip-DR-Qo7b4.js} +1 -1
- package/dist/web/assets/{GetStartedView-B8gCwmBX.js → GetStartedView-xqQoMMei.js} +1 -1
- package/dist/web/assets/HostedModelLearningReview-CHxxf_Lu.js +1 -0
- package/dist/web/assets/{HostedModelLearningSettings-WUaqzNsa.js → HostedModelLearningSettings-De3i9wF4.js} +1 -1
- package/dist/web/assets/{LabModelVersionDetailPage-Cx0kL69J.js → LabModelVersionDetailPage-DAY1MmqP.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-DRggqZ1j.js → LabSkillSidebar-DLnIgnry.js} +1 -1
- package/dist/web/assets/{LabsRoute-BujTZhqC.js → LabsRoute-CXJRJMhr.js} +4 -4
- package/dist/web/assets/{MainChatThread-CyA_644R.js → MainChatThread-BwAla81W.js} +2 -2
- package/dist/web/assets/MainPane-CakOBCHw.js +19 -0
- package/dist/web/assets/{MarkdownText-DJI5LwT0.js → MarkdownText-gJMuefaJ.js} +21 -21
- package/dist/web/assets/{NativeSkillSidebar-CkFpWxjd.js → NativeSkillSidebar-Dlxb8iOC.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-DXcRHHsu.js → NewExperienceSwitcher-DM-cqJ-K.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-gDzX_ZIJ.js → NewProjectDialog-Cu1q75gq.js} +1 -1
- package/dist/web/assets/{OutputsPage-J_k-_N82.js → OutputsPage-DiXMkasl.js} +1 -1
- package/dist/web/assets/{ProjectsPage-BsyZmvlg.js → ProjectsPage-DqiBHiCB.js} +1 -1
- package/dist/web/assets/{RightChatPanelStack-Bz8puMUB.js → RightChatPanelStack-VaOOmxwd.js} +1 -1
- package/dist/web/assets/{RightSidebarHomePanel-DmorYb6p.js → RightSidebarHomePanel-CeSFJM5s.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-BFDzQUyL.js → ScheduledWorkPage-D1jRQxFs.js} +1 -1
- package/dist/web/assets/{SettingsView-BB7wCdbr.js → SettingsView-RA9OXgcu.js} +3 -3
- package/dist/web/assets/{TeamChatView-CZ3b7rq2.js → TeamChatView-DM0adMtj.js} +1 -1
- package/dist/web/assets/{TerminalOverlay-Ck43Qri3.js → TerminalOverlay-CFlH51DD.js} +1 -1
- package/dist/web/assets/{TrainingCreationPanel-ejqPZm3g.js → TrainingCreationPanel-CgIBVGha.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-Cy2AQxxL.js → TrainingDraftPanel-Bbo3RRie.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-B7nyMItm.js → UsageSettingsSection-CSRjJUSa.js} +1 -1
- package/dist/web/assets/{WorkSidebarPanel-BfjAc097.js → WorkSidebarPanel-DwlEMEoG.js} +1 -1
- package/dist/web/assets/WorkspaceDiffPanel-pGVezNMw.js +14 -0
- package/dist/web/assets/{WorkspaceEnvironmentMenu-B-K9XgFB.js → WorkspaceEnvironmentMenu-Byjngd9V.js} +1 -1
- package/dist/web/assets/{WorkspaceGitDialogs-BJVFx_L3.js → WorkspaceGitDialogs-Dgmg-6XG.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-p-FWMXoZ.js → WorkspaceMonacoEditor-BR4qxMgU.js} +3 -3
- package/dist/web/assets/{arrow-up-right-CFGI2YSt.js → arrow-up-right-H0pvnH2s.js} +1 -1
- package/dist/web/assets/{chunk-UHVJOMWN-BAlur2vw.js → chunk-UHVJOMWN-BqXRe639.js} +1 -1
- package/dist/web/assets/{clipboard-DIIxBort.js → clipboard-BZzZ82Bk.js} +1 -1
- package/dist/web/assets/{cloud-upload-BaQFNCTp.js → cloud-upload-CJPYPVl8.js} +1 -1
- package/dist/web/assets/{cssMode-6LOkSggB.js → cssMode-WC4Rg1l-.js} +1 -1
- package/dist/web/assets/{folder-open-DZSxfPtr.js → folder-open-sLZJxLQy.js} +1 -1
- package/dist/web/assets/{folder-plus-21v4D_Vx.js → folder-plus-C84wrpt_.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-CgGixL64.js → git-commit-horizontal-Cotm7KEC.js} +1 -1
- package/dist/web/assets/{htmlMode-B5uRraNd.js → htmlMode-C6oZGeaB.js} +1 -1
- package/dist/web/assets/{index-DOMrqhcz.js → index-BxWTVKtn.js} +2 -2
- package/dist/web/assets/index-dSmk3FLJ.css +1 -0
- package/dist/web/assets/{info-BGTcmow7.js → info-Dc81lEfw.js} +1 -1
- package/dist/web/assets/{jsonMode-D3m8N4Gi.js → jsonMode-BET4LQIn.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-DoyipLsB.js → lspLanguageFeatures-BPxA_-Kg.js} +1 -1
- package/dist/web/assets/{minimize-2-B01qSko4.js → minimize-2-Bs7MVN3C.js} +1 -1
- package/dist/web/assets/{monaco.contribution-Bc22foTx.js → monaco.contribution-7AUuf2NS.js} +2 -2
- package/dist/web/assets/{monaco.contribution-BJyfaGX2.js → monaco.contribution-BH6kkO4b.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DuRhJ6zU.js → monaco.contribution-DFzEyaHi.js} +2 -2
- package/dist/web/assets/{monaco.contribution--U8v3jpa.js → monaco.contribution-DXzyQfVi.js} +2 -2
- package/dist/web/assets/{monitor-eZP8ZTHe.js → monitor-DXL019Wf.js} +1 -1
- package/dist/web/assets/{play-CGsWFR_B.js → play-CXkxUZeU.js} +1 -1
- package/dist/web/assets/{python-BNrLZWud.js → python-PzBkTjWx.js} +1 -1
- package/dist/web/assets/{save-BLgjrccP.js → save-DpezrtH2.js} +1 -1
- package/dist/web/assets/{square-CI1qNtvE.js → square-oy7f5Ce6.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-B_GcTCnw.js → toggleHighContrast-Cto-fOXm.js} +1 -1
- package/dist/web/assets/{tsMode-CmruH_ys.js → tsMode-BYA4LNc6.js} +1 -1
- package/dist/web/assets/{upload-DnlgGS2x.js → upload-C5YFNgtS.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-BBhGUfK-.js → useLocalAgentSchedules-CnyTsqlf.js} +1 -1
- package/dist/web/assets/useProviderSettings-B_KeQjE5.js +5 -0
- package/dist/web/assets/{useSessionTurnCache-BwscKl5i.js → useSessionTurnCache-DICuJSJW.js} +1 -1
- package/dist/web/assets/{wifi-off-Dz-4EDCc.js → wifi-off-nzHj7JXp.js} +1 -1
- package/dist/web/assets/{workers-Bi9u46cp.js → workers-Dboaw6f_.js} +1 -1
- package/dist/web/assets/{yaml-DVTkiRnh.js → yaml-uuY5JmO8.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunks/chunk-7K72KS5C.js +0 -9
- package/dist/chunks/src-STK4YHBI.js +0 -329
- package/dist/web/assets/App-BI-uOpnP.js +0 -234
- package/dist/web/assets/App-DkH8CeoI.css +0 -1
- package/dist/web/assets/HostedModelLearningReview-CitgUNfC.js +0 -1
- package/dist/web/assets/MainPane-LaEtxydD.js +0 -19
- package/dist/web/assets/WorkspaceDiffPanel-D9hAV8l7.js +0 -14
- package/dist/web/assets/index-DJcUXSsN.css +0 -1
- package/dist/web/assets/useProviderSettings-DfhdkKdC.js +0 -5
- /package/dist/chunks/{chunk-XDMUD4FW.js → chunk-2JO2KWT3.js} +0 -0
- /package/dist/chunks/{chunk-XBCIBAXD.js → chunk-GS2NKNKG.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as fe,b as me,d as he,e as q,f as L,g as ye,h as Ae,i as ge,j as Pe}from"./chunk-HA7EFTPF.js";import{e as pe}from"./chunk-XDMUD4FW.js";import{d as N,e as B}from"./chunk-Z3D4C7BG.js";import{D as oe,g as te}from"./chunk-TGIB24K4.js";import{q as de}from"./chunk-NNF6KCHD.js";import{a}from"./chunk-FTQLQJQV.js";import{randomUUID as qe}from"node:crypto";var Te=new URL(B).hostname,we=new URL(N).hostname,Ne=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function V(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===Te)return B;if(o===we||o===`www.${we}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(V,"mapUiBaseToApiBase");function G(e,n){let t=l(process.env.OPENPOND_API_URL);if(t)return t;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(n.apiBaseUrl);if(r)return r;let s=V(process.env.OPENPOND_BASE_URL);return s||(V(e?.baseUrl||n.baseUrl)??B)}a(G,"resolvePublicApiBaseUrl");function J(e,n,t){return Le(e,n,t)}a(J,"resolveHostedChatApiBaseUrl");function Le(e,n,t){let o=typeof process<"u"?process.env:{};return W(o.OPENPOND_OPCHAT_API_URL)??W(e?.chatApiBaseUrl??n.chatApiBaseUrl)??W(o.OPENPOND_CHAT_API_URL)??De(t)}a(Le,"resolveOpChatApiBaseUrl");function W(e){let n=l(e);if(!n)return null;try{let t=new URL(n),o=t.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(t.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,t.search="",t.hash="",l(t.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(t.pathname="/opchat/v1",t.search="",t.hash="",l(t.toString())??null):(t.pathname=`${t.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),t.search="",t.hash="",l(t.toString())??null)}catch{return null}}a(W,"normalizeOpChatApiBaseUrl");function De(e){return W(e)??Ne}a(De,"opChatBaseFromPublicApiBase");function D(e){return e?.trim()?e.trim():"production"}a(D,"deriveEnvironment");function Y(e,n=process.env){let t=[e?.apiKey,e?.session?.token,e?.token,n.OPENPOND_API_KEY];for(let o of t){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Y,"accountToken");function P(e,n){return!!(e&&n&&e.toLowerCase()===n.toLowerCase())}a(P,"handleEquals");function b(e,n){return l(e)===l(n)}a(b,"baseUrlEquals");function F(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(F,"profileKey");function Q(e){return l(e?.baseUrl)}a(Q,"selectorBaseUrl");function _(e){let n=l(e.baseUrl);return n?{handle:e.handle,baseUrl:n}:{handle:e.handle}}a(_,"selectorFromAccount");function A(e){let n=typeof e?.handle=="string"?e.handle.trim():"";if(!n)return null;let t=l(e?.baseUrl);return t?{handle:n,baseUrl:t}:{handle:n}}a(A,"normalizeActiveProfile");function U(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function re(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(re,"profileMatchesSelector");function Oe(e,n,t){let o=Array.isArray(e.accounts)?e.accounts:[],r=n||process.env.OPENPOND_ACCOUNT?A({handle:n||process.env.OPENPOND_ACCOUNT||"",baseUrl:t??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Oe,"findActiveAccount");function xe(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ae(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:D(o.environment),isActive:t?U(o,t):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(xe,"fallbackProfilesFromConfig");function ae(e){let n=new Map;for(let t of e){let o=l(t.baseUrl),r=`${t.handle.toLowerCase()}|${o??"default"}`,s={...t,baseUrl:o,apiBaseUrl:l(t.apiBaseUrl),chatApiBaseUrl:l(t.chatApiBaseUrl),environment:D(t.environment),isActive:t.isActive},i=n.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&n.set(r,s)}return Array.from(n.values())}a(ae,"normalizeProfiles");function be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(be,"profileAuthHealth");function $e(e,n){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||n,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a($e,"normalizeHealth");function Ue(e){let n=e?.account;return n?{id:n.id??null,email:n.email??null,name:n.name??null,handle:n.handle??null,image:n.image??null,timezone:n.timezone??null,isAdmin:n.isAdmin??null,isVerified:n.isVerified??null,dailyAgentAppId:n.dailyAgentAppId??null,dailyAgentDeploymentId:n.dailyAgentDeploymentId??null,credits:n.credits??null}:null}a(Ue,"normalizeProfile");function He(e){return(e??[]).map(n=>({...n,id:n.id||n.userProductId||n.openPondProductId||n.name,name:n.name,type:n.type,status:n.status,isActive:n.isActive??null,price:n.price??null,currency:n.currency??null,credits:n.credits??null}))}a(He,"normalizeProducts");function Me(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(Me,"isEmptyDefaultProfile");function ze(e){let n=e?.trim();return n?n.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${n.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(ze,"apiKeyHint");function Fe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(Fe,"apiKeyAccess");function X(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=J(o,n,s),h=Ue(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(d=>re(d,v)):null)??t.find(d=>d.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",u=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=D(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),M=(t.length>0?t:O?[{handle:O,baseUrl:Q(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(d=>!Me(d));return{state:y,activeProfile:x,label:u,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:He(i?.products),apiHealth:$e(m??null,s),accounts:M.map(d=>{let T=l(d.baseUrl),Re=n.accounts?.find(ue=>P(ue.handle,d.handle)&&b(ue.baseUrl,T)),ne=c?.[F(d.handle,T)]??null,z=Ue(ne?.response??null);return{handle:d.handle,baseUrl:T,apiBaseUrl:l(d.apiBaseUrl),chatApiBaseUrl:l(d.chatApiBaseUrl),environment:D(d.environment),isActive:x?re(d,x):!1,authHealth:ne?.authFailed?"auth_error":be(d),displayLabel:z?.name||z?.handle||z?.email||d.handle,email:z?.email??null,avatarUrl:z?.image??null,apiKeyHint:ze(Re?.apiKey),apiKeyAccess:Fe(ne?.response??null)}}),error:f??m?.error??null}}a(X,"toAccountState");async function je(e){try{return ae(await Ae())}catch{return xe(e)}}a(je,"loadProfiles");async function p(e,n){let t=await ye(),o=await je(t),r=Oe(t,e,n),s=Y(r),i=G(r,t),c=J(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:X({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(p,"loadOpenPondAccountContext");async function Ke(e){let n=l(e.baseUrl);return await ge(e.handle,{baseUrl:n}),p(e.handle,n)}a(Ke,"switchOpenPondAccount");function $(e){return e instanceof Error?e.message:String(e)}a($,"errorMessage");var We=15e3;function Ve(e){return e===oe?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ve,"displayNameForHostedModel");function Ge(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ve(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ge,"normalizeHostedModel");async function Je(){let e=await p();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await Xe({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ge(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:$(n)}}}a(Je,"loadOpenPondHostedModels");async function Ye(){let e=await p();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let n=new AbortController,t=setTimeout(()=>{n.abort(new Error("OpenPond provider catalog request timed out."))},We);try{return{catalog:await Ee({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:$(o)}}finally{clearTimeout(t)}}a(Ye,"loadOpenPondProviderCatalog");async function*Qe(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*ve({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||oe,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(Qe,"streamOpenPondHostedChatTurn");async function Xe(e){let n=se(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await le(t)}`);return await t.json()}a(Xe,"listOpChatModels");async function Ee(e){let n=se(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await le(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?te.parse(o):te.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&de.safeParse(r.id).success)})}a(Ee,"listOpChatProviderCatalog");async function*ve(e){let n=se(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ie(e.token,"text/event-stream",e.requestId),body:JSON.stringify(rn(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await le(t)}`);if(!t.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=Ze(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],ee=a(()=>{if(C.length===0)return[];let y=C.join(`
|
|
2
|
+
import{a as fe,b as me,d as he,e as q,f as L,g as ye,h as Ae,i as ge,j as Pe}from"./chunk-HA7EFTPF.js";import{e as pe}from"./chunk-2JO2KWT3.js";import{d as N,e as B}from"./chunk-Z3D4C7BG.js";import{D as oe,g as te}from"./chunk-TGIB24K4.js";import{q as de}from"./chunk-NNF6KCHD.js";import{a}from"./chunk-FTQLQJQV.js";import{randomUUID as qe}from"node:crypto";var Te=new URL(B).hostname,we=new URL(N).hostname,Ne=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function V(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===Te)return B;if(o===we||o===`www.${we}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(V,"mapUiBaseToApiBase");function G(e,n){let t=l(process.env.OPENPOND_API_URL);if(t)return t;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(n.apiBaseUrl);if(r)return r;let s=V(process.env.OPENPOND_BASE_URL);return s||(V(e?.baseUrl||n.baseUrl)??B)}a(G,"resolvePublicApiBaseUrl");function J(e,n,t){return Le(e,n,t)}a(J,"resolveHostedChatApiBaseUrl");function Le(e,n,t){let o=typeof process<"u"?process.env:{};return W(o.OPENPOND_OPCHAT_API_URL)??W(e?.chatApiBaseUrl??n.chatApiBaseUrl)??W(o.OPENPOND_CHAT_API_URL)??De(t)}a(Le,"resolveOpChatApiBaseUrl");function W(e){let n=l(e);if(!n)return null;try{let t=new URL(n),o=t.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(t.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,t.search="",t.hash="",l(t.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(t.pathname="/opchat/v1",t.search="",t.hash="",l(t.toString())??null):(t.pathname=`${t.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),t.search="",t.hash="",l(t.toString())??null)}catch{return null}}a(W,"normalizeOpChatApiBaseUrl");function De(e){return W(e)??Ne}a(De,"opChatBaseFromPublicApiBase");function D(e){return e?.trim()?e.trim():"production"}a(D,"deriveEnvironment");function Y(e,n=process.env){let t=[e?.apiKey,e?.session?.token,e?.token,n.OPENPOND_API_KEY];for(let o of t){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Y,"accountToken");function P(e,n){return!!(e&&n&&e.toLowerCase()===n.toLowerCase())}a(P,"handleEquals");function b(e,n){return l(e)===l(n)}a(b,"baseUrlEquals");function F(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(F,"profileKey");function Q(e){return l(e?.baseUrl)}a(Q,"selectorBaseUrl");function _(e){let n=l(e.baseUrl);return n?{handle:e.handle,baseUrl:n}:{handle:e.handle}}a(_,"selectorFromAccount");function A(e){let n=typeof e?.handle=="string"?e.handle.trim():"";if(!n)return null;let t=l(e?.baseUrl);return t?{handle:n,baseUrl:t}:{handle:n}}a(A,"normalizeActiveProfile");function U(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function re(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(re,"profileMatchesSelector");function Oe(e,n,t){let o=Array.isArray(e.accounts)?e.accounts:[],r=n||process.env.OPENPOND_ACCOUNT?A({handle:n||process.env.OPENPOND_ACCOUNT||"",baseUrl:t??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Oe,"findActiveAccount");function xe(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ae(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:D(o.environment),isActive:t?U(o,t):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(xe,"fallbackProfilesFromConfig");function ae(e){let n=new Map;for(let t of e){let o=l(t.baseUrl),r=`${t.handle.toLowerCase()}|${o??"default"}`,s={...t,baseUrl:o,apiBaseUrl:l(t.apiBaseUrl),chatApiBaseUrl:l(t.chatApiBaseUrl),environment:D(t.environment),isActive:t.isActive},i=n.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&n.set(r,s)}return Array.from(n.values())}a(ae,"normalizeProfiles");function be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(be,"profileAuthHealth");function $e(e,n){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||n,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a($e,"normalizeHealth");function Ue(e){let n=e?.account;return n?{id:n.id??null,email:n.email??null,name:n.name??null,handle:n.handle??null,image:n.image??null,timezone:n.timezone??null,isAdmin:n.isAdmin??null,isVerified:n.isVerified??null,dailyAgentAppId:n.dailyAgentAppId??null,dailyAgentDeploymentId:n.dailyAgentDeploymentId??null,credits:n.credits??null}:null}a(Ue,"normalizeProfile");function He(e){return(e??[]).map(n=>({...n,id:n.id||n.userProductId||n.openPondProductId||n.name,name:n.name,type:n.type,status:n.status,isActive:n.isActive??null,price:n.price??null,currency:n.currency??null,credits:n.credits??null}))}a(He,"normalizeProducts");function Me(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(Me,"isEmptyDefaultProfile");function ze(e){let n=e?.trim();return n?n.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${n.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(ze,"apiKeyHint");function Fe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(Fe,"apiKeyAccess");function X(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=J(o,n,s),h=Ue(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(d=>re(d,v)):null)??t.find(d=>d.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",u=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=D(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),M=(t.length>0?t:O?[{handle:O,baseUrl:Q(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(d=>!Me(d));return{state:y,activeProfile:x,label:u,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:He(i?.products),apiHealth:$e(m??null,s),accounts:M.map(d=>{let T=l(d.baseUrl),Re=n.accounts?.find(ue=>P(ue.handle,d.handle)&&b(ue.baseUrl,T)),ne=c?.[F(d.handle,T)]??null,z=Ue(ne?.response??null);return{handle:d.handle,baseUrl:T,apiBaseUrl:l(d.apiBaseUrl),chatApiBaseUrl:l(d.chatApiBaseUrl),environment:D(d.environment),isActive:x?re(d,x):!1,authHealth:ne?.authFailed?"auth_error":be(d),displayLabel:z?.name||z?.handle||z?.email||d.handle,email:z?.email??null,avatarUrl:z?.image??null,apiKeyHint:ze(Re?.apiKey),apiKeyAccess:Fe(ne?.response??null)}}),error:f??m?.error??null}}a(X,"toAccountState");async function je(e){try{return ae(await Ae())}catch{return xe(e)}}a(je,"loadProfiles");async function p(e,n){let t=await ye(),o=await je(t),r=Oe(t,e,n),s=Y(r),i=G(r,t),c=J(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:X({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(p,"loadOpenPondAccountContext");async function Ke(e){let n=l(e.baseUrl);return await ge(e.handle,{baseUrl:n}),p(e.handle,n)}a(Ke,"switchOpenPondAccount");function $(e){return e instanceof Error?e.message:String(e)}a($,"errorMessage");var We=15e3;function Ve(e){return e===oe?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ve,"displayNameForHostedModel");function Ge(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ve(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ge,"normalizeHostedModel");async function Je(){let e=await p();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await Xe({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ge(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:$(n)}}}a(Je,"loadOpenPondHostedModels");async function Ye(){let e=await p();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let n=new AbortController,t=setTimeout(()=>{n.abort(new Error("OpenPond provider catalog request timed out."))},We);try{return{catalog:await Ee({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:$(o)}}finally{clearTimeout(t)}}a(Ye,"loadOpenPondProviderCatalog");async function*Qe(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*ve({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||oe,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(Qe,"streamOpenPondHostedChatTurn");async function Xe(e){let n=se(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await le(t)}`);return await t.json()}a(Xe,"listOpChatModels");async function Ee(e){let n=se(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await le(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?te.parse(o):te.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&de.safeParse(r.id).success)})}a(Ee,"listOpChatProviderCatalog");async function*ve(e){let n=se(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ie(e.token,"text/event-stream",e.requestId),body:JSON.stringify(rn(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await le(t)}`);if(!t.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=Ze(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],ee=a(()=>{if(C.length===0)return[];let y=C.join(`
|
|
3
3
|
`);if(C=[],y==="[DONE]")return r=!0,[];let u;try{u=JSON.parse(y)}catch{throw new Error("OpenPond OpChat request failed: malformed streaming event.")}if(u&&typeof u=="object"&&"error"in u)throw new Error(`OpenPond OpChat request failed: ${_e(u)}`);i=u;let R=u&&typeof u=="object"?u:{},k=Array.isArray(R.choices)?R.choices:[],x=k[0]&&typeof k[0]=="object"?k[0]:{},K=x.delta&&typeof x.delta=="object"?x.delta:{},M=[],d=Be(K.reasoning_content);d&&(c+=d,M.push({type:"reasoning_delta",text:d,raw:u}));let T=Be(K.content);return T&&M.push({type:"text_delta",text:T,raw:u}),tn(o,K.tool_calls),s=H(x.finish_reason)??s,m=ln(u)??m,M},"consumeEvent"),v=a(y=>{let u=y.endsWith("\r")?y.slice(0,-1):y;return u?u.startsWith(":")?[]:(u.startsWith("data:")&&C.push(u.slice(5).trimStart()),[]):ee()},"consumeLine");try{for(;;){let y=await f.read();if(y.done)break;h+=w.decode(y.value,{stream:!0});let u=h.split(`
|
|
4
4
|
`);h=u.pop()??"";for(let R of u)for(let k of v(R))yield k}if(h+=w.decode(),h)for(let y of v(h))yield y;for(let y of ee())yield y}finally{f.releaseLock()}if(!r)throw new Error("OpenPond OpChat request failed: stream ended before [DONE].");let O=on(o);O.length>0&&(yield{type:"tool_call_delta",toolCalls:O,raw:i}),O.length>0&&c&&(yield{type:"continuation",continuation:{kind:"chat_completions_reasoning",reasoningContent:c},raw:i});let I=en(m,g);I&&(yield{type:"usage",usage:I,raw:i}),yield{type:"finish",finishReason:s,raw:i}}a(ve,"streamOpChatChatCompletion");function Ze(e){let n=ke(e,["fireworks-prompt-tokens","prompt-tokens"]),t=ke(e,["fireworks-cached-prompt-tokens","cached-prompt-tokens"]);return t===null?null:{...n===null?{}:{prompt_tokens:n},cached_input_tokens:t,cache_telemetry_source:"provider_response_headers"}}a(Ze,"cacheUsageFromResponseHeaders");function ke(e,n){for(let t of n){let o=e.get(t);if(o===null||!/^\d+$/.test(o.trim()))continue;let r=Number(o);if(Number.isSafeInteger(r)&&r>=0)return r}return null}a(ke,"firstHeaderTokenCount");function en(e,n){if(!n||nn(e))return e;let t={...e??{},cached_input_tokens:n.cached_input_tokens,cache_telemetry_source:"provider_response_headers"};return E(e?.prompt_tokens)===null&&n.prompt_tokens!==void 0&&(t.prompt_tokens=n.prompt_tokens),t}a(en,"usageWithResponseHeaderCache");function nn(e){return e?E(e.cached_input_tokens)!==null||E(e.cache_read_input_tokens)!==null||E(e.cache_creation_input_tokens)!==null||E(e.prompt_cache_hit_tokens)!==null||E(e.prompt_cache_miss_tokens)!==null?!0:E(e.prompt_tokens_details?.cached_tokens)!==null||E(e.input_tokens_details?.cached_tokens)!==null:!1}a(nn,"usageHasCacheTelemetry");function E(e){if(typeof e=="number"&&Number.isSafeInteger(e)&&e>=0)return e;if(typeof e!="string"||!/^\d+$/.test(e.trim()))return null;let n=Number(e);return Number.isSafeInteger(n)?n:null}a(E,"usageTokenCount");function tn(e,n){Array.isArray(n)&&n.forEach((t,o)=>{if(!t||typeof t!="object")return;let r=t,s=typeof r.index=="number"&&Number.isInteger(r.index)?r.index:o,i=e.get(s)??{arguments:""};typeof r.id=="string"&&(i.id=r.id);let c=r.function&&typeof r.function=="object"?r.function:{};typeof c.name=="string"&&(i.name=`${i.name??""}${c.name}`),typeof c.arguments=="string"&&(i.arguments+=c.arguments),e.set(s,i)})}a(tn,"mergeOpChatToolCallDeltas");function on(e){return[...e.entries()].sort(([n],[t])=>n-t).flatMap(([,n])=>n.id&&n.name?[{id:n.id,type:"function",function:{name:n.name,arguments:n.arguments}}]:[])}a(on,"completedOpChatToolCalls");function rn(e,n){let t={model:e.model,messages:e.messages.map(sn),stream:n};return e.tools&&(t.tools=e.tools),e.toolChoice!==void 0&&(t.tool_choice=e.toolChoice),typeof e.maxTokens=="number"&&(t.max_tokens=e.maxTokens),typeof e.temperature=="number"&&(t.temperature=e.temperature),typeof e.topP=="number"&&(t.top_p=e.topP),Object.assign(t,an(e.reasoningEffort)),t}a(rn,"buildOpChatBody");function an(e){return e?e==="off"?{thinking:{type:"disabled"}}:{thinking:{type:"enabled"},reasoning_effort:e}:{}}a(an,"opChatReasoningFields");function sn(e){let{continuation:n,images:t,...o}=e,r=t?.length?[...typeof e.content=="string"&&e.content.trim()?[{type:"text",text:e.content}]:[],...t.map(s=>({type:"image_url",image_url:{url:s.url,...s.detail?{detail:s.detail}:{}}}))]:e.content;return e.role==="assistant"&&n?.kind==="chat_completions_reasoning"?{...o,...r!==void 0?{content:r}:{},reasoning_content:n.reasoningContent}:{...o,...r!==void 0?{content:r}:{}}}a(sn,"opChatMessage");function se(e,n){let t=e.trim().replace(/\/+$/,"");if(!t)throw new Error("OpenPond OpChat API base URL is required.");return`${t}/${n}`}a(se,"opChatEndpointUrl");function ie(e,n,t){let o=e.trim();if(!o)throw new Error("OpenPond API key is required for OpChat.");let r=new Headers;r.set("Authorization",`Bearer ${o}`),r.set("Content-Type","application/json"),r.set("Accept",n),r.set("x-openpond-client","openpond-app");let s=t||qe();return r.set("x-openpond-request-id",s),r.set("x-request-id",s),r}a(ie,"opChatHeaders");async function le(e){let n=await e.text().catch(()=>"");if(!n)return e.statusText||`HTTP ${e.status}`;try{return _e(JSON.parse(n))}catch{return n}}a(le,"readOpChatError");function _e(e){if(!e||typeof e!="object")return String(e||"unknown_error");let n=e,t=n.error;if(t&&typeof t=="object"){let o=t;return[H(o.code),H(o.type),H(o.message)].filter(Boolean).join(": ")}return[H(n.error),H(n.message)].filter(Boolean).join(": ")||JSON.stringify(e)}a(_e,"errorMessageFromPayload");function ln(e){if(!e||typeof e!="object")return null;let n=e.usage;return!n||typeof n!="object"?null:n}a(ln,"parseUsage");function H(e){return typeof e=="string"&&e.trim()?e:null}a(H,"stringValue");function Be(e){return typeof e=="string"&&e.length>0?e:null}a(Be,"streamTextValue");import{readFileSync as cn}from"node:fs";var j;function un(){if(j!==void 0)return j??"openpond-code bundled";try{let e=new URL("../package.json",import.meta.resolve("openpond")),n=JSON.parse(cn(e,"utf8"));j=typeof n.version=="string"?`openpond-code@${n.version}`:null}catch{j=null}return j??"openpond-code bundled"}a(un,"getBundledRuntimeVersion");import{spawn as dn}from"node:child_process";function Se(e,n=process.platform){return n==="darwin"?{command:"open",args:[e]}:n==="win32"?{command:"rundll32.exe",args:["url.dll,FileProtocolHandler",e]}:{command:"xdg-open",args:[e]}}a(Se,"resolveSystemBrowserCommand");async function pn(e,n={}){let t=n.command??Se(e),o=n.handoffTimeoutMs??1500;return new Promise(r=>{let s=!1,i=null,c=a(g=>{s||(s=!0,i&&clearTimeout(i),r(g))},"finish"),m=dn(t.command,t.args,{detached:!1,shell:!1,stdio:"ignore",windowsHide:!0});m.once("error",g=>{let f=g.code;c({opened:!1,error:f?`browser launcher ${t.command} failed (${f})`:`browser launcher ${t.command} failed`})}),m.once("close",(g,f)=>{if(g===0){c({opened:!0});return}let w=f?`signal ${f}`:`code ${g??"unknown"}`;c({opened:!1,error:`browser launcher ${t.command} exited with ${w}`})}),i=setTimeout(()=>{m.unref(),c({opened:!0})},o),i.unref()})}a(pn,"openUrlWithSystemBrowser");function fn(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t;if(!t||!o)return null;let r=n.latestDeployment&&typeof n.latestDeployment=="object"?n.latestDeployment:null,s=pe.safeParse(n.sandboxActionRegistry);return{id:t,name:o,description:typeof n.description=="string"?n.description:null,visibility:typeof n.visibility=="string"?n.visibility:null,gitOwner:typeof n.gitOwner=="string"?n.gitOwner:null,gitRepo:typeof n.gitRepo=="string"?n.gitRepo:null,gitHost:typeof n.gitHost=="string"?n.gitHost:null,defaultBranch:typeof n.defaultBranch=="string"?n.defaultBranch:null,sandbox:n.sandbox===!0,sandboxActionRegistry:s.success?s.data:null,sandboxManifestHash:typeof n.sandboxManifestHash=="string"?n.sandboxManifestHash:null,sandboxManifestPath:typeof n.sandboxManifestPath=="string"?n.sandboxManifestPath:null,sandboxManifestSyncedAt:typeof n.sandboxManifestSyncedAt=="string"?n.sandboxManifestSyncedAt:n.sandboxManifestSyncedAt instanceof Date?n.sandboxManifestSyncedAt.toISOString():null,sandboxManifestError:typeof n.sandboxManifestError=="string"?n.sandboxManifestError:null,updatedAt:typeof n.updatedAt=="string"?n.updatedAt:null,latestDeployment:r?{id:typeof r.id=="string"?r.id:void 0,status:typeof r.status=="string"?r.status:void 0,deploymentDomain:typeof r.deploymentDomain=="string"?r.deploymentDomain:null,createdAt:typeof r.createdAt=="string"?r.createdAt:void 0,isProduction:typeof r.isProduction=="boolean"?r.isProduction:null,gitBranch:typeof r.gitBranch=="string"?r.gitBranch:null}:null,scheduleSummary:hn(n.scheduleSummary)}}a(fn,"normalizeApp");function S(e){return typeof e=="string"?e:e instanceof Date?e.toISOString():null}a(S,"normalizeDateString");function mn(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t,r=typeof n.deploymentId=="string"?n.deploymentId:null;return!t||!o||!r?null:{id:t,name:o,description:typeof n.description=="string"?n.description:null,scheduleType:typeof n.scheduleType=="string"?n.scheduleType:"cron",scheduleExpression:typeof n.scheduleExpression=="string"?n.scheduleExpression:"",enabled:!!n.enabled,rawEnabled:typeof n.rawEnabled=="boolean"?n.rawEnabled:void 0,syncStatus:typeof n.syncStatus=="string"?n.syncStatus:null,syncError:typeof n.syncError=="string"?n.syncError:null,startAt:S(n.startAt),endAt:S(n.endAt),maxRuns:typeof n.maxRuns=="number"?n.maxRuns:null,executionCount:typeof n.executionCount=="number"?n.executionCount:null,lifecycleStatus:typeof n.lifecycleStatus=="string"?n.lifecycleStatus:null,lifecycleReason:typeof n.lifecycleReason=="string"?n.lifecycleReason:null,lastExecutionAt:S(n.lastExecutionAt),lastExecutionStatus:typeof n.lastExecutionStatus=="string"?n.lastExecutionStatus:null,lastRunNowAt:S(n.lastRunNowAt),lastRunNowStatus:typeof n.lastRunNowStatus=="string"?n.lastRunNowStatus:null,updatedAt:S(n.updatedAt)??new Date().toISOString(),deploymentId:r,isProduction:typeof n.isProduction=="boolean"?n.isProduction:void 0,payload:n.payload}}a(mn,"normalizeSchedule");function hn(e){if(!e||typeof e!="object")return null;let n=e,t=Array.isArray(n.schedules)?n.schedules.map(mn).filter(i=>!!i):[],o=typeof n.total=="number"?n.total:t.length,r=typeof n.active=="number"?n.active:t.filter(i=>i.enabled).length,s=typeof n.paused=="number"?n.paused:Math.max(0,o-r);return{total:o,active:r,paused:s,enabled:typeof n.enabled=="number"?n.enabled:r,disabled:typeof n.disabled=="number"?n.disabled:s,nextRunAt:S(n.nextRunAt),lastRunAt:S(n.lastRunAt),schedules:t,truncated:typeof n.truncated=="boolean"?n.truncated:void 0}}a(hn,"normalizeScheduleSummary");async function yn(e){let n=Array.isArray(e.config.accounts)?e.config.accounts:[],t=await Promise.all(n.map(async o=>{let r=F(o.handle,o.baseUrl),s=Y(o);if(!s)return[r,{response:null,authFailed:!1,error:null}];try{return[r,{response:await q(G(o,e.config),s),authFailed:!1,error:null}]}catch(i){return[r,{response:null,authFailed:!0,error:$(i)}]}}));return Object.fromEntries(t)}a(yn,"loadAccountProfileLookups");async function Ce(e){let n=await yn(e),t=e.account?n[F(e.account.handle,e.account.baseUrl)]??null:null,o=t?.response??null,r=e.token&&t?.authFailed?t.error||"OpenPond account authentication failed.":null;return{account:X({...e,accountResponse:o,accountProfiles:n,authFailed:!!r,error:r})}}a(Ce,"loadOpenPondAccountStateForContext");async function An(){return Ce(await p())}a(An,"loadOpenPondAccountState");async function Ie(e={}){let n=await p(),t=Ce(n);if(!n.token)return{...await t,apps:[],error:"No OpenPond API key or session token is configured."};let[o,r]=await Promise.allSettled([t,fe(n.apiBaseUrl,n.token,{handle:n.account?.handle,limit:e.limit??20,offset:e.offset??0,includeScheduled:e.includeScheduled??!0})]);if(o.status==="rejected")throw o.reason;return{account:o.value.account,apps:r.status==="fulfilled"?r.value.map(fn).filter(s=>!!s):[],error:r.status==="rejected"?$(r.reason):null}}a(Ie,"loadOpenPondApps");async function gn(e){let n=await p();if(!n.token)throw new Error("No OpenPond API key or session token is configured.");return{account:n,response:await me(n.apiBaseUrl,n.token,e)}}a(gn,"createOpenPondRepoApp");import{createHash as Pn}from"node:crypto";function wn(e){return`account-${Pn("sha256").update(e).digest("hex").slice(0,8)}`}a(wn,"fallbackHandleForApiKey");function Z(e){let n=e?.trim();return n?n.replace(/^@/,""):null}a(Z,"normalizeDerivedHandle");async function On(e,n){let t=Z(e.handle);if(t)return t;try{let r=(await q(n,e.apiKey)).account,s=Z(r.handle)??Z(r.email?.split("@")[0])??Z(r.id);if(s)return s}catch{}return wn(e.apiKey)}a(On,"deriveHandleForApiKey");async function xn(e){let n=e.baseUrl??N,t=l(e.apiBaseUrl)??V(n)??B,o=l(e.chatApiBaseUrl),r=await On(e,t);return await Pe({handle:r,apiKey:e.apiKey,baseUrl:n,apiBaseUrl:t,chatApiBaseUrl:o,environment:e.environment??"production",setActive:e.setActive}),p(r,n)}a(xn,"saveOpenPondAccount");function bn(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&b(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its base URL.`);return-1}a(bn,"findAccountIndex");async function Un(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");return await L(t=>{let o=(t.accounts??[]).map(m=>({...m})),r=bn(o,n,e.baseUrl);if(r===-1)throw new Error(`OpenPond account not found: ${n}`);let s=o[r],i=A(t.activeProfile),c=!!(i&&U(s,i));o.splice(r,1),t.accounts=o,(c||!i||!o.some(m=>U(m,i)))&&(o[0]?t.activeProfile=_(o[0]):delete t.activeProfile)}),p()}a(Un,"removeOpenPondAccount");async function kn(){let e;return await L(n=>{let t=A(n.activeProfile),o=(n.accounts??[]).map(s=>({...s})),r=t?o.findIndex(s=>U(s,t)):0;if(r<0||!o[r])throw new Error("No active OpenPond account to log out.");e={...o[r]},delete e.apiKey,delete e.session,o[r]=e,n.accounts=o}),p(e.handle,e.baseUrl)}a(kn,"signOutOpenPondAccount");function Bn(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&b(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its current base URL.`);return-1}a(Bn,"findAccountIndex");function ce(e,n,t){if(t===void 0)return;let o=l(t);if(o){e[n]=o;return}(t===null||t.trim()==="")&&delete e[n]}a(ce,"applyOptionalUrl");async function En(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");let t;return await L(o=>{let r=(o.accounts??[]).map(f=>({...f})),s=Bn(r,n,e.currentBaseUrl);if(s===-1)throw new Error(`OpenPond account not found: ${n}`);let i=r[s];if(t={...i},e.apiKey!==void 0){let f=e.apiKey.trim();if(!f)throw new Error("OpenPond API key cannot be empty.");t.apiKey=f,delete t.session,delete t.token}if(ce(t,"baseUrl",e.baseUrl),ce(t,"apiBaseUrl",e.apiBaseUrl),ce(t,"chatApiBaseUrl",e.chatApiBaseUrl),e.environment===null?delete t.environment:typeof e.environment=="string"&&e.environment.trim()&&(t.environment=e.environment.trim()),r.findIndex((f,w)=>w!==s&&P(f.handle,t.handle)&&b(f.baseUrl,t.baseUrl))!==-1)throw new Error("Another OpenPond account already uses that handle and base URL.");let m=A(o.activeProfile),g=!!(m&&U(i,m));r[s]=t,o.accounts=r,o.activeProfile=e.setActive||g?_(t):o.activeProfile}),p(t.handle,t.baseUrl)}a(En,"updateOpenPondAccountConfig");async function vn(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account before reading app config.");return he(n.apiBaseUrl,n.token,e.appId)}a(vn,"getOpenPondAppEnvironment");function _n(e,n){let t="",o=a(r=>{r.startsWith(e)&&n(JSON.parse(r.slice(e.length)))},"processLine");return{push(r){for(t+=r;;){let s=Sn(t);if(s<0)return;let i=t.slice(0,s).replace(/\r$/,""),c=t[s]==="\r"&&t[s+1]===`
|
|
5
5
|
`?2:1;t=t.slice(s+c),o(i)}},flush(){let r=t.trimEnd();t="",r&&o(r)}}}a(_n,"createReadyLineParser");function Sn(e){let n=e.indexOf(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{h as S}from"./chunk-
|
|
2
|
+
import{h as S}from"./chunk-USKE34VR.js";import{F as h}from"./chunk-7ZG3IT7C.js";import{ha as A}from"./chunk-4TZHH5FC.js";import{Ga as O,Ha as k,j as I,m as P,p as b,r as H,s as w,w as f}from"./chunk-SDEDAHV6.js";import{m as g}from"./chunk-NNF6KCHD.js";import{b as c}from"./chunk-ES2ISFJC.js";import{a as u}from"./chunk-FTQLQJQV.js";import{randomUUID as T}from"node:crypto";import{readFile as v}from"node:fs/promises";import p from"node:path";import{randomUUID as $}from"node:crypto";var y=c.object({revision:c.number().int().nonnegative(),overlay:H}).strict(),z=y.extend({proposal:w}).strict(),m=class{constructor(e){this.client=e}client;static{u(this,"HostedHarnessOverlayStorage")}async getHarnessRunOverlay(e){let s=await this.client.request({contractVersion:h,requestId:$(),operation:"harness/overlay/get",params:{runId:e}});return s===null?null:y.parse(s).overlay}async putHarnessRunOverlay(e){let s=H.parse(e.overlay);if(!e.requestId.trim()||s.revision!==(e.expectedRevision===null?0:e.expectedRevision+1))throw new Error("Hosted Harness overlay mutation requires a stable request and next revision.");let r=y.parse(await this.client.request({contractVersion:h,requestId:e.requestId,operation:"harness/overlay/put",params:{runId:s.runId,expectedRevision:e.expectedRevision,overlay:s}}));if(r.revision!==s.revision||r.overlay.contentHash!==s.contentHash)throw new Error("Host Harness overlay response changed committed identity.");return r.overlay}async createHarnessRunOverlay(e){if(e.revision!==0||e.status!=="active")throw new Error("A new Harness run overlay must be active at revision 0.");return this.putHarnessRunOverlay({overlay:e,expectedRevision:null,requestId:`harness-overlay:${e.runId}:${e.contentHash}`})}async ensureHarnessRunOverlay(e){let s=await this.getHarnessRunOverlay(e.runId);if(s){if(s.workspace.workspaceId!==e.workspace.id||s.baseHarnessRelease.id!==e.harnessRelease.id||s.baseHarnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("The durable Agent run is already bound to another Harness release.");return s}let r=f({schemaVersion:"openpond.harnessRunOverlay.v1",id:`overlay-${g({runId:e.runId,harnessRelease:e.harnessRelease}).slice(0,24)}`,runId:e.runId,baseHarnessRelease:e.harnessRelease,workspace:{workspaceId:e.workspace.id,revision:e.workspace.revision,sourceRevision:e.workspace.sourceRevision,channelRevision:e.workspace.currentChannel.revision},revision:0,status:"active",edits:[],createdAt:e.admittedAt,updatedAt:e.admittedAt,metadata:{}});return this.createHarnessRunOverlay(r)}async appendHarnessRunOverlayEditsAtomically(e){return this.transition(e,"append")}async freezeHarnessRunOverlayAtomically(e){return this.transition({...e,edits:[]},"freeze")}async abandonHarnessRunOverlayAtomically(e){return this.transition({...e,edits:[]},"abandon")}async freezeHarnessRunOverlayWithProposalAtomically(e){let s=await this.getHarnessRunOverlay(e.runId);if(!s||s.revision!==e.expectedRevision||s.status!=="active")throw new Error("Hosted Harness overlay revision or status changed.");let r=new Set(s.edits.map(i=>i.id));for(let i of e.edits){if(r.has(i.id))throw new Error(`Harness overlay edit id already exists: ${i.id}.`);r.add(i.id)}let{contentHash:l,...n}=s,t=f({...n,revision:s.revision+1,status:"frozen",edits:[...s.edits,...e.edits],updatedAt:e.updatedAt}),d=w.parse(e.buildProposal(t)),a=z.parse(await this.client.request({contractVersion:h,requestId:`harness-proposal:${t.runId}:${d.contentHash}`,operation:"harness/overlay/freezeProposal",params:{runId:t.runId,expectedRevision:s.revision,overlay:t,proposal:d}}));if(a.overlay.contentHash!==t.contentHash||a.proposal.contentHash!==d.contentHash)throw new Error("Host Harness proposal response changed committed identity.");return{overlay:a.overlay,proposal:a.proposal}}async transition(e,s){let r=await this.getHarnessRunOverlay(e.runId);if(!r||r.revision!==e.expectedRevision||r.status==="abandoned"||s!=="abandon"&&r.status!=="active")throw new Error("Hosted Harness overlay revision or status changed.");if(s==="append"&&e.edits.length===0)throw new Error("Harness overlay append requires edits.");let l=new Set(r.edits.map(a=>a.id));for(let a of e.edits){if(l.has(a.id))throw new Error(`Harness overlay edit id already exists: ${a.id}.`);l.add(a.id)}let{contentHash:n,...t}=r,d=f({...t,revision:r.revision+1,status:s==="append"?"active":s==="freeze"?"frozen":"abandoned",edits:[...r.edits,...e.edits],updatedAt:e.updatedAt});return this.putHarnessRunOverlay({overlay:d,expectedRevision:r.revision,requestId:`harness-overlay:${d.runId}:${d.contentHash}`})}};var N=c.object({workspace:b,release:c.object({id:c.string().min(1),contentHash:c.string().regex(/^[a-f0-9]{64}$/),sourceRevision:c.string().min(1),assetsPath:c.string().min(1)}).strict()}).strict();async function C(o,e=null){let s=await o.request({contractVersion:h,requestId:T(),operation:"harness/get",params:{reference:e}});if(s===null)return null;let r=N.parse(s);if(!p.isAbsolute(r.release.assetsPath))throw new Error("Hosted Harness assets path must be absolute.");let[l,n]=await Promise.all([v(p.join(r.release.assetsPath,"agent-snapshot.json"),"utf8"),v(p.join(r.release.assetsPath,"harness-release.json"),"utf8")]),t=A.parse({schemaVersion:"openpond.localHarnessReleaseRecord.v1",workspaceId:r.workspace.id,sourceRevision:r.release.sourceRevision,agentSnapshot:I.parse(JSON.parse(l)),harnessRelease:P.parse(JSON.parse(n)),bundlePath:r.release.assetsPath,createdAt:new Date().toISOString()});if(t.harnessRelease.id!==r.release.id||t.harnessRelease.contentHash!==r.release.contentHash||(e!==null?e.id!==r.release.id||e.contentHash!==r.release.contentHash:r.workspace.currentChannel.release?.contentHash!==r.release.contentHash))throw new Error("Hosted Harness release differs from its bound workspace.");return S({workspace:r.workspace,release:t})}u(C,"loadHostedHarnessRuntime");async function se(o,e){let s=e.profileComponentBinding,r=e.profileWorkflowBinding;if(s){if(r||e.currentProfile?.profileId!==s.profileId)throw new Error("Profile component binding differs from the session Profile reference.");let n=await x(o,s.harnessRelease);if(E(n,s.profileId,s.sourceRevision,e.currentProfile?.repositoryId),s.target.kind==="profile")return n;if(s.target.kind==="skill"){let i=s.target.skillPath;if(!n.release.agentSnapshot.skills.some(j=>j.path===i))throw new Error("Bound Profile Skill is unavailable in its released source.");let R=await v(p.join(n.release.bundlePath,"source",i),"utf8");return{...n,instructionContext:[n.instructionContext,`Released Profile Skill (${i}):
|
|
3
3
|
${R}`].join(`
|
|
4
4
|
|
|
5
5
|
`)}}let t=await q(n),d=s.target.actionId,a=t.actions.find(i=>i.id===d);if(!a)throw new Error("Bound Profile Agent action is unavailable in its released source.");return{...n,workflowAction:a}}if(r){if(e.currentProfile?.profileId!==r.profileId)throw new Error("Profile workflow binding differs from the session Profile reference.");let n=await x(o,r.harnessRelease);E(n,r.profileId,r.sourceRevision,e.currentProfile?.repositoryId);let t=await q(n),d=k({binding:r,harnessRelease:n.release.harnessRelease,catalog:t.catalog,catalogHash:t.catalogHash}),a=d.invocation.kind==="agent_action"?d.invocation.actionId:null,i=a?t.actions.find(R=>R.id===a):void 0;if(a&&!i)throw new Error(`Bound Profile action ${a} is missing from its release.`);return{...n,workflow:d,...i?{workflowAction:i}:{}}}let l=await new m(o).getHarnessRunOverlay(e.id);return C(o,l?.baseHarnessRelease??null)}u(se,"loadHostedHarnessRuntimeForSession");async function x(o,e){let s=await C(o,e);if(!s)throw new Error("The bound Profile Harness release is unavailable.");return s}u(x,"requireRelease");function E(o,e,s,r){let l=o.release.harnessRelease.metadata.profile;if(!l||typeof l!="object"||l.id!==e||l.sourceRevision!==s||l.repositoryId!==void 0&&l.repositoryId!==r)throw new Error("Bound Profile source differs from its released Harness source.")}u(E,"assertProfileProvenance");async function q(o){let e=p.join(o.release.bundlePath,"source"),[s,r]=await Promise.all([v(p.join(e,"workflows","catalog.json")),v(p.join(e,"workflows","actions.json"))]);return O({agentSnapshot:o.release.agentSnapshot,harnessRelease:o.release.harnessRelease,catalogBytes:s,actionBytes:r})}u(q,"loadHostedProfileCatalog");export{m as a,C as b,se as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as me,b as D,c as G,d as j,e as z,g as ye,i as T,j as we,k as S,l as he,v as B,x as F}from"./chunk-N3DEA6PG.js";import{a as re,b as L,c as R}from"./chunk-PA7XP42P.js";import{b as H,c as be,d as ve,f as w,h as P,i as Re}from"./chunk-BSHAIAXY.js";import{a as Z,b as ee,c as te}from"./chunk-Q4H3NUVW.js";import{a as M,f as v,k as X}from"./chunk-3M53YXEI.js";import{M as pe,N as ue,R as ge,V as fe,h as $,i as ie,l as ae,n as se,o as ce,p as le,q as de}from"./chunk-QXVIIM4T.js";import{d as y,e as ne,f as oe,g as C}from"./chunk-R3XFY7VL.js";import{a as g}from"./chunk-FTQLQJQV.js";import{promises as V,existsSync as W}from"node:fs";import U from"node:path";import{stdin as $e}from"node:process";async function Ge(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await ce(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(Ge,"runTemplateStatus");async function je(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await le(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(je,"runTemplateBranches");async function ze(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.env=="string"?e.env:typeof e.environment=="string"?e.environment:void 0,f=X(s),c=await de(n,i,a.id,{environment:f});console.log(JSON.stringify(c,null,2))}g(ze,"runTemplateUpdate");async function He(e){let o=await y(),t=w(o),r=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,n=r?r.trim():await L();if(!n)throw new Error("API key is required");n.startsWith("opk_")||console.log("warning: API keys usually start with opk_."),await C({handle:o.activeProfile?.handle||"default",apiKey:n,baseUrl:t,apiBaseUrl:o.apiBaseUrl,chatApiBaseUrl:o.chatApiBaseUrl,setActive:!0}),console.log("Saved account credentials to the encrypted OpenPond credential store.")}g(He,"runLogin");async function Fe(e,o){let t=o[0]||"list";if(t==="list"){let r=await ne();console.log(JSON.stringify({profiles:r},null,2));return}if(t==="use"){let r=o[1];if(!r)throw new Error("usage: profiles use <name> [--base-url <url>]");let n=await oe(r,{baseUrl:H(e)});console.log(JSON.stringify({profile:n},null,2));return}if(t==="save"){let r=o[1];if(!r)throw new Error("usage: profiles save <name> --api-key <key> [--base-url <url>] [--api-base-url <url>] [--chat-api-base-url <url>]");let n=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,i=n?n.trim():await L(),a=typeof e.environment=="string"?e.environment:typeof e.env=="string"?e.env:void 0,s=await C({handle:r,apiKey:i,baseUrl:H(e),apiBaseUrl:be(e),chatApiBaseUrl:ve(e),environment:a,setActive:!0});console.log(JSON.stringify({profile:s},null,2));return}throw new Error("usage: profiles <list|use|save> [args]")}g(Fe,"runProfiles");async function Ve(){let e=await y(),o=w(e),t=P(e),r=await R(e,o),n=await pe(t,r);console.log(JSON.stringify(n,null,2))}g(Ve,"runAccount");async function We(e){let o=await y(),t=P(o),r=re(o),n=await ue(t,r);console.log(JSON.stringify(n,null,2))}g(We,"runHealth");async function qe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.branch=="string"?String(e.branch):void 0,f=await $(n,i,a.id,{branch:s});if(!f?.id){console.log("no deployments found");return}let c=await ie(n,i,f.id),d=(c&&Array.isArray(c.toolsJson)?c.toolsJson:null)||(c&&typeof c.metadataJson=="object"&&c.metadataJson?c.metadataJson.tools:null),u=Array.isArray(d)?d:[];if(u.length===0){console.log("no tools found");return}for(let l of u){let m=l,h=m.profile||m.function,I=m.name||h?.name||"unknown",p=m.description||h?.description||"";console.log(p?`${I} - ${p}`:I)}}g(qe,"runToolList");async function Ye(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=await $(i,a,s.id,{branch:f});if(!c?.id)throw new Error("no deployments found");let d;if(typeof e.body=="string")try{d=JSON.parse(e.body)}catch{throw new Error("tool body must be valid JSON")}let u=typeof e.method=="string"?String(e.method).toUpperCase():"POST",l=await fe(n,a,{appId:s.id,deploymentId:c.id,toolName:t,method:u,body:d,headers:a?{"openpond-api-key":a}:void 0});if(!l.ok)throw new Error(l.error||`tool failed (${l.status})`);let m=l.data??{ok:!0};console.log(JSON.stringify(m,null,2))}g(Ye,"runToolRun");async function Qe(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,d=c?{id:c}:await $(i,a,s.id,{branch:f});if(!d?.id)throw new Error("no deployments found");let u=typeof e.body=="string"?M(String(e.body),"body"):{};if(!u||typeof u!="object"||Array.isArray(u))throw new Error("body must be a JSON object");let l=typeof e.method=="string"?String(e.method).toUpperCase():"POST",m={...u,appId:s.id,deploymentId:d.id,toolName:t,method:l},h=await ge(i,a,m);console.log(JSON.stringify(h,null,2))}g(Qe,"runBacktestRun");async function Xe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a,handle:s,repo:f}=await T(n,i,o),c=typeof e.branch=="string"?String(e.branch):void 0,d=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,u=d?{id:d}:await $(n,i,a.id,{branch:c});if(!u?.id){console.log("no deployments found");return}await we({baseUrl:n,apiKey:i,deploymentId:u.id,prefix:`[${s}/${f}] `,intervalMs:e.interval?Number(e.interval):void 0,timeoutMs:e.timeout?Number(e.timeout):void 0})}g(Xe,"runDeployWatch");async function Ze(e,o){let r=((typeof e.name=="string"?e.name:null)||o.join(" ")).trim();if(!r)throw new Error("usage: repo create --name <name> [--team-id <id>] [--path <dir>] [--template <owner/repo|url>] [--template-branch <branch>] [--empty|--opentool] [--sandbox] [--token] [--auto-schedule-migration <true|false>]");let n=await y(),i=w(n),a=await R(n,i),s=P(n),f=typeof e.teamId=="string"&&e.teamId.trim()?e.teamId.trim():void 0,c=typeof e.template=="string"?e.template.trim():"";if(c&&(e.empty==="true"||e.opentool==="true"))throw new Error("choose one: --template or --empty/--opentool");if(e.empty==="true"&&e.opentool==="true")throw new Error("choose one: --empty or --opentool");let d=typeof e.description=="string"?e.description.trim():void 0,u=typeof e.templateBranch=="string"&&e.templateBranch.trim().length>0?e.templateBranch.trim():void 0,l=typeof e.env=="string"?M(e.env,"env"):void 0;if(l){if(typeof l!="object"||Array.isArray(l))throw new Error("env must be a JSON object");for(let[b,A]of Object.entries(l))if(typeof A!="string")throw new Error(`env value for ${b} must be a string`)}if(c){e.deployOnPush!==void 0&&console.warn("deploy-on-push is not used for template create (auto deploys)");let b=Re(c,i),k=(await se(s,a,[{name:r,...d?{description:d}:{},templateRepoUrl:b,...u?{templateBranch:u}:{},...l?{envVars:l}:{}}],f)).items?.[0];if(!k||k.status!=="ok"||!k.appId)throw new Error(k?.error||"Template create failed");console.log(`app_id: ${k.appId}`),k.deploymentId&&console.log(`deployment_id: ${k.deploymentId}`),k.conversationId&&console.log(`conversation_id: ${k.conversationId}`);return}let m=process.cwd(),h=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,I=h&&h.trim().length>0?h.trim():$e.isTTY?await he(m):m,p=U.resolve(I);if(W(p)){if(!(await V.stat(p)).isDirectory())throw new Error(`path is not a directory: ${p}`)}else await V.mkdir(p,{recursive:!0});let Pe=(await V.readdir(p)).filter(b=>b!==".git").length===0,x=v(e.yes)||v(e.force);if(!Pe&&!x&&!await S(`Directory is not empty (${p}). Continue?`,!1)){console.log("aborted");return}let ke=U.join(p,".git");if(!W(ke)){if(!(x?!0:await S("Initialize git repository here?",!0))){console.log("aborted");return}let A=await B("git",["init"],{cwd:p});if(A.code!==0)throw new Error(`git init failed: ${A.stderr.trim()||A.stdout.trim()||"unknown error"}`)}let K=await F(p,"origin");if(K&&!x&&!await S(`Remote "origin" already set (${K}). Replace it?`,!1)){console.log("aborted");return}let q=e.opentool==="true"?"opentool":"empty",Te=v(e.sandbox),Be=v(e.deployOnPush),N=e.autoScheduleMigration,Y=typeof N=="string"||typeof N=="boolean",Ee=Y?v(N):void 0,E=await ae(s,a,{name:r,...f?{teamId:f}:{},...d?{description:d}:{},...q?{repoInit:q}:{},...Te?{sandbox:!0}:{},...l?{envVars:l}:{},...Be?{deployOnPush:!0}:{},...Y?{autoScheduleMigration:Ee}:{}}),O=me(E);z(O);let J=v(e.token)||v(e.setRemoteToken),Oe=D(O,a),Q=J?Oe:O,_=await B("git",K?["remote","set-url","origin",Q]:["remote","add","origin",Q],{cwd:p});if(_.code!==0)throw new Error(`git remote failed: ${j(_.stderr.trim()||_.stdout.trim()||"unknown error")}`);let Ae=J?G(O):O;console.log(`app_id: ${E.appId}`),E.gitOwner&&E.gitRepo&&console.log(`repo: ${E.gitOwner}/${E.gitRepo}`),console.log(`remote: ${Ae}`),console.log('next: git add . && git commit -m "init"');let Ie=E.defaultBranch||"master";console.log(`next: openpond repo push --path ${p} --branch ${Ie}`),J||console.log(`token-remote (non-interactive): git -C ${p} remote set-url origin ${G(O)}`);try{await ye({apiBase:s,apiKey:a,forceRefresh:!0})}catch(b){console.warn("cache refresh failed",b)}}g(Ze,"runRepoCreate");async function Se(e){let o=await B("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e});if(o.code!==0)return null;let t=o.stdout.trim();return t.length>0?t:null}g(Se,"resolveGitBranch");async function et(e){let o=await y(),t=w(o),r=await R(o,t),n=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,i=U.resolve(n&&n.trim().length>0?n.trim():"."),a=U.join(i,".git");if(!W(a))throw new Error(`git repo not found at ${i} (missing .git)`);let s=await F(i,"origin");if(!s)throw new Error("origin remote not set; run `openpond repo create` first");z(s);let c=(typeof e.branch=="string"?e.branch.trim():"")||await Se(i);if(!c)throw new Error("unable to resolve git branch; pass --branch");let d;try{d=D(s,r)}catch{throw new Error("origin remote must be https for tokenized pushes")}let u=v(e.keepTokenRemote)||v(e.token)||v(e.setRemoteToken),l=s.includes("x-access-token:"),m=!u&&!l?s:null,h=process.env.GIT_TERMINAL_PROMPT;process.env.GIT_TERMINAL_PROMPT="0";try{if(!l){let p=await B("git",["remote","set-url","origin",d],{cwd:i});if(p.code!==0)throw new Error(`git remote set-url failed: ${j(p.stderr.trim()||p.stdout.trim()||"unknown error")}`)}if((await B("git",["push","-u","origin",c],{cwd:i,inherit:!0})).code!==0)throw new Error("git push failed")}finally{m&&await B("git",["remote","set-url","origin",m],{cwd:i}).catch(()=>null),h===void 0?delete process.env.GIT_TERMINAL_PROMPT:process.env.GIT_TERMINAL_PROMPT=h}}g(et,"runRepoPush");async function tt(e){if(e.length===0)throw new Error("usage: opentool <init|validate|build> [args]");let o=process.platform==="win32"?"npx.cmd":"npx";if((await B(o,["opentool",...e],{inherit:!0})).code!==0)throw new Error("opentool command failed")}g(tt,"runOpentool");async function nt(){let e="openpond",o=Z(),t=await te(e),r=`npm i -g ${e}@${t}`,n=ee(o,t);if(n===0){console.log(`${e} is up to date (${o})`);return}if(n===-1){console.log(`Update available: ${o} -> ${t}`),console.log(`Run: ${r}`);return}if(n===1){console.log(`Installed version (${o}) is newer than npm latest (${t}).`);return}if(o===t){console.log(`${e} is up to date (${o})`);return}console.log(`Installed: ${o}`),console.log(`Latest: ${t}`),console.log(`Run: ${r}`)}g(nt,"runCheckUpdate");export{Ge as a,je as b,ze as c,He as d,Fe as e,Ve as f,We as g,qe as h,Ye as i,Qe as j,Xe as k,Ze as l,Se as m,et as n,tt as o,nt as p};
|
|
2
|
+
import{a as me,b as D,c as G,d as j,e as z,g as ye,i as T,j as we,k as S,l as he,v as B,x as F}from"./chunk-N3DEA6PG.js";import{a as re,b as L,c as R}from"./chunk-PA7XP42P.js";import{b as H,c as be,d as ve,f as w,h as P,i as Re}from"./chunk-BSHAIAXY.js";import{a as Z,b as ee,c as te}from"./chunk-AH22RHPS.js";import{a as M,f as v,k as X}from"./chunk-3M53YXEI.js";import{M as pe,N as ue,R as ge,V as fe,h as $,i as ie,l as ae,n as se,o as ce,p as le,q as de}from"./chunk-QXVIIM4T.js";import{d as y,e as ne,f as oe,g as C}from"./chunk-R3XFY7VL.js";import{a as g}from"./chunk-FTQLQJQV.js";import{promises as V,existsSync as W}from"node:fs";import U from"node:path";import{stdin as $e}from"node:process";async function Ge(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await ce(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(Ge,"runTemplateStatus");async function je(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await le(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(je,"runTemplateBranches");async function ze(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.env=="string"?e.env:typeof e.environment=="string"?e.environment:void 0,f=X(s),c=await de(n,i,a.id,{environment:f});console.log(JSON.stringify(c,null,2))}g(ze,"runTemplateUpdate");async function He(e){let o=await y(),t=w(o),r=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,n=r?r.trim():await L();if(!n)throw new Error("API key is required");n.startsWith("opk_")||console.log("warning: API keys usually start with opk_."),await C({handle:o.activeProfile?.handle||"default",apiKey:n,baseUrl:t,apiBaseUrl:o.apiBaseUrl,chatApiBaseUrl:o.chatApiBaseUrl,setActive:!0}),console.log("Saved account credentials to the encrypted OpenPond credential store.")}g(He,"runLogin");async function Fe(e,o){let t=o[0]||"list";if(t==="list"){let r=await ne();console.log(JSON.stringify({profiles:r},null,2));return}if(t==="use"){let r=o[1];if(!r)throw new Error("usage: profiles use <name> [--base-url <url>]");let n=await oe(r,{baseUrl:H(e)});console.log(JSON.stringify({profile:n},null,2));return}if(t==="save"){let r=o[1];if(!r)throw new Error("usage: profiles save <name> --api-key <key> [--base-url <url>] [--api-base-url <url>] [--chat-api-base-url <url>]");let n=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,i=n?n.trim():await L(),a=typeof e.environment=="string"?e.environment:typeof e.env=="string"?e.env:void 0,s=await C({handle:r,apiKey:i,baseUrl:H(e),apiBaseUrl:be(e),chatApiBaseUrl:ve(e),environment:a,setActive:!0});console.log(JSON.stringify({profile:s},null,2));return}throw new Error("usage: profiles <list|use|save> [args]")}g(Fe,"runProfiles");async function Ve(){let e=await y(),o=w(e),t=P(e),r=await R(e,o),n=await pe(t,r);console.log(JSON.stringify(n,null,2))}g(Ve,"runAccount");async function We(e){let o=await y(),t=P(o),r=re(o),n=await ue(t,r);console.log(JSON.stringify(n,null,2))}g(We,"runHealth");async function qe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.branch=="string"?String(e.branch):void 0,f=await $(n,i,a.id,{branch:s});if(!f?.id){console.log("no deployments found");return}let c=await ie(n,i,f.id),d=(c&&Array.isArray(c.toolsJson)?c.toolsJson:null)||(c&&typeof c.metadataJson=="object"&&c.metadataJson?c.metadataJson.tools:null),u=Array.isArray(d)?d:[];if(u.length===0){console.log("no tools found");return}for(let l of u){let m=l,h=m.profile||m.function,I=m.name||h?.name||"unknown",p=m.description||h?.description||"";console.log(p?`${I} - ${p}`:I)}}g(qe,"runToolList");async function Ye(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=await $(i,a,s.id,{branch:f});if(!c?.id)throw new Error("no deployments found");let d;if(typeof e.body=="string")try{d=JSON.parse(e.body)}catch{throw new Error("tool body must be valid JSON")}let u=typeof e.method=="string"?String(e.method).toUpperCase():"POST",l=await fe(n,a,{appId:s.id,deploymentId:c.id,toolName:t,method:u,body:d,headers:a?{"openpond-api-key":a}:void 0});if(!l.ok)throw new Error(l.error||`tool failed (${l.status})`);let m=l.data??{ok:!0};console.log(JSON.stringify(m,null,2))}g(Ye,"runToolRun");async function Qe(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,d=c?{id:c}:await $(i,a,s.id,{branch:f});if(!d?.id)throw new Error("no deployments found");let u=typeof e.body=="string"?M(String(e.body),"body"):{};if(!u||typeof u!="object"||Array.isArray(u))throw new Error("body must be a JSON object");let l=typeof e.method=="string"?String(e.method).toUpperCase():"POST",m={...u,appId:s.id,deploymentId:d.id,toolName:t,method:l},h=await ge(i,a,m);console.log(JSON.stringify(h,null,2))}g(Qe,"runBacktestRun");async function Xe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a,handle:s,repo:f}=await T(n,i,o),c=typeof e.branch=="string"?String(e.branch):void 0,d=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,u=d?{id:d}:await $(n,i,a.id,{branch:c});if(!u?.id){console.log("no deployments found");return}await we({baseUrl:n,apiKey:i,deploymentId:u.id,prefix:`[${s}/${f}] `,intervalMs:e.interval?Number(e.interval):void 0,timeoutMs:e.timeout?Number(e.timeout):void 0})}g(Xe,"runDeployWatch");async function Ze(e,o){let r=((typeof e.name=="string"?e.name:null)||o.join(" ")).trim();if(!r)throw new Error("usage: repo create --name <name> [--team-id <id>] [--path <dir>] [--template <owner/repo|url>] [--template-branch <branch>] [--empty|--opentool] [--sandbox] [--token] [--auto-schedule-migration <true|false>]");let n=await y(),i=w(n),a=await R(n,i),s=P(n),f=typeof e.teamId=="string"&&e.teamId.trim()?e.teamId.trim():void 0,c=typeof e.template=="string"?e.template.trim():"";if(c&&(e.empty==="true"||e.opentool==="true"))throw new Error("choose one: --template or --empty/--opentool");if(e.empty==="true"&&e.opentool==="true")throw new Error("choose one: --empty or --opentool");let d=typeof e.description=="string"?e.description.trim():void 0,u=typeof e.templateBranch=="string"&&e.templateBranch.trim().length>0?e.templateBranch.trim():void 0,l=typeof e.env=="string"?M(e.env,"env"):void 0;if(l){if(typeof l!="object"||Array.isArray(l))throw new Error("env must be a JSON object");for(let[b,A]of Object.entries(l))if(typeof A!="string")throw new Error(`env value for ${b} must be a string`)}if(c){e.deployOnPush!==void 0&&console.warn("deploy-on-push is not used for template create (auto deploys)");let b=Re(c,i),k=(await se(s,a,[{name:r,...d?{description:d}:{},templateRepoUrl:b,...u?{templateBranch:u}:{},...l?{envVars:l}:{}}],f)).items?.[0];if(!k||k.status!=="ok"||!k.appId)throw new Error(k?.error||"Template create failed");console.log(`app_id: ${k.appId}`),k.deploymentId&&console.log(`deployment_id: ${k.deploymentId}`),k.conversationId&&console.log(`conversation_id: ${k.conversationId}`);return}let m=process.cwd(),h=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,I=h&&h.trim().length>0?h.trim():$e.isTTY?await he(m):m,p=U.resolve(I);if(W(p)){if(!(await V.stat(p)).isDirectory())throw new Error(`path is not a directory: ${p}`)}else await V.mkdir(p,{recursive:!0});let Pe=(await V.readdir(p)).filter(b=>b!==".git").length===0,x=v(e.yes)||v(e.force);if(!Pe&&!x&&!await S(`Directory is not empty (${p}). Continue?`,!1)){console.log("aborted");return}let ke=U.join(p,".git");if(!W(ke)){if(!(x?!0:await S("Initialize git repository here?",!0))){console.log("aborted");return}let A=await B("git",["init"],{cwd:p});if(A.code!==0)throw new Error(`git init failed: ${A.stderr.trim()||A.stdout.trim()||"unknown error"}`)}let K=await F(p,"origin");if(K&&!x&&!await S(`Remote "origin" already set (${K}). Replace it?`,!1)){console.log("aborted");return}let q=e.opentool==="true"?"opentool":"empty",Te=v(e.sandbox),Be=v(e.deployOnPush),N=e.autoScheduleMigration,Y=typeof N=="string"||typeof N=="boolean",Ee=Y?v(N):void 0,E=await ae(s,a,{name:r,...f?{teamId:f}:{},...d?{description:d}:{},...q?{repoInit:q}:{},...Te?{sandbox:!0}:{},...l?{envVars:l}:{},...Be?{deployOnPush:!0}:{},...Y?{autoScheduleMigration:Ee}:{}}),O=me(E);z(O);let J=v(e.token)||v(e.setRemoteToken),Oe=D(O,a),Q=J?Oe:O,_=await B("git",K?["remote","set-url","origin",Q]:["remote","add","origin",Q],{cwd:p});if(_.code!==0)throw new Error(`git remote failed: ${j(_.stderr.trim()||_.stdout.trim()||"unknown error")}`);let Ae=J?G(O):O;console.log(`app_id: ${E.appId}`),E.gitOwner&&E.gitRepo&&console.log(`repo: ${E.gitOwner}/${E.gitRepo}`),console.log(`remote: ${Ae}`),console.log('next: git add . && git commit -m "init"');let Ie=E.defaultBranch||"master";console.log(`next: openpond repo push --path ${p} --branch ${Ie}`),J||console.log(`token-remote (non-interactive): git -C ${p} remote set-url origin ${G(O)}`);try{await ye({apiBase:s,apiKey:a,forceRefresh:!0})}catch(b){console.warn("cache refresh failed",b)}}g(Ze,"runRepoCreate");async function Se(e){let o=await B("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e});if(o.code!==0)return null;let t=o.stdout.trim();return t.length>0?t:null}g(Se,"resolveGitBranch");async function et(e){let o=await y(),t=w(o),r=await R(o,t),n=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,i=U.resolve(n&&n.trim().length>0?n.trim():"."),a=U.join(i,".git");if(!W(a))throw new Error(`git repo not found at ${i} (missing .git)`);let s=await F(i,"origin");if(!s)throw new Error("origin remote not set; run `openpond repo create` first");z(s);let c=(typeof e.branch=="string"?e.branch.trim():"")||await Se(i);if(!c)throw new Error("unable to resolve git branch; pass --branch");let d;try{d=D(s,r)}catch{throw new Error("origin remote must be https for tokenized pushes")}let u=v(e.keepTokenRemote)||v(e.token)||v(e.setRemoteToken),l=s.includes("x-access-token:"),m=!u&&!l?s:null,h=process.env.GIT_TERMINAL_PROMPT;process.env.GIT_TERMINAL_PROMPT="0";try{if(!l){let p=await B("git",["remote","set-url","origin",d],{cwd:i});if(p.code!==0)throw new Error(`git remote set-url failed: ${j(p.stderr.trim()||p.stdout.trim()||"unknown error")}`)}if((await B("git",["push","-u","origin",c],{cwd:i,inherit:!0})).code!==0)throw new Error("git push failed")}finally{m&&await B("git",["remote","set-url","origin",m],{cwd:i}).catch(()=>null),h===void 0?delete process.env.GIT_TERMINAL_PROMPT:process.env.GIT_TERMINAL_PROMPT=h}}g(et,"runRepoPush");async function tt(e){if(e.length===0)throw new Error("usage: opentool <init|validate|build> [args]");let o=process.platform==="win32"?"npx.cmd":"npx";if((await B(o,["opentool",...e],{inherit:!0})).code!==0)throw new Error("opentool command failed")}g(tt,"runOpentool");async function nt(){let e="openpond",o=Z(),t=await te(e),r=`npm i -g ${e}@${t}`,n=ee(o,t);if(n===0){console.log(`${e} is up to date (${o})`);return}if(n===-1){console.log(`Update available: ${o} -> ${t}`),console.log(`Run: ${r}`);return}if(n===1){console.log(`Installed version (${o}) is newer than npm latest (${t}).`);return}if(o===t){console.log(`${e} is up to date (${o})`);return}console.log(`Installed: ${o}`),console.log(`Latest: ${t}`),console.log(`Run: ${r}`)}g(nt,"runCheckUpdate");export{Ge as a,je as b,ze as c,He as d,Fe as e,Ve as f,We as g,qe as h,Ye as i,Qe as j,Xe as k,Ze as l,Se as m,et as n,tt as o,nt as p};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{k as H,na as R}from"./chunk-
|
|
2
|
+
import{k as H,na as R}from"./chunk-4TZHH5FC.js";import{J as I,N as C}from"./chunk-HA7EFTPF.js";import{l as k,m as b}from"./chunk-NNF6KCHD.js";import{a as h}from"./chunk-FTQLQJQV.js";import{promises as s}from"node:fs";import n from"node:path";import{execFile as O}from"node:child_process";import{promisify as A}from"node:util";var T=A(O);async function v(e,i,a={}){return(await T("git",["-C",e,...i],{encoding:"utf8",timeout:3e4,maxBuffer:8388608,env:{...process.env,...a}})).stdout.trim()}h(v,"candidateGit");async function j(e,i=I,a=!1){if(e.profileRef.source!=="local"&&!a)throw new Error("This Git adapter requires the actual installed local Profile owner; hosted adoption needs its published-source owner.");let r=await i(e.profileRef);if(r.error||r.mode!=="local"||r.activeProfile!==e.profileRef.profileId||!r.repoPath||!r.sourcePath)throw new Error("The original Profile owner is unavailable.");let l=await s.realpath(r.repoPath),p=await s.realpath(r.sourcePath),f=n.relative(l,p);if(f.startsWith("..")||n.isAbsolute(f))throw new Error("Profile source escapes its actual Git owner.");return{profile:r,repo:l,source:p,sourceRelative:f}}h(j,"originalCandidateProfile");async function Pe(e,i,a=!0){if(!/^[a-f0-9]{40}$/.test(i)||await v(e,["rev-parse","HEAD"])!==i)throw new Error("The original Profile Git revision changed.");if(a&&await v(e,["status","--porcelain","--untracked-files=all"]))throw new Error("Commit or reconcile changes in the original Profile before this operation.")}h(Pe,"assertCandidateGitHead");async function ye(e,i){let a=await j(e.state,e.loadProfile,e.allowRemoteSnapshot),r=n.join(e.storeDir,"library","harnesses","profile-candidate-staging");await s.mkdir(r,{recursive:!0,mode:448});let l=await s.mkdtemp(n.join(r,"source-"));await s.rmdir(l),await v(a.repo,["worktree","add","--detach",l,e.commit]);try{let p=await C({repoPath:l,profileId:e.state.profileRef.profileId});if(p.error||!p.sourcePath)throw new Error("The staged original Profile cannot be loaded.");return await i({root:l,profile:p,repo:a.repo,source:p.sourcePath})}finally{await v(a.repo,["worktree","remove","--force",l]).catch(()=>{}),await s.rm(l,{recursive:!0,force:!0})}}h(ye,"withCandidateProfileWorktree");function y(e){if(!e||n.isAbsolute(e)||e.includes("\\")||e.split("/").some(i=>!i||i==="."||i===".."))throw new Error("Original Profile patch path is not contained.");return e}h(y,"portable");async function ve(e){let i=e.base.manifest.metadata.profileSourceBindings;if(!Array.isArray(i))throw new Error("The original release needs compiler source bindings before candidate adoption.");let a=e.state.component.path,r=e.state.component,l=new Map(i.map(t=>{if(!t||typeof t!="object"||typeof t.releasedPath!="string"||typeof t.profileRelativePath!="string")throw new Error("Original Profile source binding is invalid.");return[y(t.releasedPath),y(t.profileRelativePath)]})),p=r.kind==="instruction"&&a==="instructions/system.md"&&e.base.manifest.metadata.profileInstructionSourcePath==="instructions/system.md"&&!l.has(a),f=l.get(a)??(p?"instructions/system.md":void 0),S=r.kind==="workflow"?`workflows/${r.workflowId}/`:r.kind==="agent"?a.split("/").slice(0,2).join("/")+"/":n.posix.dirname(a)+"/",w=f?n.posix.dirname(f)+"/":null;if(r.kind==="workflow"&&!f&&(w=S),r.kind==="agent"){let t=e.profile.agents.find(o=>a.startsWith(`agents/${o.id}/`));if(!t)throw new Error("The selected Agent original source is unavailable.");let c=y(t.path);w=((await s.lstat(n.join(e.source,c))).isDirectory()?c:n.posix.dirname(c))+"/"}let E=new Map(e.base.sourceFiles.map(t=>[t.path,t])),x=new Map(e.candidate.sourceFiles.map(t=>[t.path,t])),g=new Map;for(let t of new Set([...E.keys(),...x.keys()])){let c=E.get(t),m=x.get(t);if(c?.asset.contentHash===m?.asset.contentHash)continue;if(c&&c.asset.visibility!=="policy"||m&&m.asset.visibility!=="policy")throw new Error("A candidate cannot change protected Profile source.");let o=l.get(t)??(p&&t===a?f:void 0);if(!o&&t.startsWith(S)&&w&&(o=w+t.slice(S.length)),!o&&t==="workflows/catalog.json"&&[...l.keys()].some(P=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(P))||!o&&t==="dependency-lock/profile-import.json")continue;if(!o)throw new Error(`The selected component has no original Profile source mapping: ${t}`);if(o=y(o),o!==f&&!(r.kind!=="instruction"&&w&&o.startsWith(w)))throw new Error("Candidate patch changes a different original Profile component.");if(H(o))throw new Error("Candidate patch crosses the protected Profile evaluation closure.");let u=g.get(o),d=m?.bytes??null;if(u&&(u.before!==(c?.asset.contentHash??null)||b(u.bytes===null?null:Array.from(u.bytes))!==b(d===null?null:Array.from(d))))throw new Error("Public component aliases disagree on the original source edit.");g.set(o,{before:p&&t===a?null:c?.asset.contentHash??null,bytes:d})}for(let[t,c]of g){let m=n.join(e.source,...t.split("/")),o=n.dirname(m);for(;!await s.stat(o).catch(()=>null);)o=n.dirname(o);let u=n.relative(await s.realpath(e.source),await s.realpath(o));if(u.startsWith("..")||n.isAbsolute(u))throw new Error("Candidate patch escapes the staged Profile source.");let d=await s.lstat(m).catch(()=>null);if(d?.isSymbolicLink()||d&&!d.isFile())throw new Error("Original source patch needs a regular file.");let P=d?await s.readFile(m):null;if((P?k(P):null)!==c.before)throw new Error("Original source bytes differ from the exact candidate baseline.");c.bytes===null?await s.rm(m):(await s.mkdir(n.dirname(m),{recursive:!0}),await s.writeFile(m,c.bytes,{mode:d?.mode??384}))}return[...g.keys()]}h(ve,"applyCandidateProfileSource");function Se(e){let i=e.base.manifest.metadata.profileRepositoryId;return R({storeDir:e.storeDir,workspaceId:e.state.ownerWorkspaceId,name:e.base.manifest.name,profile:e.profile,sourceRevision:e.sourceRevision,...typeof i=="string"?{repositoryId:i}:{}})}h(Se,"compileOriginalCandidateProfile");export{v as a,j as b,Pe as c,ye as d,ve as e,Se as f};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{f as fn,h as hn}from"./chunk-
|
|
2
|
+
import{f as fn,h as hn}from"./chunk-FPUUZQUP.js";import{b as Bo,c as Jo,d as Rc,e as pn,f as Vt,g as mn}from"./chunk-6VF3Q6QJ.js";import{a as Tc,c as vc,g as Ec,h as Sc}from"./chunk-USKE34VR.js";import{D as an,E as fr,F as Jt,G as hr,H as ic,I as cc,J as dc,K as cn,L as lc,M as Uo,N as uc,O as xe,P as pc,Q as mc,R as fc,S as hc,T as gc,U as dn,V as yc,W as ln,aa as un,e as oi,ea as wc,f as si,fa as Me,ja as kc,m as ac,n as Fo}from"./chunk-4TZHH5FC.js";import{b as gn,m as xc,p as bc,s as Ic,t as yn,y as Cc,z as wn}from"./chunk-USMZT5FZ.js";import{d as Ve,g as Xe}from"./chunk-5CMKGD43.js";import{G as oc,P as sc}from"./chunk-HA7EFTPF.js";import{b as nc,e as on,f as sn}from"./chunk-7QEE4PBI.js";import{Ac as Ut,Ad as Ki,Bc as en,Bd as _i,Cc as tn,Cd as nn,Da as Hi,Dc as J,Ec as Xi,Ed as $i,Fa as _r,Fc as Bt,Fd as Rt,Gb as Fi,Gc as zi,Ib as re,Ic as Zi,Jb as Ui,Jc as jo,Kc as Yi,Kd as tc,La as Ho,Lb as Bi,Ld as tt,Ma as Wi,N as Mi,Oa as ji,Od as Se,Rd as mr,Sd as rc,Ta as qi,Y as Li,od as rn,pd as Qi,qd as Gi,rd as qo,va as Di,xc as $,yc as Ji,zc as Vi}from"./chunk-2JO2KWT3.js";import{c as ai,ga as Wo,z as Ni}from"./chunk-IKWDL3RB.js";import{Ba as Ci,Ca as pr,Oa as Ai,Qa as Je,Ra as Oi,Sa as Pi,Ta as et,ja as Ti,ka as vi,la as Ei,m as Ee,ma as Si,oa as xi,pc as $r,wc as ec,xa as bi,ya as Ii}from"./chunk-QRWPEW3Z.js";import{qa as ii,ra as Kr,sa as ci,ta as di,ua as lr,va as Ft,wa as li,x as _a}from"./chunk-WV2APYWG.js";import{Db as Gr,Eb as ri,Jb as qt,Qa as $a,Ra as Lo,Ta as ei,U as Qr,Vc as Ue,Wc as Be,a as Za,b as G,d as Ya,ga as $e,ha as Qa,ja as Ga,ka as Mo,la as ue,sd as ni,vb as Y,wb as ti,ya as Ka,z as Yr}from"./chunk-PJM2G7SG.js";import{A as ja,B as Ro,G as Jr,H as Vr,I as To,J as Fa,K as Ua,L as vo,M as Xr,N as Eo,O as So,P as cr,T as xo,U as Ba,V as Ja,W as Va,X as Xa,Y as za,Z as bo,_ as Io,e as Ma,ga as dr,ha as Co,ia as Ao,ja as Oo,ka as Po,la as zr,ma as Zr,n as La,na as jt,o as Da,oa as No,pa as Z,w as Ha,x as Wa}from"./chunk-SDEDAHV6.js";import{E as wi,F as ki,G as Ri,e as ui,f as wt}from"./chunk-DALJMSJG.js";import{B as pi,H as Do,N as mi,y as kt}from"./chunk-TGIB24K4.js";import{b as gt,c as he,d as yt,f as Aa,h as Oa,i as Pa,k as Na,l as ve,m as y,o as qa}from"./chunk-NNF6KCHD.js";import{b as g}from"./chunk-ES2ISFJC.js";import{h as ur,n as fi,o as hi,p as gi,q as yi}from"./chunk-H7IWJN7L.js";import{a as i,c as ko,e as Cp}from"./chunk-FTQLQJQV.js";var rd=ko((pv,td)=>{"use strict";var Im=["||","&&",";;","|&","<(","<<<",">>",">&","<&","&",";","(",")","|","<",">"],ed=/[\n\r\u2028\u2029]/,Cm=/[\s#!"$&'():;<=>@\\^`|]/g;td.exports=i(function(t){return t.map(function(r){if(r==="")return"''";if(r&&typeof r=="object"){if("op"in r&&r.op==="glob"){if(typeof r.pattern!="string")throw new TypeError("glob token requires a string `pattern`");if(ed.test(r.pattern))throw new TypeError("glob `pattern` must not contain line terminators");return r.pattern.replace(Cm,"\\$&")}if("op"in r&&typeof r.op=="string"){if(Im.indexOf(r.op)<0)throw new TypeError("invalid `op` value: "+JSON.stringify(r.op));return r.op.replace(/[\s\S]/g,"\\$&")}if("comment"in r&&typeof r.comment=="string"){if(ed.test(r.comment))throw new TypeError("`comment` must not contain line terminators");return"#"+r.comment}throw new TypeError("unrecognized object token shape")}return/["\s\\]/.test(r)&&!/'/.test(r)?"'"+r.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(r)?'"'+r.replace(/(["\\$`!])/g,"\\$1")+'"':String(r).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}~])/g,"$1\\$2")}).join(" ")},"quote")});var dd=ko((fv,cd)=>{"use strict";var id="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",nd=new RegExp("^"+id+"$"),od="|&;()<> \\t",Am="'([^']*?)'",Om='"((\\\\"|[^"])*?)"',Pm=/^#$/,sd="'",ad='"',In="$",Et="",Nm=4294967296;for($o=0;$o<4;$o++)Et+=(Nm*Math.random()).toString(16);var $o,Mm=new RegExp("^"+Et);function Lm(e,t){for(var r=t.lastIndex,n=[],o;o=t.exec(e);)n[n.length]=o,t.lastIndex===o.index&&(t.lastIndex+=1);return t.lastIndex=r,n}i(Lm,"matchAll");function Dm(e,t,r){var n=typeof e=="function"?e(r):e[r];return typeof n>"u"&&r!=""?n="":typeof n>"u"&&(n="$"),typeof n=="object"?t+Et+JSON.stringify(n)+Et:t+n}i(Dm,"getVar");function Hm(e,t,r){r||(r={});var n=r.escape||"\\",o=r.splitUnquoted===!0?`
|
|
3
3
|
`:typeof r.splitUnquoted=="string"?r.splitUnquoted:"",s="(\\"+n+`['"`+od+`]|[^\\s'"`+od+"])+",a=new RegExp(["("+id+")","("+s+"|"+Om+"|"+Am+")+"].join("|"),"g"),c=Lm(e,a);if(c.length===0)return[];t||(t={});var d=!1;return c.map(function(l){var p=l[0];if(!p||d)return;if(nd.test(p))return{op:p};var u=!1,m=!1,f="",h=[],R=!1,w=null,k=!1,x;function C(){x+=1;var E,b,D=p.charAt(x);if(D==="{"){if(x+=1,p.charAt(x)==="}")throw new Error("Bad substitution: "+p.slice(x-2,x+1));var F=1;for(E=x;F>0&&E<p.length;)p.charAt(E)==="{"&&p.charAt(E-1)==="$"?F+=1:p.charAt(E)==="}"&&(F-=1),E+=1;if(F!==0)throw new Error("Bad substitution: "+p.slice(x));E-=1,b=p.slice(x,E),x=E}else if(/[*@#?$!_-]/.test(D))b=D,x+=1;else{var V=p.slice(x);E=V.match(/[^\w\d_]/),E?(b=V.slice(0,E.index),x+=E.index-1):(b=V,x=p.length)}return Dm(t,"",b)}i(C,"parseEnvVar");function A(){if(w!==null){if(w===0)f!==""&&(h[h.length]=f,f="");else{h[h.length]=f,f="";for(var E=1;E<w;E+=1)h[h.length]=""}w=null}}for(i(A,"flushRun"),x=0;x<p.length;x++){var T=p.charAt(x);if(o&&T!==In&&A(),k=k||!u&&(T==="*"||T==="?"),m)f+=T,m=!1;else if(u)T===u?u=!1:u==sd?f+=T:T===n?(x+=1,T=p.charAt(x),T===ad||T===n||T===In?f+=T:f+=n+T):T===In?f+=C():f+=T;else if(T===ad||T===sd)u=T,R=!0;else{if(nd.test(T))return{op:p};if(Pm.test(T)){d=!0;var P={comment:e.slice(l.index+x+1)};return f.length?[f,P]:[P]}else if(T===n)m=!0;else if(T===In){var v=C();if(!o)f+=v;else for(var I=0;I<v.length;I+=1){var S=v.charAt(I);o.indexOf(S)<0?(A(),f+=S):w===null?w=S===" "||S===" "||S===`
|
|
4
4
|
`?0:1:S!==" "&&S!==" "&&S!==`
|
|
5
5
|
`&&(w+=1)}}else f+=T}}if(k)return{op:"glob",pattern:f};if(o){if(w!==null&&w>0){h[h.length]=f,f="";for(var N=1;N<w;N+=1)h[h.length]=""}return(f!==""||R&&h.length===0)&&(h[h.length]=f),h}return f}).reduce(function(l,p){return typeof p>"u"||[].concat(p).forEach(function(u){l[l.length]=u}),l},[])}i(Hm,"parseInternal");cd.exports=i(function(t,r,n){var o=Hm(t,r,n);return typeof r!="function"?o:o.reduce(function(s,a){if(typeof a=="object")return s[s.length]=a,s;var c=a.split(RegExp("("+Et+".*?"+Et+")","g"));return c.length===1?(s[s.length]=c[0],s):(c.filter(Boolean).forEach(function(d){s[s.length]=Mm.test(d)?JSON.parse(d.split(Et)[1]):d}),s)},[])},"parse")});var ld=ko(es=>{"use strict";es.quote=rd();es.parse=dd()});import{promises as Lc}from"node:fs";import rt from"node:path";var Ap="openpond.workEvidenceReceipt.v1",Op="openpond.workProcessTrace.v1",Pp="openpond.workFeedbackReceipt.v1",hk="openpond.workEvidenceEligibility.v1",Np=g.string().regex(/^urn:openpond:work:[a-f0-9]{64}$/,"Work source references must be opaque SHA-256 URNs."),Mp=g.string().regex(/^urn:openpond:workspace:[a-f0-9]{64}$/,"Workspace references must be opaque SHA-256 URNs."),Lp=g.string().regex(/^urn:openpond:artifact:[a-f0-9]{64}$/,"Evidence artifacts must use content-addressed SHA-256 URNs."),ie=Pa.extend({id:Lp}).strict().superRefine((e,t)=>{e.id!==Pc(e.contentHash)&&t.addIssue({code:"custom",message:"Evidence artifact id must contain its content hash.",path:["id"]})}),Dp=g.enum(["tool","validation","state_transition","approval","question","artifact","cleanup"]),Hp=g.enum(["agent","environment"]),Wp=g.enum(["turn_started","turn_completed","turn_failed","turn_cancelled","turn_timed_out","tool_invoked","tool_completed","tool_failed","validation_completed","validation_failed","approval_requested","approval_resolved","question_asked","question_answered","question_dismissed","artifact_created","workspace_changed","environment_created","environment_reset","environment_destroyed","cleanup_completed","cleanup_failed"]),jp=g.enum(["started","completed","failed","cancelled"]),qp=g.enum(["filesystem","source_control","command","browser","connected_app","sandbox","agent","other"]),Fp=g.enum(["structural","visual","test","user_review","other"]),Up=g.enum(["running","completed","failed","cancelled","timeout"]),Bp=g.enum(["requested","approved","denied","answered","dismissed"]),Jp=g.enum(["policy","validation","environment","infrastructure","timeout","cancelled","unknown"]),Vp=g.enum(["missing_start","missing_terminal","source_truncated","unsupported_events_dropped","uncorrelated_environment_step","artifact_unavailable"]),Xp=g.object({sequence:g.number().int().nonnegative().max(1e6),timestamp:yt,layer:Hp,kind:Dp,action:Wp,status:jp,inputHash:he.nullable(),outputHash:he.nullable(),receiptHash:he.nullable(),parentReceiptHash:he.nullable(),artifactRefs:g.array(ie).max(1e3),attributes:g.object({toolCategory:qp.nullable(),validationKind:Fp.nullable(),transitionState:Up.nullable(),interventionOutcome:Bp.nullable(),artifactCount:g.number().int().nonnegative().max(1e5),exitCode:g.number().int().min(-1).max(255).nullable(),durationMs:g.number().int().nonnegative().max(31536e6).nullable(),cpuTimeMs:g.number().int().nonnegative().max(31536e6).nullable(),memoryPeakBytes:g.number().int().nonnegative().max(0x4000000000000).nullable(),errorClass:Jp.nullable()}).strict()}).strict().superRefine((e,t)=>{e.layer==="agent"&&e.parentReceiptHash!==null&&t.addIssue({code:"custom",message:"Agent-layer steps cannot have a parent environment correlation.",path:["parentReceiptHash"]}),e.layer==="environment"&&e.parentReceiptHash===null&&t.addIssue({code:"custom",message:"Environment steps must correlate to an Agent receipt.",path:["parentReceiptHash"]})}),Ac=g.object({schemaVersion:g.literal(Op),sourceRevisionHash:he,sanitationPolicyVersion:gt,incomplete:g.boolean(),incompleteReasons:g.array(Vp).max(10),droppedEventCount:g.number().int().nonnegative().max(1e6),steps:g.array(Xp).max(1e5)}).strict().superRefine((e,t)=>{e.incomplete!==e.incompleteReasons.length>0&&t.addIssue({code:"custom",message:"incomplete must match the presence of incompleteReasons.",path:["incomplete"]});for(let r=0;r<e.steps.length;r+=1)e.steps[r].sequence!==r&&t.addIssue({code:"custom",message:"Process trace sequences must be contiguous and zero-based.",path:["steps",r,"sequence"]})}),Xo=Ac.safeExtend({contentHash:he}).strict(),zp=g.enum(["policy_failure","validation_failure","model_failure","environment_failure","infrastructure_failure","timeout","cancelled","unknown"]),Zp=g.object({status:g.enum(["completed","failed","cancelled","timeout"]),failureClass:zp.nullable()}).strict().superRefine((e,t)=>{e.status==="completed"&&e.failureClass!==null&&t.addIssue({code:"custom",message:"Completed Work cannot carry a failure class.",path:["failureClass"]}),e.status!=="completed"&&e.failureClass===null&&t.addIssue({code:"custom",message:"Non-completed Work requires a failure class.",path:["failureClass"]}),e.status==="cancelled"&&e.failureClass!=="cancelled"&&t.addIssue({code:"custom",message:"Cancelled Work must use the cancelled failure class.",path:["failureClass"]}),e.status==="timeout"&&e.failureClass!=="timeout"&&t.addIssue({code:"custom",message:"Timed-out Work must use the timeout failure class.",path:["failureClass"]})}),zo=g.object({schemaVersion:g.literal(Ap),id:g.string().regex(/^work-evidence-[a-f0-9]{24}$/),source:g.object({surface:g.enum(["desktop","hosted"]),experience:g.enum(["work","development"]),opaqueRef:Np,revisionHash:he}).strict(),agentSnapshot:Aa.nullable(),model:qa,runtime:g.object({adapterId:gt,adapterVersion:gt,capabilityRef:ie.nullable()}).strict(),inputHash:he,terminal:Zp,trace:g.object({sanitizedRef:ie,traceHash:he,sanitationPolicyVersion:gt,incomplete:g.boolean()}).strict(),outputRefs:g.array(ie).max(1e4),artifactRefs:g.array(ie).max(1e5),validationEvidenceRefs:g.array(ie).max(1e4),interventions:g.object({approvals:g.number().int().nonnegative().max(1e6),questions:g.number().int().nonnegative().max(1e6),steeringEvents:g.number().int().nonnegative().max(1e6),otherUserInterventions:g.number().int().nonnegative().max(1e6)}).strict(),timing:g.object({startedAt:yt,completedAt:yt,latencyMs:g.number().int().nonnegative().max(31536e6)}).strict(),usage:g.object({promptTokens:g.number().int().nonnegative().nullable(),completionTokens:g.number().int().nonnegative().nullable(),totalTokens:g.number().int().nonnegative().nullable()}).strict(),costUsd:g.number().nonnegative().max(1e6).nullable(),provenance:g.object({consentReceiptRef:ie,consentScope:g.literal("work_process_and_artifacts"),consentGrantedAt:yt,policyVersion:gt,projectorVersion:gt,disclosure:g.literal("portable_sanitized"),ownershipScope:g.enum(["personal","workspace"]),workspaceRef:Mp.nullable(),participantPolicy:g.enum(["creator_only","all_participants"]),retention:g.object({policy:g.literal("source_bound"),deleteWithSource:g.literal(!0),expiresAt:yt.nullable()}).strict()}).strict()}).strict().superRefine((e,t)=>{e.trace.traceHash!==e.trace.sanitizedRef.contentHash&&t.addIssue({code:"custom",message:"Sanitized trace reference must bind traceHash.",path:["trace","traceHash"]});let r=Date.parse(e.timing.completedAt)-Date.parse(e.timing.startedAt);(r<0||r!==e.timing.latencyMs)&&t.addIssue({code:"custom",message:"latencyMs must equal completedAt minus startedAt.",path:["timing","latencyMs"]}),e.provenance.ownershipScope==="workspace"&&e.provenance.workspaceRef===null&&t.addIssue({code:"custom",message:"Workspace-owned evidence requires workspaceRef.",path:["provenance","workspaceRef"]}),e.provenance.ownershipScope==="personal"&&e.provenance.workspaceRef!==null&&t.addIssue({code:"custom",message:"Personal evidence cannot carry workspaceRef.",path:["provenance","workspaceRef"]}),Vo(e.outputRefs,["outputRefs"],t),Vo(e.artifactRefs,["artifactRefs"],t),Vo(e.validationEvidenceRefs,["validationEvidenceRefs"],t)}),kn=zo.safeExtend({contentHash:he}).strict(),Yp=g.enum(["accepted","needs_correction","not_useful"]),Qp=g.enum(["correct","complete","high_quality","incorrect","incomplete","wrong_format","unsafe","stale","irrelevant","other"]),Oc=g.object({schemaVersion:g.literal(Pp),id:g.string().regex(/^work-feedback-[a-f0-9]{24}$/),evidenceReceiptRef:ie,outputRevisionRef:ie.nullable(),verdict:Yp,reasonCodes:g.array(Qp).max(16),correctionRef:ie.nullable(),correctedOutputRevisionRef:ie.nullable(),actor:g.literal("user"),createdAt:yt}).strict().superRefine((e,t)=>{new Set(e.reasonCodes).size!==e.reasonCodes.length&&t.addIssue({code:"custom",message:"Feedback reason codes must be unique.",path:["reasonCodes"]}),e.verdict!=="needs_correction"&&(e.correctionRef||e.correctedOutputRevisionRef)&&t.addIssue({code:"custom",message:"Only needs_correction feedback may bind correction artifacts.",path:["verdict"]})}),Zo=Oc.safeExtend({contentHash:he}).strict();function Pc(e){return`urn:openpond:artifact:${e}`}i(Pc,"evidenceArtifactId");function gk(e){return`urn:openpond:work:${y(e)}`}i(gk,"workSourceOpaqueRef");function yk(e){return`urn:openpond:workspace:${y(e)}`}i(yk,"workWorkspaceOpaqueRef");function Gp(e){return ie.parse({id:Pc(e.contentHash),contentHash:e.contentHash,mediaType:e.mediaType??null,sizeBytes:e.sizeBytes??null})}i(Gp,"evidenceArtifactRef");function wk(e){let t=Ac.parse(e);return Xo.parse({...t,contentHash:y(t)})}i(wk,"createWorkProcessTrace");function kk(e){let t=zo.parse(e);return kn.parse({...t,contentHash:y(t)})}i(kk,"createWorkEvidenceReceipt");function Rk(e,t){let r=Oc.parse(e),n=Zo.parse({...r,contentHash:y(r)});return t&&Kp(n,t),n}i(Rk,"createWorkFeedbackReceipt");function Tk(e){return _p(e,kn,zo)}i(Tk,"verifyWorkEvidenceReceipt");function vk(e){return Gp({contentHash:e.contentHash,mediaType:"application/vnd.openpond.work-evidence+json",sizeBytes:null})}i(vk,"workEvidenceReceiptRef");function Kp(e,t){if(e.evidenceReceiptRef.contentHash!==t.contentHash)throw new Error("Feedback targets a different Work evidence receipt.");if(e.outputRevisionRef&&!t.outputRefs.some(r=>r.contentHash===e.outputRevisionRef.contentHash))throw new Error("Feedback targets an output revision not bound by the Work evidence receipt.")}i(Kp,"assertFeedbackTargetsEvidence");function _p(e,t,r){let n=t.safeParse(e);if(!n.success)return!1;let{contentHash:o,...s}=n.data;return y(r.parse(s))===o}i(_p,"verifyHashedValue");function Vo(e,t,r){let n=e.map(o=>o.contentHash);new Set(n).size!==n.length&&r.addIssue({code:"custom",message:"Artifact content hashes must be unique.",path:t})}i(Vo,"addDuplicateHashIssues");import{randomUUID as $p}from"node:crypto";import{promises as Rn}from"node:fs";import Nc from"node:path";function Xt(e){return{binding:i(()=>{let t=gi(e.home,"refiner_bindings","active");return t?Xr.parse(t.value):null},"binding"),releases:i(async()=>{let t=(await Rn.readdir(e.releases)).filter(r=>r.endsWith(".json"));return Promise.all(t.map(async r=>vo.parse(JSON.parse(await Rn.readFile(Nc.join(e.releases,r),"utf8")))))},"releases"),transitions:i(()=>Object.values(yi(e.home,"refiner_transitions")).map(t=>Eo.parse(t.value)),"transitions"),release:i(async t=>{let r=vo.parse(JSON.parse(await Rn.readFile(Nc.join(e.releases,`${t.contentHash}.json`),"utf8")));if(r.id!==t.id||r.contentHash!==t.contentHash)throw new Error("Refiner release reference does not match immutable release content.");return r},"release"),persistRelease:i(async t=>Mc(e.releases+`/${t.contentHash}.json`,Na(t),!0),"persistRelease"),writeSource:i(async t=>Mc(e.source,t),"writeSource"),transition:i(async(t,r)=>{hi(e.home,n=>{n.exec("BEGIN IMMEDIATE");try{let o=n.prepare("SELECT payload FROM refiner_bindings WHERE id = 'active'").get(),s=o?Xr.parse(JSON.parse(o.payload)):null,a=new Date().toISOString(),c={id:t.id,contentHash:t.contentHash},d={schemaVersion:"openpond.refinerTransitionReceipt.v1",id:`refiner-transition-${$p()}`,operation:r.operation,bindingChanged:r.bindingChanged,previousRelease:s?.release??null,nextRelease:c,actor:r.actor,reason:r.reason,authoringSkillHash:r.authoringSkillHash,validation:{valid:!0,messages:[]},createdAt:a},l=Eo.parse({...d,contentHash:y(d)});if(n.prepare("INSERT INTO refiner_transitions VALUES (?, ?, 1)").run(l.contentHash,JSON.stringify(l)),r.bindingChanged){let p=Xr.parse({schemaVersion:"openpond.refinerBinding.v1",channel:"active",revision:(s?.revision??-1)+1,release:c,updatedAt:a});n.prepare("INSERT INTO refiner_bindings VALUES ('active', ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(JSON.stringify(p))}n.exec("COMMIT")}catch(o){throw n.exec("ROLLBACK"),o}})},"transition")}}i(Xt,"createLocalRefinerProfileRepository");async function Mc(e,t,r=!1){await wt(e,async()=>{if(r){let n=await Rn.readFile(e,"utf8").catch(()=>null);if(n!==null){if(n!==t)throw new Error("Immutable Refiner release bytes changed.");return}}await ui(e,t)})}i(Mc,"atomicWrite");var Dc="OpenPond Refiner Core: evidence admission, privacy, ownership, validation, and immutable activation boundaries.";function gr(e){let t=rt.join(e,"library","refiners");return{home:e,root:t,source:rt.join(t,"source","openpond.review.json"),releases:rt.join(t,"releases")}}i(gr,"refinerProfilePaths");function qk(e){let t=i(()=>ze(e),"inspect"),r=i(s=>em(e,s),"update"),n=i(s=>rm(e,s),"activate"),o=i(s=>om(e,s),"rollback");return{refinerHistoryPayload:t,updateRefinerProfilePayload:r,activateRefinerReleasePayload:n,rollbackRefinerReleasePayload:o,inspectRefiner:t,updateRefiner:r,activateRefiner:n,rollbackRefiner:o}}i(qk,"createRefinerProfileRoutePayloads");async function ze(e){let t=gr(e),r=Xt(t),n=r.binding();if(!n)throw new Error("Active Refiner binding is unavailable.");let o=(await r.releases()).sort((c,d)=>d.createdAt.localeCompare(c.createdAt)),s=o.find(c=>c.id===n.release.id&&c.contentHash===n.release.contentHash);if(!s)throw new Error("Active Refiner release is unavailable.");let a=r.transitions().sort((c,d)=>d.createdAt.localeCompare(c.createdAt));return Qi.parse({rootPath:t.root,sourcePath:t.source,binding:n,currentRelease:s,releases:o,transitions:a})}i(ze,"inspectRefinerProfile");async function Hc(e){return(await ze(e)).currentRelease}i(Hc,"loadActiveRefinerRelease");async function em(e,t){return wt(rt.join(ur(e).runtime,"refiner-edit"),()=>tm(e,t))}i(em,"updateRefinerProfile");async function tm(e,t){let r=Gi.parse(t),n=gr(e),o=Xt(n);await Yo(n);let s=Fa.parse(r.profile),a=So({profile:s,coreVersion:xo,corePrompt:Dc}),d=(await o.releases()).find(p=>p.composedPromptHash===a.composedPromptHash&&p.profileHash===a.profileHash)??a;await o.persistRelease(d),await o.writeSource(cr(s));let l=o.binding();if(!l)throw new Error("Active Refiner binding is unavailable.");return r.activate&&l.release.contentHash===d.contentHash||!r.activate&&o.transitions().some(m=>!m.bindingChanged&&m.nextRelease.contentHash===d.contentHash&&m.actor===r.actor&&m.reason===r.reason&&m.authoringSkillHash===r.authoringSkillHash)||await o.transition(d,{operation:"update",bindingChanged:r.activate,actor:r.actor,reason:r.reason,authoringSkillHash:r.authoringSkillHash}),ze(e)}i(tm,"updateRefinerProfileUnlocked");async function rm(e,t){return wt(rt.join(ur(e).runtime,"refiner-edit"),()=>nm(e,t))}i(rm,"activateRefinerRelease");async function nm(e,t){let r=qo.parse(t),n=gr(e),o=Xt(n);await Yo(n);let s=await o.release(r.release),a=o.binding();if(!a)throw new Error("Active Refiner binding is unavailable.");return a.release.contentHash===s.contentHash||(await o.transition(s,{operation:"activate",bindingChanged:!0,actor:r.actor,reason:r.reason,authoringSkillHash:null}),await o.writeSource(cr(s.profile))),ze(e)}i(nm,"activateRefinerReleaseUnlocked");async function om(e,t){return wt(rt.join(ur(e).runtime,"refiner-edit"),()=>sm(e,t))}i(om,"rollbackRefinerRelease");async function sm(e,t){let r=qo.parse(t),n=gr(e),o=Xt(n);await Yo(n);let s=await o.release(r.release),a=o.binding();if(!a)throw new Error("Active Refiner binding is unavailable.");return a.release.contentHash===s.contentHash||(await o.transition(s,{operation:"rollback",bindingChanged:!0,actor:r.actor,reason:r.reason,authoringSkillHash:null}),await o.writeSource(cr(s.profile))),ze(e)}i(sm,"rollbackRefinerReleaseUnlocked");async function am(e){await wt(rt.join(ur(e).runtime,"refiner-initialize"),()=>im(gr(e)))}i(am,"initializeRefinerProfile");async function Yo(e){await am(e.home)}i(Yo,"ensureInitialized");async function im(e){let t=Xt(e);if(await Promise.all([Lc.mkdir(rt.dirname(e.source),{recursive:!0,mode:448}),Lc.mkdir(e.releases,{recursive:!0,mode:448})]),t.binding())return;let r=So({profile:Ua,coreVersion:xo,corePrompt:Dc});await t.persistRelease(r),await t.writeSource(cr(r.profile)),await t.transition(r,{operation:"initialize",bindingChanged:!0,actor:"openpond",reason:"Initialize the default Refiner Review Profile.",authoringSkillHash:null})}i(im,"initialize");import{randomUUID as fm}from"node:crypto";var cm=["prompt_tokens","promptTokens","input_tokens","inputTokens"],dm=["completion_tokens","completionTokens","output_tokens","outputTokens"],lm=["total_tokens","totalTokens"];function Ze(e){let t=e&&typeof e=="object"&&!Array.isArray(e)?e:{},r=Qo(t,cm),n=um(t,r),o=n.promptTokens,s=Qo(t,dm),c=Qo(t,lm)??(o!==null&&s!==null?o+s:null);return{promptTokens:o,cachedPromptTokens:n.cachedPromptTokens,uncachedPromptTokens:n.uncachedPromptTokens,cacheWritePromptTokens:n.cacheWritePromptTokens,cacheTelemetrySource:n.cacheTelemetrySource,completionTokens:s,totalTokens:c}}i(Ze,"normalizeModelUsageTokens");function um(e,t){let r=Tn(e,["cached_input_tokens","cachedInputTokens","cached_prompt_tokens","cachedPromptTokens","prompt_cache_hit_tokens","promptCacheHitTokens"]),n=Tn(e,["prompt_cache_miss_tokens","promptCacheMissTokens"]),o=Tn(e,["cache_read_input_tokens","cacheReadInputTokens"]),s=mm(e,[["prompt_tokens_details","cached_tokens"],["promptTokensDetails","cachedTokens"],["input_tokens_details","cached_tokens"],["inputTokensDetails","cachedTokens"]]),a=Tn(e,["cache_creation_input_tokens","cacheCreationInputTokens","cache_write_input_tokens","cacheWriteInputTokens"]),c=r.value!==null?r:o.value!==null?o:s,d=c.value!==null||n.value!==null||a.value!==null,l=d?pm(e):null;if(!d)return{promptTokens:t,cachedPromptTokens:null,uncachedPromptTokens:null,cacheWritePromptTokens:null,cacheTelemetrySource:null};let p=c.value,u=a.present?a.value:null,m=c===o&&o.value!==null||a.value!==null,f=t??(c.value!==null&&n.value!==null?c.value+n.value:null);if(f===null)return{promptTokens:null,cachedPromptTokens:p,uncachedPromptTokens:n.value,cacheWritePromptTokens:u,cacheTelemetrySource:l};if(m){let w=p??0,k=u??0,x=t??n.value??0;return{promptTokens:x+w+k,cachedPromptTokens:p,uncachedPromptTokens:x+k,cacheWritePromptTokens:u,cacheTelemetrySource:l}}let h=p===null?null:Math.min(f,p),R=n.value===null?h===null?null:f-h:Math.min(f-(h??0),n.value);return{promptTokens:f,cachedPromptTokens:h,uncachedPromptTokens:R,cacheWritePromptTokens:u,cacheTelemetrySource:l}}i(um,"normalizeCacheUsage");function pm(e){return(e.cache_telemetry_source??e.cacheTelemetrySource)==="provider_response_headers"?"provider_response_headers":"provider_usage_body"}i(pm,"cacheTelemetrySourceFromUsage");function Tn(e,t){for(let r of t)if(Object.prototype.hasOwnProperty.call(e,r))return{present:!0,value:Go(e[r])};return{present:!1,value:null}}i(Tn,"firstPresentTokenCount");function mm(e,t){for(let[r,n]of t){let o=e[r];if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o;if(Object.prototype.hasOwnProperty.call(s,n))return{present:!0,value:Go(s[n])}}return{present:!1,value:null}}i(mm,"firstPresentNestedTokenCount");function Qo(e,t){for(let r of t){let n=Go(e[r]);if(n!==null)return n}return null}i(Qo,"firstTokenCount");function Go(e){if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return Math.trunc(e);if(typeof e!="string")return null;let t=e.trim();if(!/^\d+$/.test(t))return null;let r=Number(t);return Number.isSafeInteger(r)?r:null}i(Go,"tokenCount");function En(e){let t=vn(vn(vn(e.metadata).billing).pricing);return{version:zt(t.version,"pricing version"),source:zt(t.source,"pricing source"),effectiveAt:zt(t.effectiveAt,"pricing effective date"),inputUsdPerMillionTokens:Zt(t.inputUsdPerMillionTokens,"input token rate"),cachedInputUsdPerMillionTokens:Zt(t.cachedInputUsdPerMillionTokens,"cached input token rate"),outputUsdPerMillionTokens:Zt(t.outputUsdPerMillionTokens,"output token rate")}}i(En,"hostedTokenPricingFromCatalog");function Xk(e){let t=vn(e);try{return{version:zt(t.version,"pricing version"),source:zt(t.source,"pricing source"),effectiveAt:zt(t.effectiveAt,"pricing effective date"),inputUsdPerMillionTokens:Zt(t.inputUsdPerMillionTokens,"input token rate"),cachedInputUsdPerMillionTokens:Zt(t.cachedInputUsdPerMillionTokens,"cached input token rate"),outputUsdPerMillionTokens:Zt(t.outputUsdPerMillionTokens,"output token rate")}}catch{return null}}i(Xk,"hostedTokenPricingFromValue");function nt(e,t){let r=Ze(e);if(r.promptTokens===null&&r.completionTokens===null)return null;let n=r.cachedPromptTokens??0;return((r.uncachedPromptTokens??r.promptTokens??0)*t.inputUsdPerMillionTokens+n*t.cachedInputUsdPerMillionTokens+(r.completionTokens??0)*t.outputUsdPerMillionTokens)/1e6}i(nt,"hostedUsageCostUsd");function vn(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}i(vn,"record");function zt(e,t){if(typeof e=="string"&&e.trim())return e.trim();throw new Error(`Hosted model catalog is missing ${t}.`)}i(zt,"requiredString");function Zt(e,t){if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return e;throw new Error(`Hosted model catalog is missing ${t}.`)}i(Zt,"requiredRate");function qc(e={}){let t=e.catalog??fn,r=e.stream??hn;return{async prepare(n){if(n.providerId!=="openpond")throw new Error("The selected judge provider is not connected to the hosted judge transport.");if(n.revision!==null)throw new Error("This judge transport cannot enforce a model revision; select a provider with revision support.");let o=await t();if(o.error)throw new Error(`Judge model catalog unavailable: ${o.error}`);let s=o.models.find(u=>u.id===n.modelId);if(!s)throw new Error("The selected judge model is unavailable.");let a=Wc(s.raw),c=En(a),d=jc(a.context_window,"context window"),l=Math.min(4096,jc(a.output_limit,"output limit")),p=(d*Math.max(c.inputUsdPerMillionTokens,c.cachedInputUsdPerMillionTokens)+l*c.outputUsdPerMillionTokens)/1e6;if(!(p>0))throw new Error("The judge model must have a positive known charge ceiling.");return{maximumChargeUsd:p,async dispatch(u){u?.throwIfAborted();let m="",f=null,h=null,R=null,w=!1;for await(let C of r({model:n.modelId,messages:[{role:"system",content:n.system},{role:"user",content:n.data}],requestId:`learning-judge-${fm()}`,maxTokens:l,temperature:n.temperature,signal:u})){let A=Wc(C.raw);if(typeof A.model=="string"){if(f!==null&&A.model!==f)throw new Error("Judge response model identity changed during streaming.");f=A.model}if(typeof A.id=="string"){if(h!==null&&h!==A.id)throw new Error("Judge response identity changed during streaming.");h=A.id}if(C.type==="text_delta"&&(m+=C.text),m.length>1e5)throw new Error("Judge response exceeds the retained response limit.");C.type==="usage"&&(R=C.usage),C.type==="finish"&&(w=!0)}if(!w||!f||!h)throw new Error("Judge response did not include a complete model receipt.");let k=Ze(R),x=k.promptTokens!==null&&k.completionTokens!==null?nt(R,c):null;return{text:m,modelId:f,modelRevision:null,responseId:h,inputTokens:k.promptTokens,outputTokens:k.completionTokens,costUsd:x}}}},async cancel({run:n}){return!n.judgeCalls?.some(o=>o.status==="reserved")}}}i(qc,"createLearningHostedJudgeProvider");function Wc(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}i(Wc,"record");function jc(e,t){if(typeof e!="number"||!Number.isSafeInteger(e)||e<=0)throw new Error(`Judge catalog is missing its ${t}.`);return e}i(jc,"positiveInteger");function sR(e,t=qc()){return{execute(r){if(r.definition.execution.environment.entrypoint==="openpond.javascript-environment.v1")throw new Error("Tool Tasksets require grading an owner-recorded environment attempt.");let n=ni({repository:e,scope:r.scope,run:r.run});return Qa({binding:r.binding,rewards:r.rewards,task:Gr(r.evidence,r.definition),evidence:ri(r.evidence,r.run.output),evaluatorContext:r.evidence.submission.evaluatorContext,signal:r.signal,modelJudge:$a({readRubric:i(o=>e.transaction(r.scope,async s=>ue(await Ue(s,"asset",o.id,1),o)),"readRubric"),async executeBudgeted(o,s){let a=await t.prepare(o,{scope:r.scope,run:r.run});return ei({store:n,maximumCharge:i(()=>a.maximumChargeUsd,"maximumCharge"),dispatch:i((d,l)=>a.dispatch(l),"dispatch")})(`grade-${y(o)}`,o,s)}}),customVerifier:i(async({grader:o,task:s,evidence:a})=>{let c=await yr({repository:e,scope:r.scope,grader:o,task:s,evidence:a,evaluatorContext:r.evidence.submission.evaluatorContext,timeoutMs:r.run.timeoutMs,signal:r.signal});return{score:c.score,passed:c.passed,rewardEligible:o.rewardEligible,failureClass:null,feedback:[c.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:c.evidenceRefs}},"customVerifier")})},async cancel({scope:r,run:n}){let o=await e.transaction(r,s=>Ue(s,"grade",n.id));return o.judgeCalls?.some(s=>s.status==="reserved")?!1:t.cancel({scope:r,run:o})}}}i(sR,"createLocalTaskGradeExecutor");async function yr(e){let t=await e.repository.transaction(e.scope,async r=>ue(await Ue(r,"asset",e.grader.verifierRef.id,1),e.grader.verifierRef));return Vt({source:t,exportName:e.grader.exportName,runtime:e.grader.runtime,timeoutMs:Math.min(e.grader.timeoutMs,e.timeoutMs??e.grader.timeoutMs),signal:e.signal,value:{task:e.task,attempt:e.evidence,input:e.task.input,output:e.evidence.output,expectedOutput:e.task.expectedOutput,evaluatorContext:e.evaluatorContext,infrastructureError:e.evidence.infrastructureError??null}})}i(yr,"executeLocalLearningVerifier");import hm from"node:path";async function Fc(e,t,r){if(!r)throw new Error("Ordinary tool execution requires its owner's package directory.");let n=$r({taskset:e,adapterId:dn(e)}),o=await wc({root:hm.join(r,"training","tasksets",Me(e)),content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:n.tasksetRelease,environment:n.environmentRelease,verifierSet:n.verifierSetRelease},sources:ec.parse(e.metadata.portableFileInventory)}),s=Ii(o);if(!s)throw new Error("The Taskset does not declare a JavaScript execution graph.");let a=o.taskset.tasks.find(l=>l.id===t.id);if(!a)throw new Error("The selected task is missing from its executable package.");let c=s.assets.find(l=>l.id===s.execution.javascript.module.id),d=s.assets.find(l=>l.id===a.privilegedContextRef);return{execution:s.execution,module:c,initialState:JSON.parse(d.text),definition:Y(o.taskset),instructions:Ci(o),task:a}}i(Fc,"loadOrdinaryToolEnvironment");var ce="openpond.javascript-environment.v1";async function Yt(e,t,r,n){let o=t.tasks.find(s=>s.id===r.id);if(!o||y(o)!==y(r))throw new Error("Tool task differs from the selected immutable Taskset.");return t.metadata.taskDefinition===void 0?Fc(t,r,n):e.learningRepository().transaction(t.profileId,async s=>{let a=await Be(s,"definition",Ee.parse(t.metadata.taskDefinition)),c=a.execution.environment;if(c.entrypoint!==ce||t.environment.entrypoint!==ce||t.environment.kind!=="agent"||t.environment.stateful!==c.stateful||t.environment.defaultTimeoutMs!==c.defaultTimeoutMs||t.environment.networkPolicy!==c.networkPolicy||t.environment.deterministicSeeds!==c.deterministicSeeds||y(t.environment.toolNames)!==y(a.execution.tools.map(T=>T.name))||y(t.environment.metadata.portableTools)!==y(a.execution.tools)||y(t.policy)!==y(a.execution.policy)||y(t.metadata.rewardBinding)!==y(a.rewardBinding))throw new Error("Tool Taskset context differs from its pinned task definition.");let d=await Be(s,"binding",a.rewardBinding),l=await Promise.all(d.sources.map(T=>Be(s,"reward",T.reward))),p=Qr.parse({id:r.id,clusterKey:r.clusterKey,split:r.split,input:r.input,expectedOutput:r.expectedOutput,policyVisibleContext:r.policyVisibleContext,privilegedContextRef:r.privilegedContextRef,artifactRefs:[],tags:r.tags}),u={...a.execution,graders:$e(d,l),tasks:[p]},m=await Ue(s,"asset",Si(u),1),f=vi.parse(JSON.parse(ue(m,m.asset))),h=[f.javascript.module,f.environment.actionSchemaRef,f.environment.observationSchemaRef,f.environment.stateSchemaRef].filter(T=>T!==null),R=[...new Set([...h.map(T=>T.id),r.privilegedContextRef].filter(T=>T!==null))],w=await Promise.all(R.map(T=>Ue(s,"asset",T,1))),k=xi(u,m,w);if(y(t.environment.metadata.portableExecutionResources)!==y({environment:k.environment,verifierSet:k.verifierSet}))throw new Error("Tool Taskset publication differs from its private execution resources.");let x=w.find(T=>T.id===k.javascript.module.id),C=w.find(T=>T.id===r.privilegedContextRef),A=JSON.parse(ue(C,C.asset));return{execution:k,module:x,initialState:A,definition:Y(a),instructions:a.instructions,task:p}})}i(Yt,"loadStarterToolEnvironment");function Uc(e){let t=Mo({text:e.instructions,path:"policy/instructions.txt",mediaType:"text/plain",visibility:"policy"}),r=Mo({text:JSON.stringify({environment:Y(e.execution.environment),verifierSet:Y(e.execution.verifierSet),javascript:Y(e.execution.javascript)}),path:"environment/dependencies.json",mediaType:"application/json",visibility:"host_private"}),n=La({schemaVersion:"openpond.agentSnapshot.v2",id:`starter-agent-${e.definition.contentHash}`,sourceRelease:{id:e.definition.id,contentHash:e.definition.contentHash},instructions:[t.asset],skills:[],agents:[],toolDeclarations:e.execution.javascript.tools,capabilityRequirements:[],dependencyLock:r.asset,portability:{portable:!0,blockers:[],localOnlyAssetRefs:[],hostPrivateAssetRefs:[e.module.id,r.id]},metadata:{execution:ce}}),o=Da({schemaVersion:"openpond.harnessRelease.v2",id:`starter-harness-${n.contentHash}`,agentSnapshot:{id:n.id,contentHash:n.contentHash},program:e.module.asset,tools:e.execution.javascript.tools,lifecycle:{create:!0,reset:!0,step:!0,collect:!0,destroy:!0,resetScope:"attempt"},graderInterface:{visibleEvidence:["output"],privilegedEvidence:["environment_state","private_verifier"],privateVerifierIsolation:!0},files:[t.asset,r.asset,e.module.asset],metadata:{execution:ce}});return{agentSnapshot:n,harnessRelease:o,instructionContext:void 0}}i(Uc,"compileStarterToolHarness");import Sn from"node:path";import{constants as Bc}from"node:fs";import{open as gm,realpath as Jc}from"node:fs/promises";var ym=g.string().regex(/^[a-f0-9]{64}$/),wm=g.object({schemaVersion:g.literal("openpond.starterToolAttempt.v1"),requestId:g.string(),taskset:Ee,taskHash:ym,model:g.unknown(),seed:g.number().int(),attempt:g.number().int(),definition:Ee,policySource:g.enum(["model","fixture"]),environment:Ee,verifierSet:Ee,result:Ti}).strict();async function xn(e){let{store:t,taskset:r,task:n,attempt:o}=e,s=await Yt(t,r,n,e.storeDir),c=(await t.listTaskAttemptArtifacts({attemptId:o.id})).filter(x=>x.kind==="environment_state"&&x.tasksetId===r.id&&x.taskId===n.id&&x.attemptId===o.id&&o.artifactRefs.includes(x.id)&&o.privilegedOutcomeRef===x.id);if(c.length!==1)throw new Error("Tool grading requires exactly one owner-recorded environment artifact.");let d=c[0],l=await Jc(Sn.join(e.storeDir,"training","evaluation-artifacts")),p=await Jc(Sn.dirname(d.path)),u=Sn.relative(l,p);if(!u||u.startsWith("..")||Sn.isAbsolute(u))throw new Error("Tool evidence is outside the execution owner's artifact directory.");let m=await gm(d.path,Bc.O_RDONLY|Bc.O_NOFOLLOW),f;try{let x=await m.stat();if(!x.isFile()||x.size>33554432||x.size!==d.sizeBytes)throw new Error("Tool evidence exceeds its declared byte boundary.");f=await m.readFile()}finally{await m.close()}if(f.byteLength!==d.sizeBytes||ve(f)!==d.sha256)throw new Error("Owner-recorded tool evidence bytes changed.");let h=wm.parse(JSON.parse(f.toString("utf8"))),{contentHash:R,...w}=h.result,k=h.result;if(y(w)!==R||!k.snapshot||!k.environmentCleanupComplete||!["completed","budget_exhausted","policy_failure"].includes(k.status)||y(h.taskset)!==y(Y(r))||h.taskHash!==y(n)||y(h.model)!==y(o.modelRef)||h.seed!==o.seed||h.attempt!==o.attempt||o.tasksetId!==r.id||o.taskId!==n.id||o.split!==n.split||y(h.definition)!==y(s.definition)||y(h.environment)!==y(Y(s.execution.environment))||y(h.verifierSet)!==y(Y(s.execution.verifierSet))||k.taskId!==n.id||k.snapshot.seed!==o.seed||k.snapshot.inputHash!==y(n.input)||y(k.snapshot.definition)!==y(Y(s.execution.javascript))||k.snapshot.finalStateHash!==y(k.snapshot.state)||y(o.output)!==y({text:k.output??""})||o.metadata.environmentAttemptHash!==R)throw new Error("Tool evidence differs from the selected task, model or recorded attempt.");if(o.metadata.policySource!==h.policySource)throw new Error("Tool evidence policy source changed.");return{environment:{status:k.status,collected:k.collected,definition:k.snapshot.definition,initialStateHash:k.snapshot.initialStateHash,finalStateHash:k.snapshot.finalStateHash,finalState:k.snapshot.state,events:k.snapshot.events}}}i(xn,"readStarterToolEvidence");async function ot(e,t){if(t.metadata.learning!==void 0)return qt.parse(t.metadata.learning);if(t.metadata.rewardBinding===void 0)return;let r=Ee.parse(t.metadata.rewardBinding);return e.learningRepository().transaction(t.profileId,async n=>{let o=await Be(n,"binding",r),s=[...new Map(o.sources.map(c=>[`${c.reward.id}:${c.reward.revision}:${c.reward.contentHash}`,c.reward])).values()],a=await Promise.all(s.map(c=>Be(n,"reward",c)));return{binding:o,rewards:a}})}i(ot,"resolveTasksetRewardBinding");async function km(e,t,r){let n=await ot(e,t);if(!n)return{rewardExecution:void 0,verifierAssets:[]};let o=$e(n.binding,n.rewards).flatMap(c=>c.kind==="custom_verifier"?[c.verifierRef]:c.kind==="model_judge"?[c.rubricRef]:[]),s=t.metadata.learning===void 0?void 0:await un(r,t);if(s){let c=[...new Map(o.map(d=>{let l=s.learningResources.assets.find(p=>p.id===d.id);if(!l)throw new Error("Imported batch verifier is missing from its package.");return ue(l,d),[l.id,l]})).values()];return{rewardExecution:n,verifierAssets:c}}let a=await e.learningRepository().transaction(t.profileId,async c=>{let d=new Map;for(let l of o){let p=await Ue(c,"asset",l.id,1);ue(p,l),d.set(p.id,p)}return[...d.values()]});return{rewardExecution:n,verifierAssets:a}}i(km,"resolveTasksetTrainingReward");async function YR(e,t,r){let n=await km(e,t,r.storeDir);if(!n.rewardExecution)return n;let o=$e(n.rewardExecution.binding,n.rewardExecution.rewards);if(!n.rewardExecution.binding.sources.some(s=>s.role==="evaluation"&&s.weight>0))throw new Error("Managed training requires a positively weighted evaluation Reward source for retained validation.");if(o.some(s=>s.kind==="custom_verifier"&&s.runtime==="sandbox_process"))throw new Error("Managed preparation requires a qualified isolated sandbox for process verifiers.");if(r.placement!=="remote"||t.environment.kind==="work"||t.capabilities.requiresState||t.capabilities.requiresTools||o.some(s=>s.kind==="human"||s.kind==="model_judge"&&(!s.model||s.calibrationStatus!=="passed"))||t.tasks.some(s=>s.privilegedContextRef!==null)||!n.rewardExecution.binding.sources.some(s=>s.role==="training"&&s.weight>0)||r.hasLearnedPreferenceReward)throw new Error("This Reward binding requires an additional managed execution adapter.");return n}i(YR,"resolveManagedTasksetReward");async function Vc(e,t,r){let n=await ot(e,t);if(!n)throw new Error("The Taskset has no published Reward binding.");let o=$e(n.binding,n.rewards);return async({grader:s,task:a,attempt:c,signal:d})=>{let l=t.tasks.find(f=>f.id===a.id);if(!l||y(l)!==y(a))throw new Error("Task differs from the selected immutable Taskset.");let p=null;if(t.environment.entrypoint===ce){if(!r)throw new Error("Tool grading requires the execution owner's artifact directory.");p=await xn({store:e,storeDir:r,taskset:t,task:a,attempt:c})}else if(a.privilegedContextRef!==null)throw new Error("This authored Taskset requires a private evaluator-context resolver.");let u=o.find(f=>f.id===s.id);if(u?.kind!=="custom_verifier")throw new Error("The verifier is absent from the published Reward binding.");let m=Qr.parse({id:a.id,clusterKey:a.clusterKey,split:a.split,input:a.input,expectedOutput:a.expectedOutput,policyVisibleContext:a.policyVisibleContext,privilegedContextRef:a.privilegedContextRef,artifactRefs:[],tags:a.tags});return yr({repository:e.learningRepository(),scope:t.profileId,grader:u,task:m,evidence:{output:c.output,artifactRefs:c.artifactRefs,runtimeEventRefs:c.runtimeEventRefs,infrastructureError:c.infrastructureError},evaluatorContext:p,signal:d})}}i(Vc,"createTasksetBindingVerifier");async function Tt(e,t,r){let n=r?Ee.parse(r):null;if(n&&n.id!==t)throw new Error("Taskset execution reference differs from the requested Taskset.");let o=n?await e.getTasksetRevision(n.id,n.revision):await e.getTaskset(t);if(!o||n&&(o.contentHash!==n.contentHash||et(o)!==n.contentHash))throw new Error("Taskset execution revision is unavailable or differs from its immutable hash.");return o}i(Tt,"requireLocalTasksetRevision");async function tT(e,t,r){let n=await e.releaseForTaskset(t);return n||$r({taskset:t,rewardExecution:r?await ot(r,t):void 0,adapterId:dn(t)}).tasksetRelease}i(tT,"requireReleasedTaskset");import{createHash as Rm}from"node:crypto";function Xc(e,t,r){if(t.metadata.importedPackageHash!==e.contentHash)throw new Error("The Work projection differs from the admitted published package.");let n=e.taskset.tasks.find(a=>a.id===r.id);if(!n||n.split!==r.split||y(r.metadata.portableTaskRecord)!==y(n))throw new Error("The Work task differs from its exact released population.");let o=0,s=(r.assets??[]).map(a=>{let c=n.artifactRefs.find(u=>u.id===a.id&&u.contentHash===a.sha256&&u.path===a.artifactRef),d=c&&e.files.find(u=>y(u.asset)===y(c));if(!c||!d||c.visibility!=="policy")throw new Error("The Work task requests an unavailable or private evaluator file.");let l=Buffer.from(bi(d));if(Rm("sha256").update(l).digest("hex")!==a.sha256||l.length!==a.sizeBytes||a.split!==r.split)throw new Error("The published Work input manifest changed.");if(o+=l.length,o>25e7)throw new Error("Published Work inputs exceed the admitted 250 MB ceiling.");return{...a,assetId:a.id,storageName:a.fileName,bytes:l,sizeBytes:l.length}});if(s.length!==n.artifactRefs.length)throw new Error("The exact policy-visible Work asset population is incomplete.");return s}i(Xc,"advancedPublishedWorkAssets");import{AsyncLocalStorage as Tm}from"node:async_hooks";var Zc=new Tm,wr=i(()=>Zc.getStore(),"currentScheduledAdmissionGuard");function lT(e,t){return Zc.run(e,t)}i(lT,"withScheduledAdmission");var Qt=class extends Error{constructor(r,n,o){super("The scheduled request was refused before provider transport.",{cause:o});this.executionId=r;this.requestId=n}executionId;requestId;static{i(this,"ScheduledTransportNotInvokedError")}},zc=class extends Error{constructor(r,n,o){super("The scheduled admission lost its exact owner lease before Run insertion.");this.scheduleId=r;this.operationId=n;this.configurationHash=o}scheduleId;operationId;configurationHash;static{i(this,"ScheduledAdmissionRejectedError")}};function bn(e,t){let r=t.scope==="arguments"?e.action?.arguments:e[t.scope];for(let n of t.path){if(!r||typeof r!="object"||!Object.hasOwn(r,n))throw new Error("environment_service_reference_missing");r=r[n]}return r}i(bn,"resolveValue");async function kr(e,t){if(!e.executionServices?.length)return t.controller(e);if(!Number.isSafeInteger(e.timeoutMs)||e.timeoutMs<1||e.timeoutMs>3e4)throw new Error("environment_timeout_invalid");G(e.value,4194304);let r=e.executionServices.map(c=>ci.parse(c));if(r.length>16)throw new Error("environment_service_limit");if(new Set(r.map(c=>c.id)).size!==r.length)throw new Error("environment_service_identity_collision");let n=Date.now(),o=new AbortController,s=e.signal?AbortSignal.any([e.signal,o.signal]):o.signal,a=setTimeout(()=>o.abort(new Error("environment_timeout")),e.timeoutMs);try{let c=Object.create(null);for(let l of r){if(s.throwIfAborted(),l.operation!==e.operation||l.operation==="step"&&l.toolName!==e.value.action?.name)throw new Error("environment_service_operation_mismatch");let p=Math.min(l.timeoutMs,e.timeoutMs-(Date.now()-n));if(p<1)throw new Error("environment_timeout");let u=new AbortController,m=AbortSignal.any([s,u.signal]),f=setTimeout(()=>u.abort(new Error("environment_service_timeout")),p),h=Date.now();try{if(l.kind==="sqlite.v1"){if(!t.sql)throw new Error("environment_sql_executor_required");let R=bn(e.value,l.sql);if(typeof R!="string"||!R.length||new TextEncoder().encode(R).byteLength>65536||R.includes("\0")){c[l.id]={status:"rejected",code:"invalid_submission"};continue}let w=Kr({schemaVersion:"openpond.sqlExecution.v1",snapshot:bn(e.value,l.snapshot),sql:R,maxRows:l.maxRows,maxResultBytes:l.maxResultBytes});c[l.id]=await t.sql({request:w,timeoutMs:e.timeoutMs,signal:m})}else{let R=bn(e.value,l.source),w=bn(e.value,l.cases);if(typeof R!="string"||new TextEncoder().encode(R).byteLength>524288){c[l.id]={status:"rejected",code:"invalid_submission"};continue}if(!Array.isArray(w)||!w.length||w.length>l.maxCases||w.some(x=>!x||typeof x!="object"||!Object.hasOwn(x,"input")))throw new Error("environment_service_cases_invalid");let k=[];for(let x of w){let C=p-(Date.now()-h);if(C<1&&(u.abort(new Error("environment_service_timeout")),m.throwIfAborted()),k.push(await t.candidate({source:R,exportName:l.exportName,value:structuredClone(x.input),timeoutMs:Math.max(1,C),maxResultBytes:l.maxResultBytes,deterministic:!0,errorPrefix:"candidate",signal:m})),new TextEncoder().encode(JSON.stringify({status:"completed",cases:k})).byteLength>l.maxResultBytes)throw new Bo("candidate_result_too_large")}c[l.id]={status:"completed",cases:k}}}catch(R){if(s.throwIfAborted(),u.signal.aborted)c[l.id]={status:"rejected",code:"timeout"};else if(R instanceof Bo)c[l.id]={status:"rejected",code:"execution_failed"};else throw R}finally{clearTimeout(f)}}s.throwIfAborted();let d=e.timeoutMs-(Date.now()-n);if(d<1)throw new Error("environment_timeout");return await t.controller({...e,executionServices:void 0,value:{...e.value,services:c},timeoutMs:d,signal:s})}finally{clearTimeout(a)}}i(kr,"executeEnvironmentWithServices");async function vm(e){let t=lr.parse(e.operation);return kr(e,{candidate:Jo,controller:i(async r=>Ft.parse(await Jo({...r,exportName:t,maxResultBytes:1572864,deterministic:!0,errorPrefix:"environment"})),"controller")})}i(vm,"executeJavaScriptEnvironment");var vt=class extends Error{static{i(this,"JavaScriptEnvironmentActionError")}code;constructor(t){super(`environment_${t}`),this.code=t,this.name="JavaScriptEnvironmentActionError"}};async function Yc(e){let t=li(e.definition),r=ue(e.asset,t.module);if(!Number.isSafeInteger(e.seed))throw new Error("environment_seed_invalid");let n=e.seed;G(e.input,1048576),G(e.initialState,t.maxStateBytes);let o=structuredClone(e.input),s=structuredClone(e.initialState),a=e.execute??vm,c=new AbortController,d=e.signal?AbortSignal.any([e.signal,c.signal]):c.signal,l={},p=0,u=!1,m=!1,f=null,h=[],R=null;async function w(x,C){if(u||m)throw new Error("environment_closed");if(f)throw new Error("environment_operation_in_progress");d.throwIfAborted(),C&&(G(C,262144),C=structuredClone(C));let A=y(l),T=C?t.tools.find(v=>v.name===C.name):null;if(x==="step"){if(p>=t.maxSteps)throw new vt("step_budget_exhausted");p++}let P=i((v,I)=>h.push({sequence:h.length,operation:x,toolName:C?.name??null,arguments:C?structuredClone(C.arguments):null,observation:v,beforeStateHash:A,afterStateHash:y(l),error:I}),"record");try{if(C&&!T)throw new vt("unknown_tool");if(C&&T&&!Ya(T.inputSchema,C.arguments).valid)throw new vt("invalid_arguments");let v=t.executionServices?.filter(E=>E.operation===x&&(x!=="step"||E.toolName===C?.name)),I=a({source:r,operation:x,value:{input:o,initialState:s,seed:n,state:structuredClone(l),sequence:p,action:C?structuredClone(C):null},timeoutMs:Math.min(t.operationTimeoutMs,T?.timeoutMs??t.operationTimeoutMs),signal:d,...v?.length?{executionServices:v}:{}});f=I;let S=Ft.parse(await I);if(d.throwIfAborted(),G(S.state,t.maxStateBytes),G(S.observation,t.maxObservationBytes),(x==="collect"||T?.sideEffect==="read")&&y(S.state)!==A)throw new Error("environment_read_changed_state");l=structuredClone(S.state);let N=structuredClone(S.observation);return P(N,null),{state:structuredClone(l),observation:N}}catch(v){throw P(null,v instanceof Error?v.message:"environment_execution_failed"),v}finally{f=null}}i(w,"invoke");async function k(){return R||(m=!0,c.abort(new Error("environment_destroyed")),R=(async()=>{try{try{await f}catch{}await a({source:r,operation:"destroy",value:{input:o,initialState:s,seed:n,state:structuredClone(l),sequence:p,action:null},timeoutMs:t.operationTimeoutMs})}finally{l={},u=!0}})(),R)}i(k,"destroy");try{await w("create");let x=await w("reset"),C=y(l),A=i(()=>{if(u)throw new Error("environment_closed");return{definition:{id:t.id,revision:t.revision,contentHash:t.contentHash},inputHash:y(o),seed:n,initialStateHash:C,finalStateHash:y(l),state:structuredClone(l),events:structuredClone(h)}},"snapshot");return{definition:structuredClone(t),observation:x.observation,async step(T){return(await w("step",T)).observation},async collect(){let T=await w("collect");return{...A(),observation:T.observation}},snapshot:A,destroy:k}}catch(x){try{await k()}catch{}throw x}}i(Yc,"createJavaScriptEnvironmentSession");var Em=g.string().trim().min(1).max(500),Sm=g.string().regex(/^[a-f0-9]{64}$/),Ko=g.object({kind:g.literal("model"),id:g.string().trim().min(1).max(191),taskId:Em,admissionHash:Sm,model:tc,instructions:g.string().max(262144),harness:Ka.optional(),input:g.record(g.string(),g.unknown()),policyVisibleContext:g.record(g.string(),g.unknown()),timeoutMs:g.number().int().positive().max(36e5),environment:g.discriminatedUnion("kind",[g.object({kind:g.literal("text")}).strict(),g.object({kind:g.literal("javascript"),definition:di,asset:Ga,initialState:g.record(g.string(),g.unknown()),seed:g.number().int().safe()}).strict()])}).strict(),MT=g.discriminatedUnion("kind",[Ko,g.object({kind:g.literal("profile"),request:g.unknown()}).strict()]);var Qc=g.string().trim().min(1).max(200),JT=g.object({receiptId:Qc,taskId:Qc,seed:g.string(),request:Ko}).strict(),M=class extends Error{constructor(r,n,o=409){super(n);this.code=r;this.status=o}code;status;static{i(this,"LocalExperimentError")}};async function _o(e,t=fn,r=!1){if(e.kind==="hosted_harness")return _o({kind:"hosted_chat",modelId:e.modelId,maxOutputTokens:4096,temperature:0,topP:1},t);if(e.kind!=="hosted_chat")throw new M("local_target_not_qualified","Select an explicit model target for local execution.",422);if(e.harness&&!r)throw new M("local_harness_not_qualified","This released Harness requires its native turn executor; it cannot run as a model-only case.",422);let n=await t();if(n.error)throw new M("local_model_catalog_unavailable",n.error,422);let o=n.models.find(m=>m.id===e.modelId);if(!o)throw new M("local_model_unavailable","The selected model is unavailable.",422);let s=Gc(o.raw),a=En(s),c=Gc(s.capabilities).samplingParameters===!0;if(!c&&(e.temperature!==0||e.topP!==1))throw new M("local_sampling_unsupported","This model uses provider-managed sampling. Custom temperature or top P requires an explicit supported capability.",422);let d=Kc(s.context_window),l=Kc(s.output_limit);if(e.maxOutputTokens>l)throw new M("local_model_output_limit","The model cannot accept the configured output limit.",422);let p={providerId:"openpond",modelId:e.modelId,maxOutputTokens:e.maxOutputTokens,...c?{temperature:e.temperature,topP:e.topP}:{},messages:e.messages??[]},u=(d*Math.max(a.inputUsdPerMillionTokens,a.cachedInputUsdPerMillionTokens)+e.maxOutputTokens*a.outputUsdPerMillionTokens)/1e6;if(!(u>0))throw new M("local_model_charge_unknown","The model must publish an enforceable positive request ceiling.",422);return{model:{...p,configurationHash:y({configuration:p,contextWindow:d,outputLimit:l,pricing:a})},pricing:a,maximumChargeUsd:u}}i(_o,"prepareLocalExperimentModel");function $T(e){let t=e.admission.streamFactory?.(e)??e.admission.stream??e.stream??hn;return async function*(r){if(!r.requestId)throw new M("local_request_identity_missing","Every local model dispatch requires a stable request identity.");let n=e.admission.model;if(r.model!==n.modelId||r.maxTokens!==n.maxOutputTokens||r.temperature!==n.temperature||r.topP!==n.topP)throw new M("local_model_configuration_conflict","The native model request changed its admitted model, output limit or sampling configuration.",422);let o=wr();o?.assertExecution(e.executionId);let s={teamId:e.teamId,id:e.executionId,ownerId:e.ownerId,requestId:r.requestId};await e.store.reserveLocalCharge({...s,caseId:e.caseId,maximumUsd:e.admission.maximumChargeUsd}),r.signal?.aborted&&(await e.store.settleLocalCharge({...s,costUsd:null,usage:null,notDispatched:!0}),r.signal.throwIfAborted());try{await e.store.markLocalChargeDispatched(s.teamId,s.id,s.requestId,s.ownerId)}catch(p){throw o&&await e.store.settleLocalCharge({...s,costUsd:null,usage:null,notDispatched:!0}),p}await e.store.appendLocalExperimentEvent({...s,caseId:e.caseId,type:"model.dispatch",payload:{requestId:s.requestId,model:r.model,messages:r.messages}});let a=null,c=!1,d=!1,l;try{for await(let p of t(r)){d=!0,p.type==="usage"&&(a=p.usage),p.type==="finish"&&(c=!0);let u=p.type==="text_delta"?{requestId:s.requestId,text:p.text}:p.type==="tool_call_delta"?{requestId:s.requestId,toolCalls:p.toolCalls}:p.type==="usage"?{requestId:s.requestId,usage:Ze(p.usage)}:p.type==="finish"?{requestId:s.requestId,finishReason:p.finishReason}:null;u&&await e.store.appendLocalExperimentEvent({...s,caseId:e.caseId,type:`model.${p.type}`,payload:u}),yield p}}catch(p){throw!d&&p instanceof Qt&&p.executionId===s.id&&p.requestId===s.requestId&&(l=p),p}finally{let p=Ze(a),u=e.admission.pricing&&c&&p.promptTokens!==null&&p.completionTokens!==null?nt(a,e.admission.pricing):null;await e.store.settleLocalCharge({...s,costUsd:u,confirmedTransportNotInvoked:l,usage:a===null?null:{promptTokens:p.promptTokens,completionTokens:p.completionTokens,cachedPromptTokens:p.cachedPromptTokens,uncachedPromptTokens:p.uncachedPromptTokens}})}}}i($T,"createLocalBudgetedModelStream");function Gc(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}i(Gc,"record");function Kc(e){if(typeof e!="number"||!Number.isSafeInteger(e)||e<=0)throw new M("local_model_bound_unknown","The model catalog is missing an enforceable context/output bound.",422);return e}i(Kc,"positive");import{AsyncLocalStorage as xm}from"node:async_hooks";import bm from"node:path";var _c=new xm;function $c(){return _c.getStore()}i($c,"currentAdvancedRefinerBoundary");function dv(e){let t=fi(bm.join(e.storeDir,"library","harnesses","advanced-refiner-paid-calls.sqlite"));t.exec(`CREATE TABLE IF NOT EXISTS advanced_refiner_budgets(id TEXT PRIMARY KEY,actor_id TEXT NOT NULL,team_id TEXT NOT NULL,pin_hash TEXT NOT NULL,maximum_spend REAL NOT NULL,maximum_steps INTEGER NOT NULL,expires_at TEXT NOT NULL);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{b as H}from"./chunk-O7VGFMDO.js";import{a as L}from"./chunk-T5LE6R5S.js";import{F as g,K as N,L as B}from"./chunk-7K72KS5C.js";import{qa as _}from"./chunk-7MXZJQS7.js";import{O as x,R as V,S as F,Y as R}from"./chunk-XDMUD4FW.js";import{ta as I}from"./chunk-IKWDL3RB.js";import{Ca as b}from"./chunk-QRWPEW3Z.js";import{ma as E,na as C,oa as y}from"./chunk-PJM2G7SG.js";import{Ga as A}from"./chunk-SDEDAHV6.js";import{c as D,e as v,f as U,g as M,i as O,qa as T}from"./chunk-DALJMSJG.js";import{m as p}from"./chunk-NNF6KCHD.js";import{b as o}from"./chunk-ES2ISFJC.js";import{a as w,c as P,f as j,h as c}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";import h from"node:path";import{AsyncLocalStorage as ee}from"node:async_hooks";import{promises as z}from"node:fs";var J=new ee;function fe(r,e=!1){let t=J.getStore();t&&(e&&(t.length=0),t.push(r))}i(fe,"onStartupFailure");async function ge(r,e){await T(r);let t;try{t=await M(h.join(c(r).runtime,"server-owner"),100)}catch(n){if(n instanceof P&&n.issue.code==="STORAGE_BUSY"){let a=await O(h.join(c(r).runtime,"endpoint.json"),()=>null);throw new P({code:"RUNTIME_ALREADY_RUNNING",path:r,message:"An OpenPond runtime already owns this home.",action:a?.url?`Connect to the existing runtime at ${a.url}, or stop it before starting another.`:"Stop the existing runtime before starting another with this home."})}throw n}let s=[];try{let n=await w(r,()=>J.run(s,e)),a=n.close.bind(n);s.length=0;let d;return{...n,close:i(()=>d??=(async()=>{try{await w(r,a)}finally{await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(n){try{for(let a of s.reverse())await Promise.resolve().then(()=>w(r,a)).catch(()=>{});await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw n}}i(ge,"ownHomeRuntime");async function he(r,e,t){await v(h.join(c(r).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:e,serverId:t}))}i(he,"publishRuntimeEndpoint");function ye(r){return te({runtime:B(r.ports),close:r.close})}i(ye,"createAppServer");function te(r){let e=!1;return{runtime:r.runtime,close:i(async()=>{e||(e=!0,await r.close?.())},"close")}}i(te,"attachAppServer");async function Pe(r){let e=typeof r.appServer=="function"?null:r.appServer;try{await N({host:e?.runtime??(async()=>(e=await r.appServer(),e.runtime)),readable:r.readable,writable:r.writable,hostStorageClient:r.hostStorageClient})}finally{await e?.close()}}i(Pe,"runAppServerJsonl");import S from"node:path";import{lstat as re,readFile as oe,realpath as $}from"node:fs/promises";import{randomUUID as se}from"node:crypto";var ne=o.object({id:o.string(),version:o.string(),contentHash:o.string().regex(/^[a-f0-9]{64}$/),feedbackKey:o.string(),release:o.object({id:o.string(),revision:o.union([o.string(),o.number()]),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().nullable()}).strict(),G=o.object({binding:C,packageValue:o.unknown(),graders:o.array(ne).max(100),actualGrading:o.object({pass:o.unknown(),evidence:o.unknown()}).strict().optional(),sourceCandidate:E.optional()}).strict();async function Me(r,e){let t=await $(e),s=S.resolve(r);if(S.dirname(s)!==t||await $(s)!==s)throw new Error("External Dataset package escaped its private owner home.");let n=await re(s);if(!n.isFile()||n.isSymbolicLink()||n.size>32*1024*1024)throw new Error("External Dataset package is not a bounded regular file.");let a=G.parse(JSON.parse(new TextDecoder("utf8",{fatal:!0}).decode(await oe(s))));return a.binding=y(a.binding),a.packageValue=I({...a,packageValue:b(a.packageValue)}),a}i(Me,"readHostProfileExternalDataset");async function Oe(r){let e=G.parse(r.value),t=y(e.binding),s=r.release,n={id:s.harnessRelease.id,contentHash:s.harnessRelease.contentHash};if(t.protectedProfileClosureHash!==p(s.harnessRelease.files.filter(l=>l.visibility!=="policy").map(l=>({path:l.path,asset:l}))))throw new Error("The external Dataset protected Profile closure changed.");if(e.sourceCandidate){let l=await _({workspaceId:typeof s.agentSnapshot.metadata.workspaceId=="string"?s.agentSnapshot.metadata.workspaceId:s.workspaceId,sourceDir:S.join(s.bundlePath,"source")});if(p(e.sourceCandidate.harnessRelease)!==p(n)||L(l).protectedClosureHash!==e.sourceCandidate.protectedClosureHash)throw new Error("The external Dataset candidate differs from its retained frozen compiled source.")}let a=i(async l=>{if(o.object({authorized:o.literal(!0),bindingHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(await r.client.request({contractVersion:1,requestId:se(),operation:"profile.externalDataset.authorize",params:{...l,bindingHash:t.contentHash}})).bindingHash!==t.contentHash)throw new Error("The host authorized another external Dataset binding.")},"authorize");return{authorize:a,resolveExternalDataset:i(async(l,m)=>{if(await a(),p(l)!==p(t)||m.profileRef.profileId!==t.profileId||m.sourceRevision!==r.sourceRevision||p(m.harnessRelease)!==p(n))throw new Error("External Dataset requested another actual Profile source or recipe.");let f=I({...e,binding:l,packageValue:b(e.packageValue)});return{binding:t,packageValue:f,authorize:a}},"resolveExternalDataset"),sourceCandidate:e.sourceCandidate}}i(Oe,"createHostProfileExternalDataset");import{randomBytes as ae}from"node:crypto";function Ne(){return j()}i(Ne,"appDataDir");function Be(r){return c(r).config}i(Be,"providersConfigPath");function Le(r){return c(r).credentials}i(Le,"providerSecretsConfigPath");function ze(r){return c(r).key}i(ze,"providerSecretsKeyPath");async function Je(r){let e=c(r).token;return U(e,async()=>{let t=(await D(e))?.trim(),s=process.env.OPENPOND_APP_TOKEN||t||ae(32).toString("base64url");return s!==t&&await v(e,s),{token:s,tokenFile:e}})}i(Je,"ensureCapabilityToken");import u from"node:path";import{readFile as W}from"node:fs/promises";var q=o.object({profileId:o.string().min(1),sourceRevision:o.string().min(1),repositoryId:o.string().min(1),harnessRelease:o.object({id:o.string().min(1),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),hostExecution:o.object({conversationId:o.string().min(1),turnId:o.string().min(1)}).strict().optional(),workspaceId:o.string().min(1),assetsPath:o.string().min(1).refine(u.isAbsolute)}).strict();async function Ze(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile release changed after admission.");let n=s.release.harnessRelease.metadata.profile;if(!n||typeof n!="object"||n.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile provenance differs from admitted release.");return{profile:F(),profileLibrary:V()}}i(Ze,"loadHostedProfileStateAndLibrary");async function et(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile workflow release is unavailable.");let n=s.release.harnessRelease.metadata.profile;if(n?.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile workflow provenance changed.");let a=t.harnessRelease,d={source:"openpond_git",repositoryId:t.repositoryId,profileId:t.profileId};if(!s.release.harnessRelease.files.some(f=>f.path==="workflows/catalog.json"))return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:[]};let l=u.join(s.release.bundlePath,"source","workflows"),m=A({agentSnapshot:s.release.agentSnapshot,harnessRelease:s.release.harnessRelease,catalogBytes:await W(u.join(l,"catalog.json")),actionBytes:await W(u.join(l,"actions.json"))});return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:m.catalog.workflows.map(f=>({workflow:f,binding:{schemaVersion:"openpond.profileWorkflowBinding.v1",profileId:t.profileId,sourceRevision:t.sourceRevision,harnessRelease:a,catalogHash:m.catalogHash,workflowId:f.id}}))}}i(et,"listHostedProfileWorkflows");import{createHash as ie,randomUUID as k}from"node:crypto";var K=o.object({approval:x,revision:o.number().int().positive()}).strict(),Q=o.object({record:R}).strict(),le=o.object({startedAt:o.string().min(1),requestOrdinal:o.number().int().nonnegative(),id:o.string().min(1)}).strict(),ce=o.object({records:o.array(R).max(200),nextBefore:le.nullable()}).strict(),Y=1e4,X=class{constructor(e){this.client=e}client;static{i(this,"HostedApprovalStorage")}async readApproval(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"approval/get",params:{approvalId:e}});return t===null?null:K.parse(t)}async getApproval(e){return(await this.readApproval(e))?.approval??null}async putApproval(e){let t=x.parse(e.approval);if(!e.requestId.trim())throw new Error("Approval mutation requires a stable request ID.");return K.parse(await this.client.request({contractVersion:g,requestId:e.requestId,operation:"approval/upsert",params:{approval:t,expectedRevision:e.expectedRevision}}))}},Z=class{constructor(e){this.client=e}client;static{i(this,"HostedModelUsageStorage")}async upsertModelUsageRecord(e){let t=R.parse(e),s=ie("sha256").update(JSON.stringify(t)).digest("hex"),n=await this.client.request({contractVersion:g,requestId:`usage:${s}`,operation:"usage/upsert",params:{record:t}}),a=Q.parse(n).record;if(a.requestId!==t.requestId)throw new Error("Host usage upsert changed request identity.");return a}async getModelUsageRecordByRequestId(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"usage/getByRequestId",params:{requestId:e}});return t===null?null:Q.parse(t).record}async listModelUsageRecords(e={}){let t=e.limit===void 0||e.limit>=Y,s=e.limit===void 0?Y:Math.max(1,Math.min(1e4,Math.trunc(e.limit))),n={...e.sessionId?{sessionId:e.sessionId}:{},...e.turnId?{turnId:e.turnId}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...e.startedAtFrom?{startedAtFrom:e.startedAtFrom}:{},...e.startedAtTo?{startedAtTo:e.startedAtTo}:{},...e.visibility&&e.visibility!=="all"?{visibility:e.visibility}:{},...e.status&&e.status!=="all"?{status:e.status}:{}},a=[],d=null;for(;a.length<s+(t?1:0);){let l=ce.parse(await this.client.request({contractVersion:g,requestId:k(),operation:"usage/page",params:{query:n,before:d,limit:Math.min(200,s+(t?1:0)-a.length)}}));if(a.push(...l.records),a.length>s)throw new Error(`Hosted usage query exceeds ${s} rows; narrow its filters or use a streamed aggregation.`);if(l.nextBefore===null)break;if(l.records.length===0||JSON.stringify(l.nextBefore)===JSON.stringify(d))throw new Error("Host usage cursor did not advance.");d=l.nextBefore}return a}async listModelUsageRecordsComplete(e={}){return this.listModelUsageRecords(e)}};export{fe as a,ge as b,he as c,ye as d,Pe as e,Me as f,Oe as g,Ne as h,Be as i,Le as j,ze as k,Je as l,q as m,Ze as n,et as o,X as p,Z as q};
|
|
2
|
+
import{b as H}from"./chunk-GCOUYYHG.js";import{a as L}from"./chunk-T5LE6R5S.js";import{F as g,K as N,L as B}from"./chunk-7ZG3IT7C.js";import{qa as _}from"./chunk-4TZHH5FC.js";import{O as x,R as V,S as F,Y as R}from"./chunk-2JO2KWT3.js";import{ta as I}from"./chunk-IKWDL3RB.js";import{Ca as b}from"./chunk-QRWPEW3Z.js";import{ma as E,na as C,oa as y}from"./chunk-PJM2G7SG.js";import{Ga as A}from"./chunk-SDEDAHV6.js";import{c as D,e as v,f as U,g as M,i as O,qa as T}from"./chunk-DALJMSJG.js";import{m as p}from"./chunk-NNF6KCHD.js";import{b as o}from"./chunk-ES2ISFJC.js";import{a as w,c as P,f as j,h as c}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";import h from"node:path";import{AsyncLocalStorage as ee}from"node:async_hooks";import{promises as z}from"node:fs";var J=new ee;function fe(r,e=!1){let t=J.getStore();t&&(e&&(t.length=0),t.push(r))}i(fe,"onStartupFailure");async function ge(r,e){await T(r);let t;try{t=await M(h.join(c(r).runtime,"server-owner"),100)}catch(n){if(n instanceof P&&n.issue.code==="STORAGE_BUSY"){let a=await O(h.join(c(r).runtime,"endpoint.json"),()=>null);throw new P({code:"RUNTIME_ALREADY_RUNNING",path:r,message:"An OpenPond runtime already owns this home.",action:a?.url?`Connect to the existing runtime at ${a.url}, or stop it before starting another.`:"Stop the existing runtime before starting another with this home."})}throw n}let s=[];try{let n=await w(r,()=>J.run(s,e)),a=n.close.bind(n);s.length=0;let d;return{...n,close:i(()=>d??=(async()=>{try{await w(r,a)}finally{await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(n){try{for(let a of s.reverse())await Promise.resolve().then(()=>w(r,a)).catch(()=>{});await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw n}}i(ge,"ownHomeRuntime");async function he(r,e,t){await v(h.join(c(r).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:e,serverId:t}))}i(he,"publishRuntimeEndpoint");function ye(r){return te({runtime:B(r.ports),close:r.close})}i(ye,"createAppServer");function te(r){let e=!1;return{runtime:r.runtime,close:i(async()=>{e||(e=!0,await r.close?.())},"close")}}i(te,"attachAppServer");async function Pe(r){let e=typeof r.appServer=="function"?null:r.appServer;try{await N({host:e?.runtime??(async()=>(e=await r.appServer(),e.runtime)),readable:r.readable,writable:r.writable,hostStorageClient:r.hostStorageClient})}finally{await e?.close()}}i(Pe,"runAppServerJsonl");import S from"node:path";import{lstat as re,readFile as oe,realpath as $}from"node:fs/promises";import{randomUUID as se}from"node:crypto";var ne=o.object({id:o.string(),version:o.string(),contentHash:o.string().regex(/^[a-f0-9]{64}$/),feedbackKey:o.string(),release:o.object({id:o.string(),revision:o.union([o.string(),o.number()]),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().nullable()}).strict(),G=o.object({binding:C,packageValue:o.unknown(),graders:o.array(ne).max(100),actualGrading:o.object({pass:o.unknown(),evidence:o.unknown()}).strict().optional(),sourceCandidate:E.optional()}).strict();async function Me(r,e){let t=await $(e),s=S.resolve(r);if(S.dirname(s)!==t||await $(s)!==s)throw new Error("External Dataset package escaped its private owner home.");let n=await re(s);if(!n.isFile()||n.isSymbolicLink()||n.size>32*1024*1024)throw new Error("External Dataset package is not a bounded regular file.");let a=G.parse(JSON.parse(new TextDecoder("utf8",{fatal:!0}).decode(await oe(s))));return a.binding=y(a.binding),a.packageValue=I({...a,packageValue:b(a.packageValue)}),a}i(Me,"readHostProfileExternalDataset");async function Oe(r){let e=G.parse(r.value),t=y(e.binding),s=r.release,n={id:s.harnessRelease.id,contentHash:s.harnessRelease.contentHash};if(t.protectedProfileClosureHash!==p(s.harnessRelease.files.filter(l=>l.visibility!=="policy").map(l=>({path:l.path,asset:l}))))throw new Error("The external Dataset protected Profile closure changed.");if(e.sourceCandidate){let l=await _({workspaceId:typeof s.agentSnapshot.metadata.workspaceId=="string"?s.agentSnapshot.metadata.workspaceId:s.workspaceId,sourceDir:S.join(s.bundlePath,"source")});if(p(e.sourceCandidate.harnessRelease)!==p(n)||L(l).protectedClosureHash!==e.sourceCandidate.protectedClosureHash)throw new Error("The external Dataset candidate differs from its retained frozen compiled source.")}let a=i(async l=>{if(o.object({authorized:o.literal(!0),bindingHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(await r.client.request({contractVersion:1,requestId:se(),operation:"profile.externalDataset.authorize",params:{...l,bindingHash:t.contentHash}})).bindingHash!==t.contentHash)throw new Error("The host authorized another external Dataset binding.")},"authorize");return{authorize:a,resolveExternalDataset:i(async(l,m)=>{if(await a(),p(l)!==p(t)||m.profileRef.profileId!==t.profileId||m.sourceRevision!==r.sourceRevision||p(m.harnessRelease)!==p(n))throw new Error("External Dataset requested another actual Profile source or recipe.");let f=I({...e,binding:l,packageValue:b(e.packageValue)});return{binding:t,packageValue:f,authorize:a}},"resolveExternalDataset"),sourceCandidate:e.sourceCandidate}}i(Oe,"createHostProfileExternalDataset");import{randomBytes as ae}from"node:crypto";function Ne(){return j()}i(Ne,"appDataDir");function Be(r){return c(r).config}i(Be,"providersConfigPath");function Le(r){return c(r).credentials}i(Le,"providerSecretsConfigPath");function ze(r){return c(r).key}i(ze,"providerSecretsKeyPath");async function Je(r){let e=c(r).token;return U(e,async()=>{let t=(await D(e))?.trim(),s=process.env.OPENPOND_APP_TOKEN||t||ae(32).toString("base64url");return s!==t&&await v(e,s),{token:s,tokenFile:e}})}i(Je,"ensureCapabilityToken");import u from"node:path";import{readFile as W}from"node:fs/promises";var q=o.object({profileId:o.string().min(1),sourceRevision:o.string().min(1),repositoryId:o.string().min(1),harnessRelease:o.object({id:o.string().min(1),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),hostExecution:o.object({conversationId:o.string().min(1),turnId:o.string().min(1)}).strict().optional(),workspaceId:o.string().min(1),assetsPath:o.string().min(1).refine(u.isAbsolute)}).strict();async function Ze(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile release changed after admission.");let n=s.release.harnessRelease.metadata.profile;if(!n||typeof n!="object"||n.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile provenance differs from admitted release.");return{profile:F(),profileLibrary:V()}}i(Ze,"loadHostedProfileStateAndLibrary");async function et(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile workflow release is unavailable.");let n=s.release.harnessRelease.metadata.profile;if(n?.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile workflow provenance changed.");let a=t.harnessRelease,d={source:"openpond_git",repositoryId:t.repositoryId,profileId:t.profileId};if(!s.release.harnessRelease.files.some(f=>f.path==="workflows/catalog.json"))return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:[]};let l=u.join(s.release.bundlePath,"source","workflows"),m=A({agentSnapshot:s.release.agentSnapshot,harnessRelease:s.release.harnessRelease,catalogBytes:await W(u.join(l,"catalog.json")),actionBytes:await W(u.join(l,"actions.json"))});return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:m.catalog.workflows.map(f=>({workflow:f,binding:{schemaVersion:"openpond.profileWorkflowBinding.v1",profileId:t.profileId,sourceRevision:t.sourceRevision,harnessRelease:a,catalogHash:m.catalogHash,workflowId:f.id}}))}}i(et,"listHostedProfileWorkflows");import{createHash as ie,randomUUID as k}from"node:crypto";var K=o.object({approval:x,revision:o.number().int().positive()}).strict(),Q=o.object({record:R}).strict(),le=o.object({startedAt:o.string().min(1),requestOrdinal:o.number().int().nonnegative(),id:o.string().min(1)}).strict(),ce=o.object({records:o.array(R).max(200),nextBefore:le.nullable()}).strict(),Y=1e4,X=class{constructor(e){this.client=e}client;static{i(this,"HostedApprovalStorage")}async readApproval(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"approval/get",params:{approvalId:e}});return t===null?null:K.parse(t)}async getApproval(e){return(await this.readApproval(e))?.approval??null}async putApproval(e){let t=x.parse(e.approval);if(!e.requestId.trim())throw new Error("Approval mutation requires a stable request ID.");return K.parse(await this.client.request({contractVersion:g,requestId:e.requestId,operation:"approval/upsert",params:{approval:t,expectedRevision:e.expectedRevision}}))}},Z=class{constructor(e){this.client=e}client;static{i(this,"HostedModelUsageStorage")}async upsertModelUsageRecord(e){let t=R.parse(e),s=ie("sha256").update(JSON.stringify(t)).digest("hex"),n=await this.client.request({contractVersion:g,requestId:`usage:${s}`,operation:"usage/upsert",params:{record:t}}),a=Q.parse(n).record;if(a.requestId!==t.requestId)throw new Error("Host usage upsert changed request identity.");return a}async getModelUsageRecordByRequestId(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"usage/getByRequestId",params:{requestId:e}});return t===null?null:Q.parse(t).record}async listModelUsageRecords(e={}){let t=e.limit===void 0||e.limit>=Y,s=e.limit===void 0?Y:Math.max(1,Math.min(1e4,Math.trunc(e.limit))),n={...e.sessionId?{sessionId:e.sessionId}:{},...e.turnId?{turnId:e.turnId}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...e.startedAtFrom?{startedAtFrom:e.startedAtFrom}:{},...e.startedAtTo?{startedAtTo:e.startedAtTo}:{},...e.visibility&&e.visibility!=="all"?{visibility:e.visibility}:{},...e.status&&e.status!=="all"?{status:e.status}:{}},a=[],d=null;for(;a.length<s+(t?1:0);){let l=ce.parse(await this.client.request({contractVersion:g,requestId:k(),operation:"usage/page",params:{query:n,before:d,limit:Math.min(200,s+(t?1:0)-a.length)}}));if(a.push(...l.records),a.length>s)throw new Error(`Hosted usage query exceeds ${s} rows; narrow its filters or use a streamed aggregation.`);if(l.nextBefore===null)break;if(l.records.length===0||JSON.stringify(l.nextBefore)===JSON.stringify(d))throw new Error("Host usage cursor did not advance.");d=l.nextBefore}return a}async listModelUsageRecordsComplete(e={}){return this.listModelUsageRecords(e)}};export{fe as a,ge as b,he as c,ye as d,Pe as e,Me as f,Oe as g,Ne as h,Be as i,Le as j,ze as k,Je as l,q as m,Ze as n,et as o,X as p,Z as q};
|