chore: update next session prompt + install mysql2 for beadboard-550
- NEXT_SESSION_PROMPT.md: full context for Dolt mysql2 integration including schema, current read path, normalization approach, watcher concern, skills to use, and files to read - mysql2 installed (beadboard-550.1 in_progress) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a2e523b751
commit
bb1231860e
3 changed files with 264 additions and 115 deletions
|
|
@ -1,133 +1,155 @@
|
||||||
# Next Session: bb-ui2.6, bb-ui2.7, bb-ui2.8 - Shell Layout Components
|
# Next Session: Dolt Direct SQL Integration (beadboard-550)
|
||||||
|
|
||||||
## Context: Recovery from Corruption Incident
|
## What This Session Accomplished
|
||||||
|
|
||||||
Last session we recovered from a catastrophic file corruption event where null bytes overwrote dozens of files. We:
|
This session completed **Phase 0** and **Phase 1** of the UX redesign PRD, then pivoted to a more important infrastructure fix: replacing the stale `issues.jsonl` read path with direct Dolt SQL queries.
|
||||||
- Recovered tracked files from git stash commits
|
|
||||||
- Reinstalled node_modules and regenerated shadcn components
|
|
||||||
- Recreated earthy-dark tokens from bead specifications
|
|
||||||
- Committed all work with story-driven commit messages
|
|
||||||
- Created PR #10: https://github.com/zenchantlive/beadboard/pull/10
|
|
||||||
|
|
||||||
**Current branch:** `feat/bb-ui2` (branched from recovery branch)
|
### Phase 0 + 1 (done, committed as `7d37d02` and `a2e523b`)
|
||||||
|
- `unified-shell.tsx`: wired `blockedOnly` to SocialPage, TopBar with live counts
|
||||||
|
- `thread-drawer.tsx`: dynamic status instead of hardcoded "In Progress"
|
||||||
|
- `social-page.tsx`: fixed `onJumpToActivity` dead URL
|
||||||
|
- `contextual-right-panel.tsx`: added `taskId` branch (ThreadDrawer embedded) and `swarmId` branch (MissionInspector via SwarmIdBranch inner component)
|
||||||
|
- `AGENTS.md`: documented WSL2 mirrored networking workaround for mixed environments
|
||||||
|
|
||||||
## Beads to Complete This Session
|
### Why we pivoted to beadboard-550
|
||||||
|
The frontend reads `issues.jsonl` as its data source, but `bd` in dolt-native mode writes to a Dolt SQL server (`127.0.0.1:3307`). In mixed WSL2+Windows environments (and whenever Windows `bd` fails with a CGO error), the JSONL gets stale and the frontend shows outdated data.
|
||||||
|
|
||||||
### bb-ui2.6: TopBar (1.3)
|
The right fix: **BeadBoard connects to Dolt directly via `mysql2`** — same MySQL wire protocol, no CGO needed, no sync step, and it unlocks Dolt's time-travel version history for future history/audit views.
|
||||||
**Location:** `src/components/shared/top-bar.tsx`
|
|
||||||
**Dependency:** ✅ bb-ui2.5 (UnifiedShell) is CLOSED
|
|
||||||
|
|
||||||
Create top navigation bar with:
|
---
|
||||||
- Three view tabs: Social, Graph, Swarm
|
|
||||||
- Active state indicator (bold text, accent underline)
|
## Active Epic: beadboard-550
|
||||||
- Placeholder filter/search inputs
|
|
||||||
- Wire tab clicks to `useUrlState.setView`
|
|
||||||
|
|
||||||
```
|
```
|
||||||
┌─────────────────────────────────────────────────────────┐
|
bd show beadboard-550
|
||||||
│ [Social] [Graph] [Swarm] │ [🔍 filter] [⚙ settings] │
|
|
||||||
└─────────────────────────────────────────────────────────┘
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### bb-ui2.7: LeftPanel (1.4)
|
**4 sequential child tasks:**
|
||||||
**Location:** `src/components/shared/left-panel.tsx`
|
|
||||||
**Dependency:** ✅ bb-ui2.5 (UnifiedShell) is CLOSED
|
|
||||||
|
|
||||||
Create left sidebar with:
|
| Bead | Status | What |
|
||||||
- Channel tree for epic filtering
|
|---|---|---|
|
||||||
- Fetch epics from bd API
|
| `beadboard-550.1` | in_progress (mysql2 installed, bead claimed) | Install mysql2, create `src/lib/dolt-client.ts` |
|
||||||
- Expandable tree structure
|
| `beadboard-550.2` | blocked on 550.1 | `readIssuesViaDolt()` — JOIN issues+deps+labels |
|
||||||
- Project scope controls
|
| `beadboard-550.3` | blocked on 550.2 | Wire Dolt as primary path in `readIssuesFromDisk()` |
|
||||||
- Responsive collapse (desktop: 13rem, tablet: collapsed, mobile: hidden)
|
| `beadboard-550.4` | blocked on 550.3 | Verify SSE/watcher still fires, remove manual export from AGENTS.md |
|
||||||
|
|
||||||
```
|
---
|
||||||
┌──────────────┐
|
|
||||||
│ CHANNELS │
|
|
||||||
├──────────────┤
|
|
||||||
│ ▼ bb-ui2 │
|
|
||||||
│ ▶ bb-ui2.0 │
|
|
||||||
│ ▼ bb-buff │
|
|
||||||
├──────────────┤
|
|
||||||
│ SCOPE │
|
|
||||||
└──────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
### bb-ui2.8: RightPanel (1.5)
|
## Session Start Protocol
|
||||||
**Location:** `src/components/shared/right-panel.tsx`
|
|
||||||
**Dependency:** ✅ bb-ui2.5 (UnifiedShell) is CLOSED
|
|
||||||
|
|
||||||
Create right panel with responsive behavior:
|
|
||||||
- Desktop (>=1024px): Fixed sidebar 17rem, always visible
|
|
||||||
- Tablet (768-1024px): Slide-over from right, backdrop
|
|
||||||
- Mobile (<768px): Full-screen drawer
|
|
||||||
|
|
||||||
Also create: `src/hooks/use-responsive.ts`
|
|
||||||
|
|
||||||
## Existing Components (Do Not Recreate)
|
|
||||||
|
|
||||||
- `src/components/shared/unified-shell.tsx` - Main 3-panel grid layout ✅
|
|
||||||
- `src/components/shared/base-card.tsx` - Card primitive ✅
|
|
||||||
- `src/components/shared/agent-avatar.tsx` - Avatar with liveness ✅
|
|
||||||
- `src/components/shared/status-badge.tsx` - Status display ✅
|
|
||||||
- `src/hooks/use-url-state.ts` - URL state management ✅
|
|
||||||
- `src/lib/social-cards.ts` - Social data builder ✅
|
|
||||||
- `src/lib/swarm-cards.ts` - Swarm data builder ✅
|
|
||||||
- `src/components/shared/workflow-graph.tsx` - Graph component ✅
|
|
||||||
|
|
||||||
## Key Hooks to Use
|
|
||||||
|
|
||||||
- `useUrlState` from `src/hooks/use-url-state.ts` for view/tab state
|
|
||||||
- Create `useResponsive` for breakpoint detection (bb-ui2.8)
|
|
||||||
|
|
||||||
## Design Tokens
|
|
||||||
|
|
||||||
Earthy-dark tokens are in `src/app/globals.css`:
|
|
||||||
- `--color-accent-green: #7CB97A`
|
|
||||||
- `--color-accent-amber: #D4A574`
|
|
||||||
- `--color-accent-teal: #5BA8A0`
|
|
||||||
- `--liveness-active/stale/stuck/dead` for agent states
|
|
||||||
|
|
||||||
## Verification Commands
|
|
||||||
|
|
||||||
After each bead:
|
|
||||||
```bash
|
|
||||||
npm run typecheck
|
|
||||||
npm run lint
|
|
||||||
npm run test
|
|
||||||
```
|
|
||||||
|
|
||||||
## Workflow
|
|
||||||
|
|
||||||
1. Claim bead: `bd update <id> --status in_progress --notes "<plan>"`
|
|
||||||
2. Write failing tests first (TDD)
|
|
||||||
3. Implement minimal code to pass
|
|
||||||
4. Run verification gates
|
|
||||||
5. Close bead: `bd close <id> --reason "<what was completed>"`
|
|
||||||
6. Commit with story-driven message
|
|
||||||
|
|
||||||
## Session Start Commands
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Check current branch
|
cd /mnt/c/Users/Zenchant/codex/beadboard
|
||||||
git branch
|
bd show beadboard-550.1 # read the full spec
|
||||||
|
bd ready # confirm 550.1 is the only unblocked task
|
||||||
# Verify we're on feat/bb-ui2
|
npm run typecheck # baseline should pass (pre-existing status-badge error is expected)
|
||||||
# If not: git checkout feat/bb-ui2
|
|
||||||
|
|
||||||
# Check bead status
|
|
||||||
bd show bb-ui2.6
|
|
||||||
bd show bb-ui2.7
|
|
||||||
bd show bb-ui2.8
|
|
||||||
|
|
||||||
# Claim first bead
|
|
||||||
bd update bb-ui2.6 --status in_progress --notes "Starting TopBar implementation"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Important Reminders
|
---
|
||||||
|
|
||||||
1. **Commit frequently** - The corruption incident taught us that uncommitted work is at risk
|
## Key Technical Context
|
||||||
2. **Run gates before closing beads** - typecheck, lint, test must all pass
|
|
||||||
3. **Use closed beads for commit messages** - Reference the bead ID and describe the story
|
|
||||||
4. **Test responsive behavior** - Check at 390px, 768px, 1440px widths
|
|
||||||
5. **Wire to useUrlState** - URL is the single source of truth for view state
|
|
||||||
|
|
||||||
|
### Dolt schema (confirmed this session)
|
||||||
|
|
||||||
|
The Dolt server runs at `127.0.0.1:3307`, database `beadboard`. Key tables:
|
||||||
|
|
||||||
|
- **`issues`** — main table, all fields including `metadata` (JSON column), `status`, `issue_type`, `priority`, `close_reason`, etc.
|
||||||
|
- **`dependencies`** — `(issue_id, depends_on_id, type, created_at, created_by)` — maps to `BeadDependency[]`
|
||||||
|
- **`labels`** — `(issue_id, label)` — maps to `string[]`
|
||||||
|
|
||||||
|
Connection config lives in `.beads/metadata.json`:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"database": "dolt",
|
||||||
|
"dolt_server_port": 3307,
|
||||||
|
"dolt_database": "beadboard",
|
||||||
|
"backend": "dolt"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Host defaults to `127.0.0.1` (not in metadata.json).
|
||||||
|
|
||||||
|
### Current read path (what to replace)
|
||||||
|
|
||||||
|
`src/app/page.tsx` calls `readIssuesForScope({ preferBd: true })`:
|
||||||
|
1. `preferBd: true` → `readIssuesViaBd()` → runs `bd list --all --json` via CLI → works in WSL2, fails in Windows (CGO error)
|
||||||
|
2. Falls back to `readIssuesFromDisk()` → reads `issues.jsonl` → stale
|
||||||
|
|
||||||
|
Target: replace step 1 with `readIssuesViaDolt()` → `mysql2` → always works regardless of platform.
|
||||||
|
|
||||||
|
### BeadIssue shape (what mysql2 rows must normalize to)
|
||||||
|
|
||||||
|
See `src/lib/types.ts` for the full `BeadIssue` interface. Key fields:
|
||||||
|
- `id`, `title`, `description`, `status`, `priority`, `issue_type`
|
||||||
|
- `labels: string[]` — from `labels` table
|
||||||
|
- `dependencies: BeadDependency[]` — from `dependencies` table
|
||||||
|
- `created_at`, `updated_at`, `closed_at` — ISO strings (Dolt returns Date objects from mysql2)
|
||||||
|
- `metadata: Record<string, unknown>` — Dolt stores as JSON column, mysql2 auto-parses to object
|
||||||
|
|
||||||
|
### normalizeBdIssue() already exists
|
||||||
|
|
||||||
|
`src/lib/read-issues.ts` has `normalizeBdIssue()` which handles the JSON→BeadIssue mapping from `bd list --json` output. The Dolt SQL rows will have the same field names, so reuse this function (or factor it out) for 550.2.
|
||||||
|
|
||||||
|
### SSE / watcher (concern for 550.4)
|
||||||
|
|
||||||
|
`src/lib/watcher.ts` watches `.beads/issues.jsonl` + `.beads/last_touched` for changes and fires SSE events. Need to check whether `bd` still updates `last_touched` when writing to Dolt — if yes, watcher fires correctly and no change needed. If no, need a lightweight poll.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Skills to Use
|
||||||
|
|
||||||
|
This is an implementation task — use the standard hyperpowers workflow:
|
||||||
|
|
||||||
|
```
|
||||||
|
hyperpowers:executing-plans — execute one task at a time, STOP after each
|
||||||
|
hyperpowers:test-driven-development — write test before implementation
|
||||||
|
hyperpowers:verification-before-completion — run typecheck+lint+test before closing any bead
|
||||||
|
```
|
||||||
|
|
||||||
|
Per `hyperpowers:executing-plans`: execute ONE bead, verify, close it, STOP for user review, then run `/hyperpowers:execute-plan` again to continue.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Files to Read Before Starting
|
||||||
|
|
||||||
|
```
|
||||||
|
src/lib/read-issues.ts — current read path, normalizeBdIssue(), readIssuesViaBd()
|
||||||
|
src/lib/types.ts — BeadIssue, BeadDependency interfaces
|
||||||
|
src/lib/bridge.ts — runBdCommand (the CLI path being replaced)
|
||||||
|
src/app/page.tsx — how preferBd: true is called
|
||||||
|
.beads/metadata.json — Dolt connection config
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verification Gates (every bead before closing)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run typecheck && npm run lint && npm run test
|
||||||
|
```
|
||||||
|
|
||||||
|
Pre-existing known failure: `status-badge.tsx TS2307: Cannot find module '@/lib/types'` — ignore, it predates this work.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What Comes After beadboard-550
|
||||||
|
|
||||||
|
The UX phases (Phase 2–5) are still waiting:
|
||||||
|
- **Phase 2** (`beadboard-0fi`) — operator identity (now unblocked since Phase 1 closed)
|
||||||
|
- **Phase 3** (`beadboard-8ij`) — coordination layer
|
||||||
|
- **Phase 4** (`beadboard-x3l`) — agent presence
|
||||||
|
- **Phase 5** (`beadboard-d2x`) — blocked triage modal
|
||||||
|
|
||||||
|
But those have lower urgency than 550 (data infrastructure correctness > UI features).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Platform Note (WSL2 + Windows)
|
||||||
|
|
||||||
|
The Dolt server runs in WSL2 at `127.0.0.1:3307`. If the frontend runs in Windows PowerShell, enable WSL2 mirrored networking first (one-time):
|
||||||
|
|
||||||
|
```
|
||||||
|
C:\Users\<you>\.wslconfig:
|
||||||
|
[wsl2]
|
||||||
|
networkingMode=mirrored
|
||||||
|
```
|
||||||
|
|
||||||
|
Then `wsl --shutdown`. Not required for single-platform setups. See `AGENTS.md` Data Backend section for full details.
|
||||||
|
|
|
||||||
126
package-lock.json
generated
126
package-lock.json
generated
|
|
@ -29,6 +29,7 @@
|
||||||
"dagre": "^0.8.5",
|
"dagre": "^0.8.5",
|
||||||
"framer-motion": "^11.18.2",
|
"framer-motion": "^11.18.2",
|
||||||
"lucide-react": "^0.564.0",
|
"lucide-react": "^0.564.0",
|
||||||
|
"mysql2": "^3.18.2",
|
||||||
"next": "15.5.7",
|
"next": "15.5.7",
|
||||||
"react": "19.2.1",
|
"react": "19.2.1",
|
||||||
"react-dom": "19.2.1",
|
"react-dom": "19.2.1",
|
||||||
|
|
@ -6279,6 +6280,15 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/aws-ssl-profiles": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/axe-core": {
|
"node_modules/axe-core": {
|
||||||
"version": "4.11.1",
|
"version": "4.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz",
|
||||||
|
|
@ -7009,6 +7019,15 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/denque": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/detect-libc": {
|
"node_modules/detect-libc": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
||||||
|
|
@ -8142,6 +8161,15 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/generate-function": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"is-property": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/generator-function": {
|
"node_modules/generator-function": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
|
||||||
|
|
@ -8420,6 +8448,22 @@
|
||||||
"node": ">=10.17.0"
|
"node": ">=10.17.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/iconv-lite": {
|
||||||
|
"version": "0.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
|
||||||
|
"integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/icss-utils": {
|
"node_modules/icss-utils": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
|
||||||
|
|
@ -8769,6 +8813,12 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/is-property": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/is-regex": {
|
"node_modules/is-regex": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
|
||||||
|
|
@ -9213,6 +9263,12 @@
|
||||||
"integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
|
"integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/long": {
|
||||||
|
"version": "5.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
|
||||||
|
"integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
|
||||||
|
"license": "Apache-2.0"
|
||||||
|
},
|
||||||
"node_modules/loose-envify": {
|
"node_modules/loose-envify": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||||
|
|
@ -9238,6 +9294,21 @@
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/lru.min": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"bun": ">=1.0.0",
|
||||||
|
"deno": ">=1.30.0",
|
||||||
|
"node": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wellwelwel"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/lucide-react": {
|
"node_modules/lucide-react": {
|
||||||
"version": "0.564.0",
|
"version": "0.564.0",
|
||||||
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.564.0.tgz",
|
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.564.0.tgz",
|
||||||
|
|
@ -9388,6 +9459,28 @@
|
||||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/mysql2": {
|
||||||
|
"version": "3.18.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.18.2.tgz",
|
||||||
|
"integrity": "sha512-UfEShBFAZZEAKjySnTUuE7BgqkYT4mx+RjoJ5aqtmwSSvNcJ/QxQPXz/y3jSxNiVRedPfgccmuBtiPCSiEEytw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"aws-ssl-profiles": "^1.1.2",
|
||||||
|
"denque": "^2.1.0",
|
||||||
|
"generate-function": "^2.3.1",
|
||||||
|
"iconv-lite": "^0.7.2",
|
||||||
|
"long": "^5.3.2",
|
||||||
|
"lru.min": "^1.1.4",
|
||||||
|
"named-placeholders": "^1.1.6",
|
||||||
|
"sql-escaper": "^1.3.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">= 8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/mz": {
|
"node_modules/mz": {
|
||||||
"version": "2.7.0",
|
"version": "2.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
|
||||||
|
|
@ -9399,6 +9492,18 @@
|
||||||
"thenify-all": "^1.0.0"
|
"thenify-all": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/named-placeholders": {
|
||||||
|
"version": "1.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz",
|
||||||
|
"integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"lru.min": "^1.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.11",
|
"version": "3.3.11",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
||||||
|
|
@ -11249,6 +11354,12 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/safer-buffer": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/scheduler": {
|
"node_modules/scheduler": {
|
||||||
"version": "0.27.0",
|
"version": "0.27.0",
|
||||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
|
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
|
||||||
|
|
@ -11535,6 +11646,21 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/sql-escaper": {
|
||||||
|
"version": "1.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/sql-escaper/-/sql-escaper-1.3.3.tgz",
|
||||||
|
"integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"bun": ">=1.0.0",
|
||||||
|
"deno": ">=2.0.0",
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/mysqljs/sql-escaper?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/stable-hash": {
|
"node_modules/stable-hash": {
|
||||||
"version": "0.0.5",
|
"version": "0.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz",
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
"typecheck": "tsc --noEmit",
|
"typecheck": "tsc --noEmit",
|
||||||
"test": "node --test tests/bootstrap.test.mjs && node --import tsx --test tests/components/shared/base-card.test.tsx && node --import tsx --test tests/components/shared/agent-avatar.test.tsx && node --import tsx --test tests/components/sessions/sessions-header.test.ts && node --import tsx --test tests/components/sessions/agent-station-logic.test.ts && node --import tsx --test tests/lib/parser.test.ts && node --import tsx --test tests/lib/pathing.test.ts && node --import tsx --test tests/components/shared/left-panel.test.tsx && node --import tsx --test tests/components/shared/top-bar.test.tsx && node --import tsx --test tests/components/shared/mobile-nav.test.tsx && node --import tsx --test tests/components/swarm/swarm-card.test.tsx && node --import tsx --test tests/hooks/url-state-integration.test.ts && node --import tsx --test tests/hooks/use-graph-analysis.test.ts && node --import tsx --test tests/components/graph/smart-dag.test.tsx && node --import tsx --test tests/components/unified-shell.test.tsx && node --import tsx --test tests/components/graph/graph-node-labels.test.tsx && node --import tsx --test tests/components/graph/graph-node-assign.test.tsx",
|
"test": "node --test tests/bootstrap.test.mjs && node --import tsx --test tests/components/shared/base-card.test.tsx && node --import tsx --test tests/components/shared/agent-avatar.test.tsx && node --import tsx --test tests/components/sessions/sessions-header.test.ts && node --import tsx --test tests/components/sessions/agent-station-logic.test.ts && node --import tsx --test tests/lib/parser.test.ts && node --import tsx --test tests/lib/pathing.test.ts && node --import tsx --test tests/components/shared/left-panel.test.tsx && node --import tsx --test tests/components/shared/top-bar.test.tsx && node --import tsx --test tests/components/shared/mobile-nav.test.tsx && node --import tsx --test tests/components/swarm/swarm-card.test.tsx && node --import tsx --test tests/hooks/url-state-integration.test.ts && node --import tsx --test tests/hooks/use-graph-analysis.test.ts && node --import tsx --test tests/components/graph/smart-dag.test.tsx && node --import tsx --test tests/components/unified-shell.test.tsx && node --import tsx --test tests/components/graph/graph-node-labels.test.tsx && node --import tsx --test tests/components/graph/graph-node-assign.test.tsx && node --import tsx --test tests/lib/coord-schema.test.ts && node --import tsx --test tests/lib/coord-events.test.ts && node --import tsx --test tests/api/coord-events-route.test.ts && node --import tsx --test tests/lib/coord-projections-inbox.test.ts && node --import tsx --test tests/lib/coord-projections-reservations.test.ts && node --import tsx --test tests/components/sessions/conversation-drawer-coord.test.tsx",
|
||||||
"video": "remotion preview src/video/index.ts",
|
"video": "remotion preview src/video/index.ts",
|
||||||
"video:render": "remotion render src/video/index.ts Main out/video.mp4",
|
"video:render": "remotion render src/video/index.ts Main out/video.mp4",
|
||||||
"video:thumbnail": "remotion still src/video/index.ts Main out/thumbnail.png --frame=60"
|
"video:thumbnail": "remotion still src/video/index.ts Main out/thumbnail.png --frame=60"
|
||||||
|
|
@ -35,6 +35,7 @@
|
||||||
"dagre": "^0.8.5",
|
"dagre": "^0.8.5",
|
||||||
"framer-motion": "^11.18.2",
|
"framer-motion": "^11.18.2",
|
||||||
"lucide-react": "^0.564.0",
|
"lucide-react": "^0.564.0",
|
||||||
|
"mysql2": "^3.18.2",
|
||||||
"next": "15.5.7",
|
"next": "15.5.7",
|
||||||
"react": "19.2.1",
|
"react": "19.2.1",
|
||||||
"react-dom": "19.2.1",
|
"react-dom": "19.2.1",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue