@dezignerdrugz/ade 0.1.0 → 0.1.2

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.
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/styles-DafH6Tpe.css" data-precedence="default"/><link rel="stylesheet" href="/assets/index-apqJzkVr.css" data-precedence="default"/><title>ADE — Project home</title><meta name="author" content="ADE"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="See your preview, active agent sessions, and recent changes for the current project in one calm workspace."/><meta property="og:title" content="ADE — Project home"/><meta property="og:description" content="A free, local-first workspace for building software with AI coding agents."/><link rel="modulepreload" href="/assets/index-3HxL6IhA.js"/><link rel="modulepreload" href="/assets/jsx-runtime-B-hcVAMW.js"/><link rel="modulepreload" href="/assets/react-dom-8HkkFvw6.js"/><link rel="modulepreload" href="/assets/link-B2U3BMsN.js"/><link rel="modulepreload" href="/assets/not-found-i5RsCZif.js"/><link rel="modulepreload" href="/assets/useSearch-CfA5YnfP.js"/><link rel="modulepreload" href="/assets/useRouter-BGpAXxmD.js"/><link rel="modulepreload" href="/assets/routes-an4DkwdD.js"/><link rel="modulepreload" href="/assets/navigation-BciIj42D.js"/><link rel="icon" href="/favicon.ico" type="image/x-icon"/><script>(function(){try{var t=localStorage.getItem("ade-theme");if(t!=="light"&&t!=="dark")t=matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";document.documentElement.dataset.theme=t}catch(e){}})()</script></head><body><div class="flex h-screen flex-col overflow-hidden bg-paper text-ink"><header class="flex h-10 shrink-0 items-center gap-2 border-b border-line bg-panel px-3 sm:px-4"><a aria-label="ADE home" class="heading-display shrink-0 text-xl text-ink hover:text-ink active" href="/" data-status="active" aria-current="page">ADE</a><div class="flex min-w-0 flex-1 items-center gap-1 overflow-x-auto"><button type="button" aria-label="Add project" class="grid size-7 shrink-0 place-items-center rounded-md text-dim hover:bg-ink/[0.04] hover:text-ink focus-visible:outline-2 focus-visible:outline-amber"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button></div><div class="ml-auto flex shrink-0 items-center gap-1 sm:gap-2"><button type="button" id="radix-_R_75aq_" aria-haspopup="menu" aria-expanded="false" data-state="closed" class="inline-flex h-7 max-w-[14rem] items-center gap-1.5 rounded-md px-2 text-[13px] text-dim hover:bg-ink/[0.04] hover:text-ink focus-visible:outline-2 focus-visible:outline-amber" aria-label="Projects menu"><span class="min-w-0 truncate">Projects</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down size-3.5 shrink-0" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" aria-label="Agents settings" class="grid size-7 place-items-center rounded-md text-dim hover:bg-ink/[0.04] hover:text-ink focus-visible:outline-2 focus-visible:outline-amber"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings size-3.5" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></button><button tabindex="0" class="G30ocW_button G30ocW_secondary G30ocW_sm weiLkW_themeSwitch weiLkW_rise weiLkW_iconOnly " type="button" data-theme="light" aria-label="Switch to dark mode" aria-pressed="false"><span class="G30ocW_labelSlot" style="width:auto"><span class="G30ocW_labelContent"><span class="G30ocW_labelPhase" style="opacity:1;filter:blur(0px);transform:none"><span class="weiLkW_iconWrap"><span class="weiLkW_icon" aria-hidden="true" style="opacity:1;filter:blur(0px);transform:none"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg></span></span></span></span></span></button></div></header><div class="flex min-h-0 flex-1"><div class="min-h-0 min-w-0 flex-1" data-group="true" data-testid="ade-shell-layout-v2" id="ade-shell-layout-v2" style="height:100%;width:100%;overflow:hidden;flex:1;min-height:0;display:flex;flex-direction:row;flex-wrap:nowrap;touch-action:pan-y"><div data-panel="true" data-testid="shell-main" id="shell-main" style="min-height:0;max-height:100%;height:auto;min-width:0;max-width:100%;width:auto;border:none;border-width:0;padding:0;margin:0;display:flex;flex-basis:0;flex-shrink:1;overflow:visible;flex-grow:56"><div class="min-w-0 overflow-hidden" style="max-height:100%;max-width:100%;flex-grow:1;overflow:hidden;min-width:0;touch-action:pan-y"><div class="flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden"><!--$--><!--$--><!--/$--><script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script><!--/$--></div></div></div><div data-orientation="vertical" aria-orientation="vertical" class="panel-seam" data-separator="inactive" data-testid="seam-shell-right" id="seam-shell-right" role="separator" style="flex-basis:auto;flex-grow:0;flex-shrink:0;touch-action:none" tabindex="0"><button type="button" aria-label="Hide right pane" title="Hide right pane" aria-expanded="true" aria-controls="shell-right" class="panel-collapse-handle"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-right-close size-3.5" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M15 3v18"></path><path d="m8 9 3 3-3 3"></path></svg></button></div><div data-panel="true" data-testid="shell-right" id="shell-right" style="min-height:0;max-height:100%;height:auto;min-width:0;max-width:100%;width:auto;border:none;border-width:0;padding:0;margin:0;display:flex;flex-basis:0;flex-shrink:1;overflow:visible;flex-grow:44"><div class="min-w-0 overflow-hidden" style="max-height:100%;max-width:100%;flex-grow:1;overflow:hidden;min-width:0;touch-action:pan-y"><div class="relative flex h-full min-h-0 min-w-0 flex-col overflow-hidden"><div class="flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden"></div></div></div></div></div></div></div><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-3HxL6IhA.js","/assets/jsx-runtime-B-hcVAMW.js","/assets/react-dom-8HkkFvw6.js","/assets/link-B2U3BMsN.js","/assets/not-found-i5RsCZif.js","/assets/useSearch-CfA5YnfP.js","/assets/useRouter-BGpAXxmD.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-3HxL6IhA.js"}}],css:$R[8]=["/assets/index-apqJzkVr.css"]}}},matches:$R[9]=[$R[10]={i:"__root__",u:1793567214555,s:"success",ssr:!0}],lastMatchId:"__root__"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script type="module" async="" src="/assets/index-3HxL6IhA.js"></script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/styles-DafH6Tpe.css" data-precedence="default"/><link rel="stylesheet" href="/assets/index-apqJzkVr.css" data-precedence="default"/><title>ADE — Project home</title><meta name="author" content="ADE"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="See your preview, active agent sessions, and recent changes for the current project in one calm workspace."/><meta property="og:title" content="ADE — Project home"/><meta property="og:description" content="A free, local-first workspace for building software with AI coding agents."/><link rel="modulepreload" href="/assets/index-3HxL6IhA.js"/><link rel="modulepreload" href="/assets/jsx-runtime-B-hcVAMW.js"/><link rel="modulepreload" href="/assets/react-dom-8HkkFvw6.js"/><link rel="modulepreload" href="/assets/link-B2U3BMsN.js"/><link rel="modulepreload" href="/assets/not-found-i5RsCZif.js"/><link rel="modulepreload" href="/assets/useSearch-CfA5YnfP.js"/><link rel="modulepreload" href="/assets/useRouter-BGpAXxmD.js"/><link rel="modulepreload" href="/assets/routes-an4DkwdD.js"/><link rel="modulepreload" href="/assets/navigation-BciIj42D.js"/><link rel="icon" href="/favicon.ico" type="image/x-icon"/><script>(function(){try{var t=localStorage.getItem("ade-theme");if(t!=="light"&&t!=="dark")t=matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";document.documentElement.dataset.theme=t}catch(e){}})()</script></head><body><div class="flex h-screen flex-col overflow-hidden bg-paper text-ink"><header class="flex h-10 shrink-0 items-center gap-2 border-b border-line bg-panel px-3 sm:px-4"><a aria-label="ADE home" class="heading-display shrink-0 text-xl text-ink hover:text-ink active" href="/" data-status="active" aria-current="page">ADE</a><div class="flex min-w-0 flex-1 items-center gap-1 overflow-x-auto"><button type="button" aria-label="Add project" class="grid size-7 shrink-0 place-items-center rounded-md text-dim hover:bg-ink/[0.04] hover:text-ink focus-visible:outline-2 focus-visible:outline-amber"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button></div><div class="ml-auto flex shrink-0 items-center gap-1 sm:gap-2"><button type="button" id="radix-_R_75aq_" aria-haspopup="menu" aria-expanded="false" data-state="closed" class="inline-flex h-7 max-w-[14rem] items-center gap-1.5 rounded-md px-2 text-[13px] text-dim hover:bg-ink/[0.04] hover:text-ink focus-visible:outline-2 focus-visible:outline-amber" aria-label="Projects menu"><span class="min-w-0 truncate">Projects</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down size-3.5 shrink-0" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><button type="button" aria-label="Agents settings" class="grid size-7 place-items-center rounded-md text-dim hover:bg-ink/[0.04] hover:text-ink focus-visible:outline-2 focus-visible:outline-amber"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings size-3.5" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></button><button tabindex="0" class="G30ocW_button G30ocW_secondary G30ocW_sm weiLkW_themeSwitch weiLkW_rise weiLkW_iconOnly " type="button" data-theme="light" aria-label="Switch to dark mode" aria-pressed="false"><span class="G30ocW_labelSlot" style="width:auto"><span class="G30ocW_labelContent"><span class="G30ocW_labelPhase" style="opacity:1;filter:blur(0px);transform:none"><span class="weiLkW_iconWrap"><span class="weiLkW_icon" aria-hidden="true" style="opacity:1;filter:blur(0px);transform:none"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg></span></span></span></span></span></button></div></header><div class="flex min-h-0 flex-1"><div class="min-h-0 min-w-0 flex-1" data-group="true" data-testid="ade-shell-layout-v2" id="ade-shell-layout-v2" style="height:100%;width:100%;overflow:hidden;flex:1;min-height:0;display:flex;flex-direction:row;flex-wrap:nowrap;touch-action:pan-y"><div data-panel="true" data-testid="shell-main" id="shell-main" style="min-height:0;max-height:100%;height:auto;min-width:0;max-width:100%;width:auto;border:none;border-width:0;padding:0;margin:0;display:flex;flex-basis:0;flex-shrink:1;overflow:visible;flex-grow:56"><div class="min-w-0 overflow-hidden" style="max-height:100%;max-width:100%;flex-grow:1;overflow:hidden;min-width:0;touch-action:pan-y"><div class="flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden"><!--$--><!--$--><!--/$--><script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script><!--/$--></div></div></div><div data-orientation="vertical" aria-orientation="vertical" class="panel-seam" data-separator="inactive" data-testid="seam-shell-right" id="seam-shell-right" role="separator" style="flex-basis:auto;flex-grow:0;flex-shrink:0;touch-action:none" tabindex="0"><button type="button" aria-label="Hide right pane" title="Hide right pane" aria-expanded="true" aria-controls="shell-right" class="panel-collapse-handle"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-right-close size-3.5" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M15 3v18"></path><path d="m8 9 3 3-3 3"></path></svg></button></div><div data-panel="true" data-testid="shell-right" id="shell-right" style="min-height:0;max-height:100%;height:auto;min-width:0;max-width:100%;width:auto;border:none;border-width:0;padding:0;margin:0;display:flex;flex-basis:0;flex-shrink:1;overflow:visible;flex-grow:44"><div class="min-w-0 overflow-hidden" style="max-height:100%;max-width:100%;flex-grow:1;overflow:hidden;min-width:0;touch-action:pan-y"><div class="relative flex h-full min-h-0 min-w-0 flex-col overflow-hidden"><div class="flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden"></div></div></div></div></div></div></div><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-3HxL6IhA.js","/assets/jsx-runtime-B-hcVAMW.js","/assets/react-dom-8HkkFvw6.js","/assets/link-B2U3BMsN.js","/assets/not-found-i5RsCZif.js","/assets/useSearch-CfA5YnfP.js","/assets/useRouter-BGpAXxmD.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-3HxL6IhA.js"}}],css:$R[8]=["/assets/index-apqJzkVr.css"]}}},matches:$R[9]=[$R[10]={i:"__root__",u:1793569314591,s:"success",ssr:!0}],lastMatchId:"__root__"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script type="module" async="" src="/assets/index-3HxL6IhA.js"></script></body></html>
package/README.md CHANGED
@@ -120,17 +120,6 @@ Each project's right pane has a **Browser** tab: a headless Chrome on your machi
120
120
 
121
121
  The existing TanStack Start/React app and warm workbench visual direction are retained. A small Node local-service module is mounted into Vite dev/preview and the self-hosted Node server: `src/local/ade-local.mjs` holds the request guard and the shared state, each area's API routes live in `src/local/routes/`, and larger services have their own modules (`dev-server.mjs`, `agent-status.mjs`, `remote.mjs` and others). Agent adapters are isolated in `src/local/adapters/` so additional CLIs can be added without changing UI state. The service owns project registration, Git inspection/diffs, task persistence, child-process lifecycle, CLI streaming, checks, and development servers. The browser receives scoped invalidations over Server-Sent Events and loads session details and logs on demand; browser storage is no longer the source of truth.
122
122
 
123
- ## Releasing
124
-
125
- The npm package `@dezignerdrugz/ade` is built from this repository, not from its development manifest:
126
-
127
- ```sh
128
- npm run package # builds the app, stages and packs it in .pack/
129
- npm publish .pack/dezignerdrugz-ade-<version>.tgz
130
- ```
131
-
132
- Publishing needs `npm login` as an account that owns the `@dezignerdrugz` scope. Bump `version` in the root `package.json` before packaging a new release; npm never accepts the same version twice.
133
-
134
123
  ## License
135
124
 
136
125
  ADE is released under the [MIT License](LICENSE). Third-party components and bundled fonts keep their own licenses; see `THIRD_PARTY_NOTICES.md` and `public/licenses/`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dezignerdrugz/ade",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "ADE: a local web UI that drives coding-agent CLIs (Codex, OpenCode, Pi, Claude Code) on your machine.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -111,6 +111,10 @@ export const codex = defineCliAgent({
111
111
  // `--` it swallows the positional prompt and then fails on closed stdin:
112
112
  // "No prompt provided via stdin."
113
113
  const promptArgs = imageArgs.length ? ["--", prompt] : [prompt];
114
+ // Codex refuses folders outside a Git repository unless told otherwise
115
+ // ("Not inside a trusted directory"). ADE runs it only in the project the
116
+ // user chose, which need not use Git, and tracks the turn's changes itself.
117
+ const trustArgs = ["--skip-git-repo-check"];
114
118
  return continuing && session.agentSessionId
115
119
  ? [
116
120
  "codex",
@@ -118,6 +122,7 @@ export const codex = defineCliAgent({
118
122
  "exec",
119
123
  "resume",
120
124
  "--json",
125
+ ...trustArgs,
121
126
  ...modelArgs,
122
127
  ...optionArgs,
123
128
  ...computerArgs,
@@ -132,6 +137,7 @@ export const codex = defineCliAgent({
132
137
  [
133
138
  "exec",
134
139
  "--json",
140
+ ...trustArgs,
135
141
  ...modelArgs,
136
142
  ...optionArgs,
137
143
  ...computerArgs,