@fugood/bricks-cli 2.25.5-beta.0 → 2.25.5-beta.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,6 +1,6 @@
1
- import{app as e,BrowserWindow as t,ipcMain as o}from"electron";import{readFile as s,writeFile as r}from"fs/promises";import{watchFile as n}from"fs";import{createServer as a}from"http";import i from"node:path";import{fileURLToPath as l}from"node:url";import{parseArgs as c}from"util";import*as p from"@toon-format/toon";import d from"./simulator-host-bridge.cjs";let{automationScreenshotPathExists:u,readAutomationScreenshotDirectory:w,makeAutomationScreenshotDirectory:h,removeAutomationScreenshotPath:m,readAutomationScreenshotFile:g,writeAutomationScreenshotFile:f}=d;for(let e of[process.stdout,process.stderr])e.on("error",e=>{if("EPIPE"!==e.code)throw e});let{values:y}=c({args:process.argv,options:{"clear-cache":{type:"boolean"},"take-screenshot":{type:"string"},"show-menu":{type:"boolean"},"test-id":{type:"string"},"test-title-like":{type:"string"},"test-timeout":{type:"string"},"no-keep-open":{type:"boolean"},"cdp-port":{type:"string"}},strict:!0,allowPositionals:!0}),S=process.cwd(),b=i.dirname(l(import.meta.url)),v=Object.freeze({allowedInsecureHosts:[]}),C=(e={})=>{let t=e&&"object"==typeof e&&!Array.isArray(e)?e:{};return{allowedInsecureHosts:(Array.isArray(t.allowedInsecureHosts)?t.allowedInsecureHosts:v.allowedInsecureHosts).filter(e=>"string"==typeof e).map(e=>e.trim().toLowerCase()).filter(Boolean)}},k=e=>{try{let t=new URL(String(e||""));if("http:"!==t.protocol&&"ws:"!==t.protocol)return null;return t.host.toLowerCase()}catch{return null}},I=async()=>{try{return C(JSON.parse(await s(`${S}/simulator.json`,"utf8")))}catch{return C()}},J=null;try{y["take-screenshot"]&&((J=JSON.parse(y["take-screenshot"])).path||(J.path=`${S}/screenshot.jpg`),J.width||(J.width=1280),J.height||(J.height=768),J.delay||(J.delay=1e3))}catch(e){console.error("Invalid take-screenshot config",e),process.exit(1)}let O=JSON.parse(await s(`${S}/.bricks/build/application-config.json`)),T=await I(),$=e=>{console.error(e),process.exit(1)},j=Object.values(O.automation_map||{}).flatMap(e=>Object.entries(e.map||{})),N=e=>{let t=e.toLowerCase();return j.find(([,e])=>e.title?.toLowerCase().includes(t))?.[0]??null},L=()=>j.map(([e,t])=>`- ${e} (${t.title||"untitled"})`).join("\n")||"(none — the compiled automation map is empty)",R=y["test-id"]||null;if(R&&!j.some(([e])=>e===R)){let e=y["test-title-like"]?N(y["test-title-like"]):null;e||$(`No automation test with id: ${y["test-id"]}. Available tests:
2
- ${L()}`),R=e}!R&&y["test-title-like"]&&((R=N(y["test-title-like"]))||$(`No automation found matching title: ${y["test-title-like"]}. Available tests:
3
- ${L()}`));let H=y["no-keep-open"]??!1,P=parseInt(y["test-timeout"]||"",10)||9e4,E=process.env.BRICKS_STAGE||"production",B={production:"https://control.bricks.tools/applicationPreview.html",beta:"https://control-beta.bricks.tools/applicationPreview.html",development:"http://localhost:3006/dev-applicationPreview.html"}[E];B||$(`Invalid BRICKS_STAGE: ${E}`),T=C({...T,allowedInsecureHosts:[...T.allowedInsecureHosts,k(B)].filter(Boolean)});let _=async(e,t)=>{let{WebSocketServer:o}=await import("ws"),s=new Set;e.webContents.on("console-message",(e,...t)=>{let o="object"==typeof t[0]?t[0].message:t[1];if(o?.startsWith("[CDP]"))try{let e=JSON.parse(o.slice(5)),t="cdp-response"===e.type?{id:e.id,result:e.result,error:e.error}:{method:e.method,params:e.params};e.sessionId&&(t.sessionId=e.sessionId);let r=JSON.stringify(t);for(let e of s)1===e.readyState&&e.send(r)}catch{}});let r=e=>new Promise(o=>{let s=a();s.once("error",()=>{e<t+100?o(r(e+1)):o(null)}),s.listen(e,()=>s.close(()=>o(e)))}),n=await r(t);if(!n)return void console.warn(`CDP server: no available port in range ${t}-${t+99}`);let i=a((e,t)=>{if("/json/list"===e.url||"/json"===e.url){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify([{description:"BRICKS Simulator",id:"bricks-simulator",title:"BRICKS Simulator",type:"page",url:B,webSocketDebuggerUrl:`ws://localhost:${n}/ws`}]));return}if("/json/version"===e.url){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({Browser:"BRICKS Simulator","Protocol-Version":"1.3"}));return}if("/devtools/info"===e.url){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({name:"BRICKS Simulator",port:n,protocols:["cdp"],hasPasscode:!1}));return}t.writeHead(404),t.end()});new o({server:i,path:"/ws"}).on("connection",t=>{s.add(t),e.webContents.executeJavaScript(`
1
+ import{app as e,BrowserWindow as t,ipcMain as o}from"electron";import{readFile as s,writeFile as r}from"fs/promises";import{watchFile as n}from"fs";import{createServer as a}from"http";import i from"node:path";import{fileURLToPath as l}from"node:url";import{parseArgs as c}from"util";import*as p from"@toon-format/toon";import d from"./simulator-host-bridge.cjs";let{automationScreenshotPathExists:u,readAutomationScreenshotDirectory:w,makeAutomationScreenshotDirectory:h,removeAutomationScreenshotPath:m,readAutomationScreenshotFile:g,writeAutomationScreenshotFile:f}=d;for(let e of[process.stdout,process.stderr])e.on("error",e=>{if("EPIPE"!==e.code)throw e});let{values:y}=c({args:process.argv,options:{"clear-cache":{type:"boolean"},"take-screenshot":{type:"string"},"show-menu":{type:"boolean"},"test-id":{type:"string"},"test-title-like":{type:"string"},"test-timeout":{type:"string"},"no-keep-open":{type:"boolean"},headless:{type:"boolean"},"cdp-port":{type:"string"},"capture-plan":{type:"string"}},strict:!0,allowPositionals:!0}),S=process.cwd(),b=i.dirname(l(import.meta.url)),v=Object.freeze({allowedInsecureHosts:[]}),C=()=>{o.handle("bricks-automation-screenshots:exists",async(e,t)=>{try{return await u(S,t)}catch{return!1}}),o.handle("bricks-automation-screenshots:readdir",async(e,t)=>{try{return await w(S,t)}catch{return[]}}),o.handle("bricks-automation-screenshots:mkdir",async(e,t)=>{await h(S,t)}),o.handle("bricks-automation-screenshots:unlink",async(e,t)=>{await m(S,t)}),o.handle("bricks-automation-screenshots:read-file",async(e,t,o)=>g(S,t,o)),o.handle("bricks-automation-screenshots:write-file",async(e,t,o,s)=>f(S,t,o,s))},T=(e={})=>{let t=e&&"object"==typeof e&&!Array.isArray(e)?e:{};return{allowedInsecureHosts:(Array.isArray(t.allowedInsecureHosts)?t.allowedInsecureHosts:v.allowedInsecureHosts).filter(e=>"string"==typeof e).map(e=>e.trim().toLowerCase()).filter(Boolean)}},k=(e,t={})=>{let o=T(t);try{let t=new URL(String(e||""));if("http:"!==t.protocol&&"ws:"!==t.protocol)return!1;let s=t.host.toLowerCase(),r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"");return!o.allowedInsecureHosts.some(e=>{let o=(e=>{let t=String(e||"").trim().toLowerCase();if(!t)return null;if(!/^[a-z][a-z0-9+.-]*:\/\//i.test(t))return{host:t,protocol:null};try{let e=new URL(t);return{host:e.host.toLowerCase(),protocol:e.protocol}}catch{return null}})(e);return!!o&&(!o.protocol||o.protocol===t.protocol)&&(o.host===s||o.host===r)})}catch{return!1}},I=e=>{try{let t=new URL(String(e||""));if("http:"!==t.protocol&&"ws:"!==t.protocol)return null;return t.host.toLowerCase()}catch{return null}},J=async()=>{try{return T(JSON.parse(await s(`${S}/simulator.json`,"utf8")))}catch{return T()}},O=null;try{y["take-screenshot"]&&((O=JSON.parse(y["take-screenshot"])).path||(O.path=`${S}/screenshot.jpg`),O.width||(O.width=1280),O.height||(O.height=768),O.delay||(O.delay=1e3))}catch(e){console.error("Invalid take-screenshot config",e),process.exit(1)}let E=null;try{y["capture-plan"]&&(E=JSON.parse(await s(y["capture-plan"],"utf8")))}catch(e){console.error("Invalid capture-plan file",e),process.exit(1)}let N=JSON.parse(await s(`${S}/.bricks/build/application-config.json`)),$=await J(),_=e=>{console.error(e),process.exit(1)},L=Object.values(N.automation_map||{}).flatMap(e=>Object.entries(e.map||{})),R=e=>{let t=e.toLowerCase();return L.find(([,e])=>e.title?.toLowerCase().includes(t))?.[0]??null},P=()=>L.map(([e,t])=>`- ${e} (${t.title||"untitled"})`).join("\n")||"(none — the compiled automation map is empty)",j=y["test-id"]||null;if(j&&!L.some(([e])=>e===j)){let e=y["test-title-like"]?R(y["test-title-like"]):null;e||_(`No automation test with id: ${y["test-id"]}. Available tests:
2
+ ${P()}`),j=e}!j&&y["test-title-like"]&&((j=R(y["test-title-like"]))||_(`No automation found matching title: ${y["test-title-like"]}. Available tests:
3
+ ${P()}`));let H=y["no-keep-open"]??!1,x=parseInt(y["test-timeout"]||"",10)||9e4,B=process.env.BRICKS_STAGE||"production",U={production:"https://control.bricks.tools/applicationPreview.html",beta:"https://control-beta.bricks.tools/applicationPreview.html",development:"http://localhost:3006/dev-applicationPreview.html"}[B];U||_(`Invalid BRICKS_STAGE: ${B}`),$=T({...$,allowedInsecureHosts:[...$.allowedInsecureHosts,I(U)].filter(Boolean)});let A=async(e,t)=>{let{WebSocketServer:o}=await import("ws"),s=new Set;e.webContents.on("console-message",(e,...t)=>{let o="object"==typeof t[0]?t[0].message:t[1];if(o?.startsWith("[CDP]"))try{let e=JSON.parse(o.slice(5)),t="cdp-response"===e.type?{id:e.id,result:e.result,error:e.error}:{method:e.method,params:e.params};e.sessionId&&(t.sessionId=e.sessionId);let r=JSON.stringify(t);for(let e of s)1===e.readyState&&e.send(r)}catch{}});let r=e=>new Promise(o=>{let s=a();s.once("error",()=>{e<t+100?o(r(e+1)):o(null)}),s.listen(e,()=>s.close(()=>o(e)))}),n=await r(t);if(!n)return void console.warn(`CDP server: no available port in range ${t}-${t+99}`);let i=a((e,t)=>{if("/json/list"===e.url||"/json"===e.url){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify([{description:"BRICKS Simulator",id:"bricks-simulator",title:"BRICKS Simulator",type:"page",url:U,webSocketDebuggerUrl:`ws://localhost:${n}/ws`}]));return}if("/json/version"===e.url){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({Browser:"BRICKS Simulator","Protocol-Version":"1.3"}));return}if("/devtools/info"===e.url){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({name:"BRICKS Simulator",port:n,protocols:["cdp"],hasPasscode:!1}));return}t.writeHead(404),t.end()});new o({server:i,path:"/ws"}).on("connection",t=>{s.add(t),e.webContents.executeJavaScript(`
4
4
  if (!window.__cdpRelayInstalled) {
5
5
  window.__cdpRelayInstalled = true
6
6
  window.addEventListener('message', (evt) => {
@@ -11,7 +11,16 @@ ${L()}`));let H=y["no-keep-open"]??!1,P=parseInt(y["test-timeout"]||"",10)||9e4,
11
11
  } catch {}
12
12
  })
13
13
  }
14
- `),t.on("message",t=>{try{let o=JSON.parse(t.toString()),s=JSON.stringify({type:"cdp-request",id:o.id,method:o.method,params:o.params||{},sessionId:o.sessionId});e.webContents.executeJavaScript(`window.postMessage(${JSON.stringify(s)})`)}catch{}}),t.on("close",()=>s.delete(t))}),i.listen(n,()=>{console.log(`CDP server: ws://localhost:${n}/ws`),console.log(`Inspect: devtools://devtools/bundled/inspector.html?ws=localhost:${n}/ws`)})};e.on("ready",()=>{o.handle("bricks-automation-screenshots:exists",async(e,t)=>{try{return await u(S,t)}catch{return!1}}),o.handle("bricks-automation-screenshots:readdir",async(e,t)=>{try{return await w(S,t)}catch{return[]}}),o.handle("bricks-automation-screenshots:mkdir",async(e,t)=>{await h(S,t)}),o.handle("bricks-automation-screenshots:unlink",async(e,t)=>{await m(S,t)}),o.handle("bricks-automation-screenshots:read-file",async(e,t,o)=>g(S,t,o)),o.handle("bricks-automation-screenshots:write-file",async(e,t,o,s)=>f(S,t,o,s));let a=!0;J&&!J.noHeadless&&(a=!1);let l=new t({width:J?.width||1280,height:J?.height||768,frame:!J,show:a,webPreferences:{preload:i.join(b,"simulator-preload.cjs"),contextIsolation:!0,nodeIntegration:!1}});l.setBackgroundColor("#333"),l.webContents.session.webRequest.onBeforeRequest({urls:["http://*/*","ws://*/*"]},(e,t)=>{t({cancel:((e,t={})=>{let o=C(t);try{let t=new URL(String(e||""));if("http:"!==t.protocol&&"ws:"!==t.protocol)return!1;let s=t.host.toLowerCase(),r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"");return!o.allowedInsecureHosts.some(e=>{let o=(e=>{let t=String(e||"").trim().toLowerCase();if(!t)return null;if(!/^[a-z][a-z0-9+.-]*:\/\//i.test(t))return{host:t,protocol:null};try{let e=new URL(t);return{host:e.host.toLowerCase(),protocol:e.protocol}}catch{return null}})(e);return!!o&&(!o.protocol||o.protocol===t.protocol)&&(o.host===s||o.host===r)})}catch{return!1}})(e.url,T)})}),l.loadURL(B);let c=()=>{let t={type:"config",configFile:{_originTitle:"Test",...O,title:Math.random().toString()},workspace:{billing:{lock:{},plan:"free"}},showMenu:y["show-menu"]||!1,testId:R};if(l.webContents.executeJavaScript(`window.postMessage(JSON.stringify(${JSON.stringify(t)}))`),J){let{delay:t,width:o,height:s,path:n}=J;setTimeout(async()=>{let t=!1;console.log("Taking screenshot");try{let e=await l.webContents.capturePage();console.log("Writing screenshot to",n),await r(n,e.resize({width:o,height:s}).toJPEG(75))}catch(e){t=!0,console.error("Screenshot capture/write failed",e)}finally{H&&(console.log("Closing app"),t?e.exit(1):e.quit())}},t)}},d=null;l.webContents.once("dom-ready",()=>{c(),R&&(H||J)&&(d=setTimeout(()=>{console.error(`Automation test ${R} did not report a result within ${P}ms — check that its waits can resolve and the expected canvas/data changes actually happen.`),e.exit(1)},P)),R&&l.webContents.executeJavaScript(`
14
+ `),t.on("message",t=>{try{let o=JSON.parse(t.toString()),s=JSON.stringify({type:"cdp-request",id:o.id,method:o.method,params:o.params||{},sessionId:o.sessionId});e.webContents.executeJavaScript(`window.postMessage(${JSON.stringify(s)})`)}catch{}}),t.on("close",()=>s.delete(t))}),i.listen(n,()=>{console.log(`CDP server: ws://localhost:${n}/ws`),console.log(`Inspect: devtools://devtools/bundled/inspector.html?ws=localhost:${n}/ws`)})};e.commandLine.appendSwitch("use-mock-keychain"),e.commandLine.appendSwitch("password-store","basic");let M=async o=>{let s=Array.isArray(o.states)?o.states:[],n=s[0]||{},a=new t({width:n.width||800,height:n.height||1200,frame:!1,show:!1,webPreferences:{preload:i.join(b,"simulator-preload.cjs"),contextIsolation:!0,nodeIntegration:!1}});a.setBackgroundColor("#333"),a.webContents.session.webRequest.onBeforeRequest({urls:["http://*/*","ws://*/*"]},(e,t)=>{t({cancel:k(e.url,$)})});let l=null;a.webContents.on("console-message",(e,...t)=>{let o="object"==typeof t[0]?t[0].message:t[1];if(o?.startsWith("[TEST_RESULT]"))try{let e=JSON.parse(o.replace("[TEST_RESULT]",""));if(console.log(`[TEST_RESULT_TOON]${p.encode(e.result)}`),l){let t=l;l=null,t(e.result)}}catch{}});let c=e=>new Promise(t=>setTimeout(t,e)),d=()=>new Promise(e=>a.webContents.once("dom-ready",e)),u=()=>a.webContents.executeJavaScript(`
15
+ window.addEventListener('message', (evt) => {
16
+ try {
17
+ const data = JSON.parse(evt.data)
18
+ if (data.type === 'bricks-preview-test-result') {
19
+ console.log('[TEST_RESULT]' + JSON.stringify(data))
20
+ }
21
+ } catch (e) {}
22
+ })
23
+ `),w=e=>{let t={type:"config",configFile:{_originTitle:"Test",...N,title:Math.random().toString()},workspace:{billing:{lock:{},plan:{type:"__internal__"}}},showMenu:!1,testId:e};return a.webContents.executeJavaScript(`window.postMessage(JSON.stringify(${JSON.stringify(t)}))`)},h=()=>new Promise((e,t)=>{let o=setTimeout(()=>{l=null,t(Error(`automation did not report a result within ${x}ms`))},x);l=t=>{clearTimeout(o),e(t)}}),m=e=>e&&L.some(([t])=>t===e)?e:null,g=n.width||800,f=n.height||1200;for(let e of s){let t=e.width||800,o=e.height||1200,s=Date.now(),n={name:e.name,screenshotPath:e.screenshotPath,ok:!1,wallMs:0};try{let s=m(e.testId);if(e.testId&&!s)throw Error(`no automation test with id: ${e.testId}`);(t!==g||o!==f)&&(a.setContentSize(t,o),g=t,f=o);let i=d();a.loadURL(U),await i,await u(),await w(s),s&&await h(),await c(e.delayMs||1200);let l=await a.webContents.capturePage();await r(e.screenshotPath,l.resize({width:t,height:o}).toJPEG(75)),n.ok=!0}catch(t){console.error(`Capture state "${e.name}" failed:`,t?.message||t)}finally{n.wallMs=Date.now()-s,console.log(`[CAPTURE_STATE]${JSON.stringify(n)}`)}}e.quit()};e.on("ready",()=>{if(E){C(),M(E).catch(t=>{console.error("Capture plan failed",t),e.exit(1)});return}C();let o=!0;O&&!O.noHeadless&&(o=!1);let a=!!y.headless||"1"===process.env.BRICKS_SIMULATOR_HEADLESS,l=H&&!O&&a;l&&(o=!1);let c=new t({width:O?.width||1280,height:O?.height||768,frame:!O,show:o,webPreferences:{preload:i.join(b,"simulator-preload.cjs"),contextIsolation:!0,nodeIntegration:!1,...l?{backgroundThrottling:!1}:{}}});c.setBackgroundColor("#333"),c.webContents.session.webRequest.onBeforeRequest({urls:["http://*/*","ws://*/*"]},(e,t)=>{t({cancel:k(e.url,$)})}),c.loadURL(U);let d=null,u=()=>{if(!O||d)return;let{delay:t,width:o,height:s,path:n}=O;d=setTimeout(async()=>{let t=!1;console.log("Taking screenshot");try{let e=await c.webContents.capturePage();console.log("Writing screenshot to",n),await r(n,e.resize({width:o,height:s}).toJPEG(75))}catch(e){t=!0,console.error("Screenshot capture/write failed",e)}finally{H&&(console.log("Closing app"),t?e.exit(1):e.quit())}},t)},w=()=>{let e={type:"config",configFile:{_originTitle:"Test",...N,title:Math.random().toString()},workspace:{billing:{lock:{},plan:{type:"__internal__"}}},showMenu:y["show-menu"]||!1,testId:j,hideDevChrome:!!O};c.webContents.executeJavaScript(`window.postMessage(JSON.stringify(${JSON.stringify(e)}))`),j||u()},h=null;c.webContents.once("dom-ready",()=>{w(),j&&(H||O)&&(h=setTimeout(()=>{console.error(`Automation test ${j} did not report a result within ${x}ms — check that its waits can resolve and the expected canvas/data changes actually happen.`),e.exit(1)},x)),j&&c.webContents.executeJavaScript(`
15
24
  window.addEventListener('message', (evt) => {
16
25
  try {
17
26
  const data = JSON.parse(evt.data)
@@ -20,4 +29,4 @@ ${L()}`));let H=y["no-keep-open"]??!1,P=parseInt(y["test-timeout"]||"",10)||9e4,
20
29
  }
21
30
  } catch (e) {}
22
31
  })
23
- `);let t=y["cdp-port"]?parseInt(y["cdp-port"],10):null;t&&_(l,t)}),R&&l.webContents.on("console-message",(t,...o)=>{let s="object"==typeof o[0]?o[0].message:o[1];if(s?.startsWith("[TEST_RESULT]")){d&&clearTimeout(d);let t=JSON.parse(s.replace("[TEST_RESULT]",""));console.log(`[TEST_RESULT_TOON]${p.encode(t.result)}`),!J&&H&&e.quit()}}),y["clear-cache"]&&(console.log("Clearing cache"),l.webContents.session.clearCache()),l.on("close",()=>e.quit()),n(`${S}/.bricks/build/application-config.json`,{bigint:!1,persistent:!0,interval:1e3},async()=>{console.log("Detected config changed"),O=JSON.parse(await s(`${S}/.bricks/build/application-config.json`));let e=await I();T=C({...e,allowedInsecureHosts:[...e.allowedInsecureHosts,k(B)].filter(Boolean)}),c()}),n(`${S}/simulator.json`,{bigint:!1,persistent:!0,interval:1e3},async()=>{console.log("Detected simulator settings changed");let e=await I();T=C({...e,allowedInsecureHosts:[...e.allowedInsecureHosts,k(B)].filter(Boolean)})})});
32
+ `);let t=y["cdp-port"]?parseInt(y["cdp-port"],10):null;t&&A(c,t)}),j&&c.webContents.on("console-message",(t,...o)=>{let s="object"==typeof o[0]?o[0].message:o[1];if(s?.startsWith("[TEST_RESULT]")){h&&clearTimeout(h);let t=JSON.parse(s.replace("[TEST_RESULT]",""));console.log(`[TEST_RESULT_TOON]${p.encode(t.result)}`),O?u():H&&e.quit()}}),y["clear-cache"]&&(console.log("Clearing cache"),c.webContents.session.clearCache()),c.on("close",()=>e.quit()),n(`${S}/.bricks/build/application-config.json`,{bigint:!1,persistent:!0,interval:1e3},async()=>{console.log("Detected config changed"),N=JSON.parse(await s(`${S}/.bricks/build/application-config.json`));let e=await J();$=T({...e,allowedInsecureHosts:[...e.allowedInsecureHosts,I(U)].filter(Boolean)}),w()}),n(`${S}/simulator.json`,{bigint:!1,persistent:!0,interval:1e3},async()=>{console.log("Detected simulator settings changed");let e=await J();$=T({...e,allowedInsecureHosts:[...e.allowedInsecureHosts,I(U)].filter(Boolean)})})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fugood/bricks-cli",
3
- "version": "2.25.5-beta.0",
3
+ "version": "2.25.5-beta.2",
4
4
  "description": "BRICKS CLI - Command-line interface for BRICKS Workspace API",
5
5
  "keywords": [
6
6
  "bricks",
@@ -55,10 +55,11 @@
55
55
  "@babel/parser": "7.28.5",
56
56
  "@babel/traverse": "7.28.5",
57
57
  "@babel/types": "7.28.5",
58
- "@fugood/bricks-config-core": "^2.25.5-beta.0",
59
- "@fugood/bricks-core-generated": "^2.25.5-beta.0",
58
+ "@fugood/bricks-config-core": "^2.25.5-beta.2",
59
+ "@fugood/bricks-core-generated": "^2.25.5-beta.2",
60
+ "@fugood/bricks-devtools-core": "^2.25.5-beta.2",
60
61
  "@fugood/bricks-system-properties-definition": "^2.25.3",
61
- "@fugood/property-bank-calc-generated": "^2.25.5-beta.0",
62
+ "@fugood/property-bank-calc-generated": "^2.25.5-beta.2",
62
63
  "@huggingface/gguf": "^0.3.2",
63
64
  "@iarna/toml": "^3.0.0",
64
65
  "@inquirer/prompts": "^7.0.0",
@@ -89,5 +90,5 @@
89
90
  "engines": {
90
91
  "node": ">=18.0.0"
91
92
  },
92
- "gitHead": "19b7daaf00b4a0e340b6da22ae6c173ae6428e00"
93
+ "gitHead": "9bacac6ddaa4b4ae0991cbbe94b524772afd369c"
93
94
  }