crewly 1.20.297 → 1.20.299

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/config/roles/developer/prompt.md +1 -1
  2. package/config/skills/orchestrator/drive-logs/SKILL.md +42 -0
  3. package/config/skills/orchestrator/drive-logs/execute.sh +37 -0
  4. package/dist/backend/backend/src/constants.d.ts +30 -0
  5. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  6. package/dist/backend/backend/src/constants.js +30 -0
  7. package/dist/backend/backend/src/constants.js.map +1 -1
  8. package/dist/backend/backend/src/controllers/drive-logs/drive-logs.controller.d.ts +31 -0
  9. package/dist/backend/backend/src/controllers/drive-logs/drive-logs.controller.d.ts.map +1 -0
  10. package/dist/backend/backend/src/controllers/drive-logs/drive-logs.controller.js +58 -0
  11. package/dist/backend/backend/src/controllers/drive-logs/drive-logs.controller.js.map +1 -0
  12. package/dist/backend/backend/src/index.d.ts.map +1 -1
  13. package/dist/backend/backend/src/index.js +13 -0
  14. package/dist/backend/backend/src/index.js.map +1 -1
  15. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  16. package/dist/backend/backend/src/routes/api.routes.js +3 -0
  17. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  18. package/dist/backend/backend/src/services/briefing/briefing.service.d.ts +15 -0
  19. package/dist/backend/backend/src/services/briefing/briefing.service.d.ts.map +1 -1
  20. package/dist/backend/backend/src/services/briefing/briefing.service.js +6 -0
  21. package/dist/backend/backend/src/services/briefing/briefing.service.js.map +1 -1
  22. package/dist/backend/backend/src/services/drive/drive-agent.service.d.ts +10 -1
  23. package/dist/backend/backend/src/services/drive/drive-agent.service.d.ts.map +1 -1
  24. package/dist/backend/backend/src/services/drive/drive-agent.service.js +25 -3
  25. package/dist/backend/backend/src/services/drive/drive-agent.service.js.map +1 -1
  26. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.d.ts +5 -1
  27. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.d.ts.map +1 -1
  28. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.js +8 -2
  29. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.js.map +1 -1
  30. package/dist/backend/backend/src/services/drive/drive-briefing.contract.d.ts +32 -0
  31. package/dist/backend/backend/src/services/drive/drive-briefing.contract.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/drive/drive-briefing.wiring.d.ts +3 -0
  33. package/dist/backend/backend/src/services/drive/drive-briefing.wiring.d.ts.map +1 -1
  34. package/dist/backend/backend/src/services/drive/drive-briefing.wiring.js +2 -1
  35. package/dist/backend/backend/src/services/drive/drive-briefing.wiring.js.map +1 -1
  36. package/dist/backend/backend/src/services/drive/drive-cloud.contract.d.ts +1 -1
  37. package/dist/backend/backend/src/services/drive/drive-cloud.contract.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/drive/drive-cloud.contract.js +1 -1
  39. package/dist/backend/backend/src/services/drive/drive-cloud.contract.js.map +1 -1
  40. package/dist/backend/backend/src/services/drive/drive-log.store.d.ts +81 -0
  41. package/dist/backend/backend/src/services/drive/drive-log.store.d.ts.map +1 -0
  42. package/dist/backend/backend/src/services/drive/drive-log.store.js +140 -0
  43. package/dist/backend/backend/src/services/drive/drive-log.store.js.map +1 -0
  44. package/dist/backend/backend/src/services/drive/drive-org-overview.d.ts +45 -0
  45. package/dist/backend/backend/src/services/drive/drive-org-overview.d.ts.map +1 -0
  46. package/dist/backend/backend/src/services/drive/drive-org-overview.js +102 -0
  47. package/dist/backend/backend/src/services/drive/drive-org-overview.js.map +1 -0
  48. package/dist/backend/backend/src/services/worktree/worktree-dirty.d.ts +61 -0
  49. package/dist/backend/backend/src/services/worktree/worktree-dirty.d.ts.map +1 -0
  50. package/dist/backend/backend/src/services/worktree/worktree-dirty.js +121 -0
  51. package/dist/backend/backend/src/services/worktree/worktree-dirty.js.map +1 -0
  52. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts +2 -0
  53. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts.map +1 -1
  54. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js +6 -1
  55. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js.map +1 -1
  56. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +49 -5
  57. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +116 -15
  59. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
  60. package/dist/backend/backend/src/services/worktree/worktree-landed.d.ts +76 -0
  61. package/dist/backend/backend/src/services/worktree/worktree-landed.d.ts.map +1 -0
  62. package/dist/backend/backend/src/services/worktree/worktree-landed.js +132 -0
  63. package/dist/backend/backend/src/services/worktree/worktree-landed.js.map +1 -0
  64. package/dist/backend/build-info.json +2 -2
  65. package/dist/cli/backend/src/constants.d.ts +30 -0
  66. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  67. package/dist/cli/backend/src/constants.js +30 -0
  68. package/dist/cli/backend/src/constants.js.map +1 -1
  69. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Drive mode session logs on this machine (specs/2026-10-09-drive-mode-v3.md §10),
3
+ * mounted at `/api/drive-logs`:
4
+ *
5
+ * - `GET /` — recent logs, newest first (`?limit=`)
6
+ * - `GET /:id` — one log as markdown (`?format=jsonl` for the events); `id` is `<date>-<sessionId>` or the session id
7
+ *
8
+ * @module controllers/drive-logs/drive-logs.controller
9
+ */
10
+ import { Router, type Request, type Response } from 'express';
11
+ /**
12
+ * GET /api/drive-logs
13
+ *
14
+ * @param req - Query `limit`
15
+ * @param res - 200 `{ success, data: DriveLogEntry[] }`
16
+ */
17
+ export declare function listDriveLogs(req: Request, res: Response): Promise<void>;
18
+ /**
19
+ * GET /api/drive-logs/:id
20
+ *
21
+ * @param req - Param `id`, query `format` (`md` | `jsonl`)
22
+ * @param res - 200 `{ success, data: text }`; 404 when there is no such log
23
+ */
24
+ export declare function readDriveLog(req: Request, res: Response): Promise<void>;
25
+ /**
26
+ * Create the Drive logs router.
27
+ *
28
+ * @returns Router for `/api/drive-logs`
29
+ */
30
+ export declare function createDriveLogsRouter(): Router;
31
+ //# sourceMappingURL=drive-logs.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-logs.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/drive-logs/drive-logs.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG9D;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9E;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAK9C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Drive mode session logs on this machine (specs/2026-10-09-drive-mode-v3.md §10),
3
+ * mounted at `/api/drive-logs`:
4
+ *
5
+ * - `GET /` — recent logs, newest first (`?limit=`)
6
+ * - `GET /:id` — one log as markdown (`?format=jsonl` for the events); `id` is `<date>-<sessionId>` or the session id
7
+ *
8
+ * @module controllers/drive-logs/drive-logs.controller
9
+ */
10
+ import { Router } from 'express';
11
+ import { getDriveLogStore } from '../../services/drive/drive-log.store.js';
12
+ /**
13
+ * GET /api/drive-logs
14
+ *
15
+ * @param req - Query `limit`
16
+ * @param res - 200 `{ success, data: DriveLogEntry[] }`
17
+ */
18
+ export async function listDriveLogs(req, res) {
19
+ try {
20
+ const limit = Number(req.query.limit);
21
+ res.json({ success: true, data: await getDriveLogStore().list(Number.isFinite(limit) && limit > 0 ? limit : undefined) });
22
+ }
23
+ catch (err) {
24
+ res.status(500).json({ success: false, error: err instanceof Error ? err.message : String(err) });
25
+ }
26
+ }
27
+ /**
28
+ * GET /api/drive-logs/:id
29
+ *
30
+ * @param req - Param `id`, query `format` (`md` | `jsonl`)
31
+ * @param res - 200 `{ success, data: text }`; 404 when there is no such log
32
+ */
33
+ export async function readDriveLog(req, res) {
34
+ try {
35
+ const format = req.query.format === 'jsonl' ? 'jsonl' : 'md';
36
+ const text = await getDriveLogStore().read(String(req.params.id ?? ''), format);
37
+ if (text === null) {
38
+ res.status(404).json({ success: false, error: 'No such Drive log. List them with GET /api/drive-logs.' });
39
+ return;
40
+ }
41
+ res.json({ success: true, data: text });
42
+ }
43
+ catch (err) {
44
+ res.status(500).json({ success: false, error: err instanceof Error ? err.message : String(err) });
45
+ }
46
+ }
47
+ /**
48
+ * Create the Drive logs router.
49
+ *
50
+ * @returns Router for `/api/drive-logs`
51
+ */
52
+ export function createDriveLogsRouter() {
53
+ const router = Router();
54
+ router.get('/', listDriveLogs);
55
+ router.get('/:id', readDriveLog);
56
+ return router;
57
+ }
58
+ //# sourceMappingURL=drive-logs.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-logs.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/drive-logs/drive-logs.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,GAAa;IAC7D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5H,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,GAAa;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,gBAAgB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC,CAAC;YAC1G,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":";AA4CA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiUjD,qBAAa,YAAY;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,EAAE,CAAiB;IAC3B,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAqE;IACnF,gFAAgF;IAChF,OAAO,CAAC,iBAAiB,CAAC,CAAyD;IAEnF,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,sBAAsB,CAA0B;IACxD,OAAO,CAAC,4BAA4B,CAAgC;IACpE,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,wBAAwB,CAA4B;IAC5D,OAAO,CAAC,eAAe,CAAmB;IAC1C,qEAAqE;IACrE,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,sBAAsB,CAAiD;IAC/E,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,kGAAkG;IAClG,OAAO,CAAC,sBAAsB,CAAuC;IAGrE,OAAO,CAAC,+BAA+B,CAAgD;IACvF,+FAA+F;IAC/F,OAAO,CAAC,oBAAoB,CAAqC;IACjE,8HAA8H;IAC9H,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,OAAO,CAAC,6BAA6B,CAA8C;IACnF,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,2BAA2B,CAA+B;IAClE,OAAO,CAAC,0BAA0B,CAA8B;IAChE,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,kBAAkB,CAA0C;IACpE,8DAA8D;IAC9D,OAAO,CAAC,iBAAiB,CAAmG;IAK5H,OAAO,CAAC,aAAa,CAAuE;IAC5F,OAAO,CAAC,gBAAgB,CAET;IAGf,OAAO,CAAC,cAAc,CAAS;IAC/B,oEAAoE;IACpE,OAAO,CAAC,qBAAqB,CAA6C;IAC1E,OAAO,CAAC,qBAAqB,CAA2G;IACxI,0EAA0E;IAC1E,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,gBAAgB,CAAiG;IACzH,oFAAoF;IACpF,OAAO,CAAC,oBAAoB,CAAK;IACjC,2EAA2E;IAC3E,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,yGAAyG;IACzG,OAAO,CAAC,sBAAsB,CAAuB;IACrD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAMhC;IACH,oGAAoG;IACpG,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,wBAAwB,CAA+B;gBAEnD,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAsE3C,OAAO,CAAC,kBAAkB;IAovC1B,OAAO,CAAC,mBAAmB;IAuE3B,OAAO,CAAC,eAAe;IA4MvB,OAAO,CAAC,kBAAkB;IA0BpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA81E5B;;;OAGG;YACW,2BAA2B;IAuCzC;;;OAGG;YACW,8BAA8B;IAsB5C;;;OAGG;YACW,gCAAgC;IAsB9C;;;OAGG;YACW,8BAA8B;IAsB5C;;;;OAIG;YACW,8BAA8B;IA8M5C;;;;;;;;;;;;OAYG;YACW,6BAA6B;IAsB3C,kEAAkE;IAClE,OAAO,CAAC,iBAAiB,CAA4E;IAErG;;;;;;OAMG;YACW,uBAAuB;IAsCrC;;;;;OAKG;YACW,eAAe;IAuB7B;;;;;OAKG;YACW,iCAAiC;IAgL/C;;;;OAIG;YACW,2BAA2B;YA0B3B,qBAAqB;IAsBnC;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAwBlC;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;YAqCZ,eAAe;YAoFf,kBAAkB;IAgBhC,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,sBAAsB;IAsC9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAyEvB;;;;;;;OAOG;YACW,2BAA2B;IAczC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAsG1B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IA4DvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAuClC;;;;;OAKG;YACW,0BAA0B;IAoExC;;;;OAIG;YACW,qBAAqB;IA+DnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;;;;OAMG;IACH;;;;;;;OAOG;YACW,yBAAyB;YASzB,kBAAkB;IAmBhC;;;;;OAKG;YACW,8BAA8B;IA6C5C;;;;OAIG;YACW,+BAA+B;IA2C7C;;;;;;OAMG;YACW,kBAAkB;IA6BhC,OAAO,CAAC,qBAAqB;IAoC7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoE1B;;;;;;;;;OASG;IACH;;;;;;;;;;;;;;OAcG;IACH,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAE1D;;;;;;;;OAQG;IACH;;OAEG;IACH;;;;;OAKG;YACW,sBAAsB;YA4CtB,eAAe;YA6Cf,kBAAkB;IA2IhC;;;;;;OAMG;YACW,0BAA0B;IAkFxC;;;;;;;OAOG;YACW,wBAAwB;YAuCxB,yBAAyB;IA2FvC;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAmChC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;YAmIf,wBAAwB;IAWtC,OAAO,CAAC,qBAAqB;IA8H7B,OAAO,CAAC,cAAc;IActB;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA+W1H,SAAS,IAAI,aAAa;CAG1B;AAyDD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":"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"}
@@ -2552,6 +2552,11 @@ export class CrewlyServer {
2552
2552
  const found = await ProjectTicketService.getInstance().get(ticket.projectPath, ticket.id);
2553
2553
  return found?.status === 'done' || found?.status === 'cancelled';
2554
2554
  },
2555
+ // The owner's voice decision goes into the ticket's record at once.
2556
+ noteDecision: async ({ ticket, agentName, summary, answer }) => {
2557
+ const { ProjectTicketService } = await import('./services/project-tickets/project-ticket.service.js');
2558
+ await ProjectTicketService.getInstance().appendLog(ticket.projectPath, ticket.id, 'owner (Drive)', `Owner decided in Drive: "${answer}" (${agentName}: ${summary.slice(0, 160)}). Proceed on this.`);
2559
+ },
2555
2560
  store: new BriefingStateStore(),
2556
2561
  }));
2557
2562
  }
@@ -2801,6 +2806,8 @@ export class CrewlyServer {
2801
2806
  ownerFeed: (sinceMs, limit) => chatService.getOwnerFeed({ sinceMs, limit }),
2802
2807
  orchestratorRunning: () => getSessionBackendSync()?.sessionExists(ORCHESTRATOR_SESSION_NAME) ?? false,
2803
2808
  orchestratorName: CLOUD_TALK_CONSTANTS.ORCHESTRATOR_DISPLAY_NAME,
2809
+ // Charters and chore-free work lists for the high-level overview.
2810
+ roster: async () => (await import('./services/team-roster/team-roster.service.js')).TeamRosterService.getInstance().getRoster(),
2804
2811
  })),
2805
2812
  cloud: {
2806
2813
  getToken: () => cloudClient.getToken(),
@@ -3988,6 +3995,12 @@ export class CrewlyServer {
3988
3995
  const r = await this.apiController.agentRegistrationService.sendMessageToAgent(session, message);
3989
3996
  return r.success;
3990
3997
  });
3998
+ // Finished work cleans up after itself: a WorkItem / ticket reaching
3999
+ // done or verified schedules one debounced janitor pass (safe rules
4000
+ // unchanged — only landed, clean, unattended worktrees go).
4001
+ this.eventBusService.onInProcess(['task:done', 'task:verified'], () => {
4002
+ WorktreeJanitorService.getInstance().requestTidy();
4003
+ });
3991
4004
  if (WorktreeJanitorService.getInstance().start()) {
3992
4005
  this.logger.info('WorktreeJanitorService scheduled');
3993
4006
  }