crewly 1.8.13 → 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.
Files changed (45) hide show
  1. package/config/roles/orchestrator/prompt.md +35 -0
  2. package/config/roles/product-manager/prompt.md +40 -0
  3. package/config/roles/team-leader/prompt.md +33 -0
  4. package/config/skills/orchestrator/decompose-okr/SKILL.md +107 -0
  5. package/config/skills/orchestrator/decompose-okr/execute.sh +142 -0
  6. package/config/skills/registry.json +52 -6
  7. package/dist/backend/backend/src/controllers/mission/kr.controller.d.ts +8 -0
  8. package/dist/backend/backend/src/controllers/mission/kr.controller.d.ts.map +1 -1
  9. package/dist/backend/backend/src/controllers/mission/kr.controller.js +17 -0
  10. package/dist/backend/backend/src/controllers/mission/kr.controller.js.map +1 -1
  11. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts.map +1 -1
  12. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +198 -26
  13. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
  14. package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts +92 -1
  15. package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  16. package/dist/backend/backend/src/services/v3/kr-tracking.service.js +169 -1
  17. package/dist/backend/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  18. package/dist/backend/backend/src/services/v3/mission-period.service.d.ts.map +1 -1
  19. package/dist/backend/backend/src/services/v3/mission-period.service.js +7 -1
  20. package/dist/backend/backend/src/services/v3/mission-period.service.js.map +1 -1
  21. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts +217 -0
  22. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts.map +1 -0
  23. package/dist/backend/backend/src/services/v3/okr-cascade.service.js +417 -0
  24. package/dist/backend/backend/src/services/v3/okr-cascade.service.js.map +1 -0
  25. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts +11 -0
  26. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts.map +1 -1
  27. package/dist/backend/backend/src/services/v3/okr-review.service.js +50 -0
  28. package/dist/backend/backend/src/services/v3/okr-review.service.js.map +1 -1
  29. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +91 -0
  30. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
  31. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +180 -0
  32. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
  33. package/dist/backend/backend/src/types/v2/index.d.ts +4 -4
  34. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  35. package/dist/backend/backend/src/types/v2/index.js +2 -2
  36. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  37. package/dist/backend/backend/src/types/v2/key-result.types.d.ts +84 -0
  38. package/dist/backend/backend/src/types/v2/key-result.types.d.ts.map +1 -1
  39. package/dist/backend/backend/src/types/v2/key-result.types.js +73 -3
  40. package/dist/backend/backend/src/types/v2/key-result.types.js.map +1 -1
  41. package/dist/backend/backend/src/types/v2/mission.types.d.ts +235 -0
  42. package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
  43. package/dist/backend/backend/src/types/v2/mission.types.js +230 -0
  44. package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
  45. package/package.json +1 -1
@@ -13,7 +13,8 @@ import * as fs from 'fs/promises';
13
13
  import * as path from 'path';
14
14
  import { existsSync, mkdirSync } from 'fs';
15
15
  import { LoggerService } from '../core/logger.service.js';
16
- import { createKeyResult, computeKRProgress, deriveKRStatus, deriveOKRRecommendation, MAX_MEASUREMENT_HISTORY, validateCreateKeyResultInput, } from '../../types/v2/key-result.types.js';
16
+ import { deriveLevel, } from '../../types/v2/mission.types.js';
17
+ import { createKeyResult, computeKRProgress, deriveKRStatus, deriveCascadeChildStatus, deriveOKRRecommendation, computeRolledUpProgress, MAX_MEASUREMENT_HISTORY, validateCreateKeyResultInput, } from '../../types/v2/key-result.types.js';
17
18
  // ---------------------------------------------------------------------------
18
19
  // Constants
19
20
  // ---------------------------------------------------------------------------
@@ -29,6 +30,10 @@ function getKRDir(missionId) {
29
30
  function getKRPath(missionId, krId) {
30
31
  return path.join(getKRDir(missionId), `${krId}.json`);
31
32
  }
33
+ /** Proposal state that marks an approved (cascade-active) mission. */
34
+ const APPROVED_STATE = 'approved';
35
+ /** Stale-cycle fallback when a mission has no persisted `staleCycles`. */
36
+ const NO_STALE_CYCLES = 0;
32
37
  // ---------------------------------------------------------------------------
33
38
  // Service
34
39
  // ---------------------------------------------------------------------------
@@ -298,6 +303,169 @@ export class KRTrackingService {
298
303
  };
299
304
  }
300
305
  // -------------------------------------------------------------------------
306
+ // Cross-Level Roll-Up (cascade)
307
+ // -------------------------------------------------------------------------
308
+ /**
309
+ * List the cascade-active direct children of a mission.
310
+ *
311
+ * Reads every mission document and keeps those whose `parentMissionId`
312
+ * equals `parentId` AND that are cascade-active. A mission is cascade-active
313
+ * iff its `approval` is absent (legacy missions) OR
314
+ * `approval.state === 'approved'`. Draft / pending_approval / rejected
315
+ * children are excluded from the roll-up per spec §4.2.
316
+ *
317
+ * @param parentId - Parent mission ID
318
+ * @returns The approved direct-child missions (empty if none / on read error)
319
+ *
320
+ * @example
321
+ * ```ts
322
+ * const children = await KRTrackingService.getInstance().listChildMissions('team-1');
323
+ * ```
324
+ */
325
+ async listChildMissions(parentId) {
326
+ const all = await this.loadAllMissions();
327
+ return all.filter((m) => m.parentMissionId === parentId && this.isCascadeActive(m));
328
+ }
329
+ /**
330
+ * Compute cross-level cascade roll-up of OKR progress for a mission and its
331
+ * approved descendants (company → team → project).
332
+ *
333
+ * Recursively walks the `parentMissionId` tree. At each node it reuses
334
+ * {@link computeMissionOKRProgress} for that node's OWN KRs, then folds in the
335
+ * `rolledUpProgress` of each approved child:
336
+ *
337
+ * - `rolledUpProgress` = equal-weight average of this node's own
338
+ * `overallProgress` and each approved child's `rolledUpProgress`
339
+ * (see {@link computeRolledUpProgress}); a leaf equals its own progress.
340
+ * - The roll-up recommendation is derived over this node's own KR statuses
341
+ * PLUS one synthetic status per child mapped from the child's
342
+ * `rolledUpProgress` via {@link deriveCascadeChildStatus} — so "all children
343
+ * off_track ⇒ parent escalates/replans" falls out naturally (including when
344
+ * children are stalled at 0% progress).
345
+ *
346
+ * Orphans (a mission whose `parentMissionId` points at a missing or
347
+ * non-approved parent) are treated as roots of their own subtree and never
348
+ * crash. A `visited` set guards against cycles defensively (create/update
349
+ * already reject cycles).
350
+ *
351
+ * @param missionId - Root mission of the subtree to roll up
352
+ * @param staleCycles - Consecutive stale review cycles for the root node. When
353
+ * omitted, the root's PERSISTED `staleCycles` is used so staleness-driven
354
+ * replan/escalate is not silently suppressed at the queried node (spec §4.2).
355
+ * Pass an explicit number to override the persisted value.
356
+ * @returns The recursive {@link CascadeOKRSummary} for the subtree
357
+ *
358
+ * @example
359
+ * ```ts
360
+ * const summary = await KRTrackingService.getInstance().computeCascadeOKRProgress('co-1');
361
+ * console.log(summary.rolledUpProgress, summary.children.length);
362
+ * ```
363
+ */
364
+ async computeCascadeOKRProgress(missionId, staleCycles) {
365
+ const all = await this.loadAllMissions();
366
+ const byId = new Map(all.map((m) => [m.id, m]));
367
+ const linkById = new Map(all.map((m) => [m.id, { id: m.id, parentMissionId: m.parentMissionId }]));
368
+ // Seed the root's stale cycles from its persisted value unless the caller
369
+ // explicitly overrides it. Children read their own persisted value below.
370
+ const rootStaleCycles = staleCycles ?? byId.get(missionId)?.staleCycles ?? NO_STALE_CYCLES;
371
+ return this.rollUp(missionId, rootStaleCycles, byId, linkById, new Set());
372
+ }
373
+ /**
374
+ * Recursive worker for {@link computeCascadeOKRProgress}.
375
+ *
376
+ * @param missionId - Current node
377
+ * @param staleCycles - Stale cycles applied to the current node only
378
+ * @param byId - All missions indexed by ID
379
+ * @param linkById - Lightweight parent-link map for level derivation
380
+ * @param visited - Cycle-guard set of already-walked mission IDs
381
+ * @returns The {@link CascadeOKRSummary} for this node's subtree
382
+ */
383
+ async rollUp(missionId, staleCycles, byId, linkById, visited) {
384
+ visited.add(missionId);
385
+ const own = await this.computeMissionOKRProgress(missionId, staleCycles);
386
+ const level = this.resolveLevel(missionId, byId, linkById);
387
+ // Approved direct children that have not already been visited (cycle guard).
388
+ const approvedChildren = [...byId.values()].filter((m) => m.parentMissionId === missionId &&
389
+ this.isCascadeActive(m) &&
390
+ !visited.has(m.id));
391
+ const children = [];
392
+ for (const child of approvedChildren) {
393
+ // Child stale cycles read from its own persisted value (independent node).
394
+ children.push(await this.rollUp(child.id, child.staleCycles ?? NO_STALE_CYCLES, byId, linkById, visited));
395
+ }
396
+ const childProgresses = children.map((c) => c.rolledUpProgress);
397
+ const rolledUpProgress = computeRolledUpProgress(own.overallProgress, childProgresses);
398
+ // Roll-up recommendation: own KR statuses + one synthetic status per child
399
+ // mapped from its rolled-up progress. Uses deriveCascadeChildStatus (no
400
+ // baseline-equality short-circuit) so a child stalled at 0% reads as
401
+ // off_track rather than not_started — otherwise an all-stalled parent would
402
+ // never escalate/replan (spec §4.2).
403
+ const ownStatuses = (await this.listByMission(missionId)).map((kr) => kr.status);
404
+ const childStatuses = children.map((c) => deriveCascadeChildStatus(c.rolledUpProgress));
405
+ const recommendation = deriveOKRRecommendation([...ownStatuses, ...childStatuses], staleCycles);
406
+ return {
407
+ ...own,
408
+ recommendation,
409
+ level,
410
+ childMissionCount: children.length,
411
+ rolledUpProgress,
412
+ children,
413
+ };
414
+ }
415
+ /**
416
+ * Whether a mission counts as cascade-active: approval absent (legacy) or
417
+ * explicitly approved.
418
+ *
419
+ * @param mission - Mission to test
420
+ * @returns `true` if the mission participates in the cascade roll-up
421
+ */
422
+ isCascadeActive(mission) {
423
+ return mission.approval === undefined || mission.approval.state === APPROVED_STATE;
424
+ }
425
+ /**
426
+ * Resolve a mission's cascade level: prefer its explicit `level`, else derive
427
+ * it from the parent chain via {@link deriveLevel}. Missing/orphan missions
428
+ * fall back to `company` (treated as a root).
429
+ *
430
+ * @param missionId - Mission whose level to resolve
431
+ * @param byId - All missions indexed by ID
432
+ * @param linkById - Lightweight parent-link map for derivation
433
+ * @returns The resolved {@link MissionLevel}
434
+ */
435
+ resolveLevel(missionId, byId, linkById) {
436
+ const mission = byId.get(missionId);
437
+ if (mission?.level)
438
+ return mission.level;
439
+ if (!mission)
440
+ return 'company';
441
+ return deriveLevel(missionId, linkById);
442
+ }
443
+ /**
444
+ * Load all mission documents from disk, skipping unreadable files.
445
+ *
446
+ * @returns Array of missions (empty on a missing directory)
447
+ */
448
+ async loadAllMissions() {
449
+ const dir = getMissionsDir();
450
+ let files = [];
451
+ try {
452
+ files = (await fs.readdir(dir)).filter((f) => f.endsWith('.json'));
453
+ }
454
+ catch {
455
+ return [];
456
+ }
457
+ const missions = await Promise.all(files.map(async (f) => {
458
+ try {
459
+ const raw = await fs.readFile(path.join(dir, f), 'utf-8');
460
+ return JSON.parse(raw);
461
+ }
462
+ catch {
463
+ return null;
464
+ }
465
+ }));
466
+ return missions.filter((m) => m !== null);
467
+ }
468
+ // -------------------------------------------------------------------------
301
469
  // Persistence
302
470
  // -------------------------------------------------------------------------
303
471
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"kr-tracking.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/kr-tracking.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kr-tracking.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/kr-tracking.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mission-period.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,iCAAiC,CAAC;AAqB7F,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C,MAAM,CAAC,aAAa,IAAI,IAAI;IAQ5B;;;;;;;;;OASG;IACG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkD3D;;;;;OAKG;IACG,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY7D;;;;;;;OAOG;IACG,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAa,EAC3D,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,OAAO,EAAE,CAAC;IAkCrB;;OAEG;YACW,eAAe;IAoB7B;;OAEG;YACW,mBAAmB;CAYlC"}
1
+ {"version":3,"file":"mission-period.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,iCAAiC,CAAC;AA2B7F,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C,MAAM,CAAC,aAAa,IAAI,IAAI;IAQ5B;;;;;;;;;OASG;IACG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkD3D;;;;;OAKG;IACG,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY7D;;;;;;;OAOG;IACG,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAa,EAC3D,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAAC,OAAO,EAAE,CAAC;IAkCrB;;OAEG;YACW,eAAe;IAoB7B;;OAEG;YACW,mBAAmB;CAYlC"}
@@ -22,8 +22,14 @@ import { isPeriodActive, isPeriodPast, isPeriodFuture, sortMissionsByPriority, T
22
22
  // ---------------------------------------------------------------------------
23
23
  // Constants
24
24
  // ---------------------------------------------------------------------------
25
+ /**
26
+ * Resolve the mission store directory. Defaults to `<cwd>/.crewly/missions`
27
+ * (the production store). Honors the `CREWLY_MISSIONS_DIR` env override so tests
28
+ * can isolate to a temp directory and never read/delete the real store — without
29
+ * this override a test's cleanup would wipe production missions.
30
+ */
25
31
  function getMissionsDir() {
26
- return path.join(process.cwd(), '.crewly', 'missions');
32
+ return process.env['CREWLY_MISSIONS_DIR'] || path.join(process.cwd(), '.crewly', 'missions');
27
33
  }
28
34
  // ---------------------------------------------------------------------------
29
35
  // Service
@@ -1 +1 @@
1
- {"version":3,"file":"mission-period.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mission-period.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-period.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * OKR Cascade Service
3
+ *
4
+ * Owns the decompose → propose → approve/reject workflow for the OKR cascade
5
+ * (company → team → project). A team-leader/PM agent drafts child OKRs as a
6
+ * PROPOSAL; the child Missions are persisted with
7
+ * `approval.state = 'pending_approval'` and are NOT cascade-active until the
8
+ * human owner approves. Rejection carries a required reason.
9
+ *
10
+ * This service is the SINGLE owner of `approval.state` transitions — the
11
+ * `updateMission` PUT route blocks direct `approval` writes so that all
12
+ * transitions flow through {@link OKRCascadeService.approveDecomposition} and
13
+ * {@link OKRCascadeService.rejectDecomposition} (spec §3.2/§3.3).
14
+ *
15
+ * FLAG (spec §2.5): the approval *workflow* (this service + its routes) is a
16
+ * plausible future move to `crewly-pro` as a gated governance feature. The
17
+ * approval *types* live in `mission.types.ts` and stay there; only this
18
+ * workflow layer would relocate. Do NOT split now.
19
+ *
20
+ * Persistence reuses the existing on-disk layout:
21
+ * - Missions: `.crewly/missions/{id}.json`
22
+ * - KRs: `.crewly/missions/{id}/key-results/` (via {@link KRTrackingService})
23
+ *
24
+ * @module services/v3/okr-cascade.service
25
+ */
26
+ import { type Mission, type MissionLevel } from '../../types/v2/mission.types.js';
27
+ import type { CreateKeyResultInput } from '../../types/v2/key-result.types.js';
28
+ /**
29
+ * A single proposed child OKR within a decomposition: one objective plus its
30
+ * Key Results. `projectId` is required only when the resulting child level is
31
+ * `project`.
32
+ */
33
+ export interface DecomposeOKRChild {
34
+ /** Objective statement for the child OKR. */
35
+ objective: string;
36
+ /** Strategic approach the child will pursue. */
37
+ currentStrategy: string;
38
+ /** Free-text success criteria (in addition to structured KRs). */
39
+ successCriteria: string[];
40
+ /** Required when the child level resolves to `project`. */
41
+ projectId?: string;
42
+ /**
43
+ * Key Results to create under the child mission. `missionId` is filled in by
44
+ * the service once the child mission id is known, so callers omit it.
45
+ */
46
+ keyResults: Array<Omit<CreateKeyResultInput, 'missionId'>>;
47
+ }
48
+ /**
49
+ * Input to {@link OKRCascadeService.proposeDecomposition}: the set of child
50
+ * OKRs to draft one tier below the parent mission.
51
+ */
52
+ export interface DecomposeOKRInput {
53
+ /** One entry per proposed child mission. */
54
+ children: DecomposeOKRChild[];
55
+ }
56
+ /** Result of a successful {@link OKRCascadeService.proposeDecomposition} call. */
57
+ export interface ProposeResult {
58
+ /** The parent mission that was decomposed. */
59
+ parentId: string;
60
+ /** Cascade level of every created child (parent level + 1). */
61
+ childLevel: MissionLevel;
62
+ /** IDs of the created (pending-approval) child missions. */
63
+ childMissionIds: string[];
64
+ }
65
+ /**
66
+ * Singleton service implementing the OKR decomposition / approval workflow.
67
+ */
68
+ export declare class OKRCascadeService {
69
+ private static instance;
70
+ private readonly logger;
71
+ private constructor();
72
+ /**
73
+ * Get the singleton instance.
74
+ *
75
+ * @returns The shared {@link OKRCascadeService}
76
+ */
77
+ static getInstance(): OKRCascadeService;
78
+ /**
79
+ * Reset the singleton (for testing).
80
+ */
81
+ static resetInstance(): void;
82
+ /**
83
+ * Draft a child OKR decomposition for a parent mission as a PROPOSAL.
84
+ *
85
+ * The parent must exist and be cascade-active (approval absent or
86
+ * `approval.state === 'approved'`). The child level is computed as exactly one
87
+ * tier below the parent; decomposing a `project`-level parent is rejected
88
+ * (there is no tier below project). Each child mission is created with
89
+ * `approval.state = 'pending_approval'` and is NOT active until the owner
90
+ * approves. Each child's Key Results are created via {@link KRTrackingService}
91
+ * (no duplicate KR persistence here).
92
+ *
93
+ * The decomposition is "fail before writing": EVERY child is fully validated
94
+ * (project-id presence + cascade-link adjacency/cycle) BEFORE any mission or
95
+ * KR is persisted, so a later invalid child never leaves an earlier child
96
+ * half-written to disk.
97
+ *
98
+ * @param parentId - ID of the parent mission to decompose
99
+ * @param input - The proposed child OKRs (objectives + KRs)
100
+ * @param proposedBy - Agent session that drafted the proposal
101
+ * @returns The parent id, resolved child level, and created child IDs
102
+ * @throws If the parent is missing, not approved, already at `project` level,
103
+ * the input has no children, or a child fails cascade-link validation
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const result = await OKRCascadeService.getInstance().proposeDecomposition(
108
+ * 'co-1',
109
+ * { children: [{ objective: 'Ship v2', currentStrategy: '...', successCriteria: [], keyResults: [] }] },
110
+ * 'team-leader-session',
111
+ * );
112
+ * ```
113
+ */
114
+ proposeDecomposition(parentId: string, input: DecomposeOKRInput, proposedBy: string): Promise<ProposeResult>;
115
+ /**
116
+ * Approve a pending decomposition proposal, making the child mission
117
+ * cascade-active. Guarded by {@link isValidProposalTransition} so only a
118
+ * `pending_approval` mission may transition to `approved`.
119
+ *
120
+ * @param missionId - ID of the proposed (pending_approval) mission
121
+ * @param decidedBy - Human owner who approved (e.g. "steve")
122
+ * @returns The updated mission
123
+ * @throws If the mission is missing, has no approval state, or the
124
+ * `pending_approval → approved` transition is illegal
125
+ */
126
+ approveDecomposition(missionId: string, decidedBy: string): Promise<Mission>;
127
+ /**
128
+ * Reject a pending decomposition proposal with a required reason. The
129
+ * rejected mission is excluded from roll-up and autonomous execution.
130
+ *
131
+ * @param missionId - ID of the proposed (pending_approval) mission
132
+ * @param decidedBy - Human owner who rejected (e.g. "steve")
133
+ * @param reason - Non-empty explanation surfaced back to the proposing agent
134
+ * @returns The updated mission
135
+ * @throws If the reason is empty, the mission is missing, has no approval
136
+ * state, or the `pending_approval → rejected` transition is illegal
137
+ */
138
+ rejectDecomposition(missionId: string, decidedBy: string, reason: string): Promise<Mission>;
139
+ /**
140
+ * List missions awaiting an owner decision (`approval.state ===
141
+ * 'pending_approval'`). Optionally scope to the direct children of one parent.
142
+ *
143
+ * @param parentId - When provided, only pending children of this parent
144
+ * @returns Pending-approval missions
145
+ */
146
+ listPendingApprovals(parentId?: string): Promise<Mission[]>;
147
+ /**
148
+ * Whether a mission counts as cascade-active: approval absent (legacy) or
149
+ * explicitly approved.
150
+ *
151
+ * @param mission - Mission to test
152
+ * @returns `true` if the mission participates in the cascade
153
+ */
154
+ private isCascadeActive;
155
+ /**
156
+ * Resolve a mission's effective level through the SINGLE canonical resolver
157
+ * shared with the routes' read-migration ({@link resolveMissionLevel}), which
158
+ * prefers an explicit `level` and otherwise falls back to `deriveLevel` over
159
+ * the parent chain. A parentless legacy mission therefore resolves to
160
+ * `company` consistently across every read path.
161
+ *
162
+ * @param mission - Mission whose level to resolve
163
+ * @param byId - All missions indexed by ID for the parent-chain walk
164
+ * @returns The mission's resolved level
165
+ */
166
+ private resolveLevel;
167
+ /**
168
+ * Compute the cascade level exactly one tier below the given level.
169
+ *
170
+ * @param level - Parent level
171
+ * @returns The child level, or `null` if `level` is already the bottom tier
172
+ */
173
+ private nextLevel;
174
+ /** Absolute path to the missions directory under the current cwd. */
175
+ private getMissionsDir;
176
+ /** Absolute path to a single mission's JSON file. */
177
+ private getMissionPath;
178
+ /**
179
+ * Validate + normalize a parsed mission document read from disk.
180
+ *
181
+ * - Returns `null` for anything that is not structurally a {@link Mission}
182
+ * (corrupt / hand-edited / wrong shape), so callers never trust junk.
183
+ * - When `approval` is present but `approval.state` is NOT a recognized
184
+ * {@link isValidProposalState}, the state is normalized to
185
+ * {@link CORRUPT_APPROVAL_FALLBACK} (`rejected`). This deliberately treats a
186
+ * corrupt governance state as INACTIVE — neither cascade-active nor a
187
+ * recognized pending state — rather than silently trusting an unknown
188
+ * string (which would otherwise be neither active nor pending and could
189
+ * crash transition guards).
190
+ *
191
+ * @param value - Raw JSON-parsed value
192
+ * @returns A validated, normalized Mission, or `null` if not a valid Mission
193
+ */
194
+ private sanitizeMission;
195
+ /**
196
+ * Load a single mission from disk, validated + normalized via
197
+ * {@link sanitizeMission}.
198
+ *
199
+ * @param missionId - Mission ID
200
+ * @returns The mission, or `null` if missing/unreadable/not a valid Mission
201
+ */
202
+ private loadMission;
203
+ /**
204
+ * Load all missions from disk, skipping unreadable AND structurally-invalid
205
+ * files (each validated + normalized via {@link sanitizeMission}).
206
+ *
207
+ * @returns Array of valid missions
208
+ */
209
+ private loadAllMissions;
210
+ /**
211
+ * Persist a mission to disk (creating the missions directory if needed).
212
+ *
213
+ * @param mission - Mission to write
214
+ */
215
+ private persistMission;
216
+ }
217
+ //# sourceMappingURL=okr-cascade.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"okr-cascade.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/okr-cascade.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAMH,OAAO,EASL,KAAK,OAAO,EACZ,KAAK,YAAY,EAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAkC/E;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,UAAU,EAAE,YAAY,CAAC;IACzB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAQ5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IA6FzB;;;;;;;;;;OAUG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BlF;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IAiCnB;;;;;;OAMG;IACG,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAajE;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAKjB,qEAAqE;IACrE,OAAO,CAAC,cAAc;IAItB,qDAAqD;IACrD,OAAO,CAAC,cAAc;IAItB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;;OAMG;YACW,WAAW;IASzB;;;;;OAKG;YACW,eAAe;IAqB7B;;;;OAIG;YACW,cAAc;CAK7B"}