dorkos 0.29.0 → 0.30.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 +35 -10
- package/dist/bin/cli.js +5 -5
- package/dist/client/assets/{TopologyGraph-BYIHcTxO.js → TopologyGraph-CuQTi5Uc.js} +1 -1
- package/dist/client/assets/{highlighted-body-TPN3WLV5-BScQwxHo.js → highlighted-body-TPN3WLV5-B0wsKIKb.js} +1 -1
- package/dist/client/assets/{index-pnL7QGzo.js → index-BgKkAwVN.js} +1 -1
- package/dist/client/assets/{index-CTC5f02a.js → index-BrU_YWM3.js} +1 -1
- package/dist/client/assets/{index-C6kLRUkB.js → index-PgrCLMKB.js} +237 -237
- package/dist/client/index.html +1 -1
- package/dist/server/index.js +56 -3
- package/dist/server/index.js.map +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -32,14 +32,14 @@ It's 7am. CI has been red since 2:47am. A dependency update cascaded across thre
|
|
|
32
32
|
|
|
33
33
|
DorkOS gives your agents what they're missing: scheduling, communication, and coordination. The intelligence comes from the agents. Everything else comes from DorkOS.
|
|
34
34
|
|
|
35
|
-
###
|
|
35
|
+
### Tasks - Scheduling
|
|
36
36
|
|
|
37
|
-
Cron-based agent execution, independent of your IDE or terminal. Your agents ship code, triage issues, and run audits on schedule. You wake up to completed pull requests.
|
|
37
|
+
Cron-based and on-demand agent execution, independent of your IDE or terminal. Your agents ship code, triage issues, and run audits on schedule. You wake up to completed pull requests.
|
|
38
38
|
|
|
39
|
+
- File-based task definitions alongside your code
|
|
39
40
|
- Overrun protection prevents duplicate runs
|
|
40
41
|
- Isolated sessions per run with full history
|
|
41
42
|
- Configurable concurrency limits
|
|
42
|
-
- Approval gates for agent-created schedules
|
|
43
43
|
|
|
44
44
|
### Relay - Communication
|
|
45
45
|
|
|
@@ -70,6 +70,18 @@ Start a session from the browser. Check on it from your phone. Resume it from in
|
|
|
70
70
|
- Real-time sync across multiple clients
|
|
71
71
|
- Available in any browser or embedded in Obsidian
|
|
72
72
|
|
|
73
|
+
### Extensions
|
|
74
|
+
|
|
75
|
+
Agents can build and install extensions that add new capabilities. Extensions define their own settings, secrets, and entry points — all managed through the UI.
|
|
76
|
+
|
|
77
|
+
### MCP Server
|
|
78
|
+
|
|
79
|
+
DorkOS exposes an MCP server at `/mcp` (Streamable HTTP transport) so external AI agents — Claude Code, Cursor, Windsurf — can use DorkOS tools directly. Optional API key auth via `MCP_API_KEY`.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
claude mcp add dorkos --transport http http://localhost:4242/mcp
|
|
83
|
+
```
|
|
84
|
+
|
|
73
85
|
## CLI Reference
|
|
74
86
|
|
|
75
87
|
```bash
|
|
@@ -77,6 +89,8 @@ dorkos # Start the server
|
|
|
77
89
|
dorkos --port 8080 # Custom port
|
|
78
90
|
dorkos --dir ~/projects # Custom working directory
|
|
79
91
|
dorkos --tunnel # Enable remote access via ngrok
|
|
92
|
+
dorkos --tasks # Enable Tasks scheduler
|
|
93
|
+
dorkos --no-open # Don't open browser on startup
|
|
80
94
|
dorkos config # Show all settings
|
|
81
95
|
dorkos config set <key> <val> # Update a setting
|
|
82
96
|
dorkos init # Interactive setup wizard
|
|
@@ -92,7 +106,12 @@ dorkos cleanup # Remove all DorkOS data
|
|
|
92
106
|
| `-d, --dir <path>` | Working directory |
|
|
93
107
|
| `-b, --boundary <path>` | Directory boundary (default: home directory) |
|
|
94
108
|
| `-t, --tunnel` | Enable ngrok tunnel for remote access |
|
|
109
|
+
| `--tasks` / `--no-tasks` | Enable or disable the Tasks scheduler |
|
|
110
|
+
| `--no-open` | Don't open browser on startup |
|
|
95
111
|
| `-l, --log-level <level>` | Log level (`fatal`, `error`, `warn`, `info`, `debug`, `trace`) |
|
|
112
|
+
| `--post-install-check` | Verify installation and exit |
|
|
113
|
+
| `-h, --help` | Show help message |
|
|
114
|
+
| `-v, --version` | Show version number |
|
|
96
115
|
|
|
97
116
|
### Config Subcommands
|
|
98
117
|
|
|
@@ -117,13 +136,19 @@ dorkos cleanup # Remove all DorkOS data
|
|
|
117
136
|
|
|
118
137
|
### Optional
|
|
119
138
|
|
|
120
|
-
| Variable
|
|
121
|
-
|
|
|
122
|
-
| `DORKOS_PORT`
|
|
123
|
-
| `DORKOS_HOST`
|
|
124
|
-
| `DORKOS_DEFAULT_CWD`
|
|
125
|
-
| `DORKOS_BOUNDARY`
|
|
126
|
-
| `
|
|
139
|
+
| Variable | Default | Description |
|
|
140
|
+
| ---------------------- | ----------------- | -------------------------------------- |
|
|
141
|
+
| `DORKOS_PORT` | `4242` | Server port |
|
|
142
|
+
| `DORKOS_HOST` | `localhost` | Server host (use `0.0.0.0` for Docker) |
|
|
143
|
+
| `DORKOS_DEFAULT_CWD` | Current directory | Default working directory for sessions |
|
|
144
|
+
| `DORKOS_BOUNDARY` | Home directory | Directory boundary root |
|
|
145
|
+
| `DORK_HOME` | `~/.dork` | Override data directory location |
|
|
146
|
+
| `LOG_LEVEL` | `info` | Log verbosity |
|
|
147
|
+
| `DORKOS_TASKS_ENABLED` | `true` | Enable or disable the Tasks scheduler |
|
|
148
|
+
| `DORKOS_OPEN` | `true` | Open browser on startup |
|
|
149
|
+
| `DORKOS_RELAY_ENABLED` | `true` | Enable the Relay message bus |
|
|
150
|
+
| `DORKOS_CORS_ORIGIN` | `localhost` | CORS allowed origin(s) |
|
|
151
|
+
| `MCP_API_KEY` | (none) | API key for MCP server authentication |
|
|
127
152
|
|
|
128
153
|
### Remote Access
|
|
129
154
|
|
package/dist/bin/cli.js
CHANGED
|
@@ -19117,12 +19117,12 @@ Examples:
|
|
|
19117
19117
|
process.exit(0);
|
|
19118
19118
|
}
|
|
19119
19119
|
if (values.version) {
|
|
19120
|
-
console.log("0.
|
|
19120
|
+
console.log("0.30.0");
|
|
19121
19121
|
process.exit(0);
|
|
19122
19122
|
}
|
|
19123
19123
|
if (values["post-install-check"]) {
|
|
19124
19124
|
checkClaude();
|
|
19125
|
-
console.log(`dorkos ${"0.
|
|
19125
|
+
console.log(`dorkos ${"0.30.0"}`);
|
|
19126
19126
|
console.log("Installation verified.");
|
|
19127
19127
|
process.exit(0);
|
|
19128
19128
|
}
|
|
@@ -19249,7 +19249,7 @@ try {
|
|
|
19249
19249
|
var port = process.env.DORKOS_PORT || String(DEFAULT_PORT);
|
|
19250
19250
|
var localUrl = `http://localhost:${port}`;
|
|
19251
19251
|
console.log("");
|
|
19252
|
-
console.log(` DorkOS v${"0.
|
|
19252
|
+
console.log(` DorkOS v${"0.30.0"}`);
|
|
19253
19253
|
console.log(` Local: ${link(localUrl, localUrl)}`);
|
|
19254
19254
|
var nets = networkInterfaces();
|
|
19255
19255
|
var networkUrl = null;
|
|
@@ -19310,9 +19310,9 @@ if (shouldOpenBrowser && process.stdin.isTTY) {
|
|
|
19310
19310
|
}
|
|
19311
19311
|
});
|
|
19312
19312
|
}
|
|
19313
|
-
checkForUpdate("0.
|
|
19313
|
+
checkForUpdate("0.30.0").then((latestVersion) => {
|
|
19314
19314
|
if (latestVersion) {
|
|
19315
|
-
const msg = `Update available: ${"0.
|
|
19315
|
+
const msg = `Update available: ${"0.30.0"} \u2192 ${latestVersion}`;
|
|
19316
19316
|
const cmd = "Run npm install -g dorkos@latest to update";
|
|
19317
19317
|
const width = Math.max(msg.length, cmd.length) + 6;
|
|
19318
19318
|
const pad = (s2) => `\u2502 ${s2}${" ".repeat(width - s2.length - 6)} \u2502`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as Odn,o as $Jn,p as DJn,r as mn,j as we,q as Ldn,t as _Jn,s as FJn,v as RJn,w as UX,A as $dn,x as Ddn,c as s5,Z as bpe,y as gpe,z as BJn,b as rA,D as JJn,F as GJn,X as HJn,G as qJn,H as T1n,m as zJn,I as UJn,J as KJn,K as XJn,L as WJn,N as VJn,O as QJn,Q as YJn,U as ZJn,V as eGn,W as nGn}from"./index-
|
|
1
|
+
import{n as Odn,o as $Jn,p as DJn,r as mn,j as we,q as Ldn,t as _Jn,s as FJn,v as RJn,w as UX,A as $dn,x as Ddn,c as s5,Z as bpe,y as gpe,z as BJn,b as rA,D as JJn,F as GJn,X as HJn,G as qJn,H as T1n,m as zJn,I as UJn,J as KJn,K as XJn,L as WJn,N as VJn,O as QJn,Q as YJn,U as ZJn,V as eGn,W as nGn}from"./index-PgrCLMKB.js";/**
|
|
2
2
|
* @license lucide-react v0.575.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r,R as m,M as x,j as d,B as p}from"./index-
|
|
1
|
+
import{r,R as m,M as x,j as d,B as p}from"./index-PgrCLMKB.js";var B=({code:i,language:e,raw:a,className:g,startLine:u,...n})=>{let{shikiTheme:l}=r.useContext(m),t=x(),[h,s]=r.useState(a);return r.useEffect(()=>{if(!t){s(a);return}let o=t.highlight({code:i,language:e,themes:l},c=>{s(c)});o&&s(o)},[i,e,l,t,a]),d.jsx(p,{className:g,language:e,result:h,startLine:u,...n})};export{B as HighlightedCodeBlockBody};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as b,j as e,T as f,C as v,P as N,a as E,c as g,b as k,S,u as w,d as y,e as C,f as T,g as R,h as z,t as m}from"./index-
|
|
1
|
+
import{r as b,j as e,T as f,C as v,P as N,a as E,c as g,b as k,S,u as w,d as y,e as C,f as T,g as R,h as z,t as m}from"./index-PgrCLMKB.js";import{E as M,i as _,k as H,l as B}from"./index-PgrCLMKB.js";const P=new Set(["disabled","discovered","incompatible","invalid"]);function I({extension:o,onToggle:u,isToggling:c}){const{manifest:s,status:t,scope:h,error:n}=o,[r,a]=b.useState(!1),x=!P.has(t),d=t==="incompatible",l=t==="invalid",i=t==="compile_error"||t==="activate_error",j=!d&&!l;return e.jsx("div",{"data-slot":"extension-card","data-testid":`extension-card-${o.id}`,className:g("bg-card rounded-xl border p-4",i&&"border-amber-500/50",(d||l)&&"opacity-70"),children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0 flex-1 space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[i&&e.jsx(f,{className:"size-4 shrink-0 text-amber-500","aria-hidden":"true"}),(d||l)&&!i&&e.jsx(v,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":"true"}),!i&&!d&&!l&&e.jsx(N,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":"true"}),e.jsx("span",{className:"font-medium",children:s.name}),e.jsxs("span",{className:"text-muted-foreground text-sm",children:["v",s.version]})]}),s.description&&e.jsx("p",{className:"text-muted-foreground text-sm",children:s.description}),d&&s.minHostVersion&&e.jsxs("p",{className:"text-muted-foreground text-sm",children:["Requires DorkOS >= ",s.minHostVersion]}),i&&n&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-sm text-amber-600 dark:text-amber-400",children:[t==="compile_error"?"Compilation error: ":"Activation failed: ",n.message]}),n.details&&e.jsxs("button",{type:"button",onClick:()=>a(p=>!p),className:"text-muted-foreground hover:text-foreground flex items-center gap-1 text-xs transition-colors","aria-expanded":r,children:[e.jsx(E,{className:g("size-3 transition-transform",r&&"rotate-180")}),r?"Hide details":"Show details"]}),r&&n.details&&e.jsx("pre",{className:"bg-muted mt-1 max-h-32 overflow-auto rounded-md p-2 text-xs",children:n.details})]}),e.jsxs("div",{className:"text-muted-foreground flex flex-wrap items-center gap-2 text-xs",children:[e.jsx(k,{variant:"outline",className:"text-xs",children:h}),s.author&&e.jsx("span",{children:s.author})]})]}),e.jsx("div",{className:"pt-0.5",children:e.jsx(S,{checked:x,onCheckedChange:p=>u(o.id,p),disabled:!j||c,"aria-label":`${x?"Disable":"Enable"} ${s.name}`})})]})})}function A(){const{data:o=[],isLoading:u}=w(),c=y(),s=C(),t=T(),h=new Set([...c.variables?[c.variables]:[],...s.variables?[s.variables]:[]]);async function n(a,x){(x?c:s).mutate(a,{onSuccess:()=>{m.info("Extension changed — reload the page to apply",{action:{label:"Reload now",onClick:()=>location.reload()}})},onError:l=>{const i=x?"enable":"disable";m.error(`Failed to ${i} extension: ${l.message}`)}})}function r(){t.mutate(void 0,{onSuccess:a=>{m.success(`Reloaded ${a.length} extension(s)`)},onError:()=>{m.error("Failed to reload extensions")}})}return u?e.jsx("div",{className:"text-muted-foreground py-8 text-center text-sm",children:"Loading extensions…"}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-muted-foreground text-sm",children:["Extensions add new UI and capabilities to DorkOS. Place them in"," ",e.jsx("code",{className:"bg-muted rounded px-1",children:"~/.dork/extensions/"})," or"," ",e.jsx("code",{className:"bg-muted rounded px-1",children:".dork/extensions/"})," in your project."]}),o.length===0?e.jsx("div",{className:"text-muted-foreground py-8 text-center text-sm","data-testid":"no-extensions",children:e.jsx("p",{children:"No extensions installed."})}):e.jsx("div",{className:"space-y-3",children:o.map(a=>e.jsx(I,{extension:a,onToggle:n,isToggling:h.has(a.id)},a.id))}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(R,{variant:"outline",size:"sm",onClick:r,disabled:t.isPending,"data-testid":"reload-extensions-button",children:[e.jsx(z,{className:g("mr-2 size-4",t.isPending&&"animate-spin")}),"Reload Extensions"]})})]})}export{M as ExtensionLoader,_ as ExtensionProvider,A as ExtensionsSettingsTab,H as createExtensionAPI,B as useExtensions};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var xt=Object.defineProperty;var wt=(e,n,i)=>n in e?xt(e,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[n]=i;var N=(e,n,i)=>wt(e,typeof n!="symbol"?n+"":n,i);import{m as bt,j as v,r as ee}from"./index-
|
|
1
|
+
var xt=Object.defineProperty;var wt=(e,n,i)=>n in e?xt(e,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[n]=i;var N=(e,n,i)=>wt(e,typeof n!="symbol"?n+"":n,i);import{m as bt,j as v,r as ee}from"./index-PgrCLMKB.js";var on={exports:{}};/*!
|
|
2
2
|
Copyright (c) 2018 Jed Watson.
|
|
3
3
|
Licensed under the MIT License (MIT), see
|
|
4
4
|
http://jedwatson.github.io/classnames
|