crewly 1.20.261 → 1.20.262

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 (81) 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 +56 -16
  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/build-info.json +2 -2
  45. package/dist/cli/backend/src/constants.d.ts +43 -0
  46. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  47. package/dist/cli/backend/src/constants.js +43 -0
  48. package/dist/cli/backend/src/constants.js.map +1 -1
  49. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +22 -0
  50. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  51. package/dist/cli/backend/src/services/agent/agent-registration.service.js +56 -16
  52. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  53. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +13 -0
  54. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  55. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +25 -0
  56. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  57. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts +43 -0
  58. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -1
  59. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js +108 -0
  60. package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -1
  61. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts +14 -1
  62. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  63. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +26 -0
  64. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  65. package/dist/cli/backend/src/services/session/index.d.ts +1 -1
  66. package/dist/cli/backend/src/services/session/index.d.ts.map +1 -1
  67. package/dist/cli/backend/src/services/session/index.js +1 -1
  68. package/dist/cli/backend/src/services/session/index.js.map +1 -1
  69. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +14 -1
  70. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  71. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +28 -2
  72. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  73. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +27 -3
  74. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  75. package/dist/cli/backend/src/services/session/session-backend.interface.js +17 -3
  76. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
  77. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +28 -0
  78. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  79. package/dist/cli/backend/src/services/session/session-command-helper.js +89 -0
  80. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
  81. 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';
@@ -4431,6 +4432,55 @@ Loop until done, blocked, or explicitly reassigned:
4431
4432
  const queueSize = queue.getQueueSize(sessionName);
4432
4433
  return { position: queue.positionOf(sessionName, message) ?? queueSize, queueSize };
4433
4434
  }
4435
+ /**
4436
+ * Make a session's runtime redraw its screen (SIGWINCH): one column and
4437
+ * row larger, then back to its current size. Uses the backend's resize
4438
+ * (PTY and screen buffer together) at the session's real size, never a
4439
+ * fixed 80x24 — that would shrink an agent's terminal back to the size
4440
+ * whose too-short window hid the input box (2026-10-08 Ella).
4441
+ *
4442
+ * @param sessionHelper - The session helper
4443
+ * @param sessionName - The session
4444
+ */
4445
+ async repaintBySigwinch(sessionHelper, sessionName) {
4446
+ const backend = typeof sessionHelper.getBackend === 'function' ? sessionHelper.getBackend() : null;
4447
+ const dims = backend?.getTerminalDimensions?.(sessionName) ?? { cols: DEFAULT_TERMINAL_COLS, rows: DEFAULT_TERMINAL_ROWS };
4448
+ const resize = (cols, rows) => {
4449
+ if (backend?.resizeSession)
4450
+ backend.resizeSession(sessionName, cols, rows);
4451
+ else
4452
+ sessionHelper.getSession(sessionName)?.resize(cols, rows);
4453
+ };
4454
+ resize(dims.cols + 1, dims.rows + 1);
4455
+ await delay(200);
4456
+ resize(dims.cols, dims.rows);
4457
+ }
4458
+ /**
4459
+ * Whether an agent is mid-turn, for the unreadable-input restart: a live
4460
+ * turn on screen (busy bar / spinner that is repainting), or agent output
4461
+ * within `quietMs` (Crewly's own resize redraws are not counted, see
4462
+ * PtyActivityTrackerService.ignoreOutputFor). Unsure counts as mid-turn.
4463
+ *
4464
+ * @param sessionName - The agent
4465
+ * @param quietMs - How long without output counts as not mid-turn
4466
+ * @returns True when the agent may be working
4467
+ */
4468
+ async isMidTurnForRecovery(sessionName, quietMs) {
4469
+ try {
4470
+ const helper = await this.getSessionHelper();
4471
+ if (!helper.sessionExists(sessionName))
4472
+ return true;
4473
+ if (await helper.isAgentBusy(sessionName))
4474
+ return true;
4475
+ const tracker = PtyActivityTrackerService.getInstance();
4476
+ if (!tracker.hasActivity(sessionName))
4477
+ return false;
4478
+ return tracker.getIdleTimeMs(sessionName) < quietMs;
4479
+ }
4480
+ catch {
4481
+ return true;
4482
+ }
4483
+ }
4434
4484
  /**
4435
4485
  * For a Claude Code agent that is mid-turn, queue the message instead of
4436
4486
  * pasting it into the running turn (see {@link holdForBusyAgent}). Other
@@ -4655,11 +4705,8 @@ Loop until done, blocked, or explicitly reassigned:
4655
4705
  // This matches the manual workaround where pressing a key in the
4656
4706
  // frontend terminal "wakes up" the input handler.
4657
4707
  try {
4658
- const session = sessionHelper.getSession(sessionName);
4659
- if (session) {
4660
- session.resize(81, 25);
4661
- await delay(200);
4662
- session.resize(80, 24);
4708
+ if (sessionHelper.getSession(sessionName)) {
4709
+ await this.repaintBySigwinch(sessionHelper, sessionName);
4663
4710
  await delay(300);
4664
4711
  }
4665
4712
  }
@@ -4683,11 +4730,8 @@ Loop until done, blocked, or explicitly reassigned:
4683
4730
  if (attempt > 1) {
4684
4731
  // PTY resize to trigger SIGWINCH → Ink re-render
4685
4732
  try {
4686
- const session = sessionHelper.getSession(sessionName);
4687
- if (session) {
4688
- session.resize(81, 25);
4689
- await delay(200);
4690
- session.resize(80, 24);
4733
+ if (sessionHelper.getSession(sessionName)) {
4734
+ await this.repaintBySigwinch(sessionHelper, sessionName);
4691
4735
  await delay(300);
4692
4736
  }
4693
4737
  }
@@ -4720,12 +4764,8 @@ Loop until done, blocked, or explicitly reassigned:
4720
4764
  // re-render the TUI and potentially restore focus state.
4721
4765
  if (needsResize) {
4722
4766
  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);
4767
+ if (sessionHelper.getSession(sessionName)) {
4768
+ await this.repaintBySigwinch(sessionHelper, sessionName);
4729
4769
  await delay(500);
4730
4770
  this.logger.debug('PTY resize sent to trigger TUI re-render', {
4731
4771
  sessionName,