@reason-machines/cli-linux-x64 0.2.419 → 0.2.420

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 (160) hide show
  1. package/THIRD_PARTY_NOTICES.txt +8 -7
  2. package/bin/reason +2 -2
  3. package/bin/runtime/srt/sandbox-runtime.mjs +52 -52
  4. package/bin/vm-hands/api-18d75dfn.js +2 -0
  5. package/bin/vm-hands/api-credentials-3vhge1ap.js +2 -0
  6. package/bin/vm-hands/connect-cli-s5smpb2n.js +2 -0
  7. package/bin/vm-hands/custom-endpoint-device-17t4efc4.js +2 -0
  8. package/bin/vm-hands/desktop-account-6sjrxy69.js +2 -0
  9. package/bin/vm-hands/device-workspace-s50q53sz.js +2 -0
  10. package/bin/vm-hands/fsevents-p3d8kd0p.js +2 -0
  11. package/bin/vm-hands/hands-worker-source-kddz4y15.js +2 -0
  12. package/bin/vm-hands/index-wrw65904.js +12818 -0
  13. package/bin/vm-hands/install-receipt-ysa70fvh.js +2 -0
  14. package/bin/vm-hands/local-automation-3amth2kd.js +2 -0
  15. package/bin/vm-hands/local-capabilities-hgmepv53.js +2 -0
  16. package/bin/vm-hands/local-desktop-users-cppjjr81.js +2 -0
  17. package/bin/vm-hands/local-display-mac-0qz3b627.js +2 -0
  18. package/bin/vm-hands/local-display-session-e4n5hx0v.js +2 -0
  19. package/bin/vm-hands/local-display-video-28gmymr4.js +2 -0
  20. package/bin/vm-hands/local-managed-process-2313kw42.js +2 -0
  21. package/bin/vm-hands/local-pty-session-rpk05ap5.js +2 -0
  22. package/bin/vm-hands/managed-runtime-3z71qd28.js +2 -0
  23. package/bin/vm-hands/network-contract-trkxqc0w.js +2 -0
  24. package/bin/vm-hands/package-xqbhdf15.js +2 -0
  25. package/bin/vm-hands/permissions-9yn6rcvc.js +2 -0
  26. package/bin/vm-hands/reason-hands-protocol-xn3ddz70.js +2 -0
  27. package/bin/vm-hands/serve-service-s57v1tq2.js +2 -0
  28. package/bin/vm-hands/status-grxd9vg7.js +10 -0
  29. package/bin/vm-hands/version-bqwnackx.js +2 -0
  30. package/bin/vm-hands/vm-hands-entry-lite-004yshd1.js +452 -0
  31. package/bin/vm-hands/vm-hands-entry-lite-1xwxazmz.js +3 -0
  32. package/bin/vm-hands/{vm-hands-entry-lite-agsp101y.js → vm-hands-entry-lite-21qpxvt8.js} +2 -2
  33. package/bin/vm-hands/vm-hands-entry-lite-2n4n9cs8.js +126 -0
  34. package/bin/vm-hands/vm-hands-entry-lite-2rd6t7ry.js +9 -0
  35. package/bin/vm-hands/vm-hands-entry-lite-37kgczw8.js +3 -0
  36. package/bin/vm-hands/vm-hands-entry-lite-3krzmhkk.js +3 -0
  37. package/bin/vm-hands/vm-hands-entry-lite-4vgwtn85.js +52 -0
  38. package/bin/vm-hands/vm-hands-entry-lite-4vks5phw.js +42 -0
  39. package/bin/vm-hands/vm-hands-entry-lite-50zbqwkv.js +3 -0
  40. package/bin/vm-hands/vm-hands-entry-lite-5dtfehjv.js +3 -0
  41. package/bin/vm-hands/vm-hands-entry-lite-60pg3wxj.js +3 -0
  42. package/bin/vm-hands/vm-hands-entry-lite-6b0dxpkm.js +5 -0
  43. package/bin/vm-hands/vm-hands-entry-lite-6c67a3jc.js +3 -0
  44. package/bin/vm-hands/vm-hands-entry-lite-8r31b0ps.js +5 -0
  45. package/bin/vm-hands/vm-hands-entry-lite-aj139v8j.js +3 -0
  46. package/bin/vm-hands/vm-hands-entry-lite-avc65bd7.js +65 -0
  47. package/bin/vm-hands/{vm-hands-entry-lite-vsa7t6m9.js → vm-hands-entry-lite-beyyy1gz.js} +54 -54
  48. package/bin/vm-hands/vm-hands-entry-lite-bx5zy5bd.js +2 -0
  49. package/bin/vm-hands/{vm-hands-entry-lite-fzkfajew.js → vm-hands-entry-lite-cbrtaz8j.js} +5 -9
  50. package/bin/vm-hands/vm-hands-entry-lite-dk79tnax.js +3 -0
  51. package/bin/vm-hands/vm-hands-entry-lite-ec9jemny.js +5 -0
  52. package/bin/vm-hands/vm-hands-entry-lite-ev1k9x73.js +539 -0
  53. package/bin/vm-hands/vm-hands-entry-lite-f2qkz14f.js +128 -0
  54. package/bin/vm-hands/vm-hands-entry-lite-fbhqfzbq.js +4 -0
  55. package/bin/vm-hands/{vm-hands-entry-lite-4k4h9rcq.js → vm-hands-entry-lite-fcvf8md1.js} +2 -2
  56. package/bin/vm-hands/vm-hands-entry-lite-g4zd2d5n.js +2 -0
  57. package/bin/vm-hands/vm-hands-entry-lite-hbs3tpdg.js +3 -0
  58. package/bin/vm-hands/vm-hands-entry-lite-hk6trmwa.js +4 -0
  59. package/bin/vm-hands/vm-hands-entry-lite-hqmyd73s.js +2 -0
  60. package/bin/vm-hands/vm-hands-entry-lite-jev771b3.js +3 -0
  61. package/bin/vm-hands/vm-hands-entry-lite-jzz73e3f.js +112 -0
  62. package/bin/vm-hands/vm-hands-entry-lite-m2bswqxe.js +4 -0
  63. package/bin/vm-hands/vm-hands-entry-lite-np07qyeq.js +3 -0
  64. package/bin/vm-hands/vm-hands-entry-lite-nzmkyezg.js +3 -0
  65. package/bin/vm-hands/vm-hands-entry-lite-pf5qtbj5.js +5 -0
  66. package/bin/vm-hands/vm-hands-entry-lite-qy9xg6em.js +3 -0
  67. package/bin/vm-hands/{vm-hands-entry-lite-6y6pz2yw.js → vm-hands-entry-lite-rfz60hb3.js} +2 -2
  68. package/bin/vm-hands/vm-hands-entry-lite-s4bharcb.js +9 -0
  69. package/bin/vm-hands/vm-hands-entry-lite-s5qkb1fk.js +6 -0
  70. package/bin/vm-hands/vm-hands-entry-lite-sbtjmy0e.js +14 -0
  71. package/bin/vm-hands/vm-hands-entry-lite-tdgtpx8e.js +2 -0
  72. package/bin/vm-hands/vm-hands-entry-lite-vpz54vwj.js +7 -0
  73. package/bin/vm-hands/vm-hands-entry-lite-wx4ax7wg.js +4 -0
  74. package/bin/vm-hands/vm-hands-entry-lite-yretc2th.js +3 -0
  75. package/bin/vm-hands/vm-hands-entry-lite-z76nfb19.js +3 -0
  76. package/bin/vm-hands/vm-hands-entry-lite-zjxzm61j.js +105 -0
  77. package/bin/vm-hands/vm-hands-entry-lite-zp6naptr.js +3 -0
  78. package/bin/vm-hands/vm-hands-entry-lite.js +3 -1
  79. package/bin/vm-hands/vm-hands-executor-p92kw8nz.js +11 -0
  80. package/bin/vm-hands/vm-hands-op-runner-ekgtqc07.js +2 -0
  81. package/bin/vm-hands/vm-hands-runtime-tj93a1pm.js +4 -0
  82. package/bin/vm-hands/worker-preview-readiness-w62n91kr.js +2 -0
  83. package/bin/vm-hands/worker-sandbox-2r5nseff.js +2 -0
  84. package/package.json +1 -1
  85. package/bin/vm-hands/api-credentials-s4897qxy.js +0 -2
  86. package/bin/vm-hands/api-m73x3da5.js +0 -2
  87. package/bin/vm-hands/ask-relay-4kwcx2b7.js +0 -8
  88. package/bin/vm-hands/connect-cli-34b18gjs.js +0 -2
  89. package/bin/vm-hands/custom-endpoint-device-j012b4bd.js +0 -2
  90. package/bin/vm-hands/desktop-account-0q0arpzk.js +0 -2
  91. package/bin/vm-hands/device-workspace-3jxhs54b.js +0 -2
  92. package/bin/vm-hands/hands-worker-source-y64axsw3.js +0 -2
  93. package/bin/vm-hands/index-194s4vz0.js +0 -12818
  94. package/bin/vm-hands/install-receipt-1g68b446.js +0 -2
  95. package/bin/vm-hands/local-automation-k2w46hn2.js +0 -2
  96. package/bin/vm-hands/local-capabilities-tdzbqmrb.js +0 -2
  97. package/bin/vm-hands/local-desktop-users-6thzvydd.js +0 -2
  98. package/bin/vm-hands/local-display-mac-59ma7sxa.js +0 -2
  99. package/bin/vm-hands/local-display-session-4833qq7h.js +0 -2
  100. package/bin/vm-hands/local-display-video-c1143mz6.js +0 -2
  101. package/bin/vm-hands/local-managed-process-mr0zpk7c.js +0 -2
  102. package/bin/vm-hands/local-pty-session-bwarwpsd.js +0 -2
  103. package/bin/vm-hands/managed-runtime-vz1wqwwg.js +0 -2
  104. package/bin/vm-hands/network-contract-gprc37sw.js +0 -2
  105. package/bin/vm-hands/package-ej9snd47.js +0 -2
  106. package/bin/vm-hands/permissions-7sfghef4.js +0 -2
  107. package/bin/vm-hands/reason-hands-protocol-jsrkawe2.js +0 -2
  108. package/bin/vm-hands/serve-service-kngyzh74.js +0 -2
  109. package/bin/vm-hands/status-jz29fb95.js +0 -96
  110. package/bin/vm-hands/version-g29vt13t.js +0 -2
  111. package/bin/vm-hands/vm-hands-entry-lite-0h4qmgm2.js +0 -9
  112. package/bin/vm-hands/vm-hands-entry-lite-0k13wmzm.js +0 -3
  113. package/bin/vm-hands/vm-hands-entry-lite-1exfjv79.js +0 -52
  114. package/bin/vm-hands/vm-hands-entry-lite-26q3hbdc.js +0 -3
  115. package/bin/vm-hands/vm-hands-entry-lite-28s7v15d.js +0 -4
  116. package/bin/vm-hands/vm-hands-entry-lite-2m5dwrdf.js +0 -6
  117. package/bin/vm-hands/vm-hands-entry-lite-37hvds7z.js +0 -5
  118. package/bin/vm-hands/vm-hands-entry-lite-3rqdzqhk.js +0 -112
  119. package/bin/vm-hands/vm-hands-entry-lite-4gh5kfr4.js +0 -3
  120. package/bin/vm-hands/vm-hands-entry-lite-6nwbqg37.js +0 -3
  121. package/bin/vm-hands/vm-hands-entry-lite-714wspqb.js +0 -3
  122. package/bin/vm-hands/vm-hands-entry-lite-7zk0r3p9.js +0 -5
  123. package/bin/vm-hands/vm-hands-entry-lite-9qep7pka.js +0 -4
  124. package/bin/vm-hands/vm-hands-entry-lite-am6kj1n1.js +0 -3
  125. package/bin/vm-hands/vm-hands-entry-lite-as1tkffn.js +0 -5
  126. package/bin/vm-hands/vm-hands-entry-lite-bxt4n1nj.js +0 -3
  127. package/bin/vm-hands/vm-hands-entry-lite-c2g3wmkp.js +0 -3
  128. package/bin/vm-hands/vm-hands-entry-lite-d2w8tghq.js +0 -3
  129. package/bin/vm-hands/vm-hands-entry-lite-d98m00b8.js +0 -3
  130. package/bin/vm-hands/vm-hands-entry-lite-daxcxjze.js +0 -344
  131. package/bin/vm-hands/vm-hands-entry-lite-dcnyve97.js +0 -3
  132. package/bin/vm-hands/vm-hands-entry-lite-e1b89x66.js +0 -3
  133. package/bin/vm-hands/vm-hands-entry-lite-ej5ffjck.js +0 -105
  134. package/bin/vm-hands/vm-hands-entry-lite-ejkba2nk.js +0 -3
  135. package/bin/vm-hands/vm-hands-entry-lite-f3wh0dza.js +0 -5
  136. package/bin/vm-hands/vm-hands-entry-lite-f5xb489y.js +0 -4
  137. package/bin/vm-hands/vm-hands-entry-lite-feybcq63.js +0 -3
  138. package/bin/vm-hands/vm-hands-entry-lite-fpp2bs9y.js +0 -452
  139. package/bin/vm-hands/vm-hands-entry-lite-gt497d5x.js +0 -3
  140. package/bin/vm-hands/vm-hands-entry-lite-gxper06w.js +0 -3
  141. package/bin/vm-hands/vm-hands-entry-lite-j2ng164q.js +0 -9
  142. package/bin/vm-hands/vm-hands-entry-lite-jp9q2vsx.js +0 -127
  143. package/bin/vm-hands/vm-hands-entry-lite-magmzx9c.js +0 -3
  144. package/bin/vm-hands/vm-hands-entry-lite-ntx8fdyq.js +0 -5
  145. package/bin/vm-hands/vm-hands-entry-lite-pfzczmaa.js +0 -4
  146. package/bin/vm-hands/vm-hands-entry-lite-pkc4ry5x.js +0 -539
  147. package/bin/vm-hands/vm-hands-entry-lite-pp7jfqzr.js +0 -3
  148. package/bin/vm-hands/vm-hands-entry-lite-q8wkrzer.js +0 -66
  149. package/bin/vm-hands/vm-hands-entry-lite-s823n1q9.js +0 -3
  150. package/bin/vm-hands/vm-hands-entry-lite-s9xf5z69.js +0 -7
  151. package/bin/vm-hands/vm-hands-entry-lite-tchc7z17.js +0 -128
  152. package/bin/vm-hands/vm-hands-entry-lite-tytfs183.js +0 -42
  153. package/bin/vm-hands/vm-hands-entry-lite-v4jtxgaj.js +0 -4
  154. package/bin/vm-hands/vm-hands-entry-lite-vgpt2n1v.js +0 -11
  155. package/bin/vm-hands/vm-hands-entry-lite-xp3qzxk5.js +0 -3
  156. package/bin/vm-hands/vm-hands-executor-epyhpjv3.js +0 -11
  157. package/bin/vm-hands/vm-hands-op-runner-fn1qph82.js +0 -2
  158. package/bin/vm-hands/vm-hands-runtime-8vt9etvv.js +0 -4
  159. package/bin/vm-hands/worker-preview-readiness-yfjgban2.js +0 -2
  160. package/bin/vm-hands/worker-sandbox-z0t69av8.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{yh as H}from"./vm-hands-entry-lite-agsp101y.js";import{Ah as m,Bh as L,Ch as B,Dh as W,Eh as F,Fh as Q,Gh as j,Ih as k,Kh as z,Lh as Z,Mh as J,Nh as K,Oh as $,Qh as G,Rh as M,Th as X,Uh as s,Vh as _,Xh as S,_h as Y}from"./vm-hands-entry-lite-9qep7pka.js";import{Bj as w}from"./vm-hands-entry-lite-714wspqb.js";import{nk as y,ok as p,pk as x,qk as b}from"./vm-hands-entry-lite-feybcq63.js";import{ol as q}from"./vm-hands-entry-lite-6y6pz2yw.js";var o=["cgroup_membership_read_failed","cgroup_v2_membership_absent","cgroup_scope_invalid","cgroup_root_unavailable","cgroup_directory_unavailable","cgroup_limit_read_failed","cgroup_events_read_failed","cgroup_current_read_failed","cgroup_stat_read_failed","boot_id_read_failed","boot_id_invalid","guest_meminfo_read_failed","guest_vmstat_read_failed","memory_counter_invalid","memory_field_missing","memory_capacity_invalid"];var c=String.raw`(function(fs, path) {
2
+ import{Yr,Qr,en,nr}from"./vm-hands-entry-lite-3krzmhkk.js";import{uo,po,P,Mr,$r,Ln,ut,Mn,Br,Ke,ve,$n,Je,ne,Ze,Se,Vt,Fr,jr,Fn}from"./vm-hands-entry-lite-tdgtpx8e.js";import{sr}from"./vm-hands-entry-lite-rfz60hb3.js";import{qt}from"./vm-hands-entry-lite-21qpxvt8.js";import{ke}from"./vm-hands-entry-lite-dk79tnax.js";var r=["cgroup_membership_read_failed","cgroup_v2_membership_absent","cgroup_scope_invalid","cgroup_root_unavailable","cgroup_directory_unavailable","cgroup_limit_read_failed","cgroup_events_read_failed","cgroup_current_read_failed","cgroup_stat_read_failed","boot_id_read_failed","boot_id_invalid","guest_meminfo_read_failed","guest_vmstat_read_failed","memory_counter_invalid","memory_field_missing","memory_capacity_invalid"];var o=String.raw`(function(fs, path) {
3
3
  const fail = (message, reasonCode) => { throw Object.assign(Error(message), {reasonCode}); };
4
4
  const read = (p, reasonCode, trim=true) => { try { const text=fs.readFileSync(p, "utf8"); return trim?text.trim():text; }
5
5
  catch { fail("memory_read", reasonCode); } };
@@ -64,7 +64,7 @@ import{yh as H}from"./vm-hands-entry-lite-agsp101y.js";import{Ah as m,Bh as L,Ch
64
64
  if(!Number.isSafeInteger(limitBytes)||limitBytes<=0||!Number.isSafeInteger(available)||available>limitBytes) fail("memory_capacity", "memory_capacity_invalid");
65
65
  return {bootId,oomKills:field(read("/proc/vmstat", "guest_vmstat_read_failed"),"oom_kill"),currentBytes:limitBytes-available,
66
66
  limitBytes,inactiveFileBytes:0,capacitySource:"guest",memoryScope:"/proc"};
67
- })`;var u=String.raw`import os,sys,json,stat,fcntl,time,ctypes
67
+ })`;var i=String.raw`import os,sys,json,stat,fcntl,time,ctypes
68
68
  v=json.load(sys.stdin)
69
69
  root=v['root']; paths=list(dict.fromkeys([v['source'],v['snapshot']]))
70
70
  marker=('# reason-job-env-owner:'+v['runId']+'\n').encode()
@@ -309,7 +309,7 @@ function fileOperation(request) {
309
309
  });
310
310
  return { promise, cancel() {} };
311
311
  }
312
- `;var a="a3e39eb55160acfc116fa9871ccc594c68be7a642d2331b24baa707c8f601ec0";import{createHash as rt}from"crypto";var bt=Object.freeze({"api.ara.so":"api.reasonmachines.com","api.reasonmachines.ai":"api.reasonmachines.com","api-staging.ara.so":"staging-api.reasonmachines.com","staging-api.reasonmachines.ai":"staging-api.reasonmachines.com"});var d=Object.freeze({trailingSlashPattern:/\/+$/.source,keyPrefix:"http.",keySuffix:"/.extraheader",valuePrefix:"Authorization: Bearer "});var f=Object.freeze({tokenEnv:"ARA_GIT_BROKER_TOKEN",reasonTokenEnv:"REASON_GIT_BROKER_TOKEN",urlEnv:"ARA_GIT_BROKER_URL",keyPrefix:"credential.",keySuffix:"/.helper",value:'!f(){ printf "username=%s\\npassword=%s\\n" "ara-run" "${REASON_GIT_BROKER_TOKEN:-$ARA_GIT_BROKER_TOKEN}"; };f'});var r=/^[A-Za-z_][A-Za-z0-9_]*$/;var T=new Set(["ARA_INFERENCE_TOKEN","AI_GATEWAY_API_KEY","CLOUD_AGENT_AI_GATEWAY_API_KEY","INFERENCE_V2_GATEWAY_API_KEY","VERCEL_AI_GATEWAY_API_KEY","INFERENCE_V2_CONCENTRATE_API_KEY","INFERENCE_V2_OPENAI_API_KEY","INFERENCE_V2_ANTHROPIC_API_KEY","INFERENCE_V2_FINGERPRINT_SECRET","OPENAI_API_KEY","OPENROUTER_API_KEY","ANTHROPIC_API_KEY","CODEX_ACCESS_TOKEN","GITHUB_COPILOT_API_KEY","AZURE_OPENAI_API_KEY","AZURE_OPENAI_CLIENT_SECRET"]),A=new Set(["ARA_OPERATOR_KEY","BL_API_KEY","BLAXEL_API_KEY","NSC_TOKEN","NSC_TOKEN_FILE","NAMESPACE_API_KEY","NAMESPACE_ACCESS_TOKEN","NAMESPACE_TOKEN","NAMESPACE_TOKEN_JSON","NAMESPACE_SANDBOX_TOKEN_JSON","ARA_LOCAL_QA_NAMESPACE_WORKLOAD_TOKEN_FILE","NAMESPACE_SANDBOX_USE_LOCAL_USER_TOKEN","COMPUTE_SERVICE_TOKEN"]),D=["INFISICAL_","NSC_"],v=new Set(["ARA_JOB_ENV","ARA_DELIVERY_BASE_SHA","WORK_ROOT","REPO_DIR","ARA_CONTROL_DIR","ARA_PRESERVE_WORKSPACE","ARA_PINNED_CHECKOUT_REUSE","FOLLOWUP_BRANCH","REPO_URL","TOKENLESS_URL","REPOSITORY_IDENTITY_URL","DEFAULT_BRANCH","BRANCH","BRANCH_GENERATED","BASE_REF","REPO_EMPTY","REPO_WRITABLE","ARA_DELIVERY_BASE_BRANCH","ARA_SERVER_GIT_PUBLICATION","ARA_EMPTY_REPOSITORY_COMMIT","REASON_MODEL","REASON_DELIVERY_BASE_BRANCH","REASON_DELIVERY_BASE_SHA","REASON_EMPTY_REPOSITORY_COMMIT","REASON_SCRATCH_SESSION_ID","REASON_SERVER_GIT_PUBLICATION","REASON_ALLOW_INSTALL_SCRIPTS","SCM_TOKEN","SCM_TOKEN_USER","REASON_OIDC_TOKEN_URL","REASON_OIDC_REQUEST_TOKEN","AWS_CONTAINER_CREDENTIALS_FULL_URI","AWS_CONTAINER_AUTHORIZATION_TOKEN","AWS_CONTAINER_CREDENTIALS_RELATIVE_URI","AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE","BASH_ENV","ENV","BASHOPTS","SHELLOPTS","PS4","IFS","CDPATH","GLOBIGNORE","PROMPT_COMMAND","PATH","HOME","TMPDIR","TMP","TEMP","XDG_CONFIG_HOME","GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_COMMON_DIR","GIT_NAMESPACE","GIT_CEILING_DIRECTORIES","GIT_DISCOVERY_ACROSS_FILESYSTEM","GIT_SHALLOW_FILE","GIT_ALLOW_PROTOCOL","GIT_PROTOCOL_FROM_USER","GIT_REPLACE_REF_BASE","NODE_OPTIONS","NODE_PATH","NODE_REPL_EXTERNAL_MODULES","CLASSPATH","PYTHONPATH","PYTHONSTARTUP","PYTHONHOME","RUBYOPT","RUBYLIB","PERL5LIB","PERL5OPT","JAVA_TOOL_OPTIONS","_JAVA_OPTIONS","JDK_JAVA_OPTIONS","GEM_PATH","GEM_HOME","GIT_SSH","GIT_SSH_COMMAND","GIT_EXEC_PATH","GIT_TEMPLATE_DIR","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_PROXY_COMMAND","GIT_EXTERNAL_DIFF","GIT_PAGER","GIT_EDITOR","GIT_ASKPASS","SSH_ASKPASS","PAGER","EDITOR","TAR_OPTIONS","CURL_HOME","WGETRC","APT_CONFIG","PERLLIB","GIT_GRAFT_FILE","POSIXLY_CORRECT"]),N=["GIT_TRACE","CONTEXT_REPO_","ARA_CHECKPOINT_BOOTSTRAP_","_","ARA_HANDS_","ARA_DEVICE_","ARA_GIT_BROKER_","REASON_HANDS_","REASON_DEVICE_","REASON_GIT_BROKER_","LD_","DYLD_","GIT_CONFIG","BASH_FUNC_"];var n="^(?!(?:"+[...T,...A,...v].join("|")+")$)(?!(?:"+[...D,...N].join("|")+"))"+r.source.slice(1),Lt=new RegExp(n);var U=["HOME","PWD","OLDPWD","TMPDIR","TMP","TEMP","SHELL","USER","LOGNAME","SCM_TOKEN","SCM_TOKEN_USER","GH_TOKEN","GITHUB_TOKEN","GH_ENTERPRISE_TOKEN","GITHUB_ENTERPRISE_TOKEN","GITLAB_TOKEN"],R=["ARA_HANDS_","ARA_DEVICE_","ARA_GIT_BROKER_","REASON_HANDS_","REASON_DEVICE_","REASON_GIT_BROKER_","BUN_"],E="^(?!(?:"+U.join("|")+")$)(?!(?:"+R.join("|")+"))"+n.slice(1),tt="ARA_DELIVERY_BASE_SHA|WORK_ROOT|FOLLOWUP_BRANCH|ARA_PRESERVE_WORKSPACE|ARA_PINNED_CHECKOUT_REUSE|CONTEXT_REPO_[A-Z0-9_]+|REPO_URL|TOKENLESS_URL|REPOSITORY_IDENTITY_URL|DEFAULT_BRANCH|BRANCH|BRANCH_GENERATED|BASE_REF|REPO_EMPTY|REPO_WRITABLE|ARA_DELIVERY_BASE_BRANCH|ARA_SERVER_GIT_PUBLICATION|ARA_EMPTY_REPOSITORY_COMMIT|REASON_MODEL|REASON_DELIVERY_BASE_BRANCH|REASON_DELIVERY_BASE_SHA|REASON_EMPTY_REPOSITORY_COMMIT|REASON_SCRATCH_SESSION_ID|REASON_SERVER_GIT_PUBLICATION|REASON_ALLOW_INSTALL_SCRIPTS",i="^(?:"+tt+"|"+E.slice(1,-1)+")$",et=new RegExp(i);function jt(t){return et.test(t)}var l=Object.freeze({tokenPath:"/identity/token",awsPath:"/identity/aws",tokenPattern:/^[A-Za-z0-9_.~-]+$/.source}),g=Object.freeze({variables:256,valueBytes:130816,snapshotBytes:1048576}),kt=Object.freeze({valueChars:16384,snapshotBytes:65536});var h=["set -g history-limit 50000","set -g status off","set -g window-size smallest","set -gq fill-character ' '","set -g escape-time 10","set -g prefix None","set -g prefix2 None","set -g terminal-overrides ',*:smcup@:rmcup@'"];var nt=2,it="ara-hands-worker.cjs",P=["/usr/local/go/bin","/opt/node/bin","/usr/local/bin","/usr/sbin","/usr/bin","/sbin","/bin","/usr/local/cargo/bin"],st=P.join(":"),ot=["/opt/homebrew/bin",...P].join(":"),ct='(platform, linuxPath, macosPath) => platform === "darwin" ? macosPath : linuxPath';function Ot(t,V,C){return t==="darwin"?C:V}var ut=String.raw`(function(anchor, pid, native) {
312
+ `;var s="a3e39eb55160acfc116fa9871ccc594c68be7a642d2331b24baa707c8f601ec0";import{createHash as I}from"crypto";var H=Object.freeze({"api.ara.so":"api.reasonmachines.com","api.reasonmachines.ai":"api.reasonmachines.com","api-staging.ara.so":"staging-api.reasonmachines.com","staging-api.reasonmachines.ai":"staging-api.reasonmachines.com"});var a=Object.freeze({trailingSlashPattern:/\/+$/.source,keyPrefix:"http.",keySuffix:"/.extraheader",valuePrefix:"Authorization: Bearer "});var c=Object.freeze({tokenEnv:"ARA_GIT_BROKER_TOKEN",reasonTokenEnv:"REASON_GIT_BROKER_TOKEN",urlEnv:"ARA_GIT_BROKER_URL",keyPrefix:"credential.",keySuffix:"/.helper",value:'!f(){ printf "username=%s\\npassword=%s\\n" "ara-run" "${REASON_GIT_BROKER_TOKEN:-$ARA_GIT_BROKER_TOKEN}"; };f'});var It=/^[A-Za-z_][A-Za-z0-9_]*$/;var h=new Set(["ARA_INFERENCE_TOKEN","AI_GATEWAY_API_KEY","CLOUD_AGENT_AI_GATEWAY_API_KEY","INFERENCE_V2_GATEWAY_API_KEY","VERCEL_AI_GATEWAY_API_KEY","INFERENCE_V2_CONCENTRATE_API_KEY","INFERENCE_V2_OPENAI_API_KEY","INFERENCE_V2_ANTHROPIC_API_KEY","INFERENCE_V2_FINGERPRINT_SECRET","OPENAI_API_KEY","OPENROUTER_API_KEY","ANTHROPIC_API_KEY","CODEX_ACCESS_TOKEN","GITHUB_COPILOT_API_KEY","AZURE_OPENAI_API_KEY","AZURE_OPENAI_CLIENT_SECRET"]),m=new Set(["ARA_OPERATOR_KEY","BL_API_KEY","BLAXEL_API_KEY","NSC_TOKEN","NSC_TOKEN_FILE","NAMESPACE_API_KEY","NAMESPACE_ACCESS_TOKEN","NAMESPACE_TOKEN","NAMESPACE_TOKEN_JSON","NAMESPACE_SANDBOX_TOKEN_JSON","ARA_LOCAL_QA_NAMESPACE_WORKLOAD_TOKEN_FILE","NAMESPACE_SANDBOX_USE_LOCAL_USER_TOKEN","COMPUTE_SERVICE_TOKEN"]),g=["INFISICAL_","NSC_"],_=new Set(["ARA_JOB_ENV","ARA_DELIVERY_BASE_SHA","WORK_ROOT","REPO_DIR","ARA_CONTROL_DIR","ARA_PRESERVE_WORKSPACE","ARA_PINNED_CHECKOUT_REUSE","FOLLOWUP_BRANCH","REPO_URL","TOKENLESS_URL","REPOSITORY_IDENTITY_URL","DEFAULT_BRANCH","BRANCH","BRANCH_GENERATED","BASE_REF","REPO_EMPTY","REPO_WRITABLE","ARA_DELIVERY_BASE_BRANCH","ARA_SERVER_GIT_PUBLICATION","ARA_EMPTY_REPOSITORY_COMMIT","REASON_MODEL","REASON_DELIVERY_BASE_BRANCH","REASON_DELIVERY_BASE_SHA","REASON_EMPTY_REPOSITORY_COMMIT","REASON_SCRATCH_SESSION_ID","REASON_SERVER_GIT_PUBLICATION","REASON_ALLOW_INSTALL_SCRIPTS","SCM_TOKEN","SCM_TOKEN_USER","REASON_OIDC_TOKEN_URL","REASON_OIDC_REQUEST_TOKEN","AWS_CONTAINER_CREDENTIALS_FULL_URI","AWS_CONTAINER_AUTHORIZATION_TOKEN","AWS_CONTAINER_CREDENTIALS_RELATIVE_URI","AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE","BASH_ENV","ENV","BASHOPTS","SHELLOPTS","PS4","IFS","CDPATH","GLOBIGNORE","PROMPT_COMMAND","PATH","HOME","TMPDIR","TMP","TEMP","XDG_CONFIG_HOME","GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_COMMON_DIR","GIT_NAMESPACE","GIT_CEILING_DIRECTORIES","GIT_DISCOVERY_ACROSS_FILESYSTEM","GIT_SHALLOW_FILE","GIT_ALLOW_PROTOCOL","GIT_PROTOCOL_FROM_USER","GIT_REPLACE_REF_BASE","NODE_OPTIONS","NODE_PATH","NODE_REPL_EXTERNAL_MODULES","CLASSPATH","PYTHONPATH","PYTHONSTARTUP","PYTHONHOME","RUBYOPT","RUBYLIB","PERL5LIB","PERL5OPT","JAVA_TOOL_OPTIONS","_JAVA_OPTIONS","JDK_JAVA_OPTIONS","GEM_PATH","GEM_HOME","GIT_SSH","GIT_SSH_COMMAND","GIT_EXEC_PATH","GIT_TEMPLATE_DIR","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_PROXY_COMMAND","GIT_EXTERNAL_DIFF","GIT_PAGER","GIT_EDITOR","GIT_ASKPASS","SSH_ASKPASS","PAGER","EDITOR","TAR_OPTIONS","CURL_HOME","WGETRC","APT_CONFIG","PERLLIB","GIT_GRAFT_FILE","POSIXLY_CORRECT"]),y=["GIT_TRACE","CONTEXT_REPO_","ARA_CHECKPOINT_BOOTSTRAP_","_","ARA_HANDS_","ARA_DEVICE_","ARA_GIT_BROKER_","REASON_HANDS_","REASON_DEVICE_","REASON_GIT_BROKER_","LD_","DYLD_","GIT_CONFIG","BASH_FUNC_"];var t="^(?!(?:"+[...h,...m,..._].join("|")+")$)(?!(?:"+[...g,...y].join("|")+"))"+It.source.slice(1),W=new RegExp(t);var v=["HOME","PWD","OLDPWD","TMPDIR","TMP","TEMP","SHELL","USER","LOGNAME","SCM_TOKEN","SCM_TOKEN_USER","GH_TOKEN","GITHUB_TOKEN","GH_ENTERPRISE_TOKEN","GITHUB_ENTERPRISE_TOKEN","GITLAB_TOKEN"],E=["ARA_HANDS_","ARA_DEVICE_","ARA_GIT_BROKER_","REASON_HANDS_","REASON_DEVICE_","REASON_GIT_BROKER_","BUN_"],S="^(?!(?:"+v.join("|")+")$)(?!(?:"+E.join("|")+"))"+t.slice(1),w="ARA_DELIVERY_BASE_SHA|WORK_ROOT|FOLLOWUP_BRANCH|ARA_PRESERVE_WORKSPACE|ARA_PINNED_CHECKOUT_REUSE|CONTEXT_REPO_[A-Z0-9_]+|REPO_URL|TOKENLESS_URL|REPOSITORY_IDENTITY_URL|DEFAULT_BRANCH|BRANCH|BRANCH_GENERATED|BASE_REF|REPO_EMPTY|REPO_WRITABLE|ARA_DELIVERY_BASE_BRANCH|ARA_SERVER_GIT_PUBLICATION|ARA_EMPTY_REPOSITORY_COMMIT|REASON_MODEL|REASON_DELIVERY_BASE_BRANCH|REASON_DELIVERY_BASE_SHA|REASON_EMPTY_REPOSITORY_COMMIT|REASON_SCRATCH_SESSION_ID|REASON_SERVER_GIT_PUBLICATION|REASON_ALLOW_INSTALL_SCRIPTS",n="^(?:"+w+"|"+S.slice(1,-1)+")$",O=new RegExp(n);function Sr(u){return O.test(u)}var st=Object.freeze({tokenPath:"/identity/token",awsPath:"/identity/aws",tokenPattern:/^[A-Za-z0-9_.~-]+$/.source}),V=Object.freeze({variables:256,valueBytes:130816,snapshotBytes:1048576}),Z=Object.freeze({valueChars:16384,snapshotBytes:65536});var l=["set -g history-limit 50000","set -g status off","set -g window-size smallest","set -gq fill-character ' '","set -g escape-time 10","set -g prefix None","set -g prefix2 None","set -g terminal-overrides ',*:smcup@:rmcup@'"];var D=2,R="ara-hands-worker.cjs",d=["/usr/local/go/bin","/opt/node/bin","/usr/local/bin","/usr/sbin","/usr/bin","/sbin","/bin","/usr/local/cargo/bin"],A=d.join(":"),T=["/opt/homebrew/bin",...d].join(":"),k='(platform, linuxPath, macosPath) => platform === "darwin" ? macosPath : linuxPath';var N=String.raw`(function(anchor, pid, native) {
313
313
  const token = native.identity(pid);
314
314
  const session = native.session(pid);
315
315
  if (!native.same(anchor)) throw new Error("pty_session_identity_lost");
@@ -317,7 +317,7 @@ function fileOperation(request) {
317
317
  if (session.id !== anchor[5]) throw new Error("pty_member_session_changed");
318
318
  if (!token) return { retry: true, token: null };
319
319
  return { retry: false, token };
320
- })`,at=String.raw`(function(native) {
320
+ })`,C=String.raw`(function(native) {
321
321
  let probe;
322
322
  try {
323
323
  try {
@@ -327,7 +327,7 @@ function fileOperation(request) {
327
327
  native.signal(probe);
328
328
  } finally { if (probe) native.release(probe); }
329
329
  } catch (error) { native.close(); throw error; }
330
- })`,dt=String.raw`(function(bootstrap) {
330
+ })`,x=String.raw`(function(bootstrap) {
331
331
  const { dlopen, ptr } = require("bun:ffi");
332
332
  const api = dlopen("libc.so.6", {
333
333
  prctl: { args: ["i32", "u64", "u64", "u64", "u64"], returns: "i32" },
@@ -348,7 +348,7 @@ function fileOperation(request) {
348
348
  require("node:fs").writeSync(3, "subreaper\n");
349
349
  api.execve(ptr(args[0]), ptr(argv), ptr(envp));
350
350
  throw new Error("pty_exec_failed");
351
- })`,ft=String.raw`
351
+ })`,Zo=String.raw`
352
352
  "use strict";
353
353
  const crypto = require("node:crypto");
354
354
  const fs = require("node:fs");
@@ -356,46 +356,46 @@ const net = require("node:net");
356
356
  const path = require("node:path");
357
357
  const { spawn, spawnSync } = require("node:child_process");
358
358
  const { StringDecoder } = require("node:string_decoder");
359
- const GIT_BROKER_HTTP_HEADER_POLICY = ${JSON.stringify(d)};
360
- const GIT_BROKER_CREDENTIAL_HELPER_POLICY = ${JSON.stringify(f)};
361
- const DEVICE_ENVIRONMENT_NAME_RE = new RegExp(${JSON.stringify(i)});
362
- const DEVICE_CLOUD_ACCESS_POLICY = ${JSON.stringify(l)};
363
- const DEVICE_ENVIRONMENT_LIMITS = ${JSON.stringify(g)};
359
+ const GIT_BROKER_HTTP_HEADER_POLICY = ${JSON.stringify(a)};
360
+ const GIT_BROKER_CREDENTIAL_HELPER_POLICY = ${JSON.stringify(c)};
361
+ const DEVICE_ENVIRONMENT_NAME_RE = new RegExp(${JSON.stringify(n)});
362
+ const DEVICE_CLOUD_ACCESS_POLICY = ${JSON.stringify(st)};
363
+ const DEVICE_ENVIRONMENT_LIMITS = ${JSON.stringify(V)};
364
364
 
365
- const VERSION = ${B};
366
- const WORKER_VERSION = ${nt};
367
- const WORKER_ENTRYPOINT = ${JSON.stringify(it)};
368
- const GUEST_MEMORY_UNAVAILABLE_REASONS = ${JSON.stringify(o)};
369
- const sampleGuestMemory = ${c};
370
- const inspectMacPtyMember = ${ut};
371
- const probeLinuxPtyLibrary = ${at};
372
- const windowsPtyApi = ${H};
373
- const LINUX_PTY_EXEC_SOURCE = ${JSON.stringify(dt)};
374
- const CLOSE_CODES = ${JSON.stringify(S)};
365
+ const VERSION = ${P};
366
+ const WORKER_VERSION = ${D};
367
+ const WORKER_ENTRYPOINT = ${JSON.stringify(R)};
368
+ const GUEST_MEMORY_UNAVAILABLE_REASONS = ${JSON.stringify(r)};
369
+ const sampleGuestMemory = ${o};
370
+ const inspectMacPtyMember = ${N};
371
+ const probeLinuxPtyLibrary = ${C};
372
+ const windowsPtyApi = ${qt};
373
+ const LINUX_PTY_EXEC_SOURCE = ${JSON.stringify(x)};
374
+ const CLOSE_CODES = ${JSON.stringify(jr)};
375
375
  const SHA256_RE = /^[0-9a-f]{64}$/;
376
- const MAX_FRAME_BYTES = ${W};
377
- const MAX_INPUT_CHARS = ${F};
378
- const MAX_STRUCTURED_INPUT_CHARS = ${Q};
379
- const MAX_OUTPUT_CHARS = ${j};
380
- const WORKSPACE_BEFORE_MAX_OUTPUT_CHARS = ${Y};
381
- const MAX_ERROR_CHARS = ${k};
376
+ const MAX_FRAME_BYTES = ${Mr};
377
+ const MAX_INPUT_CHARS = ${$r};
378
+ const MAX_STRUCTURED_INPUT_CHARS = ${Ln};
379
+ const MAX_OUTPUT_CHARS = ${ut};
380
+ const WORKSPACE_BEFORE_MAX_OUTPUT_CHARS = ${Fn};
381
+ const MAX_ERROR_CHARS = ${Mn};
382
382
  const MAX_LEDGER_IDS = 16384;
383
383
  const MAX_CACHED_RESULTS = 256;
384
- const MAX_JOB_INPUT_CHARS = ${z};
385
- const MAX_JOB_OUTPUT_CHARS = ${Z};
386
- const MAX_JOB_OUTPUT_CHUNKS = ${J};
387
- const MAX_JOBS = ${K};
384
+ const MAX_JOB_INPUT_CHARS = ${Br};
385
+ const MAX_JOB_OUTPUT_CHARS = ${Ke};
386
+ const MAX_JOB_OUTPUT_CHUNKS = ${ve};
387
+ const MAX_JOBS = ${$n};
388
388
  const MAX_JOB_RECORD_BYTES = 262144;
389
389
  const MAX_JOB_JOURNAL_BYTES = MAX_JOBS * MAX_JOB_RECORD_BYTES;
390
- const MAX_JOB_CONTROL_FRAME_BYTES = ${$};
391
- const MAX_PTY_INPUT_BYTES = ${G};
392
- const MAX_PTY_OUTPUT_BYTES = ${M};
393
- const MAX_PTY_DIMENSION = ${X};
390
+ const MAX_JOB_CONTROL_FRAME_BYTES = ${Je};
391
+ const MAX_PTY_INPUT_BYTES = ${ne};
392
+ const MAX_PTY_OUTPUT_BYTES = ${Ze};
393
+ const MAX_PTY_DIMENSION = ${Se};
394
394
  const ID_RE = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,199}$/;
395
395
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
396
396
  const WINDOWS = process.platform === "win32";
397
397
  // Each Bash leader's tree on Windows, children that outlive it included (shared/windows-job-object.ts).
398
- const windowsJobs = WINDOWS ? ${q}(require) : null;
398
+ const windowsJobs = WINDOWS ? ${sr}(require) : null;
399
399
  /** Windows has no POSIX owner or mode bits: the user's own profile folders are
400
400
  * private by their ACLs, and the worker runs as that ordinary user. */
401
401
  function ownedPrivately(stat, mask = 0o077) {
@@ -492,9 +492,9 @@ function jobsUserPrefix(model) {
492
492
  return user ? ["/usr/bin/setpriv", "--reuid=" + user.uid, "--regid=" + gid, "--clear-groups", "--no-new-privs", "--",
493
493
  "/usr/bin/env", "HOME=" + user.home, "USER=" + user.username, "LOGNAME=" + user.username] : [];
494
494
  }
495
- const FIXED_CLOUD_CHILD_PATH = ${JSON.stringify(st)};
496
- const FIXED_MACOS_CLOUD_CHILD_PATH = ${JSON.stringify(ot)};
497
- const selectCloudChildPath = ${ct};
495
+ const FIXED_CLOUD_CHILD_PATH = ${JSON.stringify(A)};
496
+ const FIXED_MACOS_CLOUD_CHILD_PATH = ${JSON.stringify(T)};
497
+ const selectCloudChildPath = ${k};
498
498
  const config = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));
499
499
  const FIXED_BASH = WINDOWS ? config.bashExecutable : "/bin/bash";
500
500
  const allowedTools = config.allowedTools === undefined
@@ -577,12 +577,12 @@ function validJobEnvSourcePath() {
577
577
  if (config.jobEnvSourcePath === undefined || config.jobEnvSourcePath === path.join(config.workRoot, "job.env")) return true;
578
578
  // A cloud workspace's job.env is in its Session's root-only control
579
579
  // directory (shared/device-workspace.ts), derived from the root alone.
580
- const cloud = new RegExp(${JSON.stringify(b.source)}).exec(config.workRoot);
580
+ const cloud = new RegExp(${JSON.stringify(nr.source)}).exec(config.workRoot);
581
581
  if (process.platform === "linux" && cloud) {
582
582
  const workspaceId = cloud[3];
583
- const owner = (new RegExp(${JSON.stringify(p.source)}).exec(workspaceId) || [])[1]
584
- ?? (new RegExp(${JSON.stringify(x.source)}).exec(workspaceId) || [])[1] ?? workspaceId;
585
- return config.jobEnvSourcePath === ${JSON.stringify(y)} + "/" + owner + "/job.env";
583
+ const owner = (new RegExp(${JSON.stringify(Qr.source)}).exec(workspaceId) || [])[1]
584
+ ?? (new RegExp(${JSON.stringify(en.source)}).exec(workspaceId) || [])[1] ?? workspaceId;
585
+ return config.jobEnvSourcePath === ${JSON.stringify(Yr)} + "/" + owner + "/job.env";
586
586
  }
587
587
  // Personal Cloud controls are root-owned and outside the writable grant.
588
588
  // Admit only the same canonical session, never a caller-selected private path.
@@ -1027,7 +1027,7 @@ function initializeJobs() {
1027
1027
  // (shared/local-protected-paths.ts) that the file tools and every confinement
1028
1028
  // refuse. A home-folder worker keeps it in ~/.config/reason, so its Session may
1029
1029
  // work in the home folder itself, as a Mac's home grant does.
1030
- const PROTECTED_STATE_DIRECTORIES = ${JSON.stringify(w)};
1030
+ const PROTECTED_STATE_DIRECTORIES = ${JSON.stringify(ke)};
1031
1031
  function stateOverlapsWorkspace(state, root) {
1032
1032
  if (pathWithin(root, state)) return true;
1033
1033
  if (!pathWithin(state, root)) return false;
@@ -1372,7 +1372,7 @@ async function handleTerminalCleanup(target, claim, raw) {
1372
1372
  let child, timer, killTimer;
1373
1373
  const finish = ok => { clearTimeout(timer); clearTimeout(killTimer); if (!ok) cleanupUnconfirmed = true; resolve(ok); };
1374
1374
  try {
1375
- child = spawn("/usr/bin/python3", ["-I", "-c", ${JSON.stringify(u)}],
1375
+ child = spawn("/usr/bin/python3", ["-I", "-c", ${JSON.stringify(i)}],
1376
1376
  { stdio: ["pipe", "ignore", "ignore"], env: { PATH: "/usr/bin:/bin" }, detached: true });
1377
1377
  let timedOut = false;
1378
1378
  timer = setTimeout(() => { timedOut = true; try { process.kill(-child.pid, "SIGTERM"); } catch { cleanupUnconfirmed = true; }
@@ -2347,7 +2347,7 @@ function windowsPtyOperation(request, managed) {
2347
2347
  try {
2348
2348
  if (pty.activeProcesses() > 0) pty.terminate();
2349
2349
  for (const startedAt = Date.now(); pty.activeProcesses() > 0;) {
2350
- if (Date.now() - startedAt > ${s}) throw new Error("pty_cleanup_timeout");
2350
+ if (Date.now() - startedAt > ${Vt}) throw new Error("pty_cleanup_timeout");
2351
2351
  await new Promise((resolve) => setTimeout(resolve, 20));
2352
2352
  }
2353
2353
  pty.close();
@@ -2651,7 +2651,7 @@ function linuxPtyOwner() {
2651
2651
  // user detaches from the shell (nohup, setsid, disown, or jobs left at exit)
2652
2652
  // are not swept. At most TERMINAL_HOST_LIMIT shells per scope.
2653
2653
  const TERMINAL_SHELL = "/bin/bash --noprofile --norc -i";
2654
- const TERMINAL_TMUX_CONFIG = ${JSON.stringify([...h,"new-session -d -s main /bin/bash --noprofile --norc -i","set -g exit-empty on","run-shell -b -d 43200 -C kill-server",""].join(`
2654
+ const TERMINAL_TMUX_CONFIG = ${JSON.stringify([...l,"new-session -d -s main /bin/bash --noprofile --norc -i","set -g exit-empty on","run-shell -b -d 43200 -C kill-server",""].join(`
2655
2655
  `))};
2656
2656
  const TERMINAL_HOST_LIMIT = 4;
2657
2657
  const terminalViewers = new Map();
@@ -2795,7 +2795,7 @@ function ptyOperation(request, managed, program = TERMINAL_SHELL) {
2795
2795
  const { members, empty } = native.session(anchor, device);
2796
2796
  try {
2797
2797
  if (empty && exitCode !== null && subreaper) break;
2798
- if (Date.now() - startedAt > ${s}) throw new Error("pty_cleanup_timeout");
2798
+ if (Date.now() - startedAt > ${Vt}) throw new Error("pty_cleanup_timeout");
2799
2799
  for (const token of members) {
2800
2800
  if (!native.same(anchor)) throw new Error("pty_session_identity_lost");
2801
2801
  const id = native.identityKey(token);
@@ -2811,7 +2811,7 @@ function ptyOperation(request, managed, program = TERMINAL_SHELL) {
2811
2811
  controlReleased = true;
2812
2812
  let exitTimer;
2813
2813
  try { await Promise.race([child.exited, new Promise((_, reject) => {
2814
- exitTimer = setTimeout(() => reject(new Error("pty_anchor_exit_unconfirmed")), ${_});
2814
+ exitTimer = setTimeout(() => reject(new Error("pty_anchor_exit_unconfirmed")), ${Fr});
2815
2815
  })]); } finally { clearTimeout(exitTimer); }
2816
2816
  if (timedOut) finish("timeout", 124);
2817
2817
  else if (cancelled) finish("cancelled", 130);
@@ -3329,7 +3329,7 @@ function replOperation(request) {
3329
3329
  // timeout and the lease, and background processes retained until the worker
3330
3330
  // stops. One departure from stock: a command idle on a watcher's banner is
3331
3331
  // stopped (PI_WATCH_BANNER). PI_* variables are not set here.
3332
- const PI_TOOLS_SHA256 = "${a}";
3332
+ const PI_TOOLS_SHA256 = "${s}";
3333
3333
  const piToolsSource = typeof araHandsPiToolsSource === "function" ? araHandsPiToolsSource : null;
3334
3334
  let piTools = null;
3335
3335
  function loadPiTools() {
@@ -3362,10 +3362,10 @@ const PI_EXIT_STDIO_GRACE_MS = 100;
3362
3362
  // the token once under quoteDepth layers of single quoting, so the confined
3363
3363
  // script is byte-identical to what the Brain's confineBashPayload gives the
3364
3364
  // bash tool: srt/bwrap, the payload uid, the network allowlist and allowWrite.
3365
- const PI_TOOL_CONFINEMENT_TOKEN = "${m}";
3365
+ const PI_TOOL_CONFINEMENT_TOKEN = "${uo}";
3366
3366
  function validPiToolConfinement(value) {
3367
3367
  return hasOnlyKeys(value, ["template", "quoteDepth"]) && typeof value.template === "string"
3368
- && value.template.length <= ${L} && !value.template.includes("\0")
3368
+ && value.template.length <= ${po} && !value.template.includes("\0")
3369
3369
  && value.template.split(PI_TOOL_CONFINEMENT_TOKEN).length === 2 && [1, 2, 3].includes(value.quoteDepth);
3370
3370
  }
3371
3371
  // The script T when this command is exactly this policy's confineBashPayload(T)
@@ -4176,5 +4176,5 @@ void startJobControl().then(() => {
4176
4176
  try { loadJobs(); prepareRequestJournal(); } catch { process.exit(44); }
4177
4177
  if (validPrivateJob) markReady(); else connect();
4178
4178
  }, () => process.exit(45));
4179
- `.trimStart(),Tt=rt("sha256").update(ft,"utf8").digest("hex");
4180
- export{r as Pc,jt as Qc,l as Rc,g as Sc,nt as Tc,it as Uc,st as Vc,ot as Wc,Ot as Xc,ut as Yc,at as Zc,ft as _c,Tt as $c};
4179
+ `.trimStart();var b=I("sha256").update(Zo,"utf8").digest("hex");
4180
+ export{It,Sr,st,V,D,R,Zo,b};
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{t,o,i,W,ee,s,n}from"./vm-hands-entry-lite-avc65bd7.js";var ct=32768,Lt=67108864,Cr=16384,E=204800,Sn=600000,_=["content-type","anthropic-version","user-agent"],m=s(["openai-completions","openai-responses","anthropic-messages"]),f=new Set(_),C=ee(t(),t().max(2048)).refine((e)=>Object.keys(e).every((r)=>f.has(r))&&Object.values(e).every((r)=>!/[\r\n\0]/.test(r)),"Only non-secret custom endpoint request headers are permitted");function u(e){try{let r=new URL(e);return["http:","https:"].includes(r.protocol)&&!r.username&&!r.password&&!r.search&&!r.hash?r:null}catch{return null}}function Ar(e,r){let c=u(e.baseUrl),l=u(r.baseUrl),a=u(e.url);if(!c||!l||!a||e.method!=="POST"||r.execution!=="device")return!1;let d=(p)=>p.origin+p.pathname.replace(/\/+$/,"");if(d(c)!==d(l)||a.origin!==c.origin)return!1;let h=r.api==="openai-completions"?"/chat/completions":r.api==="openai-responses"?"/responses":"/v1/messages";return a.pathname===c.pathname.replace(/\/+$/,"")+h}var En=i({baseUrl:t().max(2048),url:t().max(4096),method:n("POST"),body:t().refine((e)=>new TextEncoder().encode(e).byteLength<=E).optional(),headers:C,credentialOrganizationId:t().uuid(),accountKey:t().min(1).max(256).optional()}).strict().refine((e)=>m.options.some((r)=>Ar(e,{baseUrl:e.baseUrl,api:r,execution:"device"})),"Invalid custom endpoint inference URL"),x=i({status:o().int().min(200).max(599),statusText:t().max(256).refine((e)=>!/[\r\n\0]/.test(e)),headers:ee(t(),t().max(4096)).refine((e)=>Object.keys(e).every((r)=>["content-type","retry-after","x-request-id","request-id"].includes(r))&&Object.values(e).every((r)=>!/[\r\n\0]/.test(r)))}).strict(),D=W([i({eof:n(!0)}).strict(),i({eof:n(!1),data:t().max(Math.ceil(ct/3)*4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/).refine((e)=>e.length>0&&e.length*3/4-(e.endsWith("==")?2:e.endsWith("=")?1:0)<=ct)}).strict()]),y=i({bytes:o().int().min(0).max(Lt),chunks:o().int().min(0).max(Cr)}).strict(),xn=i({apiKey:t().min(1).max(16384).refine((e)=>!/[\r\n\0]/.test(e)),api:m}).strict(),S=["custom_endpoint_host_not_found","custom_endpoint_connection_failed","custom_endpoint_tls_failed"];function kn(e){return typeof e==="string"&&S.includes(e)}var g="Ollama listens only on 127.0.0.1 unless it is started with OLLAMA_HOST=0.0.0.0.",T={custom_endpoint_host_not_found:"Your computer couldn't resolve your model server's hostname. Check the hostname in the Base URL, and that this computer is on the network or tailnet that resolves it.",custom_endpoint_connection_failed:`Your computer's connection to your model server was refused or timed out. Check that the server is running and listening on the Base URL's address and port. ${g}`,custom_endpoint_tls_failed:"Your computer couldn't make a secure (TLS) connection to your model server. Check the server's https certificate, or use an http:// Base URL for a server on your computer or private network.",401:"Your model server refused the request (HTTP 401). Check the API key saved for it in Models.",403:"Your model server refused the request (HTTP 403). Ollama refuses requests addressed to a hostname other than localhost, such as a *.ts.net name from tailscale serve or funnel: restart it with OLLAMA_HOST=0.0.0.0, or use http://localhost:11434/v1 when it runs on the session's computer. For another server, check the API key and its access rules.",404:"Your model server answered HTTP 404 (not found). Check that the Base URL is the API root (for Ollama, http://localhost:11434/v1) and that each model ID is one the server lists."};var I=new Set(Object.values(T));export{ct,Lt,Cr,Sn,Ar,En,xn,kn};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{le as ae,ne}from"./vm-hands-entry-lite-ej5ffjck.js";import{$f as be}from"./vm-hands-entry-lite-tytfs183.js";import{Cg as O,Dg as Te}from"./vm-hands-entry-lite-tchc7z17.js";import{Gg as C,Hg as ie,Ig as M,Lg as Oe,Sg as j,Tg as K,Ug as v}from"./vm-hands-entry-lite-jp9q2vsx.js";import{Di as xe}from"./vm-hands-entry-lite-28s7v15d.js";import{oj as se}from"./vm-hands-entry-lite-1exfjv79.js";import{Sj as J}from"./vm-hands-entry-lite-0h4qmgm2.js";import{Yj as x}from"./vm-hands-entry-lite-6nwbqg37.js";import{Pk as Se,Qk as oe}from"./vm-hands-entry-lite-3rqdzqhk.js";import{Wk as Ie,al as Ne}from"./vm-hands-entry-lite-v4jtxgaj.js";import{hl as ye}from"./vm-hands-entry-lite-gxper06w.js";import{ql as p}from"./vm-hands-entry-lite-magmzx9c.js";import{spawn as S,spawnSync as pt}from"child_process";import{createHash as ft,randomUUID as ve}from"crypto";import{closeSync as mt,copyFileSync as de,existsSync as q,fstatSync as _t,mkdirSync as pe,openSync as ht,readdirSync as D,readFileSync as Y,readlinkSync as wt,renameSync as Re,rmSync as gt,statSync as bt,writeFileSync as xt}from"fs";import{connect as St}from"net";import{tmpdir as F,userInfo as $e}from"os";import{basename as fe,delimiter as yt,dirname as B,join as f}from"path";var Z=`import { spawn, execFileSync } from "node:child_process";
2
+ import{We,so,F,Ve,Ft,Tr,x}from"./vm-hands-entry-lite-2n4n9cs8.js";import{K}from"./vm-hands-entry-lite-hk6trmwa.js";import{mt}from"./vm-hands-entry-lite-jzz73e3f.js";import{gt}from"./vm-hands-entry-lite-2rd6t7ry.js";import{Jr}from"./vm-hands-entry-lite-sbtjmy0e.js";import{kt,Di}from"./vm-hands-entry-lite-fbhqfzbq.js";import{G,qe}from"./vm-hands-entry-lite-f2qkz14f.js";import{Ee,Hn}from"./vm-hands-entry-lite-zjxzm61j.js";import{St}from"./vm-hands-entry-lite-4vks5phw.js";import{a}from"./vm-hands-entry-lite-jev771b3.js";import{C}from"./vm-hands-entry-lite-6c67a3jc.js";import{r}from"./vm-hands-entry-lite-qy9xg6em.js";import{spawn as R,spawnSync as tt}from"child_process";import{createHash as ot,randomUUID as me}from"crypto";import{closeSync as rt,copyFileSync as se,existsSync as M,fstatSync as nt,mkdirSync as ie,openSync as st,readdirSync as U,readFileSync as X,readlinkSync as it,renameSync as fe,rmSync as at,statSync as ct,writeFileSync as lt}from"fs";import{connect as ut}from"net";import{tmpdir as L,userInfo as ge}from"os";import{basename as ae,delimiter as dt,dirname as B,join as f}from"path";var z=`import { spawn, execFileSync } from "node:child_process";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import { readFileSync, readlinkSync, lstatSync, realpathSync, statSync, mkdtempSync, mkdirSync, chmodSync, writeFileSync, readdirSync, rmSync, openSync, readSync, closeSync, renameSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
@@ -849,11 +849,7 @@ if(process.env.REASON_CLOUD_GATEWAY_EXEC === "1") {
849
849
  process.stdout.write(JSON.stringify(cloudAutomationFailure(error))+"\\n");process.exitCode=1;
850
850
  }
851
851
  }
852
- `;import{spawn as Ge}from"child_process";import{basename as Me}from"path";var Ke="__desktop-call",ze="/usr/bin/setpriv",Je=27262976,je=8192,Ye=2000;function U(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function Xe(e){try{return JSON.parse(e)}catch{return null}}function Ve(){return[process.execPath,...Me(process.execPath).startsWith("bun")&&process.argv[1]?[process.argv[1]]:[],Ke]}function Ze(e,r,t,i={}){t.throwIfAborted();let o=i.command??Ve();return new Promise((s,c)=>{let a=(i.spawnProcess??Ge)(ze,[`--reuid=${e.uid}`,`--regid=${e.gid}`,"--clear-groups","--no-new-privs","--",...o],{cwd:e.home,detached:!0,stdio:["pipe","pipe","pipe"],env:{HOME:e.home,USER:e.username,LOGNAME:e.username,PATH:"/usr/local/bin:/usr/bin:/bin"}}),l=[],d=0,n="",u=null,m=!1,_,g=(w)=>{try{process.kill(-a.pid,w)}catch{a.kill(w)}},N=(w)=>{u??=w,g("SIGTERM"),_??=setTimeout(()=>g("SIGKILL"),Ye)},y=()=>N(new p("cancelled","Reason cancelled the desktop operation."));t.addEventListener("abort",y,{once:!0});let h=(w)=>{if(m)return;m=!0,clearTimeout(_),t.removeEventListener("abort",y),w()};if(a.stdout.on("data",(w)=>{if(d+=w.byteLength,d>Je)N(new p("desktop_delegate_failed","Reason's desktop reply is too large."));else l.push(w)}),a.stderr.setEncoding("utf8").on("data",(w)=>{n=(n+w).slice(-je)}),a.stdin.on("error",()=>{}),a.once("error",()=>h(()=>c(u??new p("desktop_delegate_unavailable","Reason could not start its desktop as the desktop account.")))),a.once("close",(w,Ue)=>h(()=>{if(u)return c(u);let b=Xe(Buffer.concat(l).toString("utf8"));if(U(b)&&b.ok===!0&&U(b.result))return s(b.result);let R=U(b)&&b.ok===!1&&typeof b.code==="string"&&typeof b.message==="string"?new p(b.code.slice(0,120),b.message.slice(0,2000)):null,X=`exited ${w??Ue}${R?"":" with no reply"}`,V=n.trim().split(`
853
- `).at(-1)?.slice(-300)??"";if(!R||R.code==="desktop_delegate_failed")process.stderr.write(`Reason worker: desktop call ${X}${n?`: ${n.trim().slice(-500)}`:""}
854
- `);if(R)return c(R);c(new p("desktop_delegate_failed",`Reason's desktop operation failed (${X}${V?`: ${V}`:""}).`))})),t.aborted)y();a.stdin.end(JSON.stringify(r))})}async function H(e,r,t,i={}){let o=await Ze(e,{op:"automation",call:r},t,i);if(!Number.isSafeInteger(o.code)||typeof o.stdout!=="string"||typeof o.stderr!=="string")throw new p("desktop_delegate_failed","Reason's desktop reply is malformed.");return{code:o.code,stdout:Buffer.from(o.stdout,"base64"),stderr:o.stderr}}import{execFile as He,spawn as Qe}from"child_process";import{closeSync as et,mkdirSync as tt,openSync as rt}from"fs";import{dirname as A,join as it}from"path";import{promisify as ot}from"util";var st=ot(He),Q="x-apple.systempreferences:com.apple.preference.security",at={accessibility:`${Q}?Privacy_Accessibility`,screen:`${Q}?Privacy_ScreenCapture`},nt=64,$=new Map;function k(e,r){let t=$.get(e);if(t?.has(r))return!1;if(!t){if($.size>=nt)$.delete($.keys().next().value);t=new Set,$.set(e,t)}return t.add(r),!0}function ct(){let e=x(),r=ne(ae(e),process.env),t=it(e,".local","share","reason","desktop-install.log");tt(A(t),{recursive:!0,mode:448});let i=rt(t,"a",384);try{let o=Qe(r,["desktop","install"],{detached:!0,stdio:["ignore",i,i],env:{...process.env,REASON_DESKTOP_BACKGROUND:"1"}});o.on("error",()=>{return}),o.unref()}finally{et(i)}}var P={open:async(e,r)=>{await st("/usr/bin/open",e,{signal:r,timeout:1e4,maxBuffer:8192})},request:(e,r)=>oe(e,r),tile:se,installDesktop:ct},ee=!1;async function te(e,r,t){try{await r.open(["-a","Google Chrome",e],t)}catch{t.throwIfAborted(),await r.open([e],t)}}async function ce(e,r,t,i){if(await t.open([at[r]],i).catch(()=>{}),e[0]&&!i.aborted)t.tile(A(A(A(e[0]))),r)}async function lt(e,r,t,i,o){for(let s of t){if(!k(e,`grant:${s}`))continue;o.throwIfAborted(),await i.request(r,s).catch(()=>null),await ce(r,s,i,o)}}var ut={name:"open_tab",description:"Open a web page in the user's own Chrome on this Mac. Reason cannot read, screenshot or click in that tab, and no tab_id is returned: browser control needs Reason's Chrome extension. An actual browser call opens its setup page.",inputSchema:{type:"object",properties:{url:{type:"string",description:"An http or https URL."}},required:["url"],additionalProperties:!1}};function re(e){return{code:0,stderr:"",stdout:Buffer.from(JSON.stringify({ok:!0,...e}))}}function dt(e){if(typeof e!=="string")return null;try{let r=new URL(e);return r.protocol==="https:"||r.protocol==="http:"?r.href:null}catch{return null}}async function le(e,r=P){let{call:t,runId:i,signal:o}=e;if(t.kind==="browser"){if(t.operation==="discover")return re({result:{tools:[ut]}});if(t.operation!=="call")throw new p("automation_browser_setup_required","Browser control is not set up on this Mac yet. Request a browser operation or connect Chrome from Reason to set it up.")}if(e.desktopMissing&&!ee){ee=!0;try{r.installDesktop()}catch{}}if(t.kind==="computer"){if(e.identity.length>0&&k(i,"grant:probe")){let a=await r.request(e.identity).catch(()=>null),l=a?[...a.accessibility?[]:["accessibility"],...a.screen?[]:["screen"]]:[];for(let d of l)k(i,`grant:${d}`);for(let d of l)await ce(e.identity,d,r,o)}throw new p("automation_computer_setup_required","Computer use is not set up on this Mac yet; Reason asked macOS for any missing permission.")}if(k(i,"page:chrome-extension"))await te(ie,r,o).catch(()=>{});let s=t.arguments,c=t.operation==="call"&&t.tool==="open_tab"&&s&&typeof s==="object"&&!Array.isArray(s)?dt(s.url):null;if(!c)throw new p("automation_browser_setup_required","Browser control is not set up on this Mac yet; Reason opened its Chrome Web Store page. open_tab still opens pages.");return await te(c,r,o),re({result:{content:[{type:"text",text:JSON.stringify({opened:c,browser:"the user's Chrome",controllable:!1,note:"Opened for the user to see. Reason cannot read or act in this tab until Reason's Chrome extension is added (its Chrome Web Store page is open)."})}]}})}async function ue(e,r=P){if(e.call.kind!=="computer"||e.call.operation!=="permission_status"||e.output.code!==0||e.identity.length===0)return e.output;let t;try{t=JSON.parse(e.output.stdout.toString("utf8"))}catch{return e.output}if(!t||typeof t!=="object"||Array.isArray(t))return e.output;let i=t.permissions;if(!i||typeof i!=="object")return e.output;let o=i,s=[...o.accessibility==="missing"?["accessibility"]:[],...o.screenRecording==="missing"?["screen"]:[]];if(s.length===0)return e.output;return await lt(e.runId,e.identity,s,r,e.signal),{...e.output,stdout:Buffer.from(JSON.stringify({...t,requested:s}))}}var z=172032,It=18874368,Nt=8192,Ot=65536,Tt=55000,vt=60000,Rt=4,$t=40000,At=/^[0-9a-f-]{36}$/,me=Z,kt=ve();function W(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function E(){throw new p("invalid_automation_request","Reason automation request is malformed.")}function Ae(e){let r=Object.keys(e).sort().join(",");if(r==="call"||r==="browser,call"){let t=e.call,i=r==="browser,call";if(!W(t)||t.version!==1||t.kind!=="computer"&&t.kind!=="browser"||i&&(e.browser!==be||t.kind!=="browser")||JSON.stringify(t).length>Ot)E();return{call:t,userChrome:i}}if(r==="offset,output_id"){if(typeof e.output_id!=="string"||!At.test(e.output_id)||!Number.isSafeInteger(e.offset)||e.offset<0)E();return{output_id:e.output_id,offset:e.offset}}return E()}function Wr(e=process.platform,r=v){if(e==="darwin")return!0;return(e==="linux"||e==="win32")&&r()?.features.computer===!0}var Pt="__computer-use";function Ct(e){let r=(t)=>t?"granted":"missing";return`Permissions: accessibility=${r(e.accessibility)}, screenRecording=${r(e.screen)}
855
- `}function Wt(e,r,t,i={stdin:process.stdin,stdout:process.stdout}){return new Promise((o)=>{let s=S(e,r,{env:t,stdio:["pipe","pipe","inherit"]}),c=(n)=>{s.kill(n)},a=["SIGTERM","SIGINT","SIGHUP"];for(let n of a)process.on(n,c);i.stdin.pipe(s.stdin),s.stdin.on("error",()=>{return}),s.stdout.pipe(i.stdout,{end:!1});let l=!1,d=(n)=>{if(l)return;l=!0;for(let u of a)process.off(u,c);i.stdin.unpipe(s.stdin),i.stdout.write("",()=>o(n))};s.once("error",()=>d(127)),s.once("close",(n)=>d(n??1))})}async function Er(e,r={}){let t=r.stderr??process.stderr,i=(r.identity??J)(),o=(r.components??v)();if(i.length===0||o?.platform!=="darwin-arm64")return t.write(`Reason computer use: Reason's background identity cannot run Open Computer Use here (computer_use_identity_unavailable)
856
- `),1;if(e.length===1&&e[0]==="doctor"){let a=await(r.grants??Se)(i);if(!a)return t.write(`Reason computer use: Reason's permissions could not be read (computer_use_permission_status_unavailable)
857
- `),1;return(r.stdout??process.stdout).write(Ct(a)),0}if(e.length!==1||e[0]!=="mcp")return t.write(`Usage: reason __computer-use mcp|doctor
858
- `),2;let[s,...c]=i;return(r.run??Wt)(s,[...c,o.ocu,"mcp"],{...process.env,OPEN_COMPUTER_USE_DISABLE_APP_AGENT_PROXY:"1"})}function qr(e=v){return e()?.userChrome??{code:"user_chrome_browser_use_missing"}}function ke(e,r,t,i){return new Promise((o)=>{let s=S(e,r,{env:t,stdio:"ignore",windowsHide:!0}),c=setTimeout(()=>{s.kill("SIGKILL"),o(-1)},i);s.once("error",()=>{clearTimeout(c),o(-1)}),s.once("exit",(a)=>{clearTimeout(c),o(a??-1)})})}function Et(e,r,t,i){return new Promise((o)=>{let s=S(e,r,{env:t,stdio:["ignore","pipe","ignore"],windowsHide:!0}),c="";s.stdout.setEncoding("utf8").on("data",(l)=>{c+=l});let a=setTimeout(()=>{s.kill("SIGKILL"),o(null)},i);s.once("error",()=>{clearTimeout(a),o(null)}),s.once("close",(l)=>{clearTimeout(a),o(l===0?c:null)})})}function qt(e){return T(e)?f(F(),"open-browser-use"):"/tmp/open-browser-use"}function T(e){return e.platform==="win32-x64"||e.platform==="win32-arm64"}var Dt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,Ft=33554432;function Bt(e,r){let t;try{t=e===null?null:JSON.parse(e)}catch{return null}let i=W(t)&&W(t.result)?t.result.metadata:null;if(!W(i)||i.extensionId!==r)return null;return typeof i.extensionInstanceId==="string"&&Dt.test(i.extensionInstanceId)?i.extensionInstanceId:null}async function Pe(e,r,t){let i=t.storages.map((a)=>{try{return D(a).filter((l)=>l.endsWith(".log")||l.endsWith(".ldb")).map((l)=>f(a,l))}catch{return[]}}),o;try{o=i.some((a)=>a.length>0)?D(t.socketDir).filter((a)=>a.endsWith(".sock")):[]}catch{return[]}let s=[];for(let a of o){let l=f(t.socketDir,a),d=Bt(await Et(e,["info","--socket",l,"--timeout","2s"],r,5000),t.extensionId);if(d)s.push({instance:d,socket:l})}let c=[];for(let[a,l]of(s.length>0?i:[]).entries())for(let d of l)try{if(bt(d).size>Ft)continue;let n=Y(d),u=s.find((m)=>n.includes(m.instance));if(u){c.push({storage:t.storages[a],...u});break}}catch{}return c}async function Ut(e,r,t){return(await Pe(e,r,t))[0]?.instance??null}function Ce(e,r,t){return Ut(e.nativeHost,r,{socketDir:qt(e),extensionId:M,storages:[f(t,"browser-profile","Default","Local Extension Settings",M)]})}var _e=/^(Default|Profile ([0-9]+))$/;async function Lt(e,r,t=x(),i=j){let o=f(t,"Library","Application Support","Google","Chrome"),s=[];try{s=D(o)}catch(n){if(n.code==="EPERM")throw new p("browser_use_chrome_access_denied","macOS blocked Reason from reading Chrome's profiles. Allow Full Disk Access for Reason on this Mac and try again.")}let c=(n)=>Number(_e.exec(n)?.[2]??-1),a=s.filter((n)=>_e.test(n)&&q(f(o,n,"Extensions",C))).sort((n,u)=>c(n)-c(u)),l=(n)=>f(o,n,"Local Extension Settings",C);return(await Pe(e,r,{socketDir:i,extensionId:C,storages:a.map(l)})).map(({storage:n,instance:u,socket:m})=>({profile:a.find((_)=>l(_)===n),instance:u,socket:m}))}async function Gt(e,r,t=x(),i=j){let o=(await Lt(e,r,t,i))[0]?.instance;if(!o)throw new p("automation_user_chrome_not_connected","No Chrome profile on this Mac is connected to Reason. Open Chrome with the Reason extension, then try again.");return o}function he(e){return new Promise((r)=>{let t=St({path:e}),i=(o)=>{t.destroy(),r(o)};t.setTimeout(1000,()=>i(!1)),t.once("error",()=>i(!1)),t.once("connect",()=>i(!0))})}async function We(e,r){let t=Date.now()+r;while(Date.now()<t){if(await e())return!0;await new Promise((i)=>setTimeout(i,200))}return!1}var L=new Map;function G(e,r){let t=L.get(e);if(!t)t=r().finally(()=>L.delete(e)),L.set(e,t);return t}async function Mt(e,r){if(await he(e))return;if(gt(e,{force:!0}),await ke("dbus-daemon",["--session",`--address=unix:path=${e}`,"--fork"],r,1e4)!==0||!await We(()=>he(e),5000))throw new p("automation_unavailable","Reason could not start the desktop session bus.")}async function we(e,r,t){let i=e.platform==="darwin-arm64"||T(e)?async()=>await Ce(e,r,t)!==null:async()=>await ke(e.nativeHost,["info"],r,5000)===0;if(await i())return;let o=["--profile-directory=Default",`--load-extension=${e.extensionDir}`,"--no-first-run","--no-default-browser-check","--window-size=1280,800","about:blank"],s,c=null,a=0;if(e.platform==="darwin-arm64"){let n=f(t,"browser-profile");O(n);let u=f(n,"NativeMessagingHosts");pe(u,{recursive:!0,mode:448});let m=K(e.platform).nativeHostManifests[0];de(m,f(u,fe(m)));let _=e.browser.slice(0,e.browser.indexOf(".app/")+4),g=o.filter((N)=>N!=="about:blank").concat("--no-startup-window","--use-mock-keychain");s=S("/usr/bin/open",["-g","-n","-a",_,"--args",`--user-data-dir=${n}`,...g],{env:r,stdio:"ignore"})}else if(T(e)){let n=f(t,"browser-profile");O(n),pt(ye("icacls"),[B(e.browser),"/grant","*S-1-15-2-1:(OI)(CI)(RX)","*S-1-15-2-2:(OI)(CI)(RX)"],{stdio:"ignore",windowsHide:!0,timeout:60000});let u=o.filter((m)=>m!=="about:blank").concat("--no-startup-window","--keep-alive-for-test");s=S(e.browser,[`--user-data-dir=${n}`,...u],{detached:!0,stdio:"ignore",env:r})}else{let n=f(r.HOME,".config","google-chrome"),u=f(n,"NativeMessagingHosts");pe(u,{recursive:!0,mode:448});let m=K(e.platform).nativeHostManifests[0];de(m,f(u,fe(m)));let _=process.geteuid?.()===0?["--no-sandbox"]:[];c=f(t,"browser.log");let g=ht(c,"a",384);a=_t(g).size,s=S(e.browser,[`--user-data-dir=${n}`,...o,..._,"--force-renderer-accessibility"],{detached:!0,stdio:["ignore",g,g],env:{...r,ACCESSIBILITY_ENABLED:"1"}}),mt(g)}let l=!1;s.once("error",()=>{l=!0}),s.once("exit",(n)=>{l||=n!==0}),s.unref();let d=!1;if(await We(async()=>l||(d=await i()),$t),!d){if(c&&Y(c).subarray(a).toString("utf8").includes("No usable sandbox"))throw new p("automation_browser_sandbox_unavailable","Chromium found no usable sandbox on this machine. Run the worker as a non-root user with unprivileged user namespaces enabled, or in a container with seccomp unconfined.");throw new p("automation_browser_unavailable","Reason could not connect the desktop browser.")}}async function Dr(e){await De(e,!0)}function Fr(e){return Ee(e,qe(e))}function Ee(e,r){return e.platform==="darwin-arm64"||T(e)?f(r,"browser-profile"):f(r,"home",".config","google-chrome")}function qe(e){let r=f(e.root,"automation");if(!q(r)||!Kt(e.automation))return e.automation;if(!zt(Ee(e,r)))try{Re(r,e.automation)}catch{}return q(r)?r:e.automation}function Kt(e){try{return D(e).length===0}catch(r){return r.code==="ENOENT"}}function zt(e){let r;try{r=wt(f(e,"SingletonLock"))}catch{return!1}let t=Number(r.slice(r.lastIndexOf("-")+1));if(!Number.isSafeInteger(t)||t<=0)return!0;try{return process.kill(t,0),!0}catch(i){return i.code==="EPERM"}}async function De(e,r){Ie({root:e.root,automation:e.automation,extensionDir:e.extensionDir});let t=qe(e);O(t);let i=$e().username,o={USER:i,LOGNAME:i,REASON_AUTOMATION_OCU:e.ocu,REASON_AUTOMATION_OBU:e.nativeHost};if(e.platform==="darwin-arm64"||T(e)){let n=T(e)?{...o,...Jt(),HOME:x()}:{...o,HOME:x(),PATH:`${B(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OCU:process.execPath,REASON_AUTOMATION_OCU_SUBCOMMAND:Pt};if(!r)return n;await G("browser",()=>we(e,n,t));let u=await Ce(e,n,t);if(!u)throw new p("automation_browser_unavailable","Reason could not connect the desktop browser.");return{...n,REASON_AUTOMATION_OBU_INSTANCE:u,REASON_AUTOMATION_BACKGROUND_TABS:"1"}}let s=await Te(),c=f(t,"home"),a=f(t,"runtime");O(c),O(a);let l=f(t,"bus"),d={...o,HOME:c,PATH:`${B(e.node)}:/usr/bin:/bin`,DISPLAY:s.display,XAUTHORITY:s.xauthority,XDG_RUNTIME_DIR:a,DBUS_SESSION_BUS_ADDRESS:`unix:path=${l}`,...s.sound?{PULSE_SERVER:Oe(s.sound)}:{}};if(await G("bus",()=>Mt(l,d)),r)await G("browser",()=>we(e,d,t));return d}function Jt(){let e=process.env.SystemRoot??"C:\\Windows",r=Object.fromEntries(["SystemDrive","USERPROFILE","LOCALAPPDATA","APPDATA","ProgramData","ProgramFiles","PATHEXT","ComSpec","USERNAME","USERDOMAIN","COMPUTERNAME","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE","PSModuleAnalysisCachePath"].flatMap((i)=>process.env[i]?[[i,process.env[i]]]:[])),t=f(e,"System32");return{...r,SystemRoot:e,windir:e,TEMP:F(),TMP:F(),PATH:[t,f(t,"WindowsPowerShell","v1.0"),e].join(yt)}}async function jt(e,r,t){let i=$e().username,o={USER:i,LOGNAME:i,HOME:x(),PATH:`${B(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OBU:r,REASON_AUTOMATION_BACKGROUND_TABS:"1"},s=await Gt(r,o);return t.throwIfAborted(),{...o,REASON_AUTOMATION_OBU_INSTANCE:s}}function Yt(e){if(process.platform!=="win32")return["--input-type=module","--eval",e];let r=f(F(),`reason-automation-${ft("sha256").update(e).digest("hex").slice(0,16)}.mjs`);if(!q(r)||Y(r,"utf8")!==e){let t=`${r}.${process.pid}.tmp`;xt(t,e,{mode:384}),Re(t,r)}return[r]}function Fe(e,r,t,i){if(typeof me!=="string")return Promise.reject(new p("automation_unavailable","This Reason build has no automation runtime."));let o=me;return new Promise((s,c)=>{let a=S(e,Yt(o),{env:{...r,REASON_CLOUD_GATEWAY_EXEC:"1",REASON_AUTOMATION_INLINE_RESULT:"1"},stdio:["pipe","pipe","pipe"],detached:process.platform!=="win32",windowsHide:!0}),l=[],d=0,n="",u=null,m=!1,_=(h)=>{if(u??=h,process.platform==="win32"&&a.pid){S(f(process.env.SystemRoot??"C:\\Windows","System32","taskkill.exe"),["/pid",String(a.pid),"/t","/f"],{stdio:"ignore",windowsHide:!0}).once("error",()=>a.kill("SIGKILL"));return}try{process.kill(-a.pid,"SIGKILL")}catch{a.kill("SIGKILL")}},g=(h)=>{if(m)return;m=!0,clearTimeout(N),i.removeEventListener("abort",y),h()},N=setTimeout(()=>_(new p("automation_timed_out","Reason automation did not finish in time.")),Tt),y=()=>_(new p("cancelled","Reason cancelled the automation call."));if(i.addEventListener("abort",y,{once:!0}),a.stdout.on("data",(h)=>{if(d+=h.byteLength,d>It)_(new p("automation_output_too_large","Reason automation output is too large."));else l.push(h)}),a.stderr.setEncoding("utf8").on("data",(h)=>{n=(n+h).slice(-Nt)}),a.stdin.on("error",()=>{}),a.once("error",()=>g(()=>c(u??new p("automation_unavailable","Reason could not start the automation runtime.")))),a.once("close",(h)=>g(()=>{if(u)c(u);else s({code:h??1,stdout:Buffer.concat(l),stderr:n})})),i.aborted)y();a.stdin.end(t)})}var I=new Map;function Xt(e,r,t){for(let[o,s]of I)if(s.expiresAt<=t)I.delete(o);while(I.size>=Rt)I.delete(I.keys().next().value);let i=ve();return I.set(i,{runId:e,bytes:r,expiresAt:t+vt}),i}async function Be(e,r,t,i={}){let o=await(i.environment??De)(e,r.kind==="browser");return t.throwIfAborted(),await(i.runtime??Fe)(e.node,o,JSON.stringify(r),t)}async function Br(e,r){let t=Ae({call:e});if(!("call"in t))E();let i=v();if(!i?.features.computer||t.call.kind==="browser"&&!i.features.browser)throw new p("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");return await Be(i,t.call,r)}function ge(e,r,t){let i=e.stdout.byteLength>z?Xt(r,e.stdout,t):void 0;return{code:e.code,stderr:e.stderr,instance_id:kt,output_bytes:e.stdout.byteLength,chunk:e.stdout.subarray(0,z).toString("base64"),...i?{output_id:i}:{}}}async function Ur(e,r={}){let t=Ae(e.payload),i=(r.now??Date.now)();if("output_id"in t){let _=I.get(t.output_id);if(!_||_.runId!==e.runId||_.expiresAt<=i||t.offset>_.bytes.byteLength)throw new p("automation_output_unavailable","Reason automation output expired.");return{chunk:_.bytes.subarray(t.offset,t.offset+z).toString("base64")}}let o=(r.components??v)(),s=(r.platform??process.platform)==="darwin",c=s?(r.macIdentity??J)():[],a=r.macSetup??P,l=!o?.features.computer||t.call.kind==="browser"&&!t.userChrome&&!o.features.browser;if(s&&(l||c.length===0||t.call.kind==="browser"&&t.userChrome&&!e.userChrome))return ge(await le({runId:e.runId,call:t.call,identity:c,desktopMissing:l,signal:e.signal},a),e.runId,i);if(!o?.features.computer)throw new p("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");let d=t.userChrome?e.userChrome:void 0;if(t.userChrome&&!d)throw new p("automation_user_chrome_unavailable","Your own Chrome is not enabled on this computer: run `reason desktop install` on this Mac (and `reason connect --user-chrome on` if you turned it off).");if(t.call.kind==="browser"&&!d&&!o.features.browser)throw new p("automation_browser_not_installed",!o.platform.startsWith("linux")?"Browser use is unavailable on this machine: re-run `reason desktop install`.":"Browser use is unavailable on this machine: install a non-snap Chromium at /usr/bin/chromium, then re-run `reason desktop install`.");e.signal.throwIfAborted();let n=await Ne(e.runId,e.signal,r.now),u="account"in r?r.account??null:xe(),m;try{if(d){let _=await(r.userChromeEnvironment??jt)(o,d,e.signal);e.signal.throwIfAborted(),m=await(r.runtime??Fe)(o.node,_,JSON.stringify(t.call),e.signal)}else if(u)m=await(r.delegate??H)(u,t.call,e.signal);else m=await Be(o,t.call,e.signal,r)}finally{n()}if(s)m=await ue({runId:e.runId,call:t.call,identity:c,output:m,signal:e.signal},a);return ge(m,e.runId,i)}
859
- export{Ze as Xd,z as Yd,Ae as Zd,Wr as _d,Wt as $d,Er as ae,qr as be,Lt as ce,Gt as de,Dr as ee,Fr as fe,Br as ge,Ur as he};
852
+ `;import{spawn as Ae}from"child_process";import{basename as Ce}from"path";var Te="__desktop-call",Ne="/usr/bin/setpriv",Pe=27262976,De=8192,Me=2000;function q(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function Ue(e){try{return JSON.parse(e)}catch{return null}}function Le(){return[process.execPath,...Ce(process.execPath).startsWith("bun")&&process.argv[1]?[process.argv[1]]:[],Te]}function Mt(e,o,t,n={}){t.throwIfAborted();let s=n.command??Le();return new Promise((i,u)=>{let c=(n.spawnProcess??Ae)(Ne,[`--reuid=${e.uid}`,`--regid=${e.gid}`,"--clear-groups","--no-new-privs","--",...s],{cwd:e.home,detached:!0,stdio:["pipe","pipe","pipe"],env:{HOME:e.home,USER:e.username,LOGNAME:e.username,PATH:"/usr/local/bin:/usr/bin:/bin"}}),d=[],m=0,l="",p=null,g=!1,h,y=(_)=>{try{process.kill(-c.pid,_)}catch{c.kill(_)}},I=(_)=>{p??=_,y("SIGTERM"),h??=setTimeout(()=>y("SIGKILL"),Me)},S=()=>I(new r("cancelled","Reason cancelled the desktop operation."));t.addEventListener("abort",S,{once:!0});let w=(_)=>{if(g)return;g=!0,clearTimeout(h),t.removeEventListener("abort",S),_()};if(c.stdout.on("data",(_)=>{if(m+=_.byteLength,m>Pe)I(new r("desktop_delegate_failed","Reason's desktop reply is too large."));else d.push(_)}),c.stderr.setEncoding("utf8").on("data",(_)=>{l=(l+_).slice(-De)}),c.stdin.on("error",()=>{}),c.once("error",()=>w(()=>u(p??new r("desktop_delegate_unavailable","Reason could not start its desktop as the desktop account.")))),c.once("close",(_,ve)=>w(()=>{if(p)return u(p);let b=Ue(Buffer.concat(d).toString("utf8"));if(q(b)&&b.ok===!0&&q(b.result))return i(b.result);let O=q(b)&&b.ok===!1&&typeof b.code==="string"&&typeof b.message==="string"?new r(b.code.slice(0,120),b.message.slice(0,2000)):null,J=`exited ${_??ve}${O?"":" with no reply"}`,Y=l.trim().split(`
853
+ `).at(-1)?.slice(-300)??"";if(!O||O.code==="desktop_delegate_failed")process.stderr.write(`Reason worker: desktop call ${J}${l?`: ${l.trim().slice(-500)}`:""}
854
+ `);if(O)return u(O);u(new r("desktop_delegate_failed",`Reason's desktop operation failed (${J}${Y?`: ${Y}`:""}).`))})),t.aborted)S();c.stdin.end(JSON.stringify(o))})}async function V(e,o,t,n={}){let s=await Mt(e,{op:"automation",call:o},t,n);if(!Number.isSafeInteger(s.code)||typeof s.stdout!=="string"||typeof s.stderr!=="string")throw new r("desktop_delegate_failed","Reason's desktop reply is malformed.");return{code:s.code,stdout:Buffer.from(s.stdout,"base64"),stderr:s.stderr}}import{execFile as $e,spawn as Be}from"child_process";import{closeSync as Fe,mkdirSync as Ge,openSync as He}from"fs";import{dirname as E,join as je}from"path";import{promisify as Ke}from"util";var Xe=Ke($e),Z="x-apple.systempreferences:com.apple.preference.security",Je={accessibility:`${Z}?Privacy_Accessibility`,screen:`${Z}?Privacy_ScreenCapture`},Ye=64,A=new Map;function T(e,o){let t=A.get(e);if(t?.has(o))return!1;if(!t){if(A.size>=Ye)A.delete(A.keys().next().value);t=new Set,A.set(e,t)}return t.add(o),!0}function ze(){let e=a(),o=Hn(Ee(e),process.env),t=je(e,".local","share","reason","desktop-install.log");Ge(E(t),{recursive:!0,mode:448});let n=He(t,"a",384);try{let s=Be(o,["desktop","install"],{detached:!0,stdio:["ignore",n,n],env:{...process.env,REASON_DESKTOP_BACKGROUND:"1"}});s.on("error",()=>{return}),s.unref()}finally{Fe(n)}}var N={open:async(e,o)=>{await Xe("/usr/bin/open",e,{signal:o,timeout:1e4,maxBuffer:8192})},request:(e,o)=>mt(e,o),tile:Jr,installDesktop:ze},Q=!1;async function ee(e,o,t){try{await o.open(["-a","Google Chrome",e],t)}catch{t.throwIfAborted(),await o.open([e],t)}}async function oe(e,o,t,n){if(await t.open([Je[o]],n).catch(()=>{}),e[0]&&!n.aborted)t.tile(E(E(E(e[0]))),o)}async function Ze(e,o,t,n,s){for(let i of t){if(!T(e,`grant:${i}`))continue;s.throwIfAborted(),await n.request(o,i).catch(()=>null),await oe(o,i,n,s)}}var Qe={name:"open_tab",description:"Open a web page in the user's own Chrome on this Mac. Reason cannot read, screenshot or click in that tab, and no tab_id is returned: browser control needs Reason's Chrome extension. An actual browser call opens its setup page.",inputSchema:{type:"object",properties:{url:{type:"string",description:"An http or https URL."}},required:["url"],additionalProperties:!1}};function te(e){return{code:0,stderr:"",stdout:Buffer.from(JSON.stringify({ok:!0,...e}))}}function et(e){if(typeof e!=="string")return null;try{let o=new URL(e);return o.protocol==="https:"||o.protocol==="http:"?o.href:null}catch{return null}}async function re(e,o=N){let{call:t,runId:n,signal:s}=e;if(t.kind==="browser"){if(t.operation==="discover")return te({result:{tools:[Qe]}});if(t.operation!=="call")throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet. Request a browser operation or connect Chrome from Reason to set it up.")}if(e.desktopMissing&&!Q){Q=!0;try{o.installDesktop()}catch{}}if(t.kind==="computer"){if(e.identity.length>0&&T(n,"grant:probe")){let c=await o.request(e.identity).catch(()=>null),d=c?[...c.accessibility?[]:["accessibility"],...c.screen?[]:["screen"]]:[];for(let m of d)T(n,`grant:${m}`);for(let m of d)await oe(e.identity,m,o,s)}throw new r("automation_computer_setup_required","Computer use is not set up on this Mac yet; Reason asked macOS for any missing permission.")}if(T(n,"page:chrome-extension"))await ee(so,o,s).catch(()=>{});let i=t.arguments,u=t.operation==="call"&&t.tool==="open_tab"&&i&&typeof i==="object"&&!Array.isArray(i)?et(i.url):null;if(!u)throw new r("automation_browser_setup_required","Browser control is not set up on this Mac yet; Reason opened its Chrome Web Store page. open_tab still opens pages.");return await ee(u,o,s),te({result:{content:[{type:"text",text:JSON.stringify({opened:u,browser:"the user's Chrome",controllable:!1,note:"Opened for the user to see. Reason cannot read or act in this tab until Reason's Chrome extension is added (its Chrome Web Store page is open)."})}]}})}async function ne(e,o=N){if(e.call.kind!=="computer"||e.call.operation!=="permission_status"||e.output.code!==0||e.identity.length===0)return e.output;let t;try{t=JSON.parse(e.output.stdout.toString("utf8"))}catch{return e.output}if(!t||typeof t!=="object"||Array.isArray(t))return e.output;let n=t.permissions;if(!n||typeof n!=="object")return e.output;let s=n,i=[...s.accessibility==="missing"?["accessibility"]:[],...s.screenRecording==="missing"?["screen"]:[]];if(i.length===0)return e.output;return await Ze(e.runId,e.identity,i,o,e.signal),{...e.output,stdout:Buffer.from(JSON.stringify({...t,requested:i}))}}var j=172032,pt=18874368,ft=8192,ht=65536,wt=55000,_t=60000,yt=4,bt=40000,xt=/^[0-9a-f-]{36}$/,ce=z,Rt=me();function P(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function D(){throw new r("invalid_automation_request","Reason automation request is malformed.")}function he(e){let o=Object.keys(e).sort().join(",");if(o==="call"||o==="browser,call"){let t=e.call,n=o==="browser,call";if(!P(t)||t.version!==1||t.kind!=="computer"&&t.kind!=="browser"||n&&(e.browser!==St||t.kind!=="browser")||JSON.stringify(t).length>ht)D();return{call:t,userChrome:n}}if(o==="offset,output_id"){if(typeof e.output_id!=="string"||!xt.test(e.output_id)||!Number.isSafeInteger(e.offset)||e.offset<0)D();return{output_id:e.output_id,offset:e.offset}}return D()}function Cn(e=process.platform,o=x){if(e==="darwin")return!0;return(e==="linux"||e==="win32")&&o()?.features.computer===!0}var It="__computer-use";function Os(e=x){return e()?.userChrome??{code:"user_chrome_browser_use_missing"}}function we(e,o,t,n){return new Promise((s)=>{let i=R(e,o,{env:t,stdio:"ignore",windowsHide:!0}),u=setTimeout(()=>{i.kill("SIGKILL"),s(-1)},n);i.once("error",()=>{clearTimeout(u),s(-1)}),i.once("exit",(c)=>{clearTimeout(u),s(c??-1)})})}function vt(e,o,t,n){return new Promise((s)=>{let i=R(e,o,{env:t,stdio:["ignore","pipe","ignore"],windowsHide:!0}),u="";i.stdout.setEncoding("utf8").on("data",(d)=>{u+=d});let c=setTimeout(()=>{i.kill("SIGKILL"),s(null)},n);i.once("error",()=>{clearTimeout(c),s(null)}),i.once("close",(d)=>{clearTimeout(c),s(d===0?u:null)})})}function Ot(e){return v(e)?f(L(),"open-browser-use"):"/tmp/open-browser-use"}function v(e){return e.platform==="win32-x64"||e.platform==="win32-arm64"}var At=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,Et=33554432;function Ct(e,o){let t;try{t=e===null?null:JSON.parse(e)}catch{return null}let n=P(t)&&P(t.result)?t.result.metadata:null;if(!P(n)||n.extensionId!==o)return null;return typeof n.extensionInstanceId==="string"&&At.test(n.extensionInstanceId)?n.extensionInstanceId:null}async function _e(e,o,t){let n=t.storages.map((c)=>{try{return U(c).filter((d)=>d.endsWith(".log")||d.endsWith(".ldb")).map((d)=>f(c,d))}catch{return[]}}),s;try{s=n.some((c)=>c.length>0)?U(t.socketDir).filter((c)=>c.endsWith(".sock")):[]}catch{return[]}let i=[];for(let c of s){let d=f(t.socketDir,c),m=Ct(await vt(e,["info","--socket",d,"--timeout","2s"],o,5000),t.extensionId);if(m)i.push({instance:m,socket:d})}let u=[];for(let[c,d]of(i.length>0?n:[]).entries())for(let m of d)try{if(ct(m).size>Et)continue;let l=X(m),p=i.find((g)=>l.includes(g.instance));if(p){u.push({storage:t.storages[c],...p});break}}catch{}return u}async function Tt(e,o,t){return(await _e(e,o,t))[0]?.instance??null}function ye(e,o,t){return Tt(e.nativeHost,o,{socketDir:Ot(e),extensionId:F,storages:[f(t,"browser-profile","Default","Local Extension Settings",F)]})}var le=/^(Default|Profile ([0-9]+))$/;async function Nt(e,o,t=a(),n=Ft){let s=f(t,"Library","Application Support","Google","Chrome"),i=[];try{i=U(s)}catch(l){if(l.code==="EPERM")throw new r("browser_use_chrome_access_denied","macOS blocked Reason from reading Chrome's profiles. Allow Full Disk Access for Reason on this Mac and try again.")}let u=(l)=>Number(le.exec(l)?.[2]??-1),c=i.filter((l)=>le.test(l)&&M(f(s,l,"Extensions",We))).sort((l,p)=>u(l)-u(p)),d=(l)=>f(s,l,"Local Extension Settings",We);return(await _e(e,o,{socketDir:n,extensionId:We,storages:c.map(d)})).map(({storage:l,instance:p,socket:g})=>({profile:c.find((h)=>d(h)===l),instance:p,socket:g}))}async function Pt(e,o,t=a(),n=Ft){let s=(await Nt(e,o,t,n))[0]?.instance;if(!s)throw new r("automation_user_chrome_not_connected","No Chrome profile on this Mac is connected to Reason. Open Chrome with the Reason extension, then try again.");return s}function ue(e){return new Promise((o)=>{let t=ut({path:e}),n=(s)=>{t.destroy(),o(s)};t.setTimeout(1000,()=>n(!1)),t.once("error",()=>n(!1)),t.once("connect",()=>n(!0))})}async function be(e,o){let t=Date.now()+o;while(Date.now()<t){if(await e())return!0;await new Promise((n)=>setTimeout(n,200))}return!1}var W=new Map;function H(e,o){let t=W.get(e);if(!t)t=o().finally(()=>W.delete(e)),W.set(e,t);return t}async function Dt(e,o){if(await ue(e))return;if(at(e,{force:!0}),await we("dbus-daemon",["--session",`--address=unix:path=${e}`,"--fork"],o,1e4)!==0||!await be(()=>ue(e),5000))throw new r("automation_unavailable","Reason could not start the desktop session bus.")}async function de(e,o,t){let n=e.platform==="darwin-arm64"||v(e)?async()=>await ye(e,o,t)!==null:async()=>await we(e.nativeHost,["info"],o,5000)===0;if(await n())return;let s=["--profile-directory=Default",`--load-extension=${e.extensionDir}`,"--no-first-run","--no-default-browser-check","--window-size=1280,800","about:blank"],i,u=null,c=0;if(e.platform==="darwin-arm64"){let l=f(t,"browser-profile");G(l);let p=f(l,"NativeMessagingHosts");ie(p,{recursive:!0,mode:448});let g=Tr(e.platform).nativeHostManifests[0];se(g,f(p,ae(g)));let h=e.browser.slice(0,e.browser.indexOf(".app/")+4),y=s.filter((I)=>I!=="about:blank").concat("--no-startup-window","--use-mock-keychain");i=R("/usr/bin/open",["-g","-n","-a",h,"--args",`--user-data-dir=${l}`,...y],{env:o,stdio:"ignore"})}else if(v(e)){let l=f(t,"browser-profile");G(l),tt(C("icacls"),[B(e.browser),"/grant","*S-1-15-2-1:(OI)(CI)(RX)","*S-1-15-2-2:(OI)(CI)(RX)"],{stdio:"ignore",windowsHide:!0,timeout:60000});let p=s.filter((g)=>g!=="about:blank").concat("--no-startup-window","--keep-alive-for-test");i=R(e.browser,[`--user-data-dir=${l}`,...p],{detached:!0,stdio:"ignore",env:o})}else{let l=f(o.HOME,".config","google-chrome"),p=f(l,"NativeMessagingHosts");ie(p,{recursive:!0,mode:448});let g=Tr(e.platform).nativeHostManifests[0];se(g,f(p,ae(g)));let h=process.geteuid?.()===0?["--no-sandbox"]:[];u=f(t,"browser.log");let y=st(u,"a",384);c=nt(y).size,i=R(e.browser,[`--user-data-dir=${l}`,...s,...h,"--force-renderer-accessibility"],{detached:!0,stdio:["ignore",y,y],env:{...o,ACCESSIBILITY_ENABLED:"1"}}),rt(y)}let d=!1;i.once("error",()=>{d=!0}),i.once("exit",(l)=>{d||=l!==0}),i.unref();let m=!1;if(await be(async()=>d||(m=await n()),bt),!m){if(u&&X(u).subarray(c).toString("utf8").includes("No usable sandbox"))throw new r("automation_browser_sandbox_unavailable","Chromium found no usable sandbox on this machine. Run the worker as a non-root user with unprivileged user namespaces enabled, or in a container with seccomp unconfined.");throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.")}}async function Is(e){await ke(e,!0)}function Ds(e){return Se(e,xe(e))}function Se(e,o){return e.platform==="darwin-arm64"||v(e)?f(o,"browser-profile"):f(o,"home",".config","google-chrome")}function xe(e){let o=f(e.root,"automation");if(!M(o)||!Ut(e.automation))return e.automation;if(!Lt(Se(e,o)))try{fe(o,e.automation)}catch{}return M(o)?o:e.automation}function Ut(e){try{return U(e).length===0}catch(o){return o.code==="ENOENT"}}function Lt(e){let o;try{o=it(f(e,"SingletonLock"))}catch{return!1}let t=Number(o.slice(o.lastIndexOf("-")+1));if(!Number.isSafeInteger(t)||t<=0)return!0;try{return process.kill(t,0),!0}catch(n){return n.code==="EPERM"}}async function ke(e,o){kt({root:e.root,automation:e.automation,extensionDir:e.extensionDir});let t=xe(e);G(t);let n=ge().username,s={USER:n,LOGNAME:n,REASON_AUTOMATION_OCU:e.ocu,REASON_AUTOMATION_OBU:e.nativeHost};if(e.platform==="darwin-arm64"||v(e)){let l=v(e)?{...s,...$t(),HOME:a()}:{...s,HOME:a(),PATH:`${B(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OCU:process.execPath,REASON_AUTOMATION_OCU_SUBCOMMAND:It};if(!o)return l;await H("browser",()=>de(e,l,t));let p=await ye(e,l,t);if(!p)throw new r("automation_browser_unavailable","Reason could not connect the desktop browser.");return{...l,REASON_AUTOMATION_OBU_INSTANCE:p,REASON_AUTOMATION_BACKGROUND_TABS:"1"}}let i=await qe(),u=f(t,"home"),c=f(t,"runtime");G(u),G(c);let d=f(t,"bus"),m={...s,HOME:u,PATH:`${B(e.node)}:/usr/bin:/bin`,DISPLAY:i.display,XAUTHORITY:i.xauthority,XDG_RUNTIME_DIR:c,DBUS_SESSION_BUS_ADDRESS:`unix:path=${d}`,...i.sound?{PULSE_SERVER:Ve(i.sound)}:{}};if(await H("bus",()=>Dt(d,m)),o)await H("browser",()=>de(e,m,t));return m}function $t(){let e=process.env.SystemRoot??"C:\\Windows",o=Object.fromEntries(["SystemDrive","USERPROFILE","LOCALAPPDATA","APPDATA","ProgramData","ProgramFiles","PATHEXT","ComSpec","USERNAME","USERDOMAIN","COMPUTERNAME","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE","PSModuleAnalysisCachePath"].flatMap((n)=>process.env[n]?[[n,process.env[n]]]:[])),t=f(e,"System32");return{...o,SystemRoot:e,windir:e,TEMP:L(),TMP:L(),PATH:[t,f(t,"WindowsPowerShell","v1.0"),e].join(dt)}}async function Bt(e,o,t){let n=ge().username,s={USER:n,LOGNAME:n,HOME:a(),PATH:`${B(e.node)}:/usr/bin:/bin:/usr/sbin:/sbin`,REASON_AUTOMATION_OBU:o,REASON_AUTOMATION_BACKGROUND_TABS:"1"},i=await Pt(o,s);return t.throwIfAborted(),{...s,REASON_AUTOMATION_OBU_INSTANCE:i}}function qt(e){if(process.platform!=="win32")return["--input-type=module","--eval",e];let o=f(L(),`reason-automation-${ot("sha256").update(e).digest("hex").slice(0,16)}.mjs`);if(!M(o)||X(o,"utf8")!==e){let t=`${o}.${process.pid}.tmp`;lt(t,e,{mode:384}),fe(t,o)}return[o]}function Re(e,o,t,n){if(typeof ce!=="string")return Promise.reject(new r("automation_unavailable","This Reason build has no automation runtime."));let s=ce;return new Promise((i,u)=>{let c=R(e,qt(s),{env:{...o,REASON_CLOUD_GATEWAY_EXEC:"1",REASON_AUTOMATION_INLINE_RESULT:"1"},stdio:["pipe","pipe","pipe"],detached:process.platform!=="win32",windowsHide:!0}),d=[],m=0,l="",p=null,g=!1,h=(w)=>{if(p??=w,process.platform==="win32"&&c.pid){R(f(process.env.SystemRoot??"C:\\Windows","System32","taskkill.exe"),["/pid",String(c.pid),"/t","/f"],{stdio:"ignore",windowsHide:!0}).once("error",()=>c.kill("SIGKILL"));return}try{process.kill(-c.pid,"SIGKILL")}catch{c.kill("SIGKILL")}},y=(w)=>{if(g)return;g=!0,clearTimeout(I),n.removeEventListener("abort",S),w()},I=setTimeout(()=>h(new r("automation_timed_out","Reason automation did not finish in time.")),wt),S=()=>h(new r("cancelled","Reason cancelled the automation call."));if(n.addEventListener("abort",S,{once:!0}),c.stdout.on("data",(w)=>{if(m+=w.byteLength,m>pt)h(new r("automation_output_too_large","Reason automation output is too large."));else d.push(w)}),c.stderr.setEncoding("utf8").on("data",(w)=>{l=(l+w).slice(-ft)}),c.stdin.on("error",()=>{}),c.once("error",()=>y(()=>u(p??new r("automation_unavailable","Reason could not start the automation runtime.")))),c.once("close",(w)=>y(()=>{if(p)u(p);else i({code:w??1,stdout:Buffer.concat(d),stderr:l})})),n.aborted)S();c.stdin.end(t)})}var k=new Map;function Wt(e,o,t){for(let[s,i]of k)if(i.expiresAt<=t)k.delete(s);while(k.size>=yt)k.delete(k.keys().next().value);let n=me();return k.set(n,{runId:e,bytes:o,expiresAt:t+_t}),n}async function Ie(e,o,t,n={}){let s=await(n.environment??ke)(e,o.kind==="browser");return t.throwIfAborted(),await(n.runtime??Re)(e.node,s,JSON.stringify(o),t)}async function Ns(e,o){let t=he({call:e});if(!("call"in t))D();let n=x();if(!n?.features.computer||t.call.kind==="browser"&&!n.features.browser)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");return await Ie(n,t.call,o)}function pe(e,o,t){let n=e.stdout.byteLength>j?Wt(o,e.stdout,t):void 0;return{code:e.code,stderr:e.stderr,instance_id:Rt,output_bytes:e.stdout.byteLength,chunk:e.stdout.subarray(0,j).toString("base64"),...n?{output_id:n}:{}}}async function An(e,o={}){let t=he(e.payload),n=(o.now??Date.now)();if("output_id"in t){let h=k.get(t.output_id);if(!h||h.runId!==e.runId||h.expiresAt<=n||t.offset>h.bytes.byteLength)throw new r("automation_output_unavailable","Reason automation output expired.");return{chunk:h.bytes.subarray(t.offset,t.offset+j).toString("base64")}}let s=(o.components??x)(),i=(o.platform??process.platform)==="darwin",u=i?(o.macIdentity??gt)():[],c=o.macSetup??N,d=!s?.features.computer||t.call.kind==="browser"&&!t.userChrome&&!s.features.browser;if(i&&(d||u.length===0||t.call.kind==="browser"&&t.userChrome&&!e.userChrome))return pe(await re({runId:e.runId,call:t.call,identity:u,desktopMissing:d,signal:e.signal},c),e.runId,n);if(!s?.features.computer)throw new r("automation_unavailable","Run `reason desktop install` on this machine to enable computer and browser use.");let m=t.userChrome?e.userChrome:void 0;if(t.userChrome&&!m)throw new r("automation_user_chrome_unavailable","Your own Chrome is not enabled on this computer: run `reason desktop install` on this Mac (and `reason connect --user-chrome on` if you turned it off).");if(t.call.kind==="browser"&&!m&&!s.features.browser)throw new r("automation_browser_not_installed",!s.platform.startsWith("linux")?"Browser use is unavailable on this machine: re-run `reason desktop install`.":"Browser use is unavailable on this machine: install a non-snap Chromium at /usr/bin/chromium, then re-run `reason desktop install`.");e.signal.throwIfAborted();let l=await Di(e.runId,e.signal,o.now),p="account"in o?o.account??null:K(),g;try{if(m){let h=await(o.userChromeEnvironment??Bt)(s,m,e.signal);e.signal.throwIfAborted(),g=await(o.runtime??Re)(s.node,h,JSON.stringify(t.call),e.signal)}else if(p)g=await(o.delegate??V)(p,t.call,e.signal);else g=await Ie(s,t.call,e.signal,o)}finally{l()}if(i)g=await ne({runId:e.runId,call:t.call,identity:u,output:g,signal:e.signal},c);return pe(g,e.runId,n)}
855
+ export{Mt,Cn,Os,Is,Ds,Ns,An};
@@ -0,0 +1,3 @@
1
+ // @bun
2
+ import{resolve as s,sep as i}from"path";var ke=[[".ssh"],[".gnupg"],[".aws"],[".azure"],[".kube"],[".docker"],[".infisical"],[".password-store"],[".terraform.d"],[".config","ara"],[".config","reason"],[".config","gh"],[".config","gcloud"],[".config","infisical"],[".config","op"],[".config","1password"],[".config","pass"],[".local","share","keyrings"],["library","keychains"],["library","application support","so.ara.desktop"],["appdata","roaming","github cli"],["appdata","roaming","gcloud"],["appdata","roaming","microsoft","credentials"],["appdata","local","microsoft","credentials"],["appdata","roaming","microsoft","protect"],["appdata","roaming","1password"],["appdata","local","1password"],["appdata","roaming","microsoft","windows","start menu","programs","startup"],["documents","windowspowershell"],["documents","powershell"],["appdata","local","reason"]],Zt=[[".codex","config.toml"],[".cursor","mcp.json"],[".claude","settings.json"],[".claude","settings.local.json"],[".cargo","credentials"],[".cargo","credentials.toml"],[".gem","credentials"],[".config","git","config"],[".config","git","credentials"],[".config","pip","pip.conf"]],Xt=new Set([".bash_login",".bash_profile",".bashrc",".bunfig.toml",".claude.json",".env",".envrc",".git-credentials",".gitconfig",".mcp.json",".netrc",".npmrc",".profile",".pypirc",".terraformrc",".yarnrc",".yarnrc.yml",".zlogin",".zlogout",".zprofile",".zshenv",".zshrc","auth.json","credentials.json","credentials.tfrc.json","local-daemon.json","local-device.json","mcp.json"]),Yt=[".key",".p12",".pfx",".pem"];function t(n,a){if(n.length<a.length)return!1;for(let r=0;r<=n.length-a.length;r+=1)if(a.every((o,e)=>n[r+e]===o))return!0;return!1}function E(n){let a=s(n).split(i).filter(Boolean).map((o)=>o.toLowerCase());if(ke.some((o)=>t(a,o)))return!0;if(Zt.some((o)=>t(a,o)))return!0;let r=a.at(-1)??"";return Xt.has(r)||r.startsWith(".env.")||Yt.some((o)=>r.endsWith(o))}
3
+ export{ke,Zt,Xt,Yt,E};
@@ -0,0 +1,5 @@
1
+ // @bun
2
+ import{_e,ye,we}from"./vm-hands-entry-lite-s4bharcb.js";import{Ne,Le,Me}from"./vm-hands-entry-lite-6c67a3jc.js";import{spawn as A}from"child_process";import{randomUUID as s}from"crypto";import{basename as C}from"path";import{fileURLToPath as E}from"url";function S(){let p=C(process.execPath).startsWith("bun");return{command:process.execPath,args:[...p?["--no-env-file",E(new URL("./worker-candidate-entry.ts",import.meta.url))]:[],"worker","__preview-probe"]}}async function ds(p,a,m=S()){if(a.aborted||!["darwin","linux","win32"].includes(process.platform)||process.platform==="win32"&&!ye())return!1;let n=new AbortController,o=()=>n.abort();a.addEventListener("abort",o,{once:!0});let y=setTimeout(o,5000),t=A(m.command,m.args,{cwd:p,...Le(),stdio:["pipe","pipe","ignore"],env:Ne()});Me(t);let l=!1,b=new Promise((e)=>t.once("close",()=>{l=!0,e()}));t.on("error",o);let f,w,k=new Promise((e)=>{f=e}),I=new Promise((e)=>{w=e}),v=new Promise((e)=>n.signal.addEventListener("abort",()=>e(null),{once:!0})),i="",g=0,P=!1;t.stdout.setEncoding("utf8"),t.stdout.on("data",(e)=>{if(g+=Buffer.byteLength(e),i+=e,g>512){o();return}while(i.includes(`
3
+ `)){let c=i.indexOf(`
4
+ `),d=i.slice(0,c);i=i.slice(c+1);try{if(!P){let r=JSON.parse(d);if(!r||Object.keys(r).length!==2||!Number.isInteger(r.port)||r.port<1024||r.port>65535||typeof r.token!=="string"||!/^[a-zA-Z0-9_-]{43}$/.test(r.token))throw Error("probe_receipt_invalid");P=!0,f({port:r.port,token:r.token})}else if(d==="ready")w(!0);else o()}catch{o()}}}),b.then(o);let h,u=!1;try{let e=await Promise.race([k,v]);if(!e||!t.pid||n.signal.aborted||a.aborted)return!1;let c=Date.now()+4500,d=s(),r={organizationId:s(),userId:s(),runId:s(),deviceId:s(),rootId:s(),attachmentRevision:0,grantRevision:1,jobId:"readiness",generation:1,fenceId:s(),port:e.port,expiresAtMs:c},L={binding:r,executorLaunchId:d,job:{jobId:r.jobId,state:"running",startedAtMs:Date.now(),finishedAtMs:null,leaseExpiresAtMs:c,exitCode:null,inputSequence:0,output:[],firstCursor:1,nextCursor:0,truncated:!1,process:{pid:t.pid,processGroupId:t.pid,executorLaunchId:d}}},x=we({binding:r,deniedPorts:new Set,readCurrentJob:async()=>!l&&!n.signal.aborted?L:null});h=await _e({binding:r,deviceRelayUrl:`ws://127.0.0.1:${e.port}/device/readiness/${e.token}`,port:x,signal:n.signal}),u=await Promise.race([I,v])===!0&&!n.signal.aborted&&!a.aborted}catch{u=!1}finally{if(clearTimeout(y),a.removeEventListener("abort",o),h?.close(),n.abort(),t.stdin.destroy(),!l)t.kill("SIGKILL");await b}return u&&l}
5
+ export{ds};