crewly 1.20.108 → 1.20.110

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 (138) hide show
  1. package/config/skills/agent/core/complete-task/SKILL.md +11 -0
  2. package/config/skills/agent/core/complete-task/execute.sh +16 -1
  3. package/config/skills/agent/core/complete-task/execute.test.sh +19 -0
  4. package/config/skills/agent/core/ticket-check/SKILL.md +62 -0
  5. package/config/skills/agent/core/ticket-check/execute.sh +71 -0
  6. package/config/skills/agent/core/ticket-check/execute.test.sh +69 -0
  7. package/dist/backend/backend/src/constants.d.ts +36 -0
  8. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  9. package/dist/backend/backend/src/constants.js +36 -0
  10. package/dist/backend/backend/src/constants.js.map +1 -1
  11. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +42 -0
  12. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
  13. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +185 -0
  14. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
  15. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +7 -0
  16. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
  17. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +16 -1
  18. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
  19. package/dist/backend/backend/src/index.d.ts.map +1 -1
  20. package/dist/backend/backend/src/index.js +84 -3
  21. package/dist/backend/backend/src/index.js.map +1 -1
  22. package/dist/backend/backend/src/services/cache/redis-cache.service.d.ts.map +1 -1
  23. package/dist/backend/backend/src/services/cache/redis-cache.service.js +8 -1
  24. package/dist/backend/backend/src/services/cache/redis-cache.service.js.map +1 -1
  25. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +1 -1
  26. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  27. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +24 -0
  28. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  29. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +83 -3
  30. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  31. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +6 -0
  33. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  34. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +2 -2
  35. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  36. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +2 -2
  37. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  38. package/dist/backend/backend/src/services/system/version-check.service.d.ts +7 -1
  39. package/dist/backend/backend/src/services/system/version-check.service.d.ts.map +1 -1
  40. package/dist/backend/backend/src/services/system/version-check.service.js +10 -3
  41. package/dist/backend/backend/src/services/system/version-check.service.js.map +1 -1
  42. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +35 -0
  43. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +88 -6
  45. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  46. package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.d.ts +92 -0
  47. package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.d.ts.map +1 -0
  48. package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.js +168 -0
  49. package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.js.map +1 -0
  50. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +24 -12
  52. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  53. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts +8 -0
  54. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +40 -0
  56. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
  57. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +9 -0
  59. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  60. package/dist/backend/backend/src/services/v3/request.service.d.ts +10 -0
  61. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/v3/request.service.js +51 -0
  63. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  64. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts +17 -0
  65. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  66. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +52 -5
  67. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  68. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +63 -1
  69. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  70. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +67 -1
  71. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  72. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +242 -0
  73. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -0
  74. package/dist/backend/backend/src/services/v3/ticket-review.service.js +456 -0
  75. package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -0
  76. package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
  77. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  78. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  79. package/dist/backend/backend/src/types/v2/request.types.d.ts +21 -1
  80. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  81. package/dist/backend/backend/src/types/v2/request.types.js +3 -2
  82. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  83. package/dist/backend/backend/src/types/v2/ticket.types.d.ts +71 -1
  84. package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  85. package/dist/backend/backend/src/types/v2/ticket.types.js +40 -0
  86. package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -1
  87. package/dist/backend/build-info.json +2 -2
  88. package/dist/cli/backend/src/constants.d.ts +36 -0
  89. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  90. package/dist/cli/backend/src/constants.js +36 -0
  91. package/dist/cli/backend/src/constants.js.map +1 -1
  92. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +2 -2
  93. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  94. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +2 -2
  95. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  96. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +35 -0
  97. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  98. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +88 -6
  99. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  100. package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.d.ts +92 -0
  101. package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.d.ts.map +1 -0
  102. package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.js +168 -0
  103. package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.js.map +1 -0
  104. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  105. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +9 -0
  106. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  107. package/dist/cli/backend/src/services/v3/request.service.d.ts +10 -0
  108. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  109. package/dist/cli/backend/src/services/v3/request.service.js +51 -0
  110. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  111. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts +17 -0
  112. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  113. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +52 -5
  114. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  115. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +63 -1
  116. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  117. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +67 -1
  118. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  119. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +242 -0
  120. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -0
  121. package/dist/cli/backend/src/services/v3/ticket-review.service.js +456 -0
  122. package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -0
  123. package/dist/cli/backend/src/types/v2/index.d.ts +1 -1
  124. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  125. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  126. package/dist/cli/backend/src/types/v2/request.types.d.ts +21 -1
  127. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  128. package/dist/cli/backend/src/types/v2/request.types.js +3 -2
  129. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  130. package/dist/cli/backend/src/types/v2/ticket.types.d.ts +71 -1
  131. package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  132. package/dist/cli/backend/src/types/v2/ticket.types.js +40 -0
  133. package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -1
  134. package/frontend/dist/assets/{index-f7b99e81.js → index-07e338a9.js} +284 -284
  135. package/frontend/dist/assets/index-8327e63e.css +42 -0
  136. package/frontend/dist/index.html +2 -2
  137. package/package.json +1 -1
  138. package/frontend/dist/assets/index-413c5813.css +0 -42
@@ -26,11 +26,51 @@ export interface TicketOrigin {
26
26
  author: string;
27
27
  authorName?: string;
28
28
  }
29
- /** One acceptance criterion (Phase 2 surfaces it). */
29
+ /**
30
+ * Where an acceptance criterion came from. Criteria grow from real review
31
+ * (#763): a 打回 reason becomes a criterion, so the next attempt is judged
32
+ * against what the owner actually objected to.
33
+ */
34
+ export type TicketAcceptanceSource = 'owner' | 'decompose' | 'reject' | 'agent';
35
+ /**
36
+ * How a criterion is checked (#763): `auto` = something a build, test or
37
+ * scan can show; `judgment` = needs a person (tone, fit, "is this what I
38
+ * meant"). A ticket's self-check can only speak for the `auto` ones.
39
+ */
40
+ export type TicketAcceptanceCheck = 'auto' | 'judgment';
41
+ /** One acceptance criterion. */
30
42
  export interface TicketAcceptance {
31
43
  text: string;
32
44
  selfCheck?: 'pass' | 'fail';
33
45
  evidence?: string;
46
+ /** Who added it (absent on Phase 1 data = owner) */
47
+ source?: TicketAcceptanceSource;
48
+ /** How it is checked (absent = judgment) */
49
+ check?: TicketAcceptanceCheck;
50
+ /** ISO-8601 */
51
+ addedAt?: string;
52
+ /** Set when the owner removed it; kept so the history stays readable */
53
+ removedAt?: string;
54
+ }
55
+ /** The chat-v2 turn a ticket was opened by — how agent answers are matched to it. */
56
+ export interface TicketChatRef {
57
+ /** chat-v2 channel the owner's message was recorded in */
58
+ channelId: string;
59
+ /** The owner's message */
60
+ messageId: string;
61
+ /** Root of the thread it sits in (the message itself when top-level) */
62
+ threadRootId: string;
63
+ }
64
+ /** The latest agent answer seen in a ticket's thread. */
65
+ export interface TicketReply {
66
+ /** ISO-8601 */
67
+ at: string;
68
+ /** Agent session */
69
+ by: string;
70
+ /** chat-v2 message id */
71
+ messageId: string;
72
+ /** Start of the answer (shown on the board as the result) */
73
+ excerpt: string;
34
74
  }
35
75
  /**
36
76
  * Where the receipt for a ticket was posted, so dismissing can edit it.
@@ -148,6 +188,36 @@ export interface BoardWorkItemView {
148
188
  * @returns Board column
149
189
  */
150
190
  export declare function deriveBoardColumn(request: Pick<Request, 'status' | 'kind' | 'requiresConfirmation'>, workItems?: readonly BoardWorkItemView[]): TicketBoardColumn;
191
+ /**
192
+ * Whether a ticket waits for the owner before it is done. Tickets from cron
193
+ * and missions close on their own; so does anything filed before Phase 2
194
+ * (`requiresConfirmation` was false then).
195
+ *
196
+ * @param request - The Request
197
+ * @returns True when `done` needs the owner's accept (or the auto-accept)
198
+ */
199
+ export declare function ticketNeedsReview(request: Pick<Request, 'ticketNumber' | 'requiresConfirmation' | 'origin'>): boolean;
200
+ /**
201
+ * Criteria still in force (not removed).
202
+ *
203
+ * @param acceptance - All criteria, removed ones included
204
+ * @returns The live ones, in order
205
+ */
206
+ export declare function activeAcceptance(acceptance: readonly TicketAcceptance[] | undefined): TicketAcceptance[];
207
+ /** What an owner message in a 待验收 ticket's thread means. */
208
+ export type ReviewReply = {
209
+ action: 'verify';
210
+ } | {
211
+ action: 'reject';
212
+ reason: string;
213
+ } | null;
214
+ /**
215
+ * Read a 验过了 / 打回 reply.
216
+ *
217
+ * @param text - The owner's message
218
+ * @returns The action, or null for anything else
219
+ */
220
+ export declare function parseReviewReply(text: string): ReviewReply;
151
221
  /**
152
222
  * Whether a string is a valid board column.
153
223
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ticket.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/ticket.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ticket.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/ticket.types.ts"],"names":[],"mappings":"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"}
@@ -158,6 +158,10 @@ export function deriveBoardColumn(request, workItems = []) {
158
158
  workItems.every((w) => WORK_ITEM_SUCCESS.has(w.status))) {
159
159
  return 'to_review';
160
160
  }
161
+ // Answered directly (no WorkItems) and handed to the owner.
162
+ if (request.status === 'waiting_confirmation' && request.requiresConfirmation && workItems.length === 0) {
163
+ return 'to_review';
164
+ }
161
165
  switch (request.status) {
162
166
  case 'blocked':
163
167
  case 'waiting_confirmation':
@@ -170,6 +174,42 @@ export function deriveBoardColumn(request, workItems = []) {
170
174
  return 'todo';
171
175
  }
172
176
  }
177
+ /**
178
+ * Whether a ticket waits for the owner before it is done. Tickets from cron
179
+ * and missions close on their own; so does anything filed before Phase 2
180
+ * (`requiresConfirmation` was false then).
181
+ *
182
+ * @param request - The Request
183
+ * @returns True when `done` needs the owner's accept (or the auto-accept)
184
+ */
185
+ export function ticketNeedsReview(request) {
186
+ if (typeof request.ticketNumber !== 'number' || !request.requiresConfirmation)
187
+ return false;
188
+ return !TICKET_CONSTANTS.REVIEW.NO_REVIEW_ORIGINS.includes(request.origin?.channel ?? '');
189
+ }
190
+ /**
191
+ * Criteria still in force (not removed).
192
+ *
193
+ * @param acceptance - All criteria, removed ones included
194
+ * @returns The live ones, in order
195
+ */
196
+ export function activeAcceptance(acceptance) {
197
+ return (acceptance ?? []).filter((a) => !a.removedAt);
198
+ }
199
+ /**
200
+ * Read a 验过了 / 打回 reply.
201
+ *
202
+ * @param text - The owner's message
203
+ * @returns The action, or null for anything else
204
+ */
205
+ export function parseReviewReply(text) {
206
+ if (TICKET_CONSTANTS.REVIEW.VERIFY_PATTERN.test(text))
207
+ return { action: 'verify' };
208
+ const m = TICKET_CONSTANTS.REVIEW.REJECT_PATTERN.exec(text);
209
+ if (m)
210
+ return { action: 'reject', reason: (m[3] ?? '').trim() || TICKET_CONSTANTS.REVIEW.REJECT_NO_REASON };
211
+ return null;
212
+ }
173
213
  /**
174
214
  * Whether a string is a valid board column.
175
215
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ticket.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/ticket.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ticket.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/ticket.types.ts"],"names":[],"mappings":"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"}