crewly 1.20.261 → 1.20.263

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 (89) hide show
  1. package/dist/backend/backend/src/constants.d.ts +43 -0
  2. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  3. package/dist/backend/backend/src/constants.js +43 -0
  4. package/dist/backend/backend/src/constants.js.map +1 -1
  5. package/dist/backend/backend/src/index.d.ts.map +1 -1
  6. package/dist/backend/backend/src/index.js +22 -1
  7. package/dist/backend/backend/src/index.js.map +1 -1
  8. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +22 -0
  9. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  10. package/dist/backend/backend/src/services/agent/agent-registration.service.js +62 -18
  11. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  12. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +13 -0
  13. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  14. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +25 -0
  15. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  16. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts +43 -0
  17. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -1
  18. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js +108 -0
  19. package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -1
  20. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts +14 -1
  21. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  22. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +26 -0
  23. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  24. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.d.ts +3 -0
  25. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.d.ts.map +1 -1
  26. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js +4 -1
  27. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js.map +1 -1
  28. package/dist/backend/backend/src/services/session/index.d.ts +1 -1
  29. package/dist/backend/backend/src/services/session/index.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/session/index.js +1 -1
  31. package/dist/backend/backend/src/services/session/index.js.map +1 -1
  32. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +14 -1
  33. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  34. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +28 -2
  35. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  36. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +27 -3
  37. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/session/session-backend.interface.js +17 -3
  39. package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
  40. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +28 -0
  41. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  42. package/dist/backend/backend/src/services/session/session-command-helper.js +89 -0
  43. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  44. package/dist/backend/backend/src/utils/member-default-model.utils.d.ts +14 -0
  45. package/dist/backend/backend/src/utils/member-default-model.utils.d.ts.map +1 -1
  46. package/dist/backend/backend/src/utils/member-default-model.utils.js +23 -0
  47. package/dist/backend/backend/src/utils/member-default-model.utils.js.map +1 -1
  48. package/dist/backend/build-info.json +2 -2
  49. package/dist/cli/backend/src/constants.d.ts +43 -0
  50. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  51. package/dist/cli/backend/src/constants.js +43 -0
  52. package/dist/cli/backend/src/constants.js.map +1 -1
  53. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +22 -0
  54. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  55. package/dist/cli/backend/src/services/agent/agent-registration.service.js +62 -18
  56. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  57. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +13 -0
  58. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  59. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +25 -0
  60. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  61. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts +43 -0
  62. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -1
  63. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js +108 -0
  64. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -1
  65. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts +14 -1
  66. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  67. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +26 -0
  68. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  69. package/dist/cli/backend/src/services/session/index.d.ts +1 -1
  70. package/dist/cli/backend/src/services/session/index.d.ts.map +1 -1
  71. package/dist/cli/backend/src/services/session/index.js +1 -1
  72. package/dist/cli/backend/src/services/session/index.js.map +1 -1
  73. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +14 -1
  74. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  75. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +28 -2
  76. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  77. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +27 -3
  78. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  79. package/dist/cli/backend/src/services/session/session-backend.interface.js +17 -3
  80. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
  81. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +28 -0
  82. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  83. package/dist/cli/backend/src/services/session/session-command-helper.js +89 -0
  84. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
  85. package/dist/cli/backend/src/utils/member-default-model.utils.d.ts +14 -0
  86. package/dist/cli/backend/src/utils/member-default-model.utils.d.ts.map +1 -1
  87. package/dist/cli/backend/src/utils/member-default-model.utils.js +23 -0
  88. package/dist/cli/backend/src/utils/member-default-model.utils.js.map +1 -1
  89. package/package.json +1 -1
@@ -9,6 +9,7 @@ import { LoggerService } from '../core/logger.service.js';
9
9
  import { getRestoreQueue } from './restore-queue.js';
10
10
  import { ResourceModeService, RESOURCE_MODE_CONSTANTS } from './resource-mode.service.js';
11
11
  import { createSessionCommandHelper, getSessionBackendSync, createSessionBackend, getSessionStatePersistence, } from '../session/index.js';
12
+ import { DEFAULT_TERMINAL_COLS, DEFAULT_TERMINAL_ROWS } from '../session/session-backend.interface.js';
12
13
  import { RuntimeServiceFactory } from './runtime-service.factory.js';
13
14
  import { OrcReplyRouteService } from '../orc/orc-reply-route.service.js';
14
15
  import { registerInProcessRuntime, unregisterInProcessRuntime, } from './crewly-agent/in-process-runtime-registry.js';
@@ -20,7 +21,7 @@ import { extractSlackThreadKeys, formatSlackThreadKey } from '../slack/slack-thr
20
21
  import { delay } from '../../utils/async.utils.js';
21
22
  import { buildRuntimeModelFlags } from '../../utils/runtime-model-flags.utils.js';
22
23
  import { buildRemoteMcpLaunchFlags } from '../connector/remote-mcp-launch.service.js';
23
- import { effectiveMemberModelId } from '../../utils/member-default-model.utils.js';
24
+ import { effectiveMemberModelId, fallbackRuntimeModelId } from '../../utils/member-default-model.utils.js';
24
25
  import { canMemberDelegate, getLeadSubordinates } from '../../utils/team.utils.js';
25
26
  import { stripToolCallMarkup } from '../../utils/tool-call-markup.utils.js';
26
27
  import { appendIncompleteNotice } from '../../utils/incomplete-turn.utils.js';
@@ -3253,9 +3254,13 @@ Loop until done, blocked, or explicitly reassigned:
3253
3254
  fallbackCrewlyAgentModel = launch.crewlyAgentModel;
3254
3255
  try {
3255
3256
  const found = role === ORCHESTRATOR_ROLE ? null : await this.storageService.findMemberBySessionName(sessionName);
3257
+ // The model is resolved for the runtime that really runs: a
3258
+ // model meant for the configured runtime is not passed on, and
3259
+ // reviewed members get that runtime's default (Sonnet on Claude).
3260
+ const fallbackModel = found ? fallbackRuntimeModelId(found.team, found.member, runtimeType) : undefined;
3256
3261
  runtimeFlags = [
3257
3262
  ...(await this.resolveRuntimeFlags(role, runtimeType, found?.member.skillOverrides, found?.member.excludedRoleSkills)),
3258
- ...this.resolveModelFlags(sessionName, runtimeType, undefined, undefined),
3263
+ ...this.resolveModelFlags(sessionName, runtimeType, fallbackModel, undefined),
3259
3264
  ];
3260
3265
  }
3261
3266
  catch {
@@ -4431,6 +4436,55 @@ Loop until done, blocked, or explicitly reassigned:
4431
4436
  const queueSize = queue.getQueueSize(sessionName);
4432
4437
  return { position: queue.positionOf(sessionName, message) ?? queueSize, queueSize };
4433
4438
  }
4439
+ /**
4440
+ * Make a session's runtime redraw its screen (SIGWINCH): one column and
4441
+ * row larger, then back to its current size. Uses the backend's resize
4442
+ * (PTY and screen buffer together) at the session's real size, never a
4443
+ * fixed 80x24 — that would shrink an agent's terminal back to the size
4444
+ * whose too-short window hid the input box (2026-10-08 Ella).
4445
+ *
4446
+ * @param sessionHelper - The session helper
4447
+ * @param sessionName - The session
4448
+ */
4449
+ async repaintBySigwinch(sessionHelper, sessionName) {
4450
+ const backend = typeof sessionHelper.getBackend === 'function' ? sessionHelper.getBackend() : null;
4451
+ const dims = backend?.getTerminalDimensions?.(sessionName) ?? { cols: DEFAULT_TERMINAL_COLS, rows: DEFAULT_TERMINAL_ROWS };
4452
+ const resize = (cols, rows) => {
4453
+ if (backend?.resizeSession)
4454
+ backend.resizeSession(sessionName, cols, rows);
4455
+ else
4456
+ sessionHelper.getSession(sessionName)?.resize(cols, rows);
4457
+ };
4458
+ resize(dims.cols + 1, dims.rows + 1);
4459
+ await delay(200);
4460
+ resize(dims.cols, dims.rows);
4461
+ }
4462
+ /**
4463
+ * Whether an agent is mid-turn, for the unreadable-input restart: a live
4464
+ * turn on screen (busy bar / spinner that is repainting), or agent output
4465
+ * within `quietMs` (Crewly's own resize redraws are not counted, see
4466
+ * PtyActivityTrackerService.ignoreOutputFor). Unsure counts as mid-turn.
4467
+ *
4468
+ * @param sessionName - The agent
4469
+ * @param quietMs - How long without output counts as not mid-turn
4470
+ * @returns True when the agent may be working
4471
+ */
4472
+ async isMidTurnForRecovery(sessionName, quietMs) {
4473
+ try {
4474
+ const helper = await this.getSessionHelper();
4475
+ if (!helper.sessionExists(sessionName))
4476
+ return true;
4477
+ if (await helper.isAgentBusy(sessionName))
4478
+ return true;
4479
+ const tracker = PtyActivityTrackerService.getInstance();
4480
+ if (!tracker.hasActivity(sessionName))
4481
+ return false;
4482
+ return tracker.getIdleTimeMs(sessionName) < quietMs;
4483
+ }
4484
+ catch {
4485
+ return true;
4486
+ }
4487
+ }
4434
4488
  /**
4435
4489
  * For a Claude Code agent that is mid-turn, queue the message instead of
4436
4490
  * pasting it into the running turn (see {@link holdForBusyAgent}). Other
@@ -4655,11 +4709,8 @@ Loop until done, blocked, or explicitly reassigned:
4655
4709
  // This matches the manual workaround where pressing a key in the
4656
4710
  // frontend terminal "wakes up" the input handler.
4657
4711
  try {
4658
- const session = sessionHelper.getSession(sessionName);
4659
- if (session) {
4660
- session.resize(81, 25);
4661
- await delay(200);
4662
- session.resize(80, 24);
4712
+ if (sessionHelper.getSession(sessionName)) {
4713
+ await this.repaintBySigwinch(sessionHelper, sessionName);
4663
4714
  await delay(300);
4664
4715
  }
4665
4716
  }
@@ -4683,11 +4734,8 @@ Loop until done, blocked, or explicitly reassigned:
4683
4734
  if (attempt > 1) {
4684
4735
  // PTY resize to trigger SIGWINCH → Ink re-render
4685
4736
  try {
4686
- const session = sessionHelper.getSession(sessionName);
4687
- if (session) {
4688
- session.resize(81, 25);
4689
- await delay(200);
4690
- session.resize(80, 24);
4737
+ if (sessionHelper.getSession(sessionName)) {
4738
+ await this.repaintBySigwinch(sessionHelper, sessionName);
4691
4739
  await delay(300);
4692
4740
  }
4693
4741
  }
@@ -4720,12 +4768,8 @@ Loop until done, blocked, or explicitly reassigned:
4720
4768
  // re-render the TUI and potentially restore focus state.
4721
4769
  if (needsResize) {
4722
4770
  try {
4723
- const session = sessionHelper.getSession(sessionName);
4724
- if (session) {
4725
- // Resize slightly then back to trigger SIGWINCH
4726
- session.resize(81, 25);
4727
- await delay(200);
4728
- session.resize(80, 24);
4771
+ if (sessionHelper.getSession(sessionName)) {
4772
+ await this.repaintBySigwinch(sessionHelper, sessionName);
4729
4773
  await delay(500);
4730
4774
  this.logger.debug('PTY resize sent to trigger TUI re-render', {
4731
4775
  sessionName,