Files
headquarter/.stoneforge/sync/elements.jsonl
T
alex 9ad11a021c feat: add config profiles
- Add ConfigProfile and ConfigProfileInclude data models with migrations
- Implement profile resolver service with ordered includes and merge rules
- Add profile CRUD API with validation, compatibility, and cycle detection
- Add instance API plumbing for profile selection on create/start/restart
- Add resolved profile preview and default resolution APIs
- Add frontend config profile API client and management UI
- Add launch/restart profile selection UI
- Add backend integration and unit tests (31 passing)

OpenSpec: add-config-profiles
Quality gates: ruff, TypeScript compile, 31 tests passing
2026-05-24 17:58:39 +00:00

3 lines
15 KiB
JSON

{"id":"el-51a8","type":"entity","createdAt":"2026-05-24T12:03:40.486Z","updatedAt":"2026-05-24T16:40:49.450Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"worker","workerMode":"ephemeral","sessionStatus":"idle","provider":"opencode","model":"kimi-for-coding/k2p6","channelId":"el-9amf","lastActivityAt":"2026-05-24T16:08:30.074Z","sessionHistory":[{"id":"session-mpjy9x6g-0016-2in3","providerSessionId":"ses_1a5554e6effetx9L3jx99WwWqt","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-31-resolved-profile-preview-ap","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-31-resolved-profile-preview-ap","startedAt":"2026-05-24T15:46:36.564Z","endedAt":"2026-05-24T16:40:49.449Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjxa049-000w-2z6p","providerSessionId":"ses_1a56ed6dbffetrUE0nScXrXGnA","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-31-resolved-profile-preview-ap","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-31-resolved-profile-preview-ap","startedAt":"2026-05-24T15:18:43.239Z","endedAt":"2026-05-24T15:46:11.952Z","terminationReason":"Task was reset"},{"id":"session-mpjx6aqa-000u-17we","providerSessionId":"ses_1a571872bffet73O54j3u5zdP3","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T15:15:47.032Z","endedAt":"2026-05-24T15:16:55.765Z"},{"id":"session-mpjtll8v-000i-0v89","providerSessionId":"ses_1a5cd8be6ffeh2VuHpEIx5H4RL","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","startedAt":"2026-05-24T13:35:42.037Z","endedAt":"2026-05-24T14:06:52.035Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjtl1js-000h-6094","providerSessionId":"ses_1a5cd8be6ffeh2VuHpEIx5H4RL","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","startedAt":"2026-05-24T13:35:16.509Z","endedAt":"2026-05-24T13:35:42.041Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjtjr8p-000g-zfz5","providerSessionId":"ses_1a5ce7654ffeh1JqCNXdJ3Kfl8","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","startedAt":"2026-05-24T13:34:16.494Z","endedAt":"2026-05-24T13:35:15.970Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjthxn2-000f-bkik","providerSessionId":"ses_1a5cfc26fffeL1eTYux6WrnQd5","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","startedAt":"2026-05-24T13:32:51.476Z","endedAt":"2026-05-24T13:34:15.970Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjtgs0p-000e-hd3x","providerSessionId":"ses_1a5d09523ffeo8qbzRA7R5XoOR","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-triage","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-triage","startedAt":"2026-05-24T13:31:57.534Z","endedAt":"2026-05-24T13:32:50.964Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjtfkr4-000d-xy1h","providerSessionId":"ses_1a5d17011ffe1Maf9lbbAXN6p3","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","startedAt":"2026-05-24T13:31:01.488Z","endedAt":"2026-05-24T13:31:55.963Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjtej26-000c-nkyw","providerSessionId":"ses_1a5d22efeffeZ6uY6z3C9j42bF","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-triage","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-triage","startedAt":"2026-05-24T13:30:12.612Z","endedAt":"2026-05-24T13:31:00.963Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjt44g7-0007-v1vd","providerSessionId":"ses_1a5d99775ffe6BFjKsmcKWTL09","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T13:22:07.121Z","endedAt":"2026-05-24T13:30:07.608Z"},{"id":"session-mpjt3fy3-0004-iw40","providerSessionId":"ses_1a5da10baffeDDYNRD0YpG43Ew","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-triage","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-triage","startedAt":"2026-05-24T13:21:36.072Z","endedAt":"2026-05-24T13:21:50.357Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjsux8a-000b-jayr","providerSessionId":"ses_1a5e02179ffe4Qb7wnOFUwqtaC","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-22-profile-crud-validation-com","startedAt":"2026-05-24T13:14:58.569Z","endedAt":"2026-05-24T13:18:55.215Z","terminationReason":"Stopped by user via Stop All"},{"id":"session-mpjsbk4v-0007-6cbc","providerSessionId":"ses_1a5eded4effeI1mazuurCkuMfj","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-11-backend-data-model-and-migr","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-11-backend-data-model-and-migr","startedAt":"2026-05-24T12:59:54.420Z","endedAt":"2026-05-24T13:01:48.889Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjrteww-0005-ut10","providerSessionId":"ses_1a5fad548ffer9oUDHJyfzAG6H","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-11-backend-data-model-and-migr","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-11-backend-data-model-and-migr","startedAt":"2026-05-24T12:45:48.603Z","endedAt":"2026-05-24T12:59:18.882Z","terminationReason":"Process no longer alive (PID check)"}],"sessionId":"ses_1a5554e6effetx9L3jx99WwWqt"}},"name":"e-worker-1","entityType":"agent"}
{"id":"el-2i1s","type":"entity","createdAt":"2026-05-24T12:03:42.204Z","updatedAt":"2026-05-24T16:40:49.450Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"worker","workerMode":"ephemeral","sessionStatus":"idle","provider":"opencode","model":"kimi-for-coding/k2p6","channelId":"el-1na8","lastActivityAt":"2026-05-24T16:09:13.594Z","sessionHistory":[{"id":"session-mpjy9tfl-0015-1rfr","providerSessionId":"ses_1a5555835ffe4wit1VrAUEUryV","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T15:46:34.066Z","endedAt":"2026-05-24T16:40:49.449Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjy7tj0-0013-yv25","providerSessionId":"ses_1a556d0c0ffe9Pp5DzhQ3171go","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T15:44:57.666Z","endedAt":"2026-05-24T15:45:06.356Z"},{"id":"session-mpjxyncd-0012-mzl0","providerSessionId":"ses_1a590f893ffeeXUH8RzaOpkI6O","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T15:37:49.745Z","endedAt":"2026-05-24T15:38:14.160Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjxy06i-0011-6s11","providerSessionId":"ses_1a590f893ffeeXUH8RzaOpkI6O","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T15:37:19.728Z","endedAt":"2026-05-24T15:37:49.749Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjxxghk-0010-td7e","providerSessionId":"ses_1a590f893ffeeXUH8RzaOpkI6O","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T15:36:54.208Z","endedAt":"2026-05-24T15:37:19.730Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjxrcmq-000z-5vj7","providerSessionId":"ses_1a590f893ffeeXUH8RzaOpkI6O","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T15:32:09.270Z","endedAt":"2026-05-24T15:32:33.619Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjxqpgy-000y-7m71","providerSessionId":"ses_1a590f893ffeeXUH8RzaOpkI6O","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T15:31:39.255Z","endedAt":"2026-05-24T15:32:09.274Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjxq668-000x-4h7c","providerSessionId":"ses_1a590f893ffeeXUH8RzaOpkI6O","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T15:31:14.243Z","endedAt":"2026-05-24T15:31:39.257Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjvy2w6-000p-5lvm","providerSessionId":"ses_1a590f893ffeeXUH8RzaOpkI6O","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-52-backend-instance-launch-tes","startedAt":"2026-05-24T14:41:26.384Z","endedAt":"2026-05-24T15:31:14.249Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjugw9k-000m-ik3b","providerSessionId":"ses_1a5b6dea4ffexjf3TPdBocQiah","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-32-launch-and-restart-profile","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-32-launch-and-restart-profile","startedAt":"2026-05-24T14:00:02.657Z","endedAt":"2026-05-24T14:17:07.317Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjufb70-000l-9pnw","providerSessionId":"ses_1a5b7eac1ffecNrVHWktuqWkIY","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-32-launch-and-restart-profile","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-32-launch-and-restart-profile","startedAt":"2026-05-24T13:58:54.021Z","endedAt":"2026-05-24T14:00:02.019Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjtd0zw-000b-c0rd","providerSessionId":"ses_1a5d337c6ffe4YxBpmKWvrKCPA","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-21-profile-resolver-service","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-21-profile-resolver-service","startedAt":"2026-05-24T13:29:04.828Z","endedAt":"2026-05-24T13:54:07.001Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjt5pcg-0008-d3l9","providerSessionId":"ses_1a5e09bc1ffeUVWkhyePdcI3N2","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-23-instance-api-profile-select","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-23-instance-api-profile-select","startedAt":"2026-05-24T13:23:20.852Z","endedAt":"2026-05-24T13:29:00.960Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjt441g-0006-x97u","providerSessionId":"ses_1a5d9993affeqdurslf44QoZYl","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T13:22:07.114Z","endedAt":"2026-05-24T13:22:13.812Z"},{"id":"session-mpjt3d4a-0003-59vs","providerSessionId":"ses_1a5da1933ffemmPa8ZGZ8Q3r2D","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-triage","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-triage","startedAt":"2026-05-24T13:21:33.903Z","endedAt":"2026-05-24T13:21:53.369Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjsu7ir-0009-swhm","providerSessionId":"ses_1a5e09bc1ffeUVWkhyePdcI3N2","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-23-instance-api-profile-select","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-23-instance-api-profile-select","startedAt":"2026-05-24T13:14:27.274Z","endedAt":"2026-05-24T13:18:54.745Z","terminationReason":"Stopped by user via Stop All"},{"id":"session-mpjsahjf-0006-f0kq","providerSessionId":"ses_1a5eeb0b1ffe0xUI8Gh31D00pg","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-11-backend-data-model-and-migr","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-1-11-backend-data-model-and-migr","startedAt":"2026-05-24T12:59:04.402Z","endedAt":"2026-05-24T12:59:58.885Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjrsosk-0004-z4bb","providerSessionId":"ses_1a5fb4fc4ffe9xd4TEfuPJ1sVy","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-63-final-openspec-status-and-c","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-63-final-openspec-status-and-c","startedAt":"2026-05-24T12:45:17.252Z","endedAt":"2026-05-24T12:56:33.874Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjqhtyo-0003-92yu","providerSessionId":"ses_1a61caa27ffe2trcM02SwINn30","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T12:08:51.424Z","endedAt":"2026-05-24T12:12:56.908Z"}],"sessionId":"ses_1a5555835ffe4wit1VrAUEUryV"}},"name":"e-worker-2","entityType":"agent"}