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.
- package/config/skills/agent/core/complete-task/SKILL.md +11 -0
- package/config/skills/agent/core/complete-task/execute.sh +16 -1
- package/config/skills/agent/core/complete-task/execute.test.sh +19 -0
- package/config/skills/agent/core/ticket-check/SKILL.md +62 -0
- package/config/skills/agent/core/ticket-check/execute.sh +71 -0
- package/config/skills/agent/core/ticket-check/execute.test.sh +69 -0
- package/dist/backend/backend/src/constants.d.ts +36 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +36 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +42 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +185 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +7 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +16 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +84 -3
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/cache/redis-cache.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cache/redis-cache.service.js +8 -1
- package/dist/backend/backend/src/services/cache/redis-cache.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +24 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +83 -3
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +6 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +2 -2
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +2 -2
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/version-check.service.d.ts +7 -1
- package/dist/backend/backend/src/services/system/version-check.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/system/version-check.service.js +10 -3
- package/dist/backend/backend/src/services/system/version-check.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +35 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +88 -6
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.d.ts +92 -0
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.js +168 -0
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.js.map +1 -0
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +24 -12
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts +8 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +40 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +9 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.d.ts +10 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +51 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts +17 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +52 -5
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +63 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js +67 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +242 -0
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-review.service.js +456 -0
- package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -0
- package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +21 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js +3 -2
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts +71 -1
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.js +40 -0
- package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +36 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +36 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +2 -2
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +2 -2
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +35 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +88 -6
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.d.ts +92 -0
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.d.ts.map +1 -0
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.js +168 -0
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +9 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.d.ts +10 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.js +51 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts +17 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +52 -5
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +63 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js +67 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +242 -0
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-review.service.js +456 -0
- package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -0
- package/dist/cli/backend/src/types/v2/index.d.ts +1 -1
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/index.js.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts +21 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.js +3 -2
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts +71 -1
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.js +40 -0
- package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -1
- package/frontend/dist/assets/{index-f7b99e81.js → index-07e338a9.js} +284 -284
- package/frontend/dist/assets/index-8327e63e.css +42 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- 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
|
-
/**
|
|
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":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAMlD,oCAAoC;AACpC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtD,2CAA2C;AAC3C,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAA0C,CAAC;AAEzF,+BAA+B;AAC/B,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,UAAU,GACV,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;AAEb,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,0FAA0F;IAC1F,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,
|
|
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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAUtD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ticket.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/ticket.types.ts"],"names":[],"mappings":"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"}
|