@runfusion/fusion 0.32.0 → 0.33.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/dist/bin.js +23464 -10700
- package/dist/client/.vite/manifest.json +61 -61
- package/dist/client/assets/{AgentDetailView-CnFf_eBZ.js → AgentDetailView-BACu9GYE.js} +3 -3
- package/dist/client/assets/{AgentPermissionPolicyEditor-Cmkt9Z01.js → AgentPermissionPolicyEditor-tNNlcCDk.js} +2 -2
- package/dist/client/assets/AgentsView-CPpHwjn3.js +29 -0
- package/dist/client/assets/ChatView-CCAUA7HB.js +6 -0
- package/dist/client/assets/DevServerView-BlxSS8Uu.js +1 -0
- package/dist/client/assets/{DirectoryPicker-DctpCNrd.js → DirectoryPicker-ioTzF36r.js} +1 -1
- package/dist/client/assets/{DocumentsView-DORp5JjC.js → DocumentsView-CsDb8dPw.js} +1 -1
- package/dist/client/assets/{EvalsView-CYVJ1pbc.js → EvalsView-I0GhxVhm.js} +1 -1
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-BULVNAiq.js → ExperimentalAgentOnboardingModal-Cr6g_jok.js} +2 -2
- package/dist/client/assets/{GoalsView-bmpZKOI_.js → GoalsView-DXJxe6D4.js} +1 -1
- package/dist/client/assets/{InsightsView-mmtem0RU.js → InsightsView-BaIhzpvX.js} +1 -1
- package/dist/client/assets/{MemoryView-HVpO1fCH.js → MemoryView-DlmcI0ca.js} +2 -2
- package/dist/client/assets/NodesView-vc4T0uCy.js +14 -0
- package/dist/client/assets/{PiExtensionsManager-Cyfas2VT.js → PiExtensionsManager-C0ljxGbt.js} +2 -2
- package/dist/client/assets/{PluginManager-C7QDE3Lk.js → PluginManager-D27abRF-.js} +1 -1
- package/dist/client/assets/ResearchView-BSpDz8YN.js +1 -0
- package/dist/client/assets/SecretsView-BmCemEu8.js +1 -0
- package/dist/client/assets/{SecretsView-BFhVwJu6.css → SecretsView-D5bHZ-wM.css} +1 -1
- package/dist/client/assets/SettingsModal-0gevFhXV.css +1 -0
- package/dist/client/assets/{SettingsModal-YCJM5is3.js → SettingsModal-DvmwpEUE.js} +1 -1
- package/dist/client/assets/SettingsModal-m3KMs_uS.js +31 -0
- package/dist/client/assets/{SetupWizardModal-BT-mj3VD.js → SetupWizardModal-CDfZpkB7.js} +1 -1
- package/dist/client/assets/{SkillsView-Db7dYpqd.js → SkillsView-BCpa_vud.js} +1 -1
- package/dist/client/assets/{StashRecoveryView-CSYYcWux.js → StashRecoveryView-BYLja93K.js} +1 -1
- package/dist/client/assets/{TodoView-zqCqfy26.js → TodoView-lbnG-8cZ.js} +2 -2
- package/dist/client/assets/{dashboard-view-PpcsMDvN.js → dashboard-view-CY6MGQbI.js} +1 -1
- package/dist/client/assets/{folder-open-mxsFQlAX.js → folder-open-CZghG0dv.js} +1 -1
- package/dist/client/assets/index-lDPXOH7J.css +1 -0
- package/dist/client/assets/index-tJzhtiGM.js +742 -0
- package/dist/client/assets/{upload-j7JjaJzG.js → upload-L7aDk8Xn.js} +1 -1
- package/dist/client/assets/{users-DZ_0WcB6.js → users-DoWKt94F.js} +1 -1
- package/dist/client/index.html +102 -3
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/extension.js +18491 -6644
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +1 -1
- package/skill/fusion/references/extension-tools.md +2 -1
- package/skill/fusion/references/fusion-capabilities.md +1 -1
- package/dist/client/assets/AgentsView-LkVv9hph.js +0 -34
- package/dist/client/assets/ChatView-DYjECCRG.js +0 -1
- package/dist/client/assets/DevServerView-D7legPr1.js +0 -1
- package/dist/client/assets/NodesView-CM0eoCP8.js +0 -14
- package/dist/client/assets/ResearchView-Bn2WxwnQ.js +0 -1
- package/dist/client/assets/SecretsView-DgrrgzFc.js +0 -1
- package/dist/client/assets/SettingsModal-BCZrCLl3.js +0 -31
- package/dist/client/assets/SettingsModal-BZBV2kLr.css +0 -1
- package/dist/client/assets/index-Ba-F8c1g.js +0 -732
- package/dist/client/assets/index-D4HhaIOp.css +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,j as e}from"./vendor-react-K0fH_qHe.js";import{R as B,J as ce,ad as I,ae as J,bw as oe,bx as ie,b1 as de,Y as pe}from"./index-Ba-F8c1g.js";import"./vendor-xterm-DzcZoU0P.js";import"./vendor-codemirror-jBKmHyH0.js";const he="__sync_passphrase__",E={key:"",value:"",description:"",scope:"project",accessPolicy:"prompt",envExportable:!1,envExportKey:""},ve=({addToast:c})=>{const[w,Y]=l.useState([]),[k,P]=l.useState(!0),[R,z]=l.useState(null),[K,x]=l.useState(null),[o,M]=l.useState(null),[q,h]=l.useState(!1),[H,j]=l.useState(null),[n,r]=l.useState(E),[T,b]=l.useState(!1),[_,f]=l.useState({}),[G,$]=l.useState(null),[i,U]=l.useState(!1),[Q,A]=l.useState(!1),[y,O]=l.useState(""),[N,D]=l.useState(""),[W,V]=l.useState(!1),g=l.useRef(new Map),S=l.useRef(new Map),t=l.useCallback(async(s,a)=>{const d=await fetch(s,{...a,headers:{"Content-Type":"application/json",...a?.headers??{}}});if(!d.ok){const p=await d.json().catch(()=>({error:"Request failed"}));throw new Error(String(p?.error??"Request failed"))}if(d.status!==204)return d.json()},[]),u=l.useCallback(async()=>{P(!0),z(null);try{const s=await t("/api/secrets");Y(s.secrets)}catch(s){z(s instanceof Error?s.message:String(s))}finally{P(!1)}},[t]),v=l.useCallback(async()=>{try{const s=await t("/api/secrets/sync-passphrase");U(!!s.configured)}catch(s){c?.(`Failed to load sync passphrase status: ${s instanceof Error?s.message:String(s)}`,"error")}},[c,t]);l.useEffect(()=>(u(),v(),()=>{g.current.forEach(s=>clearTimeout(s)),S.current.forEach(s=>clearTimeout(s))}),[u,v]);const C=()=>{A(!1),O(""),D("")},X=async s=>{await t("/api/secrets/sync-passphrase",{method:"PUT",body:JSON.stringify({passphrase:s})})},Z=async()=>{V(!0);try{await X(y),c?.(i?"Sync passphrase rotated":"Sync passphrase set","success"),C(),await v()}catch(s){c?.(`Failed to save sync passphrase: ${s instanceof Error?s.message:String(s)}`,"error")}finally{V(!1)}},ee=async()=>{if(window.confirm("Clear the cross-node sync passphrase? Existing sync pairs will stop working until you set a new passphrase."))try{await t("/api/secrets/sync-passphrase",{method:"DELETE"}),c?.("Sync passphrase cleared","success"),await v()}catch(a){c?.(`Failed to clear sync passphrase: ${a instanceof Error?a.message:String(a)}`,"error")}},se=()=>{M(null),r(E),h(!0),b(!1),x(null)},ae=s=>{M(s),r({key:s.key,value:"",description:s.description??"",scope:s.scope,accessPolicy:s.accessPolicy,envExportable:s.envExportable,envExportKey:s.envExportKey??""}),h(!0),b(!1),x(null)},ne=async()=>{x(null);try{if(o){const s={key:n.key,description:n.description||null,accessPolicy:n.accessPolicy,envExportable:n.envExportable,envExportKey:n.envExportable&&n.envExportKey||null};n.value&&(s.value=n.value),await t(`/api/secrets/${o.scope}/${o.id}`,{method:"PATCH",body:JSON.stringify(s)})}else await t("/api/secrets",{method:"POST",body:JSON.stringify({scope:n.scope,key:n.key,value:n.value,description:n.description||null,accessPolicy:n.accessPolicy,envExportable:n.envExportable,envExportKey:n.envExportable&&n.envExportKey||null})});h(!1),r(E),await u()}catch(s){x(s instanceof Error?s.message:String(s))}},le=async s=>{const a=await t(`/api/secrets/${s.scope}/${s.id}/reveal`,{method:"POST"});f(m=>({...m,[s.id]:a.value})),c?.("Revealed","success");const d=setTimeout(()=>{f(m=>({...m,[s.id]:null}))},3e4),p=g.current.get(s.id);p&&clearTimeout(p),g.current.set(s.id,d)},re=async s=>{const a=_[s.id];if(!a)return;await navigator.clipboard.writeText(a),$(s.id),c?.("Copied","success");const d=setTimeout(()=>{$(null),f(m=>({...m,[s.id]:null}))},1500),p=S.current.get(s.id);p&&clearTimeout(p),S.current.set(s.id,d)},te=async s=>{await t(`/api/secrets/${s.scope}/${s.id}`,{method:"DELETE"}),j(null),await u()},F=l.useMemo(()=>[...w].filter(s=>!(s.scope==="global"&&s.key===he)).sort((s,a)=>s.key.localeCompare(a.key)),[w]),L=y.length>0&&y===N;return e.jsxs("section",{className:"secrets-view",children:[e.jsxs("div",{className:"secrets-header",children:[e.jsx("h2",{children:"Secrets"}),e.jsxs("div",{className:"secrets-header-actions",children:[e.jsxs("button",{className:"btn btn-sm",onClick:()=>void u(),children:[e.jsx(B,{size:14})," Refresh"]}),e.jsxs("button",{className:"btn btn-primary btn-sm",onClick:se,children:[e.jsx(ce,{size:14})," Add Secret"]})]})]}),e.jsxs("article",{className:"card secrets-sync-card",children:[e.jsxs("div",{className:"secrets-sync-header",children:[e.jsxs("div",{children:[e.jsx("h3",{children:"Cross-Node Sync Passphrase"}),e.jsxs("p",{className:"secrets-sync-status",children:[e.jsx("span",{className:`status-dot ${i?"status-dot--online":"status-dot--pending"}`,"aria-hidden":"true"})," ",i?"Configured":"Not configured"]})]}),e.jsxs("div",{className:"secrets-sync-actions",children:[e.jsx("button",{className:"btn",onClick:()=>A(!0),children:i?"Rotate":"Set passphrase"}),i?e.jsx("button",{className:"btn btn-danger",onClick:()=>void ee(),children:"Clear"}):null]})]}),e.jsxs("p",{className:"secrets-sync-copy",children:["Shared passphrase used to wrap cross-node secret bundles. Both nodes in a sync pair must share the same value. Stored locally only; never transmitted. "," ",e.jsx("a",{href:"/docs/secrets.md#cross-node-sync",target:"_blank",rel:"noreferrer",children:"Learn more"})]})]}),R?e.jsx("div",{className:"form-error",children:R}):null,k?e.jsxs("div",{className:"secrets-loading",children:[e.jsx(B,{size:14,className:"spin"})," Loading…"]}):null,!k&&F.length===0?e.jsx("div",{className:"secrets-empty",children:"No secrets found."}):null,e.jsx("div",{className:"secrets-list",children:F.map(s=>{const a=_[s.id];return e.jsxs("article",{className:"card secrets-row",children:[e.jsxs("div",{className:"secrets-row-main",children:[e.jsx("div",{className:"secrets-row-key",children:s.key}),e.jsxs("div",{className:"secrets-row-meta",children:[e.jsx("span",{className:"secrets-chip",children:s.scope}),e.jsx("span",{className:"secrets-chip",children:s.accessPolicy}),s.envExportable?e.jsx("span",{className:"secrets-chip",children:"env_exportable"}):null]}),a?e.jsx("pre",{className:"secrets-revealed",children:a}):null]}),e.jsxs("div",{className:"secrets-row-side",children:[e.jsx("span",{className:"secrets-row-read",children:s.lastReadAt?new Date(s.lastReadAt).toLocaleString():"Never read"}),e.jsxs("div",{className:"secrets-row-actions",children:[e.jsx("button",{className:"btn btn-icon",onClick:()=>void le(s),"aria-label":"Reveal",children:a?e.jsx(I,{size:14}):e.jsx(J,{size:14})}),e.jsx("button",{className:"btn btn-icon",onClick:()=>void re(s),"aria-label":"Copy",disabled:!a,children:G===s.id?e.jsx(oe,{size:14}):e.jsx(ie,{size:14})}),e.jsx("button",{className:"btn btn-icon",onClick:()=>ae(s),"aria-label":"Edit",children:e.jsx(de,{size:14})}),e.jsx("button",{className:"btn btn-icon btn-danger",onClick:()=>j(s.id),"aria-label":"Delete",children:e.jsx(pe,{size:14})})]}),H===s.id?e.jsxs("div",{className:"secrets-confirm",children:[e.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void te(s),children:"Confirm"}),e.jsx("button",{className:"btn btn-sm",onClick:()=>j(null),children:"Cancel"})]}):null]})]},s.id)})}),Q?e.jsx("div",{className:"modal-overlay open",role:"presentation",children:e.jsxs("div",{className:"modal",role:"dialog","aria-modal":"true","aria-label":i?"Rotate sync passphrase":"Set sync passphrase",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("h3",{children:i?"Rotate sync passphrase":"Set sync passphrase"}),e.jsx("button",{className:"modal-close",onClick:C,"aria-label":"Close",children:"×"})]}),e.jsxs("div",{className:"secrets-modal-body",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Passphrase"}),e.jsx("input",{"aria-label":"Passphrase",className:"input",type:"password",autoComplete:"new-password",value:y,onChange:s=>O(s.target.value)})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Confirm passphrase"}),e.jsx("input",{"aria-label":"Confirm passphrase",className:"input",type:"password",autoComplete:"new-password",value:N,onChange:s=>D(s.target.value)})]}),!L&&N.length>0?e.jsx("div",{className:"form-error",children:"Passphrases must match."}):null]}),e.jsx("div",{className:"modal-actions",children:e.jsxs("div",{className:"modal-actions-right",children:[e.jsx("button",{className:"btn",onClick:C,children:"Cancel"}),e.jsx("button",{className:"btn btn-primary",onClick:()=>void Z(),disabled:!L||W,children:i?"Rotate":"Set passphrase"})]})})]})}):null,q?e.jsx("div",{className:"modal-overlay open",role:"presentation",children:e.jsxs("div",{className:"modal",role:"dialog","aria-modal":"true","aria-label":o?"Edit secret":"Add secret",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("h3",{children:o?"Edit secret":"Add secret"}),e.jsx("button",{className:"modal-close",onClick:()=>h(!1),"aria-label":"Close",children:"×"})]}),e.jsxs("div",{className:"secrets-modal-body",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Key"}),e.jsx("input",{className:"input",value:n.key,onChange:s=>r(a=>({...a,key:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Value"}),e.jsxs("div",{className:"secrets-value-row",children:[e.jsx("input",{className:"input",type:T?"text":"password",autoComplete:"off",spellCheck:!1,value:n.value,onChange:s=>r(a=>({...a,value:s.target.value}))}),e.jsx("button",{className:"btn btn-icon",onClick:()=>b(s=>!s),children:T?e.jsx(I,{size:14}):e.jsx(J,{size:14})})]})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{className:"input",value:n.description,onChange:s=>r(a=>({...a,description:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Scope"}),e.jsxs("div",{className:"secrets-radio-row",children:[e.jsxs("label",{children:[e.jsx("input",{type:"radio",checked:n.scope==="project",onChange:()=>r(s=>({...s,scope:"project"})),disabled:!!o})," Project"]}),e.jsxs("label",{children:[e.jsx("input",{type:"radio",checked:n.scope==="global",onChange:()=>r(s=>({...s,scope:"global"})),disabled:!!o})," Global"]})]})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Access policy"}),e.jsxs("select",{className:"select",value:n.accessPolicy,onChange:s=>r(a=>({...a,accessPolicy:s.target.value})),children:[e.jsx("option",{value:"auto",children:"auto"}),e.jsx("option",{value:"prompt",children:"prompt"}),e.jsx("option",{value:"deny",children:"deny"})]})]}),e.jsx("div",{className:"form-group",children:e.jsxs("label",{className:"checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:n.envExportable,onChange:s=>r(a=>({...a,envExportable:s.target.checked}))})," Export to env"]})}),n.envExportable?e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Env key"}),e.jsx("input",{className:"input",value:n.envExportKey,onChange:s=>r(a=>({...a,envExportKey:s.target.value}))})]}):null,K?e.jsx("div",{className:"form-error",children:K}):null]}),e.jsx("div",{className:"modal-actions",children:e.jsxs("div",{className:"modal-actions-right",children:[e.jsx("button",{className:"btn",onClick:()=>h(!1),children:"Cancel"}),e.jsx("button",{className:"btn btn-primary",onClick:()=>void ne(),children:o?"Save":"Create"})]})})]})}):null]})};export{ve as SecretsView};
|