aegis-desktop 0.4.0 → 0.4.1

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.
Files changed (3) hide show
  1. package/README.md +80 -4
  2. package/main.js +6 -5
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,8 +1,49 @@
1
1
  # AEGIS Desktop
2
2
 
3
- Electron host see the repo root [README.md](../README.md) for the full
4
- build/architecture reference. This file covers day-to-day usage details that
5
- don't belong in the top-level doc.
3
+ A standalone Electron chat app over the [AEGIS](https://aegiscloud.org) API,
4
+ with an **agentic tool loop**: the model can read, write, and edit files,
5
+ list directories, glob, grep, run shell commands in a persistent session, and
6
+ delegate whole sub-tasks to subagents. It does **not** require Claude Code.
7
+
8
+ ```bash
9
+ npm install -g aegis-desktop
10
+ aegis
11
+ ```
12
+
13
+ ## Model classes
14
+
15
+ Pick any of four transports from the model-class picker, switchable
16
+ mid-conversation with context intact:
17
+
18
+ | Class | Transport | Key held in |
19
+ |---|---|---|
20
+ | **Aegis Cloud** | `aegiscloud.org` (pooled or pinned model) | main process |
21
+ | **Ollama** | local `ollama` daemon | no key needed |
22
+ | **Custom OpenAI-compatible** (LM Studio, OpenRouter, vLLM, …) | direct from the desktop app | main process — never sent to the renderer |
23
+ | **Anthropic-compatible** (Claude, or any Messages-format gateway) | direct from the desktop app | main process |
24
+
25
+ Get a free AEGIS key at **https://aegiscloud.org**, or use your own
26
+ Ollama/OpenAI-compatible/Anthropic-compatible endpoint — no AEGIS account
27
+ needed for those.
28
+
29
+ ## Tools available to the model
30
+
31
+ | Tool | What it does |
32
+ |---|---|
33
+ | `readFile` · `writeFile` · `editFile` | File access scoped to the working directory |
34
+ | `listDir` · `glob` · `grep` | Navigate and search a tree |
35
+ | `exec` | Run commands in a persistent shell session |
36
+ | `task` | Delegate a self-contained sub-task to a subagent |
37
+
38
+ Before `exec`, `writeFile`, or `editFile` runs, a diff/approval card asks you
39
+ to confirm — approve once, approve for the rest of the conversation, or deny.
40
+ Flip **Settings → "Confirm before running tools"** off if you'd rather the
41
+ agent run mutating tool calls without asking; it's on by default.
42
+
43
+ Conversations persist locally and sync to AEGIS cloud memory via a pending
44
+ queue that flushes on each "Sync now" or heartbeat retry. The **remember**
45
+ button on any assistant reply pins that message to cross-machine memory —
46
+ queued locally if you're offline.
6
47
 
7
48
  ## Keyboard shortcuts
8
49
 
@@ -45,6 +86,15 @@ accelerator is already claimed by another application, registration fails
45
86
  gracefully: a warning is logged to the main process console and the
46
87
  Quick Launcher card shows the reason instead of the app crashing or hanging.
47
88
 
89
+ ## Deep links
90
+
91
+ The app registers an `aegis://` protocol handler:
92
+
93
+ | Link | What it does |
94
+ |---|---|
95
+ | `aegis://open?session=<id>` | Resumes a saved session |
96
+ | `aegis://new?prompt=<text>` | Starts a fresh chat with that prompt pre-filled |
97
+
48
98
  ## Run from source
49
99
 
50
100
  ```bash
@@ -53,9 +103,35 @@ npm install
53
103
  npm start
54
104
  ```
55
105
 
106
+ ## Build a distributable
107
+
108
+ ```bash
109
+ npm run dist # packaged app (AppImage / MSI+NSIS / dmg)
110
+ npm run dist:dir # unpacked dir, for quick testing
111
+ ```
112
+
56
113
  ## Checks
57
114
 
58
115
  ```bash
59
- npm run check # node --check every main-process + renderer file
116
+ npm run check # node --check every main-process + renderer file
60
117
  node ../test/desktop-shell.mjs # headless IPC smoke test (no Electron binary needed)
61
118
  ```
119
+
120
+ ## Structure
121
+
122
+ ```
123
+ main.js Electron main process — window + IPC shell only
124
+ preload.js Context-isolated IPC bridge exposed to the renderer
125
+ renderer/ UI (vanilla JS, no framework)
126
+ lib/local/ Model classes, providers, agentic tool loop, prompt
127
+ lib/sync/ Local session/memory persistence + sync queue
128
+ vendor/aegis.js The AEGIS transport client (thin — no engine logic)
129
+ bin/aegis.js `aegis` CLI entry point for the global npm install
130
+ ```
131
+
132
+ This directory is part of the [aegiscode-plugin](../README.md) monorepo,
133
+ which also ships a Claude Code plugin and the shared `client/aegis.js`
134
+ transport over the same AEGIS backend — see the repo root for that fuller
135
+ architecture picture. A read-only mirror of just this directory (for
136
+ browsing or `git clone`) lives at
137
+ [aegiscloud/aegiscode-desktop](https://github.com/aegiscloud/aegiscode-desktop).
package/main.js CHANGED
@@ -1432,11 +1432,6 @@ function bootstrap() {
1432
1432
  pushToMain: pushQuickLauncherResult,
1433
1433
  });
1434
1434
  registerQuickLauncherIpc(ipcMain, quickLauncherDispatch);
1435
- // Apply whatever was last saved (or the default) right away: ship the
1436
- // shortcut only when app.isPackaged || the settings flag is on — see
1437
- // shouldEnableGlobalShortcut — so a plain `electron .` dev run never grabs
1438
- // a systemwide hotkey unless the developer opted in from Settings.
1439
- quickLauncherDispatch.setConfig(settings.quickLauncherConfig());
1440
1435
 
1441
1436
  // A held global shortcut outlives this app if not released — every quit
1442
1437
  // path (explicit quit, window-all-closed on non-mac, OS shutdown) must
@@ -1572,6 +1567,12 @@ function bootstrap() {
1572
1567
  // key was saved in-app (safeStorage is usable only after app ready).
1573
1568
  const persistedKey = settings.aegisRawKey();
1574
1569
  if (persistedKey) aegis.setApiKey(persistedKey);
1570
+ // Apply whatever was last saved (or the default): ship the shortcut only
1571
+ // when app.isPackaged || the settings flag is on — see
1572
+ // shouldEnableGlobalShortcut — so a plain `electron .` dev run never
1573
+ // grabs a systemwide hotkey unless the developer opted in from Settings.
1574
+ // Must run after 'ready' — globalShortcut throws before then.
1575
+ quickLauncherDispatch.setConfig(settings.quickLauncherConfig());
1575
1576
  const win = createWindow();
1576
1577
  updateManager.start();
1577
1578
  // Cold-launch deep link (Linux/Windows argv, or a pre-ready macOS
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aegis-desktop",
3
3
  "productName": "AEGIS Desktop",
4
- "version": "0.4.0",
4
+ "version": "0.4.1",
5
5
  "description": "Thin Electron host for AEGIS — a local chat UI over the shared client/aegis.js transport. Ships transport + UI only; engine logic stays server-side.",
6
6
  "author": {
7
7
  "name": "AEGIS Code",