opalacoder 0.1.20__tar.gz → 0.1.22__tar.gz
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.
- {opalacoder-0.1.20 → opalacoder-0.1.22}/PKG-INFO +1 -1
- opalacoder-0.1.20/opalacoder/gui/assets/index-BLhtmpm0.js → opalacoder-0.1.22/opalacoder/gui/assets/index-BCdp1z3q.js +1 -1
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/gui/index.html +1 -1
- {opalacoder-0.1.20 → opalacoder-0.1.22}/pyproject.toml +1 -1
- {opalacoder-0.1.20 → opalacoder-0.1.22}/.claude/rules/RULES.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/.claude/settings.json +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/.github/workflows/publish.yml +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/.gitignore +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/AGENTS.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/CLAUDE.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/GEMINI.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/README.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/agents.yaml +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/config.yaml +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/debug/scratch_tail.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/guide/analysis_results.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/guide/figs/logotipo.png +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/guide/paper_memplan.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/guide/skills-plugin-system.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/01-arquitetura.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/02-memgpt-orquestrador.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/03-skill-implement-feature.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/04-memoria.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/05-vcs-sombra.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/06-skills-e-plugins.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/07-configuracao.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/08-ide.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/09-ide-projectcreationinterface.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/README.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/docs/specs/backlog_register.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/gui_src/index.html +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/gui_src/package-lock.json +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/gui_src/package.json +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/gui_src/src/App.jsx +6 -6
- {opalacoder-0.1.20 → opalacoder-0.1.22}/gui_src/src/index.css +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/gui_src/src/main.jsx +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/gui_src/vite.config.js +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/main.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/__init__.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/agent_stdin.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/agents.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/api_keys.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/archival.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/cli.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/cli_commands.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/code_index.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/config.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/copy_gui.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/embeddings.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/gui/assets/index-fY3LKaOS.css +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/i18n.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/ide_server.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/memgpt_runtime.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/orchestrator.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/planner.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/plugins/__init__.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/plugins/html_css_js_tools.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/project.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/session.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/skills.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/structured.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/terminal.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/terminal_manager.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/tools.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/vcs.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/vector_index.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/workflow_orchestrator.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/opalacoder/workflow_tools.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/pytest.ini +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/requirements.txt +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/chat-orchestrator/SKILL.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/command-line/SKILL.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/command-line/scripts/command_executor.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/skills_store/html-css-js/SKILL.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/skills_store/html-css-js/scripts/check_contracts.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/skills_store/implement-feature/SKILL.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/skills_store/implement-feature/scripts/run_workflow.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/view-editor/SKILL.md +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/skills/view-editor/scripts/run_view_editor.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_agent_config.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_agent_stdin.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_code_index_integration.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_command_line_skill.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_complexity_evaluator.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_context_guard.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_file_delete.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_i18n_coverage.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_implement_feature_script.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_memgpt_runtime.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_model_commands.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_planner_oracle_live.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_planner_output.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_project_store.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_refinement_loop.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_search_bugs.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_skills_directory_loader.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_unhashable_dict_bug.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_verification_strategies.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_view_editor_skill.py +0 -0
- {opalacoder-0.1.20 → opalacoder-0.1.22}/tests/test_workflow_pipeline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opalacoder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.22
|
|
4
4
|
Summary: Autonomous coding agent with interactive planning and modular execution
|
|
5
5
|
Project-URL: Homepage, https://github.com/gilzamir/OpalaCoder
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/gilzamir/OpalaCoder/issues
|
|
@@ -209,7 +209,7 @@ WARNING: This link could potentially be dangerous`)){let r=window.open();if(r){t
|
|
|
209
209
|
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
210
210
|
* http://bellard.org/jslinux/
|
|
211
211
|
* Copyright (c) 2011 Fabrice Bellard
|
|
212
|
-
*/var Hx=2,Ux=1,Kx=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){var u;if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:((u=this._terminal.options.overviewRuler)==null?void 0:u.width)||14,r=window.getComputedStyle(this._terminal.element.parentElement),i=parseInt(r.getPropertyValue("height")),s=Math.max(0,parseInt(r.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),o={top:parseInt(n.getPropertyValue("padding-top")),bottom:parseInt(n.getPropertyValue("padding-bottom")),right:parseInt(n.getPropertyValue("padding-right")),left:parseInt(n.getPropertyValue("padding-left"))},l=o.top+o.bottom,c=o.right+o.left,a=i-l,d=s-c-t;return{cols:Math.max(Hx,Math.floor(d/e.css.cell.width)),rows:Math.max(Ux,Math.floor(a/e.css.cell.height))}}};const lo=(e,t)=>{try{const r=localStorage.getItem(e);return r!==null?r:t}catch{return t}},ki=(e,t)=>{try{localStorage.setItem(e,t)}catch{}};function Vx(){var Lu,Tu,Nu,Bu,Ou,Au;const[e,t]=R.useState([]),[r,i]=R.useState(null),[s,n]=R.useState([]),[o,l]=R.useState(null),[c,a]=R.useState(""),[d,u]=R.useState([]),[f,v]=R.useState({}),[g,S]=R.useState(null),[T,m]=R.useState(!1),[_,y]=R.useState([]),[x,b]=R.useState(""),[M,B]=R.useState(!1),[$,G]=R.useState([]),[F,Q]=R.useState(!1),[z,L]=R.useState(!0),[j,E]=R.useState("explorer"),[N,V]=R.useState("output"),[C,I]=R.useState([]),[K,H]=R.useState([]),[Y,re]=R.useState(!1),[le,ue]=R.useState("")
|
|
212
|
+
*/var Hx=2,Ux=1,Kx=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){var u;if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:((u=this._terminal.options.overviewRuler)==null?void 0:u.width)||14,r=window.getComputedStyle(this._terminal.element.parentElement),i=parseInt(r.getPropertyValue("height")),s=Math.max(0,parseInt(r.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),o={top:parseInt(n.getPropertyValue("padding-top")),bottom:parseInt(n.getPropertyValue("padding-bottom")),right:parseInt(n.getPropertyValue("padding-right")),left:parseInt(n.getPropertyValue("padding-left"))},l=o.top+o.bottom,c=o.right+o.left,a=i-l,d=s-c-t;return{cols:Math.max(Hx,Math.floor(d/e.css.cell.width)),rows:Math.max(Ux,Math.floor(a/e.css.cell.height))}}};const lo=(e,t)=>{try{const r=localStorage.getItem(e);return r!==null?r:t}catch{return t}},ki=(e,t)=>{try{localStorage.setItem(e,t)}catch{}};function Vx(){var Lu,Tu,Nu,Bu,Ou,Au;const[e,t]=R.useState([]),[r,i]=R.useState(null),[s,n]=R.useState([]),[o,l]=R.useState(null),[c,a]=R.useState(""),[d,u]=R.useState([]),[f,v]=R.useState({}),[g,S]=R.useState(null),[T,m]=R.useState(!1),[_,y]=R.useState([]),[x,b]=R.useState(""),[M,B]=R.useState(!1),[$,G]=R.useState([]),[F,Q]=R.useState(!1),[z,L]=R.useState(!0),[j,E]=R.useState("explorer"),[N,V]=R.useState("output"),[C,I]=R.useState([]),[K,H]=R.useState([]),[Y,re]=R.useState(!1),[le,ue]=R.useState(""),[be,Ve]=R.useState(!1),[zt,Dt]=R.useState("preferences"),[Gt,Gr]=R.useState(()=>lo("theme","dark")),[$t,ie]=R.useState(()=>Number(lo("editorFontSize",13))),[wi,fg]=R.useState(()=>Number(lo("editorTabSize",4))),[nu,pg]=R.useState(()=>lo("editorWordWrap","on")),[ns,ou]=R.useState([]),[os,lu]=R.useState(""),[kl,au]=R.useState(!1),[El,cu]=R.useState(!1),[Cn,bn]=R.useState(""),[hu,Pl]=R.useState(""),[_g,kn]=R.useState(!1),ls=R.useRef(null),as=R.useRef(null),En=R.useRef(null),Pn=R.useRef(null),[uu,mg]=R.useState(260),[du,gg]=R.useState(320),[Dl,vg]=R.useState(240),[Ml,Rl]=R.useState(null),[Dn,fu]=R.useState(null),[ae,Qe]=R.useState(null);R.useEffect(()=>{ae||re(!1)},[ae]);const Ll=async()=>{if(r)try{const p=await fetch(`/api/opalacoder/problems?projectPath=${encodeURIComponent(r.project_path)}`);if(p.ok){const w=await p.json();I(w.problems||[])}}catch(p){console.error("Failed to fetch problems",p)}},Tl=(p,w)=>{p.preventDefault();const k=p.clientX,P=p.clientY,q=uu,oe=du,se=Dl,ve=Ft=>{if(w==="left"){const dt=Ft.clientX-k,xr=Math.max(150,Math.min(600,q+dt));mg(xr)}else if(w==="right"){const dt=Ft.clientX-k,xr=Math.max(200,Math.min(600,oe-dt));gg(xr)}else if(w==="bottom"){const dt=Ft.clientY-P,xr=Math.max(100,Math.min(600,se-dt));vg(xr)}},Ze=()=>{document.removeEventListener("mousemove",ve),document.removeEventListener("mouseup",Ze)};document.addEventListener("mousemove",ve),document.addEventListener("mouseup",Ze)},[Nl,Mn]=R.useState(!1),[Rn,pu]=R.useState(""),[Bl,_u]=R.useState(""),[mu,gu]=R.useState(""),[vu,yg]=R.useState("gemini/gemini-2.5-flash"),[yu,Sg]=R.useState("auto"),[Su,wu]=R.useState(""),[xu,Cu]=R.useState("http://localhost:11434/v1"),bu=R.useRef(null),ku=R.useRef(null),Ln=R.useRef(null),wg=(p,w)=>{Ln.current=p};R.useEffect(()=>{Nl||ue("")},[Nl]),R.useEffect(()=>{Tn(),(async()=>{try{const w=await fetch("/api/settings/check-dependencies");w.ok&&((await w.json()).installed||kn(!0))}catch(w){console.error("Failed to check optional dependencies",w)}})()},[]),R.useEffect(()=>{r?(cs(),Ll(),y([{role:"assistant",content:`Olá! Estou pronto para auxiliar no projeto **${r.project_name||r.name}**.`}])):(n([]),l(null),a(""),u([]),v({}),I([]))},[r]),R.useEffect(()=>{const p=k=>{k.preventDefault()};document.addEventListener("contextmenu",p);const w=()=>{Rl(null)};return document.addEventListener("click",w),()=>{document.removeEventListener("contextmenu",p),document.removeEventListener("click",w)}},[]),R.useEffect(()=>{var p;(p=bu.current)==null||p.scrollIntoView({behavior:"smooth"})},[_]),R.useEffect(()=>{var p;(p=ku.current)==null||p.scrollIntoView({behavior:"smooth"})},[$]),R.useEffect(()=>{const p=w=>{(w.ctrlKey||w.metaKey)&&w.key==="s"?(w.preventDefault(),Du()):(w.ctrlKey||w.metaKey)&&(w.key==="+"||w.key==="=")?(w.preventDefault(),ie(k=>{const P=Math.min(30,k+1);return ki("editorFontSize",P),P})):(w.ctrlKey||w.metaKey)&&w.key==="-"&&(w.preventDefault(),ie(k=>{const P=Math.max(10,k-1);return ki("editorFontSize",P),P}))};return window.addEventListener("keydown",p),()=>window.removeEventListener("keydown",p)},[o,c,r]),R.useEffect(()=>{if(!r){En.current&&(En.current.close(),En.current=null);return}if(!ls.current)return;const p=new Wx({cursorBlink:!0,fontSize:13,fontFamily:'Consolas, "Courier New", monospace',theme:{background:"#1e1e1e",foreground:"#cccccc"}}),w=new Kx;p.loadAddon(w),ls.current.innerHTML="",p.open(ls.current);try{w.fit()}catch{}as.current=p,Pn.current=w;const k=r.project_path,P=`/api/terminal/stream?projectPath=${encodeURIComponent(k)}`,q=new EventSource(P);En.current=q,q.onmessage=se=>{try{const ve=se.data,Ze=atob(ve),Ft=new Uint8Array(Ze.length);for(let dt=0;dt<Ze.length;dt++)Ft[dt]=Ze.charCodeAt(dt);p.write(Ft)}catch(ve){console.error("Error decoding terminal stream data",ve)}},q.onerror=se=>{console.error("Terminal event source error",se),p.write(`\r
|
|
213
213
|
\x1B[31m[OpalaCoder] Conexão com o terminal perdida. Reconectando...\x1B[0m\r
|
|
214
214
|
`)},p.onData(se=>{fetch("/api/terminal/input",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"input",text:se,projectPath:r.project_path})}).catch(ve=>console.error("Failed to send terminal input",ve))});const oe=new ResizeObserver(()=>{if(w)try{w.fit();const{cols:se,rows:ve}=p;fetch("/api/terminal/input",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resize",cols:se,rows:ve,projectPath:r.project_path})}).catch(Ze=>console.error("Failed to send terminal resize",Ze))}catch{}});return oe.observe(ls.current),()=>{oe.disconnect(),q&&q.close(),p.dispose(),as.current=null,Pn.current=null}},[r]),R.useEffect(()=>{ki("theme",Gt),Gt==="light"?document.body.classList.add("light-theme"):document.body.classList.remove("light-theme")},[Gt]),R.useEffect(()=>{N==="terminal"&&as.current&&Pn.current&&r&&setTimeout(()=>{try{Pn.current.fit();const{cols:p,rows:w}=as.current;fetch("/api/terminal/input",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resize",cols:p,rows:w,projectPath:r.project_path})}).catch(k=>console.error("Failed to send terminal resize",k)),as.current.focus()}catch{}},50)},[N,Dl,r]),R.useEffect(()=>{r?Nn():ou([])},[r]),R.useEffect(()=>{j==="git"&&r&&Nn()},[j,r]);const Tn=async()=>{try{const p=await fetch("/api/opalacoder/list-projects");if(p.ok){const w=await p.json();t(w.projects||[]),w.projects&&w.projects.length>0&&!r&&Pu(w.projects[0])}}catch(p){X("error",`Falha ao carregar projetos: ${p.message}`)}},Nn=async()=>{if(r)try{const p=await fetch(`/api/git/status?projectPath=${encodeURIComponent(r.project_path)}`);if(p.ok){const w=await p.json();ou(w.files||[])}}catch(p){console.error("Failed to fetch git status",p)}},xg=async p=>{if(p&&p.preventDefault(),!(!r||!os.trim()||kl)){au(!0),X("info",`Criando commit com a mensagem: "${os}"...`);try{const w=await fetch("/api/git/commit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:r.project_path,message:os})});if(w.ok)X("info","Commit criado com sucesso!"),lu(""),Nn();else{const k=await w.json();X("error",`Falha ao fazer commit: ${k.error||"Erro desconhecido"}`)}}catch(w){X("error",`Erro ao fazer commit: ${w.message}`)}finally{au(!1)}}},Eu=async()=>{if(!El){cu(!0),bn("Instalando..."),Pl(`Iniciando pip install...
|
|
215
215
|
`);try{const p=await fetch("/api/settings/install-dependencies",{method:"POST"});if(!p.ok)throw new Error("Falha ao iniciar instalação");const w=p.body.getReader(),k=new TextDecoder("utf-8");let P="";for(;;){const{value:q,done:oe}=await w.read();if(oe)break;P+=k.decode(q,{stream:!0});const se=P.split(`
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
11
|
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
12
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
+
<script type="module" crossorigin src="/assets/index-BCdp1z3q.js"></script>
|
|
13
13
|
<link rel="stylesheet" crossorigin href="/assets/index-fY3LKaOS.css">
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -71,12 +71,6 @@ export default function App() {
|
|
|
71
71
|
const [thinkingLogs, setThinkingLogs] = useState([]);
|
|
72
72
|
const [showAdvancedParams, setShowAdvancedParams] = useState(false);
|
|
73
73
|
const [newProjError, setNewProjError] = useState('');
|
|
74
|
-
|
|
75
|
-
useEffect(() => {
|
|
76
|
-
if (!showNewProjectModal) {
|
|
77
|
-
setNewProjError('');
|
|
78
|
-
}
|
|
79
|
-
}, [showNewProjectModal]);
|
|
80
74
|
|
|
81
75
|
// IDE Settings States
|
|
82
76
|
const [isSettingsOpen, setIsSettingsOpen] = useState(false);
|
|
@@ -190,6 +184,12 @@ export default function App() {
|
|
|
190
184
|
editorRef.current = editor;
|
|
191
185
|
};
|
|
192
186
|
|
|
187
|
+
useEffect(() => {
|
|
188
|
+
if (!showNewProjectModal) {
|
|
189
|
+
setNewProjError('');
|
|
190
|
+
}
|
|
191
|
+
}, [showNewProjectModal]);
|
|
192
|
+
|
|
193
193
|
// Initial load
|
|
194
194
|
useEffect(() => {
|
|
195
195
|
fetchProjects();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opalacoder-0.1.20 → opalacoder-0.1.22}/skills/skills_store/html-css-js/scripts/check_contracts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|