crewly 1.20.163 → 1.20.164

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 (132) hide show
  1. package/config/roles/orchestrator/prompt.md +2 -0
  2. package/config/roles/team-leader/prompt.md +2 -0
  3. package/config/roles/team-leader/tl-addon.md +2 -0
  4. package/config/skills/agent/core/project-tickets/SKILL.md +4 -0
  5. package/config/skills/orchestrator/set-team-lead/SKILL.md +58 -0
  6. package/config/skills/orchestrator/set-team-lead/execute.sh +46 -0
  7. package/config/skills/orchestrator/set-team-lead/execute.test.sh +77 -0
  8. package/dist/backend/backend/src/constants.d.ts +31 -1
  9. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  10. package/dist/backend/backend/src/constants.js +39 -2
  11. package/dist/backend/backend/src/constants.js.map +1 -1
  12. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +1 -1
  13. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
  14. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +6 -1
  15. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/team/team.controller.d.ts +15 -0
  17. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  18. package/dist/backend/backend/src/controllers/team/team.controller.js +110 -15
  19. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  20. package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
  21. package/dist/backend/backend/src/controllers/team/team.routes.js +3 -1
  22. package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
  23. package/dist/backend/backend/src/index.d.ts.map +1 -1
  24. package/dist/backend/backend/src/index.js +9 -15
  25. package/dist/backend/backend/src/index.js.map +1 -1
  26. package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
  27. package/dist/backend/backend/src/models/Team.js +5 -9
  28. package/dist/backend/backend/src/models/Team.js.map +1 -1
  29. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/agent/agent-registration.service.js +20 -28
  31. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  32. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +26 -0
  33. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  34. package/dist/backend/backend/src/services/agent/idle-detection.service.js +43 -0
  35. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  36. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +18 -6
  37. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +21 -23
  39. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  40. package/dist/backend/backend/src/services/chat-v2/huddle-leader.d.ts +23 -0
  41. package/dist/backend/backend/src/services/chat-v2/huddle-leader.d.ts.map +1 -0
  42. package/dist/backend/backend/src/services/chat-v2/huddle-leader.js +37 -0
  43. package/dist/backend/backend/src/services/chat-v2/huddle-leader.js.map +1 -0
  44. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  45. package/dist/backend/backend/src/services/core/storage.service.js +3 -0
  46. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  47. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +28 -7
  48. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
  49. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +51 -15
  50. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
  51. package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.d.ts +70 -0
  52. package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.d.ts.map +1 -0
  53. package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.js +64 -0
  54. package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.js.map +1 -0
  55. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts +24 -0
  56. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map +1 -1
  57. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js +38 -1
  58. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js.map +1 -1
  59. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts +14 -2
  60. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts.map +1 -1
  61. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js +33 -3
  62. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js.map +1 -1
  63. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts +13 -2
  64. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -1
  65. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +43 -12
  66. package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -1
  67. package/dist/backend/backend/src/services/slack/slack-instance-registry.service.js +2 -2
  68. package/dist/backend/backend/src/services/slack/slack-instance-registry.service.js.map +1 -1
  69. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +10 -1
  70. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  71. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +19 -8
  72. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  73. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts.map +1 -1
  74. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js +4 -3
  75. package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js.map +1 -1
  76. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +4 -3
  77. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js +6 -7
  79. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js.map +1 -1
  80. package/dist/backend/backend/src/services/wiki/wiki-owner.resolver.d.ts.map +1 -1
  81. package/dist/backend/backend/src/services/wiki/wiki-owner.resolver.js +2 -1
  82. package/dist/backend/backend/src/services/wiki/wiki-owner.resolver.js.map +1 -1
  83. package/dist/backend/backend/src/types/index.d.ts +3 -2
  84. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  85. package/dist/backend/backend/src/types/index.js.map +1 -1
  86. package/dist/backend/backend/src/utils/defaultPrompts.d.ts.map +1 -1
  87. package/dist/backend/backend/src/utils/defaultPrompts.js +8 -0
  88. package/dist/backend/backend/src/utils/defaultPrompts.js.map +1 -1
  89. package/dist/backend/backend/src/utils/member-default-model.utils.d.ts +5 -5
  90. package/dist/backend/backend/src/utils/member-default-model.utils.d.ts.map +1 -1
  91. package/dist/backend/backend/src/utils/member-default-model.utils.js +4 -4
  92. package/dist/backend/backend/src/utils/member-default-model.utils.js.map +1 -1
  93. package/dist/backend/backend/src/utils/team.utils.d.ts +129 -18
  94. package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -1
  95. package/dist/backend/backend/src/utils/team.utils.js +240 -28
  96. package/dist/backend/backend/src/utils/team.utils.js.map +1 -1
  97. package/dist/backend/build-info.json +2 -2
  98. package/dist/cli/backend/src/constants.d.ts +31 -1
  99. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  100. package/dist/cli/backend/src/constants.js +39 -2
  101. package/dist/cli/backend/src/constants.js.map +1 -1
  102. package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
  103. package/dist/cli/backend/src/models/Team.js +5 -9
  104. package/dist/cli/backend/src/models/Team.js.map +1 -1
  105. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  106. package/dist/cli/backend/src/services/agent/agent-registration.service.js +20 -28
  107. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  108. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +18 -6
  109. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  110. package/dist/cli/backend/src/services/ai/prompt-builder.service.js +21 -23
  111. package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  112. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  113. package/dist/cli/backend/src/services/core/storage.service.js +3 -0
  114. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  115. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +10 -1
  116. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  117. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +19 -8
  118. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  119. package/dist/cli/backend/src/types/index.d.ts +3 -2
  120. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  121. package/dist/cli/backend/src/types/index.js.map +1 -1
  122. package/dist/cli/backend/src/utils/member-default-model.utils.d.ts +5 -5
  123. package/dist/cli/backend/src/utils/member-default-model.utils.d.ts.map +1 -1
  124. package/dist/cli/backend/src/utils/member-default-model.utils.js +4 -4
  125. package/dist/cli/backend/src/utils/member-default-model.utils.js.map +1 -1
  126. package/dist/cli/backend/src/utils/team.utils.d.ts +129 -18
  127. package/dist/cli/backend/src/utils/team.utils.d.ts.map +1 -1
  128. package/dist/cli/backend/src/utils/team.utils.js +240 -28
  129. package/dist/cli/backend/src/utils/team.utils.js.map +1 -1
  130. package/frontend/dist/assets/{index-64c8a616.js → index-9153caca.js} +263 -263
  131. package/frontend/dist/index.html +1 -1
  132. package/package.json +1 -1
@@ -129,6 +129,7 @@ import { FissionGuardService, createFailOpenBudgetChecker } from './services/fis
129
129
  import { BudgetService } from './services/autonomous/budget.service.js';
130
130
  import { setFissionGuardService } from './controllers/fission/fission.controller.js';
131
131
  import { TaskPoolService } from './services/task-pool/task-pool.service.js';
132
+ import { PENDING_WORK_STATUSES } from './services/agent/idle-detection.service.js';
132
133
  import { WorkItemWorktreeService } from './services/worktree/workitem-worktree.service.js';
133
134
  import { WorkItemWorktreeSubscriber, createTerminalNotifier } from './services/worktree/workitem-worktree.subscriber.js';
134
135
  import { sessionsToRestore } from './services/agent/restore-filter.js';
@@ -1687,6 +1688,12 @@ export class CrewlyServer {
1687
1688
  this.logger.info('Starting idle detection service...');
1688
1689
  const idleDetection = IdleDetectionService.getInstance();
1689
1690
  idleDetection.setAgentRegistrationService(this.apiController.agentRegistrationService);
1691
+ // An agent with work queued for it (e.g. a ticket just assigned to a
1692
+ // member that was started for it) is never idle-stopped.
1693
+ idleDetection.setPendingWorkCheck(async (sessionName) => {
1694
+ const items = await TaskPoolService.getInstance().getAllItems();
1695
+ return items.some((wi) => wi.target === sessionName && PENDING_WORK_STATUSES.has(wi.status));
1696
+ });
1690
1697
  idleDetection.start();
1691
1698
  // Wire OrchestratorRestartService with dependencies for auto-restart
1692
1699
  try {
@@ -1953,21 +1960,8 @@ export class CrewlyServer {
1953
1960
  const members = new Set(chatService.queryHuddleMembersForDispatch(channelId));
1954
1961
  if (members.size === 0)
1955
1962
  return null;
1956
- const teams = await this.storageService.getTeams();
1957
- const { resolveMemberSessionName } = await import('./utils/member-session-name.utils.js');
1958
- for (const team of teams) {
1959
- // An idle member has no stored sessionName (cleared on stop);
1960
- // match on the derived name or a stopped leader is invisible
1961
- // and the message is silently dropped (#claude-login, 2026-09-19).
1962
- const roster = (team.members ?? [])
1963
- .map((m) => ({ m, session: resolveMemberSessionName(team.name, m) }))
1964
- .filter(({ session }) => session && members.has(session));
1965
- if (roster.length === 0)
1966
- continue;
1967
- const leader = roster.find(({ m }) => m.role === 'team-leader') ?? roster[0];
1968
- return leader?.session ?? null;
1969
- }
1970
- return null;
1963
+ const { resolveHuddleLeader } = await import('./services/chat-v2/huddle-leader.js');
1964
+ return resolveHuddleLeader(await this.storageService.getTeams(), members);
1971
1965
  },
1972
1966
  // Activate-on-send: messaging an offline agent wakes it, then
1973
1967
  // the dispatcher retries delivery. User-initiated, so it uses