openpond 0.2.51 → 0.2.52

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.
Files changed (99) hide show
  1. package/dist/app-server.js +1 -1
  2. package/dist/chunks/{app-server-runtime-4YKIZB22.js → app-server-runtime-NITNSHYS.js} +1 -1
  3. package/dist/chunks/{chunk-42GOV5ZU.js → chunk-AV3WI7JZ.js} +1 -1
  4. package/dist/chunks/{chunk-OC6UWKBL.js → chunk-CFLMKFOE.js} +1 -1
  5. package/dist/chunks/{chunk-UBFRWC6I.js → chunk-FQZFLNLY.js} +1 -1
  6. package/dist/chunks/{chunk-JCCU3VFK.js → chunk-HJEY5LBD.js} +1 -1
  7. package/dist/chunks/{chunk-TBNBCOW7.js → chunk-L3V4QKRV.js} +1 -1
  8. package/dist/chunks/chunk-PVSUQGWK.js +9 -0
  9. package/dist/chunks/{chunk-ZCWHVLJ4.js → chunk-T5T7NCHJ.js} +1 -1
  10. package/dist/chunks/{chunk-2ZJJFBIA.js → chunk-USMZT5FZ.js} +12 -12
  11. package/dist/chunks/{chunk-KXEG7HCG.js → chunk-XC7AHL57.js} +114 -113
  12. package/dist/chunks/{chunk-O7VGFMDO.js → chunk-ZBZBV5TB.js} +1 -1
  13. package/dist/chunks/{cli-ZLDLOKPL.js → cli-ZYFSCHZK.js} +1 -1
  14. package/dist/chunks/{dist-BLBZENVB.js → dist-5VFPYEIV.js} +1 -1
  15. package/dist/chunks/{hosted-experiment-improvement-NTYYSPQX.js → hosted-experiment-improvement-MGBPXXW2.js} +1 -1
  16. package/dist/chunks/{hosted-harness-runtime-FZZLWLBR.js → hosted-harness-runtime-WOLADXXP.js} +1 -1
  17. package/dist/chunks/{hosted-profile-compiler-JODGZCA7.js → hosted-profile-compiler-NBMUCZVS.js} +1 -1
  18. package/dist/chunks/{hosted-profile-evaluation-preparation-F2SPAEKK.js → hosted-profile-evaluation-preparation-I6H6RFT6.js} +1 -1
  19. package/dist/chunks/{src-STK4YHBI.js → src-MGP3OYHL.js} +115 -115
  20. package/dist/chunks/{workspaces-XIQNPAP7.js → workspaces-MFZ3OO6O.js} +1 -1
  21. package/dist/cli.js +1 -1
  22. package/dist/web/assets/App-Dg6mZIQk.js +234 -0
  23. package/dist/web/assets/{AppDialog-1iGodoot.js → AppDialog-gcj3rrTZ.js} +1 -1
  24. package/dist/web/assets/{AppTerminalPanel-udtBdWFn.js → AppTerminalPanel-Be-E4qZF.js} +2 -2
  25. package/dist/web/assets/{AppsView-DhKsU4yi.js → AppsView-BdyPNSpT.js} +1 -1
  26. package/dist/web/assets/{BrowserSidebar-BnOyqIQT.js → BrowserSidebar-CcQxU0uO.js} +1 -1
  27. package/dist/web/assets/{CartesianChart-C24DAywn.js → CartesianChart-CN5hB6rV.js} +1 -1
  28. package/dist/web/assets/{CollaborationTabs-DgmOF5Fe.js → CollaborationTabs-BiDPHgXG.js} +1 -1
  29. package/dist/web/assets/{CommandMenu-CUNGtHwS.js → CommandMenu-B2qJCgWH.js} +1 -1
  30. package/dist/web/assets/{CommunityView-CE7qeJnr.js → CommunityView-D1aOQKfS.js} +1 -1
  31. package/dist/web/assets/{ComposerCreateImproveStrip-BixNsg2a.js → ComposerCreateImproveStrip-f1tdD0QS.js} +1 -1
  32. package/dist/web/assets/{GetStartedView-B8gCwmBX.js → GetStartedView-CPYs0fYN.js} +1 -1
  33. package/dist/web/assets/{HostedModelLearningReview-CitgUNfC.js → HostedModelLearningReview-DVfJyUW_.js} +1 -1
  34. package/dist/web/assets/{HostedModelLearningSettings-WUaqzNsa.js → HostedModelLearningSettings-IEKRXOkG.js} +1 -1
  35. package/dist/web/assets/{LabModelVersionDetailPage-Cx0kL69J.js → LabModelVersionDetailPage-DkIa0oG_.js} +1 -1
  36. package/dist/web/assets/{LabSkillSidebar-DRggqZ1j.js → LabSkillSidebar-BUlU1Ti-.js} +1 -1
  37. package/dist/web/assets/{LabsRoute-BujTZhqC.js → LabsRoute-8cKFNq19.js} +4 -4
  38. package/dist/web/assets/{MainChatThread-CyA_644R.js → MainChatThread-C5GwaIl_.js} +2 -2
  39. package/dist/web/assets/MainPane-SMqq5YAM.js +19 -0
  40. package/dist/web/assets/{MarkdownText-DJI5LwT0.js → MarkdownText-CLnvdLVg.js} +21 -21
  41. package/dist/web/assets/{NativeSkillSidebar-CkFpWxjd.js → NativeSkillSidebar-B9bVb00x.js} +1 -1
  42. package/dist/web/assets/{NewExperienceSwitcher-DXcRHHsu.js → NewExperienceSwitcher-CelgG7Ua.js} +1 -1
  43. package/dist/web/assets/{NewProjectDialog-gDzX_ZIJ.js → NewProjectDialog-eEnsg9s2.js} +1 -1
  44. package/dist/web/assets/{OutputsPage-J_k-_N82.js → OutputsPage-ByvsTUW-.js} +1 -1
  45. package/dist/web/assets/{ProjectsPage-BsyZmvlg.js → ProjectsPage-Cl2zFh8X.js} +1 -1
  46. package/dist/web/assets/{RightChatPanelStack-Bz8puMUB.js → RightChatPanelStack-MnGscF87.js} +1 -1
  47. package/dist/web/assets/{RightSidebarHomePanel-DmorYb6p.js → RightSidebarHomePanel-C6NXMYuy.js} +1 -1
  48. package/dist/web/assets/{ScheduledWorkPage-BFDzQUyL.js → ScheduledWorkPage-DCb6d7Lg.js} +1 -1
  49. package/dist/web/assets/{SettingsView-BB7wCdbr.js → SettingsView-BMFfrxmo.js} +3 -3
  50. package/dist/web/assets/{TeamChatView-CZ3b7rq2.js → TeamChatView-DW_v2B9E.js} +1 -1
  51. package/dist/web/assets/{TerminalOverlay-Ck43Qri3.js → TerminalOverlay-BJ7qsr9F.js} +1 -1
  52. package/dist/web/assets/{TrainingCreationPanel-ejqPZm3g.js → TrainingCreationPanel-GSIwP6f1.js} +1 -1
  53. package/dist/web/assets/{TrainingDraftPanel-Cy2AQxxL.js → TrainingDraftPanel-DorY6I29.js} +1 -1
  54. package/dist/web/assets/{UsageSettingsSection-B7nyMItm.js → UsageSettingsSection-DmzStI9q.js} +1 -1
  55. package/dist/web/assets/{WorkSidebarPanel-BfjAc097.js → WorkSidebarPanel-zsJrGaaL.js} +1 -1
  56. package/dist/web/assets/WorkspaceDiffPanel-CiFsZjMm.js +14 -0
  57. package/dist/web/assets/{WorkspaceEnvironmentMenu-B-K9XgFB.js → WorkspaceEnvironmentMenu-vJw9hE0y.js} +1 -1
  58. package/dist/web/assets/{WorkspaceGitDialogs-BJVFx_L3.js → WorkspaceGitDialogs-BpL-xtRX.js} +1 -1
  59. package/dist/web/assets/{WorkspaceMonacoEditor-p-FWMXoZ.js → WorkspaceMonacoEditor-CJ3x0GHH.js} +3 -3
  60. package/dist/web/assets/{arrow-up-right-CFGI2YSt.js → arrow-up-right-C60QSULo.js} +1 -1
  61. package/dist/web/assets/{chunk-UHVJOMWN-BAlur2vw.js → chunk-UHVJOMWN-BxgPi0yP.js} +1 -1
  62. package/dist/web/assets/{clipboard-DIIxBort.js → clipboard-QIy0Jd_K.js} +1 -1
  63. package/dist/web/assets/{cloud-upload-BaQFNCTp.js → cloud-upload-B9L-_gy0.js} +1 -1
  64. package/dist/web/assets/{cssMode-6LOkSggB.js → cssMode-ffPyPUW9.js} +1 -1
  65. package/dist/web/assets/{folder-open-DZSxfPtr.js → folder-open-BFy7KXWm.js} +1 -1
  66. package/dist/web/assets/{folder-plus-21v4D_Vx.js → folder-plus-C3iGtUOI.js} +1 -1
  67. package/dist/web/assets/{git-commit-horizontal-CgGixL64.js → git-commit-horizontal-DsTniKvi.js} +1 -1
  68. package/dist/web/assets/{htmlMode-B5uRraNd.js → htmlMode-7ytlsiyK.js} +1 -1
  69. package/dist/web/assets/{index-DOMrqhcz.js → index-BK8GmZmB.js} +2 -2
  70. package/dist/web/assets/index-C0H85uUI.css +1 -0
  71. package/dist/web/assets/{info-BGTcmow7.js → info-C8mwoaIJ.js} +1 -1
  72. package/dist/web/assets/{jsonMode-D3m8N4Gi.js → jsonMode-BT35NJi4.js} +1 -1
  73. package/dist/web/assets/{lspLanguageFeatures-DoyipLsB.js → lspLanguageFeatures-BKAwIewO.js} +1 -1
  74. package/dist/web/assets/{minimize-2-B01qSko4.js → minimize-2-34MApatV.js} +1 -1
  75. package/dist/web/assets/{monaco.contribution-BJyfaGX2.js → monaco.contribution-9diduNNi.js} +2 -2
  76. package/dist/web/assets/{monaco.contribution-Bc22foTx.js → monaco.contribution-CxtX0z-m.js} +2 -2
  77. package/dist/web/assets/{monaco.contribution-DuRhJ6zU.js → monaco.contribution-DVnPUDsR.js} +2 -2
  78. package/dist/web/assets/{monaco.contribution--U8v3jpa.js → monaco.contribution-Dj4R5U8Z.js} +2 -2
  79. package/dist/web/assets/{monitor-eZP8ZTHe.js → monitor-4JxqJ7wz.js} +1 -1
  80. package/dist/web/assets/{play-CGsWFR_B.js → play-C4PtpamL.js} +1 -1
  81. package/dist/web/assets/{python-BNrLZWud.js → python-0GVncePC.js} +1 -1
  82. package/dist/web/assets/{save-BLgjrccP.js → save-DjB16eou.js} +1 -1
  83. package/dist/web/assets/{square-CI1qNtvE.js → square-Coz7UQqd.js} +1 -1
  84. package/dist/web/assets/{toggleHighContrast-B_GcTCnw.js → toggleHighContrast-D-3108_3.js} +1 -1
  85. package/dist/web/assets/{tsMode-CmruH_ys.js → tsMode-CV4ktqqR.js} +1 -1
  86. package/dist/web/assets/{upload-DnlgGS2x.js → upload-D007T9Hm.js} +1 -1
  87. package/dist/web/assets/{useLocalAgentSchedules-BBhGUfK-.js → useLocalAgentSchedules-BXjFbAVS.js} +1 -1
  88. package/dist/web/assets/{useProviderSettings-DfhdkKdC.js → useProviderSettings-SY7mp-5B.js} +1 -1
  89. package/dist/web/assets/{useSessionTurnCache-BwscKl5i.js → useSessionTurnCache-Bee6zbC_.js} +1 -1
  90. package/dist/web/assets/{wifi-off-Dz-4EDCc.js → wifi-off-BbNZc0za.js} +1 -1
  91. package/dist/web/assets/{workers-Bi9u46cp.js → workers-DNQ5ne3z.js} +1 -1
  92. package/dist/web/assets/{yaml-DVTkiRnh.js → yaml-BfAho-gB.js} +1 -1
  93. package/dist/web/index.html +2 -2
  94. package/package.json +1 -1
  95. package/dist/chunks/chunk-7K72KS5C.js +0 -9
  96. package/dist/web/assets/App-BI-uOpnP.js +0 -234
  97. package/dist/web/assets/MainPane-LaEtxydD.js +0 -19
  98. package/dist/web/assets/WorkspaceDiffPanel-D9hAV8l7.js +0 -14
  99. package/dist/web/assets/index-DJcUXSsN.css +0 -1
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as H,f as te,h as ae,i as ie}from"./chunk-OE2VF6KU.js";import{g as se}from"./chunk-QJRXTIOC.js";import{F as re,H as oe}from"./chunk-7K72KS5C.js";import{U as X,ba as Y,ca as Z,ga as ee}from"./chunk-7MXZJQS7.js";import{L as K,da as b}from"./chunk-XDMUD4FW.js";import{Ca as g,Ta as U,pc as Q,xa as P}from"./chunk-QRWPEW3Z.js";import{s as G,t as F,u as T}from"./chunk-WV2APYWG.js";import{Qa as L,na as N,oa as y,qa as W,wa as $}from"./chunk-PJM2G7SG.js";import{Fa as _}from"./chunk-SDEDAHV6.js";import{b as R,c as v,d as J,l as S,m as n,o as j,r as q}from"./chunk-NNF6KCHD.js";import{b as h}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";import{randomUUID as V,createHash as fe}from"node:crypto";import{mkdtemp as ue,mkdir as pe,writeFile as D,rm as me}from"node:fs/promises";import he from"node:os";import E from"node:path";var ne=d(async e=>{let a=g(e.packageValue);if(e.grader.runtime!=="sandbox_process")throw new Error("Select the sandbox process runtime for a local file grader.");if(!a.taskset.graders.some(r=>n(r)===n(e.grader)))throw new Error("The private grader differs from its package.");if(!a.taskset.tasks.some(r=>n(r)===n(e.task)))throw new Error("The private case differs from its package.");await e.authorize(),e.signal?.throwIfAborted();let i=await ue(E.join(he.tmpdir(),"profile-private-grade-")),t=V();try{for(let f of a.files.filter(l=>l.asset.visibility!=="policy")){let l=f.asset.path;if(E.isAbsolute(l)||l.split(/[\\/]/).some(u=>!u||u==="."||u===".."))throw new Error("Private grader asset path invalid.");let m=E.join(i,"package",l);await pe(E.dirname(m),{recursive:!0,mode:448}),await D(m,P(f),{mode:256})}await D(E.join(i,"request.json"),JSON.stringify({task:e.task,attempt:e.evidence,input:e.task.input,output:e.evidence.output,artifacts:"artifacts"in e.evidence?e.evidence.artifacts:[],expectedOutput:e.task.expectedOutput}),{mode:256});let r=`import fs from 'node:fs/promises'; const module=await import(${JSON.stringify("./package/"+e.grader.verifierRef.path)}); const result=await module[${JSON.stringify(e.grader.exportName??"verify")}](JSON.parse(await fs.readFile('request.json','utf8'))); console.log(JSON.stringify(result));`;await D(E.join(i,"runner.mjs"),r,{mode:256});let s=await ie({authorize:d(async()=>(await e.authorize(),e.signal?.throwIfAborted(),{candidateId:t,candidateRevision:1,ownerId:t,sessionId:t,turnId:t,sourceRoot:i,writablePaths:[]}),"authorize")})({candidateId:t,sessionId:t,turnId:t,expectedRevision:1,command:"/runtime/node --max-old-space-size=512 runner.mjs",timeoutMs:e.grader.timeoutMs,maxOutputBytes:7e4,signal:e.signal});if(await e.authorize(),e.signal?.throwIfAborted(),s.code!==0||s.timedOut||s.stdoutTruncated||s.stderrTruncated)throw new Error("Private grading sandbox did not complete.");return H.parse(JSON.parse(s.stdout))}finally{await me(i,{recursive:!0,force:!0})}},"executeLocalProfileVerifier");function Me(e){return async a=>{if(!a.manifest)throw new Error("The hosted grader requires its admitted manifest.");await a.authorize(),a.signal?.throwIfAborted();let i="artifacts"in a.evidence&&Array.isArray(a.evidence.artifacts)?a.evidence.artifacts.map(({reference:l,title:m,contentType:u})=>({reference:l,title:m,contentType:u})):[],t="caseOwner"in a.evidence?a.evidence.caseOwner:null;if(!t?.sessionId||!t.turnId)throw new Error("The private grader has no sealed case owner.");let r=Buffer.from(JSON.stringify({manifest:a.manifest,packageValue:a.packageValue,graderId:a.grader.id,taskId:a.task.id,evidence:{...a.evidence,artifacts:i}}));if(r.length>2e7)throw new Error("The private grading package exceeds its transport limit.");let o={callId:V(),sessionId:t.sessionId,turnId:t.turnId,sha256:fe("sha256").update(r).digest("hex"),sizeBytes:r.length,timeoutMs:a.grader.timeoutMs},s=d((l,m=12e4)=>e.request(oe.parse({contractVersion:re,requestId:V(),operation:"profile-evaluations/grade",params:l}),m),"request");for(let l=0;l<r.length;l+=98304)await a.authorize(),a.signal?.throwIfAborted(),await s({...o,action:"upload",offset:l,contentsBase64:r.subarray(l,l+98304).toString("base64")});let f=await s({...o,action:"execute"},a.grader.timeoutMs+12e4);return await a.authorize(),a.signal?.throwIfAborted(),H.parse(f)}}d(Me,"createHostedProfileVerifier");async function ge(e,a){let i=g(e);for(let r of i.taskset.graders){if(r.kind==="model_judge"&&(!a||r.calibrationStatus!=="passed"))throw new Error("This Profile requires its current calibrated judge and bounded private provider owner.");let o="verifierRef"in r?r.verifierRef:"rubricRef"in r?r.rubricRef:null;o&&A(i,o)}let t=i.taskset.metrics?.customAggregator;if(t){let r=i.files.find(o=>o.asset.path===t.module);if(!r||r.asset.visibility==="policy"||S(P(r))!==t.contentHash)throw new Error("The authored aggregate metric is not its exact private release.");new TextDecoder("utf8",{fatal:!0}).decode(P(r))}}d(ge,"preflightProfilePrivateGrading");function A(e,a){let i=e.files.find(t=>t.asset.id===a.id);if(!i||i.asset.visibility==="policy"||n(i.asset)!==n(a))throw new Error("The exact private grader asset is unavailable.");return new TextDecoder("utf8",{fatal:!0}).decode(P(i))}d(A,"readPrivate");async function $e(e){let a=g(e.packageValue);if(a.contentHash!==e.manifest.packageHash||a.taskset.contentHash!==e.manifest.tasksetRelease.contentHash)throw new Error("The private grading package changed its frozen Run identity.");await e.authorize(),await ge(a,!!e.executeBudgetedJudge),await e.authorize();let i=d(async({grader:o,task:s,evidence:f})=>{let l=e.signal;await e.authorize(),l?.throwIfAborted();let m={manifest:e.manifest,packageValue:a,grader:o,task:s,evidence:f,signal:l,authorize:e.authorize},u=e.executeSandboxVerifier?await e.executeSandboxVerifier(m):o.runtime==="sandbox_process"?await ne(m):await te({source:A(a,o.verifierRef),exportName:o.exportName,runtime:o.runtime,timeoutMs:o.timeoutMs,signal:l,value:{task:s,attempt:f,input:s.input,output:f.output,artifacts:"artifacts"in f?f.artifacts:[],expectedOutput:s.expectedOutput,infrastructureError:f.infrastructureError??null}});return await e.authorize(),l?.throwIfAborted(),{score:u.score,passed:u.passed,rewardEligible:o.rewardEligible,failureClass:null,feedback:[u.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:u.evidenceRefs}},"customVerifier"),t=a.taskset.metrics?.customAggregator,r=t?new TextDecoder("utf8",{fatal:!0}).decode(P(a.files.find(o=>o.asset.path===t.module))):void 0;return{authorize:e.authorize,customVerifier:i,...e.executeBudgetedJudge?{modelJudge:L({readRubric:d(async o=>{await e.authorize();let s=A(a,o);return await e.authorize(),s},"readRubric"),executeBudgeted:d(async(o,s)=>{await e.authorize(),s?.throwIfAborted();let f=await e.executeBudgetedJudge(o,s);return await e.authorize(),s?.throwIfAborted(),f},"executeBudgeted")})}:{},...r!==void 0?{metricSource:r,metricExecutor:d(async o=>{await e.authorize(),o.signal?.throwIfAborted();let s=await ae(o);return await e.authorize(),o.signal?.throwIfAborted(),s},"metricExecutor")}:{}}}d($e,"createProfilePrivateGradingOwner");import{promises as ve}from"node:fs";import ke from"node:path";async function at(e){let a=e.definition.tasksetRelease,i=await se(e.store,e.harnessRelease);if(!i)throw new Error("Evaluation Profile Harness release is unavailable.");let t=await Re({...e,runtime:i});if(t)return t;let r=await e.store.listTasksetRevisions(e.profileId);for(let o of r){if(a.id!==o.id&&a.id!==`taskset-release-${o.id}-r${o.revision}`)continue;let s=await we(e.storeDir,o);if(s.taskset.id===a.id&&s.taskset.contentHash===a.contentHash)return s}throw new Error(`Released Taskset ${a.id} is unavailable in Profile ${e.profileId}.`)}d(at,"loadLocalProfileEvaluationTaskset");async function we(e,a){let i=a.metadata.importedPackageHash;if(typeof i=="string"){let o=await Z(e,i);if(o.taskset.id!==a.id||o.taskset.revision!==a.revision)throw new Error("Imported evaluation Taskset differs from its local Profile revision.");return o}if(U(a)!==a.contentHash)throw new Error("Authored evaluation Taskset differs from its immutable revision.");let t=Q({taskset:a,adapterId:X(a)}),r=await ee({storeDir:e,taskset:a,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:t.tasksetRelease,environment:t.environmentRelease,verifierSet:t.verifierSetRelease}});return await Y(e,r),r}d(we,"loadCandidate");async function Re(e){let a=e.definition.tasksetRelease,i=e.runtime;if(i.release.harnessRelease.id!==e.harnessRelease.id||i.release.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Evaluation Taskset runtime differs from its requested release.");let t=`evals/tasksets/${a.contentHash}.json`,r=i.release.harnessRelease.files.find(o=>o.path===t);if(r){if(r.visibility!=="verifier")throw new Error("Evaluation Taskset package is not verifier-private.");let o=await ve.readFile(ke.join(i.release.bundlePath,"source",...t.split("/")));if(S(o)!==r.contentHash)throw new Error("Released evaluation Taskset package bytes differ from their source receipt.");let s=g(JSON.parse(o.toString("utf8")));if(s.taskset.id!==a.id||s.taskset.contentHash!==a.contentHash)throw new Error("Released evaluation Taskset package differs from its definition.");return s}return null}d(Re,"loadReleasedProfileEvaluationTaskset");function C(e){return{id:W(e),label:"Selected Dataset evaluation",description:"Explicit sealed external Dataset evaluation recipe.",target:e.target,tasksetRelease:{id:e.dataset.id,contentHash:e.dataset.contentHash},split:e.split,taskIds:[...new Set(e.population.map(a=>a.taskId))],seeds:[...new Set(e.population.map(a=>a.seed))],criterion:e.criterion}}d(C,"externalProfileEvaluationDefinition");async function lt(e){let a=e.manifest.profileEvaluation,i=a?.externalDatasetBinding?y(a.externalDatasetBinding):null;if(!i)return null;if(!e.resolveExternalDataset)throw new Error("This owner has no authorized external Dataset resolver.");let t=await e.resolveExternalDataset(i,e.selected);await t.authorize();let r=g(t.packageValue),o=await e.loadCatalog({ref:e.selected.profileRef,sourceRevision:e.selected.sourceRevision,harnessRelease:e.selected.harnessRelease});if(n(t.binding)!==n(i)||i.profileId!==e.selected.profileRef.profileId||i.declaredProfileCatalogHash!==o.catalogHash||r.contentHash!==i.packageHash||n(r.taskset)!==n(e.taskset)||i.environmentHash!==n(r.taskset.environment)||i.privateDatasetClosureHash!==n(r.files.filter(l=>l.asset.visibility!=="policy").map(l=>l.asset)))throw new Error("External Dataset admission changed its actual Profile, package or private closure.");let s=C(i),f={schemaVersion:"openpond.profileEvaluations.v1",definitions:[s],suites:[]};if(T(e.manifest,e.taskset,f),!a||a.catalogHash!==n(f)||a.definitionHash!==n(s)||n(a.target)!==n(i.target))throw new Error("External Dataset manifest changed its derived definition.");return await t.authorize(),{...t,packageValue:r,definition:s,catalog:f}}d(lt,"admitProfileExternalDataset");var Pe=h.object({id:R,createdAt:J,definitionId:R,externalDatasetBinding:N.optional(),profileRef:K.optional(),profileSource:h.object({sourceRevision:h.string().min(1).max(500),harnessRelease:h.object({id:R,contentHash:v}).strict()}).strict().optional(),modelRef:q,hostModelConfigurationHash:v.optional(),hostArtifactHash:v.optional(),maximumSpendUsd:h.number().positive().max(1e4).optional(),expectedManifestHash:v.optional(),hostExperiment:h.object({definition:h.object({id:R,revision:h.number().int().positive(),contentHash:v}).strict().nullable(),configurationHash:v,project:h.object({id:R,revision:h.number().int().positive(),contentHash:v,targetId:R.nullable()}).strict().optional()}).strict().optional()}).strict();function vt(e){return async(a,i)=>{let t=Pe.parse(a);if(i?.requireExpectedManifestHash&&!t.expectedManifestHash)throw new Error("Profile evaluation execution requires the reviewed manifest hash.");if(t.profileSource&&!t.profileRef)throw new Error("An exact Profile source requires its accepted Profile reference.");let r=i?.selectedWorkflows??await e.selectedWorkflows(t.profileRef,t.profileSource);if(t.profileRef&&n(t.profileRef)!==n(r.profileRef))throw new Error("Profile preparation did not resolve the explicitly selected Profile.");if(t.profileSource&&(r.sourceRevision!==t.profileSource.sourceRevision||n(r.harnessRelease)!==n(t.profileSource.harnessRelease)))throw new Error("Profile preparation changed its explicitly pinned source.");let o=t.externalDatasetBinding?y(t.externalDatasetBinding):null,s=o?await(e.resolveExternalDataset?e.resolveExternalDataset(o,r):Promise.reject(new Error("This host has not qualified external Dataset Profile execution."))):null;if(s&&(await s.authorize(),n(y(s.binding))!==n(o)))throw new Error("External Dataset admission differs from the actual authorized recipe.");let f=await e.loadCatalog({ref:r.profileRef,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease});if(o&&o.declaredProfileCatalogHash!==f.catalogHash)throw new Error("The original Profile verifier catalog changed.");let l=o?C(o):null;if(l&&t.definitionId!==l.id)throw new Error("Use the external recipe's own definition identity.");let m={schemaVersion:"openpond.profileEvaluations.v1",definitions:l?[l]:f.definitions,suites:l?[]:f.suites},u=l??f.definitions.find(c=>c.id===t.definitionId);if(!u)throw new Error(`Evaluation ${t.definitionId} is absent from the selected Profile release.`);let k=u.target,z=k.kind==="workflow"?r.workflows.find(c=>c.binding.workflowId===k.workflowId)?.binding:_.parse({schemaVersion:"openpond.profileComponentBinding.v1",profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,target:k});if(!z)throw new Error(`Evaluation workflow ${k.kind==="workflow"?k.workflowId:""} is absent from the selected Profile release.`);let w=g(s?.packageValue??await e.loadTasksetPackage(u,r.profileRef.profileId,r.harnessRelease)),p=w.taskset;if(p.id!==u.tasksetRelease.id||p.contentHash!==u.tasksetRelease.contentHash)throw new Error("Evaluation Taskset package differs from its released definition.");let le=p.environment.kind==="text"&&p.tools.length===0,M=p.environment.kind==="work"&&p.environment.entrypoint==="openpond-work-v1"&&p.tools.every(c=>["work_exec","work_save_output"].includes(c.name));if(!le&&!M)throw new Error("Profile evaluation supports text cases or Work cases with the built-in execution and output tools.");if(t.maximumSpendUsd!==void 0&&M&&!e.boundedWorkComputeAvailable)throw new Error("This host has not admitted budgeted Work compute.");if(p.tasks.some(c=>c.artifactRefs.length>b.maxAttachments||c.artifactRefs.some(x=>x.visibility!=="policy"||x.mediaType!=="application/pdf"||x.sizeBytes>b.maxAttachmentBytes)))throw new Error("Profile evaluation accepts only bounded policy-visible PDF task attachments.");if(!o&&!e.privateGradingPreflight&&(p.graders.some(c=>c.kind==="model_judge"||c.kind==="custom_verifier")||p.metrics?.aggregation==="custom"))throw new Error("Profile evaluation cannot run this Taskset's model judge, custom verifier, or custom metric in the current app-server runtime.");await e.privateGradingPreflight?.(w);let B={adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",placement:e.placement,runtimeVersion:"app-server-v1",capabilityReceipt:n({adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",packageHash:w.contentHash,connectedAppScopes:p.policy.connectedAppScopes})},ce={...$({catalog:m,definitionId:u.id,profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,environmentHash:n({packageHash:w.contentHash,runtimeTarget:B})}),...o?{externalDatasetBinding:o}:{},...e.sourceCandidate?{sourceCandidate:e.sourceCandidate}:{}};if(o&&(o.packageHash!==w.contentHash||o.environmentHash!==n(p.environment)||o.privateDatasetClosureHash!==n(w.files.filter(c=>c.asset.visibility!=="policy").map(c=>c.asset))))throw new Error("External Dataset package/environment/private closure changed.");let de=j.parse({provider:t.modelRef.providerId,model:t.modelRef.modelId,revision:null,artifactHash:t.hostArtifactHash??null,tokenizerRevision:null,chatTemplateHash:null}),O=await e.modelConfigurationHash(t.modelRef,t),I=G({schemaVersion:"openpond.tasksetRunManifest.v1",id:t.id,tasksetRelease:u.tasksetRelease,packageHash:w.contentHash,execution:{kind:"harness",harnessRelease:r.harnessRelease},profileEvaluation:ce,policy:{kind:"model",model:de,configurationHash:O},gradingRole:"evaluation",metricPolicy:F(p),population:o?o.population.map(c=>({...c,receiptId:`evaluation-${n([t.id,c.taskId,c.seed,c.fixtureId]).slice(0,32)}`})):u.taskIds.flatMap(c=>u.seeds.map(x=>({receiptId:`evaluation-${n([t.id,c,x]).slice(0,32)}`,taskId:c,seed:x,fixtureId:null}))),runtimeTarget:B,limits:{maxTurns:128,timeoutMs:p.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:t.maximumSpendUsd??null},createdAt:t.createdAt,metadata:{sourceTasksetId:p.metadata.sourceTasksetId??p.id,...r.profileRef.source==="openpond_git"?{profileRepositoryId:r.profileRef.repositoryId}:{},...t.hostExperiment?{experimentDefinition:t.hostExperiment.definition,experimentConfigurationHash:t.hostExperiment.configurationHash,...t.hostExperiment.project?{project:t.hostExperiment.project}:{}}:{}}});if(T(I,p,m),s&&await s.authorize(),t.expectedManifestHash&&I.contentHash!==t.expectedManifestHash)throw new Error("Profile evaluation setup changed since preview; prepare the run again.");return{manifest:I,taskset:p,profileRef:r.profileRef,binding:z,modelRef:t.modelRef,modelConfigurationHash:O}}}d(vt,"createProfileEvaluationRunPreparationService");export{ne as a,Me as b,ge as c,$e as d,at as e,Re as f,lt as g,vt as h};
2
+ import{a as H,f as te,h as ae,i as ie}from"./chunk-OE2VF6KU.js";import{g as se}from"./chunk-QJRXTIOC.js";import{F as re,H as oe}from"./chunk-PVSUQGWK.js";import{U as X,ba as Y,ca as Z,ga as ee}from"./chunk-7MXZJQS7.js";import{L as K,da as b}from"./chunk-XDMUD4FW.js";import{Ca as g,Ta as U,pc as Q,xa as P}from"./chunk-QRWPEW3Z.js";import{s as G,t as F,u as T}from"./chunk-WV2APYWG.js";import{Qa as L,na as N,oa as y,qa as W,wa as $}from"./chunk-PJM2G7SG.js";import{Fa as _}from"./chunk-SDEDAHV6.js";import{b as R,c as v,d as J,l as S,m as n,o as j,r as q}from"./chunk-NNF6KCHD.js";import{b as h}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";import{randomUUID as V,createHash as fe}from"node:crypto";import{mkdtemp as ue,mkdir as pe,writeFile as D,rm as me}from"node:fs/promises";import he from"node:os";import E from"node:path";var ne=d(async e=>{let a=g(e.packageValue);if(e.grader.runtime!=="sandbox_process")throw new Error("Select the sandbox process runtime for a local file grader.");if(!a.taskset.graders.some(r=>n(r)===n(e.grader)))throw new Error("The private grader differs from its package.");if(!a.taskset.tasks.some(r=>n(r)===n(e.task)))throw new Error("The private case differs from its package.");await e.authorize(),e.signal?.throwIfAborted();let i=await ue(E.join(he.tmpdir(),"profile-private-grade-")),t=V();try{for(let f of a.files.filter(l=>l.asset.visibility!=="policy")){let l=f.asset.path;if(E.isAbsolute(l)||l.split(/[\\/]/).some(u=>!u||u==="."||u===".."))throw new Error("Private grader asset path invalid.");let m=E.join(i,"package",l);await pe(E.dirname(m),{recursive:!0,mode:448}),await D(m,P(f),{mode:256})}await D(E.join(i,"request.json"),JSON.stringify({task:e.task,attempt:e.evidence,input:e.task.input,output:e.evidence.output,artifacts:"artifacts"in e.evidence?e.evidence.artifacts:[],expectedOutput:e.task.expectedOutput}),{mode:256});let r=`import fs from 'node:fs/promises'; const module=await import(${JSON.stringify("./package/"+e.grader.verifierRef.path)}); const result=await module[${JSON.stringify(e.grader.exportName??"verify")}](JSON.parse(await fs.readFile('request.json','utf8'))); console.log(JSON.stringify(result));`;await D(E.join(i,"runner.mjs"),r,{mode:256});let s=await ie({authorize:d(async()=>(await e.authorize(),e.signal?.throwIfAborted(),{candidateId:t,candidateRevision:1,ownerId:t,sessionId:t,turnId:t,sourceRoot:i,writablePaths:[]}),"authorize")})({candidateId:t,sessionId:t,turnId:t,expectedRevision:1,command:"/runtime/node --max-old-space-size=512 runner.mjs",timeoutMs:e.grader.timeoutMs,maxOutputBytes:7e4,signal:e.signal});if(await e.authorize(),e.signal?.throwIfAborted(),s.code!==0||s.timedOut||s.stdoutTruncated||s.stderrTruncated)throw new Error("Private grading sandbox did not complete.");return H.parse(JSON.parse(s.stdout))}finally{await me(i,{recursive:!0,force:!0})}},"executeLocalProfileVerifier");function Me(e){return async a=>{if(!a.manifest)throw new Error("The hosted grader requires its admitted manifest.");await a.authorize(),a.signal?.throwIfAborted();let i="artifacts"in a.evidence&&Array.isArray(a.evidence.artifacts)?a.evidence.artifacts.map(({reference:l,title:m,contentType:u})=>({reference:l,title:m,contentType:u})):[],t="caseOwner"in a.evidence?a.evidence.caseOwner:null;if(!t?.sessionId||!t.turnId)throw new Error("The private grader has no sealed case owner.");let r=Buffer.from(JSON.stringify({manifest:a.manifest,packageValue:a.packageValue,graderId:a.grader.id,taskId:a.task.id,evidence:{...a.evidence,artifacts:i}}));if(r.length>2e7)throw new Error("The private grading package exceeds its transport limit.");let o={callId:V(),sessionId:t.sessionId,turnId:t.turnId,sha256:fe("sha256").update(r).digest("hex"),sizeBytes:r.length,timeoutMs:a.grader.timeoutMs},s=d((l,m=12e4)=>e.request(oe.parse({contractVersion:re,requestId:V(),operation:"profile-evaluations/grade",params:l}),m),"request");for(let l=0;l<r.length;l+=98304)await a.authorize(),a.signal?.throwIfAborted(),await s({...o,action:"upload",offset:l,contentsBase64:r.subarray(l,l+98304).toString("base64")});let f=await s({...o,action:"execute"},a.grader.timeoutMs+12e4);return await a.authorize(),a.signal?.throwIfAborted(),H.parse(f)}}d(Me,"createHostedProfileVerifier");async function ge(e,a){let i=g(e);for(let r of i.taskset.graders){if(r.kind==="model_judge"&&(!a||r.calibrationStatus!=="passed"))throw new Error("This Profile requires its current calibrated judge and bounded private provider owner.");let o="verifierRef"in r?r.verifierRef:"rubricRef"in r?r.rubricRef:null;o&&A(i,o)}let t=i.taskset.metrics?.customAggregator;if(t){let r=i.files.find(o=>o.asset.path===t.module);if(!r||r.asset.visibility==="policy"||S(P(r))!==t.contentHash)throw new Error("The authored aggregate metric is not its exact private release.");new TextDecoder("utf8",{fatal:!0}).decode(P(r))}}d(ge,"preflightProfilePrivateGrading");function A(e,a){let i=e.files.find(t=>t.asset.id===a.id);if(!i||i.asset.visibility==="policy"||n(i.asset)!==n(a))throw new Error("The exact private grader asset is unavailable.");return new TextDecoder("utf8",{fatal:!0}).decode(P(i))}d(A,"readPrivate");async function $e(e){let a=g(e.packageValue);if(a.contentHash!==e.manifest.packageHash||a.taskset.contentHash!==e.manifest.tasksetRelease.contentHash)throw new Error("The private grading package changed its frozen Run identity.");await e.authorize(),await ge(a,!!e.executeBudgetedJudge),await e.authorize();let i=d(async({grader:o,task:s,evidence:f})=>{let l=e.signal;await e.authorize(),l?.throwIfAborted();let m={manifest:e.manifest,packageValue:a,grader:o,task:s,evidence:f,signal:l,authorize:e.authorize},u=e.executeSandboxVerifier?await e.executeSandboxVerifier(m):o.runtime==="sandbox_process"?await ne(m):await te({source:A(a,o.verifierRef),exportName:o.exportName,runtime:o.runtime,timeoutMs:o.timeoutMs,signal:l,value:{task:s,attempt:f,input:s.input,output:f.output,artifacts:"artifacts"in f?f.artifacts:[],expectedOutput:s.expectedOutput,infrastructureError:f.infrastructureError??null}});return await e.authorize(),l?.throwIfAborted(),{score:u.score,passed:u.passed,rewardEligible:o.rewardEligible,failureClass:null,feedback:[u.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:u.evidenceRefs}},"customVerifier"),t=a.taskset.metrics?.customAggregator,r=t?new TextDecoder("utf8",{fatal:!0}).decode(P(a.files.find(o=>o.asset.path===t.module))):void 0;return{authorize:e.authorize,customVerifier:i,...e.executeBudgetedJudge?{modelJudge:L({readRubric:d(async o=>{await e.authorize();let s=A(a,o);return await e.authorize(),s},"readRubric"),executeBudgeted:d(async(o,s)=>{await e.authorize(),s?.throwIfAborted();let f=await e.executeBudgetedJudge(o,s);return await e.authorize(),s?.throwIfAborted(),f},"executeBudgeted")})}:{},...r!==void 0?{metricSource:r,metricExecutor:d(async o=>{await e.authorize(),o.signal?.throwIfAborted();let s=await ae(o);return await e.authorize(),o.signal?.throwIfAborted(),s},"metricExecutor")}:{}}}d($e,"createProfilePrivateGradingOwner");import{promises as ve}from"node:fs";import ke from"node:path";async function at(e){let a=e.definition.tasksetRelease,i=await se(e.store,e.harnessRelease);if(!i)throw new Error("Evaluation Profile Harness release is unavailable.");let t=await Re({...e,runtime:i});if(t)return t;let r=await e.store.listTasksetRevisions(e.profileId);for(let o of r){if(a.id!==o.id&&a.id!==`taskset-release-${o.id}-r${o.revision}`)continue;let s=await we(e.storeDir,o);if(s.taskset.id===a.id&&s.taskset.contentHash===a.contentHash)return s}throw new Error(`Released Taskset ${a.id} is unavailable in Profile ${e.profileId}.`)}d(at,"loadLocalProfileEvaluationTaskset");async function we(e,a){let i=a.metadata.importedPackageHash;if(typeof i=="string"){let o=await Z(e,i);if(o.taskset.id!==a.id||o.taskset.revision!==a.revision)throw new Error("Imported evaluation Taskset differs from its local Profile revision.");return o}if(U(a)!==a.contentHash)throw new Error("Authored evaluation Taskset differs from its immutable revision.");let t=Q({taskset:a,adapterId:X(a)}),r=await ee({storeDir:e,taskset:a,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:t.tasksetRelease,environment:t.environmentRelease,verifierSet:t.verifierSetRelease}});return await Y(e,r),r}d(we,"loadCandidate");async function Re(e){let a=e.definition.tasksetRelease,i=e.runtime;if(i.release.harnessRelease.id!==e.harnessRelease.id||i.release.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Evaluation Taskset runtime differs from its requested release.");let t=`evals/tasksets/${a.contentHash}.json`,r=i.release.harnessRelease.files.find(o=>o.path===t);if(r){if(r.visibility!=="verifier")throw new Error("Evaluation Taskset package is not verifier-private.");let o=await ve.readFile(ke.join(i.release.bundlePath,"source",...t.split("/")));if(S(o)!==r.contentHash)throw new Error("Released evaluation Taskset package bytes differ from their source receipt.");let s=g(JSON.parse(o.toString("utf8")));if(s.taskset.id!==a.id||s.taskset.contentHash!==a.contentHash)throw new Error("Released evaluation Taskset package differs from its definition.");return s}return null}d(Re,"loadReleasedProfileEvaluationTaskset");function C(e){return{id:W(e),label:"Selected Dataset evaluation",description:"Explicit sealed external Dataset evaluation recipe.",target:e.target,tasksetRelease:{id:e.dataset.id,contentHash:e.dataset.contentHash},split:e.split,taskIds:[...new Set(e.population.map(a=>a.taskId))],seeds:[...new Set(e.population.map(a=>a.seed))],criterion:e.criterion}}d(C,"externalProfileEvaluationDefinition");async function lt(e){let a=e.manifest.profileEvaluation,i=a?.externalDatasetBinding?y(a.externalDatasetBinding):null;if(!i)return null;if(!e.resolveExternalDataset)throw new Error("This owner has no authorized external Dataset resolver.");let t=await e.resolveExternalDataset(i,e.selected);await t.authorize();let r=g(t.packageValue),o=await e.loadCatalog({ref:e.selected.profileRef,sourceRevision:e.selected.sourceRevision,harnessRelease:e.selected.harnessRelease});if(n(t.binding)!==n(i)||i.profileId!==e.selected.profileRef.profileId||i.declaredProfileCatalogHash!==o.catalogHash||r.contentHash!==i.packageHash||n(r.taskset)!==n(e.taskset)||i.environmentHash!==n(r.taskset.environment)||i.privateDatasetClosureHash!==n(r.files.filter(l=>l.asset.visibility!=="policy").map(l=>l.asset)))throw new Error("External Dataset admission changed its actual Profile, package or private closure.");let s=C(i),f={schemaVersion:"openpond.profileEvaluations.v1",definitions:[s],suites:[]};if(T(e.manifest,e.taskset,f),!a||a.catalogHash!==n(f)||a.definitionHash!==n(s)||n(a.target)!==n(i.target))throw new Error("External Dataset manifest changed its derived definition.");return await t.authorize(),{...t,packageValue:r,definition:s,catalog:f}}d(lt,"admitProfileExternalDataset");var Pe=h.object({id:R,createdAt:J,definitionId:R,externalDatasetBinding:N.optional(),profileRef:K.optional(),profileSource:h.object({sourceRevision:h.string().min(1).max(500),harnessRelease:h.object({id:R,contentHash:v}).strict()}).strict().optional(),modelRef:q,hostModelConfigurationHash:v.optional(),hostArtifactHash:v.optional(),maximumSpendUsd:h.number().positive().max(1e4).optional(),expectedManifestHash:v.optional(),hostExperiment:h.object({definition:h.object({id:R,revision:h.number().int().positive(),contentHash:v}).strict().nullable(),configurationHash:v,project:h.object({id:R,revision:h.number().int().positive(),contentHash:v,targetId:R.nullable()}).strict().optional()}).strict().optional()}).strict();function vt(e){return async(a,i)=>{let t=Pe.parse(a);if(i?.requireExpectedManifestHash&&!t.expectedManifestHash)throw new Error("Profile evaluation execution requires the reviewed manifest hash.");if(t.profileSource&&!t.profileRef)throw new Error("An exact Profile source requires its accepted Profile reference.");let r=i?.selectedWorkflows??await e.selectedWorkflows(t.profileRef,t.profileSource);if(t.profileRef&&n(t.profileRef)!==n(r.profileRef))throw new Error("Profile preparation did not resolve the explicitly selected Profile.");if(t.profileSource&&(r.sourceRevision!==t.profileSource.sourceRevision||n(r.harnessRelease)!==n(t.profileSource.harnessRelease)))throw new Error("Profile preparation changed its explicitly pinned source.");let o=t.externalDatasetBinding?y(t.externalDatasetBinding):null,s=o?await(e.resolveExternalDataset?e.resolveExternalDataset(o,r):Promise.reject(new Error("This host has not qualified external Dataset Profile execution."))):null;if(s&&(await s.authorize(),n(y(s.binding))!==n(o)))throw new Error("External Dataset admission differs from the actual authorized recipe.");let f=await e.loadCatalog({ref:r.profileRef,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease});if(o&&o.declaredProfileCatalogHash!==f.catalogHash)throw new Error("The original Profile verifier catalog changed.");let l=o?C(o):null;if(l&&t.definitionId!==l.id)throw new Error("Use the external recipe's own definition identity.");let m={schemaVersion:"openpond.profileEvaluations.v1",definitions:l?[l]:f.definitions,suites:l?[]:f.suites},u=l??f.definitions.find(c=>c.id===t.definitionId);if(!u)throw new Error(`Evaluation ${t.definitionId} is absent from the selected Profile release.`);let k=u.target,z=k.kind==="workflow"?r.workflows.find(c=>c.binding.workflowId===k.workflowId)?.binding:_.parse({schemaVersion:"openpond.profileComponentBinding.v1",profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,target:k});if(!z)throw new Error(`Evaluation workflow ${k.kind==="workflow"?k.workflowId:""} is absent from the selected Profile release.`);let w=g(s?.packageValue??await e.loadTasksetPackage(u,r.profileRef.profileId,r.harnessRelease)),p=w.taskset;if(p.id!==u.tasksetRelease.id||p.contentHash!==u.tasksetRelease.contentHash)throw new Error("Evaluation Taskset package differs from its released definition.");let le=p.environment.kind==="text"&&p.tools.length===0,M=p.environment.kind==="work"&&p.environment.entrypoint==="openpond-work-v1"&&p.tools.every(c=>["work_exec","work_save_output"].includes(c.name));if(!le&&!M)throw new Error("Profile evaluation supports text cases or Work cases with the built-in execution and output tools.");if(t.maximumSpendUsd!==void 0&&M&&!e.boundedWorkComputeAvailable)throw new Error("This host has not admitted budgeted Work compute.");if(p.tasks.some(c=>c.artifactRefs.length>b.maxAttachments||c.artifactRefs.some(x=>x.visibility!=="policy"||x.mediaType!=="application/pdf"||x.sizeBytes>b.maxAttachmentBytes)))throw new Error("Profile evaluation accepts only bounded policy-visible PDF task attachments.");if(!o&&!e.privateGradingPreflight&&(p.graders.some(c=>c.kind==="model_judge"||c.kind==="custom_verifier")||p.metrics?.aggregation==="custom"))throw new Error("Profile evaluation cannot run this Taskset's model judge, custom verifier, or custom metric in the current app-server runtime.");await e.privateGradingPreflight?.(w);let B={adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",placement:e.placement,runtimeVersion:"app-server-v1",capabilityReceipt:n({adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",packageHash:w.contentHash,connectedAppScopes:p.policy.connectedAppScopes})},ce={...$({catalog:m,definitionId:u.id,profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,environmentHash:n({packageHash:w.contentHash,runtimeTarget:B})}),...o?{externalDatasetBinding:o}:{},...e.sourceCandidate?{sourceCandidate:e.sourceCandidate}:{}};if(o&&(o.packageHash!==w.contentHash||o.environmentHash!==n(p.environment)||o.privateDatasetClosureHash!==n(w.files.filter(c=>c.asset.visibility!=="policy").map(c=>c.asset))))throw new Error("External Dataset package/environment/private closure changed.");let de=j.parse({provider:t.modelRef.providerId,model:t.modelRef.modelId,revision:null,artifactHash:t.hostArtifactHash??null,tokenizerRevision:null,chatTemplateHash:null}),O=await e.modelConfigurationHash(t.modelRef,t),I=G({schemaVersion:"openpond.tasksetRunManifest.v1",id:t.id,tasksetRelease:u.tasksetRelease,packageHash:w.contentHash,execution:{kind:"harness",harnessRelease:r.harnessRelease},profileEvaluation:ce,policy:{kind:"model",model:de,configurationHash:O},gradingRole:"evaluation",metricPolicy:F(p),population:o?o.population.map(c=>({...c,receiptId:`evaluation-${n([t.id,c.taskId,c.seed,c.fixtureId]).slice(0,32)}`})):u.taskIds.flatMap(c=>u.seeds.map(x=>({receiptId:`evaluation-${n([t.id,c,x]).slice(0,32)}`,taskId:c,seed:x,fixtureId:null}))),runtimeTarget:B,limits:{maxTurns:128,timeoutMs:p.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:t.maximumSpendUsd??null},createdAt:t.createdAt,metadata:{sourceTasksetId:p.metadata.sourceTasksetId??p.id,...r.profileRef.source==="openpond_git"?{profileRepositoryId:r.profileRef.repositoryId}:{},...t.hostExperiment?{experimentDefinition:t.hostExperiment.definition,experimentConfigurationHash:t.hostExperiment.configurationHash,...t.hostExperiment.project?{project:t.hostExperiment.project}:{}}:{}}});if(T(I,p,m),s&&await s.authorize(),t.expectedManifestHash&&I.contentHash!==t.expectedManifestHash)throw new Error("Profile evaluation setup changed since preview; prepare the run again.");return{manifest:I,taskset:p,profileRef:r.profileRef,binding:z,modelRef:t.modelRef,modelConfigurationHash:O}}}d(vt,"createProfileEvaluationRunPreparationService");export{ne as a,Me as b,ge as c,$e as d,at as e,Re as f,lt as g,vt as h};
@@ -1,18 +1,18 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{d as F}from"./chunk-5CMKGD43.js";import{a as o}from"./chunk-FTQLQJQV.js";import{spawn as nt,spawnSync as At}from"node:child_process";import{accessSync as vt,constants as Rt,existsSync as _t,promises as Bt}from"node:fs";import et from"node:path";var rt="Git is required for OpenPond app workspaces, but macOS reports Apple Command Line Tools are not installed. OpenPond skipped /usr/bin/git to avoid opening the Xcode installer prompt. Install Command Line Tools with `xcode-select --install`, install Git from Homebrew, or put a non-Apple git binary earlier on PATH.",T;function Lt(e){try{return _t(e)?(vt(e,Rt.X_OK),!0):!1}catch{return!1}}o(Lt,"isExecutable");function Ot(){let e=(process.env.PATH??"").split(et.delimiter).map(t=>t.trim()).filter(Boolean);for(let t of e){let n=et.join(t,"git");if(!(n==="/usr/bin/git"||n==="/bin/git")&&Lt(n))return n}return null}o(Ot,"firstNonAppleGitOnPath");function it(){let e=At("/usr/bin/xcode-select",["-p"],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return e.status===0&&!!e.stdout.trim()}o(it,"appleDeveloperToolsAvailable");function Dt(e){if(e!=="git"||process.platform!=="darwin")return{command:e};if(T!==void 0)return{command:T};let t=Ot();return t?(T=t,{command:t}):it()?(T="git",{command:"git"}):{error:rt}}o(Dt,"resolveWorkspaceCommand");function u(e,t,n,r={},i){return new Promise(s=>{let a=Dt(e);if("error"in a){s({code:1,stdout:"",stderr:a.error});return}let c=nt(a.command,t,{cwd:n,env:{...process.env,...r,GIT_TERMINAL_PROMPT:"0"},stdio:[i===void 0?"ignore":"pipe","pipe","pipe"]}),d=[],p=[];i!==void 0&&c.stdin?.end(i),c.stdout?.on("data",h=>d.push(h)),c.stderr?.on("data",h=>p.push(h)),c.on("error",h=>{s({code:1,stdout:"",stderr:h.message})}),c.on("close",h=>{s({code:h??1,stdout:Buffer.concat(d).toString("utf8"),stderr:Buffer.concat(p).toString("utf8")})})})}o(u,"runCommand");function Gt(e){return!!(e&&e.includes(rt.slice(0,80)))}o(Gt,"isMacOSGitDeveloperToolsMissing");async function Se(e){await Bt.mkdir(e,{recursive:!0});let t=await u("git",["--version"],e);if(t.code===0)return{ok:!0,command:T??"git",version:(t.stdout||t.stderr).trim()};let n=t.stderr.trim()||t.stdout.trim()||"Git is required for OpenPond app workspaces.";return{ok:!1,error:n,installAction:process.platform==="darwin"&&Gt(n)?"macos_command_line_tools":"manual_git_install"}}o(Se,"checkWorkspaceGitAvailability");function ye(){if(process.platform!=="darwin")return{ok:!1,error:"Apple Command Line Tools installation is only available on macOS."};if(it())return{ok:!0,message:"Apple Command Line Tools already appear to be installed."};try{return nt("/usr/bin/xcode-select",["--install"],{detached:!0,stdio:"ignore"}).unref(),{ok:!0,message:"Opened the Apple Command Line Tools installer."}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}o(ye,"startMacOSCommandLineToolsInstall");import{promises as k}from"node:fs";import m from"node:path";var st=24e3,ot=8e4,It=512*1024,ct=15*1024*1024,Tt=20*1024*1024,Mt=new Set([".cache",".eggs",".git",".ipynb_checkpoints",".mypy_cache",".next",".nox",".nuxt",".openpond",".output",".parcel-cache",".pytest_cache",".pyre",".ruff_cache",".svelte-kit",".tox",".turbo",".venv","__pycache__","artifacts","build","coverage","dist","env","node_modules","out","site-packages","target","venv","volumes"]),zt=new Set([".7z",".avif",".db",".doc",".docx",".gif",".gz",".ico",".jpeg",".jpg",".mov",".mp4",".pdf",".png",".sqlite",".tar",".webp",".xls",".xlsm",".xlsx",".zip"]),$t=new Map([[".avif","image/avif"],[".gif","image/gif"],[".jpeg","image/jpeg"],[".jpg","image/jpeg"],[".png","image/png"],[".webp","image/webp"]]),Nt=new Map([[".m4v","video/x-m4v"],[".mov","video/quicktime"],[".mp4","video/mp4"],[".webm","video/webm"]]),Ht=new Set([".doc",".docx",".pdf"]);function Ut(e){return e.replace(/[^a-zA-Z0-9._-]/g,"-").slice(0,120)||"app"}o(Ut,"safeAppSegment");function N(e){if(!e)return"unknown";try{let t=new URL(e).hostname.toLowerCase();if(t==="github.com"||t.endsWith(".github.com"))return"github";if(t==="openpond.ai"||t.endsWith(".openpond.ai"))return"openpond"}catch{return"unknown"}return"local_git"}o(N,"sourceFromRemote");function $(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@").replace(/Authorization:\s*Basic\s+[A-Za-z0-9+/=]+/gi,"Authorization: Basic ***")}o($,"redactRemoteUrl");async function G(e){try{return await k.access(e),!0}catch{return!1}}o(G,"pathExists");async function O(e){return await G(e)?(await u("git",["rev-parse","--git-dir"],e)).code===0:!1}o(O,"isGitRepo");function X(e){return e.length<=st?e:`${e.slice(0,st)}
2
+ import{d as F}from"./chunk-5CMKGD43.js";import{a as o}from"./chunk-FTQLQJQV.js";import{spawn as nt,spawnSync as At}from"node:child_process";import{accessSync as vt,constants as Rt,existsSync as _t,promises as Bt}from"node:fs";import et from"node:path";var rt="Git is required for OpenPond app workspaces, but macOS reports Apple Command Line Tools are not installed. OpenPond skipped /usr/bin/git to avoid opening the Xcode installer prompt. Install Command Line Tools with `xcode-select --install`, install Git from Homebrew, or put a non-Apple git binary earlier on PATH.",T;function Lt(e){try{return _t(e)?(vt(e,Rt.X_OK),!0):!1}catch{return!1}}o(Lt,"isExecutable");function Ot(){let e=(process.env.PATH??"").split(et.delimiter).map(t=>t.trim()).filter(Boolean);for(let t of e){let n=et.join(t,"git");if(!(n==="/usr/bin/git"||n==="/bin/git")&&Lt(n))return n}return null}o(Ot,"firstNonAppleGitOnPath");function it(){let e=At("/usr/bin/xcode-select",["-p"],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return e.status===0&&!!e.stdout.trim()}o(it,"appleDeveloperToolsAvailable");function Dt(e){if(e!=="git"||process.platform!=="darwin")return{command:e};if(T!==void 0)return{command:T};let t=Ot();return t?(T=t,{command:t}):it()?(T="git",{command:"git"}):{error:rt}}o(Dt,"resolveWorkspaceCommand");function u(e,t,n,r={},i){return new Promise(s=>{let a=Dt(e);if("error"in a){s({code:1,stdout:"",stderr:a.error});return}let c=nt(a.command,t,{cwd:n,env:{...process.env,...r,GIT_TERMINAL_PROMPT:"0"},stdio:[i===void 0?"ignore":"pipe","pipe","pipe"]}),d=[],p=[];i!==void 0&&c.stdin?.end(i),c.stdout?.on("data",h=>d.push(h)),c.stderr?.on("data",h=>p.push(h)),c.on("error",h=>{s({code:1,stdout:"",stderr:h.message})}),c.on("close",h=>{s({code:h??1,stdout:Buffer.concat(d).toString("utf8"),stderr:Buffer.concat(p).toString("utf8")})})})}o(u,"runCommand");function Gt(e){return!!(e&&e.includes(rt.slice(0,80)))}o(Gt,"isMacOSGitDeveloperToolsMissing");async function ye(e){await Bt.mkdir(e,{recursive:!0});let t=await u("git",["--version"],e);if(t.code===0)return{ok:!0,command:T??"git",version:(t.stdout||t.stderr).trim()};let n=t.stderr.trim()||t.stdout.trim()||"Git is required for OpenPond app workspaces.";return{ok:!1,error:n,installAction:process.platform==="darwin"&&Gt(n)?"macos_command_line_tools":"manual_git_install"}}o(ye,"checkWorkspaceGitAvailability");function be(){if(process.platform!=="darwin")return{ok:!1,error:"Apple Command Line Tools installation is only available on macOS."};if(it())return{ok:!0,message:"Apple Command Line Tools already appear to be installed."};try{return nt("/usr/bin/xcode-select",["--install"],{detached:!0,stdio:"ignore"}).unref(),{ok:!0,message:"Opened the Apple Command Line Tools installer."}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}o(be,"startMacOSCommandLineToolsInstall");import{promises as k}from"node:fs";import m from"node:path";import It from"node:os";var st=24e3,ot=8e4,Tt=512*1024,ct=15*1024*1024,Mt=20*1024*1024,zt=new Set([".cache",".eggs",".git",".ipynb_checkpoints",".mypy_cache",".next",".nox",".nuxt",".openpond",".output",".parcel-cache",".pytest_cache",".pyre",".ruff_cache",".svelte-kit",".tox",".turbo",".venv","__pycache__","artifacts","build","coverage","dist","env","node_modules","out","site-packages","target","venv","volumes"]),$t=new Set([".7z",".avif",".db",".doc",".docx",".gif",".gz",".ico",".jpeg",".jpg",".mov",".mp4",".pdf",".png",".sqlite",".tar",".webp",".xls",".xlsm",".xlsx",".zip"]),Nt=new Map([[".avif","image/avif"],[".gif","image/gif"],[".jpeg","image/jpeg"],[".jpg","image/jpeg"],[".png","image/png"],[".webp","image/webp"]]),Ht=new Map([[".m4v","video/x-m4v"],[".mov","video/quicktime"],[".mp4","video/mp4"],[".webm","video/webm"]]),Ut=new Set([".doc",".docx",".pdf"]);function jt(e){return e.replace(/[^a-zA-Z0-9._-]/g,"-").slice(0,120)||"app"}o(jt,"safeAppSegment");function N(e){if(!e)return"unknown";try{let t=new URL(e).hostname.toLowerCase();if(t==="github.com"||t.endsWith(".github.com"))return"github";if(t==="openpond.ai"||t.endsWith(".openpond.ai"))return"openpond"}catch{return"unknown"}return"local_git"}o(N,"sourceFromRemote");function $(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@").replace(/Authorization:\s*Basic\s+[A-Za-z0-9+/=]+/gi,"Authorization: Basic ***")}o($,"redactRemoteUrl");async function G(e){try{return await k.access(e),!0}catch{return!1}}o(G,"pathExists");async function O(e){return await G(e)?(await u("git",["rev-parse","--git-dir"],e)).code===0:!1}o(O,"isGitRepo");function X(e){return e.length<=st?e:`${e.slice(0,st)}
3
3
 
4
- [diff truncated]`}o(X,"truncatePatch");function jt(e){return e.length<=ot?e:`${e.slice(0,ot)}
4
+ [diff truncated]`}o(X,"truncatePatch");function qt(e){return e.length<=ot?e:`${e.slice(0,ot)}
5
5
 
6
- [file truncated]`}o(jt,"truncateFileContent");async function I(e,t){let n=m.resolve(e,t),r=m.resolve(e);if(n!==r&&!n.startsWith(`${r}${m.sep}`))return null;try{let i=await k.lstat(n);return!i.isFile()||!Kt(t,i.size)?null:jt(await k.readFile(n,"utf8"))}catch{return null}}o(I,"readWorkspaceFile");async function V(e,t){let n=w(t);if(!n||!Ht.has(m.extname(n).toLowerCase()))return null;let r=m.resolve(e,n),i=m.resolve(e);if(r!==i&&!r.startsWith(`${i}${m.sep}`))return null;try{let s=await k.lstat(r);return!s.isFile()||s.size>Tt?null:(await k.readFile(r)).toString("base64")}catch{return null}}o(V,"readWorkspaceDocumentPreview");function lt(e){return $t.get(m.extname(e).toLowerCase())??null}o(lt,"workspaceImageContentType");function qt(e){return Nt.get(m.extname(e).toLowerCase())??null}o(qt,"localVideoContentType");async function ut(e,t){let n=w(t);if(!n)return null;let r=lt(n);if(!r)return null;let i=m.resolve(e,n),s=m.resolve(e);if(i!==s&&!i.startsWith(`${s}${m.sep}`))return null;try{let a=await k.lstat(i);return!a.isFile()||a.size>ct?null:{path:n,contentType:r,bytes:await k.readFile(i),sizeBytes:a.size}}catch{return null}}o(ut,"readWorkspaceImageFile");async function Ae(e){let t=dt(e);if(!t)return null;let n=lt(t);if(!n)return null;let r=m.resolve(t);try{let i=await k.lstat(r);return!i.isFile()||i.size>ct?null:{path:r,contentType:n,bytes:await k.readFile(r),sizeBytes:i.size}}catch{return null}}o(Ae,"readLocalImageFile");async function ve(e){let t=dt(e);if(!t)return null;let n=qt(t);if(!n)return null;let r=m.resolve(t);try{let i=await k.lstat(r);return i.isFile()?{path:r,contentType:n,sizeBytes:i.size}:null}catch{return null}}o(ve,"readLocalVideoFile");function dt(e){let t=e.trim();if(!t)return null;if(t=t.replace(/^['"`]+|['"`]+$/g,""),t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.replace(/^file:\/\//,"")}return m.isAbsolute(t)?t:null}o(dt,"cleanLocalAssetPath");function Kt(e,t){return t>It?!1:!zt.has(m.extname(e).toLowerCase())}o(Kt,"isReadableTextWorkspaceFile");async function pt(e,t){let n=m.resolve(e,t),r=m.resolve(e);if(n!==r&&!n.startsWith(`${r}${m.sep}`))return!1;try{return(await k.lstat(n)).isDirectory()}catch{return!1}}o(pt,"isWorkspaceDirectory");function w(e){let t=e.replace(/\\/g,"/").replace(/^\.\/+/,"");if(!t.trim()||t.startsWith("/"))return null;let n=t.split("/").filter(Boolean);return n.length===0||n.some(r=>r===".."||r===".git")?null:n.join("/")}o(w,"normalizeWorkspaceFilePath");function y(e){let t=w(e);return t?t.split("/").some(n=>Mt.has(n)||n===".env"||n.startsWith(".env.")||n.endsWith(".egg-info")||n.endsWith(".pyc")||n.endsWith(".pyo")):!0}o(y,"isGeneratedWorkspacePath");async function ft(e,t){if(y(t))return!1;let n=await u("git",["ls-files","--cached","--others","--exclude-standard","--",t],e);return n.code!==0?!1:n.stdout.split(`
6
+ [file truncated]`}o(qt,"truncateFileContent");async function I(e,t){let n=m.resolve(e,t),r=m.resolve(e);if(n!==r&&!n.startsWith(`${r}${m.sep}`))return null;try{let i=await k.lstat(n);return!i.isFile()||!Xt(t,i.size)?null:qt(await k.readFile(n,"utf8"))}catch{return null}}o(I,"readWorkspaceFile");async function V(e,t){let n=w(t);if(!n||!Ut.has(m.extname(n).toLowerCase()))return null;let r=m.resolve(e,n),i=m.resolve(e);if(r!==i&&!r.startsWith(`${i}${m.sep}`))return null;try{let s=await k.lstat(r);return!s.isFile()||s.size>Mt?null:(await k.readFile(r)).toString("base64")}catch{return null}}o(V,"readWorkspaceDocumentPreview");function lt(e){return Nt.get(m.extname(e).toLowerCase())??null}o(lt,"workspaceImageContentType");function Kt(e){return Ht.get(m.extname(e).toLowerCase())??null}o(Kt,"localVideoContentType");async function ut(e,t){let n=w(t);if(!n)return null;let r=lt(n);if(!r)return null;let i=m.resolve(e,n),s=m.resolve(e);if(i!==s&&!i.startsWith(`${s}${m.sep}`))return null;try{let a=await k.lstat(i);return!a.isFile()||a.size>ct?null:{path:n,contentType:r,bytes:await k.readFile(i),sizeBytes:a.size}}catch{return null}}o(ut,"readWorkspaceImageFile");async function Re(e){let t=dt(e);if(!t)return null;let n=lt(t);if(!n)return null;let r=m.resolve(t);try{let i=await k.lstat(r);return!i.isFile()||i.size>ct?null:{path:r,contentType:n,bytes:await k.readFile(r),sizeBytes:i.size}}catch{return null}}o(Re,"readLocalImageFile");async function _e(e){let t=dt(e);if(!t)return null;let n=Kt(t);if(!n)return null;let r=m.resolve(t);try{let i=await k.lstat(r);return i.isFile()?{path:r,contentType:n,sizeBytes:i.size}:null}catch{return null}}o(_e,"readLocalVideoFile");function dt(e){let t=e.trim();if(!t)return null;if(t=t.replace(/^['"`]+|['"`]+$/g,""),t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.replace(/^file:\/\//,"")}return t.startsWith("~/")&&(t=m.join(It.homedir(),t.slice(2))),m.isAbsolute(t)?t:null}o(dt,"cleanLocalAssetPath");function Xt(e,t){return t>Tt?!1:!$t.has(m.extname(e).toLowerCase())}o(Xt,"isReadableTextWorkspaceFile");async function pt(e,t){let n=m.resolve(e,t),r=m.resolve(e);if(n!==r&&!n.startsWith(`${r}${m.sep}`))return!1;try{return(await k.lstat(n)).isDirectory()}catch{return!1}}o(pt,"isWorkspaceDirectory");function w(e){let t=e.replace(/\\/g,"/").replace(/^\.\/+/,"");if(!t.trim()||t.startsWith("/"))return null;let n=t.split("/").filter(Boolean);return n.length===0||n.some(r=>r===".."||r===".git")?null:n.join("/")}o(w,"normalizeWorkspaceFilePath");function y(e){let t=w(e);return t?t.split("/").some(n=>zt.has(n)||n===".env"||n.startsWith(".env.")||n.endsWith(".egg-info")||n.endsWith(".pyc")||n.endsWith(".pyo")):!0}o(y,"isGeneratedWorkspacePath");async function ft(e,t){if(y(t))return!1;let n=await u("git",["ls-files","--cached","--others","--exclude-standard","--",t],e);return n.code!==0?!1:n.stdout.split(`
7
7
  `).map(r=>r.trim()).some(r=>r===t)}o(ft,"isVisibleGitWorkspaceFile");function M(e){if(!e.trim()||e.startsWith("## "))return null;let t=e.slice(0,2),n=e.slice(3).trim(),r=n.includes(" -> ")?n.split(" -> ").pop().trim():n;return r?t==="??"?{path:r,status:"untracked"}:t.includes("A")?{path:r,status:"added"}:t.includes("D")?{path:r,status:"deleted"}:t.includes("R")?{path:r,status:"renamed"}:{path:r,status:"modified"}:null}o(M,"parseStatusLine");function mt(e){let t=e.replace(/^##\s*/,"").split("...")[1]?.trim();if(!t)return{upstreamBranch:null,ahead:0,behind:0};let n=t.indexOf("["),r=(n>=0?t.slice(0,n):t).trim()||null,i=t.match(/ahead\s+(\d+)/),s=t.match(/behind\s+(\d+)/);return{upstreamBranch:r,ahead:i&&Number(i[1])||0,behind:s&&Number(s[1])||0}}o(mt,"parseBranchStatusLine");function H(e){let t=new Map;for(let n of e.split(`
8
- `)){if(!n.trim())continue;let[r,i,...s]=n.split(" "),a=s.join(" ").trim();a&&t.set(a,{additions:r==="-"?0:Number(r)||0,deletions:i==="-"?0:Number(i)||0})}return t}o(H,"parseNumstat");function U(e){return Array.from(new Set(e.filter(Boolean))).sort((t,n)=>t.localeCompare(n))}o(U,"uniqueSortedPaths");var at=2e3;async function ht(e){let t=[];async function n(r,i=""){if(t.length>=at)return;let s;try{s=await k.readdir(r,{withFileTypes:!0})}catch{return}s.sort((a,c)=>a.name.localeCompare(c.name));for(let a of s){if(t.length>=at)return;let c=i?`${i}/${a.name}`:a.name;if(y(c))continue;let d=m.join(r,a.name);a.isDirectory()?await n(d,c):a.isFile()&&t.push(c)}}return o(n,"walk"),await n(e),U(t)}o(ht,"listPlainWorkspaceFiles");function gt(e){let t=e?.trim();if(!t)return null;try{return new URL(t.includes("://")?t:`https://${t}`).host.replace(/\/+$/,"")}catch{return t.replace(/^https?:\/\//i,"").replace(/\/+$/,"")}}o(gt,"normalizeGitHost");function Xt(e){let t=e?.trim();if(!t)return null;try{let n=new URL(t);return{protocol:n.protocol||"https:",host:n.host}}catch{return null}}o(Xt,"normalizeGitBaseUrl");function Vt(e){let t=gt(e);return!t||t==="openpond.ai"||t==="www.openpond.ai"}o(Vt,"isDefaultOpenPondGitHost");function wt(e,t){let n=e.gitOwner?.trim(),r=e.gitRepo?.trim();if(!n||!r)return null;let i=Xt(t),s=gt(e.gitHost),a=i&&Vt(s)?i.host:s||i?.host||"openpond.ai",c=i&&a===i.host?i.protocol:"https:",d=r.endsWith(".git")?r:`${r}.git`;return`${c}//${a}/${n}/${d}`}o(wt,"expectedRemoteUrl");function Yt(e){try{let t=new URL(e).hostname.toLowerCase();return t==="openpond.ai"||t.endsWith(".openpond.ai")}catch{return!1}}o(Yt,"isOpenPondRemote");function Jt(e,t){return!t||!Yt(e)?{}:{GIT_CONFIG_COUNT:"1",GIT_CONFIG_KEY_0:"http.extraHeader",GIT_CONFIG_VALUE_0:`Authorization: Basic ${Buffer.from(`x-access-token:${t}`,"utf8").toString("base64")}`}}o(Jt,"gitBasicAuthEnv");function Y(e){let t=e.trim();if(!t)throw new Error("Branch name is required");if(t.includes(".."))throw new Error("Branch name cannot contain '..'");if(/[~^:\\\s]/.test(t))throw new Error("Branch name contains unsupported characters");if(t.startsWith("/")||t.endsWith("/")||t.startsWith("-"))throw new Error("Branch name is not safe")}o(Y,"assertSafeBranchName");function R(e,t){let n=m.join(e,"workspaces",Ut(t));return{workspacePath:n,repoPath:m.join(n,"repo")}}o(R,"appWorkspacePaths");async function kt(e,t,n,r){await k.mkdir(t,{recursive:!0});let i=await G(e),s=await u("git",["clone","--quiet",n,e],t,Jt(n,r));if(s.code!==0)throw i||await k.rm(e,{recursive:!0,force:!0}).catch(()=>null),new Error($(s.stderr.trim()||s.stdout.trim()||"git clone failed"));let a=await u("git",["remote","set-url","origin",n],e);if(a.code!==0)throw new Error($(a.stderr.trim()||a.stdout.trim()||"git remote set-url failed"))}o(kt,"cloneWorkspace");async function Wt(e){let t=await u("git",["rev-parse","--git-path","FETCH_HEAD"],e),n=t.code===0&&t.stdout.trim()?m.resolve(e,t.stdout.trim()):m.join(e,".git","FETCH_HEAD");try{return(await k.stat(n)).mtime.toISOString()}catch{return null}}o(Wt,"lastFetchAt");import{promises as Zt}from"node:fs";async function Ge(e,t,n={}){return z(R(e,t.id),t,n)}o(Ge,"loadWorkspaceState");async function z(e,t,n={}){let{workspacePath:r,repoPath:i}=e,s=wt(t,n.gitBaseUrl);await Zt.mkdir(r,{recursive:!0});let a=await O(i),c=null;if(!a&&n.clone&&s)try{await kt(i,r,s,n.token),a=!0}catch(g){c=g instanceof Error?g.message:String(g)}if(!a)return n.allowPlainFolder&&await G(i)?{appId:t.id,source:"local_folder",workspacePath:r,repoPath:i,initialized:!0,remoteUrl:null,expectedRemoteUrl:s,currentBranch:null,headCommit:null,upstreamBranch:null,ahead:0,behind:0,diverged:!1,linkedSourceHeadCommit:n.linkedSourceHeadCommit?.trim()||null,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,linkedSourceComparisonError:null,lastFetchAt:null,defaultBranch:t.defaultBranch??null,branches:[],dirty:!1,changedFilesCount:0,untrackedFilesCount:0,error:c,updatedAt:F()}:{appId:t.id,source:N(s),workspacePath:r,repoPath:i,initialized:a,remoteUrl:null,expectedRemoteUrl:s,currentBranch:null,headCommit:null,upstreamBranch:null,ahead:0,behind:0,diverged:!1,linkedSourceHeadCommit:n.linkedSourceHeadCommit?.trim()||null,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,linkedSourceComparisonError:null,lastFetchAt:null,defaultBranch:t.defaultBranch??null,branches:[],dirty:!1,changedFilesCount:0,untrackedFilesCount:0,error:c,updatedAt:F()};let[d,p,h,b,A]=await Promise.all([u("git",["branch","--show-current"],i),u("git",["branch","--format=%(refname:short)"],i),u("git",["status","--porcelain=v1","-b"],i),u("git",["config","--get","remote.origin.url"],i),u("git",["rev-parse","--verify","HEAD"],i)]),v=b.code===0&&$(b.stdout.trim())||null,S=h.code===0?h.stdout.split(`
8
+ `)){if(!n.trim())continue;let[r,i,...s]=n.split(" "),a=s.join(" ").trim();a&&t.set(a,{additions:r==="-"?0:Number(r)||0,deletions:i==="-"?0:Number(i)||0})}return t}o(H,"parseNumstat");function U(e){return Array.from(new Set(e.filter(Boolean))).sort((t,n)=>t.localeCompare(n))}o(U,"uniqueSortedPaths");var at=2e3;async function ht(e){let t=[];async function n(r,i=""){if(t.length>=at)return;let s;try{s=await k.readdir(r,{withFileTypes:!0})}catch{return}s.sort((a,c)=>a.name.localeCompare(c.name));for(let a of s){if(t.length>=at)return;let c=i?`${i}/${a.name}`:a.name;if(y(c))continue;let d=m.join(r,a.name);a.isDirectory()?await n(d,c):a.isFile()&&t.push(c)}}return o(n,"walk"),await n(e),U(t)}o(ht,"listPlainWorkspaceFiles");function gt(e){let t=e?.trim();if(!t)return null;try{return new URL(t.includes("://")?t:`https://${t}`).host.replace(/\/+$/,"")}catch{return t.replace(/^https?:\/\//i,"").replace(/\/+$/,"")}}o(gt,"normalizeGitHost");function Vt(e){let t=e?.trim();if(!t)return null;try{let n=new URL(t);return{protocol:n.protocol||"https:",host:n.host}}catch{return null}}o(Vt,"normalizeGitBaseUrl");function Yt(e){let t=gt(e);return!t||t==="openpond.ai"||t==="www.openpond.ai"}o(Yt,"isDefaultOpenPondGitHost");function wt(e,t){let n=e.gitOwner?.trim(),r=e.gitRepo?.trim();if(!n||!r)return null;let i=Vt(t),s=gt(e.gitHost),a=i&&Yt(s)?i.host:s||i?.host||"openpond.ai",c=i&&a===i.host?i.protocol:"https:",d=r.endsWith(".git")?r:`${r}.git`;return`${c}//${a}/${n}/${d}`}o(wt,"expectedRemoteUrl");function Jt(e){try{let t=new URL(e).hostname.toLowerCase();return t==="openpond.ai"||t.endsWith(".openpond.ai")}catch{return!1}}o(Jt,"isOpenPondRemote");function Zt(e,t){return!t||!Jt(e)?{}:{GIT_CONFIG_COUNT:"1",GIT_CONFIG_KEY_0:"http.extraHeader",GIT_CONFIG_VALUE_0:`Authorization: Basic ${Buffer.from(`x-access-token:${t}`,"utf8").toString("base64")}`}}o(Zt,"gitBasicAuthEnv");function Y(e){let t=e.trim();if(!t)throw new Error("Branch name is required");if(t.includes(".."))throw new Error("Branch name cannot contain '..'");if(/[~^:\\\s]/.test(t))throw new Error("Branch name contains unsupported characters");if(t.startsWith("/")||t.endsWith("/")||t.startsWith("-"))throw new Error("Branch name is not safe")}o(Y,"assertSafeBranchName");function R(e,t){let n=m.join(e,"workspaces",jt(t));return{workspacePath:n,repoPath:m.join(n,"repo")}}o(R,"appWorkspacePaths");async function kt(e,t,n,r){await k.mkdir(t,{recursive:!0});let i=await G(e),s=await u("git",["clone","--quiet",n,e],t,Zt(n,r));if(s.code!==0)throw i||await k.rm(e,{recursive:!0,force:!0}).catch(()=>null),new Error($(s.stderr.trim()||s.stdout.trim()||"git clone failed"));let a=await u("git",["remote","set-url","origin",n],e);if(a.code!==0)throw new Error($(a.stderr.trim()||a.stdout.trim()||"git remote set-url failed"))}o(kt,"cloneWorkspace");async function Wt(e){let t=await u("git",["rev-parse","--git-path","FETCH_HEAD"],e),n=t.code===0&&t.stdout.trim()?m.resolve(e,t.stdout.trim()):m.join(e,".git","FETCH_HEAD");try{return(await k.stat(n)).mtime.toISOString()}catch{return null}}o(Wt,"lastFetchAt");import{promises as Qt}from"node:fs";async function Te(e,t,n={}){return z(R(e,t.id),t,n)}o(Te,"loadWorkspaceState");async function z(e,t,n={}){let{workspacePath:r,repoPath:i}=e,s=wt(t,n.gitBaseUrl);await Qt.mkdir(r,{recursive:!0});let a=await O(i),c=null;if(!a&&n.clone&&s)try{await kt(i,r,s,n.token),a=!0}catch(g){c=g instanceof Error?g.message:String(g)}if(!a)return n.allowPlainFolder&&await G(i)?{appId:t.id,source:"local_folder",workspacePath:r,repoPath:i,initialized:!0,remoteUrl:null,expectedRemoteUrl:s,currentBranch:null,headCommit:null,upstreamBranch:null,ahead:0,behind:0,diverged:!1,linkedSourceHeadCommit:n.linkedSourceHeadCommit?.trim()||null,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,linkedSourceComparisonError:null,lastFetchAt:null,defaultBranch:t.defaultBranch??null,branches:[],dirty:!1,changedFilesCount:0,untrackedFilesCount:0,error:c,updatedAt:F()}:{appId:t.id,source:N(s),workspacePath:r,repoPath:i,initialized:a,remoteUrl:null,expectedRemoteUrl:s,currentBranch:null,headCommit:null,upstreamBranch:null,ahead:0,behind:0,diverged:!1,linkedSourceHeadCommit:n.linkedSourceHeadCommit?.trim()||null,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,linkedSourceComparisonError:null,lastFetchAt:null,defaultBranch:t.defaultBranch??null,branches:[],dirty:!1,changedFilesCount:0,untrackedFilesCount:0,error:c,updatedAt:F()};let[d,p,h,b,A]=await Promise.all([u("git",["branch","--show-current"],i),u("git",["branch","--format=%(refname:short)"],i),u("git",["status","--porcelain=v1","-b"],i),u("git",["config","--get","remote.origin.url"],i),u("git",["rev-parse","--verify","HEAD"],i)]),v=b.code===0&&$(b.stdout.trim())||null,S=h.code===0?h.stdout.split(`
9
9
  `).filter(g=>g.trim()):[],C=mt(S.find(g=>g.startsWith("## "))??""),f=S.filter(g=>{if(g.startsWith("## "))return!1;let D=M(g),tt=D?w(D.path):null;return!!(tt&&!y(tt))}),x=f.filter(g=>g.startsWith("??")).length,E=d.code===0&&d.stdout.trim()?d.stdout.trim():null,L=A.code===0&&A.stdout.trim()||null,q=p.code===0?p.stdout.split(`
10
- `).map(g=>g.trim()).filter(Boolean):[],l=N(v)==="unknown"&&s?s:v??s,W=await Qt(i,n.linkedSourceHeadCommit,L);return{appId:t.id,source:l?N(l):"local_git",workspacePath:r,repoPath:i,initialized:a,remoteUrl:v,expectedRemoteUrl:s,currentBranch:E,headCommit:L,upstreamBranch:C.upstreamBranch,ahead:C.ahead,behind:C.behind,diverged:C.ahead>0&&C.behind>0,linkedSourceHeadCommit:W.linkedSourceHeadCommit,aheadOfLinkedSource:W.aheadOfLinkedSource,behindLinkedSource:W.behindLinkedSource,divergedFromLinkedSource:W.divergedFromLinkedSource,linkedSourceComparisonError:W.error,lastFetchAt:await Wt(i),defaultBranch:t.defaultBranch??null,branches:q,dirty:f.length>0,changedFilesCount:f.length,untrackedFilesCount:x,error:c,updatedAt:F()}}o(z,"loadWorkspaceStateAtPath");async function Qt(e,t,n){let r=t?.trim()||null,i={linkedSourceHeadCommit:r,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,error:null};if(!r||!n||r===n)return i;let s=await u("git",["rev-list","--left-right","--count",`${r}...${n}`],e);if(s.code!==0)return{...i,error:s.stderr.trim()||s.stdout.trim()||"Unable to compare linked source commit."};let[a,c]=s.stdout.trim().split(/\s+/,2),d=Number(a)||0,p=Number(c)||0;return{linkedSourceHeadCommit:r,aheadOfLinkedSource:p,behindLinkedSource:d,divergedFromLinkedSource:p>0&&d>0,error:null}}o(Qt,"compareLinkedSourceCommit");async function Ie(e,t,n){return te(R(e,t.id),t,n)}o(Ie,"createAndCheckoutBranch");async function te(e,t,n,r={}){Y(n);let i=await z(e,t,{...r,clone:!1});if(!i.initialized)throw new Error(i.error||"Workspace is not initialized");let s=await u("git",["checkout","-b",n.trim()],i.repoPath);if(s.code!==0)throw new Error(s.stderr.trim()||s.stdout.trim()||"Unable to create branch");return z(e,t,{...r,clone:!1})}o(te,"createAndCheckoutBranchAtPath");async function Te(e,t,n){return ee(R(e,t.id),t,n)}o(Te,"checkoutBranch");async function ee(e,t,n,r={}){Y(n);let i=await z(e,t,{...r,clone:!1});if(!i.initialized)throw new Error(i.error||"Workspace is not initialized");if(i.dirty&&i.currentBranch!==n.trim())throw new Error("Commit or discard local changes before switching branches");let s=await u("git",["checkout",n.trim()],i.repoPath);if(s.code!==0)throw new Error(s.stderr.trim()||s.stdout.trim()||"Unable to switch branch");return z(e,t,{...r,clone:!1})}o(ee,"checkoutBranchAtPath");import P from"node:path";import{promises as yt}from"node:fs";var ne=6,re=60,Pt=1e4,_=new Map;async function j(e,t,n=ne){let r=Math.max(1,Math.floor(n)),i=new Array(e.length),s=0;async function a(){for(;s<e.length;){let c=s;s+=1,i[c]=await t(e[c],c)}}return o(a,"worker"),await Promise.all(Array.from({length:Math.min(r,e.length)},()=>a())),i}o(j,"mapWorkspaceDiffEntriesWithConcurrency");function qe(){_.clear()}o(qe,"clearWorkspaceDiffCacheForTests");async function Ke(e,t,n={}){let{repoPath:r}=R(e,t.id);return ie(r,t.id,n)}o(Ke,"loadWorkspaceDiff");async function ie(e,t,n={}){let r=await O(e);if(!r){let l=await ht(e);return{appId:t,repoPath:e,initialized:l.length>0||await G(e),dirty:!1,filesChanged:0,additions:0,deletions:0,repoFiles:l,files:[],error:null,updatedAt:F()}}let i=await Z(e),s=i.pathPrefix||".",[a,c]=await Promise.all([u("git",["rev-parse","HEAD"],i.commandCwd),u("git",["status","--porcelain=v1","-uall","--",s],i.commandCwd)]);if(c.code!==0)return{appId:t,repoPath:e,initialized:r,dirty:!1,filesChanged:0,additions:0,deletions:0,repoFiles:[],files:[],error:c.stderr.trim()||c.stdout.trim()||"Unable to read workspace diff",updatedAt:F()};let d=c.stdout.split(`
11
- `).map(M).filter(l=>!!l).map(l=>{let W=B(l.path,i.pathPrefix);if(!W)return null;let g=w(W);return g?{...l,path:g}:null}).filter(l=>l?!y(l.path):!1),p=await oe(e,d),h=ae({repoPath:e,workspaceId:t,includeFileDetails:!!n.includeFileDetails,head:a.code===0?a.stdout.trim():"unborn",pathPrefix:i.pathPrefix,status:c.stdout,worktreeSignature:p}),b=_.get(h);if(b)return J(b);let A=(await j(d,async l=>l.status==="deleted"||!await pt(e,l.path)?l:null)).filter(l=>!!l),v=await u("git",["ls-files","--",s],i.commandCwd),S=U([...v.code===0?v.stdout.split(`
12
- `).map(l=>B(l.trim(),i.pathPrefix)).filter(l=>!!l):[],...A.map(l=>l.path)].filter(l=>!y(l))),C=await u("git",["diff","--numstat","HEAD","--",s],i.commandCwd),f=C.code===0?Ct(H(C.stdout),i.pathPrefix):new Map,x=n.includeFileDetails?await le(i,A.filter(l=>l.status!=="untracked")):new Map,E=await j(A,async l=>{let g=(n.includeFileDetails||l.status==="untracked")&&l.status!=="deleted"?await I(e,l.path):null,D=l.status==="untracked"?{additions:bt(g),deletions:0}:f.get(l.path)??{additions:0,deletions:0};return n.includeFileDetails?Ft(e,l,i,D,{content:g,patch:l.status==="untracked"?null:x.get(l.path)??null}):{path:l.path,status:l.status,additions:D.additions,deletions:D.deletions,patch:"",content:null}}),L=E.reduce((l,W)=>l+W.additions,0),q=E.reduce((l,W)=>l+W.deletions,0),K={appId:t,repoPath:e,initialized:r,dirty:E.length>0,filesChanged:E.length,additions:L,deletions:q,repoFiles:S,files:E,error:null,updatedAt:F()};return ce(h,K),J(K)}o(ie,"loadWorkspaceDiffAtPath");async function Xe(e,t,n,r){if(!await O(e))throw new Error("Candidate source is not a Git repository.");let s=await Z(e),a=`${n}..${r}`,[c,d,p,h,b]=await Promise.all([u("git",["rev-parse","--verify",`${n}^{commit}`],s.commandCwd),u("git",["rev-parse","--verify",`${r}^{commit}`],s.commandCwd),u("git",["-c","core.quotePath=false","diff","--name-status","--find-renames",a,"--","."],s.commandCwd),u("git",["-c","core.quotePath=false","diff","--no-ext-diff","--unified=80",a,"--","."],s.commandCwd),u("git",["-c","core.quotePath=false","ls-tree","-r","--name-only",r],s.commandCwd)]);if(c.code!==0||d.code!==0)throw new Error("Candidate Git history is no longer available.");if(p.code!==0)throw new Error(p.stderr.trim()||"Unable to read the candidate change.");let A=se(p.stdout).filter(f=>!y(f.path)),v=h.code===0?xt(h.stdout||h.stderr,""):new Map,S=await j(A,async f=>{let x=await u("git",["diff","--numstat",a,"--",f.path],s.commandCwd),E=x.code===0?[...H(x.stdout).values()][0]??{additions:0,deletions:0}:{additions:0,deletions:0},L=f.status==="deleted"?null:await u("git",["show",`${r}:${f.path}`],s.commandCwd);return{path:f.path,status:f.status,additions:E.additions,deletions:E.deletions,patch:X(v.get(f.path)??""),content:L?.code===0?L.stdout:null}}),C=b.code===0?U(b.stdout.split(`
13
- `).map(f=>f.trim()).filter(f=>f&&!y(f))):S.map(f=>f.path);return{appId:t,repoPath:e,initialized:!0,dirty:S.length>0,filesChanged:S.length,additions:S.reduce((f,x)=>f+x.additions,0),deletions:S.reduce((f,x)=>f+x.deletions,0),repoFiles:C,files:S,error:null,updatedAt:F()}}o(Xe,"loadGitCommitDiffAtPath");function se(e){return e.split(/\r?\n/).filter(Boolean).flatMap(t=>{let[n,r,i]=t.split(" "),s=n?.[0]??"M",a=s==="R"||s==="C"?i:r,c=a?w(a):null;return c?[{path:c,status:s==="A"||s==="C"?"added":s==="D"?"deleted":s==="R"?"renamed":"modified"}]:[]})}o(se,"parseCommitDiffEntries");function bt(e){if(!e)return 0;let t=e.endsWith(`
10
+ `).map(g=>g.trim()).filter(Boolean):[],l=N(v)==="unknown"&&s?s:v??s,W=await te(i,n.linkedSourceHeadCommit,L);return{appId:t.id,source:l?N(l):"local_git",workspacePath:r,repoPath:i,initialized:a,remoteUrl:v,expectedRemoteUrl:s,currentBranch:E,headCommit:L,upstreamBranch:C.upstreamBranch,ahead:C.ahead,behind:C.behind,diverged:C.ahead>0&&C.behind>0,linkedSourceHeadCommit:W.linkedSourceHeadCommit,aheadOfLinkedSource:W.aheadOfLinkedSource,behindLinkedSource:W.behindLinkedSource,divergedFromLinkedSource:W.divergedFromLinkedSource,linkedSourceComparisonError:W.error,lastFetchAt:await Wt(i),defaultBranch:t.defaultBranch??null,branches:q,dirty:f.length>0,changedFilesCount:f.length,untrackedFilesCount:x,error:c,updatedAt:F()}}o(z,"loadWorkspaceStateAtPath");async function te(e,t,n){let r=t?.trim()||null,i={linkedSourceHeadCommit:r,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,error:null};if(!r||!n||r===n)return i;let s=await u("git",["rev-list","--left-right","--count",`${r}...${n}`],e);if(s.code!==0)return{...i,error:s.stderr.trim()||s.stdout.trim()||"Unable to compare linked source commit."};let[a,c]=s.stdout.trim().split(/\s+/,2),d=Number(a)||0,p=Number(c)||0;return{linkedSourceHeadCommit:r,aheadOfLinkedSource:p,behindLinkedSource:d,divergedFromLinkedSource:p>0&&d>0,error:null}}o(te,"compareLinkedSourceCommit");async function Me(e,t,n){return ee(R(e,t.id),t,n)}o(Me,"createAndCheckoutBranch");async function ee(e,t,n,r={}){Y(n);let i=await z(e,t,{...r,clone:!1});if(!i.initialized)throw new Error(i.error||"Workspace is not initialized");let s=await u("git",["checkout","-b",n.trim()],i.repoPath);if(s.code!==0)throw new Error(s.stderr.trim()||s.stdout.trim()||"Unable to create branch");return z(e,t,{...r,clone:!1})}o(ee,"createAndCheckoutBranchAtPath");async function ze(e,t,n){return ne(R(e,t.id),t,n)}o(ze,"checkoutBranch");async function ne(e,t,n,r={}){Y(n);let i=await z(e,t,{...r,clone:!1});if(!i.initialized)throw new Error(i.error||"Workspace is not initialized");if(i.dirty&&i.currentBranch!==n.trim())throw new Error("Commit or discard local changes before switching branches");let s=await u("git",["checkout",n.trim()],i.repoPath);if(s.code!==0)throw new Error(s.stderr.trim()||s.stdout.trim()||"Unable to switch branch");return z(e,t,{...r,clone:!1})}o(ne,"checkoutBranchAtPath");import P from"node:path";import{promises as yt}from"node:fs";var re=6,ie=60,Pt=1e4,_=new Map;async function j(e,t,n=re){let r=Math.max(1,Math.floor(n)),i=new Array(e.length),s=0;async function a(){for(;s<e.length;){let c=s;s+=1,i[c]=await t(e[c],c)}}return o(a,"worker"),await Promise.all(Array.from({length:Math.min(r,e.length)},()=>a())),i}o(j,"mapWorkspaceDiffEntriesWithConcurrency");function Xe(){_.clear()}o(Xe,"clearWorkspaceDiffCacheForTests");async function Ve(e,t,n={}){let{repoPath:r}=R(e,t.id);return se(r,t.id,n)}o(Ve,"loadWorkspaceDiff");async function se(e,t,n={}){let r=await O(e);if(!r){let l=await ht(e);return{appId:t,repoPath:e,initialized:l.length>0||await G(e),dirty:!1,filesChanged:0,additions:0,deletions:0,repoFiles:l,files:[],error:null,updatedAt:F()}}let i=await Z(e),s=i.pathPrefix||".",[a,c]=await Promise.all([u("git",["rev-parse","HEAD"],i.commandCwd),u("git",["status","--porcelain=v1","-uall","--",s],i.commandCwd)]);if(c.code!==0)return{appId:t,repoPath:e,initialized:r,dirty:!1,filesChanged:0,additions:0,deletions:0,repoFiles:[],files:[],error:c.stderr.trim()||c.stdout.trim()||"Unable to read workspace diff",updatedAt:F()};let d=c.stdout.split(`
11
+ `).map(M).filter(l=>!!l).map(l=>{let W=B(l.path,i.pathPrefix);if(!W)return null;let g=w(W);return g?{...l,path:g}:null}).filter(l=>l?!y(l.path):!1),p=await ae(e,d),h=ce({repoPath:e,workspaceId:t,includeFileDetails:!!n.includeFileDetails,head:a.code===0?a.stdout.trim():"unborn",pathPrefix:i.pathPrefix,status:c.stdout,worktreeSignature:p}),b=_.get(h);if(b)return J(b);let A=(await j(d,async l=>l.status==="deleted"||!await pt(e,l.path)?l:null)).filter(l=>!!l),v=await u("git",["ls-files","--",s],i.commandCwd),S=U([...v.code===0?v.stdout.split(`
12
+ `).map(l=>B(l.trim(),i.pathPrefix)).filter(l=>!!l):[],...A.map(l=>l.path)].filter(l=>!y(l))),C=await u("git",["diff","--numstat","HEAD","--",s],i.commandCwd),f=C.code===0?Ct(H(C.stdout),i.pathPrefix):new Map,x=n.includeFileDetails?await ue(i,A.filter(l=>l.status!=="untracked")):new Map,E=await j(A,async l=>{let g=(n.includeFileDetails||l.status==="untracked")&&l.status!=="deleted"?await I(e,l.path):null,D=l.status==="untracked"?{additions:bt(g),deletions:0}:f.get(l.path)??{additions:0,deletions:0};return n.includeFileDetails?Ft(e,l,i,D,{content:g,patch:l.status==="untracked"?null:x.get(l.path)??null}):{path:l.path,status:l.status,additions:D.additions,deletions:D.deletions,patch:"",content:null}}),L=E.reduce((l,W)=>l+W.additions,0),q=E.reduce((l,W)=>l+W.deletions,0),K={appId:t,repoPath:e,initialized:r,dirty:E.length>0,filesChanged:E.length,additions:L,deletions:q,repoFiles:S,files:E,error:null,updatedAt:F()};return le(h,K),J(K)}o(se,"loadWorkspaceDiffAtPath");async function Ye(e,t,n,r){if(!await O(e))throw new Error("Candidate source is not a Git repository.");let s=await Z(e),a=`${n}..${r}`,[c,d,p,h,b]=await Promise.all([u("git",["rev-parse","--verify",`${n}^{commit}`],s.commandCwd),u("git",["rev-parse","--verify",`${r}^{commit}`],s.commandCwd),u("git",["-c","core.quotePath=false","diff","--name-status","--find-renames",a,"--","."],s.commandCwd),u("git",["-c","core.quotePath=false","diff","--no-ext-diff","--unified=80",a,"--","."],s.commandCwd),u("git",["-c","core.quotePath=false","ls-tree","-r","--name-only",r],s.commandCwd)]);if(c.code!==0||d.code!==0)throw new Error("Candidate Git history is no longer available.");if(p.code!==0)throw new Error(p.stderr.trim()||"Unable to read the candidate change.");let A=oe(p.stdout).filter(f=>!y(f.path)),v=h.code===0?xt(h.stdout||h.stderr,""):new Map,S=await j(A,async f=>{let x=await u("git",["diff","--numstat",a,"--",f.path],s.commandCwd),E=x.code===0?[...H(x.stdout).values()][0]??{additions:0,deletions:0}:{additions:0,deletions:0},L=f.status==="deleted"?null:await u("git",["show",`${r}:${f.path}`],s.commandCwd);return{path:f.path,status:f.status,additions:E.additions,deletions:E.deletions,patch:X(v.get(f.path)??""),content:L?.code===0?L.stdout:null}}),C=b.code===0?U(b.stdout.split(`
13
+ `).map(f=>f.trim()).filter(f=>f&&!y(f))):S.map(f=>f.path);return{appId:t,repoPath:e,initialized:!0,dirty:S.length>0,filesChanged:S.length,additions:S.reduce((f,x)=>f+x.additions,0),deletions:S.reduce((f,x)=>f+x.deletions,0),repoFiles:C,files:S,error:null,updatedAt:F()}}o(Ye,"loadGitCommitDiffAtPath");function oe(e){return e.split(/\r?\n/).filter(Boolean).flatMap(t=>{let[n,r,i]=t.split(" "),s=n?.[0]??"M",a=s==="R"||s==="C"?i:r,c=a?w(a):null;return c?[{path:c,status:s==="A"||s==="C"?"added":s==="D"?"deleted":s==="R"?"renamed":"modified"}]:[]})}o(oe,"parseCommitDiffEntries");function bt(e){if(!e)return 0;let t=e.endsWith(`
14
14
  `)?e.slice(0,-1):e;return t?t.split(`
15
- `).length:0}o(bt,"countTextLines");async function oe(e,t){return(await j(t,async r=>{if(r.status==="deleted")return`${r.path} ${r.status} deleted`;let i=P.resolve(e,r.path),s=P.resolve(e);if(i!==s&&!i.startsWith(`${s}${P.sep}`))return`${r.path} ${r.status} outside`;try{let a=await yt.lstat(i),c=a.isDirectory()?"dir":a.isFile()?"file":"other";return`${r.path} ${r.status} ${c} ${a.size} ${Math.trunc(a.mtimeMs)} ${Math.trunc(a.ctimeMs)}`}catch{return`${r.path} ${r.status} missing`}})).sort((r,i)=>r.localeCompare(i)).join(`
16
- `)}o(oe,"workspaceDiffWorktreeSignature");function ae(e){return JSON.stringify(e)}o(ae,"workspaceDiffCacheKey");function ce(e,t){for(_.has(e)&&_.delete(e),_.set(e,J(t));_.size>re;){let n=_.keys().next().value;if(!n)break;_.delete(n)}}o(ce,"writeWorkspaceDiffCache");function J(e){return{...e,repoFiles:[...e.repoFiles],files:e.files.map(t=>({...t}))}}o(J,"cloneWorkspaceDiffSummary");async function Z(e){let t=await u("git",["rev-parse","--show-toplevel"],e);if(t.code!==0)return{commandCwd:e,pathPrefix:""};let n=t.stdout.trim();if(!n)return{commandCwd:e,pathPrefix:""};let r=P.relative(P.resolve(n),P.resolve(e)),i=w(r.replace(/\\/g,"/"))??"";return{commandCwd:n,pathPrefix:i}}o(Z,"gitWorkspaceContext");function B(e,t){let n=w(e);return n?t?n===t?null:n.startsWith(`${t}/`)?n.slice(t.length+1):null:n:null}o(B,"pathInWorkspace");function Q(e,t){return t?`${t}/${e}`:e}o(Q,"gitPathForWorkspacePath");function Ct(e,t){let n=new Map;for(let[r,i]of e){let s=B(r,t);s&&n.set(s,i)}return n}o(Ct,"scopedNumstat");async function le(e,t){if(t.length===0)return new Map;let n=e.pathPrefix||".",r=await u("git",["-c","core.quotePath=false","diff","--no-ext-diff","--unified=80","HEAD","--",n],e.commandCwd);return r.code!==0?new Map:xt(r.stdout||r.stderr,e.pathPrefix)}o(le,"loadTrackedGitPatchMap");function xt(e,t){let n=new Map;for(let r of e.split(/(?=^diff --git )/m)){if(!r.trim())continue;let i=ue(r,t);i&&n.set(i,r)}return n}o(xt,"parseGitPatchStreamByWorkspacePath");function ue(e,t){let n=e.split(`
17
- `);for(let a of n){let c=St(a,"+++ ");if(c)return B(c,t)}for(let a of n){let c=St(a,"--- ");if(c)return B(c,t)}for(let a of n)if(a.startsWith("rename to ")){let c=w(a.slice(10).trim());if(c)return B(c,t)}let r=n.find(a=>a.startsWith("diff --git "));if(!r)return null;let i=r.lastIndexOf(" b/");if(i<0)return null;let s=w(r.slice(i+3).trim());return s?B(s,t):null}o(ue,"workspacePathForGitPatchChunk");function St(e,t){if(!e.startsWith(t))return null;let n=e.slice(t.length).trim();if(!n||n==="/dev/null")return null;let r=n.startsWith("a/")||n.startsWith("b/")?n.slice(2):n;return w(r)}o(St,"gitPatchMarkerPath");async function Ve(e,t,n){let{repoPath:r}=R(e,t.id);return fe(r,n)}o(Ve,"loadWorkspaceFile");async function Ye(e,t,n){let{repoPath:r}=R(e,t.id);return de(r,n)}o(Ye,"loadWorkspaceImageFile");async function de(e,t){let n=await O(e),r=Et(e,t);if(!r)throw new Error("Image not found");if(n&&!await ft(e,r))throw new Error("Image not found");let i=await ut(e,r);if(!i)throw new Error("Image not found");return i}o(de,"loadWorkspaceImageFileAtPath");function Et(e,t){let n=pe(t);if(!n)return null;if(!P.isAbsolute(n))return w(n);let r=P.relative(P.resolve(e),P.resolve(n));return!r||r.startsWith("..")||P.isAbsolute(r)?null:w(r)}o(Et,"normalizeWorkspaceFileRequestPath");function pe(e){let t=e.trim();if(!t)return null;t=t.replace(/^['"`]+|['"`]+$/g,"");let n=t.indexOf("#");n>=0&&(t=t.slice(0,n));let r=t.indexOf("?");if(r>=0&&(t=t.slice(0,r)),t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.replace(/^file:\/\//,"")}return t.trim()||null}o(pe,"cleanWorkspaceFileRequestPath");async function fe(e,t){let n=await O(e),r=Et(e,t);if(!r)throw new Error("File not found");if(y(r))throw new Error("File not found");if(n){let a=await me(e,r);if(a){if(a.content!==null||a.status==="deleted")return a;let c=await V(e,r);return c===null?a:{...a,content:c}}}let i=r,s=await I(e,i)??await V(e,i);if(s===null){let a=await he(e,r);a&&(i=a,s=await I(e,i))}if(s===null)throw new Error("File not found");return{path:i,status:"unchanged",additions:0,deletions:0,patch:"",content:s}}o(fe,"loadWorkspaceFileAtPath");async function me(e,t){let n=await Z(e),r=Q(t,n.pathPrefix),i=await u("git",["status","--porcelain=v1","-uall","--",r],n.commandCwd);if(i.code!==0)return null;let s=i.stdout.split(`
18
- `).map(M).filter(c=>!!c).map(c=>{let d=B(c.path,n.pathPrefix);if(!d)return null;let p=w(d);return p?{...c,path:p}:null}).find(c=>!!(c&&c.path===t));if(!s)return null;let a=s.status==="untracked"?{additions:bt(await I(e,s.path)),deletions:0}:await we(n,s.path);return Ft(e,s,n,a)}o(me,"loadGitWorkspaceFileAtPath");async function he(e,t){if(t.includes("/")||!ge(t))return null;let n=t.toLowerCase(),r=[],i=[{absolutePath:e,prefix:""}],s=0;for(;i.length>0&&s<Pt;){let c=i.shift(),d;try{d=await yt.readdir(c.absolutePath,{withFileTypes:!0})}catch{continue}d.sort((p,h)=>p.name.localeCompare(h.name));for(let p of d){if(s>=Pt)break;let h=c.prefix?`${c.prefix}/${p.name}`:p.name;if(y(h))continue;s+=1;let b=P.join(c.absolutePath,p.name);p.isDirectory()?i.push({absolutePath:b,prefix:h}):p.isFile()&&p.name.toLowerCase()===n&&r.push(h)}}if(r.length===1)return r[0]??null;let a=r.filter(c=>c.startsWith("docs/working-docs/"));return a.length===1?a[0]??null:null}o(he,"resolveExplicitMarkdownBasenamePath");function ge(e){return/\.(?:md|markdown|mdx)$/i.test(e)}o(ge,"isMarkdownWorkspacePath");async function Ft(e,t,n,r,i={}){let s=i.content!==void 0?i.content:t.status==="deleted"?null:await I(e,t.path),a=Q(t.path,n.pathPrefix),c=t.status==="untracked"?["diff","--no-index","--unified=80","--","/dev/null",P.join(e,t.path)]:["diff","--no-ext-diff","--unified=80","HEAD","--",a],d=i.patch??"";if(i.patch===null||i.patch===void 0){let p=await u("git",c,n.commandCwd);d=p.stdout||p.stderr}return{path:t.path,status:t.status,additions:r.additions,deletions:r.deletions,patch:X(d),content:s}}o(Ft,"loadGitWorkspaceFileDetail");async function we(e,t){let n=Q(t,e.pathPrefix),r=await u("git",["diff","--numstat","HEAD","--",n],e.commandCwd);return r.code!==0?{additions:0,deletions:0}:Ct(H(r.stdout),e.pathPrefix).get(t)??{additions:0,deletions:0}}o(we,"gitNumstatForFile");export{rt as a,u as b,Gt as c,Se as d,ye as e,N as f,$ as g,G as h,O as i,X as j,I as k,V as l,lt as m,qt as n,ut as o,Ae as p,ve as q,pt as r,w as s,y as t,ft as u,M as v,mt as w,H as x,U as y,ht as z,wt as A,Y as B,R as C,kt as D,Wt as E,Ge as F,z as G,Ie as H,te as I,Te as J,ee as K,j as L,qe as M,Ke as N,ie as O,Xe as P,Ve as Q,Ye as R,de as S,fe as T};
15
+ `).length:0}o(bt,"countTextLines");async function ae(e,t){return(await j(t,async r=>{if(r.status==="deleted")return`${r.path} ${r.status} deleted`;let i=P.resolve(e,r.path),s=P.resolve(e);if(i!==s&&!i.startsWith(`${s}${P.sep}`))return`${r.path} ${r.status} outside`;try{let a=await yt.lstat(i),c=a.isDirectory()?"dir":a.isFile()?"file":"other";return`${r.path} ${r.status} ${c} ${a.size} ${Math.trunc(a.mtimeMs)} ${Math.trunc(a.ctimeMs)}`}catch{return`${r.path} ${r.status} missing`}})).sort((r,i)=>r.localeCompare(i)).join(`
16
+ `)}o(ae,"workspaceDiffWorktreeSignature");function ce(e){return JSON.stringify(e)}o(ce,"workspaceDiffCacheKey");function le(e,t){for(_.has(e)&&_.delete(e),_.set(e,J(t));_.size>ie;){let n=_.keys().next().value;if(!n)break;_.delete(n)}}o(le,"writeWorkspaceDiffCache");function J(e){return{...e,repoFiles:[...e.repoFiles],files:e.files.map(t=>({...t}))}}o(J,"cloneWorkspaceDiffSummary");async function Z(e){let t=await u("git",["rev-parse","--show-toplevel"],e);if(t.code!==0)return{commandCwd:e,pathPrefix:""};let n=t.stdout.trim();if(!n)return{commandCwd:e,pathPrefix:""};let r=P.relative(P.resolve(n),P.resolve(e)),i=w(r.replace(/\\/g,"/"))??"";return{commandCwd:n,pathPrefix:i}}o(Z,"gitWorkspaceContext");function B(e,t){let n=w(e);return n?t?n===t?null:n.startsWith(`${t}/`)?n.slice(t.length+1):null:n:null}o(B,"pathInWorkspace");function Q(e,t){return t?`${t}/${e}`:e}o(Q,"gitPathForWorkspacePath");function Ct(e,t){let n=new Map;for(let[r,i]of e){let s=B(r,t);s&&n.set(s,i)}return n}o(Ct,"scopedNumstat");async function ue(e,t){if(t.length===0)return new Map;let n=e.pathPrefix||".",r=await u("git",["-c","core.quotePath=false","diff","--no-ext-diff","--unified=80","HEAD","--",n],e.commandCwd);return r.code!==0?new Map:xt(r.stdout||r.stderr,e.pathPrefix)}o(ue,"loadTrackedGitPatchMap");function xt(e,t){let n=new Map;for(let r of e.split(/(?=^diff --git )/m)){if(!r.trim())continue;let i=de(r,t);i&&n.set(i,r)}return n}o(xt,"parseGitPatchStreamByWorkspacePath");function de(e,t){let n=e.split(`
17
+ `);for(let a of n){let c=St(a,"+++ ");if(c)return B(c,t)}for(let a of n){let c=St(a,"--- ");if(c)return B(c,t)}for(let a of n)if(a.startsWith("rename to ")){let c=w(a.slice(10).trim());if(c)return B(c,t)}let r=n.find(a=>a.startsWith("diff --git "));if(!r)return null;let i=r.lastIndexOf(" b/");if(i<0)return null;let s=w(r.slice(i+3).trim());return s?B(s,t):null}o(de,"workspacePathForGitPatchChunk");function St(e,t){if(!e.startsWith(t))return null;let n=e.slice(t.length).trim();if(!n||n==="/dev/null")return null;let r=n.startsWith("a/")||n.startsWith("b/")?n.slice(2):n;return w(r)}o(St,"gitPatchMarkerPath");async function Je(e,t,n){let{repoPath:r}=R(e,t.id);return me(r,n)}o(Je,"loadWorkspaceFile");async function Ze(e,t,n){let{repoPath:r}=R(e,t.id);return pe(r,n)}o(Ze,"loadWorkspaceImageFile");async function pe(e,t){let n=await O(e),r=Et(e,t);if(!r)throw new Error("Image not found");if(n&&!await ft(e,r))throw new Error("Image not found");let i=await ut(e,r);if(!i)throw new Error("Image not found");return i}o(pe,"loadWorkspaceImageFileAtPath");function Et(e,t){let n=fe(t);if(!n)return null;if(!P.isAbsolute(n))return w(n);let r=P.relative(P.resolve(e),P.resolve(n));return!r||r.startsWith("..")||P.isAbsolute(r)?null:w(r)}o(Et,"normalizeWorkspaceFileRequestPath");function fe(e){let t=e.trim();if(!t)return null;t=t.replace(/^['"`]+|['"`]+$/g,"");let n=t.indexOf("#");n>=0&&(t=t.slice(0,n));let r=t.indexOf("?");if(r>=0&&(t=t.slice(0,r)),t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.replace(/^file:\/\//,"")}return t.trim()||null}o(fe,"cleanWorkspaceFileRequestPath");async function me(e,t){let n=await O(e),r=Et(e,t);if(!r)throw new Error("File not found");if(y(r))throw new Error("File not found");if(n){let a=await he(e,r);if(a){if(a.content!==null||a.status==="deleted")return a;let c=await V(e,r);return c===null?a:{...a,content:c}}}let i=r,s=await I(e,i)??await V(e,i);if(s===null){let a=await ge(e,r);a&&(i=a,s=await I(e,i))}if(s===null)throw new Error("File not found");return{path:i,status:"unchanged",additions:0,deletions:0,patch:"",content:s}}o(me,"loadWorkspaceFileAtPath");async function he(e,t){let n=await Z(e),r=Q(t,n.pathPrefix),i=await u("git",["status","--porcelain=v1","-uall","--",r],n.commandCwd);if(i.code!==0)return null;let s=i.stdout.split(`
18
+ `).map(M).filter(c=>!!c).map(c=>{let d=B(c.path,n.pathPrefix);if(!d)return null;let p=w(d);return p?{...c,path:p}:null}).find(c=>!!(c&&c.path===t));if(!s)return null;let a=s.status==="untracked"?{additions:bt(await I(e,s.path)),deletions:0}:await ke(n,s.path);return Ft(e,s,n,a)}o(he,"loadGitWorkspaceFileAtPath");async function ge(e,t){if(t.includes("/")||!we(t))return null;let n=t.toLowerCase(),r=[],i=[{absolutePath:e,prefix:""}],s=0;for(;i.length>0&&s<Pt;){let c=i.shift(),d;try{d=await yt.readdir(c.absolutePath,{withFileTypes:!0})}catch{continue}d.sort((p,h)=>p.name.localeCompare(h.name));for(let p of d){if(s>=Pt)break;let h=c.prefix?`${c.prefix}/${p.name}`:p.name;if(y(h))continue;s+=1;let b=P.join(c.absolutePath,p.name);p.isDirectory()?i.push({absolutePath:b,prefix:h}):p.isFile()&&p.name.toLowerCase()===n&&r.push(h)}}if(r.length===1)return r[0]??null;let a=r.filter(c=>c.startsWith("docs/working-docs/"));return a.length===1?a[0]??null:null}o(ge,"resolveExplicitMarkdownBasenamePath");function we(e){return/\.(?:md|markdown|mdx)$/i.test(e)}o(we,"isMarkdownWorkspacePath");async function Ft(e,t,n,r,i={}){let s=i.content!==void 0?i.content:t.status==="deleted"?null:await I(e,t.path),a=Q(t.path,n.pathPrefix),c=t.status==="untracked"?["diff","--no-index","--unified=80","--","/dev/null",P.join(e,t.path)]:["diff","--no-ext-diff","--unified=80","HEAD","--",a],d=i.patch??"";if(i.patch===null||i.patch===void 0){let p=await u("git",c,n.commandCwd);d=p.stdout||p.stderr}return{path:t.path,status:t.status,additions:r.additions,deletions:r.deletions,patch:X(d),content:s}}o(Ft,"loadGitWorkspaceFileDetail");async function ke(e,t){let n=Q(t,e.pathPrefix),r=await u("git",["diff","--numstat","HEAD","--",n],e.commandCwd);return r.code!==0?{additions:0,deletions:0}:Ct(H(r.stdout),e.pathPrefix).get(t)??{additions:0,deletions:0}}o(ke,"gitNumstatForFile");export{rt as a,u as b,Gt as c,ye as d,be as e,N as f,$ as g,G as h,O as i,X as j,I as k,V as l,lt as m,Kt as n,ut as o,Re as p,_e as q,pt as r,w as s,y as t,ft as u,M as v,mt as w,H as x,U as y,ht as z,wt as A,Y as B,R as C,kt as D,Wt as E,Te as F,z as G,Me as H,ee as I,ze as J,ne as K,j as L,Xe as M,Ve as N,se as O,Ye as P,Je as Q,Ze as R,pe as S,me as T};