jumbo-cli 2.7.1 → 2.8.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 (63) hide show
  1. package/assets/skills/jumbo-add-component/SKILL.md +45 -0
  2. package/assets/skills/jumbo-add-decision/SKILL.md +42 -0
  3. package/assets/skills/jumbo-add-dependency/SKILL.md +41 -0
  4. package/assets/skills/jumbo-add-guideline/SKILL.md +47 -0
  5. package/assets/skills/jumbo-add-invariant/SKILL.md +44 -0
  6. package/dist/application/context/audience-pains/add/AddAudiencePainCommandHandler.d.ts +1 -2
  7. package/dist/application/context/audience-pains/add/AddAudiencePainCommandHandler.d.ts.map +1 -1
  8. package/dist/application/context/audience-pains/add/AddAudiencePainCommandHandler.js +2 -3
  9. package/dist/application/context/audience-pains/add/AddAudiencePainCommandHandler.js.map +1 -1
  10. package/dist/application/context/audiences/add/AddAudienceCommandHandler.d.ts +1 -2
  11. package/dist/application/context/audiences/add/AddAudienceCommandHandler.d.ts.map +1 -1
  12. package/dist/application/context/audiences/add/AddAudienceCommandHandler.js +2 -3
  13. package/dist/application/context/audiences/add/AddAudienceCommandHandler.js.map +1 -1
  14. package/dist/application/context/components/add/AddComponentCommandHandler.js +2 -2
  15. package/dist/application/context/components/add/AddComponentCommandHandler.js.map +1 -1
  16. package/dist/application/context/decisions/add/AddDecisionCommandHandler.js +2 -2
  17. package/dist/application/context/decisions/add/AddDecisionCommandHandler.js.map +1 -1
  18. package/dist/application/context/goals/add/AddGoalCommandHandler.js +2 -2
  19. package/dist/application/context/goals/add/AddGoalCommandHandler.js.map +1 -1
  20. package/dist/application/context/guidelines/add/AddGuidelineCommandHandler.js +2 -2
  21. package/dist/application/context/guidelines/add/AddGuidelineCommandHandler.js.map +1 -1
  22. package/dist/application/context/invariants/add/AddInvariantCommandHandler.js +2 -2
  23. package/dist/application/context/invariants/add/AddInvariantCommandHandler.js.map +1 -1
  24. package/dist/application/context/project/init/AgentSelection.d.ts +1 -1
  25. package/dist/application/context/project/init/AgentSelection.d.ts.map +1 -1
  26. package/dist/application/context/relations/add/AddRelationCommandHandler.js +2 -2
  27. package/dist/application/context/relations/add/AddRelationCommandHandler.js.map +1 -1
  28. package/dist/application/context/sessions/start/StartSessionCommandHandler.js +2 -2
  29. package/dist/application/context/sessions/start/StartSessionCommandHandler.js.map +1 -1
  30. package/dist/application/context/value-propositions/add/AddValuePropositionCommandHandler.js +2 -2
  31. package/dist/application/context/value-propositions/add/AddValuePropositionCommandHandler.js.map +1 -1
  32. package/dist/application/identity/IdGenerator.d.ts +4 -0
  33. package/dist/application/identity/IdGenerator.d.ts.map +1 -0
  34. package/dist/application/identity/IdGenerator.js +11 -0
  35. package/dist/application/identity/IdGenerator.js.map +1 -0
  36. package/dist/domain/project/CursorRulesContent.d.ts +32 -0
  37. package/dist/domain/project/CursorRulesContent.d.ts.map +1 -0
  38. package/dist/domain/project/CursorRulesContent.js +60 -0
  39. package/dist/domain/project/CursorRulesContent.js.map +1 -0
  40. package/dist/infrastructure/context/project/init/AgentFileProtocol.d.ts.map +1 -1
  41. package/dist/infrastructure/context/project/init/AgentFileProtocol.js +6 -2
  42. package/dist/infrastructure/context/project/init/AgentFileProtocol.js.map +1 -1
  43. package/dist/infrastructure/context/project/init/CodexConfigurer.d.ts +34 -0
  44. package/dist/infrastructure/context/project/init/CodexConfigurer.d.ts.map +1 -0
  45. package/dist/infrastructure/context/project/init/CodexConfigurer.js +43 -0
  46. package/dist/infrastructure/context/project/init/CodexConfigurer.js.map +1 -0
  47. package/dist/infrastructure/context/project/init/CopilotConfigurer.d.ts +14 -4
  48. package/dist/infrastructure/context/project/init/CopilotConfigurer.d.ts.map +1 -1
  49. package/dist/infrastructure/context/project/init/CopilotConfigurer.js +97 -4
  50. package/dist/infrastructure/context/project/init/CopilotConfigurer.js.map +1 -1
  51. package/dist/infrastructure/context/project/init/CursorConfigurer.d.ts +60 -0
  52. package/dist/infrastructure/context/project/init/CursorConfigurer.d.ts.map +1 -0
  53. package/dist/infrastructure/context/project/init/CursorConfigurer.js +236 -0
  54. package/dist/infrastructure/context/project/init/CursorConfigurer.js.map +1 -0
  55. package/dist/infrastructure/context/project/init/VibeConfigurer.d.ts +33 -0
  56. package/dist/infrastructure/context/project/init/VibeConfigurer.d.ts.map +1 -0
  57. package/dist/infrastructure/context/project/init/VibeConfigurer.js +42 -0
  58. package/dist/infrastructure/context/project/init/VibeConfigurer.js.map +1 -0
  59. package/package.json +1 -2
  60. package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.d.ts +0 -40
  61. package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.d.ts.map +0 -1
  62. package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.js +0 -135
  63. package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: jumbo-add-component
3
+ description: Use liberally when you create, discover, or modify a software component. Registers the component with Jumbo so future sessions have accurate architectural context.
4
+ ---
5
+
6
+ # Add Component
7
+
8
+ Register a software component with Jumbo when you create one, discover an unregistered one, or significantly change one's responsibility.
9
+
10
+ ## Command Syntax
11
+
12
+ ```bash
13
+ jumbo component add \
14
+ --name "<ComponentName>" \
15
+ --type "<service|db|queue|ui|lib|api|worker|cache|storage>" \
16
+ --description "<What the component does>" \
17
+ --responsibility "<Single responsibility>" \
18
+ --path "<file-path>"
19
+ ```
20
+
21
+ ## Bad Example
22
+
23
+ ```bash
24
+ jumbo component add \
25
+ --name "Utils" \
26
+ --type "lib" \
27
+ --description "Helper functions" \
28
+ --responsibility "Various utilities" \
29
+ --path "src/utils.ts"
30
+ ```
31
+
32
+ Vague name, description, and responsibility. A future agent cannot determine what this component does or whether to use it.
33
+
34
+ ## Good Example
35
+
36
+ ```bash
37
+ jumbo component add \
38
+ --name "EventStreamProjectionBuilder" \
39
+ --type "service" \
40
+ --description "Rebuilds materialized projections from event streams by replaying events through registered projection handlers" \
41
+ --responsibility "Projection rebuilding from event history" \
42
+ --path "src/infrastructure/projections/EventStreamProjectionBuilder.ts"
43
+ ```
44
+
45
+ Name is self-documenting. Description and responsibility tell a future agent exactly what the component does and when to interact with it.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: jumbo-add-decision
3
+ description: Use liberally when you make an architectural choice, select a technology, or reject an alternative. Records the decision so future sessions understand why the codebase looks the way it does.
4
+ ---
5
+
6
+ # Add Decision
7
+
8
+ Register an architectural decision with Jumbo when you choose one approach over alternatives. Decisions explain **why** the codebase looks the way it does — without them, future agents may reverse your choices or repeat your analysis.
9
+
10
+ ## Command Syntax
11
+
12
+ ```bash
13
+ jumbo decision add \
14
+ --title "<Decision title>" \
15
+ --context "<Problem statement and background>" \
16
+ --rationale "<Why this choice was made>" \
17
+ --alternative "<Rejected option>" \
18
+ --consequences "<Trade-offs accepted>"
19
+ ```
20
+
21
+ ## Bad Example
22
+
23
+ ```bash
24
+ jumbo decision add \
25
+ --title "Use events" \
26
+ --context "Need to track changes"
27
+ ```
28
+
29
+ Title is too vague to be useful. Missing rationale means a future agent has no basis for understanding the choice. Missing alternatives means they cannot evaluate whether the context has changed.
30
+
31
+ ## Good Example
32
+
33
+ ```bash
34
+ jumbo decision add \
35
+ --title "Use event sourcing over state-based persistence for domain aggregates" \
36
+ --context "Domain aggregates need audit history and the ability to rebuild state at any point in time" \
37
+ --rationale "Event sourcing provides a complete audit trail and enables temporal queries without additional infrastructure" \
38
+ --alternative "State-based persistence with a separate audit log table" \
39
+ --consequences "Requires projection rebuilding for read models; increases storage for high-frequency aggregates"
40
+ ```
41
+
42
+ Title names both the chosen and rejected pattern. Context explains the problem. Rationale connects the choice to the problem. Alternatives and consequences give future agents the information they need to judge whether the decision still holds.
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: jumbo-add-dependency
3
+ description: Use liberally when you introduce, discover, or upgrade a third-party package or external service. Registers the dependency so future sessions know what the project relies on.
4
+ ---
5
+
6
+ # Add Dependency
7
+
8
+ Register a third-party dependency with Jumbo when you add a new package, discover an unregistered one, or integrate with an external service.
9
+
10
+ ## Command Syntax
11
+
12
+ ```bash
13
+ jumbo dependency add \
14
+ --name "<Display name>" \
15
+ --ecosystem "<npm|pip|maven|service|...>" \
16
+ --package-name "<package-identifier>" \
17
+ --version-constraint "<semver-range>"
18
+ ```
19
+
20
+ ## Bad Example
21
+
22
+ ```bash
23
+ jumbo dependency add \
24
+ --name "testing lib" \
25
+ --ecosystem npm \
26
+ --package-name jest
27
+ ```
28
+
29
+ Name does not match the package. Missing version constraint means future agents cannot detect version drift or compatibility issues.
30
+
31
+ ## Good Example
32
+
33
+ ```bash
34
+ jumbo dependency add \
35
+ --name "Jest" \
36
+ --ecosystem npm \
37
+ --package-name jest \
38
+ --version-constraint "^29.7.0"
39
+ ```
40
+
41
+ Name matches the package identity. Ecosystem and package name enable automated lookups. Version constraint communicates the compatibility range.
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: jumbo-add-guideline
3
+ description: Use liberally when the user expresses a preference about how work should be done — coding style, process, testing approach, communication style. Captures the guideline so future sessions follow it without being told again.
4
+ ---
5
+
6
+ # Add Guideline
7
+
8
+ Register a guideline with Jumbo when the user states a preference about how work should be done. Guidelines shape agent behavior across all future sessions.
9
+
10
+ **Important:** Guidelines must be **generally applicable** to the project. Do not word them for a specific use case, goal, or task. A guideline that only applies to one situation belongs in a goal's criteria, not in the guideline registry.
11
+
12
+ ## Command Syntax
13
+
14
+ ```bash
15
+ jumbo guideline add \
16
+ --category "<testing|codingStyle|process|communication|documentation|security|performance|other>" \
17
+ --title "<Guideline title>" \
18
+ --description "<What to do and when>" \
19
+ --rationale "<Why this matters>" \
20
+ --enforcement "<How compliance is verified>"
21
+ ```
22
+
23
+ ## Bad Example
24
+
25
+ ```bash
26
+ jumbo guideline add \
27
+ --category codingStyle \
28
+ --title "Use arrow functions in the auth module" \
29
+ --description "All functions in src/auth/ should be arrow functions" \
30
+ --rationale "Consistency in auth code" \
31
+ --enforcement "Code review"
32
+ ```
33
+
34
+ Too narrow — scoped to one module and one task. This is a goal criterion, not a project guideline.
35
+
36
+ ## Good Example
37
+
38
+ ```bash
39
+ jumbo guideline add \
40
+ --category codingStyle \
41
+ --title "Prefer arrow functions for non-method declarations" \
42
+ --description "Use arrow functions for callbacks, inline handlers, and standalone function expressions. Use function declarations for exported named functions and class methods." \
43
+ --rationale "Consistent lexical scoping and concise syntax across the codebase" \
44
+ --enforcement "ESLint prefer-arrow-callback rule"
45
+ ```
46
+
47
+ Applies project-wide. States when to use and when not to use. Rationale explains the benefit. Enforcement is concrete.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: jumbo-add-invariant
3
+ description: Use liberally when you discover or are told a non-negotiable constraint — something that must always be true regardless of context. Registers the invariant so future sessions never violate it.
4
+ ---
5
+
6
+ # Add Invariant
7
+
8
+ Register an invariant with Jumbo when you discover a non-negotiable constraint — a rule that must hold true across the entire project at all times, regardless of which goal is being implemented.
9
+
10
+ **Important:** Invariants must be **generally applicable** to the project. Do not word them for a specific use case, goal, or task. An invariant that only applies during one piece of work belongs in a goal's criteria, not in the invariant registry. If you find yourself writing "when working on X" or "for the Y feature", it is not an invariant.
11
+
12
+ ## Command Syntax
13
+
14
+ ```bash
15
+ jumbo invariant add \
16
+ --title "<Invariant title>" \
17
+ --description "<What must always be true>" \
18
+ --enforcement "<How compliance is verified>" \
19
+ --rationale "<Why this is non-negotiable>"
20
+ ```
21
+
22
+ ## Bad Example
23
+
24
+ ```bash
25
+ jumbo invariant add \
26
+ --title "Session endpoint must validate tokens" \
27
+ --description "The /api/session endpoint must check JWT expiry" \
28
+ --enforcement "Integration test" \
29
+ --rationale "Security requirement for session management"
30
+ ```
31
+
32
+ Too narrow — applies to one endpoint. This is a requirement for a specific feature, not a project-wide invariant.
33
+
34
+ ## Good Example
35
+
36
+ ```bash
37
+ jumbo invariant add \
38
+ --title "All API endpoints must validate authentication tokens" \
39
+ --description "Every endpoint that accepts authenticated requests must verify token validity, expiry, and scope before processing the request" \
40
+ --enforcement "Middleware applied at router level; integration tests verify 401 for expired/invalid tokens" \
41
+ --rationale "Security compliance requirement — unauthenticated access to protected resources is a critical vulnerability"
42
+ ```
43
+
44
+ Applies to every endpoint, not just one. States the full constraint. Enforcement is structural (middleware) not manual. Rationale explains why violation is unacceptable.
@@ -10,13 +10,12 @@
10
10
  import { AddAudiencePainCommand } from "./AddAudiencePainCommand.js";
11
11
  import { IAudiencePainAddedEventWriter } from "./IAudiencePainAddedEventWriter.js";
12
12
  import { IEventBus } from "../../../messaging/IEventBus.js";
13
- import { UUID } from "../../../../domain/BaseEvent.js";
14
13
  export declare class AddAudiencePainCommandHandler {
15
14
  private readonly eventWriter;
16
15
  private readonly eventBus;
17
16
  constructor(eventWriter: IAudiencePainAddedEventWriter, eventBus: IEventBus);
18
17
  execute(command: AddAudiencePainCommand): Promise<{
19
- painId: UUID;
18
+ painId: string;
20
19
  }>;
21
20
  }
22
21
  //# sourceMappingURL=AddAudiencePainCommandHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddAudiencePainCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/audience-pains/add/AddAudiencePainCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD,qBAAa,6BAA6B;IAEtC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,WAAW,EAAE,6BAA6B,EAC1C,QAAQ,EAAE,SAAS;IAGhC,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE,CAAC;CAoB1E"}
1
+ {"version":3,"file":"AddAudiencePainCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/audience-pains/add/AddAudiencePainCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAI5D,qBAAa,6BAA6B;IAEtC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,WAAW,EAAE,6BAA6B,EAC1C,QAAQ,EAAE,SAAS;IAGhC,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAkB5E"}
@@ -11,6 +11,7 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AddAudiencePainCommandHandler = void 0;
13
13
  const AudiencePain_js_1 = require("../../../../domain/audience-pains/AudiencePain.js");
14
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
14
15
  class AddAudiencePainCommandHandler {
15
16
  constructor(eventWriter, eventBus) {
16
17
  this.eventWriter = eventWriter;
@@ -18,9 +19,7 @@ class AddAudiencePainCommandHandler {
18
19
  }
19
20
  async execute(command) {
20
21
  // Generate unique ID for new pain
21
- const painId = `pain-${Date.now()}-${Math.random()
22
- .toString(36)
23
- .substr(2, 9)}`;
22
+ const painId = IdGenerator_js_1.IdGenerator.generate();
24
23
  // 1. Create new aggregate
25
24
  const pain = AudiencePain_js_1.AudiencePain.create(painId);
26
25
  // 2. Domain logic produces event
@@ -1 +1 @@
1
- {"version":3,"file":"AddAudiencePainCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/audience-pains/add/AddAudiencePainCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAKH,uFAAiF;AAGjF,MAAa,6BAA6B;IACxC,YACmB,WAA0C,EAC1C,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA+B;QAC1C,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA+B;QAC3C,kCAAkC;QAClC,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;aAC/C,QAAQ,CAAC,EAAE,CAAC;aACZ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAU,CAAC;QAE1B,0BAA0B;QAC1B,MAAM,IAAI,GAAG,8BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzC,iCAAiC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAE3D,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AA1BD,sEA0BC"}
1
+ {"version":3,"file":"AddAudiencePainCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/audience-pains/add/AddAudiencePainCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAKH,uFAAiF;AACjF,qEAA+D;AAE/D,MAAa,6BAA6B;IACxC,YACmB,WAA0C,EAC1C,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA+B;QAC1C,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA+B;QAC3C,kCAAkC;QAClC,MAAM,MAAM,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAEtC,0BAA0B;QAC1B,MAAM,IAAI,GAAG,8BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzC,iCAAiC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAE3D,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAxBD,sEAwBC"}
@@ -10,13 +10,12 @@
10
10
  import { AddAudienceCommand } from "./AddAudienceCommand.js";
11
11
  import { IAudienceAddedEventWriter } from "./IAudienceAddedEventWriter.js";
12
12
  import { IEventBus } from "../../../messaging/IEventBus.js";
13
- import { UUID } from "../../../../domain/BaseEvent.js";
14
13
  export declare class AddAudienceCommandHandler {
15
14
  private readonly eventWriter;
16
15
  private readonly eventBus;
17
16
  constructor(eventWriter: IAudienceAddedEventWriter, eventBus: IEventBus);
18
17
  execute(command: AddAudienceCommand): Promise<{
19
- audienceId: UUID;
18
+ audienceId: string;
20
19
  }>;
21
20
  }
22
21
  //# sourceMappingURL=AddAudienceCommandHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddAudienceCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/audiences/add/AddAudienceCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,SAAS;IAGhC,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,IAAI,CAAA;KAAE,CAAC;CAwB1E"}
1
+ {"version":3,"file":"AddAudienceCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/audiences/add/AddAudienceCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAI5D,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,SAAS;IAGhC,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAsB5E"}
@@ -11,6 +11,7 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AddAudienceCommandHandler = void 0;
13
13
  const Audience_js_1 = require("../../../../domain/audiences/Audience.js");
14
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
14
15
  class AddAudienceCommandHandler {
15
16
  constructor(eventWriter, eventBus) {
16
17
  this.eventWriter = eventWriter;
@@ -18,9 +19,7 @@ class AddAudienceCommandHandler {
18
19
  }
19
20
  async execute(command) {
20
21
  // Generate unique ID for new audience
21
- const audienceId = `audience-${Date.now()}-${Math.random()
22
- .toString(36)
23
- .substr(2, 9)}`;
22
+ const audienceId = IdGenerator_js_1.IdGenerator.generate();
24
23
  // 1. Create new aggregate
25
24
  const audience = Audience_js_1.Audience.create(audienceId);
26
25
  // 2. Domain logic produces event
@@ -1 +1 @@
1
- {"version":3,"file":"AddAudienceCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/audiences/add/AddAudienceCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAKH,0EAAoE;AAGpE,MAAa,yBAAyB;IACpC,YACmB,WAAsC,EACtC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA2B;QACtC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,sCAAsC;QACtC,MAAM,UAAU,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;aACvD,QAAQ,CAAC,EAAE,CAAC;aACZ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAU,CAAC;QAE1B,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,sBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7C,iCAAiC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACxB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AA9BD,8DA8BC"}
1
+ {"version":3,"file":"AddAudienceCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/audiences/add/AddAudienceCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAKH,0EAAoE;AACpE,qEAA+D;AAE/D,MAAa,yBAAyB;IACpC,YACmB,WAAsC,EACtC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA2B;QACtC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,sCAAsC;QACtC,MAAM,UAAU,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAE1C,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,sBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7C,iCAAiC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACxB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AA5BD,8DA4BC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddComponentCommandHandler = void 0;
4
4
  const Component_js_1 = require("../../../../domain/components/Component.js");
5
- const node_crypto_1 = require("node:crypto");
5
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
6
6
  class AddComponentCommandHandler {
7
7
  constructor(eventWriter, eventBus, reader) {
8
8
  this.eventWriter = eventWriter;
@@ -23,7 +23,7 @@ class AddComponentCommandHandler {
23
23
  }
24
24
  else {
25
25
  // Create new component
26
- componentId = (0, node_crypto_1.randomUUID)();
26
+ componentId = IdGenerator_js_1.IdGenerator.generate();
27
27
  const component = Component_js_1.Component.create(componentId);
28
28
  event = component.add(command.name, command.type, command.description, command.responsibility, command.path);
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AddComponentCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/components/add/AddComponentCommandHandler.ts"],"names":[],"mappings":";;;AAIA,6EAAuE;AAEvE,6CAAyC;AAEzC,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,QAAmB,EACnB,MAA2B;QAF3B,gBAAW,GAAX,WAAW,CAA4B;QACvC,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAAqB;IAC3C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,mDAAmD;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5D,IAAI,WAAmB,CAAC;QACxB,IAAI,KAAK,CAAC;QAEV,IAAI,QAAQ,EAAE,CAAC;YACb,kDAAkD;YAClD,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,wBAAS,CAAC,SAAS,CAAC,WAAW,EAAE,OAA2B,CAAC,CAAC;YAEhF,KAAK,GAAG,SAAS,CAAC,MAAM,CACtB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,CACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,WAAW,GAAG,IAAA,wBAAU,GAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,wBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEhD,KAAK,GAAG,SAAS,CAAC,GAAG,CACnB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,IAAI,CACb,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,uBAAuB;QACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF;AAhDD,gEAgDC"}
1
+ {"version":3,"file":"AddComponentCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/components/add/AddComponentCommandHandler.ts"],"names":[],"mappings":";;;AAIA,6EAAuE;AAEvE,qEAA+D;AAE/D,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,QAAmB,EACnB,MAA2B;QAF3B,gBAAW,GAAX,WAAW,CAA4B;QACvC,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAAqB;IAC3C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,mDAAmD;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5D,IAAI,WAAmB,CAAC;QACxB,IAAI,KAAK,CAAC;QAEV,IAAI,QAAQ,EAAE,CAAC;YACb,kDAAkD;YAClD,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,wBAAS,CAAC,SAAS,CAAC,WAAW,EAAE,OAA2B,CAAC,CAAC;YAEhF,KAAK,GAAG,SAAS,CAAC,MAAM,CACtB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,CACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,WAAW,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,wBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEhD,KAAK,GAAG,SAAS,CAAC,GAAG,CACnB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,IAAI,CACb,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,uBAAuB;QACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF;AAhDD,gEAgDC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddDecisionCommandHandler = void 0;
4
- const crypto_1 = require("crypto");
4
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
5
5
  const Decision_js_1 = require("../../../../domain/decisions/Decision.js");
6
6
  /**
7
7
  * Application layer handler for the AddDecision command.
@@ -14,7 +14,7 @@ class AddDecisionCommandHandler {
14
14
  }
15
15
  async execute(command) {
16
16
  // 1. Create new aggregate with unique ID
17
- const decisionId = `dec_${(0, crypto_1.randomUUID)()}`;
17
+ const decisionId = IdGenerator_js_1.IdGenerator.generate();
18
18
  const decision = Decision_js_1.Decision.create(decisionId);
19
19
  // 2. Domain logic produces event
20
20
  const event = decision.add(command.title, command.context, command.rationale, command.alternatives, command.consequences);
@@ -1 +1 @@
1
- {"version":3,"file":"AddDecisionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/decisions/add/AddDecisionCommandHandler.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAIpC,0EAAoE;AAGpE;;;GAGG;AACH,MAAa,yBAAyB;IACpC,YACmB,WAAsC,EACtC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA2B;QACtC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,yCAAyC;QACzC,MAAM,UAAU,GAAG,OAAO,IAAA,mBAAU,GAAE,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,sBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7C,iCAAiC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACxB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,CACC,CAAC;QAExB,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AA5BD,8DA4BC"}
1
+ {"version":3,"file":"AddDecisionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/decisions/add/AddDecisionCommandHandler.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAI/D,0EAAoE;AAGpE;;;GAGG;AACH,MAAa,yBAAyB;IACpC,YACmB,WAAsC,EACtC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA2B;QACtC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,yCAAyC;QACzC,MAAM,UAAU,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,sBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7C,iCAAiC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACxB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,CACC,CAAC;QAExB,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AA5BD,8DA4BC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddGoalCommandHandler = void 0;
4
- const crypto_1 = require("crypto");
4
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
5
5
  const Goal_js_1 = require("../../../../domain/goals/Goal.js");
6
6
  const Constants_js_1 = require("../../../../domain/goals/Constants.js");
7
7
  /**
@@ -23,7 +23,7 @@ class AddGoalCommandHandler {
23
23
  }
24
24
  async execute(command) {
25
25
  // Generate new goal ID (handler owns ID generation)
26
- const goalId = `goal_${(0, crypto_1.randomUUID)()}`;
26
+ const goalId = IdGenerator_js_1.IdGenerator.generate();
27
27
  // Create new aggregate
28
28
  const goal = Goal_js_1.Goal.create(goalId);
29
29
  // Domain logic produces event
@@ -1 +1 @@
1
- {"version":3,"file":"AddGoalCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/goals/add/AddGoalCommandHandler.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAOpC,8DAAwD;AACxD,wEAA8F;AAE9F;;;;;;GAMG;AACH,MAAa,qBAAqB;IAChC,YACmB,WAAkC,EAClC,QAAmB;IACpC,mEAAmE;IAClD,iBAA2C,EAC3C,iBAA2C,EAC3C,UAA8B;QAL9B,gBAAW,GAAX,WAAW,CAAuB;QAClC,aAAQ,GAAR,QAAQ,CAAW;QAEnB,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,eAAU,GAAV,UAAU,CAAoB;IAC9C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,oDAAoD;QACpD,MAAM,MAAM,GAAG,QAAQ,IAAA,mBAAU,GAAE,EAAE,CAAC;QAEtC,uBAAuB;QACvB,MAAM,IAAI,GAAG,cAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjC,8BAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,8BAA8B;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,mEAAmE;QACnE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,yFAAyF;QACzF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,4BAA4B,CAAC,cAAsB,EAAE,SAAiB;QAClF,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,gCAAgC;QAChC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,IAAA,iCAAkB,EAAC,gCAAiB,CAAC,SAAS,EAAE;gBAC9C,MAAM,EAAE,cAAc;aACvB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,2DAA2D;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,cAAI,CAAC,SAAS,CAAC,cAAc,EAAE,OAAc,CAAC,CAAC;QAEpE,wCAAwC;QACxC,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CACrC,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QAEF,2BAA2B;QAC3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEjD,2BAA2B;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;CACF;AAnFD,sDAmFC"}
1
+ {"version":3,"file":"AddGoalCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/goals/add/AddGoalCommandHandler.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAO/D,8DAAwD;AACxD,wEAA8F;AAE9F;;;;;;GAMG;AACH,MAAa,qBAAqB;IAChC,YACmB,WAAkC,EAClC,QAAmB;IACpC,mEAAmE;IAClD,iBAA2C,EAC3C,iBAA2C,EAC3C,UAA8B;QAL9B,gBAAW,GAAX,WAAW,CAAuB;QAClC,aAAQ,GAAR,QAAQ,CAAW;QAEnB,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,eAAU,GAAV,UAAU,CAAoB;IAC9C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,oDAAoD;QACpD,MAAM,MAAM,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAEtC,uBAAuB;QACvB,MAAM,IAAI,GAAG,cAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjC,8BAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,8BAA8B;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,mEAAmE;QACnE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,yFAAyF;QACzF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,4BAA4B,CAAC,cAAsB,EAAE,SAAiB;QAClF,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,gCAAgC;QAChC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,IAAA,iCAAkB,EAAC,gCAAiB,CAAC,SAAS,EAAE;gBAC9C,MAAM,EAAE,cAAc;aACvB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,2DAA2D;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,cAAI,CAAC,SAAS,CAAC,cAAc,EAAE,OAAc,CAAC,CAAC;QAEpE,wCAAwC;QACxC,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CACrC,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QAEF,2BAA2B;QAC3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEjD,2BAA2B;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;CACF;AAnFD,sDAmFC"}
@@ -8,7 +8,7 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.AddGuidelineCommandHandler = void 0;
10
10
  const Guideline_js_1 = require("../../../../domain/guidelines/Guideline.js");
11
- const crypto_1 = require("crypto");
11
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
12
12
  class AddGuidelineCommandHandler {
13
13
  constructor(eventWriter, eventBus) {
14
14
  this.eventWriter = eventWriter;
@@ -16,7 +16,7 @@ class AddGuidelineCommandHandler {
16
16
  }
17
17
  async execute(command) {
18
18
  // 1. Create new aggregate
19
- const guidelineId = (0, crypto_1.randomUUID)();
19
+ const guidelineId = IdGenerator_js_1.IdGenerator.generate();
20
20
  const guideline = Guideline_js_1.Guideline.create(guidelineId);
21
21
  // 2. Domain logic produces event
22
22
  const event = guideline.add(command.category, command.title, command.description, command.rationale, command.enforcement, command.examples);
@@ -1 +1 @@
1
- {"version":3,"file":"AddGuidelineCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/guidelines/add/AddGuidelineCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH,6EAAuE;AACvE,mCAAoC;AAEpC,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA4B;QACvC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAA,mBAAU,GAAE,CAAC;QACjC,MAAM,SAAS,GAAG,wBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEhD,iCAAiC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CACzB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,0BAA0B;QAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF;AA7BD,gEA6BC"}
1
+ {"version":3,"file":"AddGuidelineCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/guidelines/add/AddGuidelineCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH,6EAAuE;AACvE,qEAA+D;AAE/D,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA4B;QACvC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,0BAA0B;QAC1B,MAAM,WAAW,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,wBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEhD,iCAAiC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CACzB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,0BAA0B;QAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF;AA7BD,gEA6BC"}
@@ -12,7 +12,7 @@
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.AddInvariantCommandHandler = void 0;
14
14
  const Invariant_js_1 = require("../../../../domain/invariants/Invariant.js");
15
- const node_crypto_1 = require("node:crypto");
15
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
16
16
  class AddInvariantCommandHandler {
17
17
  constructor(eventWriter, invariantReader, eventBus) {
18
18
  this.eventWriter = eventWriter;
@@ -26,7 +26,7 @@ class AddInvariantCommandHandler {
26
26
  throw new Error(`Invariant with title "${command.title}" already exists`);
27
27
  }
28
28
  // 1. Create new aggregate
29
- const invariantId = `inv_${(0, node_crypto_1.randomUUID)()}`;
29
+ const invariantId = IdGenerator_js_1.IdGenerator.generate();
30
30
  const invariant = Invariant_js_1.Invariant.create(invariantId);
31
31
  // 2. Domain logic produces event
32
32
  const event = invariant.add(command.title, command.description, command.enforcement, command.rationale);
@@ -1 +1 @@
1
- {"version":3,"file":"AddInvariantCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/invariants/add/AddInvariantCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAMH,6EAAuE;AACvE,6CAAyC;AAEzC,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,eAAoC,EACpC,QAAmB;QAFnB,gBAAW,GAAX,WAAW,CAA4B;QACvC,oBAAe,GAAf,eAAe,CAAqB;QACpC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,KAAK,kBAAkB,CAAC,CAAC;QAC5E,CAAC;QAED,0BAA0B;QAC1B,MAAM,WAAW,GAAG,OAAO,IAAA,wBAAU,GAAE,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,wBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEhD,iCAAiC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CACzB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,SAAS,CAClB,CAAC;QAEF,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF;AAlCD,gEAkCC"}
1
+ {"version":3,"file":"AddInvariantCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/invariants/add/AddInvariantCommandHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAMH,6EAAuE;AACvE,qEAA+D;AAE/D,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,eAAoC,EACpC,QAAmB;QAFnB,gBAAW,GAAX,WAAW,CAA4B;QACvC,oBAAe,GAAf,eAAe,CAAqB;QACpC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,KAAK,kBAAkB,CAAC,CAAC;QAC5E,CAAC;QAED,0BAA0B;QAC1B,MAAM,WAAW,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,wBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEhD,iCAAiC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CACzB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,SAAS,CAClB,CAAC;QAEF,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF;AAlCD,gEAkCC"}
@@ -1,4 +1,4 @@
1
- export type AgentId = "claude" | "gemini" | "copilot" | "github-hooks";
1
+ export type AgentId = "claude" | "gemini" | "copilot" | "vibe" | "codex" | "cursor";
2
2
  export interface AvailableAgent {
3
3
  readonly id: AgentId;
4
4
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AgentSelection.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/project/init/AgentSelection.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"AgentSelection.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/project/init/AgentSelection.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddRelationCommandHandler = void 0;
4
- const crypto_1 = require("crypto");
4
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
5
5
  const Relation_js_1 = require("../../../../domain/relations/Relation.js");
6
6
  /**
7
7
  * Handles adding a new relation.
@@ -22,7 +22,7 @@ class AddRelationCommandHandler {
22
22
  return { relationId: existingRelation.relationId };
23
23
  }
24
24
  // Generate new relation ID
25
- const relationId = `relation_${(0, crypto_1.randomUUID)()}`;
25
+ const relationId = IdGenerator_js_1.IdGenerator.generate();
26
26
  // Create new aggregate
27
27
  const relation = Relation_js_1.Relation.create(relationId);
28
28
  // Domain logic produces event
@@ -1 +1 @@
1
- {"version":3,"file":"AddRelationCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/add/AddRelationCommandHandler.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAKpC,0EAAoE;AAEpE;;;;GAIG;AACH,MAAa,yBAAyB;IACpC,YACmB,WAAsC,EACtC,QAAmB,EACnB,MAA4B;QAF5B,gBAAW,GAAX,WAAW,CAA2B;QACtC,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAAsB;IAC5C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,2DAA2D;QAC3D,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CACvD,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,YAAY,CACrB,CAAC;QAEF,IAAI,gBAAgB,EAAE,CAAC;YACrB,oEAAoE;YACpE,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,CAAC;QAED,2BAA2B;QAC3B,MAAM,UAAU,GAAG,YAAY,IAAA,mBAAU,GAAE,EAAE,CAAC;QAE9C,uBAAuB;QACvB,MAAM,QAAQ,GAAG,sBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7C,8BAA8B;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACxB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,8BAA8B;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,mEAAmE;QACnE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AA/CD,8DA+CC"}
1
+ {"version":3,"file":"AddRelationCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/add/AddRelationCommandHandler.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAK/D,0EAAoE;AAEpE;;;;GAIG;AACH,MAAa,yBAAyB;IACpC,YACmB,WAAsC,EACtC,QAAmB,EACnB,MAA4B;QAF5B,gBAAW,GAAX,WAAW,CAA2B;QACtC,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAAsB;IAC5C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,2DAA2D;QAC3D,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CACvD,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,YAAY,CACrB,CAAC;QAEF,IAAI,gBAAgB,EAAE,CAAC;YACrB,oEAAoE;YACpE,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrD,CAAC;QAED,2BAA2B;QAC3B,MAAM,UAAU,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAE1C,uBAAuB;QACvB,MAAM,QAAQ,GAAG,sBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7C,8BAA8B;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACxB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,8BAA8B;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,mEAAmE;QACnE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AA/CD,8DA+CC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StartSessionCommandHandler = void 0;
4
- const crypto_1 = require("crypto");
4
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
5
5
  const Session_js_1 = require("../../../../domain/sessions/Session.js");
6
6
  /**
7
7
  * Handles starting a new session.
@@ -14,7 +14,7 @@ class StartSessionCommandHandler {
14
14
  }
15
15
  async execute(command) {
16
16
  // Generate new session ID
17
- const sessionId = `session_${(0, crypto_1.randomUUID)()}`;
17
+ const sessionId = IdGenerator_js_1.IdGenerator.generate();
18
18
  // Create new aggregate
19
19
  const session = Session_js_1.Session.create(sessionId);
20
20
  // Domain logic produces event
@@ -1 +1 @@
1
- {"version":3,"file":"StartSessionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/sessions/start/StartSessionCommandHandler.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAIpC,uEAAiE;AAEjE;;;GAGG;AACH,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA4B;QACvC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,OAA4B;QAE5B,0BAA0B;QAC1B,MAAM,SAAS,GAAG,WAAW,IAAA,mBAAU,GAAE,EAAE,CAAC;QAE5C,uBAAuB;QACvB,MAAM,OAAO,GAAG,oBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE1C,8BAA8B;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE9B,8BAA8B;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,mEAAmE;QACnE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;CACF;AA1BD,gEA0BC"}
1
+ {"version":3,"file":"StartSessionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/sessions/start/StartSessionCommandHandler.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAI/D,uEAAiE;AAEjE;;;GAGG;AACH,MAAa,0BAA0B;IACrC,YACmB,WAAuC,EACvC,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAA4B;QACvC,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,OAA4B;QAE5B,0BAA0B;QAC1B,MAAM,SAAS,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAEzC,uBAAuB;QACvB,MAAM,OAAO,GAAG,oBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE1C,8BAA8B;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE9B,8BAA8B;QAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,mEAAmE;QACnE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;CACF;AA1BD,gEA0BC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddValuePropositionCommandHandler = void 0;
4
4
  const ValueProposition_js_1 = require("../../../../domain/value-propositions/ValueProposition.js");
5
- const crypto_1 = require("crypto");
5
+ const IdGenerator_js_1 = require("../../../identity/IdGenerator.js");
6
6
  /**
7
7
  * Handler for adding a new value proposition
8
8
  * Publishes events via event bus for projection updates
@@ -14,7 +14,7 @@ class AddValuePropositionCommandHandler {
14
14
  }
15
15
  async execute(command) {
16
16
  // 1. Create new aggregate with generated ID
17
- const valuePropositionId = `value_${(0, crypto_1.randomUUID)()}`;
17
+ const valuePropositionId = IdGenerator_js_1.IdGenerator.generate();
18
18
  const valueProposition = ValueProposition_js_1.ValueProposition.create(valuePropositionId);
19
19
  // 2. Domain logic produces event
20
20
  const event = valueProposition.add(command.title, command.description, command.benefit, command.measurableOutcome);
@@ -1 +1 @@
1
- {"version":3,"file":"AddValuePropositionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/value-propositions/add/AddValuePropositionCommandHandler.ts"],"names":[],"mappings":";;;AAGA,mGAA6F;AAE7F,mCAAoC;AAEpC;;;GAGG;AACH,MAAa,iCAAiC;IAC5C,YACmB,WAA8C,EAC9C,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAAmC;QAC9C,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,OAAmC;QAEnC,4CAA4C;QAC5C,MAAM,kBAAkB,GAAG,SAAS,IAAA,mBAAU,GAAE,EAAE,CAAC;QACnD,MAAM,gBAAgB,GAAG,sCAAgB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAErE,iCAAiC;QACjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAChC,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,iBAAiB,CACI,CAAC;QAEhC,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAChC,CAAC;CACF;AA7BD,8EA6BC"}
1
+ {"version":3,"file":"AddValuePropositionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/value-propositions/add/AddValuePropositionCommandHandler.ts"],"names":[],"mappings":";;;AAGA,mGAA6F;AAE7F,qEAA+D;AAE/D;;;GAGG;AACH,MAAa,iCAAiC;IAC5C,YACmB,WAA8C,EAC9C,QAAmB;QADnB,gBAAW,GAAX,WAAW,CAAmC;QAC9C,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,OAAmC;QAEnC,4CAA4C;QAC5C,MAAM,kBAAkB,GAAG,4BAAW,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,sCAAgB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAErE,iCAAiC;QACjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAChC,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,iBAAiB,CACI,CAAC;QAEhC,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAChC,CAAC;CACF;AA7BD,8EA6BC"}
@@ -0,0 +1,4 @@
1
+ export declare class IdGenerator {
2
+ static generate(): string;
3
+ }
4
+ //# sourceMappingURL=IdGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdGenerator.d.ts","sourceRoot":"","sources":["../../../src/application/identity/IdGenerator.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdGenerator = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ class IdGenerator {
6
+ static generate() {
7
+ return (0, node_crypto_1.randomUUID)();
8
+ }
9
+ }
10
+ exports.IdGenerator = IdGenerator;
11
+ //# sourceMappingURL=IdGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdGenerator.js","sourceRoot":"","sources":["../../../src/application/identity/IdGenerator.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,MAAa,WAAW;IACtB,MAAM,CAAC,QAAQ;QACb,OAAO,IAAA,wBAAU,GAAE,CAAC;IACtB,CAAC;CACF;AAJD,kCAIC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Domain Value Object: Cursor Rules Content
3
+ *
4
+ * Codifies the content for .cursor/rules/jumbo.mdc that directs
5
+ * Cursor agents to read JUMBO.md on startup.
6
+ * Handles content generation with YAML frontmatter (alwaysApply: true)
7
+ * and section replacement for repair operations.
8
+ *
9
+ * Rationale: Codified in domain rather than template file to support
10
+ * npm distribution (no file copying during build).
11
+ */
12
+ export declare class CursorRulesContent {
13
+ private static readonly SECTION_MARKER;
14
+ /**
15
+ * Generate full .cursor/rules/jumbo.mdc content with YAML frontmatter
16
+ * and a reference to JUMBO.md.
17
+ */
18
+ static getFullContent(): string;
19
+ /**
20
+ * Marker used to detect if Jumbo section already exists in the rules file.
21
+ */
22
+ static getSectionMarker(): string;
23
+ /**
24
+ * Replace the Jumbo section in an existing rules file with the current content.
25
+ * Finds the section marker and replaces everything from there to EOF
26
+ * with the current section content.
27
+ *
28
+ * @returns Updated content, or null if marker not found
29
+ */
30
+ static replaceSection(existingContent: string): string | null;
31
+ }
32
+ //# sourceMappingURL=CursorRulesContent.d.ts.map