crewly 1.20.154 → 1.20.156

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 (152) hide show
  1. package/config/skills/agent/core/attach-file/SKILL.md +1 -1
  2. package/config/skills/agent/core/attach-file/execute.sh +1 -1
  3. package/config/skills/agent/core/reply-channel/SKILL.md +4 -1
  4. package/config/skills/agent/core/reply-chat/SKILL.md +17 -0
  5. package/config/skills/agent/core/reply-chat/execute.sh +6 -1
  6. package/config/skills/agent/core/slack-post/SKILL.md +1 -1
  7. package/config/skills/team-leader/delegate-task/execute.sh +17 -4
  8. package/dist/backend/backend/src/constants.d.ts +138 -0
  9. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  10. package/dist/backend/backend/src/constants.js +149 -0
  11. package/dist/backend/backend/src/constants.js.map +1 -1
  12. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts +18 -0
  13. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  14. package/dist/backend/backend/src/controllers/chat/chat.controller.js +42 -6
  15. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +32 -0
  17. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  18. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +122 -8
  19. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  20. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  21. package/dist/backend/backend/src/controllers/slack/slack.controller.js +6 -1
  22. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  23. package/dist/backend/backend/src/index.d.ts.map +1 -1
  24. package/dist/backend/backend/src/index.js +20 -0
  25. package/dist/backend/backend/src/index.js.map +1 -1
  26. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +16 -0
  27. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  28. package/dist/backend/backend/src/services/agent/agent-registration.service.js +54 -4
  29. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  30. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +153 -1
  31. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +371 -22
  33. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  34. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +13 -0
  35. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  36. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +16 -0
  37. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  38. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -1
  39. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  40. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +46 -3
  41. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  42. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  43. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +17 -4
  44. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  45. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  46. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +6 -0
  47. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  48. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +93 -6
  49. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +169 -15
  51. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  52. package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts +2 -2
  53. package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -1
  54. package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +15 -2
  55. package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -1
  56. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  57. package/dist/backend/backend/src/services/slack/slack-initializer.js +7 -1
  58. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  59. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +40 -0
  60. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  61. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +86 -9
  62. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  63. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +1 -1
  64. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  65. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +33 -4
  66. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  67. package/dist/backend/backend/src/services/slack/slack-thread-context.service.d.ts +227 -0
  68. package/dist/backend/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -0
  69. package/dist/backend/backend/src/services/slack/slack-thread-context.service.js +455 -0
  70. package/dist/backend/backend/src/services/slack/slack-thread-context.service.js.map +1 -0
  71. package/dist/backend/backend/src/services/slack/slack-thread-key.d.ts +66 -0
  72. package/dist/backend/backend/src/services/slack/slack-thread-key.d.ts.map +1 -0
  73. package/dist/backend/backend/src/services/slack/slack-thread-key.js +109 -0
  74. package/dist/backend/backend/src/services/slack/slack-thread-key.js.map +1 -0
  75. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts +89 -13
  76. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
  77. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js +224 -50
  78. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
  79. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +2 -0
  81. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  82. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +47 -0
  83. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  84. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +118 -3
  85. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  86. package/dist/backend/backend/src/types/event-bus.types.d.ts +5 -0
  87. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  88. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  89. package/dist/backend/backend/src/types/slack.types.d.ts +43 -0
  90. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  91. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  92. package/dist/backend/build-info.json +2 -2
  93. package/dist/cli/backend/src/constants.d.ts +138 -0
  94. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  95. package/dist/cli/backend/src/constants.js +149 -0
  96. package/dist/cli/backend/src/constants.js.map +1 -1
  97. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +16 -0
  98. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  99. package/dist/cli/backend/src/services/agent/agent-registration.service.js +54 -4
  100. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  101. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +409 -0
  102. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -0
  103. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +961 -0
  104. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -0
  105. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +13 -0
  106. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  107. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +16 -0
  108. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  109. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -1
  110. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  111. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +46 -3
  112. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  113. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  114. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +17 -4
  115. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  116. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  117. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +6 -0
  118. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  119. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +93 -6
  120. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  121. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +169 -15
  122. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  123. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +40 -0
  124. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  125. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +86 -9
  126. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  127. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +1 -1
  128. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  129. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +33 -4
  130. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  131. package/dist/cli/backend/src/services/slack/slack-thread-context.service.d.ts +227 -0
  132. package/dist/cli/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -0
  133. package/dist/cli/backend/src/services/slack/slack-thread-context.service.js +455 -0
  134. package/dist/cli/backend/src/services/slack/slack-thread-context.service.js.map +1 -0
  135. package/dist/cli/backend/src/services/slack/slack-thread-key.d.ts +66 -0
  136. package/dist/cli/backend/src/services/slack/slack-thread-key.d.ts.map +1 -0
  137. package/dist/cli/backend/src/services/slack/slack-thread-key.js +109 -0
  138. package/dist/cli/backend/src/services/slack/slack-thread-key.js.map +1 -0
  139. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts +89 -13
  140. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
  141. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js +224 -50
  142. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
  143. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  144. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +2 -0
  145. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  146. package/dist/cli/backend/src/types/event-bus.types.d.ts +5 -0
  147. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  148. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  149. package/dist/cli/backend/src/types/slack.types.d.ts +43 -0
  150. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  151. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  152. package/package.json +1 -1
@@ -26,6 +26,15 @@
26
26
  * idle and nobody else just wrote to it; any failure falls back to plain
27
27
  * delivery — nothing here throws into dispatch.
28
28
  *
29
+ * Idle-boundary context cap: one task can run for 1000+ turns, so a new root
30
+ * alone does not bound the context. A periodic sweep
31
+ * ({@link FreshTaskConversationService.startContextCapSweep}) saves and
32
+ * clears an idle Claude Code member whose last turn carried more than
33
+ * `CREWLY_MEMBER_CONTEXT_CAP_TOKENS` (300k by default, `0` disables), then
34
+ * writes one line naming its active WorkItem and the handover. Same safety
35
+ * rules — never the orchestrator, never mid-turn, never while a message is
36
+ * queued for or being delivered to it — plus at most one cap per 20 minutes.
37
+ *
29
38
  * @module services/agent/fresh-task-conversation.service
30
39
  */
31
40
  import * as fs from 'fs';
@@ -37,6 +46,7 @@ import { buildHandoverSummary, claudeTranscriptPath, lastTurnContextTokens } fro
37
46
  import { getSessionStatePersistence } from '../session/session-state-persistence.js';
38
47
  import { getSessionBackendSync } from '../session/session-backend.factory.js';
39
48
  import { PtyActivityTrackerService } from './pty-activity-tracker.service.js';
49
+ import { SubAgentMessageQueue } from '../messaging/sub-agent-message-queue.service.js';
40
50
  import { STANDING_ANSWERS_CONSTANTS } from '../../constants.js';
41
51
  // ---------------------------------------------------------------------------
42
52
  // Pure helpers
@@ -113,6 +123,71 @@ export function decideFreshConversation(input) {
113
123
  export function freshConversationNote(handoverPath) {
114
124
  return `Fresh conversation for this task — your earlier work is in ${handoverPath} and your wiki; read them only if this task needs it.`;
115
125
  }
126
+ /**
127
+ * The context cap for members, from the environment.
128
+ *
129
+ * @param env - Environment (tests)
130
+ * @returns Tokens; 0 means the cap is off. Unset or invalid → the default.
131
+ */
132
+ export function memberContextCapTokens(env = process.env) {
133
+ const raw = env[FRESH_TASK_CONVERSATION_CONSTANTS.MEMBER_CONTEXT_CAP_ENV];
134
+ if (raw === undefined || raw.trim() === '')
135
+ return FRESH_TASK_CONVERSATION_CONSTANTS.MEMBER_CONTEXT_CAP_TOKENS;
136
+ const n = Number(raw);
137
+ if (!Number.isFinite(n) || n < 0)
138
+ return FRESH_TASK_CONVERSATION_CONSTANTS.MEMBER_CONTEXT_CAP_TOKENS;
139
+ return Math.floor(n);
140
+ }
141
+ /**
142
+ * Decide whether to cap (save + clear + re-orient) a member's conversation.
143
+ * Pure; the order of checks is also the order of the logged reasons.
144
+ *
145
+ * @param input - Decision inputs
146
+ * @returns The decision
147
+ */
148
+ export function decideContextCap(input) {
149
+ if (input.sessionName === ORCHESTRATOR_SESSION_NAME)
150
+ return { clear: false, reason: 'orchestrator' };
151
+ if (input.runtimeType !== RUNTIME_TYPES.CLAUDE_CODE)
152
+ return { clear: false, reason: 'not claude-code' };
153
+ if (input.capTokens <= 0)
154
+ return { clear: false, reason: 'cap off' };
155
+ if (!input.enabled)
156
+ return { clear: false, reason: 'disabled' };
157
+ if (input.contextTokens === null || input.contextTokens <= input.capTokens)
158
+ return { clear: false, reason: 'under cap' };
159
+ if (input.lastCapAt !== null &&
160
+ input.now - input.lastCapAt < FRESH_TASK_CONVERSATION_CONSTANTS.CONTEXT_CAP_MIN_INTERVAL_MS) {
161
+ return { clear: false, reason: 'rate limited' };
162
+ }
163
+ if (input.busy)
164
+ return { clear: false, reason: 'busy' };
165
+ if (input.quietMs === null || input.quietMs < FRESH_TASK_CONVERSATION_CONSTANTS.CONTEXT_CAP_MIN_QUIET_MS) {
166
+ return { clear: false, reason: 'not quiet long enough' };
167
+ }
168
+ if (input.deliveryActive)
169
+ return { clear: false, reason: 'delivery in progress' };
170
+ if (input.queuedMessages)
171
+ return { clear: false, reason: 'messages queued' };
172
+ // The new conversation is found by the WorkItem id in the re-orientation
173
+ // line; with no WorkItem there is nothing safe to track it by, and the
174
+ // next task's own prepare will start a fresh conversation anyway.
175
+ if (!input.activeWorkItemId)
176
+ return { clear: false, reason: 'no active work item' };
177
+ return { clear: true, reason: 'context over cap' };
178
+ }
179
+ /**
180
+ * The one line written after a context-cap clear. It must carry the WorkItem
181
+ * id: the new conversation id is found by it.
182
+ *
183
+ * @param args - WorkItem, handover file and the old context size
184
+ * @returns One line
185
+ */
186
+ export function contextCapReorientation(args) {
187
+ const title = args.workItem.title.length > 80 ? `${args.workItem.title.slice(0, 77)}...` : args.workItem.title;
188
+ return (`${FRESH_TASK_CONVERSATION_CONSTANTS.CONTEXT_CAP_TAG} Your conversation reached ${args.contextTokens.toLocaleString('en-US')} tokens, so it was saved and restarted. ` +
189
+ `You are on WorkItem ${args.workItem.id} ("${title}"). Your handover is in ${args.handoverPath} (also in your wiki) — read it, then continue that WorkItem where you left off.`);
190
+ }
116
191
  /** Statuses that mean the agent is actively on a work item. */
117
192
  const ACTIVE_STATUSES = new Set(['running', 'accepted', 'proposed']);
118
193
  /**
@@ -195,10 +270,35 @@ function defaultDeps() {
195
270
  now: () => Date.now(),
196
271
  sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
197
272
  env: process.env,
273
+ listSessions: () => getPersistence()?.getRegisteredSessions() ?? [],
274
+ hasQueuedMessages: (sessionName) => {
275
+ try {
276
+ return SubAgentMessageQueue.getInstance().hasPending(sessionName);
277
+ }
278
+ catch {
279
+ return true;
280
+ }
281
+ },
282
+ getQuietMs: (sessionName) => {
283
+ const tracker = PtyActivityTrackerService.getInstance();
284
+ return tracker.hasActivity(sessionName) ? tracker.getIdleTimeMs(sessionName) : null;
285
+ },
286
+ sendMessage: async (sessionName, text) => {
287
+ const session = getSessionBackendSync()?.getSession(sessionName);
288
+ if (!session)
289
+ return false;
290
+ // Same two-step write as the terminal controller's message mode:
291
+ // pasted text first, Enter separately so paste mode cannot swallow it.
292
+ session.write(`\x1b[200~${text}\x1b[201~`);
293
+ await new Promise((resolve) => setTimeout(resolve, Math.min(1000 + Math.ceil(text.length / 10), 5000)));
294
+ session.write('\r');
295
+ return true;
296
+ },
198
297
  };
199
298
  }
200
299
  /**
201
- * Singleton that starts a fresh Claude Code conversation per new task.
300
+ * Singleton that starts a fresh Claude Code conversation per new task, and
301
+ * caps a long task's conversation at idle boundaries.
202
302
  */
203
303
  export class FreshTaskConversationService {
204
304
  static instance = null;
@@ -209,6 +309,14 @@ export class FreshTaskConversationService {
209
309
  inFlight = new Map();
210
310
  /** Last time a message was written to a session (terminal write / deliver) */
211
311
  lastDelivery = new Map();
312
+ /** Deliveries currently being written to a session (see {@link beginDelivery}) */
313
+ deliveriesInFlight = new Map();
314
+ /** Last context-cap clear per session (rate limit) */
315
+ lastCapAt = new Map();
316
+ /** Context-cap sweep timer */
317
+ capSweepTimer = null;
318
+ /** A sweep is running (sweeps never overlap) */
319
+ capSweepRunning = false;
212
320
  constructor(deps) {
213
321
  this.logger = LoggerService.getInstance().createComponentLogger('FreshTaskConversation');
214
322
  this.deps = { ...defaultDeps(), ...(deps ?? {}) };
@@ -234,8 +342,41 @@ export class FreshTaskConversationService {
234
342
  }
235
343
  /** Drop the singleton (tests). */
236
344
  static resetInstance() {
345
+ FreshTaskConversationService.instance?.stopContextCapSweep();
237
346
  FreshTaskConversationService.instance = null;
238
347
  }
348
+ /**
349
+ * Mark a delivery to a session as in progress until the returned function
350
+ * is called. Neither a new-task clear nor a context-cap clear starts while
351
+ * one is running: it would wipe the message before the agent reads it.
352
+ *
353
+ * @param sessionName - Session being written to
354
+ * @returns Call when the delivery has finished (idempotent)
355
+ */
356
+ beginDelivery(sessionName) {
357
+ this.deliveriesInFlight.set(sessionName, (this.deliveriesInFlight.get(sessionName) ?? 0) + 1);
358
+ let done = false;
359
+ return () => {
360
+ if (done)
361
+ return;
362
+ done = true;
363
+ const left = (this.deliveriesInFlight.get(sessionName) ?? 1) - 1;
364
+ if (left > 0)
365
+ this.deliveriesInFlight.set(sessionName, left);
366
+ else
367
+ this.deliveriesInFlight.delete(sessionName);
368
+ this.lastDelivery.set(sessionName, this.deps.now());
369
+ };
370
+ }
371
+ /**
372
+ * Whether a delivery is being written to the session right now.
373
+ *
374
+ * @param sessionName - Session
375
+ * @returns True while a {@link beginDelivery} is open
376
+ */
377
+ isDelivering(sessionName) {
378
+ return (this.deliveriesInFlight.get(sessionName) ?? 0) > 0;
379
+ }
239
380
  /**
240
381
  * Record that a message is being written to a session. A clear right after
241
382
  * would wipe it before the agent reads it, so {@link prepareForTask} skips
@@ -322,6 +463,193 @@ export class FreshTaskConversationService {
322
463
  }
323
464
  }
324
465
  // -------------------------------------------------------------------------
466
+ // Idle-boundary context cap
467
+ // -------------------------------------------------------------------------
468
+ /**
469
+ * Start the periodic context-cap sweep (idempotent). The timer is unref'd
470
+ * so it never keeps the process alive.
471
+ *
472
+ * @param intervalMs - Sweep interval
473
+ */
474
+ startContextCapSweep(intervalMs = FRESH_TASK_CONVERSATION_CONSTANTS.CONTEXT_CAP_SWEEP_MS) {
475
+ if (this.capSweepTimer)
476
+ return;
477
+ this.capSweepTimer = setInterval(() => {
478
+ void this.runContextCapSweep();
479
+ }, intervalMs);
480
+ this.capSweepTimer.unref?.();
481
+ this.logger.info('Member context-cap sweep started', {
482
+ intervalMs,
483
+ capTokens: memberContextCapTokens(this.deps.env),
484
+ });
485
+ }
486
+ /** Stop the periodic context-cap sweep. */
487
+ stopContextCapSweep() {
488
+ if (this.capSweepTimer)
489
+ clearInterval(this.capSweepTimer);
490
+ this.capSweepTimer = null;
491
+ }
492
+ /**
493
+ * Check every registered session once. Sessions are handled one after
494
+ * another and sweeps never overlap. Never throws.
495
+ *
496
+ * @returns Per-session results (sessions skipped cheaply are omitted)
497
+ */
498
+ async runContextCapSweep() {
499
+ const results = {};
500
+ if (this.capSweepRunning)
501
+ return results;
502
+ if (memberContextCapTokens(this.deps.env) <= 0)
503
+ return results;
504
+ this.capSweepRunning = true;
505
+ try {
506
+ let sessions = [];
507
+ try {
508
+ sessions = this.deps.listSessions();
509
+ }
510
+ catch {
511
+ sessions = [];
512
+ }
513
+ for (const sessionName of sessions) {
514
+ if (sessionName === ORCHESTRATOR_SESSION_NAME)
515
+ continue;
516
+ results[sessionName] = await this.capContextIfNeeded(sessionName);
517
+ }
518
+ }
519
+ finally {
520
+ this.capSweepRunning = false;
521
+ }
522
+ return results;
523
+ }
524
+ /**
525
+ * If the member is idle between turns and its last turn carried more than
526
+ * the cap, save the conversation (handover file + wiki), `/clear` it and
527
+ * write one line naming its WorkItem and the handover. Runs in the same
528
+ * per-session chain as {@link prepareForTask}, so terminal writes wait for
529
+ * it. Never throws.
530
+ *
531
+ * @param sessionName - Member session
532
+ * @returns What happened
533
+ */
534
+ async capContextIfNeeded(sessionName) {
535
+ // Never queue behind (or start during) a prepare / another cap.
536
+ if (this.inFlight.has(sessionName))
537
+ return { capped: false, reason: 'clear in progress' };
538
+ const run = (async () => {
539
+ try {
540
+ const cap = await this.doCapContext(sessionName);
541
+ return { cleared: cap.capped, handoverPath: cap.handoverPath, cap };
542
+ }
543
+ catch (err) {
544
+ this.logger.warn('Context-cap check failed (non-fatal)', {
545
+ sessionName,
546
+ error: err instanceof Error ? err.message : String(err),
547
+ });
548
+ return { cleared: false, cap: { capped: false, reason: 'error' } };
549
+ }
550
+ })();
551
+ this.inFlight.set(sessionName, run);
552
+ try {
553
+ return (await run).cap;
554
+ }
555
+ finally {
556
+ if (this.inFlight.get(sessionName) === run)
557
+ this.inFlight.delete(sessionName);
558
+ }
559
+ }
560
+ async doCapContext(sessionName) {
561
+ const info = this.deps.getSessionInfo(sessionName);
562
+ const capTokens = memberContextCapTokens(this.deps.env);
563
+ const base = {
564
+ sessionName,
565
+ runtimeType: info?.runtimeType,
566
+ capTokens,
567
+ enabled: true,
568
+ contextTokens: Number.MAX_SAFE_INTEGER,
569
+ busy: false,
570
+ quietMs: Number.MAX_SAFE_INTEGER,
571
+ deliveryActive: false,
572
+ queuedMessages: false,
573
+ lastCapAt: null,
574
+ now: this.deps.now(),
575
+ activeWorkItemId: 'pending',
576
+ };
577
+ // Cheap checks first (orchestrator, runtime, cap off).
578
+ let decision = decideContextCap(base);
579
+ if (!decision.clear)
580
+ return { capped: false, reason: decision.reason };
581
+ if (!info?.cwd || !info.sessionId)
582
+ return { capped: false, reason: 'conversation id unknown' };
583
+ const transcript = claudeTranscriptPath({ sessionId: info.sessionId, cwd: info.cwd, claudeHome: this.deps.claudeHome });
584
+ const contextTokens = fs.existsSync(transcript) ? lastTurnContextTokens(transcript) : null;
585
+ const last = this.lastDelivery.get(sessionName);
586
+ const lastCapAt = this.lastCapAt.get(sessionName) ?? null;
587
+ decision = decideContextCap({ ...base, contextTokens, lastCapAt, now: this.deps.now() });
588
+ if (!decision.clear)
589
+ return { capped: false, reason: decision.reason };
590
+ const enabled = freshTaskConversationEnvEnabled(this.deps.env) && (await this.deps.settingEnabled());
591
+ const busy = enabled ? await this.deps.isBusy(sessionName).catch(() => true) : false;
592
+ const active = enabled && !busy ? await this.deps.getActiveItems(sessionName).catch(() => null) : [];
593
+ const current = this.pickCurrentItem(active ?? []);
594
+ decision = decideContextCap({
595
+ ...base,
596
+ contextTokens,
597
+ lastCapAt,
598
+ now: this.deps.now(),
599
+ enabled,
600
+ busy: busy || active === null,
601
+ quietMs: this.deps.getQuietMs(sessionName),
602
+ deliveryActive: this.isDelivering(sessionName) ||
603
+ (last !== undefined && this.deps.now() - last < FRESH_TASK_CONVERSATION_CONSTANTS.RECENT_DELIVERY_MS),
604
+ queuedMessages: this.deps.hasQueuedMessages(sessionName),
605
+ activeWorkItemId: current?.id ?? null,
606
+ });
607
+ if (!decision.clear || !current)
608
+ return { capped: false, reason: decision.reason };
609
+ // Last look right before the clear: anything written since the checks
610
+ // above means the agent is (about to be) working.
611
+ if (this.isDelivering(sessionName) || (await this.deps.isBusy(sessionName).catch(() => true))) {
612
+ return { capped: false, reason: 'busy' };
613
+ }
614
+ const saved = await this.saveAndClear(sessionName, { cwd: info.cwd, sessionId: info.sessionId }, {
615
+ lastTask: current.id,
616
+ why: `because it had grown past ${capTokens.toLocaleString('en-US')} tokens per turn (you are still on the same WorkItem)`,
617
+ });
618
+ if (!saved)
619
+ return { capped: false, reason: 'not cleared' };
620
+ this.lastCapAt.set(sessionName, this.deps.now());
621
+ const line = contextCapReorientation({ workItem: current, handoverPath: saved.handoverPath, contextTokens: contextTokens });
622
+ // Tracking matches on the WorkItem id in the first message, which the
623
+ // re-orientation line carries.
624
+ void this.trackNewConversation(sessionName, info.cwd, info.sessionId, saved.clearAt, current.id);
625
+ const sent = await this.deps.sendMessage(sessionName, line).catch(() => false);
626
+ this.lastDelivery.set(sessionName, this.deps.now());
627
+ this.logger.info('Capped a member conversation at an idle boundary', {
628
+ sessionName,
629
+ workItemId: current.id,
630
+ contextTokens,
631
+ capTokens,
632
+ oldSessionId: info.sessionId,
633
+ handover: saved.handoverPath,
634
+ reoriented: sent,
635
+ });
636
+ return { capped: true, reason: decision.reason, handoverPath: saved.handoverPath, workItemId: current.id };
637
+ }
638
+ /**
639
+ * The WorkItem a member is on: running before accepted before proposed,
640
+ * then the most recently started.
641
+ */
642
+ pickCurrentItem(items) {
643
+ const rank = { running: 0, accepted: 1, proposed: 2 };
644
+ const sorted = [...items].sort((a, b) => {
645
+ const r = (rank[a.status] ?? 9) - (rank[b.status] ?? 9);
646
+ if (r !== 0)
647
+ return r;
648
+ return (Date.parse(b.startedAt ?? '') || 0) - (Date.parse(a.startedAt ?? '') || 0);
649
+ });
650
+ return sorted[0] ?? null;
651
+ }
652
+ // -------------------------------------------------------------------------
325
653
  // Internals
326
654
  // -------------------------------------------------------------------------
327
655
  async doPrepare(sessionName, workItem) {
@@ -343,7 +671,8 @@ export class FreshTaskConversationService {
343
671
  const enabled = freshTaskConversationEnvEnabled(this.deps.env) && (await this.deps.settingEnabled());
344
672
  const busy = enabled ? await this.deps.isBusy(sessionName).catch(() => true) : false;
345
673
  const last = this.lastDelivery.get(sessionName);
346
- const recentDelivery = last !== undefined && this.deps.now() - last < FRESH_TASK_CONVERSATION_CONSTANTS.RECENT_DELIVERY_MS;
674
+ const recentDelivery = this.isDelivering(sessionName) ||
675
+ (last !== undefined && this.deps.now() - last < FRESH_TASK_CONVERSATION_CONSTANTS.RECENT_DELIVERY_MS);
347
676
  const active = enabled && !busy ? await this.deps.getActiveItems(sessionName).catch(() => null) : [];
348
677
  decision = decideFreshConversation({
349
678
  sessionName,
@@ -370,21 +699,50 @@ export class FreshTaskConversationService {
370
699
  this.logger.info('New task but the conversation id is unknown — not clearing', { sessionName, newRoot });
371
700
  return { cleared: false };
372
701
  }
373
- const transcript = claudeTranscriptPath({ sessionId: info.sessionId, cwd: info.cwd, claudeHome: this.deps.claudeHome });
374
- if (!fs.existsSync(transcript)) {
375
- this.logger.info('New task but the transcript is missing — not clearing', { sessionName, transcript });
702
+ const saved = await this.saveAndClear(sessionName, { cwd: info.cwd, sessionId: info.sessionId }, {
703
+ lastTask: previousRoot,
704
+ why: 'when you were given a new task',
705
+ });
706
+ if (!saved)
376
707
  return { cleared: false };
708
+ this.logger.info('Started a fresh conversation for a new task', {
709
+ sessionName,
710
+ previousRoot,
711
+ newRoot,
712
+ oldSessionId: info.sessionId,
713
+ handover: saved.handoverPath,
714
+ });
715
+ // 3. Learn the new conversation id in the background.
716
+ void this.trackNewConversation(sessionName, info.cwd, info.sessionId, saved.clearAt, workItem.id);
717
+ return { cleared: true, handoverPath: saved.handoverPath };
718
+ }
719
+ /**
720
+ * Save the current conversation (handover file + memory/wiki copy, no
721
+ * agent turn) and write `/clear`. Shared by the new-task and the
722
+ * context-cap paths.
723
+ *
724
+ * @param sessionName - Agent session
725
+ * @param conv - Its cwd and current conversation id
726
+ * @param handover - Task the old conversation was on, and why it closed
727
+ * @returns The handover file and the time `/clear` was written, or null
728
+ * when nothing was cleared (transcript missing, session gone)
729
+ */
730
+ async saveAndClear(sessionName, conv, handover) {
731
+ const transcript = claudeTranscriptPath({ sessionId: conv.sessionId, cwd: conv.cwd, claudeHome: this.deps.claudeHome });
732
+ if (!fs.existsSync(transcript)) {
733
+ this.logger.info('Transcript missing — not clearing', { sessionName, transcript });
734
+ return null;
377
735
  }
378
736
  // 1. Save the conversation (server-side, no agent turn).
379
737
  const summary = buildHandoverSummary(transcript);
380
- const handoverPath = this.writeHandover(sessionName, info.sessionId, transcript, previousRoot, summary);
381
- const memoryText = this.conciseHandover(sessionName, previousRoot, handoverPath, summary);
738
+ const handoverPath = this.writeHandover(sessionName, conv.sessionId, transcript, handover.lastTask, summary, handover.why);
739
+ const memoryText = this.conciseHandover(sessionName, handover.lastTask, handoverPath, summary);
382
740
  void this.deps
383
741
  .remember({
384
742
  agentId: sessionName,
385
- projectPath: info.cwd,
743
+ projectPath: conv.cwd,
386
744
  content: memoryText,
387
- title: `Conversation handover — ${sessionName} — task ${previousRoot}`,
745
+ title: `Conversation handover — ${sessionName} — task ${handover.lastTask}`,
388
746
  })
389
747
  .catch((err) => {
390
748
  this.logger.debug('Handover memory write failed (non-fatal; the file is on disk)', {
@@ -396,28 +754,19 @@ export class FreshTaskConversationService {
396
754
  const clearAt = this.deps.now();
397
755
  if (!this.deps.writeToSession(sessionName, '\x1b')) {
398
756
  this.logger.info('Session not found — not clearing', { sessionName });
399
- return { cleared: false };
757
+ return null;
400
758
  }
401
759
  await this.deps.sleep(FRESH_TASK_CONVERSATION_CONSTANTS.ESCAPE_DELAY_MS);
402
760
  this.deps.writeToSession(sessionName, `${FRESH_TASK_CONVERSATION_CONSTANTS.CLEAR_COMMAND}\r`);
403
761
  await this.deps.sleep(FRESH_TASK_CONVERSATION_CONSTANTS.POST_CLEAR_READY_MS);
404
- this.logger.info('Started a fresh conversation for a new task', {
405
- sessionName,
406
- previousRoot,
407
- newRoot,
408
- oldSessionId: info.sessionId,
409
- handover: handoverPath,
410
- });
411
- // 3. Learn the new conversation id in the background.
412
- void this.trackNewConversation(sessionName, info.cwd, info.sessionId, clearAt, workItem.id);
413
- return { cleared: true, handoverPath };
762
+ return { handoverPath, clearAt };
414
763
  }
415
764
  /**
416
765
  * Write the handover file (same shape as the orchestrator's restart handover).
417
766
  *
418
767
  * @returns Its path
419
768
  */
420
- writeHandover(sessionName, oldSessionId, transcript, previousRoot, body) {
769
+ writeHandover(sessionName, oldSessionId, transcript, previousRoot, body, why = 'when you were given a new task') {
421
770
  const dir = path.join(this.deps.crewlyHome(), ORC_CONVERSATION_CONSTANTS.HANDOVER_DIR);
422
771
  fs.mkdirSync(dir, { recursive: true });
423
772
  const stamp = new Date(this.deps.now()).toISOString().replace(/[:.]/g, '-');
@@ -426,7 +775,7 @@ export class FreshTaskConversationService {
426
775
  fs.writeFileSync(file, [
427
776
  `# Handover from your previous conversation`,
428
777
  ``,
429
- `Your previous conversation (${oldSessionId}) was closed when you were given a new task; its last task was ${previousRoot}.` +
778
+ `Your previous conversation (${oldSessionId}) was closed ${why}; its last task was ${previousRoot}.` +
430
779
  (tokens !== null ? ` It had grown to ${tokens.toLocaleString('en-US')} tokens per turn.` : ''),
431
780
  `Everything Crewly tracks — tasks, teams, OKRs, wiki — is still there; this file keeps only the end of what was said.`,
432
781
  `The full transcript: ${transcript}`,
@@ -1 +1 @@
1
- {"version":3,"file":"fresh-task-conversation.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/fresh-task-conversation.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fresh-task-conversation.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/fresh-task-conversation.service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import { PromptModule, ModuleConfig } from './prompt-module.interface.js';
2
+ /**
3
+ * The one-thread-per-answer rule every role gets (2026-09-28: an agent
4
+ * answered an earlier thread's request inside the newest thread, bundled with
5
+ * the newest question's answer).
6
+ */
7
+ export declare const SLACK_THREAD_RULE_SECTION: string;
2
8
  /**
3
9
  * Communication module — defines how agents communicate across channels.
4
10
  *
@@ -29,6 +35,13 @@ export declare class CommunicationModule implements PromptModule {
29
35
  * @returns Formatted markdown communication section
30
36
  */
31
37
  build(config: ModuleConfig): Promise<string>;
38
+ /**
39
+ * The role-specific part of the section.
40
+ *
41
+ * @param config - Module configuration with agent details
42
+ * @returns Markdown for the agent's role
43
+ */
44
+ private buildRoleSection;
32
45
  /**
33
46
  * Build a skill call example snippet. For gemini-cli runtime, uses CLI flags
34
47
  * to avoid shell escaping EOF errors entirely. For other runtimes, uses
@@ -1 +1 @@
1
- {"version":3,"file":"communication.module.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/communication.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAoB,MAAM,8BAA8B,CAAC;AAE5F;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACvD,IAAI,SAAmB;IACvB,QAAQ,SAAK;IACb,SAAS,SAAQ;IACjB,WAAW,UAAQ;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI7C;;;;;;;OAOG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BlD;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAgFlC;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAuBxB"}
1
+ {"version":3,"file":"communication.module.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/communication.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAoB,MAAM,8BAA8B,CAAC;AAG5F;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAiE,CAAC;AAExG;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACvD,IAAI,SAAmB;IACvB,QAAQ,SAAK;IACb,SAAS,SAAQ;IACjB,WAAW,UAAQ;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI7C;;;;;;;OAOG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD;;;;;OAKG;YACW,gBAAgB;IA2B9B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAgFlC;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAuBxB"}