@researai/deepscientist 1.5.16 → 1.5.17
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 +66 -23
- package/bin/ds.js +550 -19
- package/docs/en/00_QUICK_START.md +65 -5
- package/docs/en/01_SETTINGS_REFERENCE.md +1 -1
- package/docs/en/09_DOCTOR.md +14 -3
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +12 -3
- package/docs/en/21_LOCAL_MODEL_BACKENDS_GUIDE.md +283 -0
- package/docs/en/91_DEVELOPMENT.md +237 -0
- package/docs/en/README.md +7 -3
- package/docs/zh/00_QUICK_START.md +54 -5
- package/docs/zh/01_SETTINGS_REFERENCE.md +1 -1
- package/docs/zh/09_DOCTOR.md +15 -4
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +12 -3
- package/docs/zh/21_LOCAL_MODEL_BACKENDS_GUIDE.md +281 -0
- package/docs/zh/README.md +7 -3
- package/install.sh +46 -4
- package/package.json +2 -1
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/bridges/connectors.py +8 -2
- package/src/deepscientist/codex_cli_compat.py +185 -72
- package/src/deepscientist/config/service.py +154 -6
- package/src/deepscientist/daemon/api/handlers.py +130 -25
- package/src/deepscientist/daemon/api/router.py +5 -0
- package/src/deepscientist/daemon/app.py +446 -22
- package/src/deepscientist/diagnostics/__init__.py +6 -0
- package/src/deepscientist/diagnostics/runner_failures.py +130 -0
- package/src/deepscientist/doctor.py +207 -3
- package/src/deepscientist/prompts/builder.py +22 -4
- package/src/deepscientist/quest/service.py +413 -13
- package/src/deepscientist/runners/codex.py +59 -14
- package/src/deepscientist/shared.py +19 -0
- package/src/prompts/contracts/shared_interaction.md +3 -2
- package/src/prompts/system.md +13 -0
- package/src/prompts/system_copilot.md +13 -0
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-COFACy7V.js → AiManusChatView-Bv-Z8YpU.js} +44 -44
- package/src/ui/dist/assets/{AnalysisPlugin-DnSm0GZn.js → AnalysisPlugin-BCKAfjba.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-CvwCmDQ5.js → CliPlugin-BCKcpc35.js} +4 -4
- package/src/ui/dist/assets/{CodeEditorPlugin-cOqSa0xq.js → CodeEditorPlugin-DbOfSJ8K.js} +1 -1
- package/src/ui/dist/assets/{CodeViewerPlugin-itb0tltR.js → CodeViewerPlugin-CbaFRrUU.js} +3 -3
- package/src/ui/dist/assets/{DocViewerPlugin-DqKkiCI6.js → DocViewerPlugin-DAjLVeQD.js} +3 -3
- package/src/ui/dist/assets/{GitCommitViewerPlugin-DVgNHBCS.js → GitCommitViewerPlugin-CIUqbUDO.js} +1 -1
- package/src/ui/dist/assets/{GitDiffViewerPlugin-DxL2ezFG.js → GitDiffViewerPlugin-CQACjoAA.js} +1 -1
- package/src/ui/dist/assets/{GitSnapshotViewer-B_RQm1YZ.js → GitSnapshotViewer-0r4nLPke.js} +1 -1
- package/src/ui/dist/assets/{ImageViewerPlugin-tHqlXY3n.js → ImageViewerPlugin-nBOmI2v_.js} +3 -3
- package/src/ui/dist/assets/{LabCopilotPanel-ClMbq5Yu.js → LabCopilotPanel-BHxOxF4z.js} +1 -1
- package/src/ui/dist/assets/{LabPlugin-L_SuE8ow.js → LabPlugin-BKoZGs95.js} +1 -1
- package/src/ui/dist/assets/{LatexPlugin-B495DTXC.js → LatexPlugin-ZwtV8pIp.js} +1 -1
- package/src/ui/dist/assets/{MarkdownViewerPlugin-DG28-61B.js → MarkdownViewerPlugin-DKqVfKyW.js} +3 -3
- package/src/ui/dist/assets/{MarketplacePlugin-BiOGT-Kj.js → MarketplacePlugin-BwxStZ9D.js} +1 -1
- package/src/ui/dist/assets/{NotebookEditor-C-4Kt1p9.js → NotebookEditor-BEQhaQbt.js} +1 -1
- package/src/ui/dist/assets/{NotebookEditor-CVsj8h_T.js → NotebookEditor-DB9N_T9q.js} +23 -23
- package/src/ui/dist/assets/{PdfLoader-CASDQmxJ.js → PdfLoader-eWBONbQP.js} +1 -1
- package/src/ui/dist/assets/{PdfMarkdownPlugin-BFhwoKsY.js → PdfMarkdownPlugin-D22YOZL3.js} +1 -1
- package/src/ui/dist/assets/{PdfViewerPlugin-DcOzU9vd.js → PdfViewerPlugin-c-RK9DLM.js} +3 -3
- package/src/ui/dist/assets/{SearchPlugin-CHj7M58O.js → SearchPlugin-CxF9ytAx.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-CB4DYfWO.js → TextViewerPlugin-C5xqeeUH.js} +2 -2
- package/src/ui/dist/assets/{VNCViewer-CjlbyCB3.js → VNCViewer-BoLGLnHz.js} +1 -1
- package/src/ui/dist/assets/{bot-CFkZY-JP.js → bot-DREQOxzP.js} +1 -1
- package/src/ui/dist/assets/{chevron-up-Dq5ofbht.js → chevron-up-C9Qpx4DE.js} +1 -1
- package/src/ui/dist/assets/{code-DLC6G24T.js → code-WlFHE7z_.js} +1 -1
- package/src/ui/dist/assets/{file-content-Dv4LoZec.js → file-content-BZMz3RYp.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-Denq-lC3.js → file-diff-panel-CQhw0jS2.js} +1 -1
- package/src/ui/dist/assets/{file-socket-Cu4Qln7Y.js → file-socket-CfQPKQKj.js} +1 -1
- package/src/ui/dist/assets/{git-commit-horizontal-BUh6G52n.js → git-commit-horizontal-DxZ8DCZh.js} +1 -1
- package/src/ui/dist/assets/{image-B9HUUddG.js → image-Bgl4VIyx.js} +1 -1
- package/src/ui/dist/assets/{index-Cgla8biy.css → index-BpV6lusQ.css} +1 -1
- package/src/ui/dist/assets/{index-Gbl53BNp.js → index-CBNVuWcP.js} +363 -363
- package/src/ui/dist/assets/{index-wQ7RIIRd.js → index-CwNu1aH4.js} +1 -1
- package/src/ui/dist/assets/{index-B2B1sg-M.js → index-DrUnlf6K.js} +1 -1
- package/src/ui/dist/assets/{index-DRyx7vAc.js → index-NW-h8VzN.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-ZtnHFCAi.js → pdf-effect-queue-J8OnM0jE.js} +1 -1
- package/src/ui/dist/assets/{popover-DL6h35vr.js → popover-CLc0pPP8.js} +1 -1
- package/src/ui/dist/assets/{project-sync-CsX08Qno.js → project-sync-C9IdzdZW.js} +1 -1
- package/src/ui/dist/assets/{select-DvmXt1yY.js → select-Cs2PmzwL.js} +1 -1
- package/src/ui/dist/assets/{sigma-7jpXazui.js → sigma-ClKcHAXm.js} +1 -1
- package/src/ui/dist/assets/{trash-xA7kFt8i.js → trash-DwpbFr3w.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-DsMwDjOp.js → useCliAccess-NQ8m0Let.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-CwMn-iqb.js → wrap-text-BC-Hltpd.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-R-GWEhzS.js → zoom-out-E_gaeAxL.js} +1 -1
- package/src/ui/dist/index.html +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aa as x,Z as E,Y as w}from"./index-
|
|
1
|
+
import{aa as x,Z as E,Y as w}from"./index-CBNVuWcP.js";function z({dbName:o,version:c,storeName:e}){return new Promise((n,r)=>{const s=indexedDB.open(o,c);s.onupgradeneeded=()=>{const y=s.result;y.objectStoreNames.contains(e)||y.createObjectStore(e)},s.onsuccess=()=>n(s.result),s.onerror=()=>r(s.error??new Error("Failed to open IndexedDB"))})}function D(o){return new Promise((c,e)=>{o.onsuccess=()=>c(o.result),o.onerror=()=>e(o.error??new Error("IndexedDB request failed"))})}function T(o){let c=null;const e=()=>(c||(c=z(o)),c),n=async(r,s)=>{const y=await e();return await new Promise((a,t)=>{const d=y.transaction(o.storeName,r),u=d.objectStore(o.storeName);Promise.resolve(s(u)).then(i=>{i instanceof IDBRequest?D(i).then(a).catch(t):a(i)}).catch(t),d.onabort=()=>t(d.error??new Error("IndexedDB transaction aborted"))})};return{async get(r){return await n("readonly",s=>s.get(r))},async set(r,s){await n("readwrite",y=>y.put(s,r))},async del(r){await n("readwrite",s=>s.delete(r))},async keys(){const y=(await e()).transaction(o.storeName,"readonly").objectStore(o.storeName);return(await D(y.getAllKeys())).map(String)}}}const k=1*1024*1024,b=20*1024*1024;function m(o,c){return`${o}:${c}`}function B(o){try{return new TextEncoder().encode(o).byteLength}catch{return o.length}}function p(o){return(o.sizeBytes??B(o.content))<=k}const S=T({dbName:"ds-file-cache",version:1,storeName:"files"}),g=x((o,c)=>({entries:{},totalBytes:0,loadingKeys:{},getKey:m,getEntry:(e,n)=>c().entries[m(e,n)],ensureLoaded:async({projectId:e,fileId:n,updatedAt:r,mimeType:s,sizeBytes:y})=>{const a=m(e,n),t=c().entries[a],d=i=>o(l=>({loadingKeys:{...l.loadingKeys,[a]:i}})),u=i=>(o(l=>{const A=l.entries[a],v=A?A.sizeBytes??B(A.content):0,f=i.sizeBytes??B(i.content);return{entries:{...l.entries,[a]:{...i,key:a}},totalBytes:Math.max(0,l.totalBytes-v+f)}}),c().evictIfNeeded(),c().entries[a]);if(t){if(t.isDirty)return c().touch({projectId:e,fileId:n}),t;if(!(t.updatedAt&&r&&t.updatedAt!==r))return c().touch({projectId:e,fileId:n}),t}d(!0);try{const i=await S.get(a);if(i){const f={key:a,projectId:i.projectId,fileId:i.fileId,mimeType:i.mimeType,sizeBytes:i.sizeBytes??B(i.content),updatedAt:i.updatedAt,content:i.content,isDirty:i.isDirty,saveState:"idle",conflict:void 0,lastAccessedAt:Date.now(),lastSavedAt:i.lastSavedAt,saveError:void 0};if(!(r&&f.updatedAt&&f.updatedAt!==r&&!f.isDirty))return u(f)}const l=await w(n),A=y??B(l),v=u({projectId:e,fileId:n,mimeType:s,sizeBytes:A,updatedAt:r,content:l,isDirty:!1,saveState:"idle",saveError:void 0,conflict:void 0,lastAccessedAt:Date.now(),lastSavedAt:void 0});if(p(v)){const f={v:1,projectId:e,fileId:n,mimeType:s,sizeBytes:v.sizeBytes,updatedAt:v.updatedAt,content:v.content,isDirty:v.isDirty,lastAccessedAt:v.lastAccessedAt,lastSavedAt:v.lastSavedAt,conflict:v.conflict};await S.set(a,f)}return v}finally{d(!1)}},reload:async({projectId:e,fileId:n,updatedAt:r,mimeType:s,sizeBytes:y,ignoreDirty:a})=>{const t=m(e,n),d=c().entries[t];if(d?.isDirty&&!a)return c().touch({projectId:e,fileId:n}),d;const u=i=>o(l=>({loadingKeys:{...l.loadingKeys,[t]:i}}));u(!0);try{const i=await w(n),l=y??B(i);return c().applyServerSnapshot({projectId:e,fileId:n,content:i,updatedAt:r,sizeBytes:l,mimeType:s}),c().entries[t]}finally{u(!1)}},setContent:({projectId:e,fileId:n,content:r})=>{const s=m(e,n),y=Date.now();o(t=>{const d=t.entries[s],u=B(r),i=d?d.sizeBytes??B(d.content):0,l={key:s,projectId:e,fileId:n,mimeType:d?.mimeType,sizeBytes:u,updatedAt:d?.updatedAt,content:r,isDirty:!0,saveState:d?.saveState??"idle",saveError:void 0,conflict:d?.conflict,lastAccessedAt:y,lastSavedAt:d?.lastSavedAt};return{entries:{...t.entries,[s]:l},totalBytes:Math.max(0,t.totalBytes-i+u)}});const a=c().entries[s];if(a&&p(a)){const t={v:1,projectId:e,fileId:n,mimeType:a.mimeType,sizeBytes:a.sizeBytes,updatedAt:a.updatedAt,content:a.content,isDirty:a.isDirty,lastAccessedAt:a.lastAccessedAt,lastSavedAt:a.lastSavedAt,conflict:a.conflict};S.set(s,t).catch(()=>{})}},touch:({projectId:e,fileId:n})=>{const r=m(e,n);o(s=>{const y=s.entries[r];return y?{entries:{...s.entries,[r]:{...y,lastAccessedAt:Date.now()}}}:s})},save:async({projectId:e,fileId:n})=>{const r=m(e,n),s=c().entries[r];if(!s)return await c().ensureLoaded({projectId:e,fileId:n});o(y=>({entries:{...y.entries,[r]:{...y.entries[r],saveState:"saving",saveError:void 0}}}));try{const a=(await E(n,s.content)).updated_at,t={...c().entries[r],isDirty:!1,saveState:"idle",updatedAt:a,lastSavedAt:Date.now(),saveError:void 0,conflict:void 0};if(o(d=>({entries:{...d.entries,[r]:t}})),p(t)){const d={v:1,projectId:e,fileId:n,mimeType:t.mimeType,sizeBytes:t.sizeBytes,updatedAt:t.updatedAt,content:t.content,isDirty:t.isDirty,lastAccessedAt:t.lastAccessedAt,lastSavedAt:t.lastSavedAt,conflict:t.conflict};await S.set(r,d)}return t}catch(y){const a=y instanceof Error?y.message:"Save failed";return o(t=>({entries:{...t.entries,[r]:{...t.entries[r],saveState:"error",saveError:a}}})),c().entries[r]}},applyServerSnapshot:({projectId:e,fileId:n,content:r,updatedAt:s,sizeBytes:y,mimeType:a,keepDirty:t})=>{const d=m(e,n),u=Date.now();o(l=>{const A=l.entries[d],v=A?A.sizeBytes??B(A.content):0,f=y??B(r),h={key:d,projectId:e,fileId:n,mimeType:a??A?.mimeType,sizeBytes:f,updatedAt:s??A?.updatedAt,content:r,isDirty:t?!!A?.isDirty:!1,saveState:"idle",saveError:void 0,conflict:void 0,lastAccessedAt:u,lastSavedAt:t?A?.lastSavedAt:u};return{entries:{...l.entries,[d]:h},totalBytes:Math.max(0,l.totalBytes-v+f)}});const i=c().entries[d];if(i&&p(i)){const l={v:1,projectId:e,fileId:n,mimeType:i.mimeType,sizeBytes:i.sizeBytes,updatedAt:i.updatedAt,content:i.content,isDirty:i.isDirty,lastAccessedAt:i.lastAccessedAt,lastSavedAt:i.lastSavedAt,conflict:void 0};S.set(d,l).catch(()=>{})}},evictIfNeeded:()=>{const{totalBytes:e,entries:n}=c();if(e<=b)return;const r=Object.values(n).slice().sort((a,t)=>a.lastAccessedAt-t.lastAccessedAt);let s=e;const y={...n};for(const a of r){if(s<=b)break;if(a.isDirty)continue;const t=a.sizeBytes??B(a.content);delete y[a.key],s-=t}s!==e&&o({entries:y,totalBytes:Math.max(0,s)})}}));function M(o,c){const e=o&&c?m(o,c):null;return g(n=>e?!!n.loadingKeys[e]:!1)}export{M as a,g as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,X as b,b as c}from"./index-
|
|
1
|
+
import{j as e,X as b,b as c}from"./index-CBNVuWcP.js";import{r as A}from"./plugin-monaco-C8UgLomw.js";const C={create:"Created",update:"Updated",delete:"Deleted"};function E(s){const i=s.startsWith("@@"),d=s.startsWith("+")&&!s.startsWith("+++"),t=s.startsWith("-")&&!s.startsWith("---"),l=!i&&!d&&!t,n=i?"@@":d?"+":t?"-":" ",a=i?s.slice(2).trimStart():s.slice(1);return{isHunk:i,isAdd:d,isDel:t,isContext:l,prefix:n,text:a}}function k(s){let i=0,d=0;return s.forEach(t=>{t.startsWith("+")&&!t.startsWith("+++")&&(i+=1),t.startsWith("-")&&!t.startsWith("---")&&(d+=1)}),{added:i,removed:d}}function U({diff:s,changeType:i,title:d,subtitle:t,compact:l,showHeader:n=!0,onClose:a,className:o}){const r=A.useMemo(()=>k(s.lines),[s.lines]),m=s.added??r.added,x=s.removed??r.removed,h=i?C[i]??"Updated":"Updated";return e.jsxs("div",{className:c("ds-file-diff-panel",l&&"is-compact",o),children:[n?e.jsxs("div",{className:"ds-file-diff-header",children:[e.jsxs("div",{className:"ds-file-diff-header-text",children:[e.jsx("div",{className:"ds-file-diff-title",children:d??"AI Change"}),e.jsxs("div",{className:"ds-file-diff-subtitle",children:[e.jsx("span",{className:"ds-file-diff-tag",children:h}),e.jsxs("span",{className:"ds-file-diff-meta",children:["+",m]}),e.jsxs("span",{className:"ds-file-diff-meta",children:["-",x]}),t?e.jsx("span",{className:"ds-file-diff-muted",children:t}):null]})]}),a?e.jsx("button",{type:"button",className:"ds-file-diff-close",onClick:a,"aria-label":"Dismiss diff",children:e.jsx(b,{size:14})}):null]}):null,e.jsx("div",{className:"ds-file-diff-body",children:s.lines.map((u,p)=>{const{isHunk:j,isAdd:N,isDel:v,isContext:W,prefix:f,text:D}=E(u);return e.jsxs("div",{className:c("ds-file-diff-line",j&&"is-hunk",N&&"is-add",v&&"is-del",W&&"is-context"),children:[e.jsx("span",{className:"ds-file-diff-prefix",children:f}),e.jsx("span",{className:"ds-file-diff-text",children:D})]},`${f}-${p}`)})}),s.truncated?e.jsx("div",{className:"ds-file-diff-footer",children:"Diff truncated. Open file for full details."}):null]})}export{U as F};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as r,v as a,w as i,x as u}from"./index-
|
|
1
|
+
import{t as r,v as a,w as i,x as u}from"./index-CBNVuWcP.js";const k=i,n=new Map;function f(){const e={connected:!1,connect:()=>e,disconnect:()=>e,on:()=>e,off:()=>e,emit:()=>!0,emitWithAck:async()=>({data:void 0})};return e}function p(){if(!r())return{socket:f(),release:()=>{}};const e=k();let t=n.get(e);return t||(t={socket:a(e,{path:"/ws/socket.io",autoConnect:!1,transports:["websocket","polling"],auth:c=>{const s=u.getState().accessToken||(typeof window<"u"?window.localStorage.getItem("ds_access_token"):null);c({token:s})}}),refCount:0},n.set(e,t)),t.refCount+=1,t.socket.connected||t.socket.connect(),{socket:t.socket,release:()=>{const o=n.get(e);o&&(o.refCount-=1,o.refCount<=0&&(o.socket.disconnect(),n.delete(e)))}}}export{p as a};
|