journal/devtool.json.bak-20260301-155008
Jacob Schmidt 0d77300c22 feat: Project Journal backend monorepo
Monorepo with centralized build props, npm workspaces, LlamaSharp AI,
SQLite/SQLCipher storage, Svelte frontend, and unified smoke tests.

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-02 20:56:26 -06:00

678 lines
16 KiB
Plaintext

{
"name": "Project Journal",
"version": "0.1.0",
"targets": [],
"workflows": [
{
"id": "sidecar",
"label": "Publish Sidecar",
"description": "Build Journal.Sidecar as self-contained exe \u2192 output/",
"group": "Build",
"dependsOn": [],
"steps": [
{
"id": "sidecar:run",
"label": "Publish Sidecar",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/publish-sidecar.ps1",
"-Configuration",
"Release",
"-Runtime",
"win-x64"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "web",
"label": "Build Web UI",
"description": "Build SvelteKit bundle \u2192 Journal.App/build/",
"group": "Build",
"dependsOn": [],
"steps": [
{
"id": "web:run",
"label": "Build Web UI",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/publish-app.ps1",
"-Target",
"web"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "node",
"installPolicy": "Prompt"
},
{
"tool": "npm",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "sync-output",
"label": "Sync Build Assets to Output",
"description": "Sweep repo for newest builds (Web/Sidecar/Gateway/Tauri) and copy them to the output dir",
"group": "Build",
"dependsOn": [],
"steps": [
{
"id": "sync-output:run",
"label": "Sync Build Assets to Output",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/sync-output.ps1"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "webgateway",
"label": "Publish WebGateway",
"description": "Publish ASP.NET host with embedded web UI \u2192 output/webgateway/",
"group": "Build",
"dependsOn": [
"web"
],
"steps": [
{
"id": "webgateway:run",
"label": "Publish WebGateway",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/publish-webgateway.ps1",
"-Configuration",
"Release",
"-Runtime",
"win-x64"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
},
{
"tool": "node",
"installPolicy": "Prompt"
},
{
"tool": "npm",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "tauri",
"label": "Build Tauri Desktop App",
"description": "Build desktop exe (no installer) \u2192 Journal.App/src-tauri/target/release/",
"group": "Build",
"dependsOn": [
"sidecar"
],
"steps": [
{
"id": "tauri:run",
"label": "Build Tauri Desktop App",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/publish-app.ps1",
"-Target",
"tauri",
"-TauriBundles",
"none"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "node",
"installPolicy": "Prompt"
},
{
"tool": "npm",
"installPolicy": "Prompt"
},
{
"tool": "cargo",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "tauri-nsis",
"label": "Build Tauri \u002B NSIS Installer",
"description": "Build desktop exe with NSIS installer package",
"group": "Build",
"dependsOn": [
"sidecar"
],
"steps": [
{
"id": "tauri-nsis:run",
"label": "Build Tauri \u002B NSIS Installer",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/publish-app.ps1",
"-Target",
"tauri",
"-TauriBundles",
"nsis"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "node",
"installPolicy": "Prompt"
},
{
"tool": "npm",
"installPolicy": "Prompt"
},
{
"tool": "cargo",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "build-dotnet",
"label": "Build .NET Projects",
"description": "dotnet build \u2014 all C# projects in solution",
"group": "Build",
"dependsOn": [],
"steps": [
{
"id": "build-dotnet:run",
"label": "Build .NET Projects",
"command": "dotnet",
"args": [
"build"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "all",
"label": "Full Release Build \u2726",
"description": "Sidecar \u2192 Web \u2192 WebGateway \u2192 Tauri, in dependency order",
"group": "Build",
"dependsOn": [
"sidecar",
"web",
"webgateway",
"tauri"
],
"steps": []
},
{
"id": "run-gateway-dev",
"label": "Run WebGateway Server (Dev)",
"description": "Start HTTP gateway via \u0027dotnet run\u0027 at http://localhost:5180",
"group": "Dev",
"dependsOn": [],
"steps": [
{
"id": "run-gateway-dev:run",
"label": "Run WebGateway Server (Dev)",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/run-webgateway.ps1",
"-Mode",
"Dev"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "run-gateway-prod",
"label": "Run WebGateway Server (Output)",
"description": "Start compiled gateway from output/webgateway at http://localhost:5180",
"group": "Dev",
"dependsOn": [],
"steps": [
{
"id": "run-gateway-prod:run",
"label": "Run WebGateway Server (Output)",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/run-webgateway.ps1",
"-Mode",
"Output"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "test",
"label": "Run Smoke Tests",
"description": "Run all ~80 integration tests in Journal.SmokeTests",
"group": "Test",
"dependsOn": [],
"steps": [
{
"id": "test:run",
"label": "Run Smoke Tests",
"command": "dotnet",
"args": [
"run",
"--project",
"Journal.SmokeTests/Journal.SmokeTests.csproj"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "gate",
"label": "Run Migration Gate",
"description": "Full build \u002B smoke tests \u002B parity check",
"group": "Test",
"dependsOn": [],
"steps": [
{
"id": "gate:run",
"label": "Run Migration Gate",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/migration-gate.ps1"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "nuget-export",
"label": "Export NuGet Cache",
"description": "Prime and export .nuget cache to zip for offline use",
"group": "Cache",
"dependsOn": [],
"steps": [
{
"id": "nuget-export:run",
"label": "Export NuGet Cache",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/nuget-export-cache.ps1"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "nuget-import",
"label": "Import NuGet Cache",
"description": "Import cache zip and validate restore",
"group": "Cache",
"dependsOn": [],
"steps": [
{
"id": "nuget-import:run",
"label": "Import NuGet Cache",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/nuget-import-cache.ps1"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "npm-clean",
"label": "Clean Node Modules",
"description": "Remove Journal.App node_modules (kills node/tauri first)",
"group": "System",
"dependsOn": [],
"steps": [
{
"id": "npm-clean:run",
"label": "Clean Node Modules",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/npm-clean.ps1"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "node",
"installPolicy": "Prompt"
},
{
"tool": "npm",
"installPolicy": "Prompt"
}
]
}
]
},
{
"id": "stage-output",
"label": "Stage Output Bundle",
"description": "Publish sidecar \u002B web \u002B webgateway \u002B tauri, then stage journalapp.exe into output/",
"group": "Build",
"dependsOn": [],
"steps": [
{
"id": "stage-output:run",
"label": "Stage Output Bundle",
"command": "pwsh",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"scripts/publish-output.ps1"
],
"workingDir": ".",
"action": null,
"actionArgs": [],
"requires": [
{
"tool": "python",
"installPolicy": "Prompt"
},
{
"tool": "dotnet",
"installPolicy": "Prompt"
},
{
"tool": "node",
"installPolicy": "Prompt"
},
{
"tool": "npm",
"installPolicy": "Prompt"
},
{
"tool": "cargo",
"installPolicy": "Prompt"
}
]
}
]
}
],
"env": [
{
"key": "JOURNAL_AI_PROVIDER",
"description": "AI provider bridge mode",
"default": "none",
"options": [
"none",
"python-sidecar"
]
},
{
"key": "JOURNAL_LOG_LEVEL",
"description": "Log verbosity for C# backend",
"default": "warning",
"options": [
"trace",
"debug",
"information",
"warning",
"error",
"critical"
]
},
{
"key": "JOURNAL_NLP_BACKEND",
"description": "Python NLP backend selection",
"default": "auto",
"options": [
"auto",
"spacy",
"fallback"
]
},
{
"key": "JOURNAL_PROJECT_ROOT",
"description": "Override project root path (blank = auto-detect)",
"default": "",
"options": []
},
{
"key": "JOURNAL_VAULT_DIR",
"description": "Override vault directory path",
"default": "",
"options": []
},
{
"key": "JOURNAL_DATA_DIR",
"description": "Override decrypted data directory path",
"default": "",
"options": []
}
],
"toolchains": {
"python": {
"executable": "python3.14",
"windowsExecutable": "py",
"launcherVersion": "-3.14",
"venvDir": ".venv",
"profiles": [
{
"id": "cpu",
"label": "CPU only (default)",
"requirementsFile": "requirements_cpu_only.txt",
"extraIndexUrl": "https://download.pytorch.org/whl/cpu",
"postInstallCommands": []
},
{
"id": "gpu",
"label": "GPU / CUDA",
"requirementsFile": "requirements_gpu.txt",
"extraIndexUrl": null,
"postInstallCommands": []
},
{
"id": "nlp",
"label": "NLP / spaCy (optional)",
"requirementsFile": "requirements_nlp_optional.txt",
"extraIndexUrl": null,
"postInstallCommands": [
"spacy download en_core_web_sm"
]
}
],
"pipScript": "scripts/pip-min.ps1"
},
"node": {
"packageManager": "npm",
"workingDir": "Journal.App"
}
},
"tooling": null,
"project": null,
"debug": null
}