crewly 1.20.274 → 1.20.276
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/roles/team-leader/tl-addon.md +7 -0
- package/config/skills/team-leader/propose-tier-change/SKILL.md +62 -0
- package/config/skills/team-leader/propose-tier-change/execute.sh +64 -0
- package/config/skills/team-leader/propose-tier-change/execute.test.sh +75 -0
- package/dist/backend/backend/src/constants.d.ts +46 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +53 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/request-types.d.ts +2 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team-model-tiers.controller.d.ts +41 -0
- package/dist/backend/backend/src/controllers/team/team-model-tiers.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/team/team-model-tiers.controller.js +112 -0
- package/dist/backend/backend/src/controllers/team/team-model-tiers.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +12 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.js +6 -0
- package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +5 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +16 -0
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/model-tiers.module.d.ts +34 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/model-tiers.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/model-tiers.module.js +54 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/model-tiers.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +2 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +13 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +2 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +1 -0
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/backend/backend/src/services/model-tiers/model-tier.service.d.ts +251 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.service.js +701 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.service.js.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.store.d.ts +82 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.store.js +80 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.store.js.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.wiring.d.ts +28 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.wiring.js +56 -0
- package/dist/backend/backend/src/services/model-tiers/model-tier.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/tier-quality.d.ts +102 -0
- package/dist/backend/backend/src/services/model-tiers/tier-quality.d.ts.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/tier-quality.js +116 -0
- package/dist/backend/backend/src/services/model-tiers/tier-quality.js.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/tier-usage-report.d.ts +86 -0
- package/dist/backend/backend/src/services/model-tiers/tier-usage-report.d.ts.map +1 -0
- package/dist/backend/backend/src/services/model-tiers/tier-usage-report.js +148 -0
- package/dist/backend/backend/src/services/model-tiers/tier-usage-report.js.map +1 -0
- package/dist/backend/backend/src/services/skill/skill-permission.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-permission.service.js +1 -0
- package/dist/backend/backend/src/services/skill/skill-permission.service.js.map +1 -1
- package/dist/backend/backend/src/types/decision.types.d.ts +41 -1
- package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +20 -0
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/utils/member-default-model.utils.d.ts +24 -8
- package/dist/backend/backend/src/utils/member-default-model.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/member-default-model.utils.js +33 -7
- package/dist/backend/backend/src/utils/member-default-model.utils.js.map +1 -1
- package/dist/backend/backend/src/utils/model-tier.utils.d.ts +68 -0
- package/dist/backend/backend/src/utils/model-tier.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/model-tier.utils.js +111 -0
- package/dist/backend/backend/src/utils/model-tier.utils.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +46 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +53 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js +16 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/model-tiers.module.d.ts +34 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/model-tiers.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/model-tiers.module.js +54 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/model-tiers.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +2 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +13 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +2 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js +1 -0
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/cli/backend/src/types/decision.types.d.ts +41 -1
- package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +20 -0
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/utils/member-default-model.utils.d.ts +24 -8
- package/dist/cli/backend/src/utils/member-default-model.utils.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/member-default-model.utils.js +33 -7
- package/dist/cli/backend/src/utils/member-default-model.utils.js.map +1 -1
- package/dist/cli/backend/src/utils/model-tier.utils.d.ts +68 -0
- package/dist/cli/backend/src/utils/model-tier.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/model-tier.utils.js +111 -0
- package/dist/cli/backend/src/utils/model-tier.utils.js.map +1 -0
- package/frontend/dist/assets/{index-7e5ebf78.js → index-368419df.js} +266 -266
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-tier.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/model-tiers/model-tier.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model-tier review state per team (crewly#1173): when the lead last
|
|
3
|
+
* reviewed, the proposal it is drafting, the open owner card, and the tier
|
|
4
|
+
* changes the owner applied (watched by the quality guard).
|
|
5
|
+
*
|
|
6
|
+
* One JSON file under CREWLY_HOME, written atomically; every change goes
|
|
7
|
+
* through {@link ModelTierStore.update}, serialised in-process.
|
|
8
|
+
*
|
|
9
|
+
* @module services/model-tiers/model-tier.store
|
|
10
|
+
*/
|
|
11
|
+
import type { TierChangeEntry } from '../../types/decision.types.js';
|
|
12
|
+
import type { QualityStats } from './tier-quality.js';
|
|
13
|
+
/** A proposal the lead is putting together (not yet sent to the owner). */
|
|
14
|
+
export interface TierDraft {
|
|
15
|
+
reviewId: string;
|
|
16
|
+
askerSession: string;
|
|
17
|
+
startedAt: string;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
changes: TierChangeEntry[];
|
|
20
|
+
routing: string[];
|
|
21
|
+
}
|
|
22
|
+
/** A change the owner applied, and what the quality guard found. */
|
|
23
|
+
export interface AppliedTierChange extends TierChangeEntry {
|
|
24
|
+
appliedAt: string;
|
|
25
|
+
decisionId: string;
|
|
26
|
+
/** Send-back stats over the member's last settled items before the change */
|
|
27
|
+
baseline: QualityStats;
|
|
28
|
+
/**
|
|
29
|
+
* `watching` — a lowered member, not judged yet; `ok` — judged, no worse;
|
|
30
|
+
* `revert_proposed` — worse, a revert card went to the owner; `expired` —
|
|
31
|
+
* too few items within the watch window; `not_watched` — raised or same rank.
|
|
32
|
+
*/
|
|
33
|
+
guard: 'watching' | 'ok' | 'revert_proposed' | 'expired' | 'not_watched';
|
|
34
|
+
guardDecisionId?: string;
|
|
35
|
+
guardCheckedAt?: string;
|
|
36
|
+
guardAfter?: QualityStats;
|
|
37
|
+
}
|
|
38
|
+
/** Review state of one team. */
|
|
39
|
+
export interface TeamTierState {
|
|
40
|
+
lastReviewAt?: string;
|
|
41
|
+
lastReviewTrigger?: 'weekly' | 'on_demand';
|
|
42
|
+
draft?: TierDraft;
|
|
43
|
+
/** The owner card of the last submitted proposal, while open */
|
|
44
|
+
openDecisionId?: string;
|
|
45
|
+
applied: AppliedTierChange[];
|
|
46
|
+
}
|
|
47
|
+
/** File-backed store. */
|
|
48
|
+
export declare class ModelTierStore {
|
|
49
|
+
private readonly filePath;
|
|
50
|
+
private chain;
|
|
51
|
+
constructor(filePath: string);
|
|
52
|
+
/**
|
|
53
|
+
* Store under a Crewly home.
|
|
54
|
+
*
|
|
55
|
+
* @param crewlyHome - CREWLY_HOME
|
|
56
|
+
* @returns Store
|
|
57
|
+
*/
|
|
58
|
+
static inHome(crewlyHome: string): ModelTierStore;
|
|
59
|
+
/**
|
|
60
|
+
* One team's state (empty state when none).
|
|
61
|
+
*
|
|
62
|
+
* @param teamId - Team id
|
|
63
|
+
* @returns State
|
|
64
|
+
*/
|
|
65
|
+
get(teamId: string): Promise<TeamTierState>;
|
|
66
|
+
/**
|
|
67
|
+
* Every team's state.
|
|
68
|
+
*
|
|
69
|
+
* @returns Map of team id → state
|
|
70
|
+
*/
|
|
71
|
+
all(): Promise<Record<string, TeamTierState>>;
|
|
72
|
+
/**
|
|
73
|
+
* Change one team's state (serialised; the file is rewritten atomically).
|
|
74
|
+
*
|
|
75
|
+
* @param teamId - Team id
|
|
76
|
+
* @param mutate - Returns the new state (may mutate and return the given one)
|
|
77
|
+
* @returns The new state
|
|
78
|
+
*/
|
|
79
|
+
update(teamId: string, mutate: (s: TeamTierState) => TeamTierState): Promise<TeamTierState>;
|
|
80
|
+
private load;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=model-tier.store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-tier.store.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/model-tiers/model-tier.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,oEAAoE;AACpE,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,EAAE,YAAY,CAAC;IACvB;;;;OAIG;IACH,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,CAAC;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED,gCAAgC;AAChC,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC3C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAWD,yBAAyB;AACzB,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,KAAK,CAAuC;gBAEvB,QAAQ,EAAE,MAAM;IAE7C;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc;IAIjD;;;;;OAKG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAKjD;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAInD;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YAc7E,IAAI;CAOnB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model-tier review state per team (crewly#1173): when the lead last
|
|
3
|
+
* reviewed, the proposal it is drafting, the open owner card, and the tier
|
|
4
|
+
* changes the owner applied (watched by the quality guard).
|
|
5
|
+
*
|
|
6
|
+
* One JSON file under CREWLY_HOME, written atomically; every change goes
|
|
7
|
+
* through {@link ModelTierStore.update}, serialised in-process.
|
|
8
|
+
*
|
|
9
|
+
* @module services/model-tiers/model-tier.store
|
|
10
|
+
*/
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
import { promises as fs } from 'fs';
|
|
13
|
+
import { MODEL_TIER_CONSTANTS } from '../../constants.js';
|
|
14
|
+
import { atomicWriteFile, readJsonStore } from '../../utils/file-io.utils.js';
|
|
15
|
+
/** Applied changes kept per team (oldest dropped). */
|
|
16
|
+
const MAX_APPLIED = 100;
|
|
17
|
+
/** File-backed store. */
|
|
18
|
+
export class ModelTierStore {
|
|
19
|
+
filePath;
|
|
20
|
+
chain = Promise.resolve();
|
|
21
|
+
constructor(filePath) {
|
|
22
|
+
this.filePath = filePath;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Store under a Crewly home.
|
|
26
|
+
*
|
|
27
|
+
* @param crewlyHome - CREWLY_HOME
|
|
28
|
+
* @returns Store
|
|
29
|
+
*/
|
|
30
|
+
static inHome(crewlyHome) {
|
|
31
|
+
return new ModelTierStore(path.join(crewlyHome, MODEL_TIER_CONSTANTS.STORE_FILE));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One team's state (empty state when none).
|
|
35
|
+
*
|
|
36
|
+
* @param teamId - Team id
|
|
37
|
+
* @returns State
|
|
38
|
+
*/
|
|
39
|
+
async get(teamId) {
|
|
40
|
+
const data = await this.load();
|
|
41
|
+
return data.teams[teamId] ?? { applied: [] };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Every team's state.
|
|
45
|
+
*
|
|
46
|
+
* @returns Map of team id → state
|
|
47
|
+
*/
|
|
48
|
+
async all() {
|
|
49
|
+
return (await this.load()).teams;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Change one team's state (serialised; the file is rewritten atomically).
|
|
53
|
+
*
|
|
54
|
+
* @param teamId - Team id
|
|
55
|
+
* @param mutate - Returns the new state (may mutate and return the given one)
|
|
56
|
+
* @returns The new state
|
|
57
|
+
*/
|
|
58
|
+
update(teamId, mutate) {
|
|
59
|
+
const run = this.chain.then(async () => {
|
|
60
|
+
const data = await this.load();
|
|
61
|
+
const next = mutate(data.teams[teamId] ?? { applied: [] });
|
|
62
|
+
next.applied = next.applied.slice(-MAX_APPLIED);
|
|
63
|
+
data.teams[teamId] = next;
|
|
64
|
+
await fs.mkdir(path.dirname(this.filePath), { recursive: true });
|
|
65
|
+
await atomicWriteFile(this.filePath, JSON.stringify(data, null, 2));
|
|
66
|
+
return next;
|
|
67
|
+
});
|
|
68
|
+
this.chain = run.catch(() => undefined);
|
|
69
|
+
return run;
|
|
70
|
+
}
|
|
71
|
+
async load() {
|
|
72
|
+
const read = await readJsonStore(this.filePath, {
|
|
73
|
+
validate: (d) => (d && typeof d === 'object' && typeof d.teams === 'object' ? null : 'not a model-tier store'),
|
|
74
|
+
});
|
|
75
|
+
if (read.status === 'ok')
|
|
76
|
+
return { version: 1, teams: read.data.teams ?? {} };
|
|
77
|
+
return { version: 1, teams: {} };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=model-tier.store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-tier.store.js","sourceRoot":"","sources":["../../../../../../backend/src/services/model-tiers/model-tier.store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model tiers — the real dependencies (crewly#1173). Called once decision
|
|
3
|
+
* cards run: builds the service, registers the `model_tier_change` card
|
|
4
|
+
* handler, and starts the hourly tick.
|
|
5
|
+
*
|
|
6
|
+
* @module services/model-tiers/model-tier.wiring
|
|
7
|
+
*/
|
|
8
|
+
import { type DecisionKindHandler } from '../decisions/decision.service.js';
|
|
9
|
+
import { ModelTierService, type TierDecisions } from './model-tier.service.js';
|
|
10
|
+
/** What the composition root provides. */
|
|
11
|
+
export interface ModelTierWiringInput {
|
|
12
|
+
/** Package root (the composition root's findPackageRoot(__dirname)) */
|
|
13
|
+
packageRoot?: string;
|
|
14
|
+
crewlyHome: string;
|
|
15
|
+
decisions: TierDecisions;
|
|
16
|
+
/** Deliver text to an agent (wakes a stopped one) */
|
|
17
|
+
sendToAgent: (session: string, text: string) => Promise<boolean>;
|
|
18
|
+
/** Registers the kind handler (DecisionService.registerKindHandler) */
|
|
19
|
+
register?: (kind: 'model_tier_change', handler: DecisionKindHandler | null) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build, register and start the model-tier service.
|
|
23
|
+
*
|
|
24
|
+
* @param input - Composition-root hooks
|
|
25
|
+
* @returns The running service
|
|
26
|
+
*/
|
|
27
|
+
export declare function startModelTiers(input: ModelTierWiringInput): ModelTierService;
|
|
28
|
+
//# sourceMappingURL=model-tier.wiring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-tier.wiring.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/model-tiers/model-tier.wiring.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAI7F,OAAO,EAAE,gBAAgB,EAAuB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGpG,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;IACzB,qDAAqD;IACrD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;CACrF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CA4B7E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model tiers — the real dependencies (crewly#1173). Called once decision
|
|
3
|
+
* cards run: builds the service, registers the `model_tier_change` card
|
|
4
|
+
* handler, and starts the hourly tick.
|
|
5
|
+
*
|
|
6
|
+
* @module services/model-tiers/model-tier.wiring
|
|
7
|
+
*/
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { MODEL_TIER_CONSTANTS } from '../../constants.js';
|
|
10
|
+
import { REDIS_CONSTANTS } from '../../../../config/constants.js';
|
|
11
|
+
import { RedisCacheService } from '../cache/redis-cache.service.js';
|
|
12
|
+
import { findPackageRoot } from '../../utils/package-root.js';
|
|
13
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
14
|
+
import { StorageService } from '../core/storage.service.js';
|
|
15
|
+
import { DecisionService } from '../decisions/decision.service.js';
|
|
16
|
+
import { TokenUsageService } from '../monitoring/token-usage.service.js';
|
|
17
|
+
import { getSlackTeamChannelService } from '../slack/slack-team-channel.service.js';
|
|
18
|
+
import { TaskPoolService } from '../task-pool/task-pool.service.js';
|
|
19
|
+
import { ModelTierService, setModelTierService } from './model-tier.service.js';
|
|
20
|
+
import { ModelTierStore } from './model-tier.store.js';
|
|
21
|
+
/**
|
|
22
|
+
* Build, register and start the model-tier service.
|
|
23
|
+
*
|
|
24
|
+
* @param input - Composition-root hooks
|
|
25
|
+
* @returns The running service
|
|
26
|
+
*/
|
|
27
|
+
export function startModelTiers(input) {
|
|
28
|
+
const storage = StorageService.getInstance();
|
|
29
|
+
const usage = TokenUsageService.getInstance();
|
|
30
|
+
const service = new ModelTierService({
|
|
31
|
+
store: ModelTierStore.inHome(input.crewlyHome),
|
|
32
|
+
getTeams: () => storage.getTeams(),
|
|
33
|
+
saveTeam: async (team) => {
|
|
34
|
+
await storage.saveTeam(team);
|
|
35
|
+
// The cached team list would show the old tiers / toggle.
|
|
36
|
+
await RedisCacheService.getInstance().invalidate(REDIS_CONSTANTS.KEYS.TEAMS_LIST).catch(() => undefined);
|
|
37
|
+
},
|
|
38
|
+
forEachEvent: (visit, since) => usage.forEachEvent(visit, since),
|
|
39
|
+
workItems: () => TaskPoolService.getInstance().getAllItems(),
|
|
40
|
+
decisions: () => input.decisions,
|
|
41
|
+
deliverToAgent: input.sendToAgent,
|
|
42
|
+
teamChannelOf: async (teamId) => {
|
|
43
|
+
const mappings = (await getSlackTeamChannelService()?.listMappings().catch(() => [])) ?? [];
|
|
44
|
+
return mappings.find((m) => m.teamId === teamId)?.slackChannelId ?? null;
|
|
45
|
+
},
|
|
46
|
+
// `__dirname` does not exist in the ESM build (it crashed this wiring in
|
|
47
|
+
// 1.20.275); the composition root passes the package root it already knows.
|
|
48
|
+
tlSkillsPath: path.join(input.packageRoot ?? findPackageRoot(process.cwd()), 'config', 'skills', 'team-leader'),
|
|
49
|
+
logger: LoggerService.getInstance().createComponentLogger('ModelTiers'),
|
|
50
|
+
});
|
|
51
|
+
setModelTierService(service);
|
|
52
|
+
(input.register ?? ((kind, handler) => DecisionService.registerKindHandler(kind, handler)))(MODEL_TIER_CONSTANTS.DECISION_KIND, service);
|
|
53
|
+
service.start();
|
|
54
|
+
return service;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=model-tier.wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-tier.wiring.js","sourceRoot":"","sources":["../../../../../../backend/src/services/model-tiers/model-tier.wiring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quality signal for the model-tier guard (crewly#1173).
|
|
3
|
+
*
|
|
4
|
+
* After the owner moves a member to a lower tier, the guard compares how
|
|
5
|
+
* often the member's work is sent back (rejected by its reviewer, failed, or
|
|
6
|
+
* retried) over its next settled work items against the same rate before the
|
|
7
|
+
* change. Pure functions; the service feeds them the task pool.
|
|
8
|
+
*
|
|
9
|
+
* @module services/model-tiers/tier-quality
|
|
10
|
+
*/
|
|
11
|
+
import type { WorkItem } from '../../types/v2/work-item.types.js';
|
|
12
|
+
/** Send-back counts over a set of settled work items. */
|
|
13
|
+
export interface QualityStats {
|
|
14
|
+
/** Settled work items counted */
|
|
15
|
+
settled: number;
|
|
16
|
+
/** Of those, sent back: rejected, failed, or retried at least once */
|
|
17
|
+
sentBack: number;
|
|
18
|
+
/** sentBack / settled, or null with nothing settled */
|
|
19
|
+
rate: number | null;
|
|
20
|
+
}
|
|
21
|
+
/** The guard's verdict on one lowered member. */
|
|
22
|
+
export type GuardVerdict = 'wait' | 'ok' | 'worse';
|
|
23
|
+
/** The guard thresholds (defaults from MODEL_TIER_CONSTANTS). */
|
|
24
|
+
export interface GuardThresholds {
|
|
25
|
+
minItems: number;
|
|
26
|
+
minBad: number;
|
|
27
|
+
margin: number;
|
|
28
|
+
}
|
|
29
|
+
/** Default thresholds. */
|
|
30
|
+
export declare const DEFAULT_GUARD_THRESHOLDS: GuardThresholds;
|
|
31
|
+
/**
|
|
32
|
+
* When a work item settled.
|
|
33
|
+
*
|
|
34
|
+
* @param wi - Work item
|
|
35
|
+
* @returns Epoch ms
|
|
36
|
+
*/
|
|
37
|
+
export declare function settledAtMs(wi: Pick<WorkItem, 'completedAt' | 'statusChangedAt' | 'createdAt'>): number;
|
|
38
|
+
/**
|
|
39
|
+
* Whether a settled item was sent back.
|
|
40
|
+
*
|
|
41
|
+
* @param wi - Work item
|
|
42
|
+
* @returns True for rejected / failed / retried
|
|
43
|
+
*/
|
|
44
|
+
export declare function isSentBack(wi: Pick<WorkItem, 'status' | 'retryCount'>): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* The settled work items of a member, oldest first.
|
|
47
|
+
*
|
|
48
|
+
* @param items - All work items
|
|
49
|
+
* @param sessions - The member's session names / agent ids
|
|
50
|
+
* @returns Settled items targeted at the member
|
|
51
|
+
*/
|
|
52
|
+
export declare function settledItemsOf(items: readonly WorkItem[], sessions: readonly string[]): WorkItem[];
|
|
53
|
+
/**
|
|
54
|
+
* Send-back counts of a list of items.
|
|
55
|
+
*
|
|
56
|
+
* @param items - Settled items
|
|
57
|
+
* @returns Stats
|
|
58
|
+
*/
|
|
59
|
+
export declare function statsOf(items: readonly WorkItem[]): QualityStats;
|
|
60
|
+
/**
|
|
61
|
+
* Baseline before a change: the last `limit` settled items before `atMs`.
|
|
62
|
+
*
|
|
63
|
+
* @param items - All work items
|
|
64
|
+
* @param sessions - The member's keys
|
|
65
|
+
* @param atMs - When the change applied
|
|
66
|
+
* @param limit - How many items
|
|
67
|
+
* @returns Stats
|
|
68
|
+
*/
|
|
69
|
+
export declare function baselineBefore(items: readonly WorkItem[], sessions: readonly string[], atMs: number, limit?: number): QualityStats;
|
|
70
|
+
/**
|
|
71
|
+
* Stats after a change: every settled item after `atMs`.
|
|
72
|
+
*
|
|
73
|
+
* @param items - All work items
|
|
74
|
+
* @param sessions - The member's keys
|
|
75
|
+
* @param atMs - When the change applied
|
|
76
|
+
* @returns Stats
|
|
77
|
+
*/
|
|
78
|
+
export declare function statsAfter(items: readonly WorkItem[], sessions: readonly string[], atMs: number): QualityStats;
|
|
79
|
+
/**
|
|
80
|
+
* Judge a lowered member: `wait` until enough items settled; `worse` when the
|
|
81
|
+
* send-back rate rose by more than the margin (and enough items were sent
|
|
82
|
+
* back); else `ok`.
|
|
83
|
+
*
|
|
84
|
+
* @param baseline - Before the change
|
|
85
|
+
* @param after - Since the change
|
|
86
|
+
* @param t - Thresholds
|
|
87
|
+
* @returns Verdict
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* judgeGuard({ settled: 10, sentBack: 1, rate: 0.1 }, { settled: 5, sentBack: 3, rate: 0.6 }); // 'worse'
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export declare function judgeGuard(baseline: QualityStats, after: QualityStats, t?: GuardThresholds): GuardVerdict;
|
|
95
|
+
/**
|
|
96
|
+
* "3 of 5 sent back" / "none settled".
|
|
97
|
+
*
|
|
98
|
+
* @param s - Stats
|
|
99
|
+
* @returns Short text
|
|
100
|
+
*/
|
|
101
|
+
export declare function describeStats(s: QualityStats): string;
|
|
102
|
+
//# sourceMappingURL=tier-quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-quality.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/model-tiers/tier-quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAKlE,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;AAEnD,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0BAA0B;AAC1B,eAAO,MAAM,wBAAwB,EAAE,eAItC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,iBAAiB,GAAG,WAAW,CAAC,GAAG,MAAM,CAEvG;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,GAAG,OAAO,CAE/E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAKlG;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,YAAY,CAGhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAkD,GAAG,YAAY,CAG7K;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAE9G;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,GAAE,eAA0C,GAAG,YAAY,CAInI;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quality signal for the model-tier guard (crewly#1173).
|
|
3
|
+
*
|
|
4
|
+
* After the owner moves a member to a lower tier, the guard compares how
|
|
5
|
+
* often the member's work is sent back (rejected by its reviewer, failed, or
|
|
6
|
+
* retried) over its next settled work items against the same rate before the
|
|
7
|
+
* change. Pure functions; the service feeds them the task pool.
|
|
8
|
+
*
|
|
9
|
+
* @module services/model-tiers/tier-quality
|
|
10
|
+
*/
|
|
11
|
+
import { MODEL_TIER_CONSTANTS } from '../../constants.js';
|
|
12
|
+
/** Work-item statuses that end an item's run (judged or failed). */
|
|
13
|
+
const SETTLED = new Set(['done', 'verified', 'rejected', 'failed']);
|
|
14
|
+
/** Default thresholds. */
|
|
15
|
+
export const DEFAULT_GUARD_THRESHOLDS = {
|
|
16
|
+
minItems: MODEL_TIER_CONSTANTS.GUARD_MIN_ITEMS,
|
|
17
|
+
minBad: MODEL_TIER_CONSTANTS.GUARD_MIN_BAD,
|
|
18
|
+
margin: MODEL_TIER_CONSTANTS.GUARD_WORSE_MARGIN,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* When a work item settled.
|
|
22
|
+
*
|
|
23
|
+
* @param wi - Work item
|
|
24
|
+
* @returns Epoch ms
|
|
25
|
+
*/
|
|
26
|
+
export function settledAtMs(wi) {
|
|
27
|
+
return Date.parse(wi.completedAt ?? wi.statusChangedAt ?? wi.createdAt) || 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Whether a settled item was sent back.
|
|
31
|
+
*
|
|
32
|
+
* @param wi - Work item
|
|
33
|
+
* @returns True for rejected / failed / retried
|
|
34
|
+
*/
|
|
35
|
+
export function isSentBack(wi) {
|
|
36
|
+
return wi.status === 'rejected' || wi.status === 'failed' || (wi.retryCount ?? 0) > 0;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The settled work items of a member, oldest first.
|
|
40
|
+
*
|
|
41
|
+
* @param items - All work items
|
|
42
|
+
* @param sessions - The member's session names / agent ids
|
|
43
|
+
* @returns Settled items targeted at the member
|
|
44
|
+
*/
|
|
45
|
+
export function settledItemsOf(items, sessions) {
|
|
46
|
+
const keys = new Set(sessions.filter(Boolean));
|
|
47
|
+
return items
|
|
48
|
+
.filter((wi) => !!wi.target && keys.has(wi.target) && SETTLED.has(wi.status))
|
|
49
|
+
.sort((a, b) => settledAtMs(a) - settledAtMs(b));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Send-back counts of a list of items.
|
|
53
|
+
*
|
|
54
|
+
* @param items - Settled items
|
|
55
|
+
* @returns Stats
|
|
56
|
+
*/
|
|
57
|
+
export function statsOf(items) {
|
|
58
|
+
const sentBack = items.filter(isSentBack).length;
|
|
59
|
+
return { settled: items.length, sentBack, rate: items.length ? sentBack / items.length : null };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Baseline before a change: the last `limit` settled items before `atMs`.
|
|
63
|
+
*
|
|
64
|
+
* @param items - All work items
|
|
65
|
+
* @param sessions - The member's keys
|
|
66
|
+
* @param atMs - When the change applied
|
|
67
|
+
* @param limit - How many items
|
|
68
|
+
* @returns Stats
|
|
69
|
+
*/
|
|
70
|
+
export function baselineBefore(items, sessions, atMs, limit = MODEL_TIER_CONSTANTS.GUARD_BASELINE_ITEMS) {
|
|
71
|
+
const before = settledItemsOf(items, sessions).filter((wi) => settledAtMs(wi) < atMs);
|
|
72
|
+
return statsOf(before.slice(-limit));
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Stats after a change: every settled item after `atMs`.
|
|
76
|
+
*
|
|
77
|
+
* @param items - All work items
|
|
78
|
+
* @param sessions - The member's keys
|
|
79
|
+
* @param atMs - When the change applied
|
|
80
|
+
* @returns Stats
|
|
81
|
+
*/
|
|
82
|
+
export function statsAfter(items, sessions, atMs) {
|
|
83
|
+
return statsOf(settledItemsOf(items, sessions).filter((wi) => settledAtMs(wi) >= atMs));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Judge a lowered member: `wait` until enough items settled; `worse` when the
|
|
87
|
+
* send-back rate rose by more than the margin (and enough items were sent
|
|
88
|
+
* back); else `ok`.
|
|
89
|
+
*
|
|
90
|
+
* @param baseline - Before the change
|
|
91
|
+
* @param after - Since the change
|
|
92
|
+
* @param t - Thresholds
|
|
93
|
+
* @returns Verdict
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* judgeGuard({ settled: 10, sentBack: 1, rate: 0.1 }, { settled: 5, sentBack: 3, rate: 0.6 }); // 'worse'
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export function judgeGuard(baseline, after, t = DEFAULT_GUARD_THRESHOLDS) {
|
|
101
|
+
if (after.settled < t.minItems || after.rate === null)
|
|
102
|
+
return 'wait';
|
|
103
|
+
if (after.sentBack >= t.minBad && after.rate > (baseline.rate ?? 0) + t.margin)
|
|
104
|
+
return 'worse';
|
|
105
|
+
return 'ok';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* "3 of 5 sent back" / "none settled".
|
|
109
|
+
*
|
|
110
|
+
* @param s - Stats
|
|
111
|
+
* @returns Short text
|
|
112
|
+
*/
|
|
113
|
+
export function describeStats(s) {
|
|
114
|
+
return s.settled ? `${s.sentBack} of ${s.settled} sent back` : 'none settled';
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=tier-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-quality.js","sourceRoot":"","sources":["../../../../../../backend/src/services/model-tiers/tier-quality.ts"],"names":[],"mappings":"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"}
|