jumbo-cli 2.7.2 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/assets/skills/define-jumbo-goals/SKILL.md +2 -0
- package/assets/skills/jumbo-add-component/SKILL.md +45 -0
- package/assets/skills/jumbo-add-decision/SKILL.md +42 -0
- package/assets/skills/jumbo-add-dependency/SKILL.md +41 -0
- package/assets/skills/jumbo-add-guideline/SKILL.md +47 -0
- package/assets/skills/jumbo-add-invariant/SKILL.md +44 -0
- package/assets/skills/jumbo-design-goal/SKILL.md +123 -0
- package/dist/application/context/project/init/AgentSelection.d.ts +1 -1
- package/dist/application/context/project/init/AgentSelection.d.ts.map +1 -1
- package/dist/application/context/relations/deactivate/DeactivateRelationCommandHandler.d.ts.map +1 -1
- package/dist/application/context/relations/deactivate/DeactivateRelationCommandHandler.js +5 -0
- package/dist/application/context/relations/deactivate/DeactivateRelationCommandHandler.js.map +1 -1
- package/dist/domain/project/CursorRulesContent.d.ts +32 -0
- package/dist/domain/project/CursorRulesContent.d.ts.map +1 -0
- package/dist/domain/project/CursorRulesContent.js +60 -0
- package/dist/domain/project/CursorRulesContent.js.map +1 -0
- package/dist/infrastructure/context/project/init/AgentFileProtocol.d.ts.map +1 -1
- package/dist/infrastructure/context/project/init/AgentFileProtocol.js +6 -2
- package/dist/infrastructure/context/project/init/AgentFileProtocol.js.map +1 -1
- package/dist/infrastructure/context/project/init/CodexConfigurer.d.ts +34 -0
- package/dist/infrastructure/context/project/init/CodexConfigurer.d.ts.map +1 -0
- package/dist/infrastructure/context/project/init/CodexConfigurer.js +43 -0
- package/dist/infrastructure/context/project/init/CodexConfigurer.js.map +1 -0
- package/dist/infrastructure/context/project/init/CopilotConfigurer.d.ts +14 -4
- package/dist/infrastructure/context/project/init/CopilotConfigurer.d.ts.map +1 -1
- package/dist/infrastructure/context/project/init/CopilotConfigurer.js +97 -4
- package/dist/infrastructure/context/project/init/CopilotConfigurer.js.map +1 -1
- package/dist/infrastructure/context/project/init/CursorConfigurer.d.ts +60 -0
- package/dist/infrastructure/context/project/init/CursorConfigurer.d.ts.map +1 -0
- package/dist/infrastructure/context/project/init/CursorConfigurer.js +236 -0
- package/dist/infrastructure/context/project/init/CursorConfigurer.js.map +1 -0
- package/dist/infrastructure/context/project/init/VibeConfigurer.d.ts +33 -0
- package/dist/infrastructure/context/project/init/VibeConfigurer.d.ts.map +1 -0
- package/dist/infrastructure/context/project/init/VibeConfigurer.js +42 -0
- package/dist/infrastructure/context/project/init/VibeConfigurer.js.map +1 -0
- package/dist/infrastructure/host/HostBuilder.d.ts.map +1 -1
- package/dist/infrastructure/host/HostBuilder.js +4 -6
- package/dist/infrastructure/host/HostBuilder.js.map +1 -1
- package/dist/infrastructure/local/LocalDatabaseRebuildService.d.ts +9 -13
- package/dist/infrastructure/local/LocalDatabaseRebuildService.d.ts.map +1 -1
- package/dist/infrastructure/local/LocalDatabaseRebuildService.js +36 -29
- package/dist/infrastructure/local/LocalDatabaseRebuildService.js.map +1 -1
- package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts +25 -0
- package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts.map +1 -0
- package/dist/infrastructure/messaging/ProjectionBusFactory.js +242 -0
- package/dist/infrastructure/messaging/ProjectionBusFactory.js.map +1 -0
- package/package.json +1 -1
- package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.d.ts +0 -40
- package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.d.ts.map +0 -1
- package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.js +0 -135
- package/dist/infrastructure/context/project/init/GitHubHooksConfigurer.js.map +0 -1
- package/dist/infrastructure/local/TemporarySequentialDatabaseRebuildService.d.ts +0 -43
- package/dist/infrastructure/local/TemporarySequentialDatabaseRebuildService.d.ts.map +0 -1
- package/dist/infrastructure/local/TemporarySequentialDatabaseRebuildService.js +0 -441
- package/dist/infrastructure/local/TemporarySequentialDatabaseRebuildService.js.map +0 -1
- package/dist/infrastructure/messaging/TemporarySequentialRebuildEventBus.d.ts +0 -37
- package/dist/infrastructure/messaging/TemporarySequentialRebuildEventBus.d.ts.map +0 -1
- package/dist/infrastructure/messaging/TemporarySequentialRebuildEventBus.js +0 -64
- package/dist/infrastructure/messaging/TemporarySequentialRebuildEventBus.js.map +0 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Factory that creates an event bus wired with projection-only handlers.
|
|
4
|
+
*
|
|
5
|
+
* Used during database rebuild to replay events through pure projectors
|
|
6
|
+
* without triggering side effects (cascades, maintenance goals, command
|
|
7
|
+
* handlers). Side-effect events are already persisted in the event store
|
|
8
|
+
* from original execution and are replayed as regular projection events.
|
|
9
|
+
*
|
|
10
|
+
* Each projector performs a single synchronous SQLite write with no
|
|
11
|
+
* cross-aggregate reads, so parallel execution via InProcessEventBus
|
|
12
|
+
* is safe.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ProjectionBusFactory = void 0;
|
|
16
|
+
const InProcessEventBus_js_1 = require("./InProcessEventBus.js");
|
|
17
|
+
// Session projectors
|
|
18
|
+
const SqliteSessionStartedProjector_js_1 = require("../context/sessions/start/SqliteSessionStartedProjector.js");
|
|
19
|
+
const SqliteSessionEndedProjector_js_1 = require("../context/sessions/end/SqliteSessionEndedProjector.js");
|
|
20
|
+
// Goal projectors
|
|
21
|
+
const SqliteGoalAddedProjector_js_1 = require("../context/goals/add/SqliteGoalAddedProjector.js");
|
|
22
|
+
const SqliteGoalStartedProjector_js_1 = require("../context/goals/start/SqliteGoalStartedProjector.js");
|
|
23
|
+
const SqliteGoalUpdatedProjector_js_1 = require("../context/goals/update/SqliteGoalUpdatedProjector.js");
|
|
24
|
+
const SqliteGoalBlockedProjector_js_1 = require("../context/goals/block/SqliteGoalBlockedProjector.js");
|
|
25
|
+
const SqliteGoalUnblockedProjector_js_1 = require("../context/goals/unblock/SqliteGoalUnblockedProjector.js");
|
|
26
|
+
const SqliteGoalPausedProjector_js_1 = require("../context/goals/pause/SqliteGoalPausedProjector.js");
|
|
27
|
+
const SqliteGoalResumedProjector_js_1 = require("../context/goals/resume/SqliteGoalResumedProjector.js");
|
|
28
|
+
const SqliteGoalCompletedProjector_js_1 = require("../context/goals/complete/SqliteGoalCompletedProjector.js");
|
|
29
|
+
const SqliteGoalRefinedProjector_js_1 = require("../context/goals/refine/SqliteGoalRefinedProjector.js");
|
|
30
|
+
const SqliteGoalResetProjector_js_1 = require("../context/goals/reset/SqliteGoalResetProjector.js");
|
|
31
|
+
const SqliteGoalRemovedProjector_js_1 = require("../context/goals/remove/SqliteGoalRemovedProjector.js");
|
|
32
|
+
const SqliteGoalProgressUpdatedProjector_js_1 = require("../context/goals/update-progress/SqliteGoalProgressUpdatedProjector.js");
|
|
33
|
+
const SqliteGoalSubmittedForReviewProjector_js_1 = require("../context/goals/review/SqliteGoalSubmittedForReviewProjector.js");
|
|
34
|
+
const SqliteGoalQualifiedProjector_js_1 = require("../context/goals/qualify/SqliteGoalQualifiedProjector.js");
|
|
35
|
+
const SqliteGoalCommittedProjector_js_1 = require("../context/goals/commit/SqliteGoalCommittedProjector.js");
|
|
36
|
+
const SqliteGoalRejectedProjector_js_1 = require("../context/goals/reject/SqliteGoalRejectedProjector.js");
|
|
37
|
+
const SqliteGoalSubmittedProjector_js_1 = require("../context/goals/submit/SqliteGoalSubmittedProjector.js");
|
|
38
|
+
const SqliteGoalCodifyingStartedProjector_js_1 = require("../context/goals/codify/SqliteGoalCodifyingStartedProjector.js");
|
|
39
|
+
const SqliteGoalClosedProjector_js_1 = require("../context/goals/close/SqliteGoalClosedProjector.js");
|
|
40
|
+
const SqliteGoalApprovedProjector_js_1 = require("../context/goals/approve/SqliteGoalApprovedProjector.js");
|
|
41
|
+
const SqliteGoalStatusMigratedProjector_js_1 = require("../context/goals/migrate/SqliteGoalStatusMigratedProjector.js");
|
|
42
|
+
// Architecture projectors
|
|
43
|
+
const SqliteArchitectureDefinedProjector_js_1 = require("../context/architecture/define/SqliteArchitectureDefinedProjector.js");
|
|
44
|
+
const SqliteArchitectureUpdatedProjector_js_1 = require("../context/architecture/update/SqliteArchitectureUpdatedProjector.js");
|
|
45
|
+
// Component projectors
|
|
46
|
+
const SqliteComponentAddedProjector_js_1 = require("../context/components/add/SqliteComponentAddedProjector.js");
|
|
47
|
+
const SqliteComponentUpdatedProjector_js_1 = require("../context/components/update/SqliteComponentUpdatedProjector.js");
|
|
48
|
+
const SqliteComponentDeprecatedProjector_js_1 = require("../context/components/deprecate/SqliteComponentDeprecatedProjector.js");
|
|
49
|
+
const SqliteComponentUndeprecatedProjector_js_1 = require("../context/components/undeprecate/SqliteComponentUndeprecatedProjector.js");
|
|
50
|
+
const SqliteComponentRemovedProjector_js_1 = require("../context/components/remove/SqliteComponentRemovedProjector.js");
|
|
51
|
+
const SqliteComponentRenamedProjector_js_1 = require("../context/components/rename/SqliteComponentRenamedProjector.js");
|
|
52
|
+
// Dependency projectors
|
|
53
|
+
const SqliteDependencyAddedProjector_js_1 = require("../context/dependencies/add/SqliteDependencyAddedProjector.js");
|
|
54
|
+
const SqliteDependencyUpdatedProjector_js_1 = require("../context/dependencies/update/SqliteDependencyUpdatedProjector.js");
|
|
55
|
+
const SqliteDependencyRemovedProjector_js_1 = require("../context/dependencies/remove/SqliteDependencyRemovedProjector.js");
|
|
56
|
+
// Decision projectors
|
|
57
|
+
const SqliteDecisionAddedProjector_js_1 = require("../context/decisions/add/SqliteDecisionAddedProjector.js");
|
|
58
|
+
const SqliteDecisionUpdatedProjector_js_1 = require("../context/decisions/update/SqliteDecisionUpdatedProjector.js");
|
|
59
|
+
const SqliteDecisionReversedProjector_js_1 = require("../context/decisions/reverse/SqliteDecisionReversedProjector.js");
|
|
60
|
+
const SqliteDecisionRestoredProjector_js_1 = require("../context/decisions/restore/SqliteDecisionRestoredProjector.js");
|
|
61
|
+
const SqliteDecisionSupersededProjector_js_1 = require("../context/decisions/supersede/SqliteDecisionSupersededProjector.js");
|
|
62
|
+
// Guideline projectors
|
|
63
|
+
const SqliteGuidelineAddedProjector_js_1 = require("../context/guidelines/add/SqliteGuidelineAddedProjector.js");
|
|
64
|
+
const SqliteGuidelineUpdatedProjector_js_1 = require("../context/guidelines/update/SqliteGuidelineUpdatedProjector.js");
|
|
65
|
+
const SqliteGuidelineRemovedProjector_js_1 = require("../context/guidelines/remove/SqliteGuidelineRemovedProjector.js");
|
|
66
|
+
// Invariant projectors
|
|
67
|
+
const SqliteInvariantAddedProjector_js_1 = require("../context/invariants/add/SqliteInvariantAddedProjector.js");
|
|
68
|
+
const SqliteInvariantUpdatedProjector_js_1 = require("../context/invariants/update/SqliteInvariantUpdatedProjector.js");
|
|
69
|
+
const SqliteInvariantRemovedProjector_js_1 = require("../context/invariants/remove/SqliteInvariantRemovedProjector.js");
|
|
70
|
+
// Project projectors
|
|
71
|
+
const SqliteProjectInitializedProjector_js_1 = require("../context/project/init/SqliteProjectInitializedProjector.js");
|
|
72
|
+
const SqliteProjectUpdatedProjector_js_1 = require("../context/project/update/SqliteProjectUpdatedProjector.js");
|
|
73
|
+
// Audience pain projectors
|
|
74
|
+
const SqliteAudiencePainAddedProjector_js_1 = require("../context/audience-pains/add/SqliteAudiencePainAddedProjector.js");
|
|
75
|
+
const SqliteAudiencePainUpdatedProjector_js_1 = require("../context/audience-pains/update/SqliteAudiencePainUpdatedProjector.js");
|
|
76
|
+
// Audience projectors
|
|
77
|
+
const SqliteAudienceAddedProjector_js_1 = require("../context/audiences/add/SqliteAudienceAddedProjector.js");
|
|
78
|
+
const SqliteAudienceUpdatedProjector_js_1 = require("../context/audiences/update/SqliteAudienceUpdatedProjector.js");
|
|
79
|
+
const SqliteAudienceRemovedProjector_js_1 = require("../context/audiences/remove/SqliteAudienceRemovedProjector.js");
|
|
80
|
+
// Value proposition projectors
|
|
81
|
+
const SqliteValuePropositionAddedProjector_js_1 = require("../context/value-propositions/add/SqliteValuePropositionAddedProjector.js");
|
|
82
|
+
const SqliteValuePropositionUpdatedProjector_js_1 = require("../context/value-propositions/update/SqliteValuePropositionUpdatedProjector.js");
|
|
83
|
+
const SqliteValuePropositionRemovedProjector_js_1 = require("../context/value-propositions/remove/SqliteValuePropositionRemovedProjector.js");
|
|
84
|
+
// Relation projectors
|
|
85
|
+
const SqliteRelationAddedProjector_js_1 = require("../context/relations/add/SqliteRelationAddedProjector.js");
|
|
86
|
+
const SqliteRelationDeactivatedProjector_js_1 = require("../context/relations/deactivate/SqliteRelationDeactivatedProjector.js");
|
|
87
|
+
const SqliteRelationReactivatedProjector_js_1 = require("../context/relations/reactivate/SqliteRelationReactivatedProjector.js");
|
|
88
|
+
const SqliteRelationRemovedProjector_js_1 = require("../context/relations/remove/SqliteRelationRemovedProjector.js");
|
|
89
|
+
// Worker identity projectors
|
|
90
|
+
const SqliteWorkerIdentifiedProjector_js_1 = require("../host/workers/identify/SqliteWorkerIdentifiedProjector.js");
|
|
91
|
+
class ProjectionBusFactory {
|
|
92
|
+
/**
|
|
93
|
+
* Creates an event bus with projection-only handlers for the given database.
|
|
94
|
+
*/
|
|
95
|
+
create(db) {
|
|
96
|
+
const bus = new InProcessEventBus_js_1.InProcessEventBus();
|
|
97
|
+
// Session projections
|
|
98
|
+
const sessionStartedProjector = new SqliteSessionStartedProjector_js_1.SqliteSessionStartedProjector(db);
|
|
99
|
+
const sessionEndedProjector = new SqliteSessionEndedProjector_js_1.SqliteSessionEndedProjector(db);
|
|
100
|
+
bus.subscribe("SessionStartedEvent", this.wrap((e) => sessionStartedProjector.applySessionStarted(e)));
|
|
101
|
+
bus.subscribe("SessionEndedEvent", this.wrap((e) => sessionEndedProjector.applySessionEnded(e)));
|
|
102
|
+
// Goal projections
|
|
103
|
+
const goalAddedProjector = new SqliteGoalAddedProjector_js_1.SqliteGoalAddedProjector(db);
|
|
104
|
+
const goalStartedProjector = new SqliteGoalStartedProjector_js_1.SqliteGoalStartedProjector(db);
|
|
105
|
+
const goalUpdatedProjector = new SqliteGoalUpdatedProjector_js_1.SqliteGoalUpdatedProjector(db);
|
|
106
|
+
const goalBlockedProjector = new SqliteGoalBlockedProjector_js_1.SqliteGoalBlockedProjector(db);
|
|
107
|
+
const goalUnblockedProjector = new SqliteGoalUnblockedProjector_js_1.SqliteGoalUnblockedProjector(db);
|
|
108
|
+
const goalPausedProjector = new SqliteGoalPausedProjector_js_1.SqliteGoalPausedProjector(db);
|
|
109
|
+
const goalResumedProjector = new SqliteGoalResumedProjector_js_1.SqliteGoalResumedProjector(db);
|
|
110
|
+
const goalCompletedProjector = new SqliteGoalCompletedProjector_js_1.SqliteGoalCompletedProjector(db);
|
|
111
|
+
const goalRefinedProjector = new SqliteGoalRefinedProjector_js_1.SqliteGoalRefinedProjector(db);
|
|
112
|
+
const goalResetProjector = new SqliteGoalResetProjector_js_1.SqliteGoalResetProjector(db);
|
|
113
|
+
const goalRemovedProjector = new SqliteGoalRemovedProjector_js_1.SqliteGoalRemovedProjector(db);
|
|
114
|
+
const goalProgressUpdatedProjector = new SqliteGoalProgressUpdatedProjector_js_1.SqliteGoalProgressUpdatedProjector(db);
|
|
115
|
+
const goalSubmittedForReviewProjector = new SqliteGoalSubmittedForReviewProjector_js_1.SqliteGoalSubmittedForReviewProjector(db);
|
|
116
|
+
const goalQualifiedProjector = new SqliteGoalQualifiedProjector_js_1.SqliteGoalQualifiedProjector(db);
|
|
117
|
+
const goalCommittedProjector = new SqliteGoalCommittedProjector_js_1.SqliteGoalCommittedProjector(db);
|
|
118
|
+
const goalRejectedProjector = new SqliteGoalRejectedProjector_js_1.SqliteGoalRejectedProjector(db);
|
|
119
|
+
const goalSubmittedProjector = new SqliteGoalSubmittedProjector_js_1.SqliteGoalSubmittedProjector(db);
|
|
120
|
+
const goalCodifyingStartedProjector = new SqliteGoalCodifyingStartedProjector_js_1.SqliteGoalCodifyingStartedProjector(db);
|
|
121
|
+
const goalClosedProjector = new SqliteGoalClosedProjector_js_1.SqliteGoalClosedProjector(db);
|
|
122
|
+
const goalApprovedProjector = new SqliteGoalApprovedProjector_js_1.SqliteGoalApprovedProjector(db);
|
|
123
|
+
const goalStatusMigratedProjector = new SqliteGoalStatusMigratedProjector_js_1.SqliteGoalStatusMigratedProjector(db);
|
|
124
|
+
bus.subscribe("GoalAddedEvent", this.wrap((e) => goalAddedProjector.applyGoalAdded(e)));
|
|
125
|
+
bus.subscribe("GoalStartedEvent", this.wrap((e) => goalStartedProjector.applyGoalStarted(e)));
|
|
126
|
+
bus.subscribe("GoalUpdatedEvent", this.wrap((e) => goalUpdatedProjector.applyGoalUpdated(e)));
|
|
127
|
+
bus.subscribe("GoalBlockedEvent", this.wrap((e) => goalBlockedProjector.applyGoalBlocked(e)));
|
|
128
|
+
bus.subscribe("GoalUnblockedEvent", this.wrap((e) => goalUnblockedProjector.applyGoalUnblocked(e)));
|
|
129
|
+
bus.subscribe("GoalPausedEvent", this.wrap((e) => goalPausedProjector.applyGoalPaused(e)));
|
|
130
|
+
bus.subscribe("GoalResumedEvent", this.wrap((e) => goalResumedProjector.applyGoalResumed(e)));
|
|
131
|
+
bus.subscribe("GoalCompletedEvent", this.wrap((e) => goalCompletedProjector.applyGoalCompleted(e)));
|
|
132
|
+
bus.subscribe("GoalRefinedEvent", this.wrap((e) => goalRefinedProjector.applyGoalRefined(e)));
|
|
133
|
+
bus.subscribe("GoalResetEvent", this.wrap((e) => goalResetProjector.applyGoalReset(e)));
|
|
134
|
+
bus.subscribe("GoalRemovedEvent", this.wrap((e) => goalRemovedProjector.applyGoalRemoved(e)));
|
|
135
|
+
bus.subscribe("GoalProgressUpdatedEvent", this.wrap((e) => goalProgressUpdatedProjector.applyGoalProgressUpdated(e)));
|
|
136
|
+
bus.subscribe("GoalSubmittedForReviewEvent", this.wrap((e) => goalSubmittedForReviewProjector.applyGoalSubmittedForReview(e)));
|
|
137
|
+
bus.subscribe("GoalQualifiedEvent", this.wrap((e) => goalQualifiedProjector.applyGoalQualified(e)));
|
|
138
|
+
bus.subscribe("GoalRefinementStartedEvent", this.wrap((e) => goalRefinedProjector.applyGoalRefinementStarted(e)));
|
|
139
|
+
bus.subscribe("GoalCommittedEvent", this.wrap((e) => goalCommittedProjector.applyGoalCommitted(e)));
|
|
140
|
+
bus.subscribe("GoalRejectedEvent", this.wrap((e) => goalRejectedProjector.applyGoalRejected(e)));
|
|
141
|
+
bus.subscribe("GoalSubmittedEvent", this.wrap((e) => goalSubmittedProjector.applyGoalSubmitted(e)));
|
|
142
|
+
bus.subscribe("GoalCodifyingStartedEvent", this.wrap((e) => goalCodifyingStartedProjector.applyGoalCodifyingStarted(e)));
|
|
143
|
+
bus.subscribe("GoalClosedEvent", this.wrap((e) => goalClosedProjector.applyGoalClosed(e)));
|
|
144
|
+
bus.subscribe("GoalApprovedEvent", this.wrap((e) => goalApprovedProjector.applyGoalApproved(e)));
|
|
145
|
+
bus.subscribe("GoalStatusMigratedEvent", this.wrap((e) => goalStatusMigratedProjector.applyGoalStatusMigrated(e)));
|
|
146
|
+
// Architecture projections
|
|
147
|
+
const architectureDefinedProjector = new SqliteArchitectureDefinedProjector_js_1.SqliteArchitectureDefinedProjector(db);
|
|
148
|
+
const architectureUpdatedProjector = new SqliteArchitectureUpdatedProjector_js_1.SqliteArchitectureUpdatedProjector(db);
|
|
149
|
+
bus.subscribe("ArchitectureDefinedEvent", this.wrap((e) => architectureDefinedProjector.applyArchitectureDefined(e)));
|
|
150
|
+
bus.subscribe("ArchitectureUpdatedEvent", this.wrap((e) => architectureUpdatedProjector.applyArchitectureUpdated(e)));
|
|
151
|
+
// Component projections (projection-only — no cascades)
|
|
152
|
+
const componentAddedProjector = new SqliteComponentAddedProjector_js_1.SqliteComponentAddedProjector(db);
|
|
153
|
+
const componentUpdatedProjector = new SqliteComponentUpdatedProjector_js_1.SqliteComponentUpdatedProjector(db);
|
|
154
|
+
const componentDeprecatedProjector = new SqliteComponentDeprecatedProjector_js_1.SqliteComponentDeprecatedProjector(db);
|
|
155
|
+
const componentUndeprecatedProjector = new SqliteComponentUndeprecatedProjector_js_1.SqliteComponentUndeprecatedProjector(db);
|
|
156
|
+
const componentRemovedProjector = new SqliteComponentRemovedProjector_js_1.SqliteComponentRemovedProjector(db);
|
|
157
|
+
const componentRenamedProjector = new SqliteComponentRenamedProjector_js_1.SqliteComponentRenamedProjector(db);
|
|
158
|
+
bus.subscribe("ComponentAddedEvent", this.wrap((e) => componentAddedProjector.applyComponentAdded(e)));
|
|
159
|
+
bus.subscribe("ComponentUpdatedEvent", this.wrap((e) => componentUpdatedProjector.applyComponentUpdated(e)));
|
|
160
|
+
bus.subscribe("ComponentDeprecatedEvent", this.wrap((e) => componentDeprecatedProjector.applyComponentDeprecated(e)));
|
|
161
|
+
bus.subscribe("ComponentUndeprecatedEvent", this.wrap((e) => componentUndeprecatedProjector.applyComponentUndeprecated(e)));
|
|
162
|
+
bus.subscribe("ComponentRemovedEvent", this.wrap((e) => componentRemovedProjector.applyComponentRemoved(e)));
|
|
163
|
+
bus.subscribe("ComponentRenamedEvent", this.wrap((e) => componentRenamedProjector.applyComponentRenamed(e)));
|
|
164
|
+
// Dependency projections
|
|
165
|
+
const dependencyAddedProjector = new SqliteDependencyAddedProjector_js_1.SqliteDependencyAddedProjector(db);
|
|
166
|
+
const dependencyUpdatedProjector = new SqliteDependencyUpdatedProjector_js_1.SqliteDependencyUpdatedProjector(db);
|
|
167
|
+
const dependencyRemovedProjector = new SqliteDependencyRemovedProjector_js_1.SqliteDependencyRemovedProjector(db);
|
|
168
|
+
bus.subscribe("DependencyAddedEvent", this.wrap((e) => dependencyAddedProjector.applyDependencyAdded(e)));
|
|
169
|
+
bus.subscribe("DependencyUpdatedEvent", this.wrap((e) => dependencyUpdatedProjector.applyDependencyUpdated(e)));
|
|
170
|
+
bus.subscribe("DependencyRemovedEvent", this.wrap((e) => dependencyRemovedProjector.applyDependencyRemoved(e)));
|
|
171
|
+
// Decision projections (projection-only — no cascades)
|
|
172
|
+
const decisionAddedProjector = new SqliteDecisionAddedProjector_js_1.SqliteDecisionAddedProjector(db);
|
|
173
|
+
const decisionUpdatedProjector = new SqliteDecisionUpdatedProjector_js_1.SqliteDecisionUpdatedProjector(db);
|
|
174
|
+
const decisionReversedProjector = new SqliteDecisionReversedProjector_js_1.SqliteDecisionReversedProjector(db);
|
|
175
|
+
const decisionRestoredProjector = new SqliteDecisionRestoredProjector_js_1.SqliteDecisionRestoredProjector(db);
|
|
176
|
+
const decisionSupersededProjector = new SqliteDecisionSupersededProjector_js_1.SqliteDecisionSupersededProjector(db);
|
|
177
|
+
bus.subscribe("DecisionAddedEvent", this.wrap((e) => decisionAddedProjector.applyDecisionAdded(e)));
|
|
178
|
+
bus.subscribe("DecisionUpdatedEvent", this.wrap((e) => decisionUpdatedProjector.applyDecisionUpdated(e)));
|
|
179
|
+
bus.subscribe("DecisionReversedEvent", this.wrap((e) => decisionReversedProjector.applyDecisionReversed(e)));
|
|
180
|
+
bus.subscribe("DecisionRestoredEvent", this.wrap((e) => decisionRestoredProjector.applyDecisionRestored(e)));
|
|
181
|
+
bus.subscribe("DecisionSupersededEvent", this.wrap((e) => decisionSupersededProjector.applyDecisionSuperseded(e)));
|
|
182
|
+
// Guideline projections
|
|
183
|
+
const guidelineAddedProjector = new SqliteGuidelineAddedProjector_js_1.SqliteGuidelineAddedProjector(db);
|
|
184
|
+
const guidelineUpdatedProjector = new SqliteGuidelineUpdatedProjector_js_1.SqliteGuidelineUpdatedProjector(db);
|
|
185
|
+
const guidelineRemovedProjector = new SqliteGuidelineRemovedProjector_js_1.SqliteGuidelineRemovedProjector(db);
|
|
186
|
+
bus.subscribe("GuidelineAddedEvent", this.wrap((e) => guidelineAddedProjector.applyGuidelineAdded(e)));
|
|
187
|
+
bus.subscribe("GuidelineUpdatedEvent", this.wrap((e) => guidelineUpdatedProjector.applyGuidelineUpdated(e)));
|
|
188
|
+
bus.subscribe("GuidelineRemovedEvent", this.wrap((e) => guidelineRemovedProjector.applyGuidelineRemoved(e)));
|
|
189
|
+
// Invariant projections
|
|
190
|
+
const invariantAddedProjector = new SqliteInvariantAddedProjector_js_1.SqliteInvariantAddedProjector(db);
|
|
191
|
+
const invariantUpdatedProjector = new SqliteInvariantUpdatedProjector_js_1.SqliteInvariantUpdatedProjector(db);
|
|
192
|
+
const invariantRemovedProjector = new SqliteInvariantRemovedProjector_js_1.SqliteInvariantRemovedProjector(db);
|
|
193
|
+
bus.subscribe("InvariantAddedEvent", this.wrap((e) => invariantAddedProjector.applyInvariantAdded(e)));
|
|
194
|
+
bus.subscribe("InvariantUpdatedEvent", this.wrap((e) => invariantUpdatedProjector.applyInvariantUpdated(e)));
|
|
195
|
+
bus.subscribe("InvariantRemovedEvent", this.wrap((e) => invariantRemovedProjector.applyInvariantRemoved(e)));
|
|
196
|
+
// Project projections
|
|
197
|
+
const projectInitializedProjector = new SqliteProjectInitializedProjector_js_1.SqliteProjectInitializedProjector(db);
|
|
198
|
+
const projectUpdatedProjector = new SqliteProjectUpdatedProjector_js_1.SqliteProjectUpdatedProjector(db);
|
|
199
|
+
bus.subscribe("ProjectInitializedEvent", this.wrap((e) => projectInitializedProjector.applyProjectInitialized(e)));
|
|
200
|
+
bus.subscribe("ProjectUpdatedEvent", this.wrap((e) => projectUpdatedProjector.applyProjectUpdated(e)));
|
|
201
|
+
// Audience pain projections
|
|
202
|
+
const audiencePainAddedProjector = new SqliteAudiencePainAddedProjector_js_1.SqliteAudiencePainAddedProjector(db);
|
|
203
|
+
const audiencePainUpdatedProjector = new SqliteAudiencePainUpdatedProjector_js_1.SqliteAudiencePainUpdatedProjector(db);
|
|
204
|
+
bus.subscribe("AudiencePainAddedEvent", this.wrap((e) => audiencePainAddedProjector.applyAudiencePainAdded(e)));
|
|
205
|
+
bus.subscribe("AudiencePainUpdatedEvent", this.wrap((e) => audiencePainUpdatedProjector.applyAudiencePainUpdated(e)));
|
|
206
|
+
// Audience projections
|
|
207
|
+
const audienceAddedProjector = new SqliteAudienceAddedProjector_js_1.SqliteAudienceAddedProjector(db);
|
|
208
|
+
const audienceUpdatedProjector = new SqliteAudienceUpdatedProjector_js_1.SqliteAudienceUpdatedProjector(db);
|
|
209
|
+
const audienceRemovedProjector = new SqliteAudienceRemovedProjector_js_1.SqliteAudienceRemovedProjector(db);
|
|
210
|
+
bus.subscribe("AudienceAddedEvent", this.wrap((e) => audienceAddedProjector.applyAudienceAdded(e)));
|
|
211
|
+
bus.subscribe("AudienceUpdatedEvent", this.wrap((e) => audienceUpdatedProjector.applyAudienceUpdated(e)));
|
|
212
|
+
bus.subscribe("AudienceRemovedEvent", this.wrap((e) => audienceRemovedProjector.applyAudienceRemoved(e)));
|
|
213
|
+
// Value proposition projections
|
|
214
|
+
const valuePropositionAddedProjector = new SqliteValuePropositionAddedProjector_js_1.SqliteValuePropositionAddedProjector(db);
|
|
215
|
+
const valuePropositionUpdatedProjector = new SqliteValuePropositionUpdatedProjector_js_1.SqliteValuePropositionUpdatedProjector(db);
|
|
216
|
+
const valuePropositionRemovedProjector = new SqliteValuePropositionRemovedProjector_js_1.SqliteValuePropositionRemovedProjector(db);
|
|
217
|
+
bus.subscribe("ValuePropositionAddedEvent", this.wrap((e) => valuePropositionAddedProjector.applyValuePropositionAdded(e)));
|
|
218
|
+
bus.subscribe("ValuePropositionUpdatedEvent", this.wrap((e) => valuePropositionUpdatedProjector.applyValuePropositionUpdated(e)));
|
|
219
|
+
bus.subscribe("ValuePropositionRemovedEvent", this.wrap((e) => valuePropositionRemovedProjector.applyValuePropositionRemoved(e)));
|
|
220
|
+
// Relation projections
|
|
221
|
+
const relationAddedProjector = new SqliteRelationAddedProjector_js_1.SqliteRelationAddedProjector(db);
|
|
222
|
+
const relationDeactivatedProjector = new SqliteRelationDeactivatedProjector_js_1.SqliteRelationDeactivatedProjector(db);
|
|
223
|
+
const relationReactivatedProjector = new SqliteRelationReactivatedProjector_js_1.SqliteRelationReactivatedProjector(db);
|
|
224
|
+
const relationRemovedProjector = new SqliteRelationRemovedProjector_js_1.SqliteRelationRemovedProjector(db);
|
|
225
|
+
bus.subscribe("RelationAddedEvent", this.wrap((e) => relationAddedProjector.applyRelationAdded(e)));
|
|
226
|
+
bus.subscribe("RelationDeactivatedEvent", this.wrap((e) => relationDeactivatedProjector.applyRelationDeactivated(e)));
|
|
227
|
+
bus.subscribe("RelationReactivatedEvent", this.wrap((e) => relationReactivatedProjector.applyRelationReactivated(e)));
|
|
228
|
+
bus.subscribe("RelationRemovedEvent", this.wrap((e) => relationRemovedProjector.applyRelationRemoved(e)));
|
|
229
|
+
// Worker identity projections
|
|
230
|
+
const workerIdentifiedProjector = new SqliteWorkerIdentifiedProjector_js_1.SqliteWorkerIdentifiedProjector(db);
|
|
231
|
+
bus.subscribe("WorkerIdentifiedEvent", this.wrap((e) => workerIdentifiedProjector.applyWorkerIdentified(e)));
|
|
232
|
+
return bus;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Wraps a projector method as an IEventHandler.
|
|
236
|
+
*/
|
|
237
|
+
wrap(fn) {
|
|
238
|
+
return { handle: async (event) => { await fn(event); } };
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
exports.ProjectionBusFactory = ProjectionBusFactory;
|
|
242
|
+
//# sourceMappingURL=ProjectionBusFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectionBusFactory.js","sourceRoot":"","sources":["../../../src/infrastructure/messaging/ProjectionBusFactory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Infrastructure: GitHub Hooks Configurer
|
|
3
|
-
*
|
|
4
|
-
* Encapsulates all knowledge about GitHub hooks configuration:
|
|
5
|
-
* - .github/hooks/hooks.json with SessionStart hooks
|
|
6
|
-
*
|
|
7
|
-
* Operations are idempotent and gracefully handle errors.
|
|
8
|
-
*/
|
|
9
|
-
import { IConfigurer } from "./IConfigurer.js";
|
|
10
|
-
import { PlannedFileChange } from "../../../../application/context/project/init/PlannedFileChange.js";
|
|
11
|
-
export declare class GitHubHooksConfigurer implements IConfigurer {
|
|
12
|
-
readonly agent: {
|
|
13
|
-
readonly id: "github-hooks";
|
|
14
|
-
readonly name: "GitHub Hooks";
|
|
15
|
-
};
|
|
16
|
-
readonly skillPlatforms: readonly [".vibe/skills"];
|
|
17
|
-
/**
|
|
18
|
-
* Configure all GitHub hooks requirements for Jumbo
|
|
19
|
-
*
|
|
20
|
-
* @param projectRoot Absolute path to project root directory
|
|
21
|
-
*/
|
|
22
|
-
configure(projectRoot: string): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Ensure GitHub hooks are configured in .github/hooks/hooks.json
|
|
25
|
-
*/
|
|
26
|
-
private ensureGitHubHooks;
|
|
27
|
-
/**
|
|
28
|
-
* Merge hooks, preserving existing content and adding missing Jumbo hooks
|
|
29
|
-
*/
|
|
30
|
-
private mergeHooks;
|
|
31
|
-
/**
|
|
32
|
-
* Merge hook arrays, deduplicating by command content
|
|
33
|
-
*/
|
|
34
|
-
private mergeHookArray;
|
|
35
|
-
/**
|
|
36
|
-
* Return what changes this configurer will make without executing.
|
|
37
|
-
*/
|
|
38
|
-
getPlannedFileChanges(projectRoot: string): Promise<PlannedFileChange[]>;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=GitHubHooksConfigurer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubHooksConfigurer.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/context/project/init/GitHubHooksConfigurer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mEAAmE,CAAC;AAEtG,qBAAa,qBAAsB,YAAW,WAAW;IACvD,QAAQ,CAAC,KAAK;;;MAGH;IAEX,QAAQ,CAAC,cAAc,4BAA6B;IAEpD;;;;OAIG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;YACW,iBAAiB;IA0D/B;;OAEG;IACH,OAAO,CAAC,UAAU;IAuBlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAW/E"}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Infrastructure: GitHub Hooks Configurer
|
|
4
|
-
*
|
|
5
|
-
* Encapsulates all knowledge about GitHub hooks configuration:
|
|
6
|
-
* - .github/hooks/hooks.json with SessionStart hooks
|
|
7
|
-
*
|
|
8
|
-
* Operations are idempotent and gracefully handle errors.
|
|
9
|
-
*/
|
|
10
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.GitHubHooksConfigurer = void 0;
|
|
15
|
-
const path_1 = __importDefault(require("path"));
|
|
16
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
17
|
-
class GitHubHooksConfigurer {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.agent = {
|
|
20
|
-
id: "github-hooks",
|
|
21
|
-
name: "GitHub Hooks",
|
|
22
|
-
};
|
|
23
|
-
this.skillPlatforms = [".vibe/skills"];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Configure all GitHub hooks requirements for Jumbo
|
|
27
|
-
*
|
|
28
|
-
* @param projectRoot Absolute path to project root directory
|
|
29
|
-
*/
|
|
30
|
-
async configure(projectRoot) {
|
|
31
|
-
await this.ensureGitHubHooks(projectRoot);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Ensure GitHub hooks are configured in .github/hooks/hooks.json
|
|
35
|
-
*/
|
|
36
|
-
async ensureGitHubHooks(projectRoot) {
|
|
37
|
-
try {
|
|
38
|
-
const hooksPath = path_1.default.join(projectRoot, ".github", "hooks", "hooks.json");
|
|
39
|
-
// Ensure .github/hooks directory exists
|
|
40
|
-
await fs_extra_1.default.ensureDir(path_1.default.join(projectRoot, ".github", "hooks"));
|
|
41
|
-
// Define all Jumbo hooks for GitHub
|
|
42
|
-
const jumboHooks = {
|
|
43
|
-
version: 1,
|
|
44
|
-
hooks: {
|
|
45
|
-
sessionStart: [
|
|
46
|
-
{
|
|
47
|
-
type: "command",
|
|
48
|
-
bash: "jumbo session start",
|
|
49
|
-
cwd: ".",
|
|
50
|
-
timeoutSec: 10
|
|
51
|
-
}
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
// Check if file exists
|
|
56
|
-
const exists = await fs_extra_1.default.pathExists(hooksPath);
|
|
57
|
-
if (!exists) {
|
|
58
|
-
// File doesn't exist - create with full content
|
|
59
|
-
await fs_extra_1.default.writeFile(hooksPath, JSON.stringify(jumboHooks, null, 2) + "\n", "utf-8");
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
// File exists - merge with existing content
|
|
63
|
-
const existingContent = await fs_extra_1.default.readFile(hooksPath, "utf-8");
|
|
64
|
-
let existingHooks = {};
|
|
65
|
-
if (existingContent.trim()) {
|
|
66
|
-
try {
|
|
67
|
-
existingHooks = JSON.parse(existingContent);
|
|
68
|
-
}
|
|
69
|
-
catch (parseError) {
|
|
70
|
-
// If JSON is malformed, overwrite with our content
|
|
71
|
-
await fs_extra_1.default.writeFile(hooksPath, JSON.stringify(jumboHooks, null, 2) + "\n", "utf-8");
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Merge hooks - ensure sessionStart hooks are present
|
|
76
|
-
const mergedHooks = this.mergeHooks(existingHooks, jumboHooks);
|
|
77
|
-
await fs_extra_1.default.writeFile(hooksPath, JSON.stringify(mergedHooks, null, 2) + "\n", "utf-8");
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
// Graceful degradation - log but don't throw
|
|
81
|
-
console.warn(`Warning: Failed to configure GitHub hooks: ${error instanceof Error ? error.message : String(error)}`);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Merge hooks, preserving existing content and adding missing Jumbo hooks
|
|
86
|
-
*/
|
|
87
|
-
mergeHooks(existing, jumbo) {
|
|
88
|
-
const result = { ...existing };
|
|
89
|
-
// Ensure version is set
|
|
90
|
-
if (jumbo.version !== undefined) {
|
|
91
|
-
result.version = jumbo.version;
|
|
92
|
-
}
|
|
93
|
-
// Merge hooks
|
|
94
|
-
if (jumbo.hooks) {
|
|
95
|
-
result.hooks = result.hooks ?? {};
|
|
96
|
-
for (const [hookType, hooks] of Object.entries(jumbo.hooks)) {
|
|
97
|
-
if (hooks && Array.isArray(hooks)) {
|
|
98
|
-
const existingHooks = Array.isArray(result.hooks[hookType]) ? result.hooks[hookType] : [];
|
|
99
|
-
result.hooks[hookType] = this.mergeHookArray(existingHooks, hooks);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Merge hook arrays, deduplicating by command content
|
|
107
|
-
*/
|
|
108
|
-
mergeHookArray(existing, additions) {
|
|
109
|
-
const merged = [...existing];
|
|
110
|
-
const existingCommands = new Set(existing.map(h => JSON.stringify(h)));
|
|
111
|
-
for (const addition of additions) {
|
|
112
|
-
const additionKey = JSON.stringify(addition);
|
|
113
|
-
if (!existingCommands.has(additionKey)) {
|
|
114
|
-
merged.push(addition);
|
|
115
|
-
existingCommands.add(additionKey);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return merged;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Return what changes this configurer will make without executing.
|
|
122
|
-
*/
|
|
123
|
-
async getPlannedFileChanges(projectRoot) {
|
|
124
|
-
const hooksPath = path_1.default.join(projectRoot, ".github", "hooks", "hooks.json");
|
|
125
|
-
return [
|
|
126
|
-
{
|
|
127
|
-
path: ".github/hooks/hooks.json",
|
|
128
|
-
action: (await fs_extra_1.default.pathExists(hooksPath)) ? "modify" : "create",
|
|
129
|
-
description: "Add GitHub hooks configuration",
|
|
130
|
-
},
|
|
131
|
-
];
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
exports.GitHubHooksConfigurer = GitHubHooksConfigurer;
|
|
135
|
-
//# sourceMappingURL=GitHubHooksConfigurer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubHooksConfigurer.js","sourceRoot":"","sources":["../../../../../src/infrastructure/context/project/init/GitHubHooksConfigurer.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;AAEH,gDAAwB;AACxB,wDAA0B;AAI1B,MAAa,qBAAqB;IAAlC;QACW,UAAK,GAAG;YACf,EAAE,EAAE,cAAc;YAClB,IAAI,EAAE,cAAc;SACZ,CAAC;QAEF,mBAAc,GAAG,CAAC,cAAc,CAAU,CAAC;IAkItD,CAAC;IAhIC;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,WAAmB;QACjC,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACjD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAE3E,wCAAwC;YACxC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YAE/D,oCAAoC;YACpC,MAAM,UAAU,GAAG;gBACjB,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE;oBACL,YAAY,EAAE;wBACZ;4BACE,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,qBAAqB;4BAC3B,GAAG,EAAE,GAAG;4BACR,UAAU,EAAE,EAAE;yBACf;qBACF;iBACF;aACF,CAAC;YAEF,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,gDAAgD;gBAChD,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnF,OAAO;YACT,CAAC;YAED,4CAA4C;YAC5C,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,aAAa,GAAG,EAAE,CAAC;YAEvB,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC9C,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,mDAAmD;oBACnD,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;oBACnF,OAAO;gBACT,CAAC;YACH,CAAC;YAED,sDAAsD;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAE/D,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAEtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6CAA6C;YAC7C,OAAO,CAAC,IAAI,CACV,8CAA8C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,QAAa,EAAE,KAAU;QAC1C,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAE/B,wBAAwB;QACxB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC;QAED,cAAc;QACd,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAElC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1F,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAe,EAAE,SAAgB;QACtD,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QAC7C,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAE3E,OAAO;YACL;gBACE,IAAI,EAAE,0BAA0B;gBAChC,MAAM,EAAE,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBAC9D,WAAW,EAAE,gCAAgC;aAC9C;SACF,CAAC;IACJ,CAAC;CACF;AAxID,sDAwIC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TEMPORARY WORKAROUND - DO NOT USE IN PRODUCTION
|
|
3
|
-
*
|
|
4
|
-
* Infrastructure implementation of database rebuild service with sequential handler execution.
|
|
5
|
-
*
|
|
6
|
-
* This service addresses a race condition during database rebuild where
|
|
7
|
-
* cross-aggregate projection handlers
|
|
8
|
-
* attempt to read from projections (e.g., goal_views) while primary handlers
|
|
9
|
-
* are still writing to them.
|
|
10
|
-
*
|
|
11
|
-
* The root cause: InProcessEventBus executes handlers in parallel via Promise.all(),
|
|
12
|
-
* which works fine during normal operations but causes issues during rebuild when
|
|
13
|
-
* projections don't exist yet.
|
|
14
|
-
*
|
|
15
|
-
* This service encapsulates ALL the complexity of sequential rebuild:
|
|
16
|
-
* - Creating new database connection
|
|
17
|
-
* - Running migrations
|
|
18
|
-
* - Creating sequential event bus
|
|
19
|
-
* - Creating all projectors
|
|
20
|
-
* - Creating all handlers
|
|
21
|
-
* - Registering handlers
|
|
22
|
-
* - Replaying events sequentially
|
|
23
|
-
*
|
|
24
|
-
* REMOVAL PLAN:
|
|
25
|
-
* This will be removed when Epic/Feature/Task redesign is complete. At that time,
|
|
26
|
-
* simply swap back to LocalDatabaseRebuildService in bootstrap.ts.
|
|
27
|
-
*
|
|
28
|
-
* @see LocalDatabaseRebuildService - Normal parallel rebuild (currently has race condition)
|
|
29
|
-
*/
|
|
30
|
-
import Database from "better-sqlite3";
|
|
31
|
-
import { ILogger } from "../../application/logging/ILogger.js";
|
|
32
|
-
import { IDatabaseRebuildService, DatabaseRebuildResult } from "../../application/maintenance/db/rebuild/IDatabaseRebuildService.js";
|
|
33
|
-
import { IEventStore } from "../../application/persistence/IEventStore.js";
|
|
34
|
-
export declare class TemporarySequentialDatabaseRebuildService implements IDatabaseRebuildService {
|
|
35
|
-
private readonly rootDir;
|
|
36
|
-
private readonly db;
|
|
37
|
-
private readonly eventStore;
|
|
38
|
-
private readonly logger;
|
|
39
|
-
private readonly tag;
|
|
40
|
-
constructor(rootDir: string, db: Database.Database, eventStore: IEventStore, logger: ILogger);
|
|
41
|
-
rebuild(): Promise<DatabaseRebuildResult>;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=TemporarySequentialDatabaseRebuildService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TemporarySequentialDatabaseRebuildService.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/local/TemporarySequentialDatabaseRebuildService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,qEAAqE,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AA0I3E,qBAAa,yCAA0C,YAAW,uBAAuB;IAIrF,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;gBAGxB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO;IAG5B,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC;CAgShD"}
|