Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
{
"name" : "frontend" ,
"version" : "0.0.0" ,
"lockfileVersion" : 3 ,
"requires" : true ,
"packages" : {
"" : {
"name" : "frontend" ,
"version" : "0.0.0" ,
"dependencies" : {
"vue" : "^3.5.30" ,
2026-03-18 07:57:15 +02:00
"vue-i18n" : "^11.3.0" ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"vue-router" : "^4.6.4"
} ,
"devDependencies" : {
"@types/node" : "^24.12.0" ,
"@vitejs/plugin-vue" : "^6.0.5" ,
2026-03-15 20:02:01 +02:00
"@vue/test-utils" : "^2.4.6" ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"@vue/tsconfig" : "^0.9.0" ,
"autoprefixer" : "^10.4.27" ,
2026-03-15 20:02:01 +02:00
"jsdom" : "^29.0.0" ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"postcss" : "^8.5.8" ,
"tailwindcss" : "^3.4.19" ,
"typescript" : "~5.9.3" ,
"vite" : "^8.0.0" ,
2026-03-15 20:02:01 +02:00
"vitest" : "^4.1.0" ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"vue-tsc" : "^3.2.5"
}
} ,
"node_modules/@alloc/quick-lru" : {
"version" : "5.2.0" ,
"resolved" : "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" ,
"integrity" : "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@asamuzakjp/css-color" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.0.1.tgz" ,
"integrity" : "sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@csstools/css-calc" : "^3.1.1" ,
"@csstools/css-color-parser" : "^4.0.2" ,
"@csstools/css-parser-algorithms" : "^4.0.0" ,
"@csstools/css-tokenizer" : "^4.0.0" ,
"lru-cache" : "^11.2.6"
} ,
"engines" : {
"node" : "^20.19.0 || ^22.12.0 || >=24.0.0"
}
} ,
"node_modules/@asamuzakjp/dom-selector" : {
"version" : "7.0.3" ,
"resolved" : "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.0.3.tgz" ,
"integrity" : "sha512-Q6mU0Z6bfj6YvnX2k9n0JxiIwrCFN59x/nWmYQnAqP000ruX/yV+5bp/GRcF5T8ncvfwJQ7fgfP74DlpKExILA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@asamuzakjp/nwsapi" : "^2.3.9" ,
"bidi-js" : "^1.0.3" ,
"css-tree" : "^3.2.1" ,
"is-potential-custom-element-name" : "^1.0.1" ,
"lru-cache" : "^11.2.7"
} ,
"engines" : {
"node" : "^20.19.0 || ^22.12.0 || >=24.0.0"
}
} ,
"node_modules/@asamuzakjp/nwsapi" : {
"version" : "2.3.9" ,
"resolved" : "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz" ,
"integrity" : "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@babel/helper-string-parser" : {
"version" : "7.27.1" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" ,
"integrity" : "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/helper-validator-identifier" : {
"version" : "7.28.5" ,
"resolved" : "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" ,
"integrity" : "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
"node_modules/@babel/parser" : {
"version" : "7.29.0" ,
"resolved" : "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz" ,
"integrity" : "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==" ,
"license" : "MIT" ,
"dependencies" : {
"@babel/types" : "^7.29.0"
} ,
"bin" : {
"parser" : "bin/babel-parser.js"
} ,
"engines" : {
"node" : ">=6.0.0"
}
} ,
"node_modules/@babel/types" : {
"version" : "7.29.0" ,
"resolved" : "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz" ,
"integrity" : "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==" ,
"license" : "MIT" ,
"dependencies" : {
"@babel/helper-string-parser" : "^7.27.1" ,
"@babel/helper-validator-identifier" : "^7.28.5"
} ,
"engines" : {
"node" : ">=6.9.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@bramus/specificity" : {
"version" : "2.4.2" ,
"resolved" : "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz" ,
"integrity" : "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"css-tree" : "^3.0.0"
} ,
"bin" : {
"specificity" : "bin/cli.js"
}
} ,
"node_modules/@csstools/color-helpers" : {
"version" : "6.0.2" ,
"resolved" : "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz" ,
"integrity" : "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/csstools"
} ,
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/csstools"
}
] ,
"license" : "MIT-0" ,
"engines" : {
"node" : ">=20.19.0"
}
} ,
"node_modules/@csstools/css-calc" : {
"version" : "3.1.1" ,
"resolved" : "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz" ,
"integrity" : "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/csstools"
} ,
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/csstools"
}
] ,
"license" : "MIT" ,
"engines" : {
"node" : ">=20.19.0"
} ,
"peerDependencies" : {
"@csstools/css-parser-algorithms" : "^4.0.0" ,
"@csstools/css-tokenizer" : "^4.0.0"
}
} ,
"node_modules/@csstools/css-color-parser" : {
"version" : "4.0.2" ,
"resolved" : "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.2.tgz" ,
"integrity" : "sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/csstools"
} ,
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/csstools"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"@csstools/color-helpers" : "^6.0.2" ,
"@csstools/css-calc" : "^3.1.1"
} ,
"engines" : {
"node" : ">=20.19.0"
} ,
"peerDependencies" : {
"@csstools/css-parser-algorithms" : "^4.0.0" ,
"@csstools/css-tokenizer" : "^4.0.0"
}
} ,
"node_modules/@csstools/css-parser-algorithms" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz" ,
"integrity" : "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/csstools"
} ,
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/csstools"
}
] ,
"license" : "MIT" ,
"engines" : {
"node" : ">=20.19.0"
} ,
"peerDependencies" : {
"@csstools/css-tokenizer" : "^4.0.0"
}
} ,
"node_modules/@csstools/css-syntax-patches-for-csstree" : {
"version" : "1.1.1" ,
"resolved" : "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.1.tgz" ,
"integrity" : "sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/csstools"
} ,
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/csstools"
}
] ,
"license" : "MIT-0" ,
"peerDependencies" : {
"css-tree" : "^3.2.1"
} ,
"peerDependenciesMeta" : {
"css-tree" : {
"optional" : true
}
}
} ,
"node_modules/@csstools/css-tokenizer" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz" ,
"integrity" : "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/csstools"
} ,
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/csstools"
}
] ,
"license" : "MIT" ,
"engines" : {
"node" : ">=20.19.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@emnapi/core" : {
"version" : "1.9.0" ,
"resolved" : "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz" ,
"integrity" : "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==" ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"dependencies" : {
"@emnapi/wasi-threads" : "1.2.0" ,
"tslib" : "^2.4.0"
}
} ,
"node_modules/@emnapi/runtime" : {
"version" : "1.9.0" ,
"resolved" : "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz" ,
"integrity" : "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==" ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"dependencies" : {
"tslib" : "^2.4.0"
}
} ,
"node_modules/@emnapi/wasi-threads" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz" ,
"integrity" : "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==" ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"dependencies" : {
"tslib" : "^2.4.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@exodus/bytes" : {
"version" : "1.15.0" ,
"resolved" : "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz" ,
"integrity" : "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : "^20.19.0 || ^22.12.0 || >=24.0.0"
} ,
"peerDependencies" : {
"@noble/hashes" : "^1.8.0 || ^2.0.0"
} ,
"peerDependenciesMeta" : {
"@noble/hashes" : {
"optional" : true
}
}
} ,
2026-03-18 07:57:15 +02:00
"node_modules/@intlify/core-base" : {
"version" : "11.3.0" ,
"resolved" : "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.3.0.tgz" ,
"integrity" : "sha512-NNX5jIwF4TJBe7RtSKDMOA6JD9mp2mRcBHAwt2X+Q8PvnZub0yj5YYXlFu2AcESdgQpEv/5Yx2uOCV/yh7YkZg==" ,
"license" : "MIT" ,
"dependencies" : {
"@intlify/devtools-types" : "11.3.0" ,
"@intlify/message-compiler" : "11.3.0" ,
"@intlify/shared" : "11.3.0"
} ,
"engines" : {
"node" : ">= 16"
} ,
"funding" : {
"url" : "https://github.com/sponsors/kazupon"
}
} ,
"node_modules/@intlify/devtools-types" : {
"version" : "11.3.0" ,
"resolved" : "https://registry.npmjs.org/@intlify/devtools-types/-/devtools-types-11.3.0.tgz" ,
"integrity" : "sha512-G9CNL4WpANWVdUjubOIIS7/D2j/0j+1KJmhBJxHilWNKr9mmt3IjFV3Hq4JoBP23uOoC5ynxz/FHZ42M+YxfGw==" ,
"license" : "MIT" ,
"dependencies" : {
"@intlify/core-base" : "11.3.0" ,
"@intlify/shared" : "11.3.0"
} ,
"engines" : {
"node" : ">= 16"
} ,
"funding" : {
"url" : "https://github.com/sponsors/kazupon"
}
} ,
"node_modules/@intlify/message-compiler" : {
"version" : "11.3.0" ,
"resolved" : "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.3.0.tgz" ,
"integrity" : "sha512-RAJp3TMsqohg/Wa7bVF3cChRhecSYBLrTCQSj7j0UtWVFLP+6iEJoE2zb7GU5fp+fmG5kCbUdzhmlAUCWXiUJw==" ,
"license" : "MIT" ,
"dependencies" : {
"@intlify/shared" : "11.3.0" ,
"source-map-js" : "^1.0.2"
} ,
"engines" : {
"node" : ">= 16"
} ,
"funding" : {
"url" : "https://github.com/sponsors/kazupon"
}
} ,
"node_modules/@intlify/shared" : {
"version" : "11.3.0" ,
"resolved" : "https://registry.npmjs.org/@intlify/shared/-/shared-11.3.0.tgz" ,
"integrity" : "sha512-LC6P/uay7rXL5zZ5+5iRJfLs/iUN8apu9tm8YqQVmW3Uq3X4A0dOFUIDuAmB7gAC29wTHOS3EiN/IosNSz0eNQ==" ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 16"
} ,
"funding" : {
"url" : "https://github.com/sponsors/kazupon"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@isaacs/cliui" : {
"version" : "8.0.2" ,
"resolved" : "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" ,
"integrity" : "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"string-width" : "^5.1.2" ,
"string-width-cjs" : "npm:string-width@^4.2.0" ,
"strip-ansi" : "^7.0.1" ,
"strip-ansi-cjs" : "npm:strip-ansi@^6.0.1" ,
"wrap-ansi" : "^8.1.0" ,
"wrap-ansi-cjs" : "npm:wrap-ansi@^7.0.0"
} ,
"engines" : {
"node" : ">=12"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@jridgewell/gen-mapping" : {
"version" : "0.3.13" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" ,
"integrity" : "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@jridgewell/sourcemap-codec" : "^1.5.0" ,
"@jridgewell/trace-mapping" : "^0.3.24"
}
} ,
"node_modules/@jridgewell/resolve-uri" : {
"version" : "3.1.2" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" ,
"integrity" : "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=6.0.0"
}
} ,
"node_modules/@jridgewell/sourcemap-codec" : {
"version" : "1.5.5" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" ,
"integrity" : "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" ,
"license" : "MIT"
} ,
"node_modules/@jridgewell/trace-mapping" : {
"version" : "0.3.31" ,
"resolved" : "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" ,
"integrity" : "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@jridgewell/resolve-uri" : "^3.1.0" ,
"@jridgewell/sourcemap-codec" : "^1.4.14"
}
} ,
"node_modules/@napi-rs/wasm-runtime" : {
"version" : "1.1.1" ,
"resolved" : "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz" ,
"integrity" : "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==" ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"dependencies" : {
"@emnapi/core" : "^1.7.1" ,
"@emnapi/runtime" : "^1.7.1" ,
"@tybys/wasm-util" : "^0.10.1"
} ,
"funding" : {
"type" : "github" ,
"url" : "https://github.com/sponsors/Brooooooklyn"
}
} ,
"node_modules/@nodelib/fs.scandir" : {
"version" : "2.1.5" ,
"resolved" : "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" ,
"integrity" : "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@nodelib/fs.stat" : "2.0.5" ,
"run-parallel" : "^1.1.9"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/@nodelib/fs.stat" : {
"version" : "2.0.5" ,
"resolved" : "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" ,
"integrity" : "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/@nodelib/fs.walk" : {
"version" : "1.2.8" ,
"resolved" : "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" ,
"integrity" : "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@nodelib/fs.scandir" : "2.1.5" ,
"fastq" : "^1.6.0"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@one-ini/wasm" : {
"version" : "0.1.1" ,
"resolved" : "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz" ,
"integrity" : "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@oxc-project/runtime" : {
"version" : "0.115.0" ,
"resolved" : "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.115.0.tgz" ,
"integrity" : "sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@oxc-project/types" : {
"version" : "0.115.0" ,
"resolved" : "https://registry.npmjs.org/@oxc-project/types/-/types-0.115.0.tgz" ,
"integrity" : "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==" ,
"dev" : true ,
"license" : "MIT" ,
"funding" : {
"url" : "https://github.com/sponsors/Boshen"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@pkgjs/parseargs" : {
"version" : "0.11.0" ,
"resolved" : "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" ,
"integrity" : "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"engines" : {
"node" : ">=14"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@rolldown/binding-android-arm64" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"android"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-darwin-arm64" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"darwin"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-darwin-x64" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"darwin"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-freebsd-x64" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"freebsd"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-linux-arm-gnueabihf" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==" ,
"cpu" : [
"arm"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-linux-arm64-gnu" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-linux-arm64-musl" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-linux-ppc64-gnu" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==" ,
"cpu" : [
"ppc64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-linux-s390x-gnu" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==" ,
"cpu" : [
"s390x"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-linux-x64-gnu" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-linux-x64-musl" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-openharmony-arm64" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"openharmony"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-wasm32-wasi" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==" ,
"cpu" : [
"wasm32"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"dependencies" : {
"@napi-rs/wasm-runtime" : "^1.1.1"
} ,
"engines" : {
"node" : ">=14.0.0"
}
} ,
"node_modules/@rolldown/binding-win32-arm64-msvc" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"win32"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/binding-win32-x64-msvc" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"win32"
] ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
}
} ,
"node_modules/@rolldown/pluginutils" : {
"version" : "1.0.0-rc.2" ,
"resolved" : "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz" ,
"integrity" : "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@standard-schema/spec" : {
"version" : "1.1.0" ,
"resolved" : "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz" ,
"integrity" : "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@tybys/wasm-util" : {
"version" : "0.10.1" ,
"resolved" : "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz" ,
"integrity" : "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==" ,
"dev" : true ,
"license" : "MIT" ,
"optional" : true ,
"dependencies" : {
"tslib" : "^2.4.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@types/chai" : {
"version" : "5.2.3" ,
"resolved" : "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz" ,
"integrity" : "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@types/deep-eql" : "*" ,
"assertion-error" : "^2.0.1"
}
} ,
"node_modules/@types/deep-eql" : {
"version" : "4.0.2" ,
"resolved" : "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz" ,
"integrity" : "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/@types/estree" : {
"version" : "1.0.8" ,
"resolved" : "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" ,
"integrity" : "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@types/node" : {
"version" : "24.12.0" ,
"resolved" : "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz" ,
"integrity" : "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"undici-types" : "~7.16.0"
}
} ,
"node_modules/@vitejs/plugin-vue" : {
"version" : "6.0.5" ,
"resolved" : "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.5.tgz" ,
"integrity" : "sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@rolldown/pluginutils" : "1.0.0-rc.2"
} ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
} ,
"peerDependencies" : {
"vite" : "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" ,
"vue" : "^3.2.25"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@vitest/expect" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz" ,
"integrity" : "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@standard-schema/spec" : "^1.1.0" ,
"@types/chai" : "^5.2.2" ,
"@vitest/spy" : "4.1.0" ,
"@vitest/utils" : "4.1.0" ,
"chai" : "^6.2.2" ,
"tinyrainbow" : "^3.0.3"
} ,
"funding" : {
"url" : "https://opencollective.com/vitest"
}
} ,
"node_modules/@vitest/mocker" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz" ,
"integrity" : "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@vitest/spy" : "4.1.0" ,
"estree-walker" : "^3.0.3" ,
"magic-string" : "^0.30.21"
} ,
"funding" : {
"url" : "https://opencollective.com/vitest"
} ,
"peerDependencies" : {
"msw" : "^2.4.9" ,
"vite" : "^6.0.0 || ^7.0.0 || ^8.0.0-0"
} ,
"peerDependenciesMeta" : {
"msw" : {
"optional" : true
} ,
"vite" : {
"optional" : true
}
}
} ,
"node_modules/@vitest/mocker/node_modules/estree-walker" : {
"version" : "3.0.3" ,
"resolved" : "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" ,
"integrity" : "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@types/estree" : "^1.0.0"
}
} ,
"node_modules/@vitest/pretty-format" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz" ,
"integrity" : "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"tinyrainbow" : "^3.0.3"
} ,
"funding" : {
"url" : "https://opencollective.com/vitest"
}
} ,
"node_modules/@vitest/runner" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz" ,
"integrity" : "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@vitest/utils" : "4.1.0" ,
"pathe" : "^2.0.3"
} ,
"funding" : {
"url" : "https://opencollective.com/vitest"
}
} ,
"node_modules/@vitest/snapshot" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz" ,
"integrity" : "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@vitest/pretty-format" : "4.1.0" ,
"@vitest/utils" : "4.1.0" ,
"magic-string" : "^0.30.21" ,
"pathe" : "^2.0.3"
} ,
"funding" : {
"url" : "https://opencollective.com/vitest"
}
} ,
"node_modules/@vitest/spy" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz" ,
"integrity" : "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==" ,
"dev" : true ,
"license" : "MIT" ,
"funding" : {
"url" : "https://opencollective.com/vitest"
}
} ,
"node_modules/@vitest/utils" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz" ,
"integrity" : "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@vitest/pretty-format" : "4.1.0" ,
"convert-source-map" : "^2.0.0" ,
"tinyrainbow" : "^3.0.3"
} ,
"funding" : {
"url" : "https://opencollective.com/vitest"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@volar/language-core" : {
"version" : "2.4.28" ,
"resolved" : "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz" ,
"integrity" : "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@volar/source-map" : "2.4.28"
}
} ,
"node_modules/@volar/source-map" : {
"version" : "2.4.28" ,
"resolved" : "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz" ,
"integrity" : "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/@volar/typescript" : {
"version" : "2.4.28" ,
"resolved" : "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz" ,
"integrity" : "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@volar/language-core" : "2.4.28" ,
"path-browserify" : "^1.0.1" ,
"vscode-uri" : "^3.0.8"
}
} ,
"node_modules/@vue/compiler-core" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.30.tgz" ,
"integrity" : "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==" ,
"license" : "MIT" ,
"dependencies" : {
"@babel/parser" : "^7.29.0" ,
"@vue/shared" : "3.5.30" ,
"entities" : "^7.0.1" ,
"estree-walker" : "^2.0.2" ,
"source-map-js" : "^1.2.1"
}
} ,
"node_modules/@vue/compiler-dom" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.30.tgz" ,
"integrity" : "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-core" : "3.5.30" ,
"@vue/shared" : "3.5.30"
}
} ,
"node_modules/@vue/compiler-sfc" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.30.tgz" ,
"integrity" : "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==" ,
"license" : "MIT" ,
"dependencies" : {
"@babel/parser" : "^7.29.0" ,
"@vue/compiler-core" : "3.5.30" ,
"@vue/compiler-dom" : "3.5.30" ,
"@vue/compiler-ssr" : "3.5.30" ,
"@vue/shared" : "3.5.30" ,
"estree-walker" : "^2.0.2" ,
"magic-string" : "^0.30.21" ,
"postcss" : "^8.5.8" ,
"source-map-js" : "^1.2.1"
}
} ,
"node_modules/@vue/compiler-ssr" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.30.tgz" ,
"integrity" : "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-dom" : "3.5.30" ,
"@vue/shared" : "3.5.30"
}
} ,
"node_modules/@vue/devtools-api" : {
"version" : "6.6.4" ,
"resolved" : "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz" ,
"integrity" : "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" ,
"license" : "MIT"
} ,
"node_modules/@vue/language-core" : {
"version" : "3.2.5" ,
"resolved" : "https://registry.npmjs.org/@vue/language-core/-/language-core-3.2.5.tgz" ,
"integrity" : "sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@volar/language-core" : "2.4.28" ,
"@vue/compiler-dom" : "^3.5.0" ,
"@vue/shared" : "^3.5.0" ,
"alien-signals" : "^3.0.0" ,
"muggle-string" : "^0.4.1" ,
"path-browserify" : "^1.0.1" ,
"picomatch" : "^4.0.2"
}
} ,
"node_modules/@vue/reactivity" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.30.tgz" ,
"integrity" : "sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/shared" : "3.5.30"
}
} ,
"node_modules/@vue/runtime-core" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.30.tgz" ,
"integrity" : "sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/reactivity" : "3.5.30" ,
"@vue/shared" : "3.5.30"
}
} ,
"node_modules/@vue/runtime-dom" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.30.tgz" ,
"integrity" : "sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/reactivity" : "3.5.30" ,
"@vue/runtime-core" : "3.5.30" ,
"@vue/shared" : "3.5.30" ,
"csstype" : "^3.2.3"
}
} ,
"node_modules/@vue/server-renderer" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.30.tgz" ,
"integrity" : "sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-ssr" : "3.5.30" ,
"@vue/shared" : "3.5.30"
} ,
"peerDependencies" : {
"vue" : "3.5.30"
}
} ,
"node_modules/@vue/shared" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/@vue/shared/-/shared-3.5.30.tgz" ,
"integrity" : "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==" ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/@vue/test-utils" : {
"version" : "2.4.6" ,
"resolved" : "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.6.tgz" ,
"integrity" : "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"js-beautify" : "^1.14.9" ,
"vue-component-type-helpers" : "^2.0.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/@vue/tsconfig" : {
"version" : "0.9.0" ,
"resolved" : "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.9.0.tgz" ,
"integrity" : "sha512-RP+v9Cpbsk1ZVXltCHHkYBr7+624x6gcijJXVjIcsYk7JXqvIpRtMwU2ARLvWDhmy9ffdFYxhsfJnPztADBohQ==" ,
"dev" : true ,
"license" : "MIT" ,
"peerDependencies" : {
"typescript" : "5.x" ,
"vue" : "^3.4.0"
} ,
"peerDependenciesMeta" : {
"typescript" : {
"optional" : true
} ,
"vue" : {
"optional" : true
}
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/abbrev" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz" ,
"integrity" : "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" ,
"dev" : true ,
"license" : "ISC" ,
"engines" : {
"node" : "^14.17.0 || ^16.13.0 || >=18.0.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/alien-signals" : {
"version" : "3.1.2" ,
"resolved" : "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz" ,
"integrity" : "sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/ansi-regex" : {
"version" : "6.2.2" ,
"resolved" : "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" ,
"integrity" : "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=12"
} ,
"funding" : {
"url" : "https://github.com/chalk/ansi-regex?sponsor=1"
}
} ,
"node_modules/ansi-styles" : {
"version" : "6.2.3" ,
"resolved" : "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" ,
"integrity" : "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=12"
} ,
"funding" : {
"url" : "https://github.com/chalk/ansi-styles?sponsor=1"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/any-promise" : {
"version" : "1.3.0" ,
"resolved" : "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" ,
"integrity" : "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/anymatch" : {
"version" : "3.1.3" ,
"resolved" : "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" ,
"integrity" : "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"normalize-path" : "^3.0.0" ,
"picomatch" : "^2.0.4"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/anymatch/node_modules/picomatch" : {
"version" : "2.3.1" ,
"resolved" : "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" ,
"integrity" : "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8.6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/jonschlinkert"
}
} ,
"node_modules/arg" : {
"version" : "5.0.2" ,
"resolved" : "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" ,
"integrity" : "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/assertion-error" : {
"version" : "2.0.1" ,
"resolved" : "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" ,
"integrity" : "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=12"
}
} ,
"node_modules/autoprefixer" : {
"version" : "10.4.27" ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"resolved" : "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz" ,
"integrity" : "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/postcss/"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/autoprefixer"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"browserslist" : "^4.28.1" ,
"caniuse-lite" : "^1.0.30001774" ,
"fraction.js" : "^5.3.4" ,
"picocolors" : "^1.1.1" ,
"postcss-value-parser" : "^4.2.0"
} ,
"bin" : {
"autoprefixer" : "bin/autoprefixer"
} ,
"engines" : {
"node" : "^10 || ^12 || >=14"
} ,
"peerDependencies" : {
"postcss" : "^8.1.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/balanced-match" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" ,
"integrity" : "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/baseline-browser-mapping" : {
"version" : "2.10.8" ,
"resolved" : "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz" ,
"integrity" : "sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==" ,
"dev" : true ,
"license" : "Apache-2.0" ,
"bin" : {
"baseline-browser-mapping" : "dist/cli.cjs"
} ,
"engines" : {
"node" : ">=6.0.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/bidi-js" : {
"version" : "1.0.3" ,
"resolved" : "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz" ,
"integrity" : "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"require-from-string" : "^2.0.2"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/binary-extensions" : {
"version" : "2.3.0" ,
"resolved" : "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" ,
"integrity" : "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/brace-expansion" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" ,
"integrity" : "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"balanced-match" : "^1.0.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/braces" : {
"version" : "3.0.3" ,
"resolved" : "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" ,
"integrity" : "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"fill-range" : "^7.1.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/browserslist" : {
"version" : "4.28.1" ,
"resolved" : "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz" ,
"integrity" : "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/browserslist"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/browserslist"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"baseline-browser-mapping" : "^2.9.0" ,
"caniuse-lite" : "^1.0.30001759" ,
"electron-to-chromium" : "^1.5.263" ,
"node-releases" : "^2.0.27" ,
"update-browserslist-db" : "^1.2.0"
} ,
"bin" : {
"browserslist" : "cli.js"
} ,
"engines" : {
"node" : "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
} ,
"node_modules/camelcase-css" : {
"version" : "2.0.1" ,
"resolved" : "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" ,
"integrity" : "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 6"
}
} ,
"node_modules/caniuse-lite" : {
"version" : "1.0.30001779" ,
"resolved" : "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001779.tgz" ,
"integrity" : "sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/browserslist"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/caniuse-lite"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "CC-BY-4.0"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/chai" : {
"version" : "6.2.2" ,
"resolved" : "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz" ,
"integrity" : "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=18"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/chokidar" : {
"version" : "3.6.0" ,
"resolved" : "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" ,
"integrity" : "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"anymatch" : "~3.1.2" ,
"braces" : "~3.0.2" ,
"glob-parent" : "~5.1.2" ,
"is-binary-path" : "~2.1.0" ,
"is-glob" : "~4.0.1" ,
"normalize-path" : "~3.0.0" ,
"readdirp" : "~3.6.0"
} ,
"engines" : {
"node" : ">= 8.10.0"
} ,
"funding" : {
"url" : "https://paulmillr.com/funding/"
} ,
"optionalDependencies" : {
"fsevents" : "~2.3.2"
}
} ,
"node_modules/chokidar/node_modules/glob-parent" : {
"version" : "5.1.2" ,
"resolved" : "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" ,
"integrity" : "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"is-glob" : "^4.0.1"
} ,
"engines" : {
"node" : ">= 6"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/color-convert" : {
"version" : "2.0.1" ,
"resolved" : "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" ,
"integrity" : "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"color-name" : "~1.1.4"
} ,
"engines" : {
"node" : ">=7.0.0"
}
} ,
"node_modules/color-name" : {
"version" : "1.1.4" ,
"resolved" : "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" ,
"integrity" : "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/commander" : {
"version" : "4.1.1" ,
"resolved" : "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" ,
"integrity" : "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 6"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/config-chain" : {
"version" : "1.1.13" ,
"resolved" : "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" ,
"integrity" : "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"ini" : "^1.3.4" ,
"proto-list" : "~1.2.1"
}
} ,
"node_modules/convert-source-map" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" ,
"integrity" : "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/cross-spawn" : {
"version" : "7.0.6" ,
"resolved" : "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" ,
"integrity" : "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"path-key" : "^3.1.0" ,
"shebang-command" : "^2.0.0" ,
"which" : "^2.0.1"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/css-tree" : {
"version" : "3.2.1" ,
"resolved" : "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz" ,
"integrity" : "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"mdn-data" : "2.27.1" ,
"source-map-js" : "^1.2.1"
} ,
"engines" : {
"node" : "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/cssesc" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" ,
"integrity" : "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" ,
"dev" : true ,
"license" : "MIT" ,
"bin" : {
"cssesc" : "bin/cssesc"
} ,
"engines" : {
"node" : ">=4"
}
} ,
"node_modules/csstype" : {
"version" : "3.2.3" ,
"resolved" : "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz" ,
"integrity" : "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/data-urls" : {
"version" : "7.0.0" ,
"resolved" : "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz" ,
"integrity" : "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"whatwg-mimetype" : "^5.0.0" ,
"whatwg-url" : "^16.0.0"
} ,
"engines" : {
"node" : "^20.19.0 || ^22.12.0 || >=24.0.0"
}
} ,
"node_modules/decimal.js" : {
"version" : "10.6.0" ,
"resolved" : "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz" ,
"integrity" : "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/detect-libc" : {
"version" : "2.1.2" ,
"resolved" : "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz" ,
"integrity" : "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==" ,
"dev" : true ,
"license" : "Apache-2.0" ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/didyoumean" : {
"version" : "1.2.2" ,
"resolved" : "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" ,
"integrity" : "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" ,
"dev" : true ,
"license" : "Apache-2.0"
} ,
"node_modules/dlv" : {
"version" : "1.1.3" ,
"resolved" : "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" ,
"integrity" : "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/eastasianwidth" : {
"version" : "0.2.0" ,
"resolved" : "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" ,
"integrity" : "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/editorconfig" : {
"version" : "1.0.7" ,
"resolved" : "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.7.tgz" ,
"integrity" : "sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@one-ini/wasm" : "0.1.1" ,
"commander" : "^10.0.0" ,
"minimatch" : "^9.0.1" ,
"semver" : "^7.5.3"
} ,
"bin" : {
"editorconfig" : "bin/editorconfig"
} ,
"engines" : {
"node" : ">=14"
}
} ,
"node_modules/editorconfig/node_modules/commander" : {
"version" : "10.0.1" ,
"resolved" : "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" ,
"integrity" : "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=14"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/electron-to-chromium" : {
"version" : "1.5.313" ,
"resolved" : "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz" ,
"integrity" : "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==" ,
"dev" : true ,
"license" : "ISC"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/emoji-regex" : {
"version" : "9.2.2" ,
"resolved" : "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" ,
"integrity" : "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/entities" : {
"version" : "7.0.1" ,
"resolved" : "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz" ,
"integrity" : "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==" ,
"license" : "BSD-2-Clause" ,
"engines" : {
"node" : ">=0.12"
} ,
"funding" : {
"url" : "https://github.com/fb55/entities?sponsor=1"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/es-module-lexer" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz" ,
"integrity" : "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/escalade" : {
"version" : "3.2.0" ,
"resolved" : "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" ,
"integrity" : "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=6"
}
} ,
"node_modules/estree-walker" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" ,
"integrity" : "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/expect-type" : {
"version" : "1.3.0" ,
"resolved" : "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz" ,
"integrity" : "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==" ,
"dev" : true ,
"license" : "Apache-2.0" ,
"engines" : {
"node" : ">=12.0.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/fast-glob" : {
"version" : "3.3.3" ,
"resolved" : "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" ,
"integrity" : "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@nodelib/fs.stat" : "^2.0.2" ,
"@nodelib/fs.walk" : "^1.2.3" ,
"glob-parent" : "^5.1.2" ,
"merge2" : "^1.3.0" ,
"micromatch" : "^4.0.8"
} ,
"engines" : {
"node" : ">=8.6.0"
}
} ,
"node_modules/fast-glob/node_modules/glob-parent" : {
"version" : "5.1.2" ,
"resolved" : "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" ,
"integrity" : "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"is-glob" : "^4.0.1"
} ,
"engines" : {
"node" : ">= 6"
}
} ,
"node_modules/fastq" : {
"version" : "1.20.1" ,
"resolved" : "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz" ,
"integrity" : "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"reusify" : "^1.0.4"
}
} ,
"node_modules/fdir" : {
"version" : "6.5.0" ,
"resolved" : "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" ,
"integrity" : "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=12.0.0"
} ,
"peerDependencies" : {
"picomatch" : "^3 || ^4"
} ,
"peerDependenciesMeta" : {
"picomatch" : {
"optional" : true
}
}
} ,
"node_modules/fill-range" : {
"version" : "7.1.1" ,
"resolved" : "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" ,
"integrity" : "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"to-regex-range" : "^5.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/foreground-child" : {
"version" : "3.3.1" ,
"resolved" : "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" ,
"integrity" : "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"cross-spawn" : "^7.0.6" ,
"signal-exit" : "^4.0.1"
} ,
"engines" : {
"node" : ">=14"
} ,
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/fraction.js" : {
"version" : "5.3.4" ,
"resolved" : "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz" ,
"integrity" : "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : "*"
} ,
"funding" : {
"type" : "github" ,
"url" : "https://github.com/sponsors/rawify"
}
} ,
"node_modules/fsevents" : {
"version" : "2.3.3" ,
"resolved" : "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" ,
"integrity" : "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" ,
"dev" : true ,
"hasInstallScript" : true ,
"license" : "MIT" ,
"optional" : true ,
"os" : [
"darwin"
] ,
"engines" : {
"node" : "^8.16.0 || ^10.6.0 || >=11.0.0"
}
} ,
"node_modules/function-bind" : {
"version" : "1.1.2" ,
"resolved" : "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" ,
"integrity" : "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" ,
"dev" : true ,
"license" : "MIT" ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/glob" : {
"version" : "10.5.0" ,
"resolved" : "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz" ,
"integrity" : "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==" ,
"deprecated" : "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"foreground-child" : "^3.1.0" ,
"jackspeak" : "^3.1.2" ,
"minimatch" : "^9.0.4" ,
"minipass" : "^7.1.2" ,
"package-json-from-dist" : "^1.0.0" ,
"path-scurry" : "^1.11.1"
} ,
"bin" : {
"glob" : "dist/esm/bin.mjs"
} ,
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/glob-parent" : {
"version" : "6.0.2" ,
"resolved" : "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" ,
"integrity" : "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"is-glob" : "^4.0.3"
} ,
"engines" : {
"node" : ">=10.13.0"
}
} ,
"node_modules/hasown" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" ,
"integrity" : "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"function-bind" : "^1.1.2"
} ,
"engines" : {
"node" : ">= 0.4"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/html-encoding-sniffer" : {
"version" : "6.0.0" ,
"resolved" : "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz" ,
"integrity" : "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@exodus/bytes" : "^1.6.0"
} ,
"engines" : {
"node" : "^20.19.0 || ^22.12.0 || >=24.0.0"
}
} ,
"node_modules/ini" : {
"version" : "1.3.8" ,
"resolved" : "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" ,
"integrity" : "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" ,
"dev" : true ,
"license" : "ISC"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/is-binary-path" : {
"version" : "2.1.0" ,
"resolved" : "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" ,
"integrity" : "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"binary-extensions" : "^2.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/is-core-module" : {
"version" : "2.16.1" ,
"resolved" : "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" ,
"integrity" : "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"hasown" : "^2.0.2"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/is-extglob" : {
"version" : "2.1.1" ,
"resolved" : "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" ,
"integrity" : "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/is-fullwidth-code-point" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" ,
"integrity" : "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/is-glob" : {
"version" : "4.0.3" ,
"resolved" : "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" ,
"integrity" : "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"is-extglob" : "^2.1.1"
} ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/is-number" : {
"version" : "7.0.0" ,
"resolved" : "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" ,
"integrity" : "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.12.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/is-potential-custom-element-name" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" ,
"integrity" : "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/isexe" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" ,
"integrity" : "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" ,
"dev" : true ,
"license" : "ISC"
} ,
"node_modules/jackspeak" : {
"version" : "3.4.3" ,
"resolved" : "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" ,
"integrity" : "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==" ,
"dev" : true ,
"license" : "BlueOak-1.0.0" ,
"dependencies" : {
"@isaacs/cliui" : "^8.0.2"
} ,
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
} ,
"optionalDependencies" : {
"@pkgjs/parseargs" : "^0.11.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/jiti" : {
"version" : "1.21.7" ,
"resolved" : "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz" ,
"integrity" : "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==" ,
"dev" : true ,
"license" : "MIT" ,
"bin" : {
"jiti" : "bin/jiti.js"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/js-beautify" : {
"version" : "1.15.4" ,
"resolved" : "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz" ,
"integrity" : "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"config-chain" : "^1.1.13" ,
"editorconfig" : "^1.0.4" ,
"glob" : "^10.4.2" ,
"js-cookie" : "^3.0.5" ,
"nopt" : "^7.2.1"
} ,
"bin" : {
"css-beautify" : "js/bin/css-beautify.js" ,
"html-beautify" : "js/bin/html-beautify.js" ,
"js-beautify" : "js/bin/js-beautify.js"
} ,
"engines" : {
"node" : ">=14"
}
} ,
"node_modules/js-cookie" : {
"version" : "3.0.5" ,
"resolved" : "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz" ,
"integrity" : "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=14"
}
} ,
"node_modules/jsdom" : {
"version" : "29.0.0" ,
"resolved" : "https://registry.npmjs.org/jsdom/-/jsdom-29.0.0.tgz" ,
"integrity" : "sha512-9FshNB6OepopZ08unmmGpsF7/qCjxGPbo3NbgfJAnPeHXnsODE9WWffXZtRFRFe0ntzaAOcSKNJFz8wiyvF1jQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@asamuzakjp/css-color" : "^5.0.1" ,
"@asamuzakjp/dom-selector" : "^7.0.2" ,
"@bramus/specificity" : "^2.4.2" ,
"@csstools/css-syntax-patches-for-csstree" : "^1.1.1" ,
"@exodus/bytes" : "^1.15.0" ,
"css-tree" : "^3.2.1" ,
"data-urls" : "^7.0.0" ,
"decimal.js" : "^10.6.0" ,
"html-encoding-sniffer" : "^6.0.0" ,
"is-potential-custom-element-name" : "^1.0.1" ,
"lru-cache" : "^11.2.7" ,
"parse5" : "^8.0.0" ,
"saxes" : "^6.0.0" ,
"symbol-tree" : "^3.2.4" ,
"tough-cookie" : "^6.0.1" ,
"undici" : "^7.24.3" ,
"w3c-xmlserializer" : "^5.0.0" ,
"webidl-conversions" : "^8.0.1" ,
"whatwg-mimetype" : "^5.0.0" ,
"whatwg-url" : "^16.0.1" ,
"xml-name-validator" : "^5.0.0"
} ,
"engines" : {
"node" : "^20.19.0 || ^22.13.0 || >=24.0.0"
} ,
"peerDependencies" : {
"canvas" : "^3.0.0"
} ,
"peerDependenciesMeta" : {
"canvas" : {
"optional" : true
}
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/lightningcss" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz" ,
"integrity" : "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==" ,
"dev" : true ,
"license" : "MPL-2.0" ,
"dependencies" : {
"detect-libc" : "^2.0.3"
} ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
} ,
"optionalDependencies" : {
"lightningcss-android-arm64" : "1.32.0" ,
"lightningcss-darwin-arm64" : "1.32.0" ,
"lightningcss-darwin-x64" : "1.32.0" ,
"lightningcss-freebsd-x64" : "1.32.0" ,
"lightningcss-linux-arm-gnueabihf" : "1.32.0" ,
"lightningcss-linux-arm64-gnu" : "1.32.0" ,
"lightningcss-linux-arm64-musl" : "1.32.0" ,
"lightningcss-linux-x64-gnu" : "1.32.0" ,
"lightningcss-linux-x64-musl" : "1.32.0" ,
"lightningcss-win32-arm64-msvc" : "1.32.0" ,
"lightningcss-win32-x64-msvc" : "1.32.0"
}
} ,
"node_modules/lightningcss-android-arm64" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz" ,
"integrity" : "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"android"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-darwin-arm64" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz" ,
"integrity" : "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"darwin"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-darwin-x64" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz" ,
"integrity" : "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"darwin"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-freebsd-x64" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz" ,
"integrity" : "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"freebsd"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-linux-arm-gnueabihf" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz" ,
"integrity" : "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==" ,
"cpu" : [
"arm"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-linux-arm64-gnu" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz" ,
"integrity" : "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-linux-arm64-musl" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz" ,
"integrity" : "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-linux-x64-gnu" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz" ,
"integrity" : "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-linux-x64-musl" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz" ,
"integrity" : "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"linux"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-win32-arm64-msvc" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz" ,
"integrity" : "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==" ,
"cpu" : [
"arm64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"win32"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lightningcss-win32-x64-msvc" : {
"version" : "1.32.0" ,
"resolved" : "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz" ,
"integrity" : "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==" ,
"cpu" : [
"x64"
] ,
"dev" : true ,
"license" : "MPL-2.0" ,
"optional" : true ,
"os" : [
"win32"
] ,
"engines" : {
"node" : ">= 12.0.0"
} ,
"funding" : {
"type" : "opencollective" ,
"url" : "https://opencollective.com/parcel"
}
} ,
"node_modules/lilconfig" : {
"version" : "3.1.3" ,
"resolved" : "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz" ,
"integrity" : "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=14"
} ,
"funding" : {
"url" : "https://github.com/sponsors/antonk52"
}
} ,
"node_modules/lines-and-columns" : {
"version" : "1.2.4" ,
"resolved" : "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" ,
"integrity" : "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/lru-cache" : {
"version" : "11.2.7" ,
"resolved" : "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz" ,
"integrity" : "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==" ,
"dev" : true ,
"license" : "BlueOak-1.0.0" ,
"engines" : {
"node" : "20 || >=22"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/magic-string" : {
"version" : "0.30.21" ,
"resolved" : "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz" ,
"integrity" : "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==" ,
"license" : "MIT" ,
"dependencies" : {
"@jridgewell/sourcemap-codec" : "^1.5.5"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/mdn-data" : {
"version" : "2.27.1" ,
"resolved" : "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz" ,
"integrity" : "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==" ,
"dev" : true ,
"license" : "CC0-1.0"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/merge2" : {
"version" : "1.4.1" ,
"resolved" : "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" ,
"integrity" : "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/micromatch" : {
"version" : "4.0.8" ,
"resolved" : "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" ,
"integrity" : "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"braces" : "^3.0.3" ,
"picomatch" : "^2.3.1"
} ,
"engines" : {
"node" : ">=8.6"
}
} ,
"node_modules/micromatch/node_modules/picomatch" : {
"version" : "2.3.1" ,
"resolved" : "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" ,
"integrity" : "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8.6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/jonschlinkert"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/minimatch" : {
"version" : "9.0.9" ,
"resolved" : "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz" ,
"integrity" : "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"brace-expansion" : "^2.0.2"
} ,
"engines" : {
"node" : ">=16 || 14 >=14.17"
} ,
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
}
} ,
"node_modules/minipass" : {
"version" : "7.1.3" ,
"resolved" : "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz" ,
"integrity" : "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==" ,
"dev" : true ,
"license" : "BlueOak-1.0.0" ,
"engines" : {
"node" : ">=16 || 14 >=14.17"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/muggle-string" : {
"version" : "0.4.1" ,
"resolved" : "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz" ,
"integrity" : "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/mz" : {
"version" : "2.7.0" ,
"resolved" : "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" ,
"integrity" : "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"any-promise" : "^1.0.0" ,
"object-assign" : "^4.0.1" ,
"thenify-all" : "^1.0.0"
}
} ,
"node_modules/nanoid" : {
"version" : "3.3.11" ,
"resolved" : "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" ,
"integrity" : "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"bin" : {
"nanoid" : "bin/nanoid.cjs"
} ,
"engines" : {
"node" : "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
} ,
"node_modules/node-releases" : {
"version" : "2.0.36" ,
"resolved" : "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz" ,
"integrity" : "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/nopt" : {
"version" : "7.2.1" ,
"resolved" : "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz" ,
"integrity" : "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"abbrev" : "^2.0.0"
} ,
"bin" : {
"nopt" : "bin/nopt.js"
} ,
"engines" : {
"node" : "^14.17.0 || ^16.13.0 || >=18.0.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/normalize-path" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" ,
"integrity" : "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/object-assign" : {
"version" : "4.1.1" ,
"resolved" : "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" ,
"integrity" : "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/object-hash" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" ,
"integrity" : "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 6"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/obug" : {
"version" : "2.1.1" ,
"resolved" : "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz" ,
"integrity" : "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==" ,
"dev" : true ,
"funding" : [
"https://github.com/sponsors/sxzz" ,
"https://opencollective.com/debug"
] ,
"license" : "MIT"
} ,
"node_modules/package-json-from-dist" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" ,
"integrity" : "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" ,
"dev" : true ,
"license" : "BlueOak-1.0.0"
} ,
"node_modules/parse5" : {
"version" : "8.0.0" ,
"resolved" : "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz" ,
"integrity" : "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"entities" : "^6.0.0"
} ,
"funding" : {
"url" : "https://github.com/inikulin/parse5?sponsor=1"
}
} ,
"node_modules/parse5/node_modules/entities" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz" ,
"integrity" : "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==" ,
"dev" : true ,
"license" : "BSD-2-Clause" ,
"engines" : {
"node" : ">=0.12"
} ,
"funding" : {
"url" : "https://github.com/fb55/entities?sponsor=1"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/path-browserify" : {
"version" : "1.0.1" ,
"resolved" : "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" ,
"integrity" : "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/path-key" : {
"version" : "3.1.1" ,
"resolved" : "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" ,
"integrity" : "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/path-parse" : {
"version" : "1.0.7" ,
"resolved" : "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" ,
"integrity" : "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/path-scurry" : {
"version" : "1.11.1" ,
"resolved" : "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" ,
"integrity" : "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==" ,
"dev" : true ,
"license" : "BlueOak-1.0.0" ,
"dependencies" : {
"lru-cache" : "^10.2.0" ,
"minipass" : "^5.0.0 || ^6.0.2 || ^7.0.0"
} ,
"engines" : {
"node" : ">=16 || 14 >=14.18"
} ,
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
}
} ,
"node_modules/path-scurry/node_modules/lru-cache" : {
"version" : "10.4.3" ,
"resolved" : "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" ,
"integrity" : "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" ,
"dev" : true ,
"license" : "ISC"
} ,
"node_modules/pathe" : {
"version" : "2.0.3" ,
"resolved" : "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz" ,
"integrity" : "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/picocolors" : {
"version" : "1.1.1" ,
"resolved" : "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" ,
"integrity" : "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"license" : "ISC"
} ,
"node_modules/picomatch" : {
"version" : "4.0.3" ,
"resolved" : "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" ,
"integrity" : "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=12"
} ,
"funding" : {
"url" : "https://github.com/sponsors/jonschlinkert"
}
} ,
"node_modules/pify" : {
"version" : "2.3.0" ,
"resolved" : "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" ,
"integrity" : "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
"node_modules/pirates" : {
"version" : "4.0.7" ,
"resolved" : "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" ,
"integrity" : "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 6"
}
} ,
"node_modules/postcss" : {
"version" : "8.5.8" ,
"resolved" : "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz" ,
"integrity" : "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==" ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/postcss/"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/postcss"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"nanoid" : "^3.3.11" ,
"picocolors" : "^1.1.1" ,
"source-map-js" : "^1.2.1"
} ,
"engines" : {
"node" : "^10 || ^12 || >=14"
}
} ,
"node_modules/postcss-import" : {
"version" : "15.1.0" ,
"resolved" : "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" ,
"integrity" : "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"postcss-value-parser" : "^4.0.0" ,
"read-cache" : "^1.0.0" ,
"resolve" : "^1.1.7"
} ,
"engines" : {
"node" : ">=14.0.0"
} ,
"peerDependencies" : {
"postcss" : "^8.0.0"
}
} ,
"node_modules/postcss-js" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz" ,
"integrity" : "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/postcss/"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"camelcase-css" : "^2.0.1"
} ,
"engines" : {
"node" : "^12 || ^14 || >= 16"
} ,
"peerDependencies" : {
"postcss" : "^8.4.21"
}
} ,
"node_modules/postcss-load-config" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz" ,
"integrity" : "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/postcss/"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"lilconfig" : "^3.1.1"
} ,
"engines" : {
"node" : ">= 18"
} ,
"peerDependencies" : {
"jiti" : ">=1.21.0" ,
"postcss" : ">=8.0.9" ,
"tsx" : "^4.8.1" ,
"yaml" : "^2.4.2"
} ,
"peerDependenciesMeta" : {
"jiti" : {
"optional" : true
} ,
"postcss" : {
"optional" : true
} ,
"tsx" : {
"optional" : true
} ,
"yaml" : {
"optional" : true
}
}
} ,
"node_modules/postcss-nested" : {
"version" : "6.2.0" ,
"resolved" : "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz" ,
"integrity" : "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/postcss/"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"postcss-selector-parser" : "^6.1.1"
} ,
"engines" : {
"node" : ">=12.0"
} ,
"peerDependencies" : {
"postcss" : "^8.2.14"
}
} ,
"node_modules/postcss-selector-parser" : {
"version" : "6.1.2" ,
"resolved" : "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" ,
"integrity" : "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"cssesc" : "^3.0.0" ,
"util-deprecate" : "^1.0.2"
} ,
"engines" : {
"node" : ">=4"
}
} ,
"node_modules/postcss-value-parser" : {
"version" : "4.2.0" ,
"resolved" : "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" ,
"integrity" : "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-15 20:02:01 +02:00
"node_modules/proto-list" : {
"version" : "1.2.4" ,
"resolved" : "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" ,
"integrity" : "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" ,
"dev" : true ,
"license" : "ISC"
} ,
"node_modules/punycode" : {
"version" : "2.3.1" ,
"resolved" : "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" ,
"integrity" : "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=6"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/queue-microtask" : {
"version" : "1.2.3" ,
"resolved" : "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" ,
"integrity" : "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/feross"
} ,
{
"type" : "patreon" ,
"url" : "https://www.patreon.com/feross"
} ,
{
"type" : "consulting" ,
"url" : "https://feross.org/support"
}
] ,
"license" : "MIT"
} ,
"node_modules/read-cache" : {
"version" : "1.0.0" ,
"resolved" : "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" ,
"integrity" : "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"pify" : "^2.3.0"
}
} ,
"node_modules/readdirp" : {
"version" : "3.6.0" ,
"resolved" : "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" ,
"integrity" : "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"picomatch" : "^2.2.1"
} ,
"engines" : {
"node" : ">=8.10.0"
}
} ,
"node_modules/readdirp/node_modules/picomatch" : {
"version" : "2.3.1" ,
"resolved" : "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" ,
"integrity" : "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8.6"
} ,
"funding" : {
"url" : "https://github.com/sponsors/jonschlinkert"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/require-from-string" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" ,
"integrity" : "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/resolve" : {
"version" : "1.22.11" ,
"resolved" : "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz" ,
"integrity" : "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"is-core-module" : "^2.16.1" ,
"path-parse" : "^1.0.7" ,
"supports-preserve-symlinks-flag" : "^1.0.0"
} ,
"bin" : {
"resolve" : "bin/resolve"
} ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
"node_modules/reusify" : {
"version" : "1.1.0" ,
"resolved" : "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" ,
"integrity" : "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"iojs" : ">=1.0.0" ,
"node" : ">=0.10.0"
}
} ,
"node_modules/rolldown" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@oxc-project/types" : "=0.115.0" ,
"@rolldown/pluginutils" : "1.0.0-rc.9"
} ,
"bin" : {
"rolldown" : "bin/cli.mjs"
} ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
} ,
"optionalDependencies" : {
"@rolldown/binding-android-arm64" : "1.0.0-rc.9" ,
"@rolldown/binding-darwin-arm64" : "1.0.0-rc.9" ,
"@rolldown/binding-darwin-x64" : "1.0.0-rc.9" ,
"@rolldown/binding-freebsd-x64" : "1.0.0-rc.9" ,
"@rolldown/binding-linux-arm-gnueabihf" : "1.0.0-rc.9" ,
"@rolldown/binding-linux-arm64-gnu" : "1.0.0-rc.9" ,
"@rolldown/binding-linux-arm64-musl" : "1.0.0-rc.9" ,
"@rolldown/binding-linux-ppc64-gnu" : "1.0.0-rc.9" ,
"@rolldown/binding-linux-s390x-gnu" : "1.0.0-rc.9" ,
"@rolldown/binding-linux-x64-gnu" : "1.0.0-rc.9" ,
"@rolldown/binding-linux-x64-musl" : "1.0.0-rc.9" ,
"@rolldown/binding-openharmony-arm64" : "1.0.0-rc.9" ,
"@rolldown/binding-wasm32-wasi" : "1.0.0-rc.9" ,
"@rolldown/binding-win32-arm64-msvc" : "1.0.0-rc.9" ,
"@rolldown/binding-win32-x64-msvc" : "1.0.0-rc.9"
}
} ,
"node_modules/rolldown/node_modules/@rolldown/pluginutils" : {
"version" : "1.0.0-rc.9" ,
"resolved" : "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.9.tgz" ,
"integrity" : "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/run-parallel" : {
"version" : "1.2.0" ,
"resolved" : "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" ,
"integrity" : "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" ,
"dev" : true ,
"funding" : [
{
"type" : "github" ,
"url" : "https://github.com/sponsors/feross"
} ,
{
"type" : "patreon" ,
"url" : "https://www.patreon.com/feross"
} ,
{
"type" : "consulting" ,
"url" : "https://feross.org/support"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"queue-microtask" : "^1.2.2"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/saxes" : {
"version" : "6.0.0" ,
"resolved" : "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" ,
"integrity" : "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"xmlchars" : "^2.2.0"
} ,
"engines" : {
"node" : ">=v12.22.7"
}
} ,
"node_modules/semver" : {
"version" : "7.7.4" ,
"resolved" : "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz" ,
"integrity" : "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==" ,
"dev" : true ,
"license" : "ISC" ,
"bin" : {
"semver" : "bin/semver.js"
} ,
"engines" : {
"node" : ">=10"
}
} ,
"node_modules/shebang-command" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" ,
"integrity" : "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"shebang-regex" : "^3.0.0"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/shebang-regex" : {
"version" : "3.0.0" ,
"resolved" : "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" ,
"integrity" : "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/siginfo" : {
"version" : "2.0.0" ,
"resolved" : "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz" ,
"integrity" : "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" ,
"dev" : true ,
"license" : "ISC"
} ,
"node_modules/signal-exit" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" ,
"integrity" : "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" ,
"dev" : true ,
"license" : "ISC" ,
"engines" : {
"node" : ">=14"
} ,
"funding" : {
"url" : "https://github.com/sponsors/isaacs"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/source-map-js" : {
"version" : "1.2.1" ,
"resolved" : "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" ,
"integrity" : "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" ,
"license" : "BSD-3-Clause" ,
"engines" : {
"node" : ">=0.10.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/stackback" : {
"version" : "0.0.2" ,
"resolved" : "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz" ,
"integrity" : "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/std-env" : {
"version" : "4.0.0" ,
"resolved" : "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz" ,
"integrity" : "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/string-width" : {
"version" : "5.1.2" ,
"resolved" : "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" ,
"integrity" : "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"eastasianwidth" : "^0.2.0" ,
"emoji-regex" : "^9.2.2" ,
"strip-ansi" : "^7.0.1"
} ,
"engines" : {
"node" : ">=12"
} ,
"funding" : {
"url" : "https://github.com/sponsors/sindresorhus"
}
} ,
"node_modules/string-width-cjs" : {
"name" : "string-width" ,
"version" : "4.2.3" ,
"resolved" : "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" ,
"integrity" : "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"emoji-regex" : "^8.0.0" ,
"is-fullwidth-code-point" : "^3.0.0" ,
"strip-ansi" : "^6.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/string-width-cjs/node_modules/ansi-regex" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" ,
"integrity" : "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/string-width-cjs/node_modules/emoji-regex" : {
"version" : "8.0.0" ,
"resolved" : "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" ,
"integrity" : "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/string-width-cjs/node_modules/strip-ansi" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" ,
"integrity" : "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"ansi-regex" : "^5.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/strip-ansi" : {
"version" : "7.2.0" ,
"resolved" : "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz" ,
"integrity" : "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"ansi-regex" : "^6.2.2"
} ,
"engines" : {
"node" : ">=12"
} ,
"funding" : {
"url" : "https://github.com/chalk/strip-ansi?sponsor=1"
}
} ,
"node_modules/strip-ansi-cjs" : {
"name" : "strip-ansi" ,
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" ,
"integrity" : "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"ansi-regex" : "^5.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/strip-ansi-cjs/node_modules/ansi-regex" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" ,
"integrity" : "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/sucrase" : {
"version" : "3.35.1" ,
"resolved" : "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz" ,
"integrity" : "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@jridgewell/gen-mapping" : "^0.3.2" ,
"commander" : "^4.0.0" ,
"lines-and-columns" : "^1.1.6" ,
"mz" : "^2.7.0" ,
"pirates" : "^4.0.1" ,
"tinyglobby" : "^0.2.11" ,
"ts-interface-checker" : "^0.1.9"
} ,
"bin" : {
"sucrase" : "bin/sucrase" ,
"sucrase-node" : "bin/sucrase-node"
} ,
"engines" : {
"node" : ">=16 || 14 >=14.17"
}
} ,
"node_modules/supports-preserve-symlinks-flag" : {
"version" : "1.0.0" ,
"resolved" : "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" ,
"integrity" : "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">= 0.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/ljharb"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/symbol-tree" : {
"version" : "3.2.4" ,
"resolved" : "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" ,
"integrity" : "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/tailwindcss" : {
"version" : "3.4.19" ,
"resolved" : "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz" ,
"integrity" : "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@alloc/quick-lru" : "^5.2.0" ,
"arg" : "^5.0.2" ,
"chokidar" : "^3.6.0" ,
"didyoumean" : "^1.2.2" ,
"dlv" : "^1.1.3" ,
"fast-glob" : "^3.3.2" ,
"glob-parent" : "^6.0.2" ,
"is-glob" : "^4.0.3" ,
"jiti" : "^1.21.7" ,
"lilconfig" : "^3.1.3" ,
"micromatch" : "^4.0.8" ,
"normalize-path" : "^3.0.0" ,
"object-hash" : "^3.0.0" ,
"picocolors" : "^1.1.1" ,
"postcss" : "^8.4.47" ,
"postcss-import" : "^15.1.0" ,
"postcss-js" : "^4.0.1" ,
"postcss-load-config" : "^4.0.2 || ^5.0 || ^6.0" ,
"postcss-nested" : "^6.2.0" ,
"postcss-selector-parser" : "^6.1.2" ,
"resolve" : "^1.22.8" ,
"sucrase" : "^3.35.0"
} ,
"bin" : {
"tailwind" : "lib/cli.js" ,
"tailwindcss" : "lib/cli.js"
} ,
"engines" : {
"node" : ">=14.0.0"
}
} ,
"node_modules/thenify" : {
"version" : "3.3.1" ,
"resolved" : "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" ,
"integrity" : "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"any-promise" : "^1.0.0"
}
} ,
"node_modules/thenify-all" : {
"version" : "1.6.0" ,
"resolved" : "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" ,
"integrity" : "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"thenify" : ">= 3.1.0 < 4"
} ,
"engines" : {
"node" : ">=0.8"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/tinybench" : {
"version" : "2.9.0" ,
"resolved" : "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz" ,
"integrity" : "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/tinyexec" : {
"version" : "1.0.4" ,
"resolved" : "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz" ,
"integrity" : "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=18"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/tinyglobby" : {
"version" : "0.2.15" ,
"resolved" : "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz" ,
"integrity" : "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"fdir" : "^6.5.0" ,
"picomatch" : "^4.0.3"
} ,
"engines" : {
"node" : ">=12.0.0"
} ,
"funding" : {
"url" : "https://github.com/sponsors/SuperchupuDev"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/tinyrainbow" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz" ,
"integrity" : "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=14.0.0"
}
} ,
"node_modules/tldts" : {
"version" : "7.0.25" ,
"resolved" : "https://registry.npmjs.org/tldts/-/tldts-7.0.25.tgz" ,
"integrity" : "sha512-keinCnPbwXEUG3ilrWQZU+CqcTTzHq9m2HhoUP2l7Xmi8l1LuijAXLpAJ5zRW+ifKTNscs4NdCkfkDCBYm352w==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"tldts-core" : "^7.0.25"
} ,
"bin" : {
"tldts" : "bin/cli.js"
}
} ,
"node_modules/tldts-core" : {
"version" : "7.0.25" ,
"resolved" : "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.25.tgz" ,
"integrity" : "sha512-ZjCZK0rppSBu7rjHYDYsEaMOIbbT+nWF57hKkv4IUmZWBNrBWBOjIElc0mKRgLM8bm7x/BBlof6t2gi/Oq/Asw==" ,
"dev" : true ,
"license" : "MIT"
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/to-regex-range" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" ,
"integrity" : "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"is-number" : "^7.0.0"
} ,
"engines" : {
"node" : ">=8.0"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/tough-cookie" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz" ,
"integrity" : "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==" ,
"dev" : true ,
"license" : "BSD-3-Clause" ,
"dependencies" : {
"tldts" : "^7.0.5"
} ,
"engines" : {
"node" : ">=16"
}
} ,
"node_modules/tr46" : {
"version" : "6.0.0" ,
"resolved" : "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz" ,
"integrity" : "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"punycode" : "^2.3.1"
} ,
"engines" : {
"node" : ">=20"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/ts-interface-checker" : {
"version" : "0.1.13" ,
"resolved" : "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" ,
"integrity" : "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" ,
"dev" : true ,
"license" : "Apache-2.0"
} ,
"node_modules/tslib" : {
"version" : "2.8.1" ,
"resolved" : "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" ,
"integrity" : "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" ,
"dev" : true ,
"license" : "0BSD" ,
"optional" : true
} ,
"node_modules/typescript" : {
"version" : "5.9.3" ,
"resolved" : "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" ,
"integrity" : "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==" ,
"devOptional" : true ,
"license" : "Apache-2.0" ,
"bin" : {
"tsc" : "bin/tsc" ,
"tsserver" : "bin/tsserver"
} ,
"engines" : {
"node" : ">=14.17"
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/undici" : {
"version" : "7.24.3" ,
"resolved" : "https://registry.npmjs.org/undici/-/undici-7.24.3.tgz" ,
"integrity" : "sha512-eJdUmK/Wrx2d+mnWWmwwLRyA7OQCkLap60sk3dOK4ViZR7DKwwptwuIvFBg2HaiP9ESaEdhtpSymQPvytpmkCA==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=20.18.1"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/undici-types" : {
"version" : "7.16.0" ,
"resolved" : "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" ,
"integrity" : "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/update-browserslist-db" : {
"version" : "1.2.3" ,
"resolved" : "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz" ,
"integrity" : "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==" ,
"dev" : true ,
"funding" : [
{
"type" : "opencollective" ,
"url" : "https://opencollective.com/browserslist"
} ,
{
"type" : "tidelift" ,
"url" : "https://tidelift.com/funding/github/npm/browserslist"
} ,
{
"type" : "github" ,
"url" : "https://github.com/sponsors/ai"
}
] ,
"license" : "MIT" ,
"dependencies" : {
"escalade" : "^3.2.0" ,
"picocolors" : "^1.1.1"
} ,
"bin" : {
"update-browserslist-db" : "cli.js"
} ,
"peerDependencies" : {
"browserslist" : ">= 4.21.0"
}
} ,
"node_modules/util-deprecate" : {
"version" : "1.0.2" ,
"resolved" : "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" ,
"integrity" : "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/vite" : {
"version" : "8.0.0" ,
"resolved" : "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz" ,
"integrity" : "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@oxc-project/runtime" : "0.115.0" ,
"lightningcss" : "^1.32.0" ,
"picomatch" : "^4.0.3" ,
"postcss" : "^8.5.8" ,
"rolldown" : "1.0.0-rc.9" ,
"tinyglobby" : "^0.2.15"
} ,
"bin" : {
"vite" : "bin/vite.js"
} ,
"engines" : {
"node" : "^20.19.0 || >=22.12.0"
} ,
"funding" : {
"url" : "https://github.com/vitejs/vite?sponsor=1"
} ,
"optionalDependencies" : {
"fsevents" : "~2.3.3"
} ,
"peerDependencies" : {
"@types/node" : "^20.19.0 || >=22.12.0" ,
"@vitejs/devtools" : "^0.0.0-alpha.31" ,
"esbuild" : "^0.27.0" ,
"jiti" : ">=1.21.0" ,
"less" : "^4.0.0" ,
"sass" : "^1.70.0" ,
"sass-embedded" : "^1.70.0" ,
"stylus" : ">=0.54.8" ,
"sugarss" : "^5.0.0" ,
"terser" : "^5.16.0" ,
"tsx" : "^4.8.1" ,
"yaml" : "^2.4.2"
} ,
"peerDependenciesMeta" : {
"@types/node" : {
"optional" : true
} ,
"@vitejs/devtools" : {
"optional" : true
} ,
"esbuild" : {
"optional" : true
} ,
"jiti" : {
"optional" : true
} ,
"less" : {
"optional" : true
} ,
"sass" : {
"optional" : true
} ,
"sass-embedded" : {
"optional" : true
} ,
"stylus" : {
"optional" : true
} ,
"sugarss" : {
"optional" : true
} ,
"terser" : {
"optional" : true
} ,
"tsx" : {
"optional" : true
} ,
"yaml" : {
"optional" : true
}
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/vitest" : {
"version" : "4.1.0" ,
"resolved" : "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz" ,
"integrity" : "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@vitest/expect" : "4.1.0" ,
"@vitest/mocker" : "4.1.0" ,
"@vitest/pretty-format" : "4.1.0" ,
"@vitest/runner" : "4.1.0" ,
"@vitest/snapshot" : "4.1.0" ,
"@vitest/spy" : "4.1.0" ,
"@vitest/utils" : "4.1.0" ,
"es-module-lexer" : "^2.0.0" ,
"expect-type" : "^1.3.0" ,
"magic-string" : "^0.30.21" ,
"obug" : "^2.1.1" ,
"pathe" : "^2.0.3" ,
"picomatch" : "^4.0.3" ,
"std-env" : "^4.0.0-rc.1" ,
"tinybench" : "^2.9.0" ,
"tinyexec" : "^1.0.2" ,
"tinyglobby" : "^0.2.15" ,
"tinyrainbow" : "^3.0.3" ,
"vite" : "^6.0.0 || ^7.0.0 || ^8.0.0-0" ,
"why-is-node-running" : "^2.3.0"
} ,
"bin" : {
"vitest" : "vitest.mjs"
} ,
"engines" : {
"node" : "^20.0.0 || ^22.0.0 || >=24.0.0"
} ,
"funding" : {
"url" : "https://opencollective.com/vitest"
} ,
"peerDependencies" : {
"@edge-runtime/vm" : "*" ,
"@opentelemetry/api" : "^1.9.0" ,
"@types/node" : "^20.0.0 || ^22.0.0 || >=24.0.0" ,
"@vitest/browser-playwright" : "4.1.0" ,
"@vitest/browser-preview" : "4.1.0" ,
"@vitest/browser-webdriverio" : "4.1.0" ,
"@vitest/ui" : "4.1.0" ,
"happy-dom" : "*" ,
"jsdom" : "*" ,
"vite" : "^6.0.0 || ^7.0.0 || ^8.0.0-0"
} ,
"peerDependenciesMeta" : {
"@edge-runtime/vm" : {
"optional" : true
} ,
"@opentelemetry/api" : {
"optional" : true
} ,
"@types/node" : {
"optional" : true
} ,
"@vitest/browser-playwright" : {
"optional" : true
} ,
"@vitest/browser-preview" : {
"optional" : true
} ,
"@vitest/browser-webdriverio" : {
"optional" : true
} ,
"@vitest/ui" : {
"optional" : true
} ,
"happy-dom" : {
"optional" : true
} ,
"jsdom" : {
"optional" : true
} ,
"vite" : {
"optional" : false
}
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/vscode-uri" : {
"version" : "3.1.0" ,
"resolved" : "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz" ,
"integrity" : "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/vue" : {
"version" : "3.5.30" ,
"resolved" : "https://registry.npmjs.org/vue/-/vue-3.5.30.tgz" ,
"integrity" : "sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/compiler-dom" : "3.5.30" ,
"@vue/compiler-sfc" : "3.5.30" ,
"@vue/runtime-dom" : "3.5.30" ,
"@vue/server-renderer" : "3.5.30" ,
"@vue/shared" : "3.5.30"
} ,
"peerDependencies" : {
"typescript" : "*"
} ,
"peerDependenciesMeta" : {
"typescript" : {
"optional" : true
}
}
} ,
2026-03-15 20:02:01 +02:00
"node_modules/vue-component-type-helpers" : {
"version" : "2.2.12" ,
"resolved" : "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.12.tgz" ,
"integrity" : "sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==" ,
"dev" : true ,
"license" : "MIT"
} ,
2026-03-18 07:57:15 +02:00
"node_modules/vue-i18n" : {
"version" : "11.3.0" ,
"resolved" : "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.3.0.tgz" ,
"integrity" : "sha512-1J+xDfDJTLhDxElkd3+XUhT7FYSZd2b8pa7IRKGxhWH/8yt6PTvi3xmWhGwhYT5EaXdatui11pF2R6tL73/zPA==" ,
"license" : "MIT" ,
"dependencies" : {
"@intlify/core-base" : "11.3.0" ,
"@intlify/devtools-types" : "11.3.0" ,
"@intlify/shared" : "11.3.0" ,
"@vue/devtools-api" : "^6.5.0"
} ,
"engines" : {
"node" : ">= 16"
} ,
"funding" : {
"url" : "https://github.com/sponsors/kazupon"
} ,
"peerDependencies" : {
"vue" : "^3.0.0"
}
} ,
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
"node_modules/vue-router" : {
"version" : "4.6.4" ,
"resolved" : "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz" ,
"integrity" : "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==" ,
"license" : "MIT" ,
"dependencies" : {
"@vue/devtools-api" : "^6.6.4"
} ,
"funding" : {
"url" : "https://github.com/sponsors/posva"
} ,
"peerDependencies" : {
"vue" : "^3.5.0"
}
} ,
"node_modules/vue-tsc" : {
"version" : "3.2.5" ,
"resolved" : "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.2.5.tgz" ,
"integrity" : "sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@volar/typescript" : "2.4.28" ,
"@vue/language-core" : "3.2.5"
} ,
"bin" : {
"vue-tsc" : "bin/vue-tsc.js"
} ,
"peerDependencies" : {
"typescript" : ">=5.0.0"
}
2026-03-15 20:02:01 +02:00
} ,
"node_modules/w3c-xmlserializer" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz" ,
"integrity" : "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"xml-name-validator" : "^5.0.0"
} ,
"engines" : {
"node" : ">=18"
}
} ,
"node_modules/webidl-conversions" : {
"version" : "8.0.1" ,
"resolved" : "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz" ,
"integrity" : "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==" ,
"dev" : true ,
"license" : "BSD-2-Clause" ,
"engines" : {
"node" : ">=20"
}
} ,
"node_modules/whatwg-mimetype" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz" ,
"integrity" : "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=20"
}
} ,
"node_modules/whatwg-url" : {
"version" : "16.0.1" ,
"resolved" : "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz" ,
"integrity" : "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"@exodus/bytes" : "^1.11.0" ,
"tr46" : "^6.0.0" ,
"webidl-conversions" : "^8.0.1"
} ,
"engines" : {
"node" : "^20.19.0 || ^22.12.0 || >=24.0.0"
}
} ,
"node_modules/which" : {
"version" : "2.0.2" ,
"resolved" : "https://registry.npmjs.org/which/-/which-2.0.2.tgz" ,
"integrity" : "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" ,
"dev" : true ,
"license" : "ISC" ,
"dependencies" : {
"isexe" : "^2.0.0"
} ,
"bin" : {
"node-which" : "bin/node-which"
} ,
"engines" : {
"node" : ">= 8"
}
} ,
"node_modules/why-is-node-running" : {
"version" : "2.3.0" ,
"resolved" : "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz" ,
"integrity" : "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"siginfo" : "^2.0.0" ,
"stackback" : "0.0.2"
} ,
"bin" : {
"why-is-node-running" : "cli.js"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/wrap-ansi" : {
"version" : "8.1.0" ,
"resolved" : "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" ,
"integrity" : "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"ansi-styles" : "^6.1.0" ,
"string-width" : "^5.0.1" ,
"strip-ansi" : "^7.0.1"
} ,
"engines" : {
"node" : ">=12"
} ,
"funding" : {
"url" : "https://github.com/chalk/wrap-ansi?sponsor=1"
}
} ,
"node_modules/wrap-ansi-cjs" : {
"name" : "wrap-ansi" ,
"version" : "7.0.0" ,
"resolved" : "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" ,
"integrity" : "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"ansi-styles" : "^4.0.0" ,
"string-width" : "^4.1.0" ,
"strip-ansi" : "^6.0.0"
} ,
"engines" : {
"node" : ">=10"
} ,
"funding" : {
"url" : "https://github.com/chalk/wrap-ansi?sponsor=1"
}
} ,
"node_modules/wrap-ansi-cjs/node_modules/ansi-regex" : {
"version" : "5.0.1" ,
"resolved" : "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" ,
"integrity" : "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" ,
"dev" : true ,
"license" : "MIT" ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/wrap-ansi-cjs/node_modules/ansi-styles" : {
"version" : "4.3.0" ,
"resolved" : "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" ,
"integrity" : "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"color-convert" : "^2.0.1"
} ,
"engines" : {
"node" : ">=8"
} ,
"funding" : {
"url" : "https://github.com/chalk/ansi-styles?sponsor=1"
}
} ,
"node_modules/wrap-ansi-cjs/node_modules/emoji-regex" : {
"version" : "8.0.0" ,
"resolved" : "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" ,
"integrity" : "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" ,
"dev" : true ,
"license" : "MIT"
} ,
"node_modules/wrap-ansi-cjs/node_modules/string-width" : {
"version" : "4.2.3" ,
"resolved" : "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" ,
"integrity" : "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"emoji-regex" : "^8.0.0" ,
"is-fullwidth-code-point" : "^3.0.0" ,
"strip-ansi" : "^6.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/wrap-ansi-cjs/node_modules/strip-ansi" : {
"version" : "6.0.1" ,
"resolved" : "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" ,
"integrity" : "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" ,
"dev" : true ,
"license" : "MIT" ,
"dependencies" : {
"ansi-regex" : "^5.0.1"
} ,
"engines" : {
"node" : ">=8"
}
} ,
"node_modules/xml-name-validator" : {
"version" : "5.0.0" ,
"resolved" : "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz" ,
"integrity" : "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==" ,
"dev" : true ,
"license" : "Apache-2.0" ,
"engines" : {
"node" : ">=18"
}
} ,
"node_modules/xmlchars" : {
"version" : "2.2.0" ,
"resolved" : "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" ,
"integrity" : "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" ,
"dev" : true ,
"license" : "MIT"
Add web GUI: FastAPI API + Vue 3 frontend with dark theme
API (web/api.py):
GET /api/projects, /api/projects/{id}, /api/tasks/{id}
GET /api/decisions?project=X, /api/cost?days=7, /api/support/tickets
POST /api/projects, /api/tasks, /api/decisions, /api/bootstrap
CORS for localhost:5173, all queries via models.py
Frontend (web/frontend/):
Vue 3 + TypeScript + Vite + Tailwind CSS v3
Dashboard: project cards with task counters, cost, status badges
ProjectView: tabs for Tasks/Decisions/Modules with filters
Modals: Add Project, Add Task, Add Decision, Bootstrap
Dark theme, monospace font, minimal clean design
Startup:
API: cd web && uvicorn api:app --reload --port 8420
Web: cd web/frontend && npm install && npm run dev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:50:15 +02:00
}
}
}