@arach/lattices 0.2.1 → 0.6.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.
- package/LICENSE +21 -0
- package/README.md +144 -69
- package/apps/mac/Info.plist +43 -0
- package/apps/mac/Lattices.app/Contents/Info.plist +43 -0
- package/apps/mac/Lattices.app/Contents/MacOS/Lattices +0 -0
- package/apps/mac/Lattices.app/Contents/Resources/AppIcon.icns +0 -0
- package/apps/mac/Lattices.app/Contents/Resources/docs/assistant-knowledge.md +130 -0
- package/apps/mac/Lattices.app/Contents/Resources/tap.wav +0 -0
- package/apps/mac/Lattices.app/Contents/_CodeSignature/CodeResources +150 -0
- package/apps/mac/Lattices.entitlements +21 -0
- package/apps/mac/Resources/Pets/assistant-spark/pet.json +62 -0
- package/apps/mac/Resources/Pets/assistant-spark/spritesheet.webp +0 -0
- package/apps/mac/Resources/Pets/scout-ranger/pet.json +6 -0
- package/apps/mac/Resources/Pets/scout-ranger/spritesheet.webp +0 -0
- package/apps/mac/Resources/tap.wav +0 -0
- package/assets/AppIcon.icns +0 -0
- package/bin/assistant-intelligence.ts +912 -0
- package/bin/cli/capture.ts +252 -0
- package/bin/cli/daemon.ts +22 -0
- package/bin/cli/helpers.ts +105 -0
- package/bin/cli/layer.ts +178 -0
- package/bin/cli/runs.ts +43 -0
- package/bin/cli/search.ts +141 -0
- package/bin/cli/session.ts +32 -0
- package/bin/client.ts +17 -0
- package/bin/cua.ts +26 -0
- package/bin/{daemon-client.js → daemon-client.ts} +49 -30
- package/bin/handsoff-infer.ts +96 -0
- package/bin/handsoff-worker.ts +531 -0
- package/bin/infer.ts +424 -0
- package/bin/keychain.ts +75 -0
- package/bin/lattices-app.ts +655 -0
- package/bin/lattices-build +125 -0
- package/bin/lattices-build-env.ts +77 -0
- package/bin/lattices-dev +362 -0
- package/bin/lattices.ts +3260 -0
- package/bin/project-twin.ts +645 -0
- package/docs/agent-execution-plan.md +562 -0
- package/docs/agent-layer-guide.md +207 -0
- package/docs/agents.md +233 -0
- package/docs/ai-chat-ux-review.md +416 -0
- package/docs/api.md +1041 -47
- package/docs/app.md +96 -13
- package/docs/assistant-knowledge.md +130 -0
- package/docs/companion-deck.md +209 -0
- package/docs/component-extraction-roadmap.md +392 -0
- package/docs/concepts.md +13 -12
- package/docs/config.md +83 -10
- package/docs/gesture-customization-proposal.md +520 -0
- package/docs/handsoff-test-scenarios.md +84 -0
- package/docs/hyperspace-grid-snappiness.md +210 -0
- package/docs/layers.md +176 -28
- package/docs/mouse-gestures.md +244 -0
- package/docs/ocr.md +21 -9
- package/docs/overview.md +42 -23
- package/docs/presentation-execution-review.md +491 -0
- package/docs/prompts/hands-off-system.md +382 -0
- package/docs/prompts/hands-off-turn.md +30 -0
- package/docs/prompts/voice-advisor.md +31 -0
- package/docs/prompts/voice-fallback.md +23 -0
- package/docs/proposals/LAT-001-gesture-visual-customization.md +522 -0
- package/docs/proposals/LAT-002-shared-overlay-canvas.md +353 -0
- package/docs/proposals/LAT-003-menu-bar-controller-architecture.md +291 -0
- package/docs/proposals/LAT-004-interactive-overlay-actors.md +534 -0
- package/docs/proposals/LAT-005-action-runtime-product-spine.md +914 -0
- package/docs/proposals/LAT-006-followup-gaps.md +103 -0
- package/docs/proposals/LAT-006-runs-and-capture-in-lattices.md +566 -0
- package/docs/proposals/LAT-007-unified-app-shell.md +128 -0
- package/docs/quickstart.md +8 -12
- package/docs/reference/dewey.config.ts +74 -0
- package/docs/reference/install-agent.md +79 -0
- package/docs/release.md +172 -0
- package/docs/repo-structure.md +100 -0
- package/docs/terminal-kit.md +87 -0
- package/docs/tiling-reference.md +224 -0
- package/docs/twins.md +138 -0
- package/docs/voice-command-protocol.md +278 -0
- package/docs/voice-error-model.md +73 -0
- package/docs/voice.md +221 -0
- package/package.json +69 -16
- package/packages/npm/sdk/cua.d.mts +1 -0
- package/packages/npm/sdk/cua.d.ts +188 -0
- package/packages/npm/sdk/cua.mjs +376 -0
- package/app/Lattices.app/Contents/Info.plist +0 -24
- package/app/Package.swift +0 -13
- package/app/Sources/ActionRow.swift +0 -61
- package/app/Sources/App.swift +0 -10
- package/app/Sources/AppDelegate.swift +0 -234
- package/app/Sources/AppShellView.swift +0 -62
- package/app/Sources/AppTypeClassifier.swift +0 -70
- package/app/Sources/AppWindowShell.swift +0 -63
- package/app/Sources/CheatSheetHUD.swift +0 -332
- package/app/Sources/CommandModeState.swift +0 -1362
- package/app/Sources/CommandModeView.swift +0 -1405
- package/app/Sources/CommandModeWindow.swift +0 -192
- package/app/Sources/CommandPaletteView.swift +0 -307
- package/app/Sources/CommandPaletteWindow.swift +0 -134
- package/app/Sources/DaemonProtocol.swift +0 -101
- package/app/Sources/DaemonServer.swift +0 -414
- package/app/Sources/DesktopModel.swift +0 -121
- package/app/Sources/DesktopModelTypes.swift +0 -71
- package/app/Sources/DiagnosticLog.swift +0 -271
- package/app/Sources/EventBus.swift +0 -30
- package/app/Sources/HotkeyManager.swift +0 -250
- package/app/Sources/HotkeyStore.swift +0 -338
- package/app/Sources/InventoryManager.swift +0 -35
- package/app/Sources/InventoryPath.swift +0 -43
- package/app/Sources/KeyRecorderView.swift +0 -210
- package/app/Sources/LatticesApi.swift +0 -1125
- package/app/Sources/MainView.swift +0 -467
- package/app/Sources/MainWindow.swift +0 -83
- package/app/Sources/OcrModel.swift +0 -309
- package/app/Sources/OcrStore.swift +0 -295
- package/app/Sources/OmniSearchState.swift +0 -283
- package/app/Sources/OmniSearchView.swift +0 -288
- package/app/Sources/OmniSearchWindow.swift +0 -105
- package/app/Sources/OrphanRow.swift +0 -129
- package/app/Sources/PaletteCommand.swift +0 -419
- package/app/Sources/PermissionChecker.swift +0 -125
- package/app/Sources/Preferences.swift +0 -92
- package/app/Sources/ProcessModel.swift +0 -199
- package/app/Sources/ProcessQuery.swift +0 -151
- package/app/Sources/Project.swift +0 -28
- package/app/Sources/ProjectRow.swift +0 -368
- package/app/Sources/ProjectScanner.swift +0 -121
- package/app/Sources/ScreenMapState.swift +0 -2387
- package/app/Sources/ScreenMapView.swift +0 -2820
- package/app/Sources/ScreenMapWindowController.swift +0 -89
- package/app/Sources/SessionManager.swift +0 -72
- package/app/Sources/SettingsView.swift +0 -1053
- package/app/Sources/SettingsWindow.swift +0 -20
- package/app/Sources/TabGroupRow.swift +0 -178
- package/app/Sources/Terminal.swift +0 -259
- package/app/Sources/TerminalQuery.swift +0 -156
- package/app/Sources/TerminalSynthesizer.swift +0 -200
- package/app/Sources/Theme.swift +0 -163
- package/app/Sources/TilePickerView.swift +0 -209
- package/app/Sources/TmuxModel.swift +0 -53
- package/app/Sources/TmuxQuery.swift +0 -81
- package/app/Sources/WindowTiler.swift +0 -1755
- package/app/Sources/WorkspaceManager.swift +0 -434
- package/bin/lattices-app.js +0 -221
- package/bin/lattices.js +0 -1418
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Arach Tchoupani
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,66 +1,98 @@
|
|
|
1
1
|
<picture>
|
|
2
|
-
<img alt="lattices" src="site/public/og.png" />
|
|
2
|
+
<img alt="lattices" src="apps/site/public/og.png" />
|
|
3
3
|
</picture>
|
|
4
4
|
|
|
5
5
|
# lattices
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
so your AI agents can control the desktop.
|
|
7
|
+
The agentic workspace manager for macOS.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
Lattices turns your Mac workspace into a coherent API, so agents can see and
|
|
10
|
+
control windows, terminal sessions, screen text, and layouts. It also gives you
|
|
11
|
+
an assistant to control that workspace in plain language.
|
|
12
|
+
|
|
13
|
+
**[lattices.dev](https://lattices.dev)** · [Docs](https://lattices.dev/docs/overview) · [Download](https://github.com/arach/lattices/releases/latest)
|
|
13
14
|
|
|
14
15
|
## Install
|
|
15
16
|
|
|
17
|
+
### Download the app
|
|
18
|
+
|
|
19
|
+
Grab the signed DMG from the [latest release](https://github.com/arach/lattices/releases/latest):
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
# Or direct download:
|
|
23
|
+
curl -LO https://github.com/arach/lattices/releases/latest/download/Lattices.dmg
|
|
24
|
+
open Lattices.dmg
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Drag **Lattices.app** into Applications. On first launch, a setup wizard
|
|
28
|
+
walks you through granting Accessibility, Screen Recording, and choosing
|
|
29
|
+
your project directory.
|
|
30
|
+
|
|
31
|
+
### Install the CLI
|
|
32
|
+
|
|
16
33
|
```sh
|
|
17
34
|
npm install -g @arach/lattices
|
|
18
35
|
```
|
|
19
36
|
|
|
20
|
-
|
|
37
|
+
Also published as `@lattices/cli` for existing installs. The CLI and app work
|
|
38
|
+
independently — use either or both.
|
|
39
|
+
|
|
40
|
+
### Build from source
|
|
21
41
|
|
|
22
42
|
```sh
|
|
23
|
-
|
|
24
|
-
lattices
|
|
43
|
+
git clone https://github.com/arach/lattices.git
|
|
44
|
+
cd lattices
|
|
25
45
|
|
|
26
|
-
#
|
|
27
|
-
|
|
46
|
+
# Install CLI dependencies
|
|
47
|
+
npm install
|
|
48
|
+
|
|
49
|
+
# Build/install/relaunch the dev app at the stable permission target
|
|
50
|
+
./scripts/run.sh
|
|
28
51
|
```
|
|
29
52
|
|
|
30
|
-
|
|
31
|
-
palette for everything. Add tmux if you want persistent terminal
|
|
32
|
-
sessions:
|
|
53
|
+
To build a signed, notarized DMG for distribution:
|
|
33
54
|
|
|
34
55
|
```sh
|
|
35
|
-
|
|
36
|
-
|
|
56
|
+
# Requires a Developer ID certificate and notarytool keychain profile
|
|
57
|
+
./tools/release/build-dmg.sh
|
|
58
|
+
|
|
59
|
+
# Create/update v<package.json version> and upload DMG assets
|
|
60
|
+
./tools/release/ship.sh
|
|
37
61
|
```
|
|
38
62
|
|
|
39
|
-
|
|
40
|
-
dev server on the right. Detach, close your laptop, come back later,
|
|
41
|
-
reattach. Everything is where you left it.
|
|
63
|
+
See [Release](docs/release.md) for the CI and local maintainer workflows.
|
|
42
64
|
|
|
43
|
-
##
|
|
65
|
+
## Quick start
|
|
44
66
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
67
|
+
```sh
|
|
68
|
+
# Show workspace status for the current directory
|
|
69
|
+
lattices
|
|
48
70
|
|
|
49
|
-
|
|
71
|
+
# Launch the menu bar app
|
|
72
|
+
lattices app
|
|
50
73
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
sessions, switch layers, and read on-screen text.
|
|
74
|
+
# Start or reattach a tmux session
|
|
75
|
+
lattices start
|
|
54
76
|
|
|
55
|
-
|
|
56
|
-
|
|
77
|
+
# Open the command palette from anywhere
|
|
78
|
+
# Cmd+Shift+M
|
|
79
|
+
```
|
|
57
80
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
81
|
+
## Persistent terminal sessions
|
|
82
|
+
|
|
83
|
+
Declare your dev environment in a `.lattices.json`: which panes, which
|
|
84
|
+
commands, what layout. Lattices builds it, runs it, and keeps it alive.
|
|
85
|
+
Close your laptop, reboot, come back a week later — your editor, dev
|
|
86
|
+
server, and test runner are exactly where you left them.
|
|
87
|
+
|
|
88
|
+
```sh
|
|
89
|
+
cd my-project && lattices start
|
|
61
90
|
```
|
|
62
91
|
|
|
63
|
-
|
|
92
|
+
No config? It opens a shell in the project and, when it can, starts your
|
|
93
|
+
detected dev command in a second pane.
|
|
94
|
+
|
|
95
|
+
### Configuration
|
|
64
96
|
|
|
65
97
|
Drop a `.lattices.json` in your project root:
|
|
66
98
|
|
|
@@ -68,100 +100,143 @@ Drop a `.lattices.json` in your project root:
|
|
|
68
100
|
{
|
|
69
101
|
"ensure": true,
|
|
70
102
|
"panes": [
|
|
71
|
-
{ "name": "
|
|
103
|
+
{ "name": "shell", "size": 60 },
|
|
72
104
|
{ "name": "server", "cmd": "pnpm dev" },
|
|
73
105
|
{ "name": "tests", "cmd": "pnpm test --watch" }
|
|
74
106
|
]
|
|
75
107
|
}
|
|
76
108
|
```
|
|
77
109
|
|
|
78
|
-
Or skip it. Without a config, lattices reads your `package.json` and
|
|
79
|
-
picks the right dev command automatically.
|
|
80
|
-
|
|
81
110
|
### Layouts
|
|
82
111
|
|
|
83
112
|
```
|
|
84
113
|
2 panes 3+ panes
|
|
85
114
|
|
|
86
115
|
┌──────────┬───────┐ ┌──────────┬───────┐
|
|
87
|
-
│
|
|
116
|
+
│ shell │server │ │ shell │server │
|
|
88
117
|
│ (60%) │(40%) │ │ (60%) ├───────┤
|
|
89
118
|
└──────────┴───────┘ │ │tests │
|
|
90
119
|
└──────────┴───────┘
|
|
91
120
|
```
|
|
92
121
|
|
|
93
|
-
|
|
122
|
+
### Workspace layers
|
|
94
123
|
|
|
95
124
|
Group projects into switchable contexts. `Cmd+Option+1` tiles your
|
|
96
|
-
frontend and API side by side. `Cmd+Option+2`
|
|
97
|
-
|
|
125
|
+
frontend and API side by side. `Cmd+Option+2` for the mobile stack.
|
|
126
|
+
Sessions stay alive across switches.
|
|
98
127
|
|
|
99
|
-
|
|
128
|
+
### Tab groups
|
|
100
129
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
{ "path": "/Users/you/dev/frontend", "tile": "left" },
|
|
108
|
-
{ "path": "/Users/you/dev/api", "tile": "right" }
|
|
109
|
-
]
|
|
110
|
-
}
|
|
111
|
-
]
|
|
112
|
-
}
|
|
130
|
+
Bundle related repos as tabs in one session. Each tab gets its own
|
|
131
|
+
pane layout from its `.lattices.json`.
|
|
132
|
+
|
|
133
|
+
```sh
|
|
134
|
+
lattices group vox # Launch iOS, macOS, Web, API as tabs
|
|
135
|
+
lattices tab vox iOS # Switch to the iOS tab
|
|
113
136
|
```
|
|
114
137
|
|
|
115
|
-
##
|
|
138
|
+
## Window tiling and awareness
|
|
116
139
|
|
|
117
|
-
|
|
118
|
-
|
|
140
|
+
A native menu bar app tracks every window across all your monitors.
|
|
141
|
+
Tile with hotkeys, organize into switchable layers, snap to grids.
|
|
142
|
+
|
|
143
|
+
It reads your windows too — extracting text from UI elements every
|
|
144
|
+
60 seconds and running Vision OCR on background windows every 2 hours.
|
|
145
|
+
Everything is searchable.
|
|
119
146
|
|
|
120
147
|
```sh
|
|
121
|
-
lattices
|
|
122
|
-
lattices
|
|
148
|
+
lattices scan # View current screen text
|
|
149
|
+
lattices scan search "error" # Search across all indexed text
|
|
150
|
+
lattices scan recent # Browse scan history
|
|
151
|
+
lattices scan deep # Trigger a Vision OCR scan now
|
|
123
152
|
```
|
|
124
153
|
|
|
125
|
-
##
|
|
154
|
+
## Voice commands (beta)
|
|
155
|
+
|
|
156
|
+
Speak to control your workspace — tile windows, search, focus apps,
|
|
157
|
+
and launch projects with natural language. Powered by
|
|
158
|
+
[Vox](https://github.com/arach/vox) for transcription and
|
|
159
|
+
local NLEmbedding for intent matching, with Claude fallback for
|
|
160
|
+
ambiguous commands.
|
|
126
161
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
162
|
+
Trigger with `Hyper+3` (configurable). Press Space to speak, Space to
|
|
163
|
+
stop. The panel shows what was heard, the matched intent, extracted
|
|
164
|
+
parameters, and execution results.
|
|
165
|
+
|
|
166
|
+
## A programmable desktop
|
|
167
|
+
|
|
168
|
+
The menu bar app runs a daemon with 35 RPC methods and 5 real-time
|
|
169
|
+
events over WebSocket. Anything you can do from the app, an agent or
|
|
170
|
+
script can do over the API.
|
|
130
171
|
|
|
131
172
|
```js
|
|
173
|
+
import { daemonCall } from '@arach/lattices/daemon-client'
|
|
174
|
+
|
|
175
|
+
// Search windows by content — title, app, session tags, OCR
|
|
176
|
+
const results = await daemonCall('windows.search', { query: 'myproject' })
|
|
177
|
+
|
|
178
|
+
// Launch and tile
|
|
179
|
+
await daemonCall('session.launch', { path: '/Users/you/dev/frontend' })
|
|
180
|
+
await daemonCall('window.tile', { session: 'frontend-a1b2c3', position: 'left' })
|
|
181
|
+
|
|
182
|
+
// Read the screen
|
|
132
183
|
await daemonCall('ocr.scan')
|
|
133
184
|
const errors = await daemonCall('ocr.search', { query: 'error OR failed' })
|
|
134
185
|
```
|
|
135
186
|
|
|
187
|
+
Or from the CLI:
|
|
188
|
+
|
|
189
|
+
```sh
|
|
190
|
+
lattices search myproject # Find windows by content
|
|
191
|
+
lattices search myproject --deep # Include terminal tab/process data
|
|
192
|
+
lattices search myproject --all # Same as --deep (all search sources)
|
|
193
|
+
lattices place myproject left # Search + focus + tile in one step
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Claude Code skills, MCP servers, or your own scripts can drive your
|
|
197
|
+
desktop the same way you do.
|
|
198
|
+
|
|
136
199
|
## CLI
|
|
137
200
|
|
|
138
201
|
```
|
|
139
|
-
lattices
|
|
202
|
+
lattices Show workspace status and common commands
|
|
203
|
+
lattices start Create or reattach to current project session
|
|
204
|
+
lattices tmux Alias for lattices start
|
|
140
205
|
lattices init Generate .lattices.json
|
|
141
206
|
lattices ls List active sessions
|
|
142
207
|
lattices kill [name] Kill a session
|
|
208
|
+
lattices search <query> Search windows by title, app, session, OCR
|
|
209
|
+
lattices search <q> --deep Deep search: index + terminal inspection
|
|
210
|
+
lattices search <q> --all Same as --deep (all search sources)
|
|
211
|
+
lattices place <query> [pos] Deep search + focus + tile
|
|
212
|
+
lattices focus <session> Raise a session's window
|
|
143
213
|
lattices tile <position> Tile frontmost window
|
|
144
214
|
lattices group [id] Launch or attach a tab group
|
|
145
215
|
lattices tab <group> [tab] Switch tab within a group
|
|
146
|
-
lattices
|
|
147
|
-
lattices
|
|
216
|
+
lattices scan View current screen text
|
|
217
|
+
lattices scan search <q> Search indexed text
|
|
218
|
+
lattices scan deep Trigger Vision OCR now
|
|
148
219
|
lattices app Launch the menu bar app
|
|
149
220
|
lattices help Show help
|
|
150
221
|
```
|
|
151
222
|
|
|
152
223
|
## Requirements
|
|
153
224
|
|
|
154
|
-
- macOS
|
|
225
|
+
- macOS 26.0+
|
|
155
226
|
- Node.js 18+
|
|
156
227
|
|
|
157
228
|
### Optional
|
|
158
229
|
|
|
159
230
|
- tmux for persistent terminal sessions (`brew install tmux`)
|
|
160
|
-
- Swift
|
|
231
|
+
- Swift 6.2 / Xcode 26+ to build the menu bar app from source
|
|
161
232
|
|
|
162
233
|
## Docs
|
|
163
234
|
|
|
164
|
-
Full documentation at [lattices.dev/docs](https://lattices.dev/docs/overview)
|
|
235
|
+
Full documentation at [lattices.dev/docs](https://lattices.dev/docs/overview), including:
|
|
236
|
+
|
|
237
|
+
- [API reference](https://lattices.dev/docs/api) — all 35 daemon methods
|
|
238
|
+
- [Layers](https://lattices.dev/docs/layers) — workspace layers and tab groups
|
|
239
|
+
- [Voice commands](https://lattices.dev/docs/voice) — Vox integration
|
|
165
240
|
|
|
166
241
|
## License
|
|
167
242
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleIdentifier</key>
|
|
6
|
+
<string>dev.lattices.app</string>
|
|
7
|
+
<key>CFBundleName</key>
|
|
8
|
+
<string>Lattices</string>
|
|
9
|
+
<key>CFBundleDisplayName</key>
|
|
10
|
+
<string>Lattices</string>
|
|
11
|
+
<key>CFBundleExecutable</key>
|
|
12
|
+
<string>Lattices</string>
|
|
13
|
+
<key>CFBundleIconFile</key>
|
|
14
|
+
<string>AppIcon</string>
|
|
15
|
+
<key>CFBundlePackageType</key>
|
|
16
|
+
<string>APPL</string>
|
|
17
|
+
<key>CFBundleURLTypes</key>
|
|
18
|
+
<array>
|
|
19
|
+
<dict>
|
|
20
|
+
<key>CFBundleURLName</key>
|
|
21
|
+
<string>dev.lattices.app</string>
|
|
22
|
+
<key>CFBundleURLSchemes</key>
|
|
23
|
+
<array>
|
|
24
|
+
<string>lattices</string>
|
|
25
|
+
</array>
|
|
26
|
+
</dict>
|
|
27
|
+
</array>
|
|
28
|
+
<key>CFBundleVersion</key>
|
|
29
|
+
<string>0.6.1</string>
|
|
30
|
+
<key>CFBundleShortVersionString</key>
|
|
31
|
+
<string>0.6.1</string>
|
|
32
|
+
<key>LSMinimumSystemVersion</key>
|
|
33
|
+
<string>13.0</string>
|
|
34
|
+
<key>LSUIElement</key>
|
|
35
|
+
<true/>
|
|
36
|
+
<key>NSHighResolutionCapable</key>
|
|
37
|
+
<true/>
|
|
38
|
+
<key>NSMicrophoneUsageDescription</key>
|
|
39
|
+
<string>Lattices uses the microphone for Hudson Voice dictation and voice commands.</string>
|
|
40
|
+
<key>NSSupportsAutomaticTermination</key>
|
|
41
|
+
<true/>
|
|
42
|
+
</dict>
|
|
43
|
+
</plist>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleIdentifier</key>
|
|
6
|
+
<string>dev.lattices.app</string>
|
|
7
|
+
<key>CFBundleName</key>
|
|
8
|
+
<string>Lattices</string>
|
|
9
|
+
<key>CFBundleDisplayName</key>
|
|
10
|
+
<string>Lattices</string>
|
|
11
|
+
<key>CFBundleExecutable</key>
|
|
12
|
+
<string>Lattices</string>
|
|
13
|
+
<key>CFBundleIconFile</key>
|
|
14
|
+
<string>AppIcon</string>
|
|
15
|
+
<key>CFBundlePackageType</key>
|
|
16
|
+
<string>APPL</string>
|
|
17
|
+
<key>CFBundleURLTypes</key>
|
|
18
|
+
<array>
|
|
19
|
+
<dict>
|
|
20
|
+
<key>CFBundleURLName</key>
|
|
21
|
+
<string>dev.lattices.app</string>
|
|
22
|
+
<key>CFBundleURLSchemes</key>
|
|
23
|
+
<array>
|
|
24
|
+
<string>lattices</string>
|
|
25
|
+
</array>
|
|
26
|
+
</dict>
|
|
27
|
+
</array>
|
|
28
|
+
<key>CFBundleVersion</key>
|
|
29
|
+
<string>0.6.1</string>
|
|
30
|
+
<key>CFBundleShortVersionString</key>
|
|
31
|
+
<string>0.6.1</string>
|
|
32
|
+
<key>LSMinimumSystemVersion</key>
|
|
33
|
+
<string>13.0</string>
|
|
34
|
+
<key>LSUIElement</key>
|
|
35
|
+
<true/>
|
|
36
|
+
<key>NSHighResolutionCapable</key>
|
|
37
|
+
<true/>
|
|
38
|
+
<key>NSMicrophoneUsageDescription</key>
|
|
39
|
+
<string>Lattices uses the microphone for Hudson Voice dictation and voice commands.</string>
|
|
40
|
+
<key>NSSupportsAutomaticTermination</key>
|
|
41
|
+
<true/>
|
|
42
|
+
</dict>
|
|
43
|
+
</plist>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Assistant Knowledge Base
|
|
3
|
+
title: Lattices — Assistant Knowledge
|
|
4
|
+
description: Orientation + capability map the in-app Workspace Assistant uses to explain Lattices and point to the right feature or doc
|
|
5
|
+
audience: assistant
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
> You are reading the Workspace Assistant's knowledge base. It summarizes what
|
|
9
|
+
> Lattices can do and links to the deeper docs. Treat the **structured context**
|
|
10
|
+
> in your prompt (current settings, file paths, CLI commands) as ground truth for
|
|
11
|
+
> *this user's* configuration; treat this file as ground truth for *how Lattices
|
|
12
|
+
> works*. When a question goes deeper than this summary, name the relevant doc
|
|
13
|
+
> (see [References](#references)) instead of guessing.
|
|
14
|
+
|
|
15
|
+
## What Lattices is
|
|
16
|
+
|
|
17
|
+
Lattices is an **agentic window manager for macOS** — a programmable workspace
|
|
18
|
+
that pairs a native menu bar app with managed tmux sessions and a scriptable
|
|
19
|
+
agent API. Three layers, one product:
|
|
20
|
+
|
|
21
|
+
1. **Programmable workspace** — a CLI and a WebSocket agent API (`ws://127.0.0.1:9399`,
|
|
22
|
+
35+ methods, real-time events) that let scripts and AI agents observe and drive
|
|
23
|
+
the desktop the same way a person does.
|
|
24
|
+
2. **Smart layout manager** — the menu bar app tracks every window across all
|
|
25
|
+
monitors: tiling, switchable layers, snap zones, and screen-text indexing.
|
|
26
|
+
3. **Managed tmux sessions** — declare a dev environment in `.lattices.json`;
|
|
27
|
+
Lattices builds it, runs it, and keeps it alive across reboots.
|
|
28
|
+
|
|
29
|
+
Requirements: macOS 26+, Node 18+; tmux only for session management.
|
|
30
|
+
See [Overview](/docs/overview) and [Concepts](/docs/concepts).
|
|
31
|
+
|
|
32
|
+
## Capability map
|
|
33
|
+
|
|
34
|
+
Each area below is a one-paragraph summary plus the doc to cite for detail.
|
|
35
|
+
|
|
36
|
+
### Window tiling & placement
|
|
37
|
+
Snap windows to preset positions — halves, quarters, thirds, maximize, center —
|
|
38
|
+
from the command palette or `lattices tile <position>`. There is also a grid
|
|
39
|
+
placement primitive: compact `CxR:c,r` starts at 1 for command entry, while
|
|
40
|
+
canonical `grid:CxR:c,r` starts at 0 for APIs. → [Tiling reference](/docs/tiling-reference), positions in [Configuration](/docs/config).
|
|
41
|
+
|
|
42
|
+
### Workspace layers & tab groups
|
|
43
|
+
Group projects into named **layers** you can switch between, and tab-group related
|
|
44
|
+
windows. `workspace.json` layers launch/focus/tile projects. Studio layers are
|
|
45
|
+
rule-backed live window sets persisted in `~/.lattices/layers.json`; their clauses
|
|
46
|
+
support app/title/session exact, substring, regex, Space, visibility, and exclusion
|
|
47
|
+
matches. → [Layers](/docs/layers).
|
|
48
|
+
|
|
49
|
+
### Command palette & menu bar app
|
|
50
|
+
The palette (**Cmd+Shift+M**) is the app's primary surface: launch projects, tile,
|
|
51
|
+
sync, restart, open settings — all searchable. → [Menu Bar App](/docs/app).
|
|
52
|
+
|
|
53
|
+
### tmux sessions (`.lattices.json`)
|
|
54
|
+
Declare panes, commands, and layout per project. `lattices start` builds/attaches a
|
|
55
|
+
persistent session named `<basename>-<hash>`; `lattices sync` reconciles a running
|
|
56
|
+
session to its config. **Ensure** re-runs exited commands on reattach; **prefill**
|
|
57
|
+
types them and waits. → [Concepts](/docs/concepts), [Configuration](/docs/config).
|
|
58
|
+
|
|
59
|
+
### Screen OCR & search
|
|
60
|
+
The app reads on-screen text via the Accessibility API (~60s) and Apple Vision OCR
|
|
61
|
+
on background windows (~2h), indexing everything with FTS5. Search across titles,
|
|
62
|
+
app names, session tags, and OCR with `lattices search <query>` (add `--deep` or
|
|
63
|
+
`--all` to inspect terminal tabs by cwd). → [Screen OCR & Search](/docs/ocr).
|
|
64
|
+
|
|
65
|
+
### Voice commands
|
|
66
|
+
Natural-language voice control for window management ("put the browser on the
|
|
67
|
+
right", "switch to the backend layer"). → [Voice Commands](/docs/voice).
|
|
68
|
+
|
|
69
|
+
### Mouse gestures
|
|
70
|
+
Hold a mouse button, draw a direction or shape, release — runs the matched action.
|
|
71
|
+
Configured via `mouseGestures.enabled` plus `~/.lattices/mouse-shortcuts.json`.
|
|
72
|
+
→ [Mouse Gestures](/docs/mouse-gestures).
|
|
73
|
+
|
|
74
|
+
### Agent API & CLI
|
|
75
|
+
Agents connect over WebSocket and get the same control as a person: list
|
|
76
|
+
windows/projects, launch sessions, tile, switch layers, read screen text, and
|
|
77
|
+
subscribe to events (`windows.changed`, `tmux.changed`, `layer.switched`).
|
|
78
|
+
→ [Agent Guide](/docs/agents), [Agent API](/docs/api).
|
|
79
|
+
|
|
80
|
+
### Project twins
|
|
81
|
+
Pi-backed project "twins" for mediated, persistent agent execution scoped to a
|
|
82
|
+
project. → [Project Twins](/docs/twins).
|
|
83
|
+
|
|
84
|
+
## Key shortcuts
|
|
85
|
+
|
|
86
|
+
| Shortcut | Action |
|
|
87
|
+
|----------|--------|
|
|
88
|
+
| **Cmd+Shift+M** | Open the command palette |
|
|
89
|
+
| `lattices tile <position>` | Tile the focused window (CLI) |
|
|
90
|
+
| `lattices layer [name\|index]` | Switch workspace layer (CLI) |
|
|
91
|
+
| **Ctrl+B** then `D` / `Z` / arrows | tmux: detach / zoom / move pane (inside a session) |
|
|
92
|
+
|
|
93
|
+
Tiling and grid hotkeys are user-configurable — for the live set, point the user to
|
|
94
|
+
Settings or the [Tiling reference](/docs/tiling-reference) rather than asserting one.
|
|
95
|
+
|
|
96
|
+
## CLI quick reference
|
|
97
|
+
|
|
98
|
+
`lattices` · `lattices init` · `lattices sync` · `lattices start` ·
|
|
99
|
+
`lattices restart [pane]` · `lattices tile <position>` · `lattices group [id]` ·
|
|
100
|
+
`lattices layer [name|index]` · `lattices windows --json` ·
|
|
101
|
+
`lattices search <query> [--deep|--all] [--json] [--wid]` · `lattices place <query> [position]` ·
|
|
102
|
+
`lattices app restart`. Full flags: [Configuration](/docs/config).
|
|
103
|
+
|
|
104
|
+
## Config & file locations
|
|
105
|
+
|
|
106
|
+
- **Per project:** `.lattices.json` in the project root (panes, commands, layout, ensure/prefill).
|
|
107
|
+
- **User config (`~/.lattices/`):** `workspace.json`, `layers.json`, `mouse-shortcuts.json`,
|
|
108
|
+
`snap-zones.json`, `clusters.json`, `ocr.db`, `lattices.log`.
|
|
109
|
+
- **Defaults domain:** `dev.lattices.app` (read/write app settings via `defaults`).
|
|
110
|
+
|
|
111
|
+
The exact current values and paths for *this* machine arrive in your structured
|
|
112
|
+
context — prefer those over the generic paths above when answering.
|
|
113
|
+
|
|
114
|
+
## References
|
|
115
|
+
|
|
116
|
+
| Topic | Doc |
|
|
117
|
+
|-------|-----|
|
|
118
|
+
| What it is / who it's for | [Overview](/docs/overview) |
|
|
119
|
+
| Install & first run | [Quickstart](/docs/quickstart) |
|
|
120
|
+
| Architecture, glossary, internals | [Concepts](/docs/concepts) |
|
|
121
|
+
| `.lattices.json`, CLI, tile positions | [Configuration](/docs/config) |
|
|
122
|
+
| Command palette, tiling, sessions | [Menu Bar App](/docs/app) |
|
|
123
|
+
| Tiling & grid placement | [Tiling reference](/docs/tiling-reference) |
|
|
124
|
+
| Layers & tab groups | [Layers](/docs/layers) |
|
|
125
|
+
| Screen OCR & full-text search | [Screen OCR & Search](/docs/ocr) |
|
|
126
|
+
| Voice control | [Voice Commands](/docs/voice) |
|
|
127
|
+
| Mouse gestures | [Mouse Gestures](/docs/mouse-gestures) |
|
|
128
|
+
| Agent contracts (voice/CLI/daemon) | [Agent Guide](/docs/agents) |
|
|
129
|
+
| WebSocket RPC method reference | [Agent API](/docs/api) |
|
|
130
|
+
| Project twins | [Project Twins](/docs/twins) |
|
|
Binary file
|