crewly 1.20.295 → 1.20.297

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/_common/lib.sh +6 -0
  2. package/config/skills/agent/core/app-data/SKILL.md +13 -1
  3. package/config/skills/agent/core/app-data/execute.sh +60 -6
  4. package/config/skills/agent/core/app-data/execute.test.sh +42 -0
  5. package/config/skills/agent/core/complete-task/SKILL.md +4 -2
  6. package/config/skills/agent/core/complete-task/execute.sh +7 -0
  7. package/config/skills/agent/core/complete-task/explicit-id.test.sh +56 -0
  8. package/config/skills/agent/core/docs-comment/SKILL.md +49 -4
  9. package/config/skills/agent/core/docs-comment/execute.sh +38 -2
  10. package/config/skills/agent/core/docs-comment/execute.test.sh +28 -0
  11. package/config/skills/agent/core/poll-tasks/execute.sh +13 -1
  12. package/config/skills/agent/core/poll-tasks/execute.test.sh +37 -0
  13. package/config/skills/team-leader/delegate-task/execute.sh +13 -2
  14. package/config/skills/team-leader/verify-output/SKILL.md +9 -0
  15. package/dist/backend/backend/src/constants.d.ts +39 -0
  16. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  17. package/dist/backend/backend/src/constants.js +39 -0
  18. package/dist/backend/backend/src/constants.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/apps/apps.controller.d.ts +2 -0
  20. package/dist/backend/backend/src/controllers/apps/apps.controller.d.ts.map +1 -1
  21. package/dist/backend/backend/src/controllers/apps/apps.controller.js +2 -0
  22. package/dist/backend/backend/src/controllers/apps/apps.controller.js.map +1 -1
  23. package/dist/backend/backend/src/controllers/apps/apps.routes.d.ts +1 -0
  24. package/dist/backend/backend/src/controllers/apps/apps.routes.d.ts.map +1 -1
  25. package/dist/backend/backend/src/controllers/apps/apps.routes.js +3 -1
  26. package/dist/backend/backend/src/controllers/apps/apps.routes.js.map +1 -1
  27. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +20 -0
  28. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  29. package/dist/backend/backend/src/controllers/browser/browser.controller.js +52 -9
  30. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  31. package/dist/backend/backend/src/controllers/google/google.controller.d.ts +31 -0
  32. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  33. package/dist/backend/backend/src/controllers/google/google.controller.js +198 -5
  34. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  35. package/dist/backend/backend/src/controllers/google/google.routes.d.ts +4 -0
  36. package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
  37. package/dist/backend/backend/src/controllers/google/google.routes.js +9 -1
  38. package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
  39. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  40. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +28 -8
  41. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  42. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  43. package/dist/backend/backend/src/controllers/slack/slack.controller.js +28 -1
  44. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  45. package/dist/backend/backend/src/index.d.ts.map +1 -1
  46. package/dist/backend/backend/src/index.js +35 -5
  47. package/dist/backend/backend/src/index.js.map +1 -1
  48. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  49. package/dist/backend/backend/src/services/agent/agent-registration.service.js +4 -2
  50. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  51. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -1
  52. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  53. package/dist/backend/backend/src/services/apps/app-wake-message.d.ts +33 -0
  54. package/dist/backend/backend/src/services/apps/app-wake-message.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/apps/app-wake-message.js +48 -0
  56. package/dist/backend/backend/src/services/apps/app-wake-message.js.map +1 -1
  57. package/dist/backend/backend/src/services/apps/apps.service.d.ts +23 -0
  58. package/dist/backend/backend/src/services/apps/apps.service.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/apps/apps.service.js +57 -6
  60. package/dist/backend/backend/src/services/apps/apps.service.js.map +1 -1
  61. package/dist/backend/backend/src/services/google/docs-comment-gate.d.ts +166 -0
  62. package/dist/backend/backend/src/services/google/docs-comment-gate.d.ts.map +1 -0
  63. package/dist/backend/backend/src/services/google/docs-comment-gate.js +176 -0
  64. package/dist/backend/backend/src/services/google/docs-comment-gate.js.map +1 -0
  65. package/dist/backend/backend/src/services/google/docs-comments.service.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/google/docs-comments.service.js +2 -2
  67. package/dist/backend/backend/src/services/google/docs-comments.service.js.map +1 -1
  68. package/dist/backend/backend/src/services/google/google-api.client.d.ts +15 -0
  69. package/dist/backend/backend/src/services/google/google-api.client.d.ts.map +1 -1
  70. package/dist/backend/backend/src/services/google/google-api.client.js +16 -2
  71. package/dist/backend/backend/src/services/google/google-api.client.js.map +1 -1
  72. package/dist/backend/backend/src/services/google/google-reauth.wiring.js +1 -1
  73. package/dist/backend/backend/src/services/google/google-reauth.wiring.js.map +1 -1
  74. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts +12 -0
  75. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
  76. package/dist/backend/backend/src/services/google/google-workspace-token.service.js +18 -0
  77. package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
  78. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +18 -4
  79. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +36 -8
  81. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  82. package/dist/backend/backend/src/services/orc/reply-destination-resolver.d.ts +6 -0
  83. package/dist/backend/backend/src/services/orc/reply-destination-resolver.d.ts.map +1 -1
  84. package/dist/backend/backend/src/services/orc/reply-destination-resolver.js +18 -0
  85. package/dist/backend/backend/src/services/orc/reply-destination-resolver.js.map +1 -1
  86. package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts +2 -0
  87. package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -1
  88. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +81 -8
  89. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -1
  90. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +8 -0
  91. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
  92. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +22 -0
  93. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
  94. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +17 -0
  95. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  96. package/dist/backend/backend/src/services/session/session-command-helper.js +32 -0
  97. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  98. package/dist/backend/backend/src/services/slack/orc-owner-dm-target.d.ts +27 -0
  99. package/dist/backend/backend/src/services/slack/orc-owner-dm-target.d.ts.map +1 -0
  100. package/dist/backend/backend/src/services/slack/orc-owner-dm-target.js +48 -0
  101. package/dist/backend/backend/src/services/slack/orc-owner-dm-target.js.map +1 -0
  102. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts +18 -0
  103. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js +9 -3
  105. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js.map +1 -1
  106. package/dist/backend/backend/src/services/task-pool/pool-prune.d.ts +76 -0
  107. package/dist/backend/backend/src/services/task-pool/pool-prune.d.ts.map +1 -0
  108. package/dist/backend/backend/src/services/task-pool/pool-prune.js +129 -0
  109. package/dist/backend/backend/src/services/task-pool/pool-prune.js.map +1 -0
  110. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +9 -1
  111. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/task-pool/pool-storage.js +34 -3
  113. package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
  114. package/dist/backend/backend/src/services/worktree/runaway-file-watcher.d.ts +131 -0
  115. package/dist/backend/backend/src/services/worktree/runaway-file-watcher.d.ts.map +1 -0
  116. package/dist/backend/backend/src/services/worktree/runaway-file-watcher.js +251 -0
  117. package/dist/backend/backend/src/services/worktree/runaway-file-watcher.js.map +1 -0
  118. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +30 -0
  119. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +82 -0
  121. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
  122. package/dist/backend/backend/src/utils/screen-excerpt.d.ts +34 -0
  123. package/dist/backend/backend/src/utils/screen-excerpt.d.ts.map +1 -0
  124. package/dist/backend/backend/src/utils/screen-excerpt.js +56 -0
  125. package/dist/backend/backend/src/utils/screen-excerpt.js.map +1 -0
  126. package/dist/backend/build-info.json +2 -2
  127. package/dist/cli/backend/src/constants.d.ts +39 -0
  128. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  129. package/dist/cli/backend/src/constants.js +39 -0
  130. package/dist/cli/backend/src/constants.js.map +1 -1
  131. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  132. package/dist/cli/backend/src/services/agent/agent-registration.service.js +4 -2
  133. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  134. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -1
  135. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  136. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +18 -4
  137. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  138. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +36 -8
  139. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  140. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +17 -0
  141. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  142. package/dist/cli/backend/src/services/session/session-command-helper.js +32 -0
  143. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
  144. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +9 -1
  145. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  146. package/dist/cli/backend/src/services/task-pool/pool-storage.js +34 -3
  147. package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
  148. package/dist/cli/backend/src/utils/screen-excerpt.d.ts +34 -0
  149. package/dist/cli/backend/src/utils/screen-excerpt.d.ts.map +1 -0
  150. package/dist/cli/backend/src/utils/screen-excerpt.js +56 -0
  151. package/dist/cli/backend/src/utils/screen-excerpt.js.map +1 -0
  152. package/package.json +1 -1
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The orchestrator's primary owner DM as a file target (#1142).
3
+ *
4
+ * The orchestrator answers the owner in a plain Slack DM (`D…`), mirrored
5
+ * into chat-v2 as `slack-<D…>-<ts>` conversations. That DM belongs to neither
6
+ * the team-channel nor the per-agent-DM service, so `attach-file` found no
7
+ * Slack place for it. Only the orchestrator gets this target, and only a DM.
8
+ *
9
+ * @module services/slack/orc-owner-dm-target
10
+ */
11
+ import { ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
12
+ import { parseSlackConversationId } from '../orc/orc-delivery-enforcer.service.js';
13
+ import { isSlackDm } from '../orc/orc-reply-route.service.js';
14
+ import { parseSlackThreadKey } from './slack-thread-key.js';
15
+ /**
16
+ * Work out the owner DM (and thread) an attach names.
17
+ *
18
+ * @param agentSession - The calling agent
19
+ * @param named - `--channel` (a Slack DM id or a `slack-D…-<ts>` conversation id) and `--thread` (Slack thread key)
20
+ * @returns The target, or null when the caller is not the orchestrator or nothing names a Slack DM
21
+ */
22
+ export function orcOwnerDmTarget(agentSession, named) {
23
+ if (agentSession !== ORCHESTRATOR_SESSION_NAME)
24
+ return null;
25
+ const channel = typeof named.channelId === 'string' ? named.channelId.trim() : '';
26
+ const thread = typeof named.threadId === 'string' ? named.threadId.trim() : '';
27
+ const key = parseSlackThreadKey(thread);
28
+ let slackChannelId;
29
+ let threadTs;
30
+ const conv = parseSlackConversationId(channel);
31
+ if (conv) {
32
+ slackChannelId = conv.channelId;
33
+ threadTs = conv.threadTs;
34
+ }
35
+ else if (/^[A-Z0-9]+$/.test(channel) && isSlackDm(channel)) {
36
+ slackChannelId = channel;
37
+ }
38
+ else if (!channel && key) {
39
+ slackChannelId = key.slackChannelId;
40
+ }
41
+ if (!slackChannelId || !isSlackDm(slackChannelId))
42
+ return null;
43
+ // A thread key of the same DM wins over the thread the conversation id carries.
44
+ if (key && key.slackChannelId === slackChannelId)
45
+ threadTs = key.threadTs;
46
+ return { slackChannelId, ...(threadTs ? { threadTs } : {}) };
47
+ }
48
+ //# sourceMappingURL=orc-owner-dm-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orc-owner-dm-target.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/orc-owner-dm-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAQ5D;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,KAAkD;IAElD,IAAI,YAAY,KAAK,yBAAyB;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,cAAkC,CAAC;IACvC,IAAI,QAA4B,CAAC;IACjC,MAAM,IAAI,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,IAAI,EAAE,CAAC;QACT,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;SAAM,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,cAAc,GAAG,OAAO,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;QAC3B,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,gFAAgF;IAChF,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,KAAK,cAAc;QAAE,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1E,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,CAAC"}
@@ -22,6 +22,7 @@
22
22
  * @module services/task-pool/pool-archive-migration
23
23
  */
24
24
  import type { WorkItem } from '../../types/v2/work-item.types.js';
25
+ import type { TaskClaim } from '../../types/v2/claim.types.js';
25
26
  import type { ComponentLogger } from '../core/logger.service.js';
26
27
  /** Why an item was archived. */
27
28
  export type ArchiveReason = 'terminal' | 'stale_review';
@@ -40,10 +41,13 @@ export interface PoolArchiveFile {
40
41
  archivedAt: string;
41
42
  migration: string;
42
43
  added: number;
44
+ addedClaims?: number;
43
45
  }>;
44
46
  workItems: Array<WorkItem & {
45
47
  archiveReason?: ArchiveReason;
46
48
  }>;
49
+ /** Ended claims moved out by the ongoing prune (absent in older files) */
50
+ claims?: TaskClaim[];
47
51
  }
48
52
  /** Counts reported (and logged) by a run. */
49
53
  export interface PoolArchiveResult {
@@ -91,6 +95,20 @@ export declare function selectItemsToArchive(items: readonly WorkItem[], now: nu
91
95
  * @returns `pool-archive-YYYY-MM-DD.json` (UTC date)
92
96
  */
93
97
  export declare function archiveFileName(now: Date): string;
98
+ /**
99
+ * Whether a file exists.
100
+ *
101
+ * @param p - Path
102
+ * @returns True when it does
103
+ */
104
+ export declare function exists(p: string): Promise<boolean>;
105
+ /**
106
+ * Read an existing archive file.
107
+ *
108
+ * @param file - Archive path
109
+ * @returns The parsed archive, or null when it cannot be read as one
110
+ */
111
+ export declare function readArchive(file: string): Promise<PoolArchiveFile | null>;
94
112
  /**
95
113
  * Run the one-time archive. Idempotent: returns `skipped` when the marker
96
114
  * file is present.
@@ -1 +1 @@
1
- {"version":3,"file":"pool-archive-migration.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-archive-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;AAExD,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpC,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,IAAI,MAAM,CAAC;CACtB;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,yCAAyC;IACzC,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG;QAAE,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAcD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAShF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,GAAG,EAAE,MAAM,GACV,KAAK,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAEjD;AAiCD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CAAO,GAC5E,OAAO,CAAC,iBAAiB,CAAC,CAgE5B"}
1
+ {"version":3,"file":"pool-archive-migration.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-archive-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;AAExD,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpC,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,IAAI,MAAM,CAAC;CACtB;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,yCAAyC;IACzC,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG;QAAE,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC/D,0EAA0E;IAC1E,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAcD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAShF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,GAAG,EAAE,MAAM,GACV,KAAK,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAa/E;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CAAO,GAC5E,OAAO,CAAC,iBAAiB,CAAC,CAiE5B"}
@@ -90,7 +90,7 @@ export function archiveFileName(now) {
90
90
  * @param p - Path
91
91
  * @returns True when it does
92
92
  */
93
- async function exists(p) {
93
+ export async function exists(p) {
94
94
  try {
95
95
  await fs.access(p);
96
96
  return true;
@@ -105,12 +105,17 @@ async function exists(p) {
105
105
  * @param file - Archive path
106
106
  * @returns The parsed archive, or null when it cannot be read as one
107
107
  */
108
- async function readArchive(file) {
108
+ export async function readArchive(file) {
109
109
  try {
110
110
  const parsed = JSON.parse(await fs.readFile(file, 'utf-8'));
111
111
  if (!parsed || !Array.isArray(parsed.workItems))
112
112
  return null;
113
- return { version: 1, runs: Array.isArray(parsed.runs) ? parsed.runs : [], workItems: parsed.workItems };
113
+ return {
114
+ version: 1,
115
+ runs: Array.isArray(parsed.runs) ? parsed.runs : [],
116
+ workItems: parsed.workItems,
117
+ ...(Array.isArray(parsed.claims) ? { claims: parsed.claims } : {}),
118
+ };
114
119
  }
115
120
  catch {
116
121
  return null;
@@ -171,6 +176,7 @@ export async function runPoolArchiveMigration(pool, options = {}) {
171
176
  { archivedAt: now.toISOString(), migration: POOL_ARCHIVE_CONSTANTS.MARKER_FILENAME, added: added.length },
172
177
  ],
173
178
  workItems: [...archived, ...added.map(({ workItem, reason }) => ({ ...workItem, archiveReason: reason }))],
179
+ ...(existing.claims ? { claims: existing.claims } : {}),
174
180
  };
175
181
  // Archive first: only once it is on disk do the items leave the pool.
176
182
  await atomicWriteJson(archiveFile, next);
@@ -1 +1 @@
1
- {"version":3,"file":"pool-archive-migration.js","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-archive-migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool-archive-migration.js","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-archive-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Ongoing task-pool pruning (crewly#1108).
3
+ *
4
+ * `pool.json` is rewritten whole on every write, so its size is the cost of
5
+ * every claim, heartbeat and completion. Finished WorkItems and ended claims
6
+ * were never removed (13 MB, 5,600 claims, 1,100 verified items). This moves
7
+ * them out of the live pool into the dated archive file
8
+ * (`task-pool/archive/pool-archive-YYYY-MM-DD.json`, the same file the
9
+ * one-time ticket-loop archive writes):
10
+ *
11
+ * - a WorkItem in a terminal status (`verified`, `done`, `failed`,
12
+ * `cancelled`) finished more than the retention ago;
13
+ * - an ended claim (`released` / `revoked`) whose WorkItem is terminal and
14
+ * finished more than the retention ago, or whose WorkItem is no longer in
15
+ * the pool at all (an orphan).
16
+ *
17
+ * Never moved: active or expiring claims, claims on a live WorkItem (the
18
+ * attempt history of an unfinished item is still read), non-terminal items.
19
+ * Nothing is deleted: the archive is written (append-only, merged by id)
20
+ * BEFORE the live pool shrinks, so a crash in between only means the next
21
+ * run moves the same entries again without duplicating them.
22
+ *
23
+ * @module services/task-pool/pool-prune
24
+ */
25
+ import type { WorkItem } from '../../types/v2/work-item.types.js';
26
+ import type { TaskClaim } from '../../types/v2/claim.types.js';
27
+ import type { ComponentLogger } from '../core/logger.service.js';
28
+ /** The pool surface the prune needs (PoolStorage). */
29
+ export interface PrunablePool {
30
+ getWorkItems(): Promise<WorkItem[]>;
31
+ getClaims(): Promise<TaskClaim[]>;
32
+ removeWorkItems(ids: ReadonlySet<string>): Promise<number>;
33
+ removeClaims(ids: ReadonlySet<string>): Promise<number>;
34
+ flush(): Promise<void>;
35
+ getDataDir(): string;
36
+ }
37
+ /** What a prune run did. */
38
+ export interface PoolPruneResult {
39
+ /** WorkItems moved to the archive */
40
+ items: number;
41
+ /** Claims moved to the archive */
42
+ claims: number;
43
+ /** WorkItems left in the live pool */
44
+ itemsKept: number;
45
+ /** Claims left in the live pool */
46
+ claimsKept: number;
47
+ /** Archive file written, when anything moved */
48
+ archiveFile?: string;
49
+ }
50
+ /**
51
+ * Select what leaves the live pool (pure).
52
+ *
53
+ * @param items - Every WorkItem in the pool
54
+ * @param claims - Every claim in the pool
55
+ * @param now - Current time (ms)
56
+ * @param retentionMs - How long finished entries stay
57
+ * @returns The WorkItems and claims to archive
58
+ */
59
+ export declare function selectPrunable(items: readonly WorkItem[], claims: readonly TaskClaim[], now: number, retentionMs?: number): {
60
+ workItems: WorkItem[];
61
+ claims: TaskClaim[];
62
+ };
63
+ /**
64
+ * Archive-then-remove what {@link selectPrunable} selects.
65
+ *
66
+ * @param pool - The live pool (PoolStorage)
67
+ * @param options - Clock, retention and logger
68
+ * @returns Counts
69
+ * @throws When the archive cannot be written — the live pool is untouched then
70
+ */
71
+ export declare function runPoolPrune(pool: PrunablePool, options?: {
72
+ now?: Date;
73
+ retentionMs?: number;
74
+ logger?: Pick<ComponentLogger, 'info' | 'warn'>;
75
+ }): Promise<PoolPruneResult>;
76
+ //# sourceMappingURL=pool-prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-prune.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAClC,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,IAAI,MAAM,CAAC;CACtB;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,MAA0C,GACtD;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,CAiBhD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CAAO,GAClG,OAAO,CAAC,eAAe,CAAC,CAmD1B"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Ongoing task-pool pruning (crewly#1108).
3
+ *
4
+ * `pool.json` is rewritten whole on every write, so its size is the cost of
5
+ * every claim, heartbeat and completion. Finished WorkItems and ended claims
6
+ * were never removed (13 MB, 5,600 claims, 1,100 verified items). This moves
7
+ * them out of the live pool into the dated archive file
8
+ * (`task-pool/archive/pool-archive-YYYY-MM-DD.json`, the same file the
9
+ * one-time ticket-loop archive writes):
10
+ *
11
+ * - a WorkItem in a terminal status (`verified`, `done`, `failed`,
12
+ * `cancelled`) finished more than the retention ago;
13
+ * - an ended claim (`released` / `revoked`) whose WorkItem is terminal and
14
+ * finished more than the retention ago, or whose WorkItem is no longer in
15
+ * the pool at all (an orphan).
16
+ *
17
+ * Never moved: active or expiring claims, claims on a live WorkItem (the
18
+ * attempt history of an unfinished item is still read), non-terminal items.
19
+ * Nothing is deleted: the archive is written (append-only, merged by id)
20
+ * BEFORE the live pool shrinks, so a crash in between only means the next
21
+ * run moves the same entries again without duplicating them.
22
+ *
23
+ * @module services/task-pool/pool-prune
24
+ */
25
+ import * as path from 'path';
26
+ import { atomicWriteJson, ensureDir } from '../../utils/file-io.utils.js';
27
+ import { POOL_ARCHIVE_CONSTANTS, POOL_PRUNE_CONSTANTS } from '../../constants.js';
28
+ import { archiveFileName, exists, readArchive } from './pool-archive-migration.js';
29
+ const TERMINAL = new Set(POOL_ARCHIVE_CONSTANTS.TERMINAL_STATUSES);
30
+ /**
31
+ * When a finished WorkItem finished: the latest of its completion and last
32
+ * status change, else its creation.
33
+ *
34
+ * @param wi - WorkItem
35
+ * @returns Epoch ms, NaN when no usable date
36
+ */
37
+ function finishedAt(wi) {
38
+ const times = [wi.completedAt, wi.statusChangedAt]
39
+ .map((iso) => (iso ? Date.parse(iso) : NaN))
40
+ .filter((t) => Number.isFinite(t));
41
+ if (times.length > 0)
42
+ return Math.max(...times);
43
+ return Date.parse(wi.createdAt);
44
+ }
45
+ /**
46
+ * Select what leaves the live pool (pure).
47
+ *
48
+ * @param items - Every WorkItem in the pool
49
+ * @param claims - Every claim in the pool
50
+ * @param now - Current time (ms)
51
+ * @param retentionMs - How long finished entries stay
52
+ * @returns The WorkItems and claims to archive
53
+ */
54
+ export function selectPrunable(items, claims, now, retentionMs = POOL_PRUNE_CONSTANTS.RETENTION_MS) {
55
+ const oldTerminal = new Set();
56
+ const live = new Set();
57
+ const workItems = [];
58
+ for (const wi of items) {
59
+ live.add(wi.id);
60
+ const t = finishedAt(wi);
61
+ // Unparseable dates: kept. Only what can be proven old moves.
62
+ if (TERMINAL.has(wi.status) && Number.isFinite(t) && now - t >= retentionMs) {
63
+ oldTerminal.add(wi.id);
64
+ workItems.push(wi);
65
+ }
66
+ }
67
+ const prunedClaims = claims.filter((c) => (c.status === 'released' || c.status === 'revoked') && (oldTerminal.has(c.workItemId) || !live.has(c.workItemId)));
68
+ return { workItems, claims: prunedClaims };
69
+ }
70
+ /**
71
+ * Archive-then-remove what {@link selectPrunable} selects.
72
+ *
73
+ * @param pool - The live pool (PoolStorage)
74
+ * @param options - Clock, retention and logger
75
+ * @returns Counts
76
+ * @throws When the archive cannot be written — the live pool is untouched then
77
+ */
78
+ export async function runPoolPrune(pool, options = {}) {
79
+ const now = options.now ?? new Date();
80
+ const items = [...(await pool.getWorkItems())];
81
+ const claims = [...(await pool.getClaims())];
82
+ const selected = selectPrunable(items, claims, now.getTime(), options.retentionMs);
83
+ if (selected.workItems.length === 0 && selected.claims.length === 0) {
84
+ return { items: 0, claims: 0, itemsKept: items.length, claimsKept: claims.length };
85
+ }
86
+ const archiveDir = path.join(pool.getDataDir(), POOL_ARCHIVE_CONSTANTS.ARCHIVE_DIRNAME);
87
+ await ensureDir(archiveDir);
88
+ let archiveFile = path.join(archiveDir, archiveFileName(now));
89
+ let existing = { version: 1, runs: [], workItems: [] };
90
+ if (await exists(archiveFile)) {
91
+ const read = await readArchive(archiveFile);
92
+ if (read) {
93
+ existing = read;
94
+ }
95
+ else {
96
+ // Unreadable archive: never overwrite it, write beside it instead.
97
+ archiveFile = archiveFile.replace(/\.json$/, `-${now.getTime()}.json`);
98
+ options.logger?.warn('Existing pool archive is unreadable — writing a new file beside it', { archiveFile });
99
+ }
100
+ }
101
+ const knownItems = new Set(existing.workItems.map((w) => w.id));
102
+ const knownClaims = new Set((existing.claims ?? []).map((c) => c.id));
103
+ const newItems = selected.workItems.filter((w) => !knownItems.has(w.id));
104
+ const newClaims = selected.claims.filter((c) => !knownClaims.has(c.id));
105
+ const next = {
106
+ version: 1,
107
+ runs: [
108
+ ...existing.runs,
109
+ { archivedAt: now.toISOString(), migration: 'pool-prune', added: newItems.length, addedClaims: newClaims.length },
110
+ ],
111
+ workItems: [...existing.workItems, ...newItems.map((w) => ({ ...w, archiveReason: 'terminal' }))],
112
+ claims: [...(existing.claims ?? []), ...newClaims],
113
+ };
114
+ // Archive first: only once it is on disk do the entries leave the pool.
115
+ await atomicWriteJson(archiveFile, next);
116
+ const removedItems = await pool.removeWorkItems(new Set(selected.workItems.map((w) => w.id)));
117
+ const removedClaims = await pool.removeClaims(new Set(selected.claims.map((c) => c.id)));
118
+ await pool.flush();
119
+ const result = {
120
+ items: removedItems,
121
+ claims: removedClaims,
122
+ itemsKept: items.length - removedItems,
123
+ claimsKept: claims.length - removedClaims,
124
+ archiveFile,
125
+ };
126
+ options.logger?.info('Task pool pruned: finished items and ended claims moved to the archive', { ...result });
127
+ return result;
128
+ }
129
+ //# sourceMappingURL=pool-prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-prune.js","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-prune.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export interface PoolStorageOptions {
31
31
  * Persists task pool state to a JSON file with atomic writes.
32
32
  *
33
33
  * Uses the same patterns as the rest of the Crewly backend:
34
- * - {@link atomicWriteJson} for crash-safe writes
34
+ * - {@link atomicWriteFile} for crash-safe writes
35
35
  * - {@link modifyJsonFile} for locked read-modify-write cycles
36
36
  * - Debounced flushing to reduce disk I/O under burst writes
37
37
  */
@@ -128,6 +128,14 @@ export declare class PoolStorage {
128
128
  * @returns How many were removed
129
129
  */
130
130
  removeWorkItems(workItemIds: ReadonlySet<string>): Promise<number>;
131
+ /**
132
+ * Removes several claims at once (in place, one flush scheduled). Used by
133
+ * the pool prune, which writes them to the archive first.
134
+ *
135
+ * @param claimIds - IDs to remove
136
+ * @returns How many were removed
137
+ */
138
+ removeClaims(claimIds: ReadonlySet<string>): Promise<number>;
131
139
  /**
132
140
  * Directory the pool file lives in (`~/.crewly/task-pool` by default).
133
141
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pool-storage.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAS/D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,uCAAuC;IACvC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAmBD;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,wDAAwD;IACxD,OAAO,CAAC,KAAK,CAAyB;IAEtC,iDAAiD;IACjD,OAAO,CAAC,UAAU,CAA+B;IAEjD,kCAAkC;IAClC,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,CAAC,EAAE,kBAAkB;IAYxC;;;;;;;;;;;;OAYG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAsB/B;;;;;;;OAOG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKzC;;;;;;;OAOG;IACG,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKvC;;;;;OAKG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAKrE;;;;;OAKG;IACG,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAOnF;;;;;OAKG;IACG,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAO7E;;;;OAIG;IACG,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;;;;;OAMG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,GAC9B,OAAO,CAAC,OAAO,CAAC;IAWnB;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1D;;;;;;;OAOG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAcxE;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C;;;;;;OAMG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAClC,OAAO,CAAC,OAAO,CAAC;IASnB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;OAEG;IACH,OAAO,CAAC,SAAS;CAUlB;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,CAM9C"}
1
+ {"version":3,"file":"pool-storage.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAS/D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,uCAAuC;IACvC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAmBD;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,wDAAwD;IACxD,OAAO,CAAC,KAAK,CAAyB;IAEtC,iDAAiD;IACjD,OAAO,CAAC,UAAU,CAA+B;IAEjD,kCAAkC;IAClC,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,CAAC,EAAE,kBAAkB;IAYxC;;;;;;;;;;;;OAYG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAsB/B;;;;;;;OAOG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKzC;;;;;;;OAOG;IACG,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKvC;;;;;OAKG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAKrE;;;;;OAKG;IACG,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAOnF;;;;;OAKG;IACG,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAO7E;;;;OAIG;IACG,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;;;;;OAMG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,GAC9B,OAAO,CAAC,OAAO,CAAC;IAWnB;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1D;;;;;;;OAOG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAcxE;;;;;;OAMG;IACG,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAalE;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C;;;;;;OAMG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAClC,OAAO,CAAC,OAAO,CAAC;IASnB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;OAEG;IACH,OAAO,CAAC,SAAS;CAUlB;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,CAM9C"}
@@ -8,7 +8,7 @@
8
8
  * @module services/task-pool/pool-storage
9
9
  */
10
10
  import * as path from 'path';
11
- import { ensureDir, safeReadJson, atomicWriteJson, } from '../../utils/file-io.utils.js';
11
+ import { ensureDir, safeReadJson, atomicWriteFile, } from '../../utils/file-io.utils.js';
12
12
  import { LoggerService } from '../core/logger.service.js';
13
13
  import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
14
14
  import { traceWorkItemCreated, traceWorkItemStatus } from '../trace/trace-recorder.js';
@@ -28,7 +28,7 @@ const WRITE_DEBOUNCE_MS = 500;
28
28
  * Persists task pool state to a JSON file with atomic writes.
29
29
  *
30
30
  * Uses the same patterns as the rest of the Crewly backend:
31
- * - {@link atomicWriteJson} for crash-safe writes
31
+ * - {@link atomicWriteFile} for crash-safe writes
32
32
  * - {@link modifyJsonFile} for locked read-modify-write cycles
33
33
  * - Debounced flushing to reduce disk I/O under burst writes
34
34
  */
@@ -200,6 +200,26 @@ export class PoolStorage {
200
200
  this.markDirty();
201
201
  return removed;
202
202
  }
203
+ /**
204
+ * Removes several claims at once (in place, one flush scheduled). Used by
205
+ * the pool prune, which writes them to the archive first.
206
+ *
207
+ * @param claimIds - IDs to remove
208
+ * @returns How many were removed
209
+ */
210
+ async removeClaims(claimIds) {
211
+ const data = await this.load();
212
+ let removed = 0;
213
+ for (let i = data.claims.length - 1; i >= 0; i--) {
214
+ if (claimIds.has(data.claims[i].id)) {
215
+ data.claims.splice(i, 1);
216
+ removed += 1;
217
+ }
218
+ }
219
+ if (removed > 0)
220
+ this.markDirty();
221
+ return removed;
222
+ }
203
223
  /**
204
224
  * Directory the pool file lives in (`~/.crewly/task-pool` by default).
205
225
  *
@@ -246,8 +266,19 @@ export class PoolStorage {
246
266
  if (!this.dirty || !this.cache)
247
267
  return;
248
268
  this.cache.lastUpdatedAt = new Date().toISOString();
249
- await atomicWriteJson(this.filePath, this.cache);
269
+ // Cleared BEFORE the write: a change made while it runs sets the flag
270
+ // again and gets its own flush. Clearing it after would swallow that
271
+ // change until the next unrelated write.
250
272
  this.dirty = false;
273
+ try {
274
+ // Compact JSON: the pretty-printed file was twice the size and the
275
+ // whole-file rewrite is the cost of every pool write (crewly#1108).
276
+ await atomicWriteFile(this.filePath, JSON.stringify(this.cache));
277
+ }
278
+ catch (err) {
279
+ this.dirty = true;
280
+ throw err;
281
+ }
251
282
  this.logger.debug?.('Pool data flushed to disk', { path: this.filePath });
252
283
  }
253
284
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pool-storage.js","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool-storage.js","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/pool-storage.ts"],"names":[],"mappings":"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"}