crewly 1.20.216 → 1.20.218
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/project-tickets/SKILL.md +17 -1
- package/config/skills/agent/core/project-tickets/execute.sh +14 -4
- package/config/skills/agent/core/project-tickets/execute.test.sh +6 -0
- package/config/skills/agent/core/publish-app/SKILL.md +18 -11
- package/config/skills/agent/core/publish-app/execute.sh +1 -1
- package/dist/backend/backend/src/constants.d.ts +32 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +32 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +2 -2
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +4 -2
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +29 -3
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/models/Team.d.ts +17 -0
- package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
- package/dist/backend/backend/src/models/Team.js +28 -10
- package/dist/backend/backend/src/models/Team.js.map +1 -1
- package/dist/backend/backend/src/scripts/input-guard-classify.d.ts +24 -0
- package/dist/backend/backend/src/scripts/input-guard-classify.d.ts.map +1 -1
- package/dist/backend/backend/src/scripts/input-guard-classify.js +38 -5
- package/dist/backend/backend/src/scripts/input-guard-classify.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts +26 -0
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js +41 -0
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +67 -9
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +57 -10
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +2 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +9 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts +17 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js +21 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts +4 -3
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js +6 -4
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.d.ts +6 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.js +4 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts +23 -5
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +42 -21
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-file.js +20 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-file.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +7 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/input-circuit-breaker.d.ts +130 -0
- package/dist/backend/backend/src/services/session/input-circuit-breaker.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/input-circuit-breaker.js +180 -0
- package/dist/backend/backend/src/services/session/input-circuit-breaker.js.map +1 -0
- package/dist/backend/backend/src/services/session/input-guard-known-screens.d.ts +41 -0
- package/dist/backend/backend/src/services/session/input-guard-known-screens.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/input-guard-known-screens.js +168 -0
- package/dist/backend/backend/src/services/session/input-guard-known-screens.js.map +1 -0
- package/dist/backend/backend/src/services/session/input-ledger.d.ts +2 -1
- package/dist/backend/backend/src/services/session/input-ledger.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/input-ledger.js +5 -1
- package/dist/backend/backend/src/services/session/input-ledger.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts +52 -0
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +155 -3
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/session/tui-input-guard.d.ts +81 -1
- package/dist/backend/backend/src/services/session/tui-input-guard.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/tui-input-guard.js +238 -45
- package/dist/backend/backend/src/services/session/tui-input-guard.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +5 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.js +3 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts +21 -7
- package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-ledger.service.js +35 -17
- package/dist/backend/backend/src/services/spend/spend-ledger.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/input-guard-release-check.d.ts +10 -1
- package/dist/backend/backend/src/services/system/input-guard-release-check.d.ts.map +1 -1
- package/dist/backend/backend/src/services/system/input-guard-release-check.js +15 -2
- package/dist/backend/backend/src/services/system/input-guard-release-check.js.map +1 -1
- package/dist/backend/backend/src/services/tl-delegation/lead-share.d.ts +8 -1
- package/dist/backend/backend/src/services/tl-delegation/lead-share.d.ts.map +1 -1
- package/dist/backend/backend/src/services/tl-delegation/lead-share.js +11 -6
- package/dist/backend/backend/src/services/tl-delegation/lead-share.js.map +1 -1
- package/dist/backend/backend/src/types/project-ticket.types.d.ts +5 -0
- package/dist/backend/backend/src/types/project-ticket.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/project-ticket.types.js +1 -0
- package/dist/backend/backend/src/types/project-ticket.types.js.map +1 -1
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts +9 -0
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/ticket-autopilot.types.js +28 -0
- package/dist/backend/backend/src/types/ticket-autopilot.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +32 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +32 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/models/Team.d.ts +17 -0
- package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
- package/dist/cli/backend/src/models/Team.js +28 -10
- package/dist/cli/backend/src/models/Team.js.map +1 -1
- package/dist/cli/backend/src/scripts/input-guard-classify.d.ts +24 -0
- package/dist/cli/backend/src/scripts/input-guard-classify.d.ts.map +1 -1
- package/dist/cli/backend/src/scripts/input-guard-classify.js +38 -5
- package/dist/cli/backend/src/scripts/input-guard-classify.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts +26 -0
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js +41 -0
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +67 -9
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +57 -10
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +2 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +9 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/ticket-file.js +20 -1
- package/dist/cli/backend/src/services/project-tickets/ticket-file.js.map +1 -1
- package/dist/cli/backend/src/services/session/input-circuit-breaker.d.ts +130 -0
- package/dist/cli/backend/src/services/session/input-circuit-breaker.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/input-circuit-breaker.js +180 -0
- package/dist/cli/backend/src/services/session/input-circuit-breaker.js.map +1 -0
- package/dist/cli/backend/src/services/session/input-guard-known-screens.d.ts +41 -0
- package/dist/cli/backend/src/services/session/input-guard-known-screens.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/input-guard-known-screens.js +168 -0
- package/dist/cli/backend/src/services/session/input-guard-known-screens.js.map +1 -0
- package/dist/cli/backend/src/services/session/input-ledger.d.ts +2 -1
- package/dist/cli/backend/src/services/session/input-ledger.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/input-ledger.js +5 -1
- package/dist/cli/backend/src/services/session/input-ledger.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +52 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.js +155 -3
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/cli/backend/src/services/session/tui-input-guard.d.ts +81 -1
- package/dist/cli/backend/src/services/session/tui-input-guard.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/tui-input-guard.js +238 -45
- package/dist/cli/backend/src/services/session/tui-input-guard.js.map +1 -1
- package/dist/cli/backend/src/services/system/input-guard-release-check.d.ts +10 -1
- package/dist/cli/backend/src/services/system/input-guard-release-check.d.ts.map +1 -1
- package/dist/cli/backend/src/services/system/input-guard-release-check.js +15 -2
- package/dist/cli/backend/src/services/system/input-guard-release-check.js.map +1 -1
- package/dist/cli/backend/src/types/project-ticket.types.d.ts +5 -0
- package/dist/cli/backend/src/types/project-ticket.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/project-ticket.types.js +1 -0
- package/dist/cli/backend/src/types/project-ticket.types.js.map +1 -1
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts +9 -0
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/ticket-autopilot.types.js +28 -0
- package/dist/cli/backend/src/types/ticket-autopilot.types.js.map +1 -1
- package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/doctor.js +10 -3
- package/dist/cli/cli/src/commands/doctor.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,6 +14,19 @@ export declare class TeamModel implements Team {
|
|
|
14
14
|
paused?: TeamPauseState;
|
|
15
15
|
/** Where other agents file work while the team is paused */
|
|
16
16
|
issueRepo?: string;
|
|
17
|
+
worktrees?: Team['worktrees'];
|
|
18
|
+
archived?: boolean;
|
|
19
|
+
archivedAt?: string;
|
|
20
|
+
mission?: string;
|
|
21
|
+
budget?: Team['budget'];
|
|
22
|
+
qualityGate?: Team['qualityGate'];
|
|
23
|
+
recoveryPolicy?: Team['recoveryPolicy'];
|
|
24
|
+
ownerUserId?: string;
|
|
25
|
+
ownershipScope?: Team['ownershipScope'];
|
|
26
|
+
serviceContract?: Team['serviceContract'];
|
|
27
|
+
triggers?: Team['triggers'];
|
|
28
|
+
/** Fields this class does not know about (a newer version, a plugin): kept as stored, never dropped. */
|
|
29
|
+
[extra: string]: unknown;
|
|
17
30
|
createdAt: string;
|
|
18
31
|
updatedAt: string;
|
|
19
32
|
constructor(data: Partial<Team>);
|
|
@@ -23,6 +36,10 @@ export declare class TeamModel implements Team {
|
|
|
23
36
|
removeMember(memberId: string): void;
|
|
24
37
|
updateMember(memberId: string, updates: Partial<TeamMember>): void;
|
|
25
38
|
assignTicketsToMember(memberId: string, ticketIds: string[]): void;
|
|
39
|
+
/**
|
|
40
|
+
* Serialise every own field (declared or not), core fields first. Fields
|
|
41
|
+
* left undefined are omitted, as JSON.stringify would drop them anyway.
|
|
42
|
+
*/
|
|
26
43
|
toJSON(): Team;
|
|
27
44
|
static fromJSON(data: Team): TeamModel;
|
|
28
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Team.d.ts","sourceRoot":"","sources":["../../../../../backend/src/models/Team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIrE,qBAAa,SAAU,YAAW,IAAI;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Team.d.ts","sourceRoot":"","sources":["../../../../../backend/src/models/Team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIrE,qBAAa,SAAU,YAAW,IAAI;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxC,eAAe,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,wGAAwG;IACxG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IAoB/B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOxC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK5C,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKnC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAYlE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IASlE;;;OAGG;IACH,MAAM,IAAI,IAAI;IAgBd,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS;CAiEvC"}
|
|
@@ -15,9 +15,23 @@ export class TeamModel {
|
|
|
15
15
|
paused;
|
|
16
16
|
/** Where other agents file work while the team is paused */
|
|
17
17
|
issueRepo;
|
|
18
|
+
worktrees;
|
|
19
|
+
archived;
|
|
20
|
+
archivedAt;
|
|
21
|
+
mission;
|
|
22
|
+
budget;
|
|
23
|
+
qualityGate;
|
|
24
|
+
recoveryPolicy;
|
|
25
|
+
ownerUserId;
|
|
26
|
+
ownershipScope;
|
|
27
|
+
serviceContract;
|
|
28
|
+
triggers;
|
|
18
29
|
createdAt;
|
|
19
30
|
updatedAt;
|
|
20
31
|
constructor(data) {
|
|
32
|
+
// Keep every stored field (known or not) so a read -> save round trip never
|
|
33
|
+
// drops one (#1071); the named assignments below add the defaults.
|
|
34
|
+
Object.assign(this, data);
|
|
21
35
|
this.id = data.id || '';
|
|
22
36
|
this.name = data.name || '';
|
|
23
37
|
this.description = data.description;
|
|
@@ -70,23 +84,25 @@ export class TeamModel {
|
|
|
70
84
|
this.updatedAt = new Date().toISOString();
|
|
71
85
|
}
|
|
72
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Serialise every own field (declared or not), core fields first. Fields
|
|
89
|
+
* left undefined are omitted, as JSON.stringify would drop them anyway.
|
|
90
|
+
*/
|
|
73
91
|
toJSON() {
|
|
74
|
-
|
|
92
|
+
const out = {
|
|
75
93
|
id: this.id,
|
|
76
94
|
name: this.name,
|
|
77
95
|
description: this.description,
|
|
78
96
|
members: this.members,
|
|
79
97
|
projectIds: this.projectIds,
|
|
80
|
-
...(this.hierarchical !== undefined ? { hierarchical: this.hierarchical } : {}),
|
|
81
|
-
...(this.leaderId !== undefined ? { leaderId: this.leaderId } : {}),
|
|
82
|
-
...(this.leaderIds !== undefined ? { leaderIds: this.leaderIds } : {}),
|
|
83
|
-
...(this.templateId !== undefined ? { templateId: this.templateId } : {}),
|
|
84
|
-
...(this.parentTeamId !== undefined ? { parentTeamId: this.parentTeamId } : {}),
|
|
85
|
-
...(this.paused !== undefined ? { paused: this.paused } : {}),
|
|
86
|
-
...(this.issueRepo !== undefined ? { issueRepo: this.issueRepo } : {}),
|
|
87
|
-
createdAt: this.createdAt,
|
|
88
|
-
updatedAt: this.updatedAt,
|
|
89
98
|
};
|
|
99
|
+
for (const [key, value] of Object.entries(this)) {
|
|
100
|
+
if (value !== undefined && !(key in out))
|
|
101
|
+
out[key] = value;
|
|
102
|
+
}
|
|
103
|
+
out.createdAt = this.createdAt;
|
|
104
|
+
out.updatedAt = this.updatedAt;
|
|
105
|
+
return out;
|
|
90
106
|
}
|
|
91
107
|
static fromJSON(data) {
|
|
92
108
|
// Handle data migration from legacy format
|
|
@@ -98,6 +114,8 @@ export class TeamModel {
|
|
|
98
114
|
else {
|
|
99
115
|
migratedData.projectIds = data.projectIds || [];
|
|
100
116
|
}
|
|
117
|
+
// The legacy field is migrated away (it is not carried through now that unknown fields are kept).
|
|
118
|
+
delete migratedData.currentProject;
|
|
101
119
|
// Migration: store the team-lead rule's answer (utils/team.utils) —
|
|
102
120
|
// explicit leaderIds (or legacy leaderId), else the team-leader /
|
|
103
121
|
// tech-lead members — and keep leaderId = leaderIds[0]. Idempotent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Team.js","sourceRoot":"","sources":["../../../../../backend/src/models/Team.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Team.js","sourceRoot":"","sources":["../../../../../backend/src/models/Team.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* @module backend/scripts/input-guard-classify
|
|
12
12
|
*/
|
|
13
13
|
import { type TuiInputView } from '../services/session/tui-input-guard.js';
|
|
14
|
+
import { type KnownInputScreen } from '../services/session/input-guard-known-screens.js';
|
|
14
15
|
/** The message used as the probe: it is never in a box, so only empty / ours-by-marker pass. */
|
|
15
16
|
export declare const PROBE_MESSAGE = "__probe__";
|
|
16
17
|
/** One agent's live view, as the backend sends it. */
|
|
@@ -19,6 +20,17 @@ export interface InputGuardViewInput {
|
|
|
19
20
|
runtime: string;
|
|
20
21
|
/** Null when the backend has no styled capture for the session */
|
|
21
22
|
view: TuiInputView | null;
|
|
23
|
+
/**
|
|
24
|
+
* The harness's pastes into this session since the last outside input
|
|
25
|
+
* (input ledger), oldest first: a box holding only those is the
|
|
26
|
+
* harness's own (crewly#1028). Absent from older backends.
|
|
27
|
+
*/
|
|
28
|
+
ownPastes?: string[];
|
|
29
|
+
/** Exact markers the box showed for those pastes */
|
|
30
|
+
shownMarkers?: Array<{
|
|
31
|
+
marker: string;
|
|
32
|
+
message: string;
|
|
33
|
+
}>;
|
|
22
34
|
}
|
|
23
35
|
/** Verdict for one agent. */
|
|
24
36
|
export type InputGuardVerdict = 'ok' | 'warn' | 'fail' | 'skip';
|
|
@@ -33,6 +45,8 @@ export interface InputGuardClassification {
|
|
|
33
45
|
verdict: InputGuardVerdict;
|
|
34
46
|
/** Short English reason */
|
|
35
47
|
reason: string;
|
|
48
|
+
/** `fixture` for a known recorded screen (session is `fixture:<name>`); absent for a live agent */
|
|
49
|
+
kind?: 'fixture';
|
|
36
50
|
}
|
|
37
51
|
/**
|
|
38
52
|
* Classify live views with this build's guard.
|
|
@@ -41,4 +55,14 @@ export interface InputGuardClassification {
|
|
|
41
55
|
* @returns One classification per input, in order
|
|
42
56
|
*/
|
|
43
57
|
export declare function classifyViews(inputs: readonly InputGuardViewInput[]): InputGuardClassification[];
|
|
58
|
+
/**
|
|
59
|
+
* Classify the known recorded screens (crewly#1028 and the labelled-rule
|
|
60
|
+
* frames) with this build's guard. A screen read differently from its
|
|
61
|
+
* expectation is a `fail`: the build would misread a box it has met in
|
|
62
|
+
* production.
|
|
63
|
+
*
|
|
64
|
+
* @param screens - The screens (default: all known ones)
|
|
65
|
+
* @returns One row per screen, session `fixture:<name>`
|
|
66
|
+
*/
|
|
67
|
+
export declare function checkKnownScreens(screens?: readonly KnownInputScreen[]): InputGuardClassification[];
|
|
44
68
|
//# sourceMappingURL=input-guard-classify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-guard-classify.d.ts","sourceRoot":"","sources":["../../../../../backend/src/scripts/input-guard-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"input-guard-classify.d.ts","sourceRoot":"","sources":["../../../../../backend/src/scripts/input-guard-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAoD,KAAK,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC7H,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAE9G,gGAAgG;AAChG,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,oDAAoD;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED,6BAA6B;AAC7B,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhE,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,iBAAiB,CAAC;IAC3B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,mGAAmG;IACnG,IAAI,CAAC,EAAE,SAAS,CAAC;CACjB;AAmCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,GAAG,wBAAwB,EAAE,CAwChG;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,SAAS,gBAAgB,EAAwB,GAAG,wBAAwB,EAAE,CAgBxH"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* @module backend/scripts/input-guard-classify
|
|
12
12
|
*/
|
|
13
13
|
import { INPUT_GUARD_CHECK_CONSTANTS, RUNTIME_INPUT_READY_PATTERNS } from '../constants.js';
|
|
14
|
-
import {
|
|
14
|
+
import { classifyWithOwnPastes, screenShowsTurnInProgress } from '../services/session/tui-input-guard.js';
|
|
15
|
+
import { KNOWN_INPUT_SCREENS } from '../services/session/input-guard-known-screens.js';
|
|
15
16
|
/** The message used as the probe: it is never in a box, so only empty / ours-by-marker pass. */
|
|
16
17
|
export const PROBE_MESSAGE = '__probe__';
|
|
17
18
|
/**
|
|
@@ -55,7 +56,7 @@ function explainMissingBox(lines) {
|
|
|
55
56
|
*/
|
|
56
57
|
export function classifyViews(inputs) {
|
|
57
58
|
return inputs.map((input) => {
|
|
58
|
-
const { session, runtime, view } = input;
|
|
59
|
+
const { session, runtime, view, ownPastes, shownMarkers } = input;
|
|
59
60
|
if (!view) {
|
|
60
61
|
return { session, runtime, state: 'unknown', idle: true, verdict: 'skip', reason: 'no styled capture for this session (not checked)' };
|
|
61
62
|
}
|
|
@@ -64,13 +65,19 @@ export function classifyViews(inputs) {
|
|
|
64
65
|
return { session, runtime, state: 'unknown', idle: true, verdict: 'skip', reason: 'blank screen (session still starting?)' };
|
|
65
66
|
}
|
|
66
67
|
const idle = !screenShowsTurnInProgress(screen);
|
|
67
|
-
const reading =
|
|
68
|
+
const reading = classifyWithOwnPastes(view, PROBE_MESSAGE, 'before-write', ownPastes ?? [], shownMarkers ?? []);
|
|
68
69
|
const base = { session, runtime, state: reading.state, layout: reading.layout, idle };
|
|
69
70
|
switch (reading.state) {
|
|
70
71
|
case 'empty':
|
|
71
72
|
return { ...base, verdict: 'ok', reason: `empty ${reading.layout} input box` };
|
|
72
73
|
case 'ours':
|
|
73
|
-
return {
|
|
74
|
+
return {
|
|
75
|
+
...base,
|
|
76
|
+
verdict: 'ok',
|
|
77
|
+
reason: reading.ownPasteMarker && (reading.ownPasteMessages?.length ?? 0) > 0
|
|
78
|
+
? `${reading.layout} box holds the harness's own paste (${reading.ownPasteMessages?.length} message${reading.ownPasteMessages?.length === 1 ? '' : 's'}); the guard submits it once the agent is idle`
|
|
79
|
+
: `${reading.layout} box holds the harness's own paste`,
|
|
80
|
+
};
|
|
74
81
|
case 'foreign':
|
|
75
82
|
return {
|
|
76
83
|
...base,
|
|
@@ -90,6 +97,32 @@ export function classifyViews(inputs) {
|
|
|
90
97
|
}
|
|
91
98
|
});
|
|
92
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Classify the known recorded screens (crewly#1028 and the labelled-rule
|
|
102
|
+
* frames) with this build's guard. A screen read differently from its
|
|
103
|
+
* expectation is a `fail`: the build would misread a box it has met in
|
|
104
|
+
* production.
|
|
105
|
+
*
|
|
106
|
+
* @param screens - The screens (default: all known ones)
|
|
107
|
+
* @returns One row per screen, session `fixture:<name>`
|
|
108
|
+
*/
|
|
109
|
+
export function checkKnownScreens(screens = KNOWN_INPUT_SCREENS) {
|
|
110
|
+
return screens.map((screen) => {
|
|
111
|
+
const reading = classifyWithOwnPastes(screen.view, screen.message, screen.stage, screen.pastes);
|
|
112
|
+
const idle = !screenShowsTurnInProgress(screen.view.lines.join('\n'));
|
|
113
|
+
const ok = reading.state === screen.expect;
|
|
114
|
+
return {
|
|
115
|
+
session: `fixture:${screen.name}`,
|
|
116
|
+
runtime: screen.runtime,
|
|
117
|
+
state: reading.state,
|
|
118
|
+
layout: reading.layout,
|
|
119
|
+
idle,
|
|
120
|
+
kind: 'fixture',
|
|
121
|
+
verdict: ok ? 'ok' : 'fail',
|
|
122
|
+
reason: ok ? screen.why : `read as ${reading.state}, expected ${screen.expect}: ${screen.why}`,
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
}
|
|
93
126
|
/**
|
|
94
127
|
* Read all of stdin as text.
|
|
95
128
|
*
|
|
@@ -104,7 +137,7 @@ async function readStdin() {
|
|
|
104
137
|
/** stdin `{ sessions: InputGuardViewInput[] }` → stdout `{ results: InputGuardClassification[] }`. */
|
|
105
138
|
async function main() {
|
|
106
139
|
const parsed = JSON.parse(await readStdin());
|
|
107
|
-
process.stdout.write(JSON.stringify({ results: classifyViews(parsed.sessions ?? []) }));
|
|
140
|
+
process.stdout.write(JSON.stringify({ results: [...classifyViews(parsed.sessions ?? []), ...checkKnownScreens()] }));
|
|
108
141
|
}
|
|
109
142
|
// Run only when started as a script (also true for the compiled .js).
|
|
110
143
|
if (/input-guard-classify\.(js|ts)$/.test(process.argv[1] ?? '')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-guard-classify.js","sourceRoot":"","sources":["../../../../../backend/src/scripts/input-guard-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"input-guard-classify.js","sourceRoot":"","sources":["../../../../../backend/src/scripts/input-guard-classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,15 @@ export interface InputRefusal {
|
|
|
30
30
|
/** A blocked episode, as passed to the notifier. */
|
|
31
31
|
export interface InputBlockedNotice {
|
|
32
32
|
sessionName: string;
|
|
33
|
+
/**
|
|
34
|
+
* What blocks it: `foreign` / `unknown` (refusals), `busy`, `stuck`, or
|
|
35
|
+
* `circuit-open` (refused for so long that automatic redelivery was
|
|
36
|
+
* slowed to a probe now and then — crewly#1028); `blockedState` then
|
|
37
|
+
* says what the box held.
|
|
38
|
+
*/
|
|
33
39
|
state: string;
|
|
40
|
+
/** With `circuit-open`: the guard reading that kept refusing */
|
|
41
|
+
blockedState?: string;
|
|
34
42
|
/** How many characters of text not written by Crewly the box held */
|
|
35
43
|
inputLength: number;
|
|
36
44
|
refusals: number;
|
|
@@ -58,6 +66,8 @@ export declare class InputBlockedRetryService {
|
|
|
58
66
|
private readonly episodes;
|
|
59
67
|
/** Agents whose long busy hold was already reported (until a delivery) */
|
|
60
68
|
private readonly busyHoldNotified;
|
|
69
|
+
/** Agents whose blocked input was already reported via the circuit breaker (until a delivery) */
|
|
70
|
+
private readonly circuitNotified;
|
|
61
71
|
private readonly logger;
|
|
62
72
|
private readonly now;
|
|
63
73
|
/**
|
|
@@ -110,6 +120,22 @@ export declare class InputBlockedRetryService {
|
|
|
110
120
|
* @param forMs - How long it has been there
|
|
111
121
|
*/
|
|
112
122
|
noteStuckInput(sessionName: string, inputLength: number, forMs: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* The input circuit breaker opened for this agent: every delivery has
|
|
125
|
+
* been refused for a while and automatic redelivery is now only a probe
|
|
126
|
+
* now and then (crewly#1028). Tells the owner once per blocked episode —
|
|
127
|
+
* unless this episode was already reported, so one blocked box is one
|
|
128
|
+
* alert, not two.
|
|
129
|
+
*
|
|
130
|
+
* @param sessionName - The agent
|
|
131
|
+
* @param info - What the breaker saw
|
|
132
|
+
*/
|
|
133
|
+
noteCircuitOpen(sessionName: string, info: {
|
|
134
|
+
state: string;
|
|
135
|
+
inputLength: number;
|
|
136
|
+
refusals: number;
|
|
137
|
+
blockedForMs: number;
|
|
138
|
+
}): void;
|
|
113
139
|
/**
|
|
114
140
|
* A delivery to this agent went through: the episode is over.
|
|
115
141
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-blocked-retry.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/input-blocked-retry.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC5B,gHAAgH;IAChH,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,qBAAqB;IACrC,0CAA0C;IAC1C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,iCAAiC;IACjC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,8CAA8C;IAC9C,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,yCAAyC;IACzC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAaD;;GAEG;AACH,qBAAa,wBAAwB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyC;IAChE,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC;;OAEG;gBACS,GAAG,GAAE,MAAM,MAAiB;IAKxC;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,wBAAwB;IAK9C;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,IAAI;IAKlE;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAI1C;;;;;OAKG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAiB7D;;;;;;;;;OASG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAS3E;;;;;;;;OAQG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7E;;;;OAIG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"input-blocked-retry.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/input-blocked-retry.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC5B,gHAAgH;IAChH,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,qBAAqB;IACrC,0CAA0C;IAC1C,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,iCAAiC;IACjC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,8CAA8C;IAC9C,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,yCAAyC;IACzC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAaD;;GAEG;AACH,qBAAa,wBAAwB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyC;IAChE,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,iGAAiG;IACjG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC;;OAEG;gBACS,GAAG,GAAE,MAAM,MAAiB;IAKxC;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,wBAAwB;IAK9C;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,IAAI;IAKlE;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAI1C;;;;;OAKG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAiB7D;;;;;;;;;OASG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAS3E;;;;;;;;OAQG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7E;;;;;;;;;OASG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAuBhI;;;;OAIG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAUxC;;;;;OAKG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAYhB;;;;;OAKG;YACW,KAAK;IAqBnB;;;;;OAKG;YACW,WAAW;CAwBzB"}
|
|
@@ -29,6 +29,8 @@ export class InputBlockedRetryService {
|
|
|
29
29
|
episodes = new Map();
|
|
30
30
|
/** Agents whose long busy hold was already reported (until a delivery) */
|
|
31
31
|
busyHoldNotified = new Set();
|
|
32
|
+
/** Agents whose blocked input was already reported via the circuit breaker (until a delivery) */
|
|
33
|
+
circuitNotified = new Set();
|
|
32
34
|
logger;
|
|
33
35
|
now;
|
|
34
36
|
/**
|
|
@@ -122,6 +124,40 @@ export class InputBlockedRetryService {
|
|
|
122
124
|
.notify({ sessionName, state: 'stuck', inputLength, refusals: 0, blockedForMs: forMs, message: '' })
|
|
123
125
|
.catch(() => undefined);
|
|
124
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* The input circuit breaker opened for this agent: every delivery has
|
|
129
|
+
* been refused for a while and automatic redelivery is now only a probe
|
|
130
|
+
* now and then (crewly#1028). Tells the owner once per blocked episode —
|
|
131
|
+
* unless this episode was already reported, so one blocked box is one
|
|
132
|
+
* alert, not two.
|
|
133
|
+
*
|
|
134
|
+
* @param sessionName - The agent
|
|
135
|
+
* @param info - What the breaker saw
|
|
136
|
+
*/
|
|
137
|
+
noteCircuitOpen(sessionName, info) {
|
|
138
|
+
const ep = this.episodes.get(sessionName);
|
|
139
|
+
if (ep?.notified || this.circuitNotified.has(sessionName)) {
|
|
140
|
+
this.logger.warn('Agent input still blocked — automatic redelivery slowed (already reported)', { sessionName, refusals: info.refusals });
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (ep)
|
|
144
|
+
ep.notified = true;
|
|
145
|
+
this.circuitNotified.add(sessionName);
|
|
146
|
+
this.logger.error('Agent input blocked — automatic redelivery slowed, telling the owner', { sessionName, ...info });
|
|
147
|
+
if (!this.deps)
|
|
148
|
+
return;
|
|
149
|
+
void this.deps
|
|
150
|
+
.notify({
|
|
151
|
+
sessionName,
|
|
152
|
+
state: 'circuit-open',
|
|
153
|
+
blockedState: info.state,
|
|
154
|
+
inputLength: info.inputLength,
|
|
155
|
+
refusals: info.refusals,
|
|
156
|
+
blockedForMs: info.blockedForMs,
|
|
157
|
+
message: ep?.firstMessage ?? '',
|
|
158
|
+
})
|
|
159
|
+
.catch(() => undefined);
|
|
160
|
+
}
|
|
125
161
|
/**
|
|
126
162
|
* A delivery to this agent went through: the episode is over.
|
|
127
163
|
*
|
|
@@ -129,6 +165,7 @@ export class InputBlockedRetryService {
|
|
|
129
165
|
*/
|
|
130
166
|
noteDelivered(sessionName) {
|
|
131
167
|
this.busyHoldNotified.delete(sessionName);
|
|
168
|
+
this.circuitNotified.delete(sessionName);
|
|
132
169
|
const ep = this.episodes.get(sessionName);
|
|
133
170
|
if (!ep)
|
|
134
171
|
return;
|
|
@@ -210,6 +247,10 @@ export class InputBlockedRetryService {
|
|
|
210
247
|
async maybeNotify(sessionName, ep) {
|
|
211
248
|
if (ep.notified || !this.deps)
|
|
212
249
|
return;
|
|
250
|
+
if (this.circuitNotified.has(sessionName)) {
|
|
251
|
+
ep.notified = true;
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
213
254
|
const blockedForMs = this.now() - ep.firstAt;
|
|
214
255
|
if (blockedForMs < INPUT_BLOCKED_RETRY_CONSTANTS.NOTIFY_AFTER_MS && ep.refusals < INPUT_BLOCKED_RETRY_CONSTANTS.NOTIFY_AFTER_REFUSALS)
|
|
215
256
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-blocked-retry.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/input-blocked-retry.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"input-blocked-retry.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/input-blocked-retry.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -193,9 +193,61 @@ export interface EventTokens {
|
|
|
193
193
|
/** The cached part of {@link input} (cache reads + cache writes) */
|
|
194
194
|
cachedInput: number;
|
|
195
195
|
output: number;
|
|
196
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* {@link input} + {@link output}: the RAW total, for reporting. Cache reads
|
|
198
|
+
* count in full here, so it overstates what a long-lived agent costs ~10x.
|
|
199
|
+
*/
|
|
197
200
|
total: number;
|
|
201
|
+
/** Of {@link cachedInput}, the part written to the cache (Claude only) */
|
|
202
|
+
cacheWrite: number;
|
|
203
|
+
/**
|
|
204
|
+
* The COST-WEIGHTED total ("budget tokens"): what every budget, cap and
|
|
205
|
+
* boost compares. fresh input x w.input + output x w.output + cache writes
|
|
206
|
+
* x w.cacheWrite + cache reads x w.cacheRead, with the weights of the
|
|
207
|
+
* event's model family ({@link budgetWeightsFor}). Not rounded.
|
|
208
|
+
*/
|
|
209
|
+
budget: number;
|
|
198
210
|
}
|
|
211
|
+
/** How many budget tokens one token of each kind is worth. */
|
|
212
|
+
export interface BudgetWeights {
|
|
213
|
+
/** Fresh (uncached) input */
|
|
214
|
+
input: number;
|
|
215
|
+
/** Output */
|
|
216
|
+
output: number;
|
|
217
|
+
/** Tokens written to the prompt cache */
|
|
218
|
+
cacheWrite: number;
|
|
219
|
+
/** Tokens read from the prompt cache */
|
|
220
|
+
cacheRead: number;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The default budget weights, and the Claude ones: input x1 + output x1 +
|
|
224
|
+
* cache writes x1.25 + cache reads x0.1. They equal the cache/input price
|
|
225
|
+
* ratios of the Anthropic tiers in `model-pricing.ts` (Sonnet 0.3/3 and
|
|
226
|
+
* 3.75/3, Opus 1.5/15 and 18.75/15, Haiku 0.1/1 and 1.25/1). Output stays at
|
|
227
|
+
* x1 on purpose: the budget is a measure of context re-reading, not a USD
|
|
228
|
+
* figure, and an owner's existing numbers keep their meaning.
|
|
229
|
+
*/
|
|
230
|
+
export declare const DEFAULT_BUDGET_WEIGHTS: Readonly<BudgetWeights>;
|
|
231
|
+
/**
|
|
232
|
+
* The budget weights of a model family. Cache weights are the ratios of the
|
|
233
|
+
* family's own cache price to its input price, read from the pricing table
|
|
234
|
+
* (`model-pricing.ts`) so there is one source for them:
|
|
235
|
+
*
|
|
236
|
+
* | Family | cache read | cache write |
|
|
237
|
+
* |---|---|---|
|
|
238
|
+
* | Claude (opus / sonnet / haiku / fable) | 0.1 | 1.25 |
|
|
239
|
+
* | OpenAI gpt-5 / codex (Codex CLI) | 0.1 | 1 (no separate write price) |
|
|
240
|
+
* | DeepSeek (crewly-agent) | ~0.26 | 1 |
|
|
241
|
+
* | Gemini 2.5 pro / flash (Antigravity) | ~0.25 | 1 |
|
|
242
|
+
* | Unknown | {@link DEFAULT_BUDGET_WEIGHTS} |
|
|
243
|
+
*
|
|
244
|
+
* @param model - Model id as recorded
|
|
245
|
+
* @returns Weights; `input` and `output` are always 1
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* budgetWeightsFor('claude-sonnet-5-5') // { input: 1, output: 1, cacheWrite: 1.25, cacheRead: 0.1 }
|
|
249
|
+
*/
|
|
250
|
+
export declare function budgetWeightsFor(model: string): BudgetWeights;
|
|
199
251
|
/**
|
|
200
252
|
* Whether an event's `cachedInput` is part of its `input` (true) or comes
|
|
201
253
|
* on top of it (false).
|
|
@@ -210,13 +262,15 @@ export interface EventTokens {
|
|
|
210
262
|
*/
|
|
211
263
|
export declare function cachedIsPartOfInput(event: Pick<TokenUsageEvent, 'model' | 'runtime'>): boolean;
|
|
212
264
|
/**
|
|
213
|
-
* The token unit
|
|
265
|
+
* The token unit. Two figures from one function:
|
|
214
266
|
*
|
|
215
|
-
* total
|
|
267
|
+
* total = input tokens (fresh + cached) + output tokens (raw, for reports)
|
|
268
|
+
* budget = cost-weighted total (cache reads x0.1, writes x1.25 for Claude)
|
|
216
269
|
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
270
|
+
* Every cap, boost and budget GATE compares `budget`; `total` stays for
|
|
271
|
+
* reporting and is shown beside it. Whether an account is billed by
|
|
272
|
+
* subscription or by API makes no difference.
|
|
273
|
+
* specs/2026-10-02-spend-cap.md §Token unit.
|
|
220
274
|
*
|
|
221
275
|
* @param event - Usage event
|
|
222
276
|
* @returns Input (cached included), cached input, output, total
|
|
@@ -225,7 +279,9 @@ export declare function cachedIsPartOfInput(event: Pick<TokenUsageEvent, 'model'
|
|
|
225
279
|
* eventTokens({ model: 'claude-opus-5-5', input: 10, cachedInput: 990, output: 50 }).total // 1050
|
|
226
280
|
* eventTokens({ model: 'deepseek/deepseek-chat', input: 1000, cachedInput: 990, output: 50 }).total // 1050
|
|
227
281
|
*/
|
|
228
|
-
export declare function eventTokens(event: Pick<TokenUsageEvent, 'model' | 'runtime' | 'input' | 'output' | 'cachedInput'>
|
|
282
|
+
export declare function eventTokens(event: Pick<TokenUsageEvent, 'model' | 'runtime' | 'input' | 'output' | 'cachedInput'> & {
|
|
283
|
+
cacheWrite?: number;
|
|
284
|
+
}): EventTokens;
|
|
229
285
|
/**
|
|
230
286
|
* Set a cost override for a session. When present, getSummary() uses this
|
|
231
287
|
* instead of recalculating from events.
|
|
@@ -362,14 +418,16 @@ export declare class TokenUsageService {
|
|
|
362
418
|
* @param since - Only return events recorded at or after this time
|
|
363
419
|
* @param until - Only return events before this time (defaults to now)
|
|
364
420
|
* @returns Aggregated input tokens, output tokens, and cost in the window,
|
|
365
|
-
* plus the token-unit figures ({@link eventTokens}): `totalTokens` (
|
|
366
|
-
*
|
|
421
|
+
* plus the token-unit figures ({@link eventTokens}): `totalTokens` (raw,
|
|
422
|
+
* for reporting), `budgetTokens` (cost-weighted; what caps and budgets
|
|
423
|
+
* compare) and `cachedInputTokens`
|
|
367
424
|
*/
|
|
368
425
|
getSessionUsageSince(sessionName: string, since: Date, until?: Date): {
|
|
369
426
|
inputTokens: number;
|
|
370
427
|
outputTokens: number;
|
|
371
428
|
cost: number;
|
|
372
429
|
totalTokens: number;
|
|
430
|
+
budgetTokens: number;
|
|
373
431
|
cachedInputTokens: number;
|
|
374
432
|
};
|
|
375
433
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/token-usage.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"token-usage.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/token-usage.service.ts"],"names":[],"mappings":"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"}
|