iobroker.ai-usage 0.1.0 → 0.2.0
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/README.md +13 -2
- package/admin/custom/assets/Components-Bd545388.js +1 -0
- package/admin/custom/assets/ConfigPanel-qivVprTj.js +1 -0
- package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__AiUsageComponentSet__mf_owner__1-CXmnAfNY.js +1 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHNIjSR.js +1243 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-qu1s07FY.js +1494 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-C8-GjKo4.js +9 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__prebuild___mf_0_iobroker_mf_1_gui_mf_2_components__prebuild__-CQxWwR2r.js +1 -0
- package/admin/custom/assets/hostInit-RHMRa462.js +1 -0
- package/admin/custom/assets/index-B0J1NbOp.js +1 -0
- package/admin/custom/assets/lib-ByF76TCN.js +3 -0
- package/admin/custom/assets/mf-entry-bootstrap-0-e070fa3e.js +35 -0
- package/admin/custom/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/admin/custom/assets/virtualExposes-BZWQ_oUV.js +1 -0
- package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__AiUsageComponentSet__customComponents_js-l7jtElkM.js +1 -0
- package/admin/custom/assets/virtual_mf-exposes-ssr___mfe_internal__AiUsageComponentSet__customComponents_js-CRK-nAdE.js +2 -0
- package/admin/custom/assets/virtual_mf-exposes___mfe_internal__AiUsageComponentSet__customComponents_js-BZ-CVpVo.js +2 -0
- package/admin/custom/assets/vite-preload-helper-B7qeedMF.js +1 -0
- package/admin/custom/customComponents.js +1 -0
- package/admin/custom/i18n/de.json +23 -0
- package/admin/custom/i18n/en.json +23 -0
- package/admin/custom/i18n/es.json +23 -0
- package/admin/custom/i18n/fr.json +23 -0
- package/admin/custom/i18n/it.json +23 -0
- package/admin/custom/i18n/nl.json +23 -0
- package/admin/custom/i18n/pl.json +23 -0
- package/admin/custom/i18n/pt.json +23 -0
- package/admin/custom/i18n/ru.json +23 -0
- package/admin/custom/i18n/uk.json +23 -0
- package/admin/custom/i18n/zh-cn.json +23 -0
- package/admin/custom/mf-manifest.json +1 -0
- package/admin/i18n/de.json +9 -27
- package/admin/i18n/en.json +9 -27
- package/admin/i18n/es.json +9 -27
- package/admin/i18n/fr.json +9 -27
- package/admin/i18n/it.json +9 -27
- package/admin/i18n/nl.json +9 -27
- package/admin/i18n/pl.json +9 -27
- package/admin/i18n/pt.json +9 -27
- package/admin/i18n/ru.json +9 -27
- package/admin/i18n/uk.json +9 -27
- package/admin/i18n/zh-cn.json +9 -27
- package/admin/jsonConfig.json +7 -166
- package/build/lib/pure-helpers.js +5 -2
- package/build/lib/pure-helpers.js.map +2 -2
- package/build/main.js +105 -7
- package/build/main.js.map +2 -2
- package/io-package.json +15 -15
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -27,15 +27,21 @@ dashboards, history and automations ("send a message at 90 % of the weekly limit
|
|
|
27
27
|
|
|
28
28
|
- Node.js >= 22
|
|
29
29
|
- ioBroker js-controller >= 7.2.2
|
|
30
|
-
- **ioBroker Admin >= 8.0.
|
|
30
|
+
- **ioBroker Admin >= 8.0.1** — the adapter uses the admin's central credential storage
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
34
|
## Configuration
|
|
35
35
|
|
|
36
|
+
The instance settings show your stored AI credentials (admin central storage, category AI) as
|
|
37
|
+
simple on/off switches — switch on what you want to monitor. The Claude subscription has its own
|
|
38
|
+
card with a guided sign-in: open the sign-in page, log in with your Claude account, paste the code,
|
|
39
|
+
done. New API keys are added once under Settings → Credentials and are shared with the admin AI
|
|
40
|
+
assistant.
|
|
41
|
+
|
|
36
42
|
| Option | Description | Default |
|
|
37
43
|
|--------|-------------|---------|
|
|
38
|
-
| **
|
|
44
|
+
| **Warn at %** | Per account: one notification when a limit window crosses this utilisation | 80 |
|
|
39
45
|
| **Poll interval** | How often each account is queried (seconds) | 300 |
|
|
40
46
|
| **Notifications** | One notification on threshold crossing or broken credentials | on |
|
|
41
47
|
|
|
@@ -77,6 +83,11 @@ and the adapter log. Authentication errors raise one notification with the reaso
|
|
|
77
83
|
Placeholder for the next version (at the beginning of the line):
|
|
78
84
|
### **WORK IN PROGRESS**
|
|
79
85
|
-->
|
|
86
|
+
### 0.2.0 (2026-08-26)
|
|
87
|
+
|
|
88
|
+
- Changed: Completely new settings page — your stored AI credentials appear as simple on/off switches instead of a table, and new keys are picked up straight from the admin credential storage
|
|
89
|
+
- Fixed: The Claude subscription sign-in works reliably now — a guided card with live status, and the sign-in link stays valid until it is used instead of regenerating while you type
|
|
90
|
+
|
|
80
91
|
### 0.1.0 (2026-08-25)
|
|
81
92
|
|
|
82
93
|
- New: First release — reads usage limits, credits and costs of your Claude, OpenAI, Anthropic, OpenRouter and DeepSeek accounts into datapoints, with one warning at your chosen threshold
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./ConfigPanel-qivVprTj.js";var t={ConfigPanel:e};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-qu1s07FY.js";import{Br as t,Dr as n,Er as r,Fi as i,Ha as a,Hi as o,Or as s,Ti as c,Tr as l,Va as u,Xr as d,_o as f,ai as p,ei as m,ga as h,ii as g,in as _,kr as v,li as y,ni as b,oi as x}from"./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHNIjSR.js";f();var S=`Claude`,C={openrouter:`OpenRouter`,deepseek:`DeepSeek`,openai:`OpenAI`,"anthropic-api":`Anthropic`};function w(e,t){let n=`${e} ${t}`.toLowerCase();return n.includes(`gemini`)?`unsupported`:n.includes(`anthropic`)?`anthropic-api`:n.includes(`chatgpt`)||n.includes(`openai`)?`openai`:n.includes(`deepseek`)?`deepseek`:n.includes(`openrouter`)||n.includes(`router`)?`openrouter`:null}var T=class extends e{constructor(e){super(e),h(this,`urlId`,``),h(this,`connId`,``),h(this,`onUrl`,(e,t)=>{this.setState({claudeUrl:typeof(t==null?void 0:t.val)==`string`?t.val:``})}),h(this,`onConn`,(e,t)=>{this.setState({claudeSignedIn:(t==null?void 0:t.val)===!0})}),this.state={...this.state,credentials:[],credentialsLoaded:!1,claudeUrl:``,claudeSignedIn:!1,code:``,busy:!1,message:null,providerChoice:{}}}async componentDidMount(){var e;(e=super.componentDidMount)==null||e.call(this);let t=this.props.oContext,n=`${t.adapterName}.${t.instance}`;this.urlId=`${n}.auth.${S}.signInUrl`,this.connId=`${n}.auth.${S}.signedIn`;try{let e=await t.socket.getObjectViewSystem(`config`,`system.credentials.`,`system.credentials.香`),n=Object.values(e||{}).filter(e=>{var t;return!!e&&((t=e.native)==null?void 0:t.type)===`ai`}).map(e=>{var t,n;let r=e._id.substring(19),i=(t=e.common)==null?void 0:t.name,a=typeof i==`string`?i:(i==null?void 0:i.en)||Object.values(i||{})[0]||r;return{id:e._id,suffix:r,name:a,icon:typeof((n=e.common)==null?void 0:n.icon)==`string`?e.common.icon:void 0,guess:w(r,a)}}).sort((e,t)=>e.name.localeCompare(t.name));this.setState({credentials:n,credentialsLoaded:!0})}catch{this.setState({credentialsLoaded:!0})}try{let[e,n]=await Promise.all([t.socket.getState(this.urlId),t.socket.getState(this.connId)]);this.setState({claudeUrl:typeof(e==null?void 0:e.val)==`string`?e.val:``,claudeSignedIn:(n==null?void 0:n.val)===!0}),await t.socket.subscribeState(this.urlId,this.onUrl),await t.socket.subscribeState(this.connId,this.onConn)}catch{}}componentWillUnmount(){var e,t;let n=(e=this.props.oContext)==null?void 0:e.socket;n&&this.urlId&&(n.unsubscribeState(this.urlId,this.onUrl),n.unsubscribeState(this.connId,this.onConn)),(t=super.componentWillUnmount)==null||t.call(this)}accounts(){let t=e.getValue(this.props.data,`accounts`);return Array.isArray(t)?t:[]}commit(e){this.onChange(`accounts`,e)}claudeEnabled(){return this.accounts().some(e=>e.provider===`claude-sub`)}toggleClaude(e){let t=this.accounts().filter(e=>e.provider!==`claude-sub`);e&&t.unshift({name:S,provider:`claude-sub`,credentialId:``,warnThreshold:80,enabled:!0}),this.commit(t)}toggleCredential(e,t){let n=this.accounts().filter(t=>t.credentialId!==e.id);if(t){let t=e.guess&&e.guess!==`unsupported`?e.guess:this.state.providerChoice[e.id];if(!t)return;n.push({name:e.name,provider:t,credentialId:e.id,warnThreshold:80,enabled:!0})}this.commit(n)}setThreshold(e,t){let n=Math.min(100,Math.max(10,Math.round(Number(t))||80));this.commit(this.accounts().map(t=>(e?t.credentialId===e:t.provider===`claude-sub`)?{...t,warnThreshold:n}:t))}async redeemCode(){let e=this.props.oContext;this.setState({busy:!0,message:null});try{let t=await e.socket.sendTo(`${e.adapterName}.${e.instance}`,`claudeAuthCode`,{account:S,code:this.state.code});(t==null?void 0:t.result)===`ok`?this.setState({busy:!1,code:``,message:{ok:!0,text:_.t(`aiu_signInDone`)}}):this.setState({busy:!1,message:{ok:!1,text:(t==null?void 0:t.error)||_.t(`aiu_signInFailed`)}})}catch{this.setState({busy:!1,message:{ok:!1,text:_.t(`aiu_instanceNotRunning`)}})}}async newLink(){let e=this.props.oContext;this.setState({busy:!0,message:null});try{await e.socket.sendTo(`${e.adapterName}.${e.instance}`,`claudeAuthStart`,{account:S}),this.setState({busy:!1})}catch{this.setState({busy:!1,message:{ok:!1,text:_.t(`aiu_instanceNotRunning`)}})}}renderThreshold(e,t){return u(d,{size:`small`,type:`number`,label:_.t(`aiu_warnAt`),defaultValue:t.warnThreshold||80,onBlur:t=>this.setThreshold(e,t.target.value),slotProps:{htmlInput:{min:10,max:100,style:{width:60}},inputLabel:{shrink:!0}},sx:{ml:`auto`}},`${e}-threshold`)}renderClaudeRow(){let e=this.claudeEnabled(),n=this.accounts().find(e=>e.provider===`claude-sub`);return a(b,{children:[a(b,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,borderBottom:1,borderColor:`divider`},children:[u(o,{sx:{width:28,height:28,bgcolor:`transparent`},children:u(l,{fontSize:`small`,color:`primary`})}),a(b,{sx:{minWidth:160},children:[u(m,{children:_.t(`aiu_claudeTitle`)}),u(m,{variant:`caption`,sx:{opacity:.7},children:_.t(`aiu_claudeCaption`)})]}),e&&n?this.renderThreshold(``,n):null,u(t,{checked:e,onChange:e=>this.toggleClaude(e.target.checked),sx:{ml:e?0:`auto`}})]}),e?u(b,{sx:{pl:6,py:1.5,borderBottom:1,borderColor:`divider`},children:this.renderClaudeAuth()}):null]},`claude-sub`)}renderClaudeAuth(){return this.state.claudeSignedIn?a(b,{sx:{display:`flex`,alignItems:`center`,gap:1,flexWrap:`wrap`},children:[u(v,{color:`success`}),u(m,{sx:{color:`success.main`},children:_.t(`aiu_signedIn`)}),u(g,{size:`small`,startIcon:u(r,{}),disabled:this.state.busy,onClick:()=>void this.newLink(),children:_.t(`aiu_signInAgain`)})]}):this.state.claudeUrl?a(b,{sx:{display:`flex`,flexDirection:`column`,gap:1.5},children:[u(m,{variant:`body2`,children:_.t(`aiu_step1`)}),a(b,{sx:{display:`flex`,gap:1,flexWrap:`wrap`},children:[u(g,{variant:`contained`,startIcon:u(n,{}),href:this.state.claudeUrl,target:`_blank`,rel:`noopener noreferrer`,children:_.t(`aiu_openSignIn`)}),u(g,{variant:`outlined`,startIcon:u(s,{}),onClick:()=>{var e;(e=navigator.clipboard)==null||e.writeText(this.state.claudeUrl)},children:_.t(`aiu_copyLink`)})]}),u(m,{variant:`body2`,children:_.t(`aiu_step2`)}),a(b,{sx:{display:`flex`,gap:1,alignItems:`center`,flexWrap:`wrap`},children:[u(d,{size:`small`,label:_.t(`aiu_codeLabel`),value:this.state.code,onChange:e=>this.setState({code:e.target.value}),sx:{minWidth:320}}),u(g,{variant:`contained`,disabled:!this.state.code.trim()||this.state.busy||!this.props.alive,onClick:()=>void this.redeemCode(),children:this.state.busy?u(y,{size:20}):_.t(`aiu_redeem`)})]}),this.props.alive?null:u(c,{severity:`warning`,children:_.t(`aiu_instanceNotRunning`)}),this.state.message?u(c,{severity:this.state.message.ok?`success`:`error`,children:this.state.message.text}):null]}):u(c,{severity:`info`,children:this.props.changed?_.t(`aiu_saveFirst`):_.t(`aiu_waitingForLink`)})}renderCredentialRow(e){let n=this.accounts().find(t=>t.credentialId===e.id),r=e.guess===`unsupported`,s=e.guess===null&&!n,c=(n==null?void 0:n.provider)||e.guess!==`unsupported`&&e.guess||this.state.providerChoice[e.id]||``;return a(b,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,borderBottom:1,borderColor:`divider`},children:[u(o,{src:e.icon,sx:{width:28,height:28,bgcolor:`transparent`},children:u(l,{fontSize:`small`})}),a(b,{sx:{minWidth:160},children:[u(m,{children:e.name}),u(m,{variant:`caption`,sx:{opacity:.7},children:r?_.t(`aiu_unsupported`):C[c]||``})]}),s?u(d,{select:!0,size:`small`,label:_.t(`aiu_provider`),value:this.state.providerChoice[e.id]||``,onChange:t=>this.setState({providerChoice:{...this.state.providerChoice,[e.id]:t.target.value}}),sx:{minWidth:160},children:Object.entries(C).map(([e,t])=>u(i,{value:e,children:t},e))}):null,n?this.renderThreshold(e.id,n):null,u(t,{checked:!!n,disabled:r||s&&!this.state.providerChoice[e.id],onChange:t=>this.toggleCredential(e,t.target.checked),sx:{ml:n?0:`auto`}})]},e.id)}renderItem(){let e=this.state.credentials.map(e=>({name:e.name,element:this.renderCredentialRow(e)}));return e.push({name:_.t(`aiu_claudeTitle`),element:this.renderClaudeRow()}),e.sort((e,t)=>e.name.localeCompare(t.name)),u(b,{"data-testid":`aiu-config`,sx:{maxWidth:720},children:u(p,{variant:`outlined`,children:a(x,{children:[u(m,{variant:`h6`,sx:{mb:.5},children:_.t(`aiu_storedTitle`)}),u(m,{variant:`body2`,sx:{opacity:.8,mb:1},children:_.t(`aiu_storedHint`)}),this.state.credentialsLoaded?e.map(e=>e.element):u(y,{size:24}),this.state.credentialsLoaded&&this.state.credentials.length===0?u(c,{severity:`info`,sx:{mt:1},children:_.t(`aiu_noCredentials`)}):null]})})})}};export{T as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./vite-preload-helper-B7qeedMF.js";var t={react:async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHNIjSR.js`).then(e=>(e.yo(),e.vo)),[],import.meta.url),"react/jsx-runtime":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHNIjSR.js`).then(e=>e.Ua),[],import.meta.url),"react-dom":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHNIjSR.js`).then(e=>(e.Xa(),e.Ya)),[],import.meta.url),"react-dom/client":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-C8-GjKo4.js`).then(e=>e.n),[],import.meta.url),"@mui/material":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHNIjSR.js`).then(e=>e.Wi),[],import.meta.url),"@mui/icons-material":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHNIjSR.js`).then(e=>e.wr),[],import.meta.url),"@iobroker/gui-components":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__prebuild___mf_0_iobroker_mf_1_gui_mf_2_components__prebuild__-CQxWwR2r.js`),[],import.meta.url),"@iobroker/json-config":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__AiUsageComponentSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-qu1s07FY.js`).then(e=>e.n),[],import.meta.url)},n={react:{name:`react`,version:`19.2.8`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!0,async get(){n.react.loaded=!0;let{react:e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"react/jsx-runtime":{name:`react/jsx-runtime`,version:`19.2.8`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!0,async get(){n[`react/jsx-runtime`].loaded=!0;let{"react/jsx-runtime":e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"react-dom":{name:`react-dom`,version:`19.2.8`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!0,async get(){n[`react-dom`].loaded=!0;let{"react-dom":e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"react-dom/client":{name:`react-dom/client`,version:`19.2.8`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!0,async get(){n[`react-dom/client`].loaded=!0;let{"react-dom/client":e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@mui/material":{name:`@mui/material`,version:`9.3.1`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!0,async get(){n[`@mui/material`].loaded=!0;let{"@mui/material":e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@mui/icons-material":{name:`@mui/icons-material`,version:`9.3.1`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!0,async get(){n[`@mui/icons-material`].loaded=!0;let{"@mui/icons-material":e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@iobroker/gui-components":{name:`@iobroker/gui-components`,version:`10.1.0`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!1,async get(){n[`@iobroker/gui-components`].loaded=!0;let{"@iobroker/gui-components":e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@iobroker/json-config":{name:`@iobroker/json-config`,version:`9.0.22`,scope:[`default`],loaded:!1,eager:!1,from:`AiUsageComponentSet`,canLiveRebind:!0,async get(){n[`@iobroker/json-config`].loaded=!0;let{"@iobroker/json-config":e}=t,r={...await e()};return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}}},r=[];export{r as usedRemotes,n as usedShared};
|