jumbo-cli 3.16.0 → 3.17.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/dist/application/agents/AgentInvocation.d.ts +5 -0
- package/dist/application/agents/AgentInvocation.d.ts.map +1 -1
- package/dist/application/context/audience-pains/add/AddAudiencePainCommandHandler.d.ts.map +1 -1
- package/dist/application/context/audience-pains/add/AddAudiencePainCommandHandler.js +2 -4
- package/dist/application/context/audience-pains/add/AddAudiencePainCommandHandler.js.map +1 -1
- package/dist/application/context/audiences/add/AddAudienceCommandHandler.d.ts.map +1 -1
- package/dist/application/context/audiences/add/AddAudienceCommandHandler.js +2 -4
- package/dist/application/context/audiences/add/AddAudienceCommandHandler.js.map +1 -1
- package/dist/application/context/components/add/AddComponentCommandHandler.d.ts.map +1 -1
- package/dist/application/context/components/add/AddComponentCommandHandler.js +2 -3
- package/dist/application/context/components/add/AddComponentCommandHandler.js.map +1 -1
- package/dist/application/context/decisions/add/AddDecisionCommandHandler.d.ts.map +1 -1
- package/dist/application/context/decisions/add/AddDecisionCommandHandler.js +2 -3
- package/dist/application/context/decisions/add/AddDecisionCommandHandler.js.map +1 -1
- package/dist/application/context/dependencies/add/AddDependencyCommandHandler.d.ts.map +1 -1
- package/dist/application/context/dependencies/add/AddDependencyCommandHandler.js +4 -6
- package/dist/application/context/dependencies/add/AddDependencyCommandHandler.js.map +1 -1
- package/dist/application/context/dependencies/add/IDependencyAddReader.d.ts +1 -0
- package/dist/application/context/dependencies/add/IDependencyAddReader.d.ts.map +1 -1
- package/dist/application/context/goals/add/AddGoalCommandHandler.d.ts.map +1 -1
- package/dist/application/context/goals/add/AddGoalCommandHandler.js +2 -4
- package/dist/application/context/goals/add/AddGoalCommandHandler.js.map +1 -1
- package/dist/application/context/goals/codify/CodifierProcessManager.d.ts +1 -1
- package/dist/application/context/goals/codify/CodifierProcessManager.d.ts.map +1 -1
- package/dist/application/context/goals/codify/CodifierProcessManager.js +48 -39
- package/dist/application/context/goals/codify/CodifierProcessManager.js.map +1 -1
- package/dist/application/context/goals/refine/RefinerProcessManager.d.ts +1 -1
- package/dist/application/context/goals/refine/RefinerProcessManager.d.ts.map +1 -1
- package/dist/application/context/goals/refine/RefinerProcessManager.js +53 -37
- package/dist/application/context/goals/refine/RefinerProcessManager.js.map +1 -1
- package/dist/application/context/goals/review/ReviewerProcessManager.d.ts +1 -2
- package/dist/application/context/goals/review/ReviewerProcessManager.d.ts.map +1 -1
- package/dist/application/context/goals/review/ReviewerProcessManager.js +54 -57
- package/dist/application/context/goals/review/ReviewerProcessManager.js.map +1 -1
- package/dist/application/context/guidelines/add/AddGuidelineCommandHandler.d.ts.map +1 -1
- package/dist/application/context/guidelines/add/AddGuidelineCommandHandler.js +2 -3
- package/dist/application/context/guidelines/add/AddGuidelineCommandHandler.js.map +1 -1
- package/dist/application/context/invariants/add/AddInvariantCommandHandler.d.ts.map +1 -1
- package/dist/application/context/invariants/add/AddInvariantCommandHandler.js +2 -3
- package/dist/application/context/invariants/add/AddInvariantCommandHandler.js.map +1 -1
- package/dist/application/context/project/init/InitializeProjectCommandHandler.js +2 -2
- package/dist/application/context/project/init/InitializeProjectCommandHandler.js.map +1 -1
- package/dist/application/context/relations/add/AddRelationCommandHandler.d.ts.map +1 -1
- package/dist/application/context/relations/add/AddRelationCommandHandler.js +2 -4
- package/dist/application/context/relations/add/AddRelationCommandHandler.js.map +1 -1
- package/dist/application/context/sessions/start/StartSessionCommandHandler.d.ts.map +1 -1
- package/dist/application/context/sessions/start/StartSessionCommandHandler.js +2 -4
- package/dist/application/context/sessions/start/StartSessionCommandHandler.js.map +1 -1
- package/dist/application/context/value-propositions/add/AddValuePropositionCommandHandler.d.ts.map +1 -1
- package/dist/application/context/value-propositions/add/AddValuePropositionCommandHandler.js +2 -3
- package/dist/application/context/value-propositions/add/AddValuePropositionCommandHandler.js.map +1 -1
- package/dist/application/daemons/IProcessManager.d.ts +3 -0
- package/dist/application/daemons/IProcessManager.d.ts.map +1 -1
- package/dist/application/daemons/ProcessManagerEventEmitter.d.ts +12 -0
- package/dist/application/daemons/ProcessManagerEventEmitter.d.ts.map +1 -0
- package/dist/application/daemons/ProcessManagerEventEmitter.js +49 -0
- package/dist/application/daemons/ProcessManagerEventEmitter.js.map +1 -0
- package/dist/application/host/workers/WorkerId.d.ts +2 -13
- package/dist/application/host/workers/WorkerId.d.ts.map +1 -1
- package/dist/application/host/workers/WorkerId.js +2 -1
- package/dist/application/host/workers/WorkerId.js.map +1 -1
- package/dist/domain/audience-pains/AudiencePain.d.ts +3 -2
- package/dist/domain/audience-pains/AudiencePain.d.ts.map +1 -1
- package/dist/domain/audience-pains/AudiencePain.js +3 -2
- package/dist/domain/audience-pains/AudiencePain.js.map +1 -1
- package/dist/domain/audience-pains/AudiencePainId.d.ts +4 -0
- package/dist/domain/audience-pains/AudiencePainId.d.ts.map +1 -0
- package/dist/domain/audience-pains/AudiencePainId.js +3 -0
- package/dist/domain/audience-pains/AudiencePainId.js.map +1 -0
- package/dist/domain/audiences/Audience.d.ts +3 -2
- package/dist/domain/audiences/Audience.d.ts.map +1 -1
- package/dist/domain/audiences/Audience.js +3 -2
- package/dist/domain/audiences/Audience.js.map +1 -1
- package/dist/domain/audiences/AudienceId.d.ts +4 -0
- package/dist/domain/audiences/AudienceId.d.ts.map +1 -0
- package/dist/domain/audiences/AudienceId.js +3 -0
- package/dist/domain/audiences/AudienceId.js.map +1 -0
- package/dist/domain/components/Component.d.ts +3 -2
- package/dist/domain/components/Component.d.ts.map +1 -1
- package/dist/domain/components/Component.js +3 -2
- package/dist/domain/components/Component.js.map +1 -1
- package/dist/domain/components/ComponentId.d.ts +4 -0
- package/dist/domain/components/ComponentId.d.ts.map +1 -0
- package/dist/domain/components/ComponentId.js +3 -0
- package/dist/domain/components/ComponentId.js.map +1 -0
- package/dist/domain/decisions/Decision.d.ts +3 -2
- package/dist/domain/decisions/Decision.d.ts.map +1 -1
- package/dist/domain/decisions/Decision.js +3 -2
- package/dist/domain/decisions/Decision.js.map +1 -1
- package/dist/domain/decisions/DecisionId.d.ts +4 -0
- package/dist/domain/decisions/DecisionId.d.ts.map +1 -0
- package/dist/domain/decisions/DecisionId.js +3 -0
- package/dist/domain/decisions/DecisionId.js.map +1 -0
- package/dist/domain/dependencies/Dependency.d.ts +3 -2
- package/dist/domain/dependencies/Dependency.d.ts.map +1 -1
- package/dist/domain/dependencies/Dependency.js +3 -2
- package/dist/domain/dependencies/Dependency.js.map +1 -1
- package/dist/domain/dependencies/DependencyId.d.ts +4 -0
- package/dist/domain/dependencies/DependencyId.d.ts.map +1 -0
- package/dist/domain/dependencies/DependencyId.js +3 -0
- package/dist/domain/dependencies/DependencyId.js.map +1 -0
- package/dist/domain/goals/Goal.d.ts +3 -2
- package/dist/domain/goals/Goal.d.ts.map +1 -1
- package/dist/domain/goals/Goal.js +3 -2
- package/dist/domain/goals/Goal.js.map +1 -1
- package/dist/domain/goals/GoalId.d.ts +4 -0
- package/dist/domain/goals/GoalId.d.ts.map +1 -0
- package/dist/domain/goals/GoalId.js +3 -0
- package/dist/domain/goals/GoalId.js.map +1 -0
- package/dist/domain/guidelines/Guideline.d.ts +3 -2
- package/dist/domain/guidelines/Guideline.d.ts.map +1 -1
- package/dist/domain/guidelines/Guideline.js +3 -2
- package/dist/domain/guidelines/Guideline.js.map +1 -1
- package/dist/domain/guidelines/GuidelineId.d.ts +4 -0
- package/dist/domain/guidelines/GuidelineId.d.ts.map +1 -0
- package/dist/domain/guidelines/GuidelineId.js +3 -0
- package/dist/domain/guidelines/GuidelineId.js.map +1 -0
- package/dist/domain/identity/DomainIdentity.d.ts +13 -0
- package/dist/domain/identity/DomainIdentity.d.ts.map +1 -0
- package/dist/domain/identity/DomainIdentity.js +16 -0
- package/dist/domain/identity/DomainIdentity.js.map +1 -0
- package/dist/domain/invariants/Invariant.d.ts +3 -2
- package/dist/domain/invariants/Invariant.d.ts.map +1 -1
- package/dist/domain/invariants/Invariant.js +3 -2
- package/dist/domain/invariants/Invariant.js.map +1 -1
- package/dist/domain/invariants/InvariantId.d.ts +4 -0
- package/dist/domain/invariants/InvariantId.d.ts.map +1 -0
- package/dist/domain/invariants/InvariantId.js +3 -0
- package/dist/domain/invariants/InvariantId.js.map +1 -0
- package/dist/domain/project/Project.d.ts +3 -2
- package/dist/domain/project/Project.d.ts.map +1 -1
- package/dist/domain/project/Project.js +3 -2
- package/dist/domain/project/Project.js.map +1 -1
- package/dist/domain/project/ProjectId.d.ts +4 -0
- package/dist/domain/project/ProjectId.d.ts.map +1 -0
- package/dist/domain/project/ProjectId.js +3 -0
- package/dist/domain/project/ProjectId.js.map +1 -0
- package/dist/domain/relations/Relation.d.ts +3 -2
- package/dist/domain/relations/Relation.d.ts.map +1 -1
- package/dist/domain/relations/Relation.js +3 -2
- package/dist/domain/relations/Relation.js.map +1 -1
- package/dist/domain/relations/RelationId.d.ts +4 -0
- package/dist/domain/relations/RelationId.d.ts.map +1 -0
- package/dist/domain/relations/RelationId.js +3 -0
- package/dist/domain/relations/RelationId.js.map +1 -0
- package/dist/domain/sessions/Session.d.ts +3 -2
- package/dist/domain/sessions/Session.d.ts.map +1 -1
- package/dist/domain/sessions/Session.js +3 -2
- package/dist/domain/sessions/Session.js.map +1 -1
- package/dist/domain/sessions/SessionId.d.ts +4 -0
- package/dist/domain/sessions/SessionId.d.ts.map +1 -0
- package/dist/domain/sessions/SessionId.js +3 -0
- package/dist/domain/sessions/SessionId.js.map +1 -0
- package/dist/domain/value-propositions/ValueProposition.d.ts +2 -1
- package/dist/domain/value-propositions/ValueProposition.d.ts.map +1 -1
- package/dist/domain/value-propositions/ValueProposition.js +3 -2
- package/dist/domain/value-propositions/ValueProposition.js.map +1 -1
- package/dist/domain/value-propositions/ValuePropositionId.d.ts +4 -0
- package/dist/domain/value-propositions/ValuePropositionId.d.ts.map +1 -0
- package/dist/domain/value-propositions/ValuePropositionId.js +3 -0
- package/dist/domain/value-propositions/ValuePropositionId.js.map +1 -0
- package/dist/domain/value-propositions/ValuePropositionProjection.d.ts +3 -3
- package/dist/domain/value-propositions/ValuePropositionProjection.d.ts.map +1 -1
- package/dist/domain/value-propositions/ValuePropositionProjection.js.map +1 -1
- package/dist/domain/workers/WorkerId.d.ts +4 -0
- package/dist/domain/workers/WorkerId.d.ts.map +1 -0
- package/dist/domain/workers/WorkerId.js +3 -0
- package/dist/domain/workers/WorkerId.js.map +1 -0
- package/dist/infrastructure/agents/AgentCliGateway.d.ts +3 -1
- package/dist/infrastructure/agents/AgentCliGateway.d.ts.map +1 -1
- package/dist/infrastructure/agents/AgentCliGateway.js +45 -10
- package/dist/infrastructure/agents/AgentCliGateway.js.map +1 -1
- package/dist/infrastructure/context/dependencies/add/SqliteDependencyAddedProjector.d.ts +1 -0
- package/dist/infrastructure/context/dependencies/add/SqliteDependencyAddedProjector.d.ts.map +1 -1
- package/dist/infrastructure/context/dependencies/add/SqliteDependencyAddedProjector.js +9 -0
- package/dist/infrastructure/context/dependencies/add/SqliteDependencyAddedProjector.js.map +1 -1
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.d.ts +2 -0
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.d.ts.map +1 -1
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.js +30 -10
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.js.map +1 -1
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.d.ts +2 -0
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.d.ts.map +1 -1
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.js +5 -1
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.js.map +1 -1
- package/dist/infrastructure/host/workers/FsWorkerIdentityRegistry.d.ts.map +1 -1
- package/dist/infrastructure/host/workers/FsWorkerIdentityRegistry.js +2 -2
- package/dist/infrastructure/host/workers/FsWorkerIdentityRegistry.js.map +1 -1
- package/dist/infrastructure/host/workers/SqliteWorkerIdentityRegistry.d.ts.map +1 -1
- package/dist/infrastructure/host/workers/SqliteWorkerIdentityRegistry.js +2 -2
- package/dist/infrastructure/host/workers/SqliteWorkerIdentityRegistry.js.map +1 -1
- package/dist/presentation/cli/commands/goals/list/GoalListOutputBuilder.js +1 -1
- package/dist/presentation/cli/commands/goals/list/GoalListOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/project/init/project.init.js +1 -1
- package/dist/presentation/cli/commands/project/init/project.init.js.map +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonAgentConfigCycler.js +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonAgentConfigCycler.js.map +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonPanel.d.ts.map +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonPanel.js +37 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonPanel.js.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRowMessageFormatter.d.ts.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRowMessageFormatter.js +10 -0
- package/dist/presentation/tui/cockpit/DaemonEventRowMessageFormatter.js.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRows.d.ts.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRows.js +36 -2
- package/dist/presentation/tui/cockpit/DaemonEventRows.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.d.ts +2 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.js +2 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventSnapshot.d.ts +3 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventSnapshot.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.js +2 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts +2 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.d.ts +2 -0
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.js +49 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.d.ts +3 -0
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.js +61 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ProcessManagerEventEmitter } from "../../../daemons/ProcessManagerEventEmitter.js";
|
|
1
2
|
import { GoalStatus } from "../../../../domain/goals/Constants.js";
|
|
2
3
|
const REFINER_EVENT_SOURCE = "refiner";
|
|
3
4
|
const REFINER_EVENT_TEXT_FIELD_MAX_LENGTH = 2048;
|
|
@@ -39,71 +40,77 @@ export class RefinerProcessManager {
|
|
|
39
40
|
}
|
|
40
41
|
async processNext(options) {
|
|
41
42
|
const startedAt = process.hrtime.bigint();
|
|
43
|
+
const events = new ProcessManagerEventEmitter(REFINER_EVENT_SOURCE, options, startedAt);
|
|
44
|
+
events.emit("processing", "polling", "polling for defined goals", { phase: "polling" });
|
|
42
45
|
const goals = await this.selectEligibleGoals();
|
|
43
46
|
if (goals.length === 0) {
|
|
44
|
-
|
|
45
|
-
daemon: REFINER_EVENT_SOURCE,
|
|
46
|
-
status: "idle",
|
|
47
|
-
source: REFINER_EVENT_SOURCE,
|
|
48
|
-
...REFINER_EVENT_COPY.noWork,
|
|
49
|
-
});
|
|
47
|
+
events.emit("idle", REFINER_EVENT_COPY.noWork.category, REFINER_EVENT_COPY.noWork.message, { phase: "idle" });
|
|
50
48
|
this.track(startedAt, { status: "idle", attempts: 0 });
|
|
51
49
|
return { status: "idle", attempts: 0 };
|
|
52
50
|
}
|
|
53
51
|
const goal = goals[0];
|
|
52
|
+
events.emit("processing", "selection", "selected goal for refinement", {
|
|
53
|
+
phase: "selection",
|
|
54
|
+
goalId: goal.goalId,
|
|
55
|
+
});
|
|
54
56
|
try {
|
|
55
57
|
await this.refineGoalController.handle({ goalId: goal.goalId });
|
|
56
58
|
}
|
|
57
59
|
catch (error) {
|
|
58
60
|
const errorProperties = this.errorProperties(error);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
status: "failed",
|
|
62
|
-
source: REFINER_EVENT_SOURCE,
|
|
61
|
+
events.emit("failed", REFINER_EVENT_COPY.failed.category, REFINER_EVENT_COPY.failed.message, {
|
|
62
|
+
phase: "failed",
|
|
63
63
|
goalId: goal.goalId,
|
|
64
|
-
...REFINER_EVENT_COPY.failed,
|
|
65
64
|
...errorProperties,
|
|
66
65
|
});
|
|
67
66
|
this.track(startedAt, { status: "failed", attempts: 0, goalId: goal.goalId, ...errorProperties });
|
|
68
67
|
return { status: "failed", goalId: goal.goalId, attempts: 0 };
|
|
69
68
|
}
|
|
70
69
|
for (let attempt = 1; attempt <= options.maxRetries; attempt++) {
|
|
71
|
-
|
|
72
|
-
daemon: REFINER_EVENT_SOURCE,
|
|
73
|
-
status: "processing",
|
|
74
|
-
source: REFINER_EVENT_SOURCE,
|
|
70
|
+
const attemptContext = {
|
|
75
71
|
goalId: goal.goalId,
|
|
76
72
|
attempt,
|
|
77
73
|
maxRetries: options.maxRetries,
|
|
78
|
-
|
|
74
|
+
};
|
|
75
|
+
events.emit("processing", REFINER_EVENT_COPY.workStarted.category, REFINER_EVENT_COPY.workStarted.message, {
|
|
76
|
+
phase: "working",
|
|
77
|
+
...attemptContext,
|
|
79
78
|
});
|
|
80
|
-
|
|
79
|
+
let sawAgentActivity = false;
|
|
80
|
+
const invocation = {
|
|
81
|
+
agentId: options.agentId,
|
|
82
|
+
prompt: this.buildPrompt(goal.goalId),
|
|
83
|
+
onActivity: (activity) => {
|
|
84
|
+
sawAgentActivity = true;
|
|
85
|
+
events.emitAgentActivity(activity.stream, activity.text, attemptContext);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
const result = await this.agentGateway.invoke(invocation);
|
|
89
|
+
if (!sawAgentActivity) {
|
|
90
|
+
this.emitReturnedAgentOutput(events, result, attemptContext);
|
|
91
|
+
}
|
|
81
92
|
if (await this.isGoalRefined(goal.goalId)) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
source: REFINER_EVENT_SOURCE,
|
|
86
|
-
goalId: goal.goalId,
|
|
87
|
-
attempt,
|
|
88
|
-
maxRetries: options.maxRetries,
|
|
93
|
+
events.emit("completed", REFINER_EVENT_COPY.completed.category, REFINER_EVENT_COPY.completed.message, {
|
|
94
|
+
phase: "completed",
|
|
95
|
+
...attemptContext,
|
|
89
96
|
exitCode: result.exitCode,
|
|
90
|
-
...REFINER_EVENT_COPY.completed,
|
|
91
97
|
});
|
|
92
98
|
this.track(startedAt, { status: "completed", attempts: attempt, goalId: goal.goalId, agentExitCode: result.exitCode });
|
|
93
99
|
return { status: "completed", goalId: goal.goalId, attempts: attempt };
|
|
94
100
|
}
|
|
95
101
|
const retryExhausted = attempt === options.maxRetries;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
source: REFINER_EVENT_SOURCE,
|
|
100
|
-
goalId: goal.goalId,
|
|
101
|
-
attempt,
|
|
102
|
-
maxRetries: options.maxRetries,
|
|
102
|
+
events.emit(retryExhausted ? "exhausted" : "skipped", retryExhausted ? REFINER_EVENT_COPY.exhausted.category : REFINER_EVENT_COPY.skipped.category, retryExhausted ? REFINER_EVENT_COPY.exhausted.message : REFINER_EVENT_COPY.skipped.message, {
|
|
103
|
+
phase: retryExhausted ? "exhausted" : "retry",
|
|
104
|
+
...attemptContext,
|
|
103
105
|
exitCode: result.exitCode,
|
|
104
|
-
...(retryExhausted ? REFINER_EVENT_COPY.exhausted : REFINER_EVENT_COPY.skipped),
|
|
105
106
|
...this.agentFailureProperties(result),
|
|
106
107
|
});
|
|
108
|
+
if (!retryExhausted) {
|
|
109
|
+
events.emit("processing", "retry", "retrying refinement", {
|
|
110
|
+
phase: "retry",
|
|
111
|
+
...attemptContext,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
107
114
|
}
|
|
108
115
|
this.track(startedAt, { status: "exhausted", attempts: options.maxRetries, goalId: goal.goalId });
|
|
109
116
|
return { status: "exhausted", goalId: goal.goalId, attempts: options.maxRetries };
|
|
@@ -116,15 +123,16 @@ export class RefinerProcessManager {
|
|
|
116
123
|
.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
|
|
117
124
|
}
|
|
118
125
|
buildPrompt(goalId) {
|
|
119
|
-
return
|
|
126
|
+
return [
|
|
127
|
+
`Continue the Jumbo refinement workflow for goal ${goalId}.`,
|
|
128
|
+
"The daemon has already moved the goal into refinement.",
|
|
129
|
+
`Update the goal context as needed, then complete refinement with: jumbo goal commit --id ${goalId}`,
|
|
130
|
+
].join(" ");
|
|
120
131
|
}
|
|
121
132
|
async isGoalRefined(goalId) {
|
|
122
133
|
const goal = await this.goalReader.findById(goalId);
|
|
123
134
|
return goal?.status === GoalStatus.REFINED;
|
|
124
135
|
}
|
|
125
|
-
emit(options, event) {
|
|
126
|
-
options.emit?.(event);
|
|
127
|
-
}
|
|
128
136
|
track(startedAt, properties) {
|
|
129
137
|
this.telemetryClient.track("refiner_process_completed", {
|
|
130
138
|
daemon: "refiner",
|
|
@@ -132,6 +140,14 @@ export class RefinerProcessManager {
|
|
|
132
140
|
...properties,
|
|
133
141
|
});
|
|
134
142
|
}
|
|
143
|
+
emitReturnedAgentOutput(events, result, context) {
|
|
144
|
+
if (result.stdout !== undefined) {
|
|
145
|
+
events.emitAgentActivity("stdout", result.stdout, context);
|
|
146
|
+
}
|
|
147
|
+
if (result.stderr !== undefined) {
|
|
148
|
+
events.emitAgentActivity("stderr", result.stderr, context);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
135
151
|
errorProperties(error) {
|
|
136
152
|
if (error instanceof Error) {
|
|
137
153
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefinerProcessManager.js","sourceRoot":"","sources":["../../../../../src/application/context/goals/refine/RefinerProcessManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RefinerProcessManager.js","sourceRoot":"","sources":["../../../../../src/application/context/goals/refine/RefinerProcessManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,9 +20,8 @@ export declare class ReviewerProcessManager implements IProcessManager {
|
|
|
20
20
|
selectEligibleGoals(): Promise<GoalView[]>;
|
|
21
21
|
buildPrompt(goalId: string): string;
|
|
22
22
|
private isReviewComplete;
|
|
23
|
-
private emit;
|
|
24
|
-
private emitModelOutput;
|
|
25
23
|
private track;
|
|
24
|
+
private emitReturnedAgentOutput;
|
|
26
25
|
private errorProperties;
|
|
27
26
|
}
|
|
28
27
|
//# sourceMappingURL=ReviewerProcessManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReviewerProcessManager.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/goals/review/ReviewerProcessManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"ReviewerProcessManager.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/goals/review/ReviewerProcessManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAEnH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAgC7E,qBAAa,sBAAuB,YAAW,eAAe;IAE1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,gBAAgB,EAAE,iBAAiB,EACnC,UAAU,EAAE,0BAA0B,EACtC,WAAW,EAAE,eAAe,EAC5B,oBAAoB,EAAE,qBAAqB,EAC3C,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,aAAa,EAC3B,eAAe,EAAE,gBAAgB;IAG9C,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmF1E,mBAAmB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;YASrB,gBAAgB;IAK9B,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,eAAe;CAexB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ProcessManagerEventEmitter } from "../../../daemons/ProcessManagerEventEmitter.js";
|
|
1
2
|
import { GoalStatus } from "../../../../domain/goals/Constants.js";
|
|
2
3
|
const REVIEW_COMPLETE_STATUSES = new Set([GoalStatus.QUALIFIED, GoalStatus.REJECTED]);
|
|
3
4
|
const REVIEWER_EVENT_SOURCE = "reviewer";
|
|
@@ -40,71 +41,76 @@ export class ReviewerProcessManager {
|
|
|
40
41
|
}
|
|
41
42
|
async processNext(options) {
|
|
42
43
|
const startedAt = process.hrtime.bigint();
|
|
44
|
+
const events = new ProcessManagerEventEmitter(REVIEWER_EVENT_SOURCE, options, startedAt);
|
|
45
|
+
events.emit("processing", "polling", "polling for submitted goals", { phase: "polling" });
|
|
43
46
|
const goals = await this.selectEligibleGoals();
|
|
44
47
|
if (goals.length === 0) {
|
|
45
|
-
|
|
46
|
-
daemon: REVIEWER_EVENT_SOURCE,
|
|
47
|
-
status: "idle",
|
|
48
|
-
source: REVIEWER_EVENT_SOURCE,
|
|
49
|
-
...REVIEWER_EVENT_COPY.noWork,
|
|
50
|
-
});
|
|
48
|
+
events.emit("idle", REVIEWER_EVENT_COPY.noWork.category, REVIEWER_EVENT_COPY.noWork.message, { phase: "idle" });
|
|
51
49
|
this.track(startedAt, { status: "idle", attempts: 0 });
|
|
52
50
|
return { status: "idle", attempts: 0 };
|
|
53
51
|
}
|
|
54
52
|
const goal = goals[0];
|
|
53
|
+
events.emit("processing", "selection", "selected goal for review", {
|
|
54
|
+
phase: "selection",
|
|
55
|
+
goalId: goal.goalId,
|
|
56
|
+
});
|
|
55
57
|
try {
|
|
56
58
|
await this.reviewGoalController.handle({ goalId: goal.goalId });
|
|
57
59
|
}
|
|
58
60
|
catch (error) {
|
|
59
61
|
const errorProperties = this.errorProperties(error);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
status: "failed",
|
|
63
|
-
source: REVIEWER_EVENT_SOURCE,
|
|
62
|
+
events.emit("failed", REVIEWER_EVENT_COPY.failed.category, REVIEWER_EVENT_COPY.failed.message, {
|
|
63
|
+
phase: "failed",
|
|
64
64
|
goalId: goal.goalId,
|
|
65
|
-
...REVIEWER_EVENT_COPY.failed,
|
|
66
65
|
...errorProperties,
|
|
67
66
|
});
|
|
68
67
|
this.track(startedAt, { status: "failed", attempts: 0, goalId: goal.goalId, ...errorProperties });
|
|
69
68
|
return { status: "failed", goalId: goal.goalId, attempts: 0 };
|
|
70
69
|
}
|
|
71
70
|
for (let attempt = 1; attempt <= options.maxRetries; attempt++) {
|
|
72
|
-
|
|
73
|
-
daemon: REVIEWER_EVENT_SOURCE,
|
|
74
|
-
status: "processing",
|
|
75
|
-
source: REVIEWER_EVENT_SOURCE,
|
|
71
|
+
const attemptContext = {
|
|
76
72
|
goalId: goal.goalId,
|
|
77
73
|
attempt,
|
|
78
74
|
maxRetries: options.maxRetries,
|
|
79
|
-
|
|
75
|
+
};
|
|
76
|
+
events.emit("processing", REVIEWER_EVENT_COPY.workStarted.category, REVIEWER_EVENT_COPY.workStarted.message, {
|
|
77
|
+
phase: "working",
|
|
78
|
+
...attemptContext,
|
|
80
79
|
});
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
let sawAgentActivity = false;
|
|
81
|
+
const invocation = {
|
|
82
|
+
agentId: options.agentId,
|
|
83
|
+
prompt: this.buildPrompt(goal.goalId),
|
|
84
|
+
onActivity: (activity) => {
|
|
85
|
+
sawAgentActivity = true;
|
|
86
|
+
events.emitAgentActivity(activity.stream, activity.text, attemptContext);
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const result = await this.agentGateway.invoke(invocation);
|
|
90
|
+
if (!sawAgentActivity) {
|
|
91
|
+
this.emitReturnedAgentOutput(events, result, attemptContext);
|
|
92
|
+
}
|
|
83
93
|
if (await this.isReviewComplete(goal.goalId)) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
source: REVIEWER_EVENT_SOURCE,
|
|
88
|
-
goalId: goal.goalId,
|
|
89
|
-
attempt,
|
|
90
|
-
maxRetries: options.maxRetries,
|
|
94
|
+
events.emit("completed", REVIEWER_EVENT_COPY.completed.category, REVIEWER_EVENT_COPY.completed.message, {
|
|
95
|
+
phase: "completed",
|
|
96
|
+
...attemptContext,
|
|
91
97
|
exitCode: result.exitCode,
|
|
92
|
-
...REVIEWER_EVENT_COPY.completed,
|
|
93
98
|
});
|
|
94
99
|
this.track(startedAt, { status: "completed", attempts: attempt, goalId: goal.goalId, agentExitCode: result.exitCode });
|
|
95
100
|
return { status: "completed", goalId: goal.goalId, attempts: attempt };
|
|
96
101
|
}
|
|
97
102
|
const retryExhausted = attempt === options.maxRetries;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
source: REVIEWER_EVENT_SOURCE,
|
|
102
|
-
goalId: goal.goalId,
|
|
103
|
-
attempt,
|
|
104
|
-
maxRetries: options.maxRetries,
|
|
103
|
+
events.emit(retryExhausted ? "exhausted" : "skipped", retryExhausted ? REVIEWER_EVENT_COPY.exhausted.category : REVIEWER_EVENT_COPY.skipped.category, retryExhausted ? REVIEWER_EVENT_COPY.exhausted.message : REVIEWER_EVENT_COPY.skipped.message, {
|
|
104
|
+
phase: retryExhausted ? "exhausted" : "retry",
|
|
105
|
+
...attemptContext,
|
|
105
106
|
exitCode: result.exitCode,
|
|
106
|
-
...(retryExhausted ? REVIEWER_EVENT_COPY.exhausted : REVIEWER_EVENT_COPY.skipped),
|
|
107
107
|
});
|
|
108
|
+
if (!retryExhausted) {
|
|
109
|
+
events.emit("processing", "retry", "retrying review", {
|
|
110
|
+
phase: "retry",
|
|
111
|
+
...attemptContext,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
108
114
|
}
|
|
109
115
|
this.track(startedAt, { status: "exhausted", attempts: options.maxRetries, goalId: goal.goalId });
|
|
110
116
|
return { status: "exhausted", goalId: goal.goalId, attempts: options.maxRetries };
|
|
@@ -117,34 +123,17 @@ export class ReviewerProcessManager {
|
|
|
117
123
|
.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
|
|
118
124
|
}
|
|
119
125
|
buildPrompt(goalId) {
|
|
120
|
-
return
|
|
126
|
+
return [
|
|
127
|
+
`Continue the Jumbo review workflow for goal ${goalId}.`,
|
|
128
|
+
"The daemon has already moved the goal into review.",
|
|
129
|
+
`If the implementation passes QA, run: jumbo goal approve --id ${goalId}`,
|
|
130
|
+
`If it fails QA, run: jumbo goal reject --id ${goalId} --review-issues "describe the issues"`,
|
|
131
|
+
].join(" ");
|
|
121
132
|
}
|
|
122
133
|
async isReviewComplete(goalId) {
|
|
123
134
|
const goal = await this.goalReader.findById(goalId);
|
|
124
135
|
return REVIEW_COMPLETE_STATUSES.has(goal?.status ?? "unknown");
|
|
125
136
|
}
|
|
126
|
-
emit(options, event) {
|
|
127
|
-
options.emit?.(event);
|
|
128
|
-
}
|
|
129
|
-
emitModelOutput(options, goalId, stdout) {
|
|
130
|
-
if (stdout === undefined) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const lines = stdout
|
|
134
|
-
.split(/\r?\n/)
|
|
135
|
-
.map((line) => line.trim())
|
|
136
|
-
.filter((line) => line.length > 0);
|
|
137
|
-
for (const line of lines) {
|
|
138
|
-
this.emit(options, {
|
|
139
|
-
daemon: REVIEWER_EVENT_SOURCE,
|
|
140
|
-
status: "processing",
|
|
141
|
-
source: REVIEWER_EVENT_SOURCE,
|
|
142
|
-
category: "model-output",
|
|
143
|
-
message: limitTextTail(line, REVIEWER_EVENT_TEXT_FIELD_MAX_LENGTH),
|
|
144
|
-
goalId,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
137
|
track(startedAt, properties) {
|
|
149
138
|
this.telemetryClient.track("reviewer_process_completed", {
|
|
150
139
|
daemon: "reviewer",
|
|
@@ -152,6 +141,14 @@ export class ReviewerProcessManager {
|
|
|
152
141
|
...properties,
|
|
153
142
|
});
|
|
154
143
|
}
|
|
144
|
+
emitReturnedAgentOutput(events, result, context) {
|
|
145
|
+
if (result.stdout !== undefined) {
|
|
146
|
+
events.emitAgentActivity("stdout", result.stdout, context);
|
|
147
|
+
}
|
|
148
|
+
if (result.stderr !== undefined) {
|
|
149
|
+
events.emitAgentActivity("stderr", result.stderr, context);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
155
152
|
errorProperties(error) {
|
|
156
153
|
if (error instanceof Error) {
|
|
157
154
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReviewerProcessManager.js","sourceRoot":"","sources":["../../../../../src/application/context/goals/review/ReviewerProcessManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReviewerProcessManager.js","sourceRoot":"","sources":["../../../../../src/application/context/goals/review/ReviewerProcessManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddGuidelineCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/guidelines/add/AddGuidelineCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"AddGuidelineCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/guidelines/add/AddGuidelineCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,WAAW,EAAE,0BAA0B,EACvC,QAAQ,EAAE,SAAS;IAGhC,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAsB9E"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Orchestrates the flow: create aggregate, apply business logic, persist event, publish to bus.
|
|
6
6
|
*/
|
|
7
7
|
import { Guideline } from "../../../../domain/guidelines/Guideline.js";
|
|
8
|
-
import { IdGenerator } from "../../../identity/IdGenerator.js";
|
|
9
8
|
export class AddGuidelineCommandHandler {
|
|
10
9
|
constructor(eventWriter, eventBus) {
|
|
11
10
|
this.eventWriter = eventWriter;
|
|
@@ -13,8 +12,8 @@ export class AddGuidelineCommandHandler {
|
|
|
13
12
|
}
|
|
14
13
|
async execute(command) {
|
|
15
14
|
// 1. Create new aggregate
|
|
16
|
-
const
|
|
17
|
-
const
|
|
15
|
+
const guideline = Guideline.create();
|
|
16
|
+
const guidelineId = guideline.snapshot.id;
|
|
18
17
|
// 2. Domain logic produces event
|
|
19
18
|
const event = guideline.add(command.category, command.title, command.description, command.rationale, command.examples);
|
|
20
19
|
// 3. Persist event to file store
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddGuidelineCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/guidelines/add/AddGuidelineCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"AddGuidelineCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/guidelines/add/AddGuidelineCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAEvE,MAAM,OAAO,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,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAE1C,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,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddInvariantCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/invariants/add/AddInvariantCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"AddInvariantCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/invariants/add/AddInvariantCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,WAAW,EAAE,0BAA0B,EACvC,eAAe,EAAE,mBAAmB,EACpC,QAAQ,EAAE,SAAS;IAGhC,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CA0B9E"}
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* 5. Publishes event to event bus for projection updates
|
|
10
10
|
*/
|
|
11
11
|
import { Invariant } from "../../../../domain/invariants/Invariant.js";
|
|
12
|
-
import { IdGenerator } from "../../../identity/IdGenerator.js";
|
|
13
12
|
export class AddInvariantCommandHandler {
|
|
14
13
|
constructor(eventWriter, invariantReader, eventBus) {
|
|
15
14
|
this.eventWriter = eventWriter;
|
|
@@ -23,8 +22,8 @@ export class AddInvariantCommandHandler {
|
|
|
23
22
|
throw new Error(`Invariant with title "${command.title}" already exists`);
|
|
24
23
|
}
|
|
25
24
|
// 1. Create new aggregate
|
|
26
|
-
const
|
|
27
|
-
const
|
|
25
|
+
const invariant = Invariant.create();
|
|
26
|
+
const invariantId = invariant.snapshot.id;
|
|
28
27
|
// 2. Domain logic produces event
|
|
29
28
|
const event = invariant.add(command.title, command.description, command.rationale);
|
|
30
29
|
// 3. Persist event to file store
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddInvariantCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/invariants/add/AddInvariantCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"AddInvariantCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/invariants/add/AddInvariantCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAEvE,MAAM,OAAO,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,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAE1C,iCAAiC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CACzB,OAAO,CAAC,KAAK,EACb,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"}
|
|
@@ -30,8 +30,8 @@ export class InitializeProjectCommandHandler {
|
|
|
30
30
|
throw new Error(ProjectErrorMessages.ALREADY_INITIALIZED);
|
|
31
31
|
}
|
|
32
32
|
// 1. Create new aggregate
|
|
33
|
-
const
|
|
34
|
-
const
|
|
33
|
+
const project = Project.create();
|
|
34
|
+
const projectId = project.snapshot.id;
|
|
35
35
|
// 2. Domain logic produces event
|
|
36
36
|
const event = project.initialize(command.name, command.purpose);
|
|
37
37
|
// 3. Persist event to file store
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitializeProjectCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/project/init/InitializeProjectCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,MAAM,OAAO,+BAA+B;IAC1C,YACmB,WAA2C,EAC3C,QAAmB,EACnB,MAA0B,EAC1B,iBAAqC,EACrC,mBAAyC,EACzC,iBAAqC,EACrC,uBAAiD;QANjD,gBAAW,GAAX,WAAW,CAAgC;QAC3C,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAAoB;QAC1B,sBAAiB,GAAjB,iBAAiB,CAAoB;QACrC,wBAAmB,GAAnB,mBAAmB,CAAsB;QACzC,sBAAiB,GAAjB,iBAAiB,CAAoB;QACrC,4BAAuB,GAAvB,uBAAuB,CAA0B;IACjE,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,OAAiC,EACjC,WAAmB,EACnB,gBAAqC;QAErC,iDAAiD;QACjD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QAC5D,CAAC;QAED,0BAA0B;QAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"InitializeProjectCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/project/init/InitializeProjectCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,MAAM,OAAO,+BAA+B;IAC1C,YACmB,WAA2C,EAC3C,QAAmB,EACnB,MAA0B,EAC1B,iBAAqC,EACrC,mBAAyC,EACzC,iBAAqC,EACrC,uBAAiD;QANjD,gBAAW,GAAX,WAAW,CAAgC;QAC3C,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAAoB;QAC1B,sBAAiB,GAAjB,iBAAiB,CAAoB;QACrC,wBAAmB,GAAnB,mBAAmB,CAAsB;QACzC,sBAAiB,GAAjB,iBAAiB,CAAoB;QACrC,4BAAuB,GAAvB,uBAAuB,CAA0B;IACjE,CAAC;IAEJ,KAAK,CAAC,OAAO,CACX,OAAiC,EACjC,WAAmB,EACnB,gBAAqC;QAErC,iDAAiD;QACjD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QAC5D,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEtC,iCAAiC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAC9B,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAChB,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,uEAAuE;QACvE,MAAM,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE/D,2CAA2C;QAC3C,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEzD,kDAAkD;QAClD,MAAM,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAEtF,mEAAmE;QACnE,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAE3D,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddRelationCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/add/AddRelationCommandHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddRelationCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/relations/add/AddRelationCommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D;;;;GAIG;AACH,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,oBAAoB;IAGzC,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAsC5E"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IdGenerator } from "../../../identity/IdGenerator.js";
|
|
2
1
|
import { Relation } from "../../../../domain/relations/Relation.js";
|
|
3
2
|
/**
|
|
4
3
|
* Handles adding a new relation.
|
|
@@ -18,10 +17,9 @@ export class AddRelationCommandHandler {
|
|
|
18
17
|
// Relation already exists - idempotent: just return the existing ID
|
|
19
18
|
return { relationId: existingRelation.relationId };
|
|
20
19
|
}
|
|
21
|
-
// Generate new relation ID
|
|
22
|
-
const relationId = IdGenerator.generate();
|
|
23
20
|
// Create new aggregate
|
|
24
|
-
const relation = Relation.create(
|
|
21
|
+
const relation = Relation.create();
|
|
22
|
+
const relationId = relation.snapshot.id;
|
|
25
23
|
// Domain logic produces event
|
|
26
24
|
const event = relation.add(command.fromEntityType, command.fromEntityId, command.toEntityType, command.toEntityId, command.relationType, command.description, command.strength);
|
|
27
25
|
// Persist event to file store
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddRelationCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/add/AddRelationCommandHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddRelationCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/relations/add/AddRelationCommandHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEpE;;;;GAIG;AACH,MAAM,OAAO,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,uBAAuB;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAExC,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartSessionCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/sessions/start/StartSessionCommandHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StartSessionCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/sessions/start/StartSessionCommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D;;;GAGG;AACH,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,WAAW,EAAE,0BAA0B,EACvC,QAAQ,EAAE,SAAS;IAGhC,OAAO,CACX,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAgBlC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IdGenerator } from "../../../identity/IdGenerator.js";
|
|
2
1
|
import { Session } from "../../../../domain/sessions/Session.js";
|
|
3
2
|
/**
|
|
4
3
|
* Handles starting a new session.
|
|
@@ -10,10 +9,9 @@ export class StartSessionCommandHandler {
|
|
|
10
9
|
this.eventBus = eventBus;
|
|
11
10
|
}
|
|
12
11
|
async execute(command) {
|
|
13
|
-
// Generate new session ID
|
|
14
|
-
const sessionId = IdGenerator.generate();
|
|
15
12
|
// Create new aggregate
|
|
16
|
-
const session = Session.create(
|
|
13
|
+
const session = Session.create();
|
|
14
|
+
const sessionId = session.snapshot.id;
|
|
17
15
|
// Domain logic produces event
|
|
18
16
|
const event = session.start();
|
|
19
17
|
// Persist event to file store
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartSessionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/sessions/start/StartSessionCommandHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StartSessionCommandHandler.js","sourceRoot":"","sources":["../../../../../src/application/context/sessions/start/StartSessionCommandHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjE;;;GAGG;AACH,MAAM,OAAO,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,uBAAuB;QACvB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEtC,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"}
|
package/dist/application/context/value-propositions/add/AddValuePropositionCommandHandler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddValuePropositionCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/value-propositions/add/AddValuePropositionCommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"AddValuePropositionCommandHandler.d.ts","sourceRoot":"","sources":["../../../../../src/application/context/value-propositions/add/AddValuePropositionCommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAI5D;;;GAGG;AACH,qBAAa,iCAAiC;IAE1C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,WAAW,EAAE,iCAAiC,EAC9C,QAAQ,EAAE,SAAS;IAGhC,OAAO,CACX,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;CAqB3C"}
|
package/dist/application/context/value-propositions/add/AddValuePropositionCommandHandler.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ValueProposition } from "../../../../domain/value-propositions/ValueProposition.js";
|
|
2
|
-
import { IdGenerator } from "../../../identity/IdGenerator.js";
|
|
3
2
|
/**
|
|
4
3
|
* Handler for adding a new value proposition
|
|
5
4
|
* Publishes events via event bus for projection updates
|
|
@@ -11,8 +10,8 @@ export class AddValuePropositionCommandHandler {
|
|
|
11
10
|
}
|
|
12
11
|
async execute(command) {
|
|
13
12
|
// 1. Create new aggregate with generated ID
|
|
14
|
-
const
|
|
15
|
-
const
|
|
13
|
+
const valueProposition = ValueProposition.create();
|
|
14
|
+
const valuePropositionId = valueProposition.snapshot.id;
|
|
16
15
|
// 2. Domain logic produces event
|
|
17
16
|
const event = valueProposition.add(command.title, command.description, command.benefit, command.measurableOutcome);
|
|
18
17
|
// 3. Persist event to file store
|