@mindexec/cli 0.2.383 → 0.2.385
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 +31 -255
- package/package.json +1 -1
- package/remote-hub.js +2 -80
- package/scripts/remote-fast-live-rate-smoke.mjs +3 -19
- package/scripts/remote-fast-mdm-browser-smoke.mjs +2 -28
- package/scripts/remote-hub-smoke.mjs +2 -32
- package/scripts/setup-tree-sitter-grammars.mjs +5 -26
- package/server.js +33 -1811
- package/wwwroot/MindExecution.Web.styles.css +3 -0
- package/wwwroot/_content/MindExecution.Plugins.Admin/css/admin-dashboard.css +546 -0
- package/wwwroot/_content/MindExecution.Plugins.Directory/MindExecution.Plugins.Directory.u7utcng611.bundle.scp.css +7 -0
- package/wwwroot/_content/MindExecution.Plugins.Directory/background.png +0 -0
- package/wwwroot/_content/MindExecution.Plugins.Directory/directory-manager.js +202 -0
- package/wwwroot/_content/MindExecution.Plugins.Directory/exampleJsInterop.js +6 -0
- package/wwwroot/_content/MindExecution.Plugins.YouTube/css/youtube-search.css +251 -0
- package/wwwroot/_content/MindExecution.Shared/MindExecution.Shared.wsano1j4wp.bundle.scp.css +4 -0
- package/wwwroot/_content/MindExecution.Shared/css/admin-dashboard.css +559 -0
- package/wwwroot/_content/MindExecution.Shared/css/app.css +1 -0
- package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +3705 -0
- 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 +359 -0
- package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +1631 -0
- package/wwwroot/_content/MindExecution.Shared/js/code-master.js +8316 -0
- package/wwwroot/_content/MindExecution.Shared/js/file-system-helper.js +639 -0
- package/wwwroot/_content/MindExecution.Shared/js/helpers/InfiniteGridHelper.js +109 -0
- package/wwwroot/_content/MindExecution.Shared/js/marked.min.js +69 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +9987 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js.backup +1059 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +24635 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dev-guards.js +325 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js +1491 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js.bak +434 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-glow-shader.js +260 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +7821 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js +160 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +10441 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-logic-workers.js +977 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-menu-manager.js +1531 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-multi-select.js +1716 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-node-search-worker.js +554 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +4578 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js +489 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js.backup +372 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +2203 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-lod-system.js +646 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js +4735 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js +2383 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js.backup +1258 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-visibility-worker.js +890 -0
- package/wwwroot/_content/MindExecution.Shared/js/mindmap-toolbar.js +639 -0
- package/wwwroot/_content/MindExecution.Shared/js/native-drop-handler.js +170 -0
- package/wwwroot/_content/MindExecution.Shared/js/plan-master.js +788 -0
- package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +50 -0
- package/wwwroot/_content/MindExecution.Shared/js/texture-worker-manager.js +188 -0
- package/wwwroot/_content/MindExecution.Shared/js/texture-worker.js +208 -0
- package/wwwroot/_content/MindExecution.Shared/js/three.min.js +6 -0
- package/wwwroot/_content/MindExecution.Shared/js/titlebar-handler.js +191 -0
- package/wwwroot/_content/MindExecution.Shared/js/token-manager.js +37 -0
- package/wwwroot/_content/MindExecution.Shared/js/token-worker.js +28 -0
- package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js +5626 -0
- package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js.map +7 -0
- package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/css/all.min.css +9 -0
- 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 +30522 -0
- 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 +305 -0
- package/wwwroot/_framework/blazor.webassembly.js +1 -0
- package/wwwroot/_framework/dotnet.js +4 -0
- package/wwwroot/_framework/dotnet.native.boem75ye5i.wasm +0 -0
- package/wwwroot/_framework/dotnet.native.qc8g39g30v.js +16 -0
- package/wwwroot/_framework/dotnet.runtime.opaiwunc3t.js +4 -0
- 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/_headers +17 -50
- package/wwwroot/appsettings.json +82 -82
- package/wwwroot/icon-192.png +0 -0
- package/wwwroot/icon-512.png +0 -0
- package/wwwroot/index.html +736 -22
- package/wwwroot/js/marketing-tool.js +180 -0
- package/wwwroot/manifest.webmanifest +21 -18
- package/wwwroot/robots.txt +1 -1
- package/wwwroot/service-worker-assets.js +857 -0
- package/wwwroot/service-worker.js +31 -5
- package/wwwroot/sitemap.xml +8 -20
- package/wwwroot/assets/AdminDashboardPage-3VUPNjhD.js +0 -1
- package/wwwroot/assets/AdminDashboardPage-B2vz2Px9.css +0 -1
- package/wwwroot/assets/AppSidebar-CiYpGRU4.js +0 -2
- package/wwwroot/assets/AuthPages-BmpDAK3N.js +0 -1
- package/wwwroot/assets/AuthPages-BrH6kRcv.css +0 -1
- package/wwwroot/assets/CodePage-Bncc352E.css +0 -1
- package/wwwroot/assets/CodePage-BrqCtiA1.js +0 -87
- package/wwwroot/assets/CompanyCorePage-ChBnq1ve.css +0 -1
- package/wwwroot/assets/CompanyCorePage-DZYu-7IF.js +0 -13
- package/wwwroot/assets/ExecutionModePage-AtB7HGoD.js +0 -18
- package/wwwroot/assets/ExecutionModePage-TLuld9l3.css +0 -1
- package/wwwroot/assets/LaunchLeadCapture-Bx9LM0IX.js +0 -1
- package/wwwroot/assets/LaunchLeadCapture-CiRI1shz.css +0 -1
- package/wwwroot/assets/MarketingHome-BsyerRpe.js +0 -1
- package/wwwroot/assets/MarketingHome-DPzaYzA_.css +0 -1
- package/wwwroot/assets/MindCanvas-BW9vO7KM.js +0 -49
- package/wwwroot/assets/MindCanvas-DtqOZnoW.css +0 -1
- package/wwwroot/assets/PlanMasterPage-CJ36rep-.css +0 -1
- package/wwwroot/assets/PlanMasterPage-DItAWGne.js +0 -4
- package/wwwroot/assets/PricingPage-CH6jDgJC.js +0 -1
- package/wwwroot/assets/PricingPage-Cg_0i_ZR.css +0 -1
- package/wwwroot/assets/ToolPages-CmY0jdlo.js +0 -28
- package/wwwroot/assets/ToolPages-DIB187pZ.css +0 -1
- package/wwwroot/assets/YouTubeSearchPage-CntpQkdZ.js +0 -4
- package/wwwroot/assets/YouTubeSearchPage-IPPa_BIH.css +0 -1
- package/wwwroot/assets/app-runtime-xD2Z3NdN.js +0 -1
- package/wwwroot/assets/canvas-runtime-Bc1G-FZ_.js +0 -44
- package/wwwroot/assets/code-agent-runtime-B5PPZd1t.js +0 -74
- package/wwwroot/assets/executionModeSettings-NJqurj-o.js +0 -1
- package/wwwroot/assets/index-qITXeJUr.js +0 -2
- package/wwwroot/assets/index-yNpEK-gp.css +0 -1
- package/wwwroot/assets/marketingTools-DN_rnHeB.js +0 -4
- package/wwwroot/assets/mindCanvasSearchWorker-BzPMsHOB.js +0 -1
- 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 +0 -1
- package/wwwroot/assets/productionAdapterConfig-C5jfk6oG.js +0 -1
- package/wwwroot/assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js +0 -1
- package/wwwroot/assets/storage-CbuZ97zN.js +0 -1
- package/wwwroot/assets/supabaseAuthAdapter-4HB3Xzco.js +0 -44
- package/wwwroot/assets/toolHandoff-D5e5f7t5.js +0 -4
- package/wwwroot/assets/vendor-icons-DE3gIReG.js +0 -681
- package/wwwroot/assets/vendor-msgpack-BE8aAsr3.js +0 -1
- package/wwwroot/assets/vendor-react-BXzpOyCS.js +0 -40
- package/wwwroot/favicon.svg +0 -7
package/codex-runtime.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { promises as fs, readFileSync } from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import os from 'os';
|
|
4
|
-
import { exec,
|
|
4
|
+
import { exec, 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);
|
|
10
9
|
|
|
11
10
|
const PROVIDER_KIND = Object.freeze({
|
|
12
|
-
fixtureReadOnly: 'FixtureReadOnly',
|
|
13
11
|
typeScriptSdk: 'TypeScriptSdk',
|
|
14
12
|
appServerJsonRpc: 'AppServerJsonRpc',
|
|
15
13
|
legacyExec: 'LegacyExec',
|
|
@@ -42,8 +40,6 @@ const TEMP_DIR = '.ai/codex';
|
|
|
42
40
|
const CODEX_CONFIG_PATH = path.join(os.homedir(), '.codex', 'config.toml');
|
|
43
41
|
const CODEX_SOURCE_HOME = path.join(os.homedir(), '.codex');
|
|
44
42
|
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';
|
|
47
43
|
const DEFAULT_CODEX_RUNTIME_HOME = path.join(os.homedir(), '.mindexec', 'codex-runtime');
|
|
48
44
|
const CODEX_RUNTIME_CONFIG_MARKER = '# Generated by MindExec LocalBridge for isolated AI node runs.';
|
|
49
45
|
const CODEX_RUNTIME_AUTH_FILES = ['auth.json'];
|
|
@@ -84,10 +80,6 @@ function normalizeProviderKind(value) {
|
|
|
84
80
|
return '';
|
|
85
81
|
}
|
|
86
82
|
|
|
87
|
-
if (normalized === 'fixture' || normalized === 'fixturereadonly' || normalized === 'fixture-readonly' || normalized === 'fixture_readonly' || normalized === 'test-fixture') {
|
|
88
|
-
return PROVIDER_KIND.fixtureReadOnly;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
83
|
if (normalized === 'typescriptsdk' || normalized === 'typescript-sdk' || normalized === 'type_script_sdk') {
|
|
92
84
|
return PROVIDER_KIND.typeScriptSdk;
|
|
93
85
|
}
|
|
@@ -107,10 +99,6 @@ function isEnabledEnv(value) {
|
|
|
107
99
|
return /^(1|true|yes|on)$/i.test(String(value || '').trim());
|
|
108
100
|
}
|
|
109
101
|
|
|
110
|
-
function isFixtureProviderEnabled() {
|
|
111
|
-
return isEnabledEnv(process.env.MINDEXEC_CODEX_FIXTURE_PROVIDER);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
102
|
function unquoteTomlKey(value) {
|
|
115
103
|
const text = String(value || '').trim();
|
|
116
104
|
if (text.length >= 2 && ((text.startsWith('"') && text.endsWith('"')) || (text.startsWith("'") && text.endsWith("'")))) {
|
|
@@ -121,7 +109,7 @@ function unquoteTomlKey(value) {
|
|
|
121
109
|
}
|
|
122
110
|
|
|
123
111
|
function readConfiguredMcpServerNames() {
|
|
124
|
-
if (
|
|
112
|
+
if (isEnabledEnv(process.env.MINDEXEC_CODEX_INHERIT_MCP)) {
|
|
125
113
|
return [];
|
|
126
114
|
}
|
|
127
115
|
|
|
@@ -171,23 +159,10 @@ function buildCodexSdkConfigOverrides() {
|
|
|
171
159
|
}
|
|
172
160
|
|
|
173
161
|
function resolveCodexRuntimeHome() {
|
|
174
|
-
if (isEnabledEnv(process.env[CODEX_USE_SOURCE_HOME_ENV])) {
|
|
175
|
-
return CODEX_SOURCE_HOME;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
162
|
const configured = String(process.env[CODEX_RUNTIME_HOME_ENV] || '').trim();
|
|
179
163
|
return path.resolve(configured || DEFAULT_CODEX_RUNTIME_HOME);
|
|
180
164
|
}
|
|
181
165
|
|
|
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
|
-
|
|
191
166
|
async function copyCodexRuntimeFileIfPresent(fileName, runtimeHome) {
|
|
192
167
|
const source = path.join(CODEX_SOURCE_HOME, fileName);
|
|
193
168
|
const target = path.join(runtimeHome, fileName);
|
|
@@ -204,33 +179,8 @@ async function copyCodexRuntimeFileIfPresent(fileName, runtimeHome) {
|
|
|
204
179
|
}
|
|
205
180
|
}
|
|
206
181
|
|
|
207
|
-
function
|
|
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 = '') {
|
|
182
|
+
async function ensureCodexRuntimeHome() {
|
|
229
183
|
const runtimeHome = resolveCodexRuntimeHome();
|
|
230
|
-
if (isUsingSourceCodexHome()) {
|
|
231
|
-
return runtimeHome;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
184
|
await fs.mkdir(runtimeHome, { recursive: true });
|
|
235
185
|
await fs.mkdir(path.join(runtimeHome, 'sessions'), { recursive: true });
|
|
236
186
|
await fs.mkdir(path.join(runtimeHome, 'generated_images'), { recursive: true });
|
|
@@ -249,7 +199,11 @@ async function ensureCodexRuntimeHome(trustedDirectory = '') {
|
|
|
249
199
|
}
|
|
250
200
|
|
|
251
201
|
if (shouldWriteConfig) {
|
|
252
|
-
await fs.writeFile(
|
|
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
|
+
);
|
|
253
207
|
}
|
|
254
208
|
|
|
255
209
|
return runtimeHome;
|
|
@@ -264,22 +218,10 @@ function buildCodexChildEnv() {
|
|
|
264
218
|
}
|
|
265
219
|
|
|
266
220
|
env.CODEX_HOME = resolveCodexRuntimeHome();
|
|
267
|
-
|
|
268
|
-
delete env.MINDEXEC_CODEX_ISOLATED_HOME;
|
|
269
|
-
} else {
|
|
270
|
-
env.MINDEXEC_CODEX_ISOLATED_HOME = '1';
|
|
271
|
-
}
|
|
221
|
+
env.MINDEXEC_CODEX_ISOLATED_HOME = '1';
|
|
272
222
|
return env;
|
|
273
223
|
}
|
|
274
224
|
|
|
275
|
-
function createCodexSdkClient(sdk) {
|
|
276
|
-
return new sdk.Codex({
|
|
277
|
-
codexPathOverride: resolveCodexPathOverride(),
|
|
278
|
-
env: buildCodexChildEnv(),
|
|
279
|
-
config: buildCodexSdkConfigOverrides()
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
|
|
283
225
|
function appendCodexIsolationConfigArgs(args) {
|
|
284
226
|
for (const name of readConfiguredMcpServerNames()) {
|
|
285
227
|
args.push('--config', `mcp_servers.${name}.enabled=false`);
|
|
@@ -326,51 +268,12 @@ function normalizeApprovalPolicy(value, sandboxMode) {
|
|
|
326
268
|
}
|
|
327
269
|
|
|
328
270
|
if (normalized === 'never' && sandboxMode !== 'danger-full-access') {
|
|
329
|
-
return '
|
|
271
|
+
return 'on-request';
|
|
330
272
|
}
|
|
331
273
|
|
|
332
274
|
return 'on-request';
|
|
333
275
|
}
|
|
334
276
|
|
|
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
|
-
|
|
374
277
|
function normalizeOutputSchema(value) {
|
|
375
278
|
if (value == null) {
|
|
376
279
|
return undefined;
|
|
@@ -558,7 +461,6 @@ function buildThreadOptions(body, workingDirectory) {
|
|
|
558
461
|
const prompt = String(body?.instruction || body?.prompt || '').trim();
|
|
559
462
|
const sandboxMode = normalizeSandbox(body?.sandbox || body?.sandboxMode, body?.intent || body?.nodeKind, prompt);
|
|
560
463
|
const approvalPolicy = normalizeApprovalPolicy(body?.approvalPolicy, sandboxMode);
|
|
561
|
-
const additionalDirectories = normalizeAdditionalDirectories(body?.additionalDirectories, workingDirectory, sandboxMode);
|
|
562
464
|
const options = {
|
|
563
465
|
workingDirectory,
|
|
564
466
|
skipGitRepoCheck: true,
|
|
@@ -567,10 +469,6 @@ function buildThreadOptions(body, workingDirectory) {
|
|
|
567
469
|
approvalPolicy
|
|
568
470
|
};
|
|
569
471
|
|
|
570
|
-
if (additionalDirectories.length > 0) {
|
|
571
|
-
options.additionalDirectories = additionalDirectories;
|
|
572
|
-
}
|
|
573
|
-
|
|
574
472
|
const model = String(body?.model || '').trim();
|
|
575
473
|
if (model) {
|
|
576
474
|
options.model = model;
|
|
@@ -594,12 +492,7 @@ function serializeThreadOptionsForStatus(options) {
|
|
|
594
492
|
sandboxMode: API_SANDBOX_BY_SDK_VALUE[options?.sandboxMode] || options?.sandboxMode || null,
|
|
595
493
|
reasoningEffort: options?.modelReasoningEffort || null,
|
|
596
494
|
approvalPolicy: options?.approvalPolicy || 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
|
|
495
|
+
workingDirectory: options?.workingDirectory || null
|
|
603
496
|
};
|
|
604
497
|
}
|
|
605
498
|
|
|
@@ -620,7 +513,7 @@ async function checkLegacyAvailability() {
|
|
|
620
513
|
}
|
|
621
514
|
|
|
622
515
|
try {
|
|
623
|
-
const { stdout, stderr } = await
|
|
516
|
+
const { stdout, stderr } = await execAsync('codex --version', {
|
|
624
517
|
timeout: 6000,
|
|
625
518
|
windowsHide: true,
|
|
626
519
|
maxBuffer: 512 * 1024
|
|
@@ -666,22 +559,12 @@ export function createCodexRuntime(options) {
|
|
|
666
559
|
const activeTurns = new Map();
|
|
667
560
|
|
|
668
561
|
async function getCapabilities() {
|
|
669
|
-
const fixtureEnabled = isFixtureProviderEnabled();
|
|
670
562
|
const [sdk, legacy, modelCatalog] = await Promise.all([
|
|
671
563
|
checkSdkAvailability(packageRoot),
|
|
672
564
|
checkLegacyAvailability(),
|
|
673
565
|
getModelCatalog()
|
|
674
566
|
]);
|
|
675
|
-
const
|
|
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
|
|
567
|
+
const preferredProviderKind = sdk.available
|
|
685
568
|
? PROVIDER_KIND.typeScriptSdk
|
|
686
569
|
: legacy.available
|
|
687
570
|
? PROVIDER_KIND.legacyExec
|
|
@@ -691,7 +574,6 @@ export function createCodexRuntime(options) {
|
|
|
691
574
|
success: preferredProviderKind !== PROVIDER_KIND.unavailable,
|
|
692
575
|
preferredProviderKind,
|
|
693
576
|
providers: [
|
|
694
|
-
fixture,
|
|
695
577
|
sdk,
|
|
696
578
|
{
|
|
697
579
|
kind: PROVIDER_KIND.appServerJsonRpc,
|
|
@@ -720,13 +602,6 @@ export function createCodexRuntime(options) {
|
|
|
720
602
|
|
|
721
603
|
async function resolveProvider(requestedProviderKind) {
|
|
722
604
|
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
|
-
|
|
730
605
|
const sdk = await checkSdkAvailability(packageRoot);
|
|
731
606
|
const legacy = requested === PROVIDER_KIND.typeScriptSdk
|
|
732
607
|
? null
|
|
@@ -754,32 +629,13 @@ export function createCodexRuntime(options) {
|
|
|
754
629
|
const threadOptions = buildThreadOptions(body, workingDirectory);
|
|
755
630
|
const now = new Date().toISOString();
|
|
756
631
|
|
|
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
|
-
|
|
779
632
|
if (providerKind === PROVIDER_KIND.typeScriptSdk) {
|
|
780
633
|
const sdk = await loadCodexSdk();
|
|
781
|
-
await ensureCodexRuntimeHome(
|
|
782
|
-
const codex =
|
|
634
|
+
await ensureCodexRuntimeHome();
|
|
635
|
+
const codex = new sdk.Codex({
|
|
636
|
+
env: buildCodexChildEnv(),
|
|
637
|
+
config: buildCodexSdkConfigOverrides()
|
|
638
|
+
});
|
|
783
639
|
const thread = codex.startThread(threadOptions);
|
|
784
640
|
const localThreadId = `local_${crypto.randomUUID()}`;
|
|
785
641
|
threads.set(localThreadId, {
|
|
@@ -841,8 +697,11 @@ export function createCodexRuntime(options) {
|
|
|
841
697
|
}
|
|
842
698
|
|
|
843
699
|
const sdk = await loadCodexSdk();
|
|
844
|
-
await ensureCodexRuntimeHome(
|
|
845
|
-
const codex =
|
|
700
|
+
await ensureCodexRuntimeHome();
|
|
701
|
+
const codex = new sdk.Codex({
|
|
702
|
+
env: buildCodexChildEnv(),
|
|
703
|
+
config: buildCodexSdkConfigOverrides()
|
|
704
|
+
});
|
|
846
705
|
const officialId = requestedThreadId && !requestedThreadId.startsWith('local_')
|
|
847
706
|
? requestedThreadId
|
|
848
707
|
: '';
|
|
@@ -966,72 +825,6 @@ export function createCodexRuntime(options) {
|
|
|
966
825
|
return result;
|
|
967
826
|
}
|
|
968
827
|
|
|
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
|
-
|
|
1035
828
|
async function runLegacyExec(body, workingDirectory, prompt, startedAtUtc) {
|
|
1036
829
|
const threadOptions = buildThreadOptions(body, workingDirectory);
|
|
1037
830
|
const turnId = `turn_${crypto.randomUUID()}`;
|
|
@@ -1049,7 +842,7 @@ export function createCodexRuntime(options) {
|
|
|
1049
842
|
const tempDir = path.join(workingDirectory, TEMP_DIR);
|
|
1050
843
|
const schema = normalizeOutputSchema(body.outputSchema || body.outputSchemaJson);
|
|
1051
844
|
let schemaPath = null;
|
|
1052
|
-
await ensureCodexRuntimeHome(
|
|
845
|
+
await ensureCodexRuntimeHome();
|
|
1053
846
|
const args = [
|
|
1054
847
|
'exec',
|
|
1055
848
|
'-',
|
|
@@ -1059,14 +852,10 @@ export function createCodexRuntime(options) {
|
|
|
1059
852
|
'plugins',
|
|
1060
853
|
'--disable',
|
|
1061
854
|
'shell_snapshot',
|
|
1062
|
-
'--cd',
|
|
1063
|
-
workingDirectory,
|
|
1064
855
|
'-s',
|
|
1065
856
|
threadOptions.sandboxMode,
|
|
1066
857
|
'--config',
|
|
1067
|
-
`model_reasoning_effort=${threadOptions.modelReasoningEffort}
|
|
1068
|
-
'--config',
|
|
1069
|
-
`approval_policy="${threadOptions.approvalPolicy}"`
|
|
858
|
+
`model_reasoning_effort=${threadOptions.modelReasoningEffort}`
|
|
1070
859
|
];
|
|
1071
860
|
appendCodexIsolationConfigArgs(args);
|
|
1072
861
|
|
|
@@ -1074,18 +863,6 @@ export function createCodexRuntime(options) {
|
|
|
1074
863
|
args.push('-m', threadOptions.model);
|
|
1075
864
|
}
|
|
1076
865
|
|
|
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
|
-
|
|
1089
866
|
if (schema) {
|
|
1090
867
|
await fs.mkdir(tempDir, { recursive: true });
|
|
1091
868
|
schemaPath = path.join(tempDir, `${crypto.randomUUID()}.schema.json`);
|
|
@@ -1105,7 +882,7 @@ export function createCodexRuntime(options) {
|
|
|
1105
882
|
|
|
1106
883
|
try {
|
|
1107
884
|
const childResult = await new Promise((resolve) => {
|
|
1108
|
-
const child = spawn(
|
|
885
|
+
const child = spawn('codex', args, {
|
|
1109
886
|
cwd: workingDirectory,
|
|
1110
887
|
env: buildCodexChildEnv(),
|
|
1111
888
|
windowsHide: true,
|
|
@@ -1195,10 +972,6 @@ export function createCodexRuntime(options) {
|
|
|
1195
972
|
const workingDirectory = await resolveWorkingDirectory(body.workingDir || body.workingDirectory || '');
|
|
1196
973
|
const providerKind = await resolveProvider(body.providerKind || body.runtime);
|
|
1197
974
|
|
|
1198
|
-
if (providerKind === PROVIDER_KIND.fixtureReadOnly) {
|
|
1199
|
-
return runFixtureThread(body, workingDirectory, prompt, startedAtUtc);
|
|
1200
|
-
}
|
|
1201
|
-
|
|
1202
975
|
if (providerKind === PROVIDER_KIND.typeScriptSdk) {
|
|
1203
976
|
return runSdkThread(body, workingDirectory, prompt, startedAtUtc);
|
|
1204
977
|
}
|
|
@@ -1241,8 +1014,11 @@ export function createCodexRuntime(options) {
|
|
|
1241
1014
|
const workingDirectory = await resolveWorkingDirectory(body.workingDir || body.workingDirectory || '');
|
|
1242
1015
|
const threadOptions = buildThreadOptions(body, workingDirectory);
|
|
1243
1016
|
const sdk = await loadCodexSdk();
|
|
1244
|
-
await ensureCodexRuntimeHome(
|
|
1245
|
-
const codex =
|
|
1017
|
+
await ensureCodexRuntimeHome();
|
|
1018
|
+
const codex = new sdk.Codex({
|
|
1019
|
+
env: buildCodexChildEnv(),
|
|
1020
|
+
config: buildCodexSdkConfigOverrides()
|
|
1021
|
+
});
|
|
1246
1022
|
const thread = codex.resumeThread(threadId, threadOptions);
|
|
1247
1023
|
threads.set(threadId, {
|
|
1248
1024
|
providerKind,
|
package/package.json
CHANGED
package/remote-hub.js
CHANGED
|
@@ -1925,54 +1925,6 @@ 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
|
-
|
|
1976
1928
|
function computeSameContentStreak(previousFrame, contentHash) {
|
|
1977
1929
|
if (!contentHash || !previousFrame?.contentHash || previousFrame.contentHash !== contentHash) {
|
|
1978
1930
|
return 0;
|
|
@@ -2004,11 +1956,6 @@ export function createRemoteHub(options = {}) {
|
|
|
2004
1956
|
const payload = buildFramePayloadBuffer(framePayload, frameData);
|
|
2005
1957
|
const contentHash = buildFrameContentHash(message, payload);
|
|
2006
1958
|
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);
|
|
2012
1959
|
device.latestThumbnail = {
|
|
2013
1960
|
streamId: safeString(message.streamId, 128) || 'thumbnail',
|
|
2014
1961
|
frameSeq,
|
|
@@ -2024,11 +1971,6 @@ export function createRemoteHub(options = {}) {
|
|
|
2024
1971
|
contentHash,
|
|
2025
1972
|
captureMs: readFrameCaptureMs(message),
|
|
2026
1973
|
sameContentStreak,
|
|
2027
|
-
droppedByAgent,
|
|
2028
|
-
dirtyRectCount,
|
|
2029
|
-
dirtyPixelRatio,
|
|
2030
|
-
codec,
|
|
2031
|
-
deltaEncoded,
|
|
2032
1974
|
payload,
|
|
2033
1975
|
accessToken: createFrameAccessToken()
|
|
2034
1976
|
};
|
|
@@ -2041,12 +1983,7 @@ export function createRemoteHub(options = {}) {
|
|
|
2041
1983
|
height: device.latestThumbnail.height,
|
|
2042
1984
|
transport,
|
|
2043
1985
|
contentHash,
|
|
2044
|
-
sameContentStreak
|
|
2045
|
-
droppedByAgent,
|
|
2046
|
-
dirtyRectCount,
|
|
2047
|
-
dirtyPixelRatio,
|
|
2048
|
-
codec,
|
|
2049
|
-
deltaEncoded
|
|
1986
|
+
sameContentStreak
|
|
2050
1987
|
});
|
|
2051
1988
|
return true;
|
|
2052
1989
|
}
|
|
@@ -2087,11 +2024,6 @@ export function createRemoteHub(options = {}) {
|
|
|
2087
2024
|
const payload = buildFramePayloadBuffer(framePayload, frameData);
|
|
2088
2025
|
const contentHash = buildFrameContentHash(message, payload);
|
|
2089
2026
|
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);
|
|
2095
2027
|
device.latestLiveFrame = {
|
|
2096
2028
|
streamId,
|
|
2097
2029
|
frameSeq,
|
|
@@ -2109,11 +2041,6 @@ export function createRemoteHub(options = {}) {
|
|
|
2109
2041
|
contentHash,
|
|
2110
2042
|
captureMs: readFrameCaptureMs(message),
|
|
2111
2043
|
sameContentStreak,
|
|
2112
|
-
droppedByAgent,
|
|
2113
|
-
dirtyRectCount,
|
|
2114
|
-
dirtyPixelRatio,
|
|
2115
|
-
codec,
|
|
2116
|
-
deltaEncoded,
|
|
2117
2044
|
payload,
|
|
2118
2045
|
accessToken: createFrameAccessToken()
|
|
2119
2046
|
};
|
|
@@ -2138,12 +2065,7 @@ export function createRemoteHub(options = {}) {
|
|
|
2138
2065
|
mode: device.latestLiveFrame.mode,
|
|
2139
2066
|
transport,
|
|
2140
2067
|
contentHash,
|
|
2141
|
-
sameContentStreak
|
|
2142
|
-
droppedByAgent,
|
|
2143
|
-
dirtyRectCount,
|
|
2144
|
-
dirtyPixelRatio,
|
|
2145
|
-
codec,
|
|
2146
|
-
deltaEncoded
|
|
2068
|
+
sameContentStreak
|
|
2147
2069
|
});
|
|
2148
2070
|
return true;
|
|
2149
2071
|
}
|
|
@@ -16,8 +16,6 @@ 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);
|
|
21
19
|
|
|
22
20
|
function wait(ms) {
|
|
23
21
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
@@ -218,26 +216,14 @@ function summarizeFrames(frames) {
|
|
|
218
216
|
const fps = frames.length > 1 ? ((frames.length - 1) * 1000) / durationMs : 0;
|
|
219
217
|
const seqs = frames.map(frame => Number(frame.metadata.frameSeq || 0)).filter(Number.isFinite);
|
|
220
218
|
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
|
-
}
|
|
229
219
|
const byteLengths = frames.map(frame => Number(frame.payload?.length || 0)).filter(value => value > 0);
|
|
230
220
|
return {
|
|
231
221
|
frames: frames.length,
|
|
232
222
|
uniqueSeqs: uniqueSeqs.size,
|
|
233
|
-
expectedSeqs,
|
|
234
|
-
droppedSeqs,
|
|
235
|
-
dropRatio: expectedSeqs > 0 ? droppedSeqs / expectedSeqs : 0,
|
|
236
|
-
maxSeqGap,
|
|
237
223
|
durationMs,
|
|
238
224
|
fps,
|
|
239
|
-
firstSeq,
|
|
240
|
-
lastSeq,
|
|
225
|
+
firstSeq: seqs[0] || 0,
|
|
226
|
+
lastSeq: seqs[seqs.length - 1] || 0,
|
|
241
227
|
minBytes: byteLengths.length > 0 ? Math.min(...byteLengths) : 0,
|
|
242
228
|
maxBytes: byteLengths.length > 0 ? Math.max(...byteLengths) : 0,
|
|
243
229
|
metadataFps: Number(last?.metadata?.fps || 0) || 0,
|
|
@@ -334,10 +320,8 @@ async function main() {
|
|
|
334
320
|
assert.equal(summary.metadataFps, REQUESTED_FPS, JSON.stringify(summary));
|
|
335
321
|
assert.equal(summary.mode, 'remote-fast', JSON.stringify(summary));
|
|
336
322
|
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)}`);
|
|
339
323
|
|
|
340
|
-
console.log(`RemoteFast live-rate smoke OK (${summary.frames} frames, ${summary.fps.toFixed(1)} fps,
|
|
324
|
+
console.log(`RemoteFast live-rate smoke OK (${summary.frames} frames, ${summary.fps.toFixed(1)} fps, bytes ${summary.minBytes}-${summary.maxBytes})`);
|
|
341
325
|
} finally {
|
|
342
326
|
if (ws && ws.readyState === WebSocket.OPEN) {
|
|
343
327
|
ws.close();
|