crewly 1.20.291 → 1.20.293

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 (86) hide show
  1. package/config/skills/agent/core/calendar-create/SKILL.md +1 -1
  2. package/config/skills/agent/core/calendar-list/SKILL.md +1 -1
  3. package/config/skills/agent/core/docs-comment/SKILL.md +5 -3
  4. package/config/skills/agent/core/docs-read/SKILL.md +4 -2
  5. package/config/skills/agent/core/docs-write/SKILL.md +4 -2
  6. package/config/skills/agent/core/drive-read/SKILL.md +4 -2
  7. package/config/skills/agent/core/drive-search/SKILL.md +4 -2
  8. package/config/skills/agent/core/drive-upload/SKILL.md +4 -2
  9. package/config/skills/agent/core/gmail-read/SKILL.md +1 -1
  10. package/config/skills/agent/core/gmail-search/SKILL.md +5 -4
  11. package/config/skills/agent/core/gmail-send/SKILL.md +2 -2
  12. package/config/skills/agent/core/google-connect/SKILL.md +17 -14
  13. package/config/skills/agent/core/google-connect/execute.sh +25 -8
  14. package/config/skills/agent/core/sheets-read/SKILL.md +4 -2
  15. package/config/skills/agent/core/sheets-write/SKILL.md +4 -2
  16. package/config/skills/agent/core/slides-create/SKILL.md +4 -2
  17. package/config/skills/agent/core/slides-read/SKILL.md +4 -2
  18. package/dist/backend/backend/src/constants.d.ts +36 -5
  19. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  20. package/dist/backend/backend/src/constants.js +36 -5
  21. package/dist/backend/backend/src/constants.js.map +1 -1
  22. package/dist/backend/backend/src/controllers/google/google-connect-card.d.ts +36 -19
  23. package/dist/backend/backend/src/controllers/google/google-connect-card.d.ts.map +1 -1
  24. package/dist/backend/backend/src/controllers/google/google-connect-card.js +57 -40
  25. package/dist/backend/backend/src/controllers/google/google-connect-card.js.map +1 -1
  26. package/dist/backend/backend/src/controllers/google/google.controller.d.ts +3 -2
  27. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  28. package/dist/backend/backend/src/controllers/google/google.controller.js +36 -10
  29. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  30. package/dist/backend/backend/src/index.d.ts.map +1 -1
  31. package/dist/backend/backend/src/index.js +35 -0
  32. package/dist/backend/backend/src/index.js.map +1 -1
  33. package/dist/backend/backend/src/services/briefing/briefing-review.d.ts +98 -0
  34. package/dist/backend/backend/src/services/briefing/briefing-review.d.ts.map +1 -0
  35. package/dist/backend/backend/src/services/briefing/briefing-review.js +138 -0
  36. package/dist/backend/backend/src/services/briefing/briefing-review.js.map +1 -0
  37. package/dist/backend/backend/src/services/briefing/briefing.service.d.ts +21 -0
  38. package/dist/backend/backend/src/services/briefing/briefing.service.d.ts.map +1 -1
  39. package/dist/backend/backend/src/services/briefing/briefing.service.js +37 -5
  40. package/dist/backend/backend/src/services/briefing/briefing.service.js.map +1 -1
  41. package/dist/backend/backend/src/services/briefing/briefing.types.d.ts +5 -0
  42. package/dist/backend/backend/src/services/briefing/briefing.types.d.ts.map +1 -1
  43. package/dist/backend/backend/src/services/briefing/briefing.types.js.map +1 -1
  44. package/dist/backend/backend/src/services/drive/drive-agent.service.d.ts +10 -0
  45. package/dist/backend/backend/src/services/drive/drive-agent.service.d.ts.map +1 -1
  46. package/dist/backend/backend/src/services/drive/drive-agent.service.js +6 -0
  47. package/dist/backend/backend/src/services/drive/drive-agent.service.js.map +1 -1
  48. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.d.ts +2 -0
  49. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.js +3 -1
  51. package/dist/backend/backend/src/services/drive/drive-briefing-snapshot.js.map +1 -1
  52. package/dist/backend/backend/src/services/drive/drive-cloud.contract.d.ts +1 -1
  53. package/dist/backend/backend/src/services/drive/drive-cloud.contract.d.ts.map +1 -1
  54. package/dist/backend/backend/src/services/drive/drive-cloud.contract.js +2 -2
  55. package/dist/backend/backend/src/services/drive/drive-cloud.contract.js.map +1 -1
  56. package/dist/backend/backend/src/services/drive/drive-status-check.d.ts +77 -0
  57. package/dist/backend/backend/src/services/drive/drive-status-check.d.ts.map +1 -0
  58. package/dist/backend/backend/src/services/drive/drive-status-check.js +96 -0
  59. package/dist/backend/backend/src/services/drive/drive-status-check.js.map +1 -0
  60. package/dist/backend/backend/src/services/google/google-reauth-notifier.service.d.ts +17 -21
  61. package/dist/backend/backend/src/services/google/google-reauth-notifier.service.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/google/google-reauth-notifier.service.js +34 -39
  63. package/dist/backend/backend/src/services/google/google-reauth-notifier.service.js.map +1 -1
  64. package/dist/backend/backend/src/services/google/google-reauth.wiring.d.ts +6 -2
  65. package/dist/backend/backend/src/services/google/google-reauth.wiring.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/google/google-reauth.wiring.js +9 -4
  67. package/dist/backend/backend/src/services/google/google-reauth.wiring.js.map +1 -1
  68. package/dist/backend/backend/src/services/google/google-workspace-token.service.js +1 -1
  69. package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
  70. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  71. package/dist/backend/backend/src/services/slack/slack-initializer.js +36 -12
  72. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  73. package/dist/backend/backend/src/services/slack/slack-thread-key.d.ts +12 -0
  74. package/dist/backend/backend/src/services/slack/slack-thread-key.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/slack/slack-thread-key.js +20 -0
  76. package/dist/backend/backend/src/services/slack/slack-thread-key.js.map +1 -1
  77. package/dist/backend/build-info.json +2 -2
  78. package/dist/cli/backend/src/constants.d.ts +36 -5
  79. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  80. package/dist/cli/backend/src/constants.js +36 -5
  81. package/dist/cli/backend/src/constants.js.map +1 -1
  82. package/dist/cli/backend/src/services/slack/slack-thread-key.d.ts +12 -0
  83. package/dist/cli/backend/src/services/slack/slack-thread-key.d.ts.map +1 -1
  84. package/dist/cli/backend/src/services/slack/slack-thread-key.js +20 -0
  85. package/dist/cli/backend/src/services/slack/slack-thread-key.js.map +1 -1
  86. package/package.json +1 -1
@@ -2519,6 +2519,12 @@ export class CrewlyServer {
2519
2519
  .sort((a, b) => a.createdAt - b.createdAt)[0];
2520
2520
  return reply ? { text: reply.content, at: new Date(reply.createdAt).toISOString() } : null;
2521
2521
  },
2522
+ // A card whose project ticket is already done / cancelled waits on nothing.
2523
+ isCardTicketClosed: async (ticket) => {
2524
+ const { ProjectTicketService } = await import('./services/project-tickets/project-ticket.service.js');
2525
+ const found = await ProjectTicketService.getInstance().get(ticket.projectPath, ticket.id);
2526
+ return found?.status === 'done' || found?.status === 'cancelled';
2527
+ },
2522
2528
  store: new BriefingStateStore(),
2523
2529
  }));
2524
2530
  }
@@ -2601,6 +2607,9 @@ export class CrewlyServer {
2601
2607
  error: talkErr instanceof Error ? talkErr.message : String(talkErr),
2602
2608
  });
2603
2609
  }
2610
+ // "Let me check with the teams" (Drive kickoff): set below, once the
2611
+ // status snapshot sync exists, and read by the Drive handler at run time.
2612
+ let driveStatusCheck = null;
2604
2613
  // Drive mode (specs/2026-10-08-drive-mode.md §7): Crewly Cloud hosts
2605
2614
  // the voice session; this machine delivers the owner's words to its
2606
2615
  // agents (tagged drive-mode, kept off Slack), carries their
@@ -2703,6 +2712,9 @@ export class CrewlyServer {
2703
2712
  },
2704
2713
  agentExists: async (agentSession) => buildAgentRoster(await this.storageService.getTeams()).some((a) => a.agentSession === agentSession),
2705
2714
  store: new DriveConversationStore(),
2715
+ refreshStatus: async () => {
2716
+ await driveStatusCheck?.run();
2717
+ },
2706
2718
  // Keep-warm (specs/2026-10-09-drive-mode-v3.md §5): an agent the owner
2707
2719
  // names is started now if stopped; while warm its start goes ahead of
2708
2720
  // ordinary starts and nothing stops it for being idle.
@@ -2796,6 +2808,29 @@ export class CrewlyServer {
2796
2808
  ],
2797
2809
  });
2798
2810
  briefingSync.start();
2811
+ // Drive opened: ask the agents holding the owner's open items to
2812
+ // bring them up to date, then rebuild and upload (no caches).
2813
+ {
2814
+ const { DriveStatusCheck } = await import('./services/drive/drive-status-check.js');
2815
+ const checkAgents = this.apiController.agentRegistrationService;
2816
+ driveStatusCheck = new DriveStatusCheck({
2817
+ targets: async () => (await getBriefingService()?.statusCheckTargets()) ?? [],
2818
+ isRunning: (session) => {
2819
+ try {
2820
+ return getSessionBackendSync()?.sessionExists(session) ?? false;
2821
+ }
2822
+ catch {
2823
+ return false;
2824
+ }
2825
+ },
2826
+ nudge: async (session, text) => (await checkAgents.sendMessageToAgent(session, text)).success,
2827
+ rebuild: async () => {
2828
+ sourceCache.invalidatePool();
2829
+ sourceCache.invalidateTickets();
2830
+ await briefingSync.syncNow(true);
2831
+ },
2832
+ });
2833
+ }
2799
2834
  }
2800
2835
  catch (briefingSyncErr) {
2801
2836
  this.logger.warn('Drive mode status briefing wiring skipped', {