crewly 1.8.13 → 1.10.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 (174) hide show
  1. package/config/roles/orchestrator/prompt.md +55 -2
  2. package/config/roles/product-manager/prompt.md +40 -0
  3. package/config/roles/team-leader/prompt.md +33 -0
  4. package/config/skills/agent/core/get-sops/SKILL.md +6 -2
  5. package/config/skills/agent/core/get-sops/execute.sh +26 -1
  6. package/config/skills/agent/core/get-team-norms/SKILL.md +69 -0
  7. package/config/skills/agent/core/update-sop/SKILL.md +73 -0
  8. package/config/skills/agent/core/update-sop/execute.sh +115 -0
  9. package/config/skills/agent/core/update-team-norm/SKILL.md +67 -0
  10. package/config/skills/orchestrator/decompose-okr/SKILL.md +107 -0
  11. package/config/skills/orchestrator/decompose-okr/execute.sh +142 -0
  12. package/config/skills/registry.json +52 -6
  13. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +2 -0
  14. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  15. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +50 -1
  16. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  17. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +2 -0
  18. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
  19. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +6 -2
  20. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
  21. package/dist/backend/backend/src/controllers/mission/kr.controller.d.ts +8 -0
  22. package/dist/backend/backend/src/controllers/mission/kr.controller.d.ts.map +1 -1
  23. package/dist/backend/backend/src/controllers/mission/kr.controller.js +17 -0
  24. package/dist/backend/backend/src/controllers/mission/kr.controller.js.map +1 -1
  25. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +198 -26
  27. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  29. package/dist/backend/backend/src/controllers/slack/slack.controller.js +10 -0
  30. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  31. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  32. package/dist/backend/backend/src/controllers/system/system.controller.js +2 -1
  33. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  34. package/dist/backend/backend/src/controllers/team/team.controller.d.ts +17 -0
  35. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  36. package/dist/backend/backend/src/controllers/team/team.controller.js +32 -0
  37. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  38. package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +45 -0
  39. package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -1
  40. package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +364 -46
  41. package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -1
  42. package/dist/backend/backend/src/controllers/wiki/wiki.routes.d.ts.map +1 -1
  43. package/dist/backend/backend/src/controllers/wiki/wiki.routes.js +9 -1
  44. package/dist/backend/backend/src/controllers/wiki/wiki.routes.js.map +1 -1
  45. package/dist/backend/backend/src/index.d.ts.map +1 -1
  46. package/dist/backend/backend/src/index.js +44 -70
  47. package/dist/backend/backend/src/index.js.map +1 -1
  48. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  49. package/dist/backend/backend/src/routes/api.routes.js +12 -6
  50. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  51. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +13 -4
  52. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  53. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +47 -11
  54. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  55. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts +28 -0
  56. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts.map +1 -1
  57. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js +49 -0
  58. package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js.map +1 -1
  59. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +60 -2
  60. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  61. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +93 -3
  62. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  63. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts +25 -0
  64. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -1
  65. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js +33 -0
  66. package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -1
  67. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +28 -0
  68. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +48 -0
  70. package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
  71. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +21 -0
  72. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  73. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +30 -0
  74. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  75. package/dist/backend/backend/src/services/chat-v2/types.d.ts +14 -0
  76. package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
  77. package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
  78. package/dist/backend/backend/src/services/index.d.ts +0 -1
  79. package/dist/backend/backend/src/services/index.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/index.js +0 -1
  81. package/dist/backend/backend/src/services/index.js.map +1 -1
  82. package/dist/backend/backend/src/services/intent-task/intent-task-follow-up.service.d.ts +26 -108
  83. package/dist/backend/backend/src/services/intent-task/intent-task-follow-up.service.d.ts.map +1 -1
  84. package/dist/backend/backend/src/services/intent-task/intent-task-follow-up.service.js +26 -214
  85. package/dist/backend/backend/src/services/intent-task/intent-task-follow-up.service.js.map +1 -1
  86. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +11 -0
  87. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  88. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +36 -0
  89. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  90. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
  91. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  92. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +21 -0
  93. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  94. package/dist/backend/backend/src/services/slack/slack.service.d.ts +12 -0
  95. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  96. package/dist/backend/backend/src/services/slack/slack.service.js +53 -1
  97. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  98. package/dist/backend/backend/src/services/sop/sop.service.d.ts +10 -0
  99. package/dist/backend/backend/src/services/sop/sop.service.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/sop/sop.service.js +71 -10
  101. package/dist/backend/backend/src/services/sop/sop.service.js.map +1 -1
  102. package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts +92 -1
  103. package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/v3/kr-tracking.service.js +169 -1
  105. package/dist/backend/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/v3/mission-period.service.d.ts.map +1 -1
  107. package/dist/backend/backend/src/services/v3/mission-period.service.js +7 -1
  108. package/dist/backend/backend/src/services/v3/mission-period.service.js.map +1 -1
  109. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts +217 -0
  110. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts.map +1 -0
  111. package/dist/backend/backend/src/services/v3/okr-cascade.service.js +417 -0
  112. package/dist/backend/backend/src/services/v3/okr-cascade.service.js.map +1 -0
  113. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts +11 -0
  114. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/v3/okr-review.service.js +50 -0
  116. package/dist/backend/backend/src/services/v3/okr-review.service.js.map +1 -1
  117. package/dist/backend/backend/src/services/wiki/sop-catalog.service.d.ts +83 -0
  118. package/dist/backend/backend/src/services/wiki/sop-catalog.service.d.ts.map +1 -0
  119. package/dist/backend/backend/src/services/wiki/sop-catalog.service.js +185 -0
  120. package/dist/backend/backend/src/services/wiki/sop-catalog.service.js.map +1 -0
  121. package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.d.ts.map +1 -1
  122. package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js +12 -0
  123. package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js.map +1 -1
  124. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +91 -0
  125. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
  126. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +180 -0
  127. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
  128. package/dist/backend/backend/src/services/wiki/wiki-overlay.resolver.d.ts +43 -0
  129. package/dist/backend/backend/src/services/wiki/wiki-overlay.resolver.d.ts.map +1 -0
  130. package/dist/backend/backend/src/services/wiki/wiki-overlay.resolver.js +67 -0
  131. package/dist/backend/backend/src/services/wiki/wiki-overlay.resolver.js.map +1 -0
  132. package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts +79 -19
  133. package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -1
  134. package/dist/backend/backend/src/services/wiki/wiki-search.service.js +275 -106
  135. package/dist/backend/backend/src/services/wiki/wiki-search.service.js.map +1 -1
  136. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts.map +1 -1
  137. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js +13 -0
  138. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js.map +1 -1
  139. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +13 -0
  140. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  141. package/dist/backend/backend/src/services/workflow/cron-task.service.js +43 -3
  142. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  143. package/dist/backend/backend/src/types/sop.types.d.ts +7 -0
  144. package/dist/backend/backend/src/types/sop.types.d.ts.map +1 -1
  145. package/dist/backend/backend/src/types/sop.types.js.map +1 -1
  146. package/dist/backend/backend/src/types/v2/index.d.ts +4 -4
  147. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  148. package/dist/backend/backend/src/types/v2/index.js +2 -2
  149. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  150. package/dist/backend/backend/src/types/v2/key-result.types.d.ts +84 -0
  151. package/dist/backend/backend/src/types/v2/key-result.types.d.ts.map +1 -1
  152. package/dist/backend/backend/src/types/v2/key-result.types.js +73 -3
  153. package/dist/backend/backend/src/types/v2/key-result.types.js.map +1 -1
  154. package/dist/backend/backend/src/types/v2/mission.types.d.ts +235 -0
  155. package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
  156. package/dist/backend/backend/src/types/v2/mission.types.js +230 -0
  157. package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
  158. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +7 -0
  159. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  160. package/dist/backend/backend/src/types/v2/work-item.types.js +1 -1
  161. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  162. package/dist/cli/backend/src/types/sop.types.d.ts +7 -0
  163. package/dist/cli/backend/src/types/sop.types.d.ts.map +1 -1
  164. package/dist/cli/backend/src/types/sop.types.js.map +1 -1
  165. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +7 -0
  166. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  167. package/dist/cli/backend/src/types/v2/work-item.types.js +1 -1
  168. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  169. package/frontend/dist/assets/index-4099a91c.js +4961 -0
  170. package/frontend/dist/assets/index-44266b5d.css +42 -0
  171. package/frontend/dist/index.html +2 -2
  172. package/package.json +1 -1
  173. package/frontend/dist/assets/index-068bb4f6.css +0 -42
  174. package/frontend/dist/assets/index-c24ceb15.js +0 -4960
@@ -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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"}
@@ -27,6 +27,110 @@ export const MISSION_TRANSITIONS = {
27
27
  completed: new Set(),
28
28
  cancelled: new Set(),
29
29
  };
30
+ /** All valid MissionLevel values, ordered top → bottom of the cascade. */
31
+ export const MISSION_LEVELS = ['company', 'team', 'project'];
32
+ /**
33
+ * Numeric depth of each cascade tier (company = 0, team = 1, project = 2).
34
+ * Used to enforce the "child is exactly one tier below parent" rule.
35
+ */
36
+ export const MISSION_LEVEL_DEPTH = {
37
+ company: 0,
38
+ team: 1,
39
+ project: 2,
40
+ };
41
+ /** Depth threshold at or beyond which a mission is treated as `project` level. */
42
+ export const PROJECT_LEVEL_DEPTH = 2;
43
+ /**
44
+ * Checks whether a string is a valid MissionLevel.
45
+ *
46
+ * @param value - Candidate string
47
+ * @returns `true` if `value` is one of `company` | `team` | `project`
48
+ */
49
+ export function isValidMissionLevel(value) {
50
+ return MISSION_LEVELS.includes(value);
51
+ }
52
+ /**
53
+ * Validates a single downward cascade step: a child level may only sit exactly
54
+ * one tier below its parent, and `company` must be a root (no parent).
55
+ *
56
+ * Adjacency matrix:
57
+ * | child | required parent | parentMissionId |
58
+ * |---------|-----------------|-------------------|
59
+ * | company | — | must be undefined |
60
+ * | team | company | required |
61
+ * | project | team | required |
62
+ *
63
+ * @param childLevel - The level of the child mission
64
+ * @param parentLevel - The level of the parent mission, or `undefined` if no parent
65
+ * @returns `null` if the pairing is legal, otherwise a human-readable reason
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * validateLevelLink('team', 'company'); // null
70
+ * validateLevelLink('company', 'team'); // "A company mission cannot have a parent"
71
+ * ```
72
+ */
73
+ export function validateLevelLink(childLevel, parentLevel) {
74
+ if (childLevel === 'company') {
75
+ return parentLevel === undefined
76
+ ? null
77
+ : 'A company mission cannot have a parent';
78
+ }
79
+ if (parentLevel === undefined) {
80
+ return `A ${childLevel} mission requires a parent mission`;
81
+ }
82
+ const expectedDepth = MISSION_LEVEL_DEPTH[childLevel] - 1;
83
+ if (MISSION_LEVEL_DEPTH[parentLevel] !== expectedDepth) {
84
+ return `A ${childLevel} mission must have a ${MISSION_LEVELS[expectedDepth]} parent, not a ${parentLevel} parent`;
85
+ }
86
+ return null;
87
+ }
88
+ /** All valid ProposalState values. */
89
+ export const PROPOSAL_STATES = [
90
+ 'draft',
91
+ 'pending_approval',
92
+ 'approved',
93
+ 'rejected',
94
+ ];
95
+ /**
96
+ * Legal proposal-state transitions.
97
+ *
98
+ * - draft → pending_approval
99
+ * - pending_approval → approved | rejected
100
+ * - approved → (terminal)
101
+ * - rejected → draft (owner can ask for a redraft)
102
+ */
103
+ export const PROPOSAL_TRANSITIONS = {
104
+ draft: new Set(['pending_approval']),
105
+ pending_approval: new Set(['approved', 'rejected']),
106
+ approved: new Set(),
107
+ rejected: new Set(['draft']),
108
+ };
109
+ /**
110
+ * Checks whether a string is a valid ProposalState.
111
+ *
112
+ * @param value - Candidate string
113
+ * @returns `true` if `value` is one of the four proposal states
114
+ */
115
+ export function isValidProposalState(value) {
116
+ return PROPOSAL_STATES.includes(value);
117
+ }
118
+ /**
119
+ * Checks whether a proposal-state transition is legal.
120
+ *
121
+ * @param from - Current proposal state
122
+ * @param to - Proposed next proposal state
123
+ * @returns `true` if `from → to` is an allowed transition
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * isValidProposalTransition('pending_approval', 'approved'); // true
128
+ * isValidProposalTransition('approved', 'draft'); // false
129
+ * ```
130
+ */
131
+ export function isValidProposalTransition(from, to) {
132
+ return PROPOSAL_TRANSITIONS[from].has(to);
133
+ }
30
134
  /** All valid MissionPriority values (ordered most → least important). */
31
135
  export const MISSION_PRIORITIES = [
32
136
  'critical',
@@ -376,6 +480,11 @@ export function createMission(input) {
376
480
  updatedAt: now,
377
481
  learnings: [],
378
482
  period: input.period,
483
+ parentMissionId: input.parentMissionId,
484
+ level: input.level ?? (input.parentMissionId ? undefined : 'company'),
485
+ projectId: input.projectId,
486
+ approval: input.approval,
487
+ priority: input.priority,
379
488
  };
380
489
  }
381
490
  // ---------------------------------------------------------------------------
@@ -422,6 +531,35 @@ export function isPeriodPast(period, now = new Date()) {
422
531
  export function isPeriodFuture(period, now = new Date()) {
423
532
  return now < new Date(period.startDate);
424
533
  }
534
+ /**
535
+ * Build a `monthly` MissionPeriod for a given calendar month.
536
+ *
537
+ * The period is half-open `[first day of month, first day of next month)`,
538
+ * matching the `now >= start && now < end` convention used by
539
+ * {@link isPeriodActive}. Dates are UTC so the boundaries are deterministic
540
+ * regardless of server timezone. Handles December → January year rollover.
541
+ *
542
+ * @param year - Full year, e.g. `2026`.
543
+ * @param month - 1-based month (`1` = January … `12` = December).
544
+ * @returns A `monthly` MissionPeriod with ISO8601 start/end and a `YYYY-MM` label.
545
+ *
546
+ * @example
547
+ * ```typescript
548
+ * createMonthlyPeriod(2026, 3); // March 2026: 2026-03-01 → 2026-04-01, label "2026-03"
549
+ * ```
550
+ */
551
+ export function createMonthlyPeriod(year, month) {
552
+ const start = new Date(Date.UTC(year, month - 1, 1));
553
+ // month is 1-based, so passing it as the 0-based Date month index yields the
554
+ // first day of the *next* month (Date normalizes 12 → January of year+1).
555
+ const end = new Date(Date.UTC(year, month, 1));
556
+ return {
557
+ type: 'monthly',
558
+ startDate: start.toISOString(),
559
+ endDate: end.toISOString(),
560
+ label: `${year}-${String(month).padStart(2, '0')}`,
561
+ };
562
+ }
425
563
  // ---------------------------------------------------------------------------
426
564
  // Mission Hierarchy Helpers
427
565
  // ---------------------------------------------------------------------------
@@ -461,6 +599,98 @@ export function validateParentLink(childId, parentId, byId) {
461
599
  }
462
600
  return null;
463
601
  }
602
+ /**
603
+ * Derives a Mission's cascade level by walking its `parentMissionId` chain.
604
+ *
605
+ * Depth 0 (no parent) ⇒ `company`, depth 1 ⇒ `team`, depth ≥ 2 ⇒ `project`.
606
+ * Used to backfill `level` for legacy missions persisted before the cascade
607
+ * fields existed. Guards against cycles defensively (returns the level computed
608
+ * at the point a repeat is detected rather than looping forever).
609
+ *
610
+ * @param missionId - The mission whose level to derive
611
+ * @param byId - All missions indexed by ID (need only `id` + `parentMissionId`)
612
+ * @returns The derived MissionLevel
613
+ *
614
+ * @example
615
+ * ```ts
616
+ * deriveLevel('teamM', new Map([['teamM', { id: 'teamM', parentMissionId: 'co' }], ['co', { id: 'co' }]])); // 'team'
617
+ * ```
618
+ */
619
+ export function deriveLevel(missionId, byId) {
620
+ let depth = 0;
621
+ const seen = new Set();
622
+ let cursor = byId.get(missionId)?.parentMissionId;
623
+ while (cursor && depth < PROJECT_LEVEL_DEPTH) {
624
+ if (seen.has(cursor))
625
+ break;
626
+ seen.add(cursor);
627
+ depth += 1;
628
+ cursor = byId.get(cursor)?.parentMissionId;
629
+ }
630
+ if (depth === 0)
631
+ return 'company';
632
+ if (depth === 1)
633
+ return 'team';
634
+ return 'project';
635
+ }
636
+ /**
637
+ * Resolve a mission's effective cascade level through a SINGLE canonical rule,
638
+ * shared by every read path (cascade service, mission routes' read-migration).
639
+ *
640
+ * Prefers the mission's explicit `level`; when absent (legacy missions persisted
641
+ * before the cascade fields existed) it falls back to {@link deriveLevel}, which
642
+ * walks the `parentMissionId` chain (no parent ⇒ `company`, one parent ⇒ `team`,
643
+ * two-or-more ⇒ `project`). Centralising the fallback here guarantees the same
644
+ * document resolves to the same level no matter which code path reads it.
645
+ *
646
+ * @param mission - The mission whose level to resolve (needs `id`, optional
647
+ * `level` + `parentMissionId`)
648
+ * @param byId - All missions indexed by ID for the parent-chain walk
649
+ * @returns The resolved {@link MissionLevel}
650
+ *
651
+ * @example
652
+ * ```ts
653
+ * resolveMissionLevel({ id: 'co', }, byId); // 'company' (no parent)
654
+ * resolveMissionLevel({ id: 't', parentMissionId: 'co' }, byId); // 'team'
655
+ * ```
656
+ */
657
+ export function resolveMissionLevel(mission, byId) {
658
+ if (mission.level)
659
+ return mission.level;
660
+ return deriveLevel(mission.id, byId);
661
+ }
662
+ /**
663
+ * Combined cascade-link guard: runs the raw cycle/self-ref check
664
+ * ({@link validateParentLink}) AND the level-adjacency check
665
+ * ({@link validateLevelLink}). The parent's level is read from `byId` (its own
666
+ * `level` field, falling back to {@link deriveLevel} when absent).
667
+ *
668
+ * `validateParentLink` keeps its original signature for callers that only need
669
+ * the cycle check.
670
+ *
671
+ * @param childId - The mission that would acquire the parent
672
+ * @param childLevel - The proposed level of the child mission
673
+ * @param parentId - The proposed parent mission ID, or `undefined` for a root
674
+ * @param byId - All existing missions indexed by ID
675
+ * @returns `null` if the link is valid, otherwise a human-readable reason
676
+ *
677
+ * @example
678
+ * ```ts
679
+ * const reason = validateCascadeLink('p1', 'project', 't1', byId);
680
+ * if (reason) throw new Error(reason);
681
+ * ```
682
+ */
683
+ export function validateCascadeLink(childId, childLevel, parentId, byId) {
684
+ if (parentId === undefined) {
685
+ return validateLevelLink(childLevel, undefined);
686
+ }
687
+ const cycleReason = validateParentLink(childId, parentId, byId);
688
+ if (cycleReason)
689
+ return cycleReason;
690
+ const parent = byId.get(parentId);
691
+ const parentLevel = parent?.level ?? deriveLevel(parentId, byId);
692
+ return validateLevelLink(childLevel, parentLevel);
693
+ }
464
694
  /**
465
695
  * Sort missions by status (active first), then by priority rank, then by recency.
466
696
  *
@@ -1 +1 @@
1
- {"version":3,"file":"mission.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/mission.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mission.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/mission.types.ts"],"names":[],"mappings":"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"}
@@ -175,6 +175,13 @@ export interface WorkItem {
175
175
  * Input for creating a new WorkItem.
176
176
  */
177
177
  export interface CreateWorkItemInput {
178
+ /**
179
+ * Optional deterministic id. When omitted a random uuid is generated. Supply
180
+ * a stable id when the WorkItem represents an idempotent occurrence (e.g. a
181
+ * cron fire keyed to its slot) so re-creating the same occurrence is a no-op
182
+ * via the pool's `(id)` dedup instead of a duplicate.
183
+ */
184
+ id?: string;
178
185
  requestId?: string;
179
186
  parentWorkItemId?: string;
180
187
  type: WorkItemType;