@mindexec/cli 0.2.340 → 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.
- package/codex-runtime.js +255 -31
- package/package.json +1 -1
- package/remote-hub.js +80 -2
- package/scripts/remote-fast-live-rate-smoke.mjs +19 -3
- package/scripts/remote-fast-mdm-browser-smoke.mjs +28 -2
- package/scripts/remote-hub-smoke.mjs +32 -2
- package/server.js +1304 -21
- package/wwwroot/_headers +50 -17
- package/wwwroot/assets/AdminDashboardPage-B2vz2Px9.css +1 -0
- package/wwwroot/assets/AdminDashboardPage-DpUfWSRs.js +1 -0
- package/wwwroot/assets/AppSidebar-CBqvLonm.js +1 -0
- package/wwwroot/assets/AuthPages-Cd5fYgU0.js +1 -0
- package/wwwroot/assets/AuthPages-DFGWKWuB.css +1 -0
- package/wwwroot/assets/CodePage-Bncc352E.css +1 -0
- package/wwwroot/assets/CodePage-D9-cUf4A.js +87 -0
- package/wwwroot/assets/CompanyCorePage-ChBnq1ve.css +1 -0
- package/wwwroot/assets/CompanyCorePage-D0byTW77.js +13 -0
- package/wwwroot/assets/ExecutionModePage-DtMDlqYc.js +18 -0
- package/wwwroot/assets/ExecutionModePage-TLuld9l3.css +1 -0
- package/wwwroot/assets/LaunchLeadCapture-CiRI1shz.css +1 -0
- package/wwwroot/assets/LaunchLeadCapture-CqeoHfvb.js +1 -0
- package/wwwroot/assets/MarketingHome-DPzaYzA_.css +1 -0
- package/wwwroot/assets/MarketingHome-DbWyEAya.js +1 -0
- package/wwwroot/assets/MindCanvas-CME1KpAo.js +48 -0
- package/wwwroot/assets/MindCanvas-DiQlUDJu.css +1 -0
- package/wwwroot/assets/PlanMasterPage-CJ36rep-.css +1 -0
- package/wwwroot/assets/PlanMasterPage-mhlZZK19.js +4 -0
- package/wwwroot/assets/PricingPage-Cg_0i_ZR.css +1 -0
- package/wwwroot/assets/PricingPage-zVu8-CrF.js +1 -0
- package/wwwroot/assets/ToolPages-DIB187pZ.css +1 -0
- package/wwwroot/assets/ToolPages-DTSqKzQd.js +28 -0
- package/wwwroot/assets/YouTubeSearchPage-IPPa_BIH.css +1 -0
- package/wwwroot/assets/YouTubeSearchPage-xGiaLNqk.js +4 -0
- package/wwwroot/assets/app-runtime-xD2Z3NdN.js +1 -0
- package/wwwroot/assets/canvas-runtime-D1gfvqKp.js +44 -0
- package/wwwroot/assets/code-agent-runtime-B5PPZd1t.js +74 -0
- package/wwwroot/assets/executionModeSettings-NJqurj-o.js +1 -0
- package/wwwroot/assets/index-CP_xejf2.css +1 -0
- package/wwwroot/assets/index-CZS-9WFu.js +2 -0
- package/wwwroot/assets/marketingTools-DN_rnHeB.js +4 -0
- package/wwwroot/assets/mindCanvasSearchWorker-BzPMsHOB.js +1 -0
- package/wwwroot/assets/mindexecution-mindcanvas.png +0 -0
- package/wwwroot/assets/mindexecution-prod-home-current.png +0 -0
- package/wwwroot/assets/mindexecution-prod-pricing-current.png +0 -0
- package/wwwroot/assets/pricingCheckoutShell-O-DnwmbU.js +1 -0
- package/wwwroot/assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js +1 -0
- package/wwwroot/assets/storage-CGDupGH4.js +1 -0
- package/wwwroot/assets/supabaseAuthAdapter-C3z334Qw.js +44 -0
- package/wwwroot/assets/toolHandoff-D5e5f7t5.js +4 -0
- package/wwwroot/assets/vendor-icons-oiW_NVNO.js +681 -0
- package/wwwroot/assets/vendor-msgpack-BE8aAsr3.js +1 -0
- package/wwwroot/assets/vendor-react-BXzpOyCS.js +40 -0
- package/wwwroot/favicon.svg +7 -0
- package/wwwroot/index.html +22 -736
- package/wwwroot/manifest.webmanifest +18 -21
- package/wwwroot/robots.txt +1 -1
- package/wwwroot/service-worker.js +5 -31
- package/wwwroot/sitemap.xml +21 -9
- package/wwwroot/MindExecution.Web.styles.css +0 -3
- package/wwwroot/_content/MindExecution.Plugins.Admin/css/admin-dashboard.css +0 -546
- package/wwwroot/_content/MindExecution.Plugins.Directory/MindExecution.Plugins.Directory.u7utcng611.bundle.scp.css +0 -7
- package/wwwroot/_content/MindExecution.Plugins.Directory/background.png +0 -0
- package/wwwroot/_content/MindExecution.Plugins.Directory/directory-manager.js +0 -202
- package/wwwroot/_content/MindExecution.Plugins.Directory/exampleJsInterop.js +0 -6
- package/wwwroot/_content/MindExecution.Plugins.YouTube/css/youtube-search.css +0 -251
- package/wwwroot/_content/MindExecution.Shared/MindExecution.Shared.wsano1j4wp.bundle.scp.css +0 -4
- package/wwwroot/_content/MindExecution.Shared/css/admin-dashboard.css +0 -559
- package/wwwroot/_content/MindExecution.Shared/css/app.css +0 -1
- package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +0 -3705
- package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Bold.ttf +0 -0
- package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Regular.ttf +0 -0
- package/wwwroot/_content/MindExecution.Shared/js/agent-visualization.js +0 -359
- package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +0 -1631
- package/wwwroot/_content/MindExecution.Shared/js/code-master.js +0 -8316
- package/wwwroot/_content/MindExecution.Shared/js/file-system-helper.js +0 -639
- package/wwwroot/_content/MindExecution.Shared/js/helpers/InfiniteGridHelper.js +0 -109
- package/wwwroot/_content/MindExecution.Shared/js/marked.min.js +0 -69
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +0 -12909
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js.backup +0 -1059
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +0 -24635
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dev-guards.js +0 -325
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js +0 -1491
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js.bak +0 -434
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-glow-shader.js +0 -260
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +0 -7829
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js +0 -160
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +0 -10400
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-logic-workers.js +0 -977
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-menu-manager.js +0 -1531
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-multi-select.js +0 -1716
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-node-search-worker.js +0 -554
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +0 -4578
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js +0 -489
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js.backup +0 -372
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +0 -2203
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-lod-system.js +0 -646
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js +0 -4735
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js +0 -2383
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js.backup +0 -1258
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-visibility-worker.js +0 -890
- package/wwwroot/_content/MindExecution.Shared/js/mindmap-toolbar.js +0 -639
- package/wwwroot/_content/MindExecution.Shared/js/native-drop-handler.js +0 -170
- package/wwwroot/_content/MindExecution.Shared/js/plan-master.js +0 -788
- package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +0 -90
- package/wwwroot/_content/MindExecution.Shared/js/texture-worker-manager.js +0 -188
- package/wwwroot/_content/MindExecution.Shared/js/texture-worker.js +0 -208
- package/wwwroot/_content/MindExecution.Shared/js/three.min.js +0 -6
- package/wwwroot/_content/MindExecution.Shared/js/titlebar-handler.js +0 -191
- package/wwwroot/_content/MindExecution.Shared/js/token-manager.js +0 -37
- package/wwwroot/_content/MindExecution.Shared/js/token-worker.js +0 -28
- package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js +0 -5626
- package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js.map +0 -7
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/css/all.min.css +0 -9
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-brands-400.ttf +0 -0
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-regular-400.ttf +0 -0
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-solid-900.ttf +0 -0
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
- package/wwwroot/_content/MindExecution.Shared/models/all-MiniLM-L6-v2-quantized.onnx +0 -0
- package/wwwroot/_content/MindExecution.Shared/models/vocab.txt +0 -30522
- package/wwwroot/_framework/Google.Protobuf.9h59ukbel7.dll +0 -0
- package/wwwroot/_framework/Markdig.d1j7v41cl1.dll +0 -0
- package/wwwroot/_framework/MessagePack.Annotations.l6qv48kgpt.dll +0 -0
- package/wwwroot/_framework/MessagePack.eqoptzx9d5.dll +0 -0
- package/wwwroot/_framework/Microsoft.AspNetCore.Authorization.k7dsih5y5g.dll +0 -0
- package/wwwroot/_framework/Microsoft.AspNetCore.Components.6nyje9sa0g.dll +0 -0
- package/wwwroot/_framework/Microsoft.AspNetCore.Components.Authorization.iycd6unprw.dll +0 -0
- package/wwwroot/_framework/Microsoft.AspNetCore.Components.Web.487u3twia4.dll +0 -0
- package/wwwroot/_framework/Microsoft.AspNetCore.Components.WebAssembly.d0gcnmlxxz.dll +0 -0
- package/wwwroot/_framework/Microsoft.AspNetCore.Metadata.h4yevl9adi.dll +0 -0
- package/wwwroot/_framework/Microsoft.CSharp.8bsm8vx6su.dll +0 -0
- package/wwwroot/_framework/Microsoft.Data.Sqlite.jdlxgv2jtg.dll +0 -0
- package/wwwroot/_framework/Microsoft.EntityFrameworkCore.4gjazp7kjf.dll +0 -0
- package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Abstractions.gocudnvz7b.dll +0 -0
- package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Relational.lt4rsvinuo.dll +0 -0
- package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Sqlite.69luj0fa9r.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Caching.Abstractions.364t4jh3zz.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Caching.Memory.izlxhpzosu.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Configuration.8zq7hh41o7.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Configuration.Abstractions.8if74zs6ea.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Configuration.Json.duvlngw8i0.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.t2hh9kvx0o.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.DependencyInjection.n4tg99oy8l.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.DependencyModel.h0d06ixk3e.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Logging.Abstractions.rl32bkx2sd.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Logging.dlht1xei0t.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Options.qeunebioml.dll +0 -0
- package/wwwroot/_framework/Microsoft.Extensions.Primitives.18cr6vnuuz.dll +0 -0
- package/wwwroot/_framework/Microsoft.IO.RecyclableMemoryStream.r915vovvw4.dll +0 -0
- package/wwwroot/_framework/Microsoft.IdentityModel.Abstractions.1ejljk3erv.dll +0 -0
- package/wwwroot/_framework/Microsoft.IdentityModel.JsonWebTokens.1596zr8gne.dll +0 -0
- package/wwwroot/_framework/Microsoft.IdentityModel.Logging.229uyvpgio.dll +0 -0
- package/wwwroot/_framework/Microsoft.IdentityModel.Tokens.9sibtajc9f.dll +0 -0
- package/wwwroot/_framework/Microsoft.JSInterop.WebAssembly.ryia5gxiad.dll +0 -0
- package/wwwroot/_framework/Microsoft.JSInterop.ew9vz9o332.dll +0 -0
- package/wwwroot/_framework/Microsoft.ML.OnnxRuntime.w9deo1m5ss.dll +0 -0
- package/wwwroot/_framework/Microsoft.ML.Tokenizers.cm2vuv2z61.dll +0 -0
- package/wwwroot/_framework/Microsoft.NET.StringTools.3qbrf4v2ki.dll +0 -0
- package/wwwroot/_framework/MimeMapping.og9ys58ylm.dll +0 -0
- package/wwwroot/_framework/MindExecution.Core.y7ffihhajj.dll +0 -0
- package/wwwroot/_framework/MindExecution.Kernel.l5y3qroa7p.dll +0 -0
- package/wwwroot/_framework/MindExecution.Plugins.Admin.uuf238xa0h.dll +0 -0
- package/wwwroot/_framework/MindExecution.Plugins.Business.nyr3v25v48.dll +0 -0
- package/wwwroot/_framework/MindExecution.Plugins.Concept.l9z9tx9svt.dll +0 -0
- package/wwwroot/_framework/MindExecution.Plugins.Directory.ju87t8h3zs.dll +0 -0
- package/wwwroot/_framework/MindExecution.Plugins.PlanMaster.krn3jgvjpa.dll +0 -0
- package/wwwroot/_framework/MindExecution.Plugins.YouTube.5m53srfud6.dll +0 -0
- package/wwwroot/_framework/MindExecution.Shared.ojp3psugsm.dll +0 -0
- package/wwwroot/_framework/MindExecution.Web.82k6ktlkfg.dll +0 -0
- package/wwwroot/_framework/Newtonsoft.Json.a56zs13vug.dll +0 -0
- package/wwwroot/_framework/SQLitePCLRaw.batteries_v2.rrd1nzawpp.dll +0 -0
- package/wwwroot/_framework/SQLitePCLRaw.core.1dxloztpfz.dll +0 -0
- package/wwwroot/_framework/SQLitePCLRaw.provider.e_sqlite3.oekyzl53i1.dll +0 -0
- package/wwwroot/_framework/Supabase.Core.s1pkj4aj0l.dll +0 -0
- package/wwwroot/_framework/Supabase.Functions.qz4nu782sg.dll +0 -0
- package/wwwroot/_framework/Supabase.Gotrue.twah27pkik.dll +0 -0
- package/wwwroot/_framework/Supabase.Postgrest.gmuuv369ih.dll +0 -0
- package/wwwroot/_framework/Supabase.Realtime.ox3kchdy3w.dll +0 -0
- package/wwwroot/_framework/Supabase.Storage.fnjnepaowr.dll +0 -0
- package/wwwroot/_framework/Supabase.azmaw5pgcz.dll +0 -0
- package/wwwroot/_framework/System.Collections.23yxgetbju.dll +0 -0
- package/wwwroot/_framework/System.Collections.Concurrent.vow3rm1dku.dll +0 -0
- package/wwwroot/_framework/System.Collections.Immutable.ap9596utv5.dll +0 -0
- package/wwwroot/_framework/System.Collections.NonGeneric.npjkaz40oc.dll +0 -0
- package/wwwroot/_framework/System.Collections.Specialized.ugkjbs6p02.dll +0 -0
- package/wwwroot/_framework/System.ComponentModel.Annotations.clwo0z2oyu.dll +0 -0
- package/wwwroot/_framework/System.ComponentModel.Primitives.end4v0xe2c.dll +0 -0
- package/wwwroot/_framework/System.ComponentModel.TypeConverter.tgtp5sm4iv.dll +0 -0
- package/wwwroot/_framework/System.ComponentModel.wupoltkk1t.dll +0 -0
- package/wwwroot/_framework/System.Console.9dik0wogo2.dll +0 -0
- package/wwwroot/_framework/System.Data.Common.4v8jejsiu0.dll +0 -0
- package/wwwroot/_framework/System.Diagnostics.DiagnosticSource.e2q75ondtq.dll +0 -0
- package/wwwroot/_framework/System.Diagnostics.Process.9736yjnxs8.dll +0 -0
- package/wwwroot/_framework/System.Diagnostics.TraceSource.h9al53gbbw.dll +0 -0
- package/wwwroot/_framework/System.Diagnostics.Tracing.h4bcp2fo98.dll +0 -0
- package/wwwroot/_framework/System.Drawing.64oovy8qts.dll +0 -0
- package/wwwroot/_framework/System.Drawing.Primitives.o6jiqpgbgl.dll +0 -0
- package/wwwroot/_framework/System.Formats.Asn1.rylx5ipd40.dll +0 -0
- package/wwwroot/_framework/System.IO.Compression.iceabaupns.dll +0 -0
- package/wwwroot/_framework/System.IO.Pipelines.uw8csd3mlz.dll +0 -0
- package/wwwroot/_framework/System.IdentityModel.Tokens.Jwt.t67es60z5b.dll +0 -0
- package/wwwroot/_framework/System.Linq.Expressions.ty95ava37f.dll +0 -0
- package/wwwroot/_framework/System.Linq.Queryable.hs2195jrwy.dll +0 -0
- package/wwwroot/_framework/System.Linq.hssodjwmlf.dll +0 -0
- package/wwwroot/_framework/System.Memory.1k78n7wdxb.dll +0 -0
- package/wwwroot/_framework/System.Net.Http.3br8rfql4c.dll +0 -0
- package/wwwroot/_framework/System.Net.Http.Json.860wbh17d8.dll +0 -0
- package/wwwroot/_framework/System.Net.NetworkInformation.e3wr00853o.dll +0 -0
- package/wwwroot/_framework/System.Net.Ping.r5cw4mf1a4.dll +0 -0
- package/wwwroot/_framework/System.Net.Primitives.ksxwiwlvhu.dll +0 -0
- package/wwwroot/_framework/System.Net.WebSockets.6rt3n3gl2q.dll +0 -0
- package/wwwroot/_framework/System.Net.WebSockets.Client.z3usrzo7rz.dll +0 -0
- package/wwwroot/_framework/System.Numerics.Tensors.0c7z4mt3on.dll +0 -0
- package/wwwroot/_framework/System.Numerics.Vectors.lbdzx8reja.dll +0 -0
- package/wwwroot/_framework/System.ObjectModel.yct1gdirzf.dll +0 -0
- package/wwwroot/_framework/System.Private.CoreLib.c1dbswx1b2.dll +0 -0
- package/wwwroot/_framework/System.Private.Uri.zp9kmg0z93.dll +0 -0
- package/wwwroot/_framework/System.Private.Xml.Linq.lgv2n0akl4.dll +0 -0
- package/wwwroot/_framework/System.Private.Xml.dpsk8g304y.dll +0 -0
- package/wwwroot/_framework/System.Reactive.t3fuon548l.dll +0 -0
- package/wwwroot/_framework/System.Reflection.Emit.ILGeneration.1tcuz2cmbk.dll +0 -0
- package/wwwroot/_framework/System.Reflection.Emit.Lightweight.ddt2wylovg.dll +0 -0
- package/wwwroot/_framework/System.Reflection.Emit.d8vkadiwhg.dll +0 -0
- package/wwwroot/_framework/System.Reflection.Primitives.cpsl71xd1z.dll +0 -0
- package/wwwroot/_framework/System.Runtime.InteropServices.31vjgsfk1o.dll +0 -0
- package/wwwroot/_framework/System.Runtime.InteropServices.JavaScript.pn2wvizzet.dll +0 -0
- package/wwwroot/_framework/System.Runtime.InteropServices.RuntimeInformation.l5rk496q70.dll +0 -0
- package/wwwroot/_framework/System.Runtime.Intrinsics.0zee9qcqfy.dll +0 -0
- package/wwwroot/_framework/System.Runtime.Loader.xw2jr9wl92.dll +0 -0
- package/wwwroot/_framework/System.Runtime.Numerics.ezj1dfyvbj.dll +0 -0
- package/wwwroot/_framework/System.Runtime.Serialization.Formatters.0y019e9zkr.dll +0 -0
- package/wwwroot/_framework/System.Runtime.Serialization.Primitives.bia5wb62c8.dll +0 -0
- package/wwwroot/_framework/System.Runtime.h9cduidfkh.dll +0 -0
- package/wwwroot/_framework/System.Security.Claims.2r18wim2rl.dll +0 -0
- package/wwwroot/_framework/System.Security.Cryptography.qqgybpoucx.dll +0 -0
- package/wwwroot/_framework/System.Text.Encoding.Extensions.9t3hs6kyll.dll +0 -0
- package/wwwroot/_framework/System.Text.Encodings.Web.wftjfh2crk.dll +0 -0
- package/wwwroot/_framework/System.Text.Json.0v0qgmri0w.dll +0 -0
- package/wwwroot/_framework/System.Text.RegularExpressions.cvkox11l6l.dll +0 -0
- package/wwwroot/_framework/System.Threading.Channels.419493szqu.dll +0 -0
- package/wwwroot/_framework/System.Threading.Thread.xhmys87xh5.dll +0 -0
- package/wwwroot/_framework/System.Threading.b66vzsz9g1.dll +0 -0
- package/wwwroot/_framework/System.Transactions.Local.7zfffdvnwf.dll +0 -0
- package/wwwroot/_framework/System.Web.HttpUtility.9up6xfbtuq.dll +0 -0
- package/wwwroot/_framework/System.Xml.Linq.n5rzv9nbf7.dll +0 -0
- package/wwwroot/_framework/System.Xml.ReaderWriter.ag8pilllob.dll +0 -0
- package/wwwroot/_framework/System.Xml.XDocument.sn51jas17n.dll +0 -0
- package/wwwroot/_framework/System.brmz7yk5qh.dll +0 -0
- package/wwwroot/_framework/Websocket.Client.vapounvmnl.dll +0 -0
- package/wwwroot/_framework/blazor.boot.json +0 -305
- package/wwwroot/_framework/blazor.webassembly.js +0 -1
- package/wwwroot/_framework/dotnet.js +0 -4
- package/wwwroot/_framework/dotnet.native.boem75ye5i.wasm +0 -0
- package/wwwroot/_framework/dotnet.native.qc8g39g30v.js +0 -16
- package/wwwroot/_framework/dotnet.runtime.opaiwunc3t.js +0 -4
- package/wwwroot/_framework/icudt_CJK.tjcz0u77k5.dat +0 -0
- package/wwwroot/_framework/icudt_EFIGS.tptq2av103.dat +0 -0
- package/wwwroot/_framework/icudt_no_CJK.lfu7j35m59.dat +0 -0
- package/wwwroot/_framework/netstandard.yvr3prsx0x.dll +0 -0
- package/wwwroot/appsettings.json +0 -83
- package/wwwroot/icon-192.png +0 -0
- package/wwwroot/icon-512.png +0 -0
- package/wwwroot/js/marketing-tool.js +0 -180
- 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.
|
|
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
|
-
|
|
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
|
-
|
|
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 '
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
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
|
|
226
|
-
lastSeq
|
|
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();
|