crewly 1.8.12 → 1.9.0
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/orchestrator/prompt.md +53 -0
- package/config/roles/product-manager/prompt.md +40 -0
- package/config/roles/team-leader/prompt.md +33 -0
- package/config/skills/orchestrator/decompose-okr/SKILL.md +107 -0
- package/config/skills/orchestrator/decompose-okr/execute.sh +142 -0
- package/config/skills/registry.json +52 -6
- package/dist/backend/backend/src/controllers/mission/kr.controller.d.ts +8 -0
- package/dist/backend/backend/src/controllers/mission/kr.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/mission/kr.controller.js +17 -0
- package/dist/backend/backend/src/controllers/mission/kr.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +198 -26
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
- package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts +92 -1
- package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/kr-tracking.service.js +169 -1
- package/dist/backend/backend/src/services/v3/kr-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-period.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-period.service.js +7 -1
- package/dist/backend/backend/src/services/v3/mission-period.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts +217 -0
- package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/okr-cascade.service.js +417 -0
- package/dist/backend/backend/src/services/v3/okr-cascade.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/okr-review.service.d.ts +11 -0
- package/dist/backend/backend/src/services/v3/okr-review.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/okr-review.service.js +50 -0
- package/dist/backend/backend/src/services/v3/okr-review.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +91 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +180 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts +4 -4
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js +2 -2
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/key-result.types.d.ts +84 -0
- package/dist/backend/backend/src/types/v2/key-result.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/key-result.types.js +73 -3
- package/dist/backend/backend/src/types/v2/key-result.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.d.ts +235 -0
- package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.js +230 -0
- package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module types/v2/key-result
|
|
9
9
|
*/
|
|
10
|
+
import type { MissionLevel } from './mission.types.js';
|
|
10
11
|
/** How the KR value is interpreted. */
|
|
11
12
|
export type KRMetricType = 'number' | 'percentage' | 'boolean' | 'currency';
|
|
12
13
|
/** All valid KR metric types. */
|
|
@@ -113,6 +114,31 @@ export interface MissionOKRSummary {
|
|
|
113
114
|
/** Recommendation for next action */
|
|
114
115
|
recommendation: OKRRecommendation;
|
|
115
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Cross-level (cascade) roll-up of OKR progress for a Mission and its approved
|
|
119
|
+
* children, walking the `Mission.parentMissionId` tree (company → team →
|
|
120
|
+
* project).
|
|
121
|
+
*
|
|
122
|
+
* Extends {@link MissionOKRSummary} with the recursive subtree so a parent's
|
|
123
|
+
* progress reflects its children's progress. Only approved children are
|
|
124
|
+
* included (draft/pending_approval/rejected children are excluded from the
|
|
125
|
+
* roll-up per spec §4.2).
|
|
126
|
+
*/
|
|
127
|
+
export interface CascadeOKRSummary extends MissionOKRSummary {
|
|
128
|
+
/** Cascade tier of this mission within company → team → project. */
|
|
129
|
+
level: MissionLevel;
|
|
130
|
+
/** Number of approved children that contributed to the roll-up. */
|
|
131
|
+
childMissionCount: number;
|
|
132
|
+
/**
|
|
133
|
+
* Rolled-up progress (0-100). Equal-weight average of this mission's own
|
|
134
|
+
* `overallProgress` and each approved child's `rolledUpProgress`. For a leaf
|
|
135
|
+
* (no approved children) this equals `overallProgress`. See
|
|
136
|
+
* {@link computeRolledUpProgress}.
|
|
137
|
+
*/
|
|
138
|
+
rolledUpProgress: number;
|
|
139
|
+
/** Recursive roll-up summaries for each approved child mission. */
|
|
140
|
+
children: CascadeOKRSummary[];
|
|
141
|
+
}
|
|
116
142
|
/**
|
|
117
143
|
* Result of an OKR review cycle.
|
|
118
144
|
*/
|
|
@@ -170,6 +196,18 @@ export declare const MAX_MEASUREMENT_HISTORY = 50;
|
|
|
170
196
|
* @returns Progress as 0-100 (clamped)
|
|
171
197
|
*/
|
|
172
198
|
export declare function computeKRProgress(kr: Pick<KeyResult, 'baseline' | 'target' | 'current'>): number;
|
|
199
|
+
/**
|
|
200
|
+
* Progress thresholds (0-100) that delimit the KR status bands. A progress at or
|
|
201
|
+
* above a threshold maps to the associated status (checked high → low).
|
|
202
|
+
*/
|
|
203
|
+
export declare const KR_STATUS_THRESHOLDS: {
|
|
204
|
+
/** At/above this progress the KR is fully achieved. */
|
|
205
|
+
readonly ACHIEVED: 100;
|
|
206
|
+
/** At/above this progress the KR is healthy / on track. */
|
|
207
|
+
readonly ON_TRACK: 50;
|
|
208
|
+
/** At/above this progress the KR is at risk (but not off track). */
|
|
209
|
+
readonly AT_RISK: 25;
|
|
210
|
+
};
|
|
173
211
|
/**
|
|
174
212
|
* Derive KR status from progress percentage.
|
|
175
213
|
*
|
|
@@ -180,6 +218,52 @@ export declare function computeKRProgress(kr: Pick<KeyResult, 'baseline' | 'targ
|
|
|
180
218
|
* - not_started: progress === 0% and current === baseline
|
|
181
219
|
*/
|
|
182
220
|
export declare function deriveKRStatus(progress: number, current: number, baseline: number): KRStatus;
|
|
221
|
+
/**
|
|
222
|
+
* Map a cascade child's rolled-up progress to a single synthetic KR status used
|
|
223
|
+
* to fold the child into its parent's roll-up recommendation.
|
|
224
|
+
*
|
|
225
|
+
* Unlike {@link deriveKRStatus}, this mapper deliberately has NO
|
|
226
|
+
* `current === baseline` short-circuit: a child stalled at `0` progress is a
|
|
227
|
+
* genuine "in trouble" signal (`off_track`), NOT `not_started`. Treating an
|
|
228
|
+
* all-children-at-zero parent as `not_started` would suppress the
|
|
229
|
+
* escalate/replan recommendation the cascade is meant to surface (spec §4.2).
|
|
230
|
+
*
|
|
231
|
+
* Banding mirrors {@link deriveKRStatus}:
|
|
232
|
+
* - achieved: progress >= 100%
|
|
233
|
+
* - on_track: progress >= 50%
|
|
234
|
+
* - at_risk: progress >= 25%
|
|
235
|
+
* - off_track: progress < 25% (including exactly 0%)
|
|
236
|
+
*
|
|
237
|
+
* @param rolledUpProgress - The child's rolled-up progress (0-100)
|
|
238
|
+
* @returns The synthetic {@link KRStatus} for the child
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```ts
|
|
242
|
+
* deriveCascadeChildStatus(0); // 'off_track' (a stalled child escalates)
|
|
243
|
+
* deriveCascadeChildStatus(75); // 'on_track'
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
export declare function deriveCascadeChildStatus(rolledUpProgress: number): KRStatus;
|
|
247
|
+
/**
|
|
248
|
+
* Compute an equal-weight rolled-up progress for a cascade node.
|
|
249
|
+
*
|
|
250
|
+
* v1 weighting is intentionally equal-weight: the node's own progress counts
|
|
251
|
+
* the same as each approved child's rolled-up progress. Future ownership /
|
|
252
|
+
* complexity weighting is a documented hook (spec §4.2) — pass per-input
|
|
253
|
+
* weights here when that lands; do NOT implement weighting now.
|
|
254
|
+
*
|
|
255
|
+
* @param ownProgress - This mission's own `overallProgress` (0-100)
|
|
256
|
+
* @param childProgresses - Each approved child's `rolledUpProgress` (0-100)
|
|
257
|
+
* @returns Equal-weight average rounded to an integer 0-100; for a leaf
|
|
258
|
+
* (no children) this equals `ownProgress` (rounded)
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```ts
|
|
262
|
+
* computeRolledUpProgress(40, [80, 60]); // round((40 + 80 + 60) / 3) = 60
|
|
263
|
+
* computeRolledUpProgress(40, []); // 40 (leaf)
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export declare function computeRolledUpProgress(ownProgress: number, childProgresses: number[]): number;
|
|
183
267
|
/**
|
|
184
268
|
* Create a new KeyResult from validated input.
|
|
185
269
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-result.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/key-result.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"key-result.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/key-result.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,6 +118,18 @@ export function computeKRProgress(kr) {
|
|
|
118
118
|
const progress = ((kr.current - kr.baseline) / range) * 100;
|
|
119
119
|
return Math.max(0, Math.min(100, progress));
|
|
120
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Progress thresholds (0-100) that delimit the KR status bands. A progress at or
|
|
123
|
+
* above a threshold maps to the associated status (checked high → low).
|
|
124
|
+
*/
|
|
125
|
+
export const KR_STATUS_THRESHOLDS = {
|
|
126
|
+
/** At/above this progress the KR is fully achieved. */
|
|
127
|
+
ACHIEVED: 100,
|
|
128
|
+
/** At/above this progress the KR is healthy / on track. */
|
|
129
|
+
ON_TRACK: 50,
|
|
130
|
+
/** At/above this progress the KR is at risk (but not off track). */
|
|
131
|
+
AT_RISK: 25,
|
|
132
|
+
};
|
|
121
133
|
/**
|
|
122
134
|
* Derive KR status from progress percentage.
|
|
123
135
|
*
|
|
@@ -128,16 +140,74 @@ export function computeKRProgress(kr) {
|
|
|
128
140
|
* - not_started: progress === 0% and current === baseline
|
|
129
141
|
*/
|
|
130
142
|
export function deriveKRStatus(progress, current, baseline) {
|
|
131
|
-
if (progress >=
|
|
143
|
+
if (progress >= KR_STATUS_THRESHOLDS.ACHIEVED)
|
|
132
144
|
return 'achieved';
|
|
133
145
|
if (current === baseline)
|
|
134
146
|
return 'not_started';
|
|
135
|
-
if (progress >=
|
|
147
|
+
if (progress >= KR_STATUS_THRESHOLDS.ON_TRACK)
|
|
148
|
+
return 'on_track';
|
|
149
|
+
if (progress >= KR_STATUS_THRESHOLDS.AT_RISK)
|
|
150
|
+
return 'at_risk';
|
|
151
|
+
return 'off_track';
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Map a cascade child's rolled-up progress to a single synthetic KR status used
|
|
155
|
+
* to fold the child into its parent's roll-up recommendation.
|
|
156
|
+
*
|
|
157
|
+
* Unlike {@link deriveKRStatus}, this mapper deliberately has NO
|
|
158
|
+
* `current === baseline` short-circuit: a child stalled at `0` progress is a
|
|
159
|
+
* genuine "in trouble" signal (`off_track`), NOT `not_started`. Treating an
|
|
160
|
+
* all-children-at-zero parent as `not_started` would suppress the
|
|
161
|
+
* escalate/replan recommendation the cascade is meant to surface (spec §4.2).
|
|
162
|
+
*
|
|
163
|
+
* Banding mirrors {@link deriveKRStatus}:
|
|
164
|
+
* - achieved: progress >= 100%
|
|
165
|
+
* - on_track: progress >= 50%
|
|
166
|
+
* - at_risk: progress >= 25%
|
|
167
|
+
* - off_track: progress < 25% (including exactly 0%)
|
|
168
|
+
*
|
|
169
|
+
* @param rolledUpProgress - The child's rolled-up progress (0-100)
|
|
170
|
+
* @returns The synthetic {@link KRStatus} for the child
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* deriveCascadeChildStatus(0); // 'off_track' (a stalled child escalates)
|
|
175
|
+
* deriveCascadeChildStatus(75); // 'on_track'
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
export function deriveCascadeChildStatus(rolledUpProgress) {
|
|
179
|
+
if (rolledUpProgress >= KR_STATUS_THRESHOLDS.ACHIEVED)
|
|
180
|
+
return 'achieved';
|
|
181
|
+
if (rolledUpProgress >= KR_STATUS_THRESHOLDS.ON_TRACK)
|
|
136
182
|
return 'on_track';
|
|
137
|
-
if (
|
|
183
|
+
if (rolledUpProgress >= KR_STATUS_THRESHOLDS.AT_RISK)
|
|
138
184
|
return 'at_risk';
|
|
139
185
|
return 'off_track';
|
|
140
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Compute an equal-weight rolled-up progress for a cascade node.
|
|
189
|
+
*
|
|
190
|
+
* v1 weighting is intentionally equal-weight: the node's own progress counts
|
|
191
|
+
* the same as each approved child's rolled-up progress. Future ownership /
|
|
192
|
+
* complexity weighting is a documented hook (spec §4.2) — pass per-input
|
|
193
|
+
* weights here when that lands; do NOT implement weighting now.
|
|
194
|
+
*
|
|
195
|
+
* @param ownProgress - This mission's own `overallProgress` (0-100)
|
|
196
|
+
* @param childProgresses - Each approved child's `rolledUpProgress` (0-100)
|
|
197
|
+
* @returns Equal-weight average rounded to an integer 0-100; for a leaf
|
|
198
|
+
* (no children) this equals `ownProgress` (rounded)
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* computeRolledUpProgress(40, [80, 60]); // round((40 + 80 + 60) / 3) = 60
|
|
203
|
+
* computeRolledUpProgress(40, []); // 40 (leaf)
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export function computeRolledUpProgress(ownProgress, childProgresses) {
|
|
207
|
+
const values = [ownProgress, ...childProgresses];
|
|
208
|
+
const total = values.reduce((sum, v) => sum + v, 0);
|
|
209
|
+
return Math.round(total / values.length);
|
|
210
|
+
}
|
|
141
211
|
/**
|
|
142
212
|
* Create a new KeyResult from validated input.
|
|
143
213
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-result.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/key-result.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"key-result.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/key-result.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,119 @@ export declare const MISSION_STATUSES: readonly MissionStatus[];
|
|
|
26
26
|
export declare const TERMINAL_MISSION_STATUSES: ReadonlySet<MissionStatus>;
|
|
27
27
|
/** Valid mission status transitions. */
|
|
28
28
|
export declare const MISSION_TRANSITIONS: Record<MissionStatus, ReadonlySet<MissionStatus>>;
|
|
29
|
+
/**
|
|
30
|
+
* Organizational tier of a Mission within the OKR cascade.
|
|
31
|
+
*
|
|
32
|
+
* The cascade is the Mission tree expressed via `Mission.parentMissionId`:
|
|
33
|
+
* company → team → project (3 levels).
|
|
34
|
+
*
|
|
35
|
+
* - `company`: root of the cascade; has no parent Mission.
|
|
36
|
+
* - `team`: decomposes a company Mission; parent must be `company`.
|
|
37
|
+
* - `project`: decomposes a team Mission; parent must be `team`; `projectId` set.
|
|
38
|
+
*/
|
|
39
|
+
export type MissionLevel = 'company' | 'team' | 'project';
|
|
40
|
+
/** All valid MissionLevel values, ordered top → bottom of the cascade. */
|
|
41
|
+
export declare const MISSION_LEVELS: readonly MissionLevel[];
|
|
42
|
+
/**
|
|
43
|
+
* Numeric depth of each cascade tier (company = 0, team = 1, project = 2).
|
|
44
|
+
* Used to enforce the "child is exactly one tier below parent" rule.
|
|
45
|
+
*/
|
|
46
|
+
export declare const MISSION_LEVEL_DEPTH: Record<MissionLevel, number>;
|
|
47
|
+
/** Depth threshold at or beyond which a mission is treated as `project` level. */
|
|
48
|
+
export declare const PROJECT_LEVEL_DEPTH = 2;
|
|
49
|
+
/**
|
|
50
|
+
* Checks whether a string is a valid MissionLevel.
|
|
51
|
+
*
|
|
52
|
+
* @param value - Candidate string
|
|
53
|
+
* @returns `true` if `value` is one of `company` | `team` | `project`
|
|
54
|
+
*/
|
|
55
|
+
export declare function isValidMissionLevel(value: string): value is MissionLevel;
|
|
56
|
+
/**
|
|
57
|
+
* Validates a single downward cascade step: a child level may only sit exactly
|
|
58
|
+
* one tier below its parent, and `company` must be a root (no parent).
|
|
59
|
+
*
|
|
60
|
+
* Adjacency matrix:
|
|
61
|
+
* | child | required parent | parentMissionId |
|
|
62
|
+
* |---------|-----------------|-------------------|
|
|
63
|
+
* | company | — | must be undefined |
|
|
64
|
+
* | team | company | required |
|
|
65
|
+
* | project | team | required |
|
|
66
|
+
*
|
|
67
|
+
* @param childLevel - The level of the child mission
|
|
68
|
+
* @param parentLevel - The level of the parent mission, or `undefined` if no parent
|
|
69
|
+
* @returns `null` if the pairing is legal, otherwise a human-readable reason
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* validateLevelLink('team', 'company'); // null
|
|
74
|
+
* validateLevelLink('company', 'team'); // "A company mission cannot have a parent"
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function validateLevelLink(childLevel: MissionLevel, parentLevel: MissionLevel | undefined): string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Lifecycle state of a decomposition proposal.
|
|
80
|
+
*
|
|
81
|
+
* A team-leader/PM agent drafts a child OKR decomposition as a proposal; it is
|
|
82
|
+
* NOT cascade-active until the human owner approves. Reject carries a reason.
|
|
83
|
+
*
|
|
84
|
+
* - `draft`: agent is still composing the proposal.
|
|
85
|
+
* - `pending_approval`: submitted, awaiting the human owner's decision.
|
|
86
|
+
* - `approved`: owner accepted; mission is now cascade-active (terminal).
|
|
87
|
+
* - `rejected`: owner declined with a reason; owner may request a redraft.
|
|
88
|
+
*/
|
|
89
|
+
export type ProposalState = 'draft' | 'pending_approval' | 'approved' | 'rejected';
|
|
90
|
+
/** All valid ProposalState values. */
|
|
91
|
+
export declare const PROPOSAL_STATES: readonly ProposalState[];
|
|
92
|
+
/**
|
|
93
|
+
* Legal proposal-state transitions.
|
|
94
|
+
*
|
|
95
|
+
* - draft → pending_approval
|
|
96
|
+
* - pending_approval → approved | rejected
|
|
97
|
+
* - approved → (terminal)
|
|
98
|
+
* - rejected → draft (owner can ask for a redraft)
|
|
99
|
+
*/
|
|
100
|
+
export declare const PROPOSAL_TRANSITIONS: Record<ProposalState, ReadonlySet<ProposalState>>;
|
|
101
|
+
/**
|
|
102
|
+
* Checks whether a string is a valid ProposalState.
|
|
103
|
+
*
|
|
104
|
+
* @param value - Candidate string
|
|
105
|
+
* @returns `true` if `value` is one of the four proposal states
|
|
106
|
+
*/
|
|
107
|
+
export declare function isValidProposalState(value: string): value is ProposalState;
|
|
108
|
+
/**
|
|
109
|
+
* Checks whether a proposal-state transition is legal.
|
|
110
|
+
*
|
|
111
|
+
* @param from - Current proposal state
|
|
112
|
+
* @param to - Proposed next proposal state
|
|
113
|
+
* @returns `true` if `from → to` is an allowed transition
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* isValidProposalTransition('pending_approval', 'approved'); // true
|
|
118
|
+
* isValidProposalTransition('approved', 'draft'); // false
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export declare function isValidProposalTransition(from: ProposalState, to: ProposalState): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Governance metadata attached to a Mission that arose from a decomposition
|
|
124
|
+
* proposal. Kept small and self-contained so the approval *workflow* layer can
|
|
125
|
+
* be relocated to `crewly-pro` later without touching `Mission` core (see
|
|
126
|
+
* spec §2.5 FLAG).
|
|
127
|
+
*/
|
|
128
|
+
export interface ApprovalState {
|
|
129
|
+
/** Current proposal lifecycle state. */
|
|
130
|
+
state: ProposalState;
|
|
131
|
+
/** Agent session that drafted the decomposition. */
|
|
132
|
+
proposedBy?: string;
|
|
133
|
+
/** ISO8601 timestamp the proposal was submitted. */
|
|
134
|
+
proposedAt?: string;
|
|
135
|
+
/** Human owner who decided (e.g. "steve"). */
|
|
136
|
+
decidedBy?: string;
|
|
137
|
+
/** ISO8601 timestamp of the decision. */
|
|
138
|
+
decidedAt?: string;
|
|
139
|
+
/** Required when `state === 'rejected'`. */
|
|
140
|
+
rejectionReason?: string;
|
|
141
|
+
}
|
|
29
142
|
/**
|
|
30
143
|
* Priority levels for a Mission.
|
|
31
144
|
*
|
|
@@ -226,6 +339,21 @@ export interface Mission {
|
|
|
226
339
|
* Must not be self, and the resulting chain must not form a cycle.
|
|
227
340
|
*/
|
|
228
341
|
parentMissionId?: string;
|
|
342
|
+
/**
|
|
343
|
+
* Cascade tier of this mission. When absent (legacy missions), it is resolved
|
|
344
|
+
* via {@link resolveMissionLevel}, which falls back to {@link deriveLevel}:
|
|
345
|
+
* a parentless legacy mission resolves to `company`, a one-parent chain to
|
|
346
|
+
* `team`, and a two-or-more-parent chain to `project`.
|
|
347
|
+
*/
|
|
348
|
+
level?: MissionLevel;
|
|
349
|
+
/** Project this mission belongs to. REQUIRED when `level === 'project'`. */
|
|
350
|
+
projectId?: string;
|
|
351
|
+
/**
|
|
352
|
+
* Decomposition governance. Absent ⇒ treat as already-active (legacy
|
|
353
|
+
* missions). A mission is cascade-active iff `approval` is absent OR
|
|
354
|
+
* `approval.state === 'approved'`.
|
|
355
|
+
*/
|
|
356
|
+
approval?: ApprovalState;
|
|
229
357
|
}
|
|
230
358
|
/**
|
|
231
359
|
* Actions that can be checked against a MissionPolicy.
|
|
@@ -283,6 +411,33 @@ export interface CreateMissionInput {
|
|
|
283
411
|
ownerId?: string;
|
|
284
412
|
/** Optional parent Mission ID (validated to avoid self-ref and cycles). */
|
|
285
413
|
parentMissionId?: string;
|
|
414
|
+
/** Cascade tier. Inferred from the parent chain when omitted. */
|
|
415
|
+
level?: MissionLevel;
|
|
416
|
+
/** Project this mission belongs to. Required when `level === 'project'`. */
|
|
417
|
+
projectId?: string;
|
|
418
|
+
/** Decomposition governance state (set when created via a proposal). */
|
|
419
|
+
approval?: ApprovalState;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Input for updating an existing Mission (general updater).
|
|
423
|
+
*
|
|
424
|
+
* Excludes the immutable `id` and `createdAt`. Every field is optional so a
|
|
425
|
+
* caller may PATCH any subset. `approval.state` transitions are NOT enforced
|
|
426
|
+
* here — they must flow through the dedicated approve/reject workflow so there
|
|
427
|
+
* is a single source of transition enforcement (spec §3.3).
|
|
428
|
+
*/
|
|
429
|
+
export interface UpdateMissionInput {
|
|
430
|
+
objective?: string;
|
|
431
|
+
currentStrategy?: string;
|
|
432
|
+
successCriteria?: string[];
|
|
433
|
+
status?: MissionStatus;
|
|
434
|
+
priority?: MissionPriority;
|
|
435
|
+
period?: MissionPeriod;
|
|
436
|
+
keyResultIds?: string[];
|
|
437
|
+
parentMissionId?: string;
|
|
438
|
+
level?: MissionLevel;
|
|
439
|
+
projectId?: string;
|
|
440
|
+
approval?: ApprovalState;
|
|
286
441
|
}
|
|
287
442
|
/**
|
|
288
443
|
* Input for updating a MissionPolicy.
|
|
@@ -397,6 +552,24 @@ export interface MissionPeriod {
|
|
|
397
552
|
export declare function isPeriodActive(period: MissionPeriod, now?: Date): boolean;
|
|
398
553
|
export declare function isPeriodPast(period: MissionPeriod, now?: Date): boolean;
|
|
399
554
|
export declare function isPeriodFuture(period: MissionPeriod, now?: Date): boolean;
|
|
555
|
+
/**
|
|
556
|
+
* Build a `monthly` MissionPeriod for a given calendar month.
|
|
557
|
+
*
|
|
558
|
+
* The period is half-open `[first day of month, first day of next month)`,
|
|
559
|
+
* matching the `now >= start && now < end` convention used by
|
|
560
|
+
* {@link isPeriodActive}. Dates are UTC so the boundaries are deterministic
|
|
561
|
+
* regardless of server timezone. Handles December → January year rollover.
|
|
562
|
+
*
|
|
563
|
+
* @param year - Full year, e.g. `2026`.
|
|
564
|
+
* @param month - 1-based month (`1` = January … `12` = December).
|
|
565
|
+
* @returns A `monthly` MissionPeriod with ISO8601 start/end and a `YYYY-MM` label.
|
|
566
|
+
*
|
|
567
|
+
* @example
|
|
568
|
+
* ```typescript
|
|
569
|
+
* createMonthlyPeriod(2026, 3); // March 2026: 2026-03-01 → 2026-04-01, label "2026-03"
|
|
570
|
+
* ```
|
|
571
|
+
*/
|
|
572
|
+
export declare function createMonthlyPeriod(year: number, month: number): MissionPeriod;
|
|
400
573
|
/**
|
|
401
574
|
* Validates a proposed parent link between a child mission and a parent.
|
|
402
575
|
*
|
|
@@ -416,6 +589,68 @@ export declare function isPeriodFuture(period: MissionPeriod, now?: Date): boole
|
|
|
416
589
|
* ```
|
|
417
590
|
*/
|
|
418
591
|
export declare function validateParentLink(childId: string, parentId: string, byId: ReadonlyMap<string, Pick<Mission, 'id' | 'parentMissionId'>>): string | null;
|
|
592
|
+
/**
|
|
593
|
+
* Derives a Mission's cascade level by walking its `parentMissionId` chain.
|
|
594
|
+
*
|
|
595
|
+
* Depth 0 (no parent) ⇒ `company`, depth 1 ⇒ `team`, depth ≥ 2 ⇒ `project`.
|
|
596
|
+
* Used to backfill `level` for legacy missions persisted before the cascade
|
|
597
|
+
* fields existed. Guards against cycles defensively (returns the level computed
|
|
598
|
+
* at the point a repeat is detected rather than looping forever).
|
|
599
|
+
*
|
|
600
|
+
* @param missionId - The mission whose level to derive
|
|
601
|
+
* @param byId - All missions indexed by ID (need only `id` + `parentMissionId`)
|
|
602
|
+
* @returns The derived MissionLevel
|
|
603
|
+
*
|
|
604
|
+
* @example
|
|
605
|
+
* ```ts
|
|
606
|
+
* deriveLevel('teamM', new Map([['teamM', { id: 'teamM', parentMissionId: 'co' }], ['co', { id: 'co' }]])); // 'team'
|
|
607
|
+
* ```
|
|
608
|
+
*/
|
|
609
|
+
export declare function deriveLevel(missionId: string, byId: ReadonlyMap<string, Pick<Mission, 'id' | 'parentMissionId'>>): MissionLevel;
|
|
610
|
+
/**
|
|
611
|
+
* Resolve a mission's effective cascade level through a SINGLE canonical rule,
|
|
612
|
+
* shared by every read path (cascade service, mission routes' read-migration).
|
|
613
|
+
*
|
|
614
|
+
* Prefers the mission's explicit `level`; when absent (legacy missions persisted
|
|
615
|
+
* before the cascade fields existed) it falls back to {@link deriveLevel}, which
|
|
616
|
+
* walks the `parentMissionId` chain (no parent ⇒ `company`, one parent ⇒ `team`,
|
|
617
|
+
* two-or-more ⇒ `project`). Centralising the fallback here guarantees the same
|
|
618
|
+
* document resolves to the same level no matter which code path reads it.
|
|
619
|
+
*
|
|
620
|
+
* @param mission - The mission whose level to resolve (needs `id`, optional
|
|
621
|
+
* `level` + `parentMissionId`)
|
|
622
|
+
* @param byId - All missions indexed by ID for the parent-chain walk
|
|
623
|
+
* @returns The resolved {@link MissionLevel}
|
|
624
|
+
*
|
|
625
|
+
* @example
|
|
626
|
+
* ```ts
|
|
627
|
+
* resolveMissionLevel({ id: 'co', }, byId); // 'company' (no parent)
|
|
628
|
+
* resolveMissionLevel({ id: 't', parentMissionId: 'co' }, byId); // 'team'
|
|
629
|
+
* ```
|
|
630
|
+
*/
|
|
631
|
+
export declare function resolveMissionLevel(mission: Pick<Mission, 'id' | 'level' | 'parentMissionId'>, byId: ReadonlyMap<string, Pick<Mission, 'id' | 'parentMissionId'>>): MissionLevel;
|
|
632
|
+
/**
|
|
633
|
+
* Combined cascade-link guard: runs the raw cycle/self-ref check
|
|
634
|
+
* ({@link validateParentLink}) AND the level-adjacency check
|
|
635
|
+
* ({@link validateLevelLink}). The parent's level is read from `byId` (its own
|
|
636
|
+
* `level` field, falling back to {@link deriveLevel} when absent).
|
|
637
|
+
*
|
|
638
|
+
* `validateParentLink` keeps its original signature for callers that only need
|
|
639
|
+
* the cycle check.
|
|
640
|
+
*
|
|
641
|
+
* @param childId - The mission that would acquire the parent
|
|
642
|
+
* @param childLevel - The proposed level of the child mission
|
|
643
|
+
* @param parentId - The proposed parent mission ID, or `undefined` for a root
|
|
644
|
+
* @param byId - All existing missions indexed by ID
|
|
645
|
+
* @returns `null` if the link is valid, otherwise a human-readable reason
|
|
646
|
+
*
|
|
647
|
+
* @example
|
|
648
|
+
* ```ts
|
|
649
|
+
* const reason = validateCascadeLink('p1', 'project', 't1', byId);
|
|
650
|
+
* if (reason) throw new Error(reason);
|
|
651
|
+
* ```
|
|
652
|
+
*/
|
|
653
|
+
export declare function validateCascadeLink(childId: string, childLevel: MissionLevel, parentId: string | undefined, byId: ReadonlyMap<string, Pick<Mission, 'id' | 'parentMissionId' | 'level'>>): string | null;
|
|
419
654
|
/**
|
|
420
655
|
* Sort missions by status (active first), then by priority rank, then by recency.
|
|
421
656
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mission.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/mission.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mission.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/mission.types.ts"],"names":[],"mappings":"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"}
|