Turn Ghostwriter's flat message list into a tree structure, enabling Claude.ai/ChatGPT-style branching conversations. **Data model**: Add `parentMessageId` and `activeChildId` to messages, `activeRootMessageId` to threads. Migration backfills existing messages into a linear chain and links regenerated messages as siblings. **Backend**: Tree-walking queries (getActivePathFromRoot, getAncestorPath, getSiblingsOf), rewritten history builder that follows the ancestor path, new editMessage and switchBranch services, regenerate now works on any assistant message (not just the latest). **Frontend**: BranchNavigator component (← 2/3 → arrows), inline edit on user messages, per-message regenerate on assistant messages, regenerate button removed from composer (now per-message). **Infra**: Pin Node 22 via Volta to prevent ABI mismatches with better-sqlite3 across environments.
36 lines
1.2 KiB
JSON
36 lines
1.2 KiB
JSON
{
|
|
"name": "job-ops",
|
|
"private": true,
|
|
"workspaces": [
|
|
"orchestrator",
|
|
"docs-site",
|
|
"extractors/*",
|
|
"shared"
|
|
],
|
|
"scripts": {
|
|
"test:all": "npm --workspace orchestrator run test:run",
|
|
"check:types:shared": "npm --workspace shared run check:types",
|
|
"check:types": "npm --workspace shared run check:types && npm --workspace orchestrator run check:types",
|
|
"check:types:ukvisajobs": "npm --workspace ukvisajobs-extractor run check:types",
|
|
"check:all": "./orchestrator/node_modules/.bin/biome ci .",
|
|
"format:all": "./orchestrator/node_modules/.bin/biome format . --write",
|
|
"check:types:gradcracker": "npm --workspace gradcracker-extractor run check:types",
|
|
"docs:dev": "npm --workspace docs-site run start",
|
|
"docs:build": "npm --workspace docs-site run build",
|
|
"check:docs": "npm --workspace docs-site run build",
|
|
"docs:serve": "npm --workspace docs-site run serve",
|
|
"docs:version": "npm --workspace docs-site run docs:version",
|
|
"release:set-version": "node ./scripts/set-orchestrator-version.mjs",
|
|
"knip": "knip"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^25.2.3",
|
|
"knip": "^5.83.1",
|
|
"tsx": "^4.19.2",
|
|
"typescript": "^5.9.3"
|
|
},
|
|
"volta": {
|
|
"node": "22.22.1"
|
|
}
|
|
}
|