@mindexec/cli 0.2.339 → 0.2.341

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 (265) hide show
  1. package/codex-runtime.js +255 -31
  2. package/package.json +1 -1
  3. package/remote-hub.js +80 -2
  4. package/scripts/remote-fast-live-rate-smoke.mjs +19 -3
  5. package/scripts/remote-fast-mdm-browser-smoke.mjs +28 -2
  6. package/scripts/remote-hub-smoke.mjs +32 -2
  7. package/server.js +1304 -21
  8. package/wwwroot/_headers +50 -17
  9. package/wwwroot/assets/AdminDashboardPage-B2vz2Px9.css +1 -0
  10. package/wwwroot/assets/AdminDashboardPage-DpUfWSRs.js +1 -0
  11. package/wwwroot/assets/AppSidebar-CBqvLonm.js +1 -0
  12. package/wwwroot/assets/AuthPages-Cd5fYgU0.js +1 -0
  13. package/wwwroot/assets/AuthPages-DFGWKWuB.css +1 -0
  14. package/wwwroot/assets/CodePage-Bncc352E.css +1 -0
  15. package/wwwroot/assets/CodePage-D9-cUf4A.js +87 -0
  16. package/wwwroot/assets/CompanyCorePage-ChBnq1ve.css +1 -0
  17. package/wwwroot/assets/CompanyCorePage-D0byTW77.js +13 -0
  18. package/wwwroot/assets/ExecutionModePage-DtMDlqYc.js +18 -0
  19. package/wwwroot/assets/ExecutionModePage-TLuld9l3.css +1 -0
  20. package/wwwroot/assets/LaunchLeadCapture-CiRI1shz.css +1 -0
  21. package/wwwroot/assets/LaunchLeadCapture-CqeoHfvb.js +1 -0
  22. package/wwwroot/assets/MarketingHome-DPzaYzA_.css +1 -0
  23. package/wwwroot/assets/MarketingHome-DbWyEAya.js +1 -0
  24. package/wwwroot/assets/MindCanvas-CME1KpAo.js +48 -0
  25. package/wwwroot/assets/MindCanvas-DiQlUDJu.css +1 -0
  26. package/wwwroot/assets/PlanMasterPage-CJ36rep-.css +1 -0
  27. package/wwwroot/assets/PlanMasterPage-mhlZZK19.js +4 -0
  28. package/wwwroot/assets/PricingPage-Cg_0i_ZR.css +1 -0
  29. package/wwwroot/assets/PricingPage-zVu8-CrF.js +1 -0
  30. package/wwwroot/assets/ToolPages-DIB187pZ.css +1 -0
  31. package/wwwroot/assets/ToolPages-DTSqKzQd.js +28 -0
  32. package/wwwroot/assets/YouTubeSearchPage-IPPa_BIH.css +1 -0
  33. package/wwwroot/assets/YouTubeSearchPage-xGiaLNqk.js +4 -0
  34. package/wwwroot/assets/app-runtime-xD2Z3NdN.js +1 -0
  35. package/wwwroot/assets/canvas-runtime-D1gfvqKp.js +44 -0
  36. package/wwwroot/assets/code-agent-runtime-B5PPZd1t.js +74 -0
  37. package/wwwroot/assets/executionModeSettings-NJqurj-o.js +1 -0
  38. package/wwwroot/assets/index-CP_xejf2.css +1 -0
  39. package/wwwroot/assets/index-CZS-9WFu.js +2 -0
  40. package/wwwroot/assets/marketingTools-DN_rnHeB.js +4 -0
  41. package/wwwroot/assets/mindCanvasSearchWorker-BzPMsHOB.js +1 -0
  42. package/wwwroot/assets/mindexecution-mindcanvas.png +0 -0
  43. package/wwwroot/assets/mindexecution-prod-home-current.png +0 -0
  44. package/wwwroot/assets/mindexecution-prod-pricing-current.png +0 -0
  45. package/wwwroot/assets/pricingCheckoutShell-O-DnwmbU.js +1 -0
  46. package/wwwroot/assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js +1 -0
  47. package/wwwroot/assets/storage-CGDupGH4.js +1 -0
  48. package/wwwroot/assets/supabaseAuthAdapter-C3z334Qw.js +44 -0
  49. package/wwwroot/assets/toolHandoff-D5e5f7t5.js +4 -0
  50. package/wwwroot/assets/vendor-icons-oiW_NVNO.js +681 -0
  51. package/wwwroot/assets/vendor-msgpack-BE8aAsr3.js +1 -0
  52. package/wwwroot/assets/vendor-react-BXzpOyCS.js +40 -0
  53. package/wwwroot/favicon.svg +7 -0
  54. package/wwwroot/index.html +22 -736
  55. package/wwwroot/manifest.webmanifest +18 -21
  56. package/wwwroot/robots.txt +1 -1
  57. package/wwwroot/service-worker.js +5 -31
  58. package/wwwroot/sitemap.xml +21 -9
  59. package/wwwroot/MindExecution.Web.styles.css +0 -3
  60. package/wwwroot/_content/MindExecution.Plugins.Admin/css/admin-dashboard.css +0 -546
  61. package/wwwroot/_content/MindExecution.Plugins.Directory/MindExecution.Plugins.Directory.u7utcng611.bundle.scp.css +0 -7
  62. package/wwwroot/_content/MindExecution.Plugins.Directory/background.png +0 -0
  63. package/wwwroot/_content/MindExecution.Plugins.Directory/directory-manager.js +0 -202
  64. package/wwwroot/_content/MindExecution.Plugins.Directory/exampleJsInterop.js +0 -6
  65. package/wwwroot/_content/MindExecution.Plugins.YouTube/css/youtube-search.css +0 -251
  66. package/wwwroot/_content/MindExecution.Shared/MindExecution.Shared.wsano1j4wp.bundle.scp.css +0 -4
  67. package/wwwroot/_content/MindExecution.Shared/css/admin-dashboard.css +0 -559
  68. package/wwwroot/_content/MindExecution.Shared/css/app.css +0 -1
  69. package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +0 -3705
  70. package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Bold.ttf +0 -0
  71. package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Regular.ttf +0 -0
  72. package/wwwroot/_content/MindExecution.Shared/js/agent-visualization.js +0 -359
  73. package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +0 -1631
  74. package/wwwroot/_content/MindExecution.Shared/js/code-master.js +0 -8316
  75. package/wwwroot/_content/MindExecution.Shared/js/file-system-helper.js +0 -639
  76. package/wwwroot/_content/MindExecution.Shared/js/helpers/InfiniteGridHelper.js +0 -109
  77. package/wwwroot/_content/MindExecution.Shared/js/marked.min.js +0 -69
  78. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +0 -12909
  79. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js.backup +0 -1059
  80. package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +0 -24635
  81. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dev-guards.js +0 -325
  82. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js +0 -1491
  83. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js.bak +0 -434
  84. package/wwwroot/_content/MindExecution.Shared/js/mind-map-glow-shader.js +0 -260
  85. package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +0 -7829
  86. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js +0 -160
  87. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +0 -10392
  88. package/wwwroot/_content/MindExecution.Shared/js/mind-map-logic-workers.js +0 -977
  89. package/wwwroot/_content/MindExecution.Shared/js/mind-map-menu-manager.js +0 -1531
  90. package/wwwroot/_content/MindExecution.Shared/js/mind-map-multi-select.js +0 -1716
  91. package/wwwroot/_content/MindExecution.Shared/js/mind-map-node-search-worker.js +0 -554
  92. package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +0 -4578
  93. package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js +0 -489
  94. package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js.backup +0 -372
  95. package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +0 -2203
  96. package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-lod-system.js +0 -646
  97. package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js +0 -4735
  98. package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js +0 -2383
  99. package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js.backup +0 -1258
  100. package/wwwroot/_content/MindExecution.Shared/js/mind-map-visibility-worker.js +0 -890
  101. package/wwwroot/_content/MindExecution.Shared/js/mindmap-toolbar.js +0 -639
  102. package/wwwroot/_content/MindExecution.Shared/js/native-drop-handler.js +0 -170
  103. package/wwwroot/_content/MindExecution.Shared/js/plan-master.js +0 -788
  104. package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +0 -90
  105. package/wwwroot/_content/MindExecution.Shared/js/texture-worker-manager.js +0 -188
  106. package/wwwroot/_content/MindExecution.Shared/js/texture-worker.js +0 -208
  107. package/wwwroot/_content/MindExecution.Shared/js/three.min.js +0 -6
  108. package/wwwroot/_content/MindExecution.Shared/js/titlebar-handler.js +0 -191
  109. package/wwwroot/_content/MindExecution.Shared/js/token-manager.js +0 -37
  110. package/wwwroot/_content/MindExecution.Shared/js/token-worker.js +0 -28
  111. package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js +0 -5626
  112. package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js.map +0 -7
  113. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/css/all.min.css +0 -9
  114. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-brands-400.ttf +0 -0
  115. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
  116. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-regular-400.ttf +0 -0
  117. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
  118. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-solid-900.ttf +0 -0
  119. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
  120. package/wwwroot/_content/MindExecution.Shared/models/all-MiniLM-L6-v2-quantized.onnx +0 -0
  121. package/wwwroot/_content/MindExecution.Shared/models/vocab.txt +0 -30522
  122. package/wwwroot/_framework/Google.Protobuf.9h59ukbel7.dll +0 -0
  123. package/wwwroot/_framework/Markdig.d1j7v41cl1.dll +0 -0
  124. package/wwwroot/_framework/MessagePack.Annotations.l6qv48kgpt.dll +0 -0
  125. package/wwwroot/_framework/MessagePack.eqoptzx9d5.dll +0 -0
  126. package/wwwroot/_framework/Microsoft.AspNetCore.Authorization.k7dsih5y5g.dll +0 -0
  127. package/wwwroot/_framework/Microsoft.AspNetCore.Components.6nyje9sa0g.dll +0 -0
  128. package/wwwroot/_framework/Microsoft.AspNetCore.Components.Authorization.iycd6unprw.dll +0 -0
  129. package/wwwroot/_framework/Microsoft.AspNetCore.Components.Web.487u3twia4.dll +0 -0
  130. package/wwwroot/_framework/Microsoft.AspNetCore.Components.WebAssembly.d0gcnmlxxz.dll +0 -0
  131. package/wwwroot/_framework/Microsoft.AspNetCore.Metadata.h4yevl9adi.dll +0 -0
  132. package/wwwroot/_framework/Microsoft.CSharp.8bsm8vx6su.dll +0 -0
  133. package/wwwroot/_framework/Microsoft.Data.Sqlite.jdlxgv2jtg.dll +0 -0
  134. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.4gjazp7kjf.dll +0 -0
  135. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Abstractions.gocudnvz7b.dll +0 -0
  136. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Relational.lt4rsvinuo.dll +0 -0
  137. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Sqlite.69luj0fa9r.dll +0 -0
  138. package/wwwroot/_framework/Microsoft.Extensions.Caching.Abstractions.364t4jh3zz.dll +0 -0
  139. package/wwwroot/_framework/Microsoft.Extensions.Caching.Memory.izlxhpzosu.dll +0 -0
  140. package/wwwroot/_framework/Microsoft.Extensions.Configuration.8zq7hh41o7.dll +0 -0
  141. package/wwwroot/_framework/Microsoft.Extensions.Configuration.Abstractions.8if74zs6ea.dll +0 -0
  142. package/wwwroot/_framework/Microsoft.Extensions.Configuration.Json.duvlngw8i0.dll +0 -0
  143. package/wwwroot/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.t2hh9kvx0o.dll +0 -0
  144. package/wwwroot/_framework/Microsoft.Extensions.DependencyInjection.n4tg99oy8l.dll +0 -0
  145. package/wwwroot/_framework/Microsoft.Extensions.DependencyModel.h0d06ixk3e.dll +0 -0
  146. package/wwwroot/_framework/Microsoft.Extensions.Logging.Abstractions.rl32bkx2sd.dll +0 -0
  147. package/wwwroot/_framework/Microsoft.Extensions.Logging.dlht1xei0t.dll +0 -0
  148. package/wwwroot/_framework/Microsoft.Extensions.Options.qeunebioml.dll +0 -0
  149. package/wwwroot/_framework/Microsoft.Extensions.Primitives.18cr6vnuuz.dll +0 -0
  150. package/wwwroot/_framework/Microsoft.IO.RecyclableMemoryStream.r915vovvw4.dll +0 -0
  151. package/wwwroot/_framework/Microsoft.IdentityModel.Abstractions.1ejljk3erv.dll +0 -0
  152. package/wwwroot/_framework/Microsoft.IdentityModel.JsonWebTokens.1596zr8gne.dll +0 -0
  153. package/wwwroot/_framework/Microsoft.IdentityModel.Logging.229uyvpgio.dll +0 -0
  154. package/wwwroot/_framework/Microsoft.IdentityModel.Tokens.9sibtajc9f.dll +0 -0
  155. package/wwwroot/_framework/Microsoft.JSInterop.WebAssembly.ryia5gxiad.dll +0 -0
  156. package/wwwroot/_framework/Microsoft.JSInterop.ew9vz9o332.dll +0 -0
  157. package/wwwroot/_framework/Microsoft.ML.OnnxRuntime.w9deo1m5ss.dll +0 -0
  158. package/wwwroot/_framework/Microsoft.ML.Tokenizers.cm2vuv2z61.dll +0 -0
  159. package/wwwroot/_framework/Microsoft.NET.StringTools.3qbrf4v2ki.dll +0 -0
  160. package/wwwroot/_framework/MimeMapping.og9ys58ylm.dll +0 -0
  161. package/wwwroot/_framework/MindExecution.Core.y7ffihhajj.dll +0 -0
  162. package/wwwroot/_framework/MindExecution.Kernel.l5y3qroa7p.dll +0 -0
  163. package/wwwroot/_framework/MindExecution.Plugins.Admin.uuf238xa0h.dll +0 -0
  164. package/wwwroot/_framework/MindExecution.Plugins.Business.nyr3v25v48.dll +0 -0
  165. package/wwwroot/_framework/MindExecution.Plugins.Concept.l9z9tx9svt.dll +0 -0
  166. package/wwwroot/_framework/MindExecution.Plugins.Directory.ju87t8h3zs.dll +0 -0
  167. package/wwwroot/_framework/MindExecution.Plugins.PlanMaster.krn3jgvjpa.dll +0 -0
  168. package/wwwroot/_framework/MindExecution.Plugins.YouTube.5m53srfud6.dll +0 -0
  169. package/wwwroot/_framework/MindExecution.Shared.ojp3psugsm.dll +0 -0
  170. package/wwwroot/_framework/MindExecution.Web.82k6ktlkfg.dll +0 -0
  171. package/wwwroot/_framework/Newtonsoft.Json.a56zs13vug.dll +0 -0
  172. package/wwwroot/_framework/SQLitePCLRaw.batteries_v2.rrd1nzawpp.dll +0 -0
  173. package/wwwroot/_framework/SQLitePCLRaw.core.1dxloztpfz.dll +0 -0
  174. package/wwwroot/_framework/SQLitePCLRaw.provider.e_sqlite3.oekyzl53i1.dll +0 -0
  175. package/wwwroot/_framework/Supabase.Core.s1pkj4aj0l.dll +0 -0
  176. package/wwwroot/_framework/Supabase.Functions.qz4nu782sg.dll +0 -0
  177. package/wwwroot/_framework/Supabase.Gotrue.twah27pkik.dll +0 -0
  178. package/wwwroot/_framework/Supabase.Postgrest.gmuuv369ih.dll +0 -0
  179. package/wwwroot/_framework/Supabase.Realtime.ox3kchdy3w.dll +0 -0
  180. package/wwwroot/_framework/Supabase.Storage.fnjnepaowr.dll +0 -0
  181. package/wwwroot/_framework/Supabase.azmaw5pgcz.dll +0 -0
  182. package/wwwroot/_framework/System.Collections.23yxgetbju.dll +0 -0
  183. package/wwwroot/_framework/System.Collections.Concurrent.vow3rm1dku.dll +0 -0
  184. package/wwwroot/_framework/System.Collections.Immutable.ap9596utv5.dll +0 -0
  185. package/wwwroot/_framework/System.Collections.NonGeneric.npjkaz40oc.dll +0 -0
  186. package/wwwroot/_framework/System.Collections.Specialized.ugkjbs6p02.dll +0 -0
  187. package/wwwroot/_framework/System.ComponentModel.Annotations.clwo0z2oyu.dll +0 -0
  188. package/wwwroot/_framework/System.ComponentModel.Primitives.end4v0xe2c.dll +0 -0
  189. package/wwwroot/_framework/System.ComponentModel.TypeConverter.tgtp5sm4iv.dll +0 -0
  190. package/wwwroot/_framework/System.ComponentModel.wupoltkk1t.dll +0 -0
  191. package/wwwroot/_framework/System.Console.9dik0wogo2.dll +0 -0
  192. package/wwwroot/_framework/System.Data.Common.4v8jejsiu0.dll +0 -0
  193. package/wwwroot/_framework/System.Diagnostics.DiagnosticSource.e2q75ondtq.dll +0 -0
  194. package/wwwroot/_framework/System.Diagnostics.Process.9736yjnxs8.dll +0 -0
  195. package/wwwroot/_framework/System.Diagnostics.TraceSource.h9al53gbbw.dll +0 -0
  196. package/wwwroot/_framework/System.Diagnostics.Tracing.h4bcp2fo98.dll +0 -0
  197. package/wwwroot/_framework/System.Drawing.64oovy8qts.dll +0 -0
  198. package/wwwroot/_framework/System.Drawing.Primitives.o6jiqpgbgl.dll +0 -0
  199. package/wwwroot/_framework/System.Formats.Asn1.rylx5ipd40.dll +0 -0
  200. package/wwwroot/_framework/System.IO.Compression.iceabaupns.dll +0 -0
  201. package/wwwroot/_framework/System.IO.Pipelines.uw8csd3mlz.dll +0 -0
  202. package/wwwroot/_framework/System.IdentityModel.Tokens.Jwt.t67es60z5b.dll +0 -0
  203. package/wwwroot/_framework/System.Linq.Expressions.ty95ava37f.dll +0 -0
  204. package/wwwroot/_framework/System.Linq.Queryable.hs2195jrwy.dll +0 -0
  205. package/wwwroot/_framework/System.Linq.hssodjwmlf.dll +0 -0
  206. package/wwwroot/_framework/System.Memory.1k78n7wdxb.dll +0 -0
  207. package/wwwroot/_framework/System.Net.Http.3br8rfql4c.dll +0 -0
  208. package/wwwroot/_framework/System.Net.Http.Json.860wbh17d8.dll +0 -0
  209. package/wwwroot/_framework/System.Net.NetworkInformation.e3wr00853o.dll +0 -0
  210. package/wwwroot/_framework/System.Net.Ping.r5cw4mf1a4.dll +0 -0
  211. package/wwwroot/_framework/System.Net.Primitives.ksxwiwlvhu.dll +0 -0
  212. package/wwwroot/_framework/System.Net.WebSockets.6rt3n3gl2q.dll +0 -0
  213. package/wwwroot/_framework/System.Net.WebSockets.Client.z3usrzo7rz.dll +0 -0
  214. package/wwwroot/_framework/System.Numerics.Tensors.0c7z4mt3on.dll +0 -0
  215. package/wwwroot/_framework/System.Numerics.Vectors.lbdzx8reja.dll +0 -0
  216. package/wwwroot/_framework/System.ObjectModel.yct1gdirzf.dll +0 -0
  217. package/wwwroot/_framework/System.Private.CoreLib.c1dbswx1b2.dll +0 -0
  218. package/wwwroot/_framework/System.Private.Uri.zp9kmg0z93.dll +0 -0
  219. package/wwwroot/_framework/System.Private.Xml.Linq.lgv2n0akl4.dll +0 -0
  220. package/wwwroot/_framework/System.Private.Xml.dpsk8g304y.dll +0 -0
  221. package/wwwroot/_framework/System.Reactive.t3fuon548l.dll +0 -0
  222. package/wwwroot/_framework/System.Reflection.Emit.ILGeneration.1tcuz2cmbk.dll +0 -0
  223. package/wwwroot/_framework/System.Reflection.Emit.Lightweight.ddt2wylovg.dll +0 -0
  224. package/wwwroot/_framework/System.Reflection.Emit.d8vkadiwhg.dll +0 -0
  225. package/wwwroot/_framework/System.Reflection.Primitives.cpsl71xd1z.dll +0 -0
  226. package/wwwroot/_framework/System.Runtime.InteropServices.31vjgsfk1o.dll +0 -0
  227. package/wwwroot/_framework/System.Runtime.InteropServices.JavaScript.pn2wvizzet.dll +0 -0
  228. package/wwwroot/_framework/System.Runtime.InteropServices.RuntimeInformation.l5rk496q70.dll +0 -0
  229. package/wwwroot/_framework/System.Runtime.Intrinsics.0zee9qcqfy.dll +0 -0
  230. package/wwwroot/_framework/System.Runtime.Loader.xw2jr9wl92.dll +0 -0
  231. package/wwwroot/_framework/System.Runtime.Numerics.ezj1dfyvbj.dll +0 -0
  232. package/wwwroot/_framework/System.Runtime.Serialization.Formatters.0y019e9zkr.dll +0 -0
  233. package/wwwroot/_framework/System.Runtime.Serialization.Primitives.bia5wb62c8.dll +0 -0
  234. package/wwwroot/_framework/System.Runtime.h9cduidfkh.dll +0 -0
  235. package/wwwroot/_framework/System.Security.Claims.2r18wim2rl.dll +0 -0
  236. package/wwwroot/_framework/System.Security.Cryptography.qqgybpoucx.dll +0 -0
  237. package/wwwroot/_framework/System.Text.Encoding.Extensions.9t3hs6kyll.dll +0 -0
  238. package/wwwroot/_framework/System.Text.Encodings.Web.wftjfh2crk.dll +0 -0
  239. package/wwwroot/_framework/System.Text.Json.0v0qgmri0w.dll +0 -0
  240. package/wwwroot/_framework/System.Text.RegularExpressions.cvkox11l6l.dll +0 -0
  241. package/wwwroot/_framework/System.Threading.Channels.419493szqu.dll +0 -0
  242. package/wwwroot/_framework/System.Threading.Thread.xhmys87xh5.dll +0 -0
  243. package/wwwroot/_framework/System.Threading.b66vzsz9g1.dll +0 -0
  244. package/wwwroot/_framework/System.Transactions.Local.7zfffdvnwf.dll +0 -0
  245. package/wwwroot/_framework/System.Web.HttpUtility.9up6xfbtuq.dll +0 -0
  246. package/wwwroot/_framework/System.Xml.Linq.n5rzv9nbf7.dll +0 -0
  247. package/wwwroot/_framework/System.Xml.ReaderWriter.ag8pilllob.dll +0 -0
  248. package/wwwroot/_framework/System.Xml.XDocument.sn51jas17n.dll +0 -0
  249. package/wwwroot/_framework/System.brmz7yk5qh.dll +0 -0
  250. package/wwwroot/_framework/Websocket.Client.vapounvmnl.dll +0 -0
  251. package/wwwroot/_framework/blazor.boot.json +0 -305
  252. package/wwwroot/_framework/blazor.webassembly.js +0 -1
  253. package/wwwroot/_framework/dotnet.js +0 -4
  254. package/wwwroot/_framework/dotnet.native.boem75ye5i.wasm +0 -0
  255. package/wwwroot/_framework/dotnet.native.qc8g39g30v.js +0 -16
  256. package/wwwroot/_framework/dotnet.runtime.opaiwunc3t.js +0 -4
  257. package/wwwroot/_framework/icudt_CJK.tjcz0u77k5.dat +0 -0
  258. package/wwwroot/_framework/icudt_EFIGS.tptq2av103.dat +0 -0
  259. package/wwwroot/_framework/icudt_no_CJK.lfu7j35m59.dat +0 -0
  260. package/wwwroot/_framework/netstandard.yvr3prsx0x.dll +0 -0
  261. package/wwwroot/appsettings.json +0 -83
  262. package/wwwroot/icon-192.png +0 -0
  263. package/wwwroot/icon-512.png +0 -0
  264. package/wwwroot/js/marketing-tool.js +0 -180
  265. package/wwwroot/service-worker-assets.js +0 -857
package/codex-runtime.js CHANGED
@@ -1,13 +1,15 @@
1
1
  import { promises as fs, readFileSync } from 'fs';
2
2
  import path from 'path';
3
3
  import os from 'os';
4
- import { exec, spawn } from 'child_process';
4
+ import { exec, execFile, spawn } from 'child_process';
5
5
  import { promisify } from 'util';
6
6
  import crypto from 'crypto';
7
7
 
8
8
  const execAsync = promisify(exec);
9
+ const execFileAsync = promisify(execFile);
9
10
 
10
11
  const PROVIDER_KIND = Object.freeze({
12
+ fixtureReadOnly: 'FixtureReadOnly',
11
13
  typeScriptSdk: 'TypeScriptSdk',
12
14
  appServerJsonRpc: 'AppServerJsonRpc',
13
15
  legacyExec: 'LegacyExec',
@@ -40,6 +42,8 @@ const TEMP_DIR = '.ai/codex';
40
42
  const CODEX_CONFIG_PATH = path.join(os.homedir(), '.codex', 'config.toml');
41
43
  const CODEX_SOURCE_HOME = path.join(os.homedir(), '.codex');
42
44
  const CODEX_RUNTIME_HOME_ENV = 'MINDEXEC_CODEX_HOME';
45
+ const CODEX_PATH_ENV = 'MINDEXEC_CODEX_PATH';
46
+ const CODEX_USE_SOURCE_HOME_ENV = 'MINDEXEC_CODEX_USE_SOURCE_HOME';
43
47
  const DEFAULT_CODEX_RUNTIME_HOME = path.join(os.homedir(), '.mindexec', 'codex-runtime');
44
48
  const CODEX_RUNTIME_CONFIG_MARKER = '# Generated by MindExec LocalBridge for isolated AI node runs.';
45
49
  const CODEX_RUNTIME_AUTH_FILES = ['auth.json'];
@@ -80,6 +84,10 @@ function normalizeProviderKind(value) {
80
84
  return '';
81
85
  }
82
86
 
87
+ if (normalized === 'fixture' || normalized === 'fixturereadonly' || normalized === 'fixture-readonly' || normalized === 'fixture_readonly' || normalized === 'test-fixture') {
88
+ return PROVIDER_KIND.fixtureReadOnly;
89
+ }
90
+
83
91
  if (normalized === 'typescriptsdk' || normalized === 'typescript-sdk' || normalized === 'type_script_sdk') {
84
92
  return PROVIDER_KIND.typeScriptSdk;
85
93
  }
@@ -99,6 +107,10 @@ function isEnabledEnv(value) {
99
107
  return /^(1|true|yes|on)$/i.test(String(value || '').trim());
100
108
  }
101
109
 
110
+ function isFixtureProviderEnabled() {
111
+ return isEnabledEnv(process.env.MINDEXEC_CODEX_FIXTURE_PROVIDER);
112
+ }
113
+
102
114
  function unquoteTomlKey(value) {
103
115
  const text = String(value || '').trim();
104
116
  if (text.length >= 2 && ((text.startsWith('"') && text.endsWith('"')) || (text.startsWith("'") && text.endsWith("'")))) {
@@ -109,7 +121,7 @@ function unquoteTomlKey(value) {
109
121
  }
110
122
 
111
123
  function readConfiguredMcpServerNames() {
112
- if (isEnabledEnv(process.env.MINDEXEC_CODEX_INHERIT_MCP)) {
124
+ if (!isEnabledEnv(process.env.MINDEXEC_CODEX_DISABLE_SOURCE_MCP)) {
113
125
  return [];
114
126
  }
115
127
 
@@ -159,10 +171,23 @@ function buildCodexSdkConfigOverrides() {
159
171
  }
160
172
 
161
173
  function resolveCodexRuntimeHome() {
174
+ if (isEnabledEnv(process.env[CODEX_USE_SOURCE_HOME_ENV])) {
175
+ return CODEX_SOURCE_HOME;
176
+ }
177
+
162
178
  const configured = String(process.env[CODEX_RUNTIME_HOME_ENV] || '').trim();
163
179
  return path.resolve(configured || DEFAULT_CODEX_RUNTIME_HOME);
164
180
  }
165
181
 
182
+ function isUsingSourceCodexHome() {
183
+ return path.resolve(resolveCodexRuntimeHome()).toLowerCase() === path.resolve(CODEX_SOURCE_HOME).toLowerCase();
184
+ }
185
+
186
+ function resolveCodexPathOverride() {
187
+ const configured = String(process.env[CODEX_PATH_ENV] || '').trim();
188
+ return configured ? path.resolve(configured) : null;
189
+ }
190
+
166
191
  async function copyCodexRuntimeFileIfPresent(fileName, runtimeHome) {
167
192
  const source = path.join(CODEX_SOURCE_HOME, fileName);
168
193
  const target = path.join(runtimeHome, fileName);
@@ -179,8 +204,33 @@ async function copyCodexRuntimeFileIfPresent(fileName, runtimeHome) {
179
204
  }
180
205
  }
181
206
 
182
- async function ensureCodexRuntimeHome() {
207
+ function buildCodexRuntimeConfig(trustedDirectory = '') {
208
+ const lines = [
209
+ CODEX_RUNTIME_CONFIG_MARKER,
210
+ '# User MCP server definitions are intentionally not inherited here.',
211
+ '# LocalBridge passes model, sandbox, and reasoning options per run.'
212
+ ];
213
+
214
+ const resolvedTrustedDirectory = String(trustedDirectory || '').trim()
215
+ ? path.resolve(trustedDirectory)
216
+ : '';
217
+ if (resolvedTrustedDirectory) {
218
+ lines.push(
219
+ '',
220
+ `[projects.${JSON.stringify(resolvedTrustedDirectory)}]`,
221
+ 'trust_level = "trusted"'
222
+ );
223
+ }
224
+
225
+ return `${lines.join('\n')}\n`;
226
+ }
227
+
228
+ async function ensureCodexRuntimeHome(trustedDirectory = '') {
183
229
  const runtimeHome = resolveCodexRuntimeHome();
230
+ if (isUsingSourceCodexHome()) {
231
+ return runtimeHome;
232
+ }
233
+
184
234
  await fs.mkdir(runtimeHome, { recursive: true });
185
235
  await fs.mkdir(path.join(runtimeHome, 'sessions'), { recursive: true });
186
236
  await fs.mkdir(path.join(runtimeHome, 'generated_images'), { recursive: true });
@@ -199,11 +249,7 @@ async function ensureCodexRuntimeHome() {
199
249
  }
200
250
 
201
251
  if (shouldWriteConfig) {
202
- await fs.writeFile(
203
- configPath,
204
- `${CODEX_RUNTIME_CONFIG_MARKER}\n# User MCP server definitions are intentionally not inherited here.\n# LocalBridge passes model, sandbox, and reasoning options per run.\n`,
205
- 'utf8'
206
- );
252
+ await fs.writeFile(configPath, buildCodexRuntimeConfig(trustedDirectory), 'utf8');
207
253
  }
208
254
 
209
255
  return runtimeHome;
@@ -218,10 +264,22 @@ function buildCodexChildEnv() {
218
264
  }
219
265
 
220
266
  env.CODEX_HOME = resolveCodexRuntimeHome();
221
- env.MINDEXEC_CODEX_ISOLATED_HOME = '1';
267
+ if (isUsingSourceCodexHome()) {
268
+ delete env.MINDEXEC_CODEX_ISOLATED_HOME;
269
+ } else {
270
+ env.MINDEXEC_CODEX_ISOLATED_HOME = '1';
271
+ }
222
272
  return env;
223
273
  }
224
274
 
275
+ function createCodexSdkClient(sdk) {
276
+ return new sdk.Codex({
277
+ codexPathOverride: resolveCodexPathOverride(),
278
+ env: buildCodexChildEnv(),
279
+ config: buildCodexSdkConfigOverrides()
280
+ });
281
+ }
282
+
225
283
  function appendCodexIsolationConfigArgs(args) {
226
284
  for (const name of readConfiguredMcpServerNames()) {
227
285
  args.push('--config', `mcp_servers.${name}.enabled=false`);
@@ -268,12 +326,51 @@ function normalizeApprovalPolicy(value, sandboxMode) {
268
326
  }
269
327
 
270
328
  if (normalized === 'never' && sandboxMode !== 'danger-full-access') {
271
- return 'on-request';
329
+ return 'never';
272
330
  }
273
331
 
274
332
  return 'on-request';
275
333
  }
276
334
 
335
+ function isPathInside(parentPath, candidatePath) {
336
+ const relativePath = path.relative(path.resolve(parentPath), path.resolve(candidatePath));
337
+ return relativePath === '' || (relativePath && !relativePath.startsWith('..') && !path.isAbsolute(relativePath));
338
+ }
339
+
340
+ function normalizeAdditionalDirectories(value, workingDirectory, sandboxMode) {
341
+ const resolvedWorkingDirectory = path.resolve(workingDirectory);
342
+ const candidates = sandboxMode === 'workspace-write'
343
+ ? [resolvedWorkingDirectory]
344
+ : [];
345
+
346
+ if (Array.isArray(value)) {
347
+ for (const item of value) {
348
+ const raw = String(item || '').trim();
349
+ if (!raw) {
350
+ continue;
351
+ }
352
+
353
+ const resolved = path.resolve(path.isAbsolute(raw)
354
+ ? raw
355
+ : path.join(resolvedWorkingDirectory, raw));
356
+ candidates.push(resolved);
357
+ }
358
+ }
359
+
360
+ const normalized = [];
361
+ for (const candidate of candidates) {
362
+ if (!isPathInside(resolvedWorkingDirectory, candidate)) {
363
+ continue;
364
+ }
365
+
366
+ if (!normalized.includes(candidate)) {
367
+ normalized.push(candidate);
368
+ }
369
+ }
370
+
371
+ return normalized;
372
+ }
373
+
277
374
  function normalizeOutputSchema(value) {
278
375
  if (value == null) {
279
376
  return undefined;
@@ -461,6 +558,7 @@ function buildThreadOptions(body, workingDirectory) {
461
558
  const prompt = String(body?.instruction || body?.prompt || '').trim();
462
559
  const sandboxMode = normalizeSandbox(body?.sandbox || body?.sandboxMode, body?.intent || body?.nodeKind, prompt);
463
560
  const approvalPolicy = normalizeApprovalPolicy(body?.approvalPolicy, sandboxMode);
561
+ const additionalDirectories = normalizeAdditionalDirectories(body?.additionalDirectories, workingDirectory, sandboxMode);
464
562
  const options = {
465
563
  workingDirectory,
466
564
  skipGitRepoCheck: true,
@@ -469,6 +567,10 @@ function buildThreadOptions(body, workingDirectory) {
469
567
  approvalPolicy
470
568
  };
471
569
 
570
+ if (additionalDirectories.length > 0) {
571
+ options.additionalDirectories = additionalDirectories;
572
+ }
573
+
472
574
  const model = String(body?.model || '').trim();
473
575
  if (model) {
474
576
  options.model = model;
@@ -492,7 +594,12 @@ function serializeThreadOptionsForStatus(options) {
492
594
  sandboxMode: API_SANDBOX_BY_SDK_VALUE[options?.sandboxMode] || options?.sandboxMode || null,
493
595
  reasoningEffort: options?.modelReasoningEffort || null,
494
596
  approvalPolicy: options?.approvalPolicy || null,
495
- workingDirectory: options?.workingDirectory || null
597
+ workingDirectory: options?.workingDirectory || null,
598
+ additionalDirectories: Array.isArray(options?.additionalDirectories)
599
+ ? [...options.additionalDirectories]
600
+ : [],
601
+ networkAccessEnabled: options?.networkAccessEnabled === undefined ? null : Boolean(options.networkAccessEnabled),
602
+ webSearchMode: options?.webSearchMode || null
496
603
  };
497
604
  }
498
605
 
@@ -513,7 +620,7 @@ async function checkLegacyAvailability() {
513
620
  }
514
621
 
515
622
  try {
516
- const { stdout, stderr } = await execAsync('codex --version', {
623
+ const { stdout, stderr } = await execFileAsync(resolveCodexPathOverride() || 'codex', ['--version'], {
517
624
  timeout: 6000,
518
625
  windowsHide: true,
519
626
  maxBuffer: 512 * 1024
@@ -559,12 +666,22 @@ export function createCodexRuntime(options) {
559
666
  const activeTurns = new Map();
560
667
 
561
668
  async function getCapabilities() {
669
+ const fixtureEnabled = isFixtureProviderEnabled();
562
670
  const [sdk, legacy, modelCatalog] = await Promise.all([
563
671
  checkSdkAvailability(packageRoot),
564
672
  checkLegacyAvailability(),
565
673
  getModelCatalog()
566
674
  ]);
567
- const preferredProviderKind = sdk.available
675
+ const fixture = {
676
+ kind: PROVIDER_KIND.fixtureReadOnly,
677
+ available: fixtureEnabled,
678
+ implemented: true,
679
+ version: fixtureEnabled ? 'local-smoke' : null,
680
+ error: fixtureEnabled ? null : 'Enable MINDEXEC_CODEX_FIXTURE_PROVIDER=1 for local contract smokes only.'
681
+ };
682
+ const preferredProviderKind = fixtureEnabled
683
+ ? PROVIDER_KIND.fixtureReadOnly
684
+ : sdk.available
568
685
  ? PROVIDER_KIND.typeScriptSdk
569
686
  : legacy.available
570
687
  ? PROVIDER_KIND.legacyExec
@@ -574,6 +691,7 @@ export function createCodexRuntime(options) {
574
691
  success: preferredProviderKind !== PROVIDER_KIND.unavailable,
575
692
  preferredProviderKind,
576
693
  providers: [
694
+ fixture,
577
695
  sdk,
578
696
  {
579
697
  kind: PROVIDER_KIND.appServerJsonRpc,
@@ -602,6 +720,13 @@ export function createCodexRuntime(options) {
602
720
 
603
721
  async function resolveProvider(requestedProviderKind) {
604
722
  const requested = normalizeProviderKind(requestedProviderKind);
723
+ if (isFixtureProviderEnabled() && (!requested || requested === PROVIDER_KIND.fixtureReadOnly)) {
724
+ return PROVIDER_KIND.fixtureReadOnly;
725
+ }
726
+ if (requested === PROVIDER_KIND.fixtureReadOnly) {
727
+ return PROVIDER_KIND.unavailable;
728
+ }
729
+
605
730
  const sdk = await checkSdkAvailability(packageRoot);
606
731
  const legacy = requested === PROVIDER_KIND.typeScriptSdk
607
732
  ? null
@@ -629,13 +754,32 @@ export function createCodexRuntime(options) {
629
754
  const threadOptions = buildThreadOptions(body, workingDirectory);
630
755
  const now = new Date().toISOString();
631
756
 
757
+ if (providerKind === PROVIDER_KIND.fixtureReadOnly) {
758
+ const localThreadId = `fixture_${crypto.randomUUID()}`;
759
+ threads.set(localThreadId, {
760
+ providerKind,
761
+ createdAtUtc: now,
762
+ updatedAtUtc: now,
763
+ options: threadOptions,
764
+ officialThreadId: localThreadId,
765
+ lastStatus: 'created'
766
+ });
767
+
768
+ return makeEmptyResult({
769
+ success: true,
770
+ providerKind,
771
+ threadId: localThreadId,
772
+ status: 'created',
773
+ startedAtUtc: now,
774
+ completedAtUtc: now,
775
+ sandboxMode: API_SANDBOX_BY_SDK_VALUE[threadOptions.sandboxMode] || threadOptions.sandboxMode
776
+ });
777
+ }
778
+
632
779
  if (providerKind === PROVIDER_KIND.typeScriptSdk) {
633
780
  const sdk = await loadCodexSdk();
634
- await ensureCodexRuntimeHome();
635
- const codex = new sdk.Codex({
636
- env: buildCodexChildEnv(),
637
- config: buildCodexSdkConfigOverrides()
638
- });
781
+ await ensureCodexRuntimeHome(workingDirectory);
782
+ const codex = createCodexSdkClient(sdk);
639
783
  const thread = codex.startThread(threadOptions);
640
784
  const localThreadId = `local_${crypto.randomUUID()}`;
641
785
  threads.set(localThreadId, {
@@ -697,11 +841,8 @@ export function createCodexRuntime(options) {
697
841
  }
698
842
 
699
843
  const sdk = await loadCodexSdk();
700
- await ensureCodexRuntimeHome();
701
- const codex = new sdk.Codex({
702
- env: buildCodexChildEnv(),
703
- config: buildCodexSdkConfigOverrides()
704
- });
844
+ await ensureCodexRuntimeHome(threadOptions?.workingDirectory);
845
+ const codex = createCodexSdkClient(sdk);
705
846
  const officialId = requestedThreadId && !requestedThreadId.startsWith('local_')
706
847
  ? requestedThreadId
707
848
  : '';
@@ -825,6 +966,72 @@ export function createCodexRuntime(options) {
825
966
  return result;
826
967
  }
827
968
 
969
+ async function runFixtureThread(body, workingDirectory, prompt, startedAtUtc) {
970
+ const threadOptions = buildThreadOptions(body, workingDirectory);
971
+ const threadId = String(body.threadId || `fixture_${crypto.randomUUID()}`);
972
+ const turnId = `turn_${crypto.randomUUID()}`;
973
+ const sandboxMode = API_SANDBOX_BY_SDK_VALUE[threadOptions.sandboxMode] || threadOptions.sandboxMode;
974
+ const violations = [];
975
+
976
+ if (sandboxMode !== 'read_only') {
977
+ violations.push(`sandbox=${sandboxMode || 'missing'}`);
978
+ }
979
+ if (threadOptions.webSearchMode !== 'disabled') {
980
+ violations.push(`webSearchMode=${threadOptions.webSearchMode || 'missing'}`);
981
+ }
982
+ if (threadOptions.networkAccessEnabled !== false) {
983
+ violations.push(`networkAccessEnabled=${String(threadOptions.networkAccessEnabled)}`);
984
+ }
985
+ if (threadOptions.approvalPolicy !== 'on-request') {
986
+ violations.push(`approvalPolicy=${threadOptions.approvalPolicy || 'missing'}`);
987
+ }
988
+
989
+ const result = makeEmptyResult({
990
+ providerKind: PROVIDER_KIND.fixtureReadOnly,
991
+ threadId,
992
+ turnId,
993
+ status: violations.length > 0 ? 'failed' : 'completed',
994
+ startedAtUtc,
995
+ completedAtUtc: new Date().toISOString(),
996
+ sandboxMode,
997
+ rawEventCount: 1
998
+ });
999
+
1000
+ if (violations.length > 0) {
1001
+ result.error = `FixtureReadOnly refused unsafe Codex request: ${violations.join(', ')}`;
1002
+ result.summary = 'The local fixture provider blocks non-read-only CodeMaster execution contracts.';
1003
+ } else {
1004
+ result.success = true;
1005
+ result.summary = 'FixtureReadOnly validated the CodeMaster LocalBridge Codex handoff.';
1006
+ result.finalResponse = [
1007
+ 'LocalBridge Codex fixture completed a read-only CodeMaster run.',
1008
+ `Sandbox=${sandboxMode}; approval=${threadOptions.approvalPolicy}; networkAccess=${threadOptions.networkAccessEnabled}; webSearch=${threadOptions.webSearchMode}.`,
1009
+ `WorkingDirectory=${workingDirectory}.`,
1010
+ `InstructionChars=${prompt.length}; changedFiles=0; commandLogs=0.`
1011
+ ].join('\n');
1012
+ }
1013
+
1014
+ threads.set(threadId, {
1015
+ providerKind: PROVIDER_KIND.fixtureReadOnly,
1016
+ createdAtUtc: startedAtUtc,
1017
+ updatedAtUtc: result.completedAtUtc,
1018
+ options: threadOptions,
1019
+ officialThreadId: threadId,
1020
+ lastStatus: result.status,
1021
+ lastResult: result
1022
+ });
1023
+
1024
+ log('Codex fixture run complete', {
1025
+ threadId,
1026
+ turnId,
1027
+ sandbox: sandboxMode,
1028
+ cwd: workingDirectory,
1029
+ success: result.success
1030
+ });
1031
+
1032
+ return result;
1033
+ }
1034
+
828
1035
  async function runLegacyExec(body, workingDirectory, prompt, startedAtUtc) {
829
1036
  const threadOptions = buildThreadOptions(body, workingDirectory);
830
1037
  const turnId = `turn_${crypto.randomUUID()}`;
@@ -842,7 +1049,7 @@ export function createCodexRuntime(options) {
842
1049
  const tempDir = path.join(workingDirectory, TEMP_DIR);
843
1050
  const schema = normalizeOutputSchema(body.outputSchema || body.outputSchemaJson);
844
1051
  let schemaPath = null;
845
- await ensureCodexRuntimeHome();
1052
+ await ensureCodexRuntimeHome(workingDirectory);
846
1053
  const args = [
847
1054
  'exec',
848
1055
  '-',
@@ -852,10 +1059,14 @@ export function createCodexRuntime(options) {
852
1059
  'plugins',
853
1060
  '--disable',
854
1061
  'shell_snapshot',
1062
+ '--cd',
1063
+ workingDirectory,
855
1064
  '-s',
856
1065
  threadOptions.sandboxMode,
857
1066
  '--config',
858
- `model_reasoning_effort=${threadOptions.modelReasoningEffort}`
1067
+ `model_reasoning_effort=${threadOptions.modelReasoningEffort}`,
1068
+ '--config',
1069
+ `approval_policy="${threadOptions.approvalPolicy}"`
859
1070
  ];
860
1071
  appendCodexIsolationConfigArgs(args);
861
1072
 
@@ -863,6 +1074,18 @@ export function createCodexRuntime(options) {
863
1074
  args.push('-m', threadOptions.model);
864
1075
  }
865
1076
 
1077
+ for (const directory of threadOptions.additionalDirectories || []) {
1078
+ args.push('--add-dir', directory);
1079
+ }
1080
+
1081
+ if (threadOptions.networkAccessEnabled !== undefined) {
1082
+ args.push('--config', `sandbox_workspace_write.network_access=${Boolean(threadOptions.networkAccessEnabled)}`);
1083
+ }
1084
+
1085
+ if (threadOptions.webSearchMode) {
1086
+ args.push('--config', `web_search="${threadOptions.webSearchMode}"`);
1087
+ }
1088
+
866
1089
  if (schema) {
867
1090
  await fs.mkdir(tempDir, { recursive: true });
868
1091
  schemaPath = path.join(tempDir, `${crypto.randomUUID()}.schema.json`);
@@ -882,7 +1105,7 @@ export function createCodexRuntime(options) {
882
1105
 
883
1106
  try {
884
1107
  const childResult = await new Promise((resolve) => {
885
- const child = spawn('codex', args, {
1108
+ const child = spawn(resolveCodexPathOverride() || 'codex', args, {
886
1109
  cwd: workingDirectory,
887
1110
  env: buildCodexChildEnv(),
888
1111
  windowsHide: true,
@@ -972,6 +1195,10 @@ export function createCodexRuntime(options) {
972
1195
  const workingDirectory = await resolveWorkingDirectory(body.workingDir || body.workingDirectory || '');
973
1196
  const providerKind = await resolveProvider(body.providerKind || body.runtime);
974
1197
 
1198
+ if (providerKind === PROVIDER_KIND.fixtureReadOnly) {
1199
+ return runFixtureThread(body, workingDirectory, prompt, startedAtUtc);
1200
+ }
1201
+
975
1202
  if (providerKind === PROVIDER_KIND.typeScriptSdk) {
976
1203
  return runSdkThread(body, workingDirectory, prompt, startedAtUtc);
977
1204
  }
@@ -1014,11 +1241,8 @@ export function createCodexRuntime(options) {
1014
1241
  const workingDirectory = await resolveWorkingDirectory(body.workingDir || body.workingDirectory || '');
1015
1242
  const threadOptions = buildThreadOptions(body, workingDirectory);
1016
1243
  const sdk = await loadCodexSdk();
1017
- await ensureCodexRuntimeHome();
1018
- const codex = new sdk.Codex({
1019
- env: buildCodexChildEnv(),
1020
- config: buildCodexSdkConfigOverrides()
1021
- });
1244
+ await ensureCodexRuntimeHome(workingDirectory);
1245
+ const codex = createCodexSdkClient(sdk);
1022
1246
  const thread = codex.resumeThread(threadId, threadOptions);
1023
1247
  threads.set(threadId, {
1024
1248
  providerKind,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.339",
3
+ "version": "0.2.341",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
package/remote-hub.js CHANGED
@@ -1925,6 +1925,54 @@ export function createRemoteHub(options = {}) {
1925
1925
  : 0;
1926
1926
  }
1927
1927
 
1928
+ function readFrameDroppedByAgent(message) {
1929
+ const value = Number(message.droppedByAgent ?? message.agentDrops ?? message.drops);
1930
+ return Number.isFinite(value) && value >= 0
1931
+ ? Math.round(value)
1932
+ : 0;
1933
+ }
1934
+
1935
+ function readFrameDirtyRectCount(message) {
1936
+ if (Array.isArray(message.dirtyRects)) {
1937
+ return message.dirtyRects.length;
1938
+ }
1939
+
1940
+ const value = Number(message.dirtyRectCount ?? message.dirtyRegionCount ?? message.changedRegionCount);
1941
+ return Number.isFinite(value) && value >= 0
1942
+ ? Math.round(value)
1943
+ : 0;
1944
+ }
1945
+
1946
+ function readFrameDirtyPixelRatio(message) {
1947
+ const value = Number(message.dirtyPixelRatio ?? message.dirtyRatio ?? message.dirtyAreaRatio ?? message.changedPixelRatio);
1948
+ if (!Number.isFinite(value) || value < 0) {
1949
+ return 0;
1950
+ }
1951
+
1952
+ if (value <= 1) {
1953
+ return value;
1954
+ }
1955
+
1956
+ if (value <= 100) {
1957
+ return value / 100;
1958
+ }
1959
+
1960
+ return 1;
1961
+ }
1962
+
1963
+ function readFrameDeltaEncoded(message) {
1964
+ const value = message.deltaEncoded ?? message.isDeltaEncoded ?? message.deltaFrame;
1965
+ if (typeof value === 'boolean') {
1966
+ return value;
1967
+ }
1968
+
1969
+ if (typeof value === 'number') {
1970
+ return value > 0;
1971
+ }
1972
+
1973
+ return /^(1|true|yes|on|delta)$/i.test(String(value || '').trim());
1974
+ }
1975
+
1928
1976
  function computeSameContentStreak(previousFrame, contentHash) {
1929
1977
  if (!contentHash || !previousFrame?.contentHash || previousFrame.contentHash !== contentHash) {
1930
1978
  return 0;
@@ -1956,6 +2004,11 @@ export function createRemoteHub(options = {}) {
1956
2004
  const payload = buildFramePayloadBuffer(framePayload, frameData);
1957
2005
  const contentHash = buildFrameContentHash(message, payload);
1958
2006
  const sameContentStreak = computeSameContentStreak(device.latestThumbnail, contentHash);
2007
+ const droppedByAgent = readFrameDroppedByAgent(message);
2008
+ const dirtyRectCount = readFrameDirtyRectCount(message);
2009
+ const dirtyPixelRatio = readFrameDirtyPixelRatio(message);
2010
+ const codec = safeString(message.codec || message.encoder || message.encoding, 80);
2011
+ const deltaEncoded = readFrameDeltaEncoded(message);
1959
2012
  device.latestThumbnail = {
1960
2013
  streamId: safeString(message.streamId, 128) || 'thumbnail',
1961
2014
  frameSeq,
@@ -1971,6 +2024,11 @@ export function createRemoteHub(options = {}) {
1971
2024
  contentHash,
1972
2025
  captureMs: readFrameCaptureMs(message),
1973
2026
  sameContentStreak,
2027
+ droppedByAgent,
2028
+ dirtyRectCount,
2029
+ dirtyPixelRatio,
2030
+ codec,
2031
+ deltaEncoded,
1974
2032
  payload,
1975
2033
  accessToken: createFrameAccessToken()
1976
2034
  };
@@ -1983,7 +2041,12 @@ export function createRemoteHub(options = {}) {
1983
2041
  height: device.latestThumbnail.height,
1984
2042
  transport,
1985
2043
  contentHash,
1986
- sameContentStreak
2044
+ sameContentStreak,
2045
+ droppedByAgent,
2046
+ dirtyRectCount,
2047
+ dirtyPixelRatio,
2048
+ codec,
2049
+ deltaEncoded
1987
2050
  });
1988
2051
  return true;
1989
2052
  }
@@ -2024,6 +2087,11 @@ export function createRemoteHub(options = {}) {
2024
2087
  const payload = buildFramePayloadBuffer(framePayload, frameData);
2025
2088
  const contentHash = buildFrameContentHash(message, payload);
2026
2089
  const sameContentStreak = computeSameContentStreak(device.latestLiveFrame, contentHash);
2090
+ const droppedByAgent = readFrameDroppedByAgent(message);
2091
+ const dirtyRectCount = readFrameDirtyRectCount(message);
2092
+ const dirtyPixelRatio = readFrameDirtyPixelRatio(message);
2093
+ const codec = safeString(message.codec || message.encoder || message.encoding, 80);
2094
+ const deltaEncoded = readFrameDeltaEncoded(message);
2027
2095
  device.latestLiveFrame = {
2028
2096
  streamId,
2029
2097
  frameSeq,
@@ -2041,6 +2109,11 @@ export function createRemoteHub(options = {}) {
2041
2109
  contentHash,
2042
2110
  captureMs: readFrameCaptureMs(message),
2043
2111
  sameContentStreak,
2112
+ droppedByAgent,
2113
+ dirtyRectCount,
2114
+ dirtyPixelRatio,
2115
+ codec,
2116
+ deltaEncoded,
2044
2117
  payload,
2045
2118
  accessToken: createFrameAccessToken()
2046
2119
  };
@@ -2065,7 +2138,12 @@ export function createRemoteHub(options = {}) {
2065
2138
  mode: device.latestLiveFrame.mode,
2066
2139
  transport,
2067
2140
  contentHash,
2068
- sameContentStreak
2141
+ sameContentStreak,
2142
+ droppedByAgent,
2143
+ dirtyRectCount,
2144
+ dirtyPixelRatio,
2145
+ codec,
2146
+ deltaEncoded
2069
2147
  });
2070
2148
  return true;
2071
2149
  }
@@ -16,6 +16,8 @@ const LOCAL_BRIDGE_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url
16
16
  const REQUESTED_FPS = Number(process.env.MINDEXEC_REMOTE_LIVE_RATE_REQUEST_FPS || 12);
17
17
  const SAMPLE_MS = Number(process.env.MINDEXEC_REMOTE_LIVE_RATE_SAMPLE_MS || 3500);
18
18
  const MIN_EFFECTIVE_FPS = Number(process.env.MINDEXEC_REMOTE_LIVE_RATE_MIN_FPS || 10);
19
+ const MAX_DROP_RATIO = Number(process.env.MINDEXEC_REMOTE_LIVE_RATE_MAX_DROP_RATIO || 0.2);
20
+ const MAX_SEQ_GAP = Number(process.env.MINDEXEC_REMOTE_LIVE_RATE_MAX_SEQ_GAP || 4);
19
21
 
20
22
  function wait(ms) {
21
23
  return new Promise(resolve => setTimeout(resolve, ms));
@@ -216,14 +218,26 @@ function summarizeFrames(frames) {
216
218
  const fps = frames.length > 1 ? ((frames.length - 1) * 1000) / durationMs : 0;
217
219
  const seqs = frames.map(frame => Number(frame.metadata.frameSeq || 0)).filter(Number.isFinite);
218
220
  const uniqueSeqs = new Set(seqs);
221
+ const firstSeq = seqs[0] || 0;
222
+ const lastSeq = seqs[seqs.length - 1] || 0;
223
+ const expectedSeqs = lastSeq >= firstSeq ? lastSeq - firstSeq + 1 : uniqueSeqs.size;
224
+ const droppedSeqs = Math.max(0, expectedSeqs - uniqueSeqs.size);
225
+ let maxSeqGap = 0;
226
+ for (let index = 1; index < seqs.length; index += 1) {
227
+ maxSeqGap = Math.max(maxSeqGap, Math.max(0, seqs[index] - seqs[index - 1] - 1));
228
+ }
219
229
  const byteLengths = frames.map(frame => Number(frame.payload?.length || 0)).filter(value => value > 0);
220
230
  return {
221
231
  frames: frames.length,
222
232
  uniqueSeqs: uniqueSeqs.size,
233
+ expectedSeqs,
234
+ droppedSeqs,
235
+ dropRatio: expectedSeqs > 0 ? droppedSeqs / expectedSeqs : 0,
236
+ maxSeqGap,
223
237
  durationMs,
224
238
  fps,
225
- firstSeq: seqs[0] || 0,
226
- lastSeq: seqs[seqs.length - 1] || 0,
239
+ firstSeq,
240
+ lastSeq,
227
241
  minBytes: byteLengths.length > 0 ? Math.min(...byteLengths) : 0,
228
242
  maxBytes: byteLengths.length > 0 ? Math.max(...byteLengths) : 0,
229
243
  metadataFps: Number(last?.metadata?.fps || 0) || 0,
@@ -320,8 +334,10 @@ async function main() {
320
334
  assert.equal(summary.metadataFps, REQUESTED_FPS, JSON.stringify(summary));
321
335
  assert.equal(summary.mode, 'remote-fast', JSON.stringify(summary));
322
336
  assert.ok(summary.fps >= MIN_EFFECTIVE_FPS, `RemoteFast live-rate too low: ${JSON.stringify(summary)}`);
337
+ assert.ok(summary.dropRatio <= MAX_DROP_RATIO, `RemoteFast live-rate dropped too many frame sequences: ${JSON.stringify(summary)}`);
338
+ assert.ok(summary.maxSeqGap <= MAX_SEQ_GAP, `RemoteFast live-rate sequence gap too large: ${JSON.stringify(summary)}`);
323
339
 
324
- console.log(`RemoteFast live-rate smoke OK (${summary.frames} frames, ${summary.fps.toFixed(1)} fps, bytes ${summary.minBytes}-${summary.maxBytes})`);
340
+ console.log(`RemoteFast live-rate smoke OK (${summary.frames} frames, ${summary.fps.toFixed(1)} fps, drop ${(summary.dropRatio * 100).toFixed(1)}%, max gap ${summary.maxSeqGap}, bytes ${summary.minBytes}-${summary.maxBytes})`);
325
341
  } finally {
326
342
  if (ws && ws.readyState === WebSocket.OPEN) {
327
343
  ws.close();