@cryptiklemur/lattice 0.0.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/.editorconfig +12 -0
- package/.github/workflows/release.yml +44 -0
- package/.impeccable.md +66 -0
- package/.releaserc.json +32 -0
- package/.serena/project.yml +138 -0
- package/CLAUDE.md +35 -0
- package/CONTRIBUTING.md +93 -0
- package/LICENSE +21 -0
- package/README.md +83 -0
- package/bun.lock +1459 -0
- package/bunfig.toml +2 -0
- package/client/index.html +32 -0
- package/client/package.json +37 -0
- package/client/public/icons/icon-192.svg +11 -0
- package/client/public/icons/icon-512.svg +11 -0
- package/client/public/manifest.json +24 -0
- package/client/public/sw.js +61 -0
- package/client/src/App.tsx +28 -0
- package/client/src/components/auth/PassphrasePrompt.tsx +70 -0
- package/client/src/components/chat/ChatInput.tsx +241 -0
- package/client/src/components/chat/ChatView.tsx +727 -0
- package/client/src/components/chat/Message.tsx +362 -0
- package/client/src/components/chat/ModelSelector.tsx +87 -0
- package/client/src/components/chat/PermissionModeSelector.tsx +41 -0
- package/client/src/components/chat/StatusBar.tsx +50 -0
- package/client/src/components/chat/ToolGroup.tsx +129 -0
- package/client/src/components/chat/ToolResultRenderer.tsx +343 -0
- package/client/src/components/chat/toolSummary.ts +41 -0
- package/client/src/components/dashboard/DashboardView.tsx +219 -0
- package/client/src/components/dashboard/ProjectDashboardView.tsx +168 -0
- package/client/src/components/mesh/NodeBadge.tsx +24 -0
- package/client/src/components/mesh/PairingDialog.tsx +281 -0
- package/client/src/components/panels/FileBrowser.tsx +241 -0
- package/client/src/components/panels/StickyNotes.tsx +187 -0
- package/client/src/components/panels/Terminal.tsx +128 -0
- package/client/src/components/project-settings/ProjectClaude.tsx +304 -0
- package/client/src/components/project-settings/ProjectEnvironment.tsx +235 -0
- package/client/src/components/project-settings/ProjectGeneral.tsx +76 -0
- package/client/src/components/project-settings/ProjectMcp.tsx +232 -0
- package/client/src/components/project-settings/ProjectPermissions.tsx +209 -0
- package/client/src/components/project-settings/ProjectRules.tsx +277 -0
- package/client/src/components/project-settings/ProjectSettingsView.tsx +99 -0
- package/client/src/components/project-settings/ProjectSkills.tsx +91 -0
- package/client/src/components/settings/Appearance.tsx +151 -0
- package/client/src/components/settings/ClaudeSettings.tsx +151 -0
- package/client/src/components/settings/Environment.tsx +185 -0
- package/client/src/components/settings/GlobalMcp.tsx +207 -0
- package/client/src/components/settings/GlobalSkills.tsx +125 -0
- package/client/src/components/settings/MeshStatus.tsx +145 -0
- package/client/src/components/settings/SettingsView.tsx +57 -0
- package/client/src/components/settings/SkillMarketplace.tsx +175 -0
- package/client/src/components/settings/mcp-shared.tsx +194 -0
- package/client/src/components/settings/skill-shared.tsx +177 -0
- package/client/src/components/setup/SetupWizard.tsx +750 -0
- package/client/src/components/sidebar/NodeSettingsModal.tsx +180 -0
- package/client/src/components/sidebar/ProjectDropdown.tsx +43 -0
- package/client/src/components/sidebar/ProjectRail.tsx +291 -0
- package/client/src/components/sidebar/SearchFilter.tsx +52 -0
- package/client/src/components/sidebar/SessionList.tsx +384 -0
- package/client/src/components/sidebar/SettingsSidebar.tsx +128 -0
- package/client/src/components/sidebar/Sidebar.tsx +209 -0
- package/client/src/components/sidebar/UserIsland.tsx +59 -0
- package/client/src/components/sidebar/UserMenu.tsx +101 -0
- package/client/src/components/ui/CommandPalette.tsx +321 -0
- package/client/src/components/ui/ErrorBoundary.tsx +56 -0
- package/client/src/components/ui/IconPicker.tsx +209 -0
- package/client/src/components/ui/LatticeLogomark.tsx +19 -0
- package/client/src/components/ui/PopupMenu.tsx +98 -0
- package/client/src/components/ui/SaveFooter.tsx +38 -0
- package/client/src/components/ui/Toast.tsx +112 -0
- package/client/src/hooks/useMesh.ts +89 -0
- package/client/src/hooks/useProjectSettings.ts +56 -0
- package/client/src/hooks/useProjects.ts +66 -0
- package/client/src/hooks/useSaveState.ts +59 -0
- package/client/src/hooks/useSession.ts +317 -0
- package/client/src/hooks/useSidebar.ts +74 -0
- package/client/src/hooks/useSkills.ts +30 -0
- package/client/src/hooks/useTheme.ts +114 -0
- package/client/src/hooks/useWebSocket.ts +26 -0
- package/client/src/main.tsx +10 -0
- package/client/src/providers/WebSocketProvider.tsx +146 -0
- package/client/src/router.tsx +391 -0
- package/client/src/stores/mesh.ts +78 -0
- package/client/src/stores/session.ts +322 -0
- package/client/src/stores/sidebar.ts +336 -0
- package/client/src/stores/theme.ts +44 -0
- package/client/src/styles/global.css +167 -0
- package/client/src/styles/theme-vars.css +18 -0
- package/client/src/themes/index.ts +79 -0
- package/client/src/utils/findDuplicateKeys.ts +12 -0
- package/client/tsconfig.json +14 -0
- package/client/vite.config.ts +20 -0
- package/package.json +46 -0
- package/server/package.json +22 -0
- package/server/src/auth/passphrase.ts +48 -0
- package/server/src/config.ts +55 -0
- package/server/src/daemon.ts +338 -0
- package/server/src/features/ralph-loop.ts +173 -0
- package/server/src/features/scheduler.ts +281 -0
- package/server/src/features/sticky-notes.ts +102 -0
- package/server/src/handlers/chat.ts +194 -0
- package/server/src/handlers/fs.ts +84 -0
- package/server/src/handlers/loop.ts +37 -0
- package/server/src/handlers/mesh.ts +125 -0
- package/server/src/handlers/notes.ts +45 -0
- package/server/src/handlers/project-settings.ts +174 -0
- package/server/src/handlers/scheduler.ts +47 -0
- package/server/src/handlers/session.ts +159 -0
- package/server/src/handlers/settings.ts +109 -0
- package/server/src/handlers/skills.ts +380 -0
- package/server/src/handlers/terminal.ts +70 -0
- package/server/src/identity.ts +26 -0
- package/server/src/index.ts +190 -0
- package/server/src/mesh/connector.ts +209 -0
- package/server/src/mesh/discovery.ts +123 -0
- package/server/src/mesh/pairing.ts +94 -0
- package/server/src/mesh/peers.ts +52 -0
- package/server/src/mesh/proxy.ts +103 -0
- package/server/src/mesh/session-sync.ts +107 -0
- package/server/src/project/context-breakdown.ts +289 -0
- package/server/src/project/file-browser.ts +106 -0
- package/server/src/project/project-files.ts +267 -0
- package/server/src/project/registry.ts +57 -0
- package/server/src/project/sdk-bridge.ts +566 -0
- package/server/src/project/session.ts +432 -0
- package/server/src/project/terminal.ts +69 -0
- package/server/src/tls.ts +51 -0
- package/server/src/ws/broadcast.ts +31 -0
- package/server/src/ws/router.ts +104 -0
- package/server/src/ws/server.ts +2 -0
- package/server/tsconfig.json +16 -0
- package/shared/package.json +11 -0
- package/shared/src/constants.ts +7 -0
- package/shared/src/index.ts +4 -0
- package/shared/src/messages.ts +638 -0
- package/shared/src/models.ts +136 -0
- package/shared/src/project-settings.ts +45 -0
- package/shared/tsconfig.json +11 -0
- package/themes/amoled.json +20 -0
- package/themes/ayu-light.json +9 -0
- package/themes/catppuccin-latte.json +9 -0
- package/themes/catppuccin-mocha.json +9 -0
- package/themes/clay-light.json +10 -0
- package/themes/clay.json +10 -0
- package/themes/dracula.json +9 -0
- package/themes/everforest-light.json +9 -0
- package/themes/everforest.json +9 -0
- package/themes/github-light.json +9 -0
- package/themes/gruvbox-dark.json +9 -0
- package/themes/gruvbox-light.json +9 -0
- package/themes/monokai.json +9 -0
- package/themes/nord-light.json +9 -0
- package/themes/nord.json +9 -0
- package/themes/one-dark.json +9 -0
- package/themes/one-light.json +9 -0
- package/themes/rose-pine-dawn.json +9 -0
- package/themes/rose-pine.json +9 -0
- package/themes/solarized-dark.json +9 -0
- package/themes/solarized-light.json +9 -0
- package/themes/tokyo-night-light.json +9 -0
- package/themes/tokyo-night.json +9 -0
- package/tsconfig.json +26 -0
package/.editorconfig
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
issues: write
|
|
11
|
+
pull-requests: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
release:
|
|
16
|
+
name: Release
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
|
|
24
|
+
- name: Setup Bun
|
|
25
|
+
uses: oven-sh/setup-bun@v2
|
|
26
|
+
with:
|
|
27
|
+
bun-version: latest
|
|
28
|
+
|
|
29
|
+
- name: Setup Node.js
|
|
30
|
+
uses: actions/setup-node@v4
|
|
31
|
+
with:
|
|
32
|
+
node-version: 22
|
|
33
|
+
registry-url: https://registry.npmjs.org
|
|
34
|
+
|
|
35
|
+
- name: Install dependencies
|
|
36
|
+
run: bun install --frozen-lockfile
|
|
37
|
+
|
|
38
|
+
- name: Build
|
|
39
|
+
run: bun run build
|
|
40
|
+
|
|
41
|
+
- name: Release
|
|
42
|
+
env:
|
|
43
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
44
|
+
run: npx semantic-release
|
package/.impeccable.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Lattice Design Context
|
|
2
|
+
|
|
3
|
+
## Users
|
|
4
|
+
Single developer managing Claude Code across multiple machines. They're power users who value efficiency, keyboard shortcuts, and information density. They interact with Lattice as a command center — monitoring sessions, browsing files, running terminals, and chatting with Claude across their fleet of nodes.
|
|
5
|
+
|
|
6
|
+
## Brand Personality
|
|
7
|
+
**Precise. Technical. Calm.**
|
|
8
|
+
|
|
9
|
+
Lattice is a quiet authority — confident without being loud, technical without being intimidating. It respects the developer's attention and gets out of the way. Every pixel earns its place.
|
|
10
|
+
|
|
11
|
+
## Emotional Goals
|
|
12
|
+
- **Control & Mastery**: "I have my entire fleet at my fingertips." The interface should communicate that the user is in command — clear status, predictable behavior, immediate feedback.
|
|
13
|
+
- **Trust & Reliability**: "I can depend on this." Stability over novelty. Consistent patterns. No surprises. Professional confidence in every interaction.
|
|
14
|
+
|
|
15
|
+
## Aesthetic Direction
|
|
16
|
+
- **Dark-first**: Deep, low-chroma backgrounds with precise accent colors. Light themes available but dark is the native habitat.
|
|
17
|
+
- **Monospace DNA**: JetBrains Mono for headings and emphasis gives Lattice its terminal-rooted identity. IBM Plex Sans for readable body text.
|
|
18
|
+
- **Topological motif**: The lattice grid (dot-grid backgrounds, node connection lines, the 2x2 logomark) is the recurring visual thread.
|
|
19
|
+
- **Three surface tiers**: Chrome (sidebar/headers, `base-200`), Stage (chat area, `base-100` with dot-grid), Elevated (panels/modals, `base-300` with shadow).
|
|
20
|
+
- **OKLCH color space**: Perceptually consistent colors across all 23 base16 themes.
|
|
21
|
+
- **Utilitarian density**: Information-rich without clutter. Compact spacing, small type sizes, efficient use of space.
|
|
22
|
+
|
|
23
|
+
## Anti-patterns
|
|
24
|
+
- No gratuitous animations or transitions — motion serves function only
|
|
25
|
+
- No rounded-everything bubbly aesthetic — keep edges intentional
|
|
26
|
+
- No pastel-heavy palettes in dark mode — maintain contrast authority
|
|
27
|
+
- No emoji icons — lucide-react only
|
|
28
|
+
- No "AI slop" aesthetics — avoid generic Inter/purple-gradient patterns
|
|
29
|
+
|
|
30
|
+
## Design Principles
|
|
31
|
+
|
|
32
|
+
1. **Earn every pixel**: Nothing decorative without function. If an element doesn't help the user understand state, take action, or navigate, remove it.
|
|
33
|
+
2. **Quiet confidence**: The interface communicates competence through consistency and precision, not through visual loudness or novelty.
|
|
34
|
+
3. **State is sacred**: Connection status, session state, node health — these must be instantly legible. Use color, position, and subtle animation to make state changes unmissable without being alarming.
|
|
35
|
+
4. **Dense but breathable**: Pack information efficiently but maintain clear visual hierarchy through type scale, opacity, and spacing — not through excessive whitespace.
|
|
36
|
+
5. **Theme-native**: Never hardcode colors. Every visual decision flows through CSS variables and the active base16 theme. A component should look correct in all 23 themes without special-casing.
|
|
37
|
+
|
|
38
|
+
## Accessibility Requirements
|
|
39
|
+
- **WCAG AA** minimum contrast ratios
|
|
40
|
+
- **Reduced motion**: Respect `prefers-reduced-motion` — disable non-essential animations, keep functional transitions minimal
|
|
41
|
+
- **High contrast**: Support a dedicated high-contrast theme option for low-vision users
|
|
42
|
+
- **Color blind safe**: Status indicators (online/offline, success/error/warning) must be distinguishable without relying on hue alone — use shape, icon, or label as secondary signal
|
|
43
|
+
- **Mobile & responsive**: Support touch targets, responsive layouts, and gesture navigation for tablet/mobile use
|
|
44
|
+
- **Keyboard-first**: All actions reachable via keyboard; visible focus indicators
|
|
45
|
+
|
|
46
|
+
## Typography Scale
|
|
47
|
+
| Role | Font | Size | Weight | Tracking |
|
|
48
|
+
|------|------|------|--------|----------|
|
|
49
|
+
| Section label | JetBrains Mono | 11-12px | Bold | wider/widest, uppercase |
|
|
50
|
+
| Body text | IBM Plex Sans | 14px | Regular | normal |
|
|
51
|
+
| Secondary text | IBM Plex Sans | 13px | Regular | normal |
|
|
52
|
+
| Muted/hint | IBM Plex Sans | 11px | Regular | normal |
|
|
53
|
+
| Code/terminal | JetBrains Mono | 14px | Regular | normal |
|
|
54
|
+
| Heading emphasis | JetBrains Mono | 17px | Bold | normal |
|
|
55
|
+
|
|
56
|
+
## Spacing Patterns
|
|
57
|
+
- Standard padding: `px-4`, `py-2.5`, `gap-2`-`gap-3`
|
|
58
|
+
- Compact list items: `px-3`, `py-1.5`
|
|
59
|
+
- Input fields: `px-3`, `py-2.5`, `rounded-xl`
|
|
60
|
+
- Section spacing: `pt-4`, `pb-2`
|
|
61
|
+
|
|
62
|
+
## Component Patterns
|
|
63
|
+
- **Buttons**: daisyUI `btn` with ghost/primary/accent variants. Icon buttons use `btn-ghost btn-xs btn-square`.
|
|
64
|
+
- **Inputs**: `bg-base-300 border border-base-content/15 rounded-xl`, focus: `border-primary`
|
|
65
|
+
- **Opacity hierarchy**: `/70` secondary, `/40` muted labels, `/30` hints, `/15`-`/20` borders
|
|
66
|
+
- **Surfaces**: Three tiers — chrome (`base-200`), stage (`base-100` + dot-grid), elevated (`base-300` + shadow)
|
package/.releaserc.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"branches": [
|
|
3
|
+
"main",
|
|
4
|
+
{
|
|
5
|
+
"name": "alpha",
|
|
6
|
+
"prerelease": true
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"plugins": [
|
|
10
|
+
[
|
|
11
|
+
"@semantic-release/commit-analyzer",
|
|
12
|
+
{
|
|
13
|
+
"preset": "angular"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
[
|
|
17
|
+
"@semantic-release/release-notes-generator",
|
|
18
|
+
{
|
|
19
|
+
"preset": "angular"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
[
|
|
23
|
+
"@semantic-release/npm",
|
|
24
|
+
{
|
|
25
|
+
"pkgRoot": "."
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
[
|
|
29
|
+
"@semantic-release/github"
|
|
30
|
+
]
|
|
31
|
+
]
|
|
32
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# the name by which the project can be referenced within Serena
|
|
2
|
+
project_name: "lattice"
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# list of languages for which language servers are started; choose from:
|
|
6
|
+
# al bash clojure cpp csharp
|
|
7
|
+
# csharp_omnisharp dart elixir elm erlang
|
|
8
|
+
# fortran fsharp go groovy haskell
|
|
9
|
+
# java julia kotlin lua markdown
|
|
10
|
+
# matlab nix pascal perl php
|
|
11
|
+
# php_phpactor powershell python python_jedi r
|
|
12
|
+
# rego ruby ruby_solargraph rust scala
|
|
13
|
+
# swift terraform toml typescript typescript_vts
|
|
14
|
+
# vue yaml zig
|
|
15
|
+
# (This list may be outdated. For the current list, see values of Language enum here:
|
|
16
|
+
# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py
|
|
17
|
+
# For some languages, there are alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
|
|
18
|
+
# Note:
|
|
19
|
+
# - For C, use cpp
|
|
20
|
+
# - For JavaScript, use typescript
|
|
21
|
+
# - For Free Pascal/Lazarus, use pascal
|
|
22
|
+
# Special requirements:
|
|
23
|
+
# Some languages require additional setup/installations.
|
|
24
|
+
# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
|
|
25
|
+
# When using multiple languages, the first language server that supports a given file will be used for that file.
|
|
26
|
+
# The first language is the default language and the respective language server will be used as a fallback.
|
|
27
|
+
# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
|
|
28
|
+
languages:
|
|
29
|
+
- typescript
|
|
30
|
+
|
|
31
|
+
# the encoding used by text files in the project
|
|
32
|
+
# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
|
|
33
|
+
encoding: "utf-8"
|
|
34
|
+
|
|
35
|
+
# line ending convention to use when writing source files.
|
|
36
|
+
# Possible values: unset (use global setting), "lf", "crlf", or "native" (platform default)
|
|
37
|
+
# This does not affect Serena's own files (e.g. memories and configuration files), which always use native line endings.
|
|
38
|
+
line_ending:
|
|
39
|
+
|
|
40
|
+
# The language backend to use for this project.
|
|
41
|
+
# If not set, the global setting from serena_config.yml is used.
|
|
42
|
+
# Valid values: LSP, JetBrains
|
|
43
|
+
# Note: the backend is fixed at startup. If a project with a different backend
|
|
44
|
+
# is activated post-init, an error will be returned.
|
|
45
|
+
language_backend:
|
|
46
|
+
|
|
47
|
+
# whether to use project's .gitignore files to ignore files
|
|
48
|
+
ignore_all_files_in_gitignore: true
|
|
49
|
+
|
|
50
|
+
# list of additional paths to ignore in this project.
|
|
51
|
+
# Same syntax as gitignore, so you can use * and **.
|
|
52
|
+
# Note: global ignored_paths from serena_config.yml are also applied additively.
|
|
53
|
+
ignored_paths: []
|
|
54
|
+
|
|
55
|
+
# whether the project is in read-only mode
|
|
56
|
+
# If set to true, all editing tools will be disabled and attempts to use them will result in an error
|
|
57
|
+
# Added on 2025-04-18
|
|
58
|
+
read_only: false
|
|
59
|
+
|
|
60
|
+
# list of tool names to exclude.
|
|
61
|
+
# This extends the existing exclusions (e.g. from the global configuration)
|
|
62
|
+
#
|
|
63
|
+
# Below is the complete list of tools for convenience.
|
|
64
|
+
# To make sure you have the latest list of tools, and to view their descriptions,
|
|
65
|
+
# execute `uv run scripts/print_tool_overview.py`.
|
|
66
|
+
#
|
|
67
|
+
# * `activate_project`: Activates a project by name.
|
|
68
|
+
# * `check_onboarding_performed`: Checks whether project onboarding was already performed.
|
|
69
|
+
# * `create_text_file`: Creates/overwrites a file in the project directory.
|
|
70
|
+
# * `delete_lines`: Deletes a range of lines within a file.
|
|
71
|
+
# * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
|
|
72
|
+
# * `execute_shell_command`: Executes a shell command.
|
|
73
|
+
# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
|
|
74
|
+
# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
|
|
75
|
+
# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
|
|
76
|
+
# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
|
|
77
|
+
# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file.
|
|
78
|
+
# * `initial_instructions`: Gets the initial instructions for the current project.
|
|
79
|
+
# Should only be used in settings where the system prompt cannot be set,
|
|
80
|
+
# e.g. in clients you have no control over, like Claude Desktop.
|
|
81
|
+
# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
|
|
82
|
+
# * `insert_at_line`: Inserts content at a given line in a file.
|
|
83
|
+
# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
|
|
84
|
+
# * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
|
|
85
|
+
# * `list_memories`: Lists memories in Serena's project-specific memory store.
|
|
86
|
+
# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
|
|
87
|
+
# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
|
|
88
|
+
# * `read_file`: Reads a file within the project directory.
|
|
89
|
+
# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
|
|
90
|
+
# * `remove_project`: Removes a project from the Serena configuration.
|
|
91
|
+
# * `replace_lines`: Replaces a range of lines within a file with new content.
|
|
92
|
+
# * `replace_symbol_body`: Replaces the full definition of a symbol.
|
|
93
|
+
# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
|
|
94
|
+
# * `search_for_pattern`: Performs a search for a pattern in the project.
|
|
95
|
+
# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
|
|
96
|
+
# * `switch_modes`: Activates modes by providing a list of their names
|
|
97
|
+
# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
|
|
98
|
+
# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
|
|
99
|
+
# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
|
|
100
|
+
# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
|
|
101
|
+
excluded_tools: []
|
|
102
|
+
|
|
103
|
+
# list of tools to include that would otherwise be disabled (particularly optional tools that are disabled by default).
|
|
104
|
+
# This extends the existing inclusions (e.g. from the global configuration).
|
|
105
|
+
included_optional_tools: []
|
|
106
|
+
|
|
107
|
+
# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools.
|
|
108
|
+
# This cannot be combined with non-empty excluded_tools or included_optional_tools.
|
|
109
|
+
fixed_tools: []
|
|
110
|
+
|
|
111
|
+
# list of mode names to that are always to be included in the set of active modes
|
|
112
|
+
# The full set of modes to be activated is base_modes + default_modes.
|
|
113
|
+
# If the setting is undefined, the base_modes from the global configuration (serena_config.yml) apply.
|
|
114
|
+
# Otherwise, this setting overrides the global configuration.
|
|
115
|
+
# Set this to [] to disable base modes for this project.
|
|
116
|
+
# Set this to a list of mode names to always include the respective modes for this project.
|
|
117
|
+
base_modes:
|
|
118
|
+
|
|
119
|
+
# list of mode names that are to be activated by default.
|
|
120
|
+
# The full set of modes to be activated is base_modes + default_modes.
|
|
121
|
+
# If the setting is undefined, the default_modes from the global configuration (serena_config.yml) apply.
|
|
122
|
+
# Otherwise, this overrides the setting from the global configuration (serena_config.yml).
|
|
123
|
+
# This setting can, in turn, be overridden by CLI parameters (--mode).
|
|
124
|
+
default_modes:
|
|
125
|
+
|
|
126
|
+
# initial prompt for the project. It will always be given to the LLM upon activating the project
|
|
127
|
+
# (contrary to the memories, which are loaded on demand).
|
|
128
|
+
initial_prompt: ""
|
|
129
|
+
|
|
130
|
+
# time budget (seconds) per tool call for the retrieval of additional symbol information
|
|
131
|
+
# such as docstrings or parameter information.
|
|
132
|
+
# This overrides the corresponding setting in the global configuration; see the documentation there.
|
|
133
|
+
# If null or missing, use the setting from the global configuration.
|
|
134
|
+
symbol_info_budget:
|
|
135
|
+
|
|
136
|
+
# list of regex patterns which, when matched, mark a memory entry as read‑only.
|
|
137
|
+
# Extends the list from the global configuration, merging the two lists.
|
|
138
|
+
read_only_memory_patterns: []
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Lattice — Project Rules
|
|
2
|
+
|
|
3
|
+
## Icons
|
|
4
|
+
- Use `lucide-react` for ALL icons. Never write custom/inline SVG icons.
|
|
5
|
+
- Import icons individually: `import { Settings, Moon, Sun } from "lucide-react"`
|
|
6
|
+
|
|
7
|
+
## Coding Standards
|
|
8
|
+
- Use `var` instead of `const`/`let`. No arrow functions.
|
|
9
|
+
- Server-side: ESM with Bun. Client-side: ESM with Vite + React.
|
|
10
|
+
- No emojis for icons or in UI.
|
|
11
|
+
- No section separator comments or organizational comments.
|
|
12
|
+
- One class per file.
|
|
13
|
+
- Follow .editorconfig (2-space indent, LF, UTF-8).
|
|
14
|
+
|
|
15
|
+
## Git
|
|
16
|
+
- Never add "Co-Authored-By" lines mentioning Claude/AI.
|
|
17
|
+
- Commit messages follow Angular Commit Convention.
|
|
18
|
+
- Only commit when explicitly asked.
|
|
19
|
+
|
|
20
|
+
## Development
|
|
21
|
+
- Use `bun run dev` to start the development server — it hot reloads both the server and the web app automatically. No manual restart needed after code changes.
|
|
22
|
+
|
|
23
|
+
## Pre-existing Errors
|
|
24
|
+
- DO NOT EVER LEAVE PRE-EXISTING ERRORS, FIX THEM.
|
|
25
|
+
|
|
26
|
+
## Design Context
|
|
27
|
+
See `.impeccable.md` for comprehensive design guidelines. Key principles:
|
|
28
|
+
- **Personality**: Precise, Technical, Calm — quiet authority, no fluff
|
|
29
|
+
- **Emotions**: Control & Mastery, Trust & Reliability
|
|
30
|
+
- **Dark-first** with 23 base16 themes via OKLCH color space
|
|
31
|
+
- **Typography**: JetBrains Mono (headings/code), IBM Plex Sans (body)
|
|
32
|
+
- **Three surface tiers**: Chrome (base-200), Stage (base-100 + dot-grid), Elevated (base-300 + shadow)
|
|
33
|
+
- **Design principles**: Earn every pixel, quiet confidence, state is sacred, dense but breathable, theme-native
|
|
34
|
+
- **Accessibility**: WCAG AA, reduced motion, high contrast, color blind safe, mobile/responsive, keyboard-first
|
|
35
|
+
- **Anti-patterns**: No gratuitous animation, no emoji icons, no hardcoded colors, no "AI slop" aesthetics
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Contributing to Lattice
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in contributing to Lattice! This document covers the basics you need to get started.
|
|
4
|
+
|
|
5
|
+
## Development Setup
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
- [Bun](https://bun.sh/) v1.1+
|
|
10
|
+
- Node.js 20+ (for some tooling)
|
|
11
|
+
- Git
|
|
12
|
+
|
|
13
|
+
### Getting Started
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
git clone https://github.com/cryptiklemur/lattice.git
|
|
17
|
+
cd lattice
|
|
18
|
+
bun install
|
|
19
|
+
bun run dev
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The dev server starts on `http://localhost:7654` with hot reload for both server and client.
|
|
23
|
+
|
|
24
|
+
### Project Structure
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
lattice/
|
|
28
|
+
shared/ # Shared TypeScript types and message definitions
|
|
29
|
+
server/ # Bun server — WebSocket handlers, session management, mesh networking
|
|
30
|
+
client/ # React + Vite client — dashboard, settings, chat UI
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Development Workflow
|
|
34
|
+
|
|
35
|
+
### Coding Standards
|
|
36
|
+
|
|
37
|
+
- Use `var` instead of `const`/`let`
|
|
38
|
+
- No arrow functions — use `function` keyword
|
|
39
|
+
- Use `lucide-react` for all icons
|
|
40
|
+
- Follow `.editorconfig` (2-space indent, LF line endings, UTF-8)
|
|
41
|
+
- One class per file
|
|
42
|
+
|
|
43
|
+
### Commit Messages
|
|
44
|
+
|
|
45
|
+
We follow [Angular Commit Message Conventions](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#-commit-message-format):
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
<type>(<scope>): <short summary>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Types:** `feat`, `fix`, `refactor`, `docs`, `style`, `test`, `chore`, `ci`
|
|
52
|
+
|
|
53
|
+
**Scopes:** `client`, `server`, `shared`, or omit for cross-cutting changes
|
|
54
|
+
|
|
55
|
+
**Examples:**
|
|
56
|
+
```
|
|
57
|
+
feat(client): add skill marketplace search
|
|
58
|
+
fix(server): use correct node identity for project list
|
|
59
|
+
refactor(shared): extract MCP form components
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Building
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
bun run build # Build all packages
|
|
66
|
+
bun run typecheck # Type-check without emitting
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Testing Changes
|
|
70
|
+
|
|
71
|
+
1. Run the dev server: `bun run dev`
|
|
72
|
+
2. Open `http://localhost:7654` in your browser
|
|
73
|
+
3. Verify your changes work visually
|
|
74
|
+
|
|
75
|
+
## Pull Requests
|
|
76
|
+
|
|
77
|
+
1. Fork the repo and create a branch from `main`
|
|
78
|
+
2. Make your changes following the coding standards above
|
|
79
|
+
3. Ensure the project builds without errors: `bun run build`
|
|
80
|
+
4. Write a clear PR description explaining what changed and why
|
|
81
|
+
5. Submit your PR
|
|
82
|
+
|
|
83
|
+
## Reporting Issues
|
|
84
|
+
|
|
85
|
+
Use [GitHub Issues](https://github.com/cryptiklemur/lattice/issues) to report bugs or suggest features. Include:
|
|
86
|
+
|
|
87
|
+
- Steps to reproduce (for bugs)
|
|
88
|
+
- Expected vs actual behavior
|
|
89
|
+
- Your environment (OS, Bun version, browser)
|
|
90
|
+
|
|
91
|
+
## License
|
|
92
|
+
|
|
93
|
+
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Aaron Scherer
|
|
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
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Lattice
|
|
2
|
+
|
|
3
|
+
Multi-machine agentic dashboard for Claude Code. Monitor sessions, manage MCP servers and skills, orchestrate across mesh-networked nodes.
|
|
4
|
+
|
|
5
|
+
> **Alpha** — Lattice is under active development. APIs and features may change.
|
|
6
|
+
|
|
7
|
+
## What is Lattice?
|
|
8
|
+
|
|
9
|
+
Lattice is a web dashboard that sits alongside your Claude Code sessions. It gives you a unified view across projects, machines, and sessions — with real-time monitoring, configuration management, and a skill marketplace.
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- **Multi-project dashboard** — See recent sessions across all projects at a glance, jump back into any conversation
|
|
14
|
+
- **MCP server management** — Add, edit, and remove MCP servers at global or project level through a visual editor
|
|
15
|
+
- **Skill marketplace** — Search and install skills from [skills.sh](https://skills.sh), manage installed skills with rendered markdown previews
|
|
16
|
+
- **Mesh networking** — Connect multiple machines into a mesh network, see node status and project distribution
|
|
17
|
+
- **Session management** — Browse, rename, delete, and resume Claude Code sessions per project
|
|
18
|
+
- **Real-time chat** — Send messages, approve tool use, monitor context usage and costs
|
|
19
|
+
- **Theme system** — 23 base16 themes (dark and light) with OKLCH color space
|
|
20
|
+
- **Configuration editor** — Edit CLAUDE.md, environment variables, rules, and permissions through the UI
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### Install
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# With npm
|
|
28
|
+
npm install -g lattice-ai
|
|
29
|
+
|
|
30
|
+
# With bun
|
|
31
|
+
bun install -g lattice-ai
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Run
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
lattice
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Opens the dashboard at `http://localhost:7654`. Add projects through the UI or by navigating to a directory with a `CLAUDE.md` file.
|
|
41
|
+
|
|
42
|
+
### Development
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
git clone https://github.com/cryptiklemur/lattice.git
|
|
46
|
+
cd lattice
|
|
47
|
+
bun install
|
|
48
|
+
bun run dev
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Architecture
|
|
52
|
+
|
|
53
|
+
Lattice is a monorepo with three packages:
|
|
54
|
+
|
|
55
|
+
| Package | Description |
|
|
56
|
+
|---------|------------|
|
|
57
|
+
| `shared/` | TypeScript types, message definitions, constants |
|
|
58
|
+
| `server/` | Bun WebSocket server — handlers, session management, mesh networking |
|
|
59
|
+
| `client/` | React + Vite dashboard — UI components, state management, themes |
|
|
60
|
+
|
|
61
|
+
The server communicates with clients via WebSocket using a typed message protocol defined in `shared/`. Sessions are managed through the Claude Agent SDK. The client uses Tanstack Store for state management and Tanstack Router for routing.
|
|
62
|
+
|
|
63
|
+
## Configuration
|
|
64
|
+
|
|
65
|
+
Lattice stores its config at `~/.lattice/config.json`. Global Claude settings are read from `~/.claude/` and `~/.claude.json`.
|
|
66
|
+
|
|
67
|
+
| Path | Purpose |
|
|
68
|
+
|------|---------|
|
|
69
|
+
| `~/.lattice/config.json` | Lattice daemon config (port, name, TLS, projects) |
|
|
70
|
+
| `~/.claude/CLAUDE.md` | Global Claude instructions |
|
|
71
|
+
| `~/.claude.json` | Global MCP server configuration |
|
|
72
|
+
| `~/.claude/skills/` | Global skills directory |
|
|
73
|
+
| `~/.claude/rules/` | Global rules |
|
|
74
|
+
|
|
75
|
+
Project-level settings are stored in each project's `.claude/` directory and `.mcp.json`.
|
|
76
|
+
|
|
77
|
+
## Contributing
|
|
78
|
+
|
|
79
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, coding standards, and pull request guidelines.
|
|
80
|
+
|
|
81
|
+
## License
|
|
82
|
+
|
|
83
|
+
[MIT](LICENSE)
|