crewly 1.20.108 → 1.20.109

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 (103) hide show
  1. package/config/skills/agent/core/ticket-check/SKILL.md +62 -0
  2. package/config/skills/agent/core/ticket-check/execute.sh +71 -0
  3. package/config/skills/agent/core/ticket-check/execute.test.sh +69 -0
  4. package/dist/backend/backend/src/constants.d.ts +30 -0
  5. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  6. package/dist/backend/backend/src/constants.js +30 -0
  7. package/dist/backend/backend/src/constants.js.map +1 -1
  8. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +42 -0
  9. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
  10. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +185 -0
  11. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
  12. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +7 -0
  13. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
  14. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +16 -1
  15. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
  16. package/dist/backend/backend/src/index.d.ts.map +1 -1
  17. package/dist/backend/backend/src/index.js +52 -1
  18. package/dist/backend/backend/src/index.js.map +1 -1
  19. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +1 -1
  20. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  21. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  22. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +6 -0
  23. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  24. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +2 -2
  25. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  26. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +2 -2
  27. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  28. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts +8 -0
  29. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +40 -0
  31. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
  32. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +9 -0
  34. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  35. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  36. package/dist/backend/backend/src/services/v3/request.service.js +28 -0
  37. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  38. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts +17 -0
  39. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  40. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +52 -5
  41. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  42. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +63 -1
  43. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +67 -1
  45. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  46. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +242 -0
  47. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -0
  48. package/dist/backend/backend/src/services/v3/ticket-review.service.js +456 -0
  49. package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -0
  50. package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
  51. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  52. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  53. package/dist/backend/backend/src/types/v2/request.types.d.ts +21 -1
  54. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  55. package/dist/backend/backend/src/types/v2/request.types.js +3 -2
  56. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  57. package/dist/backend/backend/src/types/v2/ticket.types.d.ts +71 -1
  58. package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  59. package/dist/backend/backend/src/types/v2/ticket.types.js +40 -0
  60. package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -1
  61. package/dist/backend/build-info.json +2 -2
  62. package/dist/cli/backend/src/constants.d.ts +30 -0
  63. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  64. package/dist/cli/backend/src/constants.js +30 -0
  65. package/dist/cli/backend/src/constants.js.map +1 -1
  66. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +2 -2
  67. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  68. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +2 -2
  69. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  70. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  71. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +9 -0
  72. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  73. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  74. package/dist/cli/backend/src/services/v3/request.service.js +28 -0
  75. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  76. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts +17 -0
  77. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  78. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +52 -5
  79. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  80. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +63 -1
  81. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  82. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +67 -1
  83. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  84. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +242 -0
  85. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -0
  86. package/dist/cli/backend/src/services/v3/ticket-review.service.js +456 -0
  87. package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -0
  88. package/dist/cli/backend/src/types/v2/index.d.ts +1 -1
  89. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  90. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  91. package/dist/cli/backend/src/types/v2/request.types.d.ts +21 -1
  92. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  93. package/dist/cli/backend/src/types/v2/request.types.js +3 -2
  94. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  95. package/dist/cli/backend/src/types/v2/ticket.types.d.ts +71 -1
  96. package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  97. package/dist/cli/backend/src/types/v2/ticket.types.js +40 -0
  98. package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -1
  99. package/frontend/dist/assets/{index-f7b99e81.js → index-07e338a9.js} +284 -284
  100. package/frontend/dist/assets/index-8327e63e.css +42 -0
  101. package/frontend/dist/index.html +2 -2
  102. package/package.json +1 -1
  103. 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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"}