@cat-factory/orchestration 0.74.3 → 0.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/container.d.ts +32 -2
  2. package/dist/container.d.ts.map +1 -1
  3. package/dist/container.js +52 -1
  4. package/dist/container.js.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/modules/docInterview/DocInterviewService.d.ts +68 -0
  9. package/dist/modules/docInterview/DocInterviewService.d.ts.map +1 -0
  10. package/dist/modules/docInterview/DocInterviewService.js +174 -0
  11. package/dist/modules/docInterview/DocInterviewService.js.map +1 -0
  12. package/dist/modules/docInterview/doc-interview.logic.d.ts +42 -0
  13. package/dist/modules/docInterview/doc-interview.logic.d.ts.map +1 -0
  14. package/dist/modules/docInterview/doc-interview.logic.js +111 -0
  15. package/dist/modules/docInterview/doc-interview.logic.js.map +1 -0
  16. package/dist/modules/execution/AgentContextBuilder.d.ts +9 -1
  17. package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
  18. package/dist/modules/execution/AgentContextBuilder.js +33 -5
  19. package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
  20. package/dist/modules/execution/DocInterviewController.d.ts +12 -0
  21. package/dist/modules/execution/DocInterviewController.d.ts.map +1 -0
  22. package/dist/modules/execution/DocInterviewController.js +56 -0
  23. package/dist/modules/execution/DocInterviewController.js.map +1 -0
  24. package/dist/modules/execution/ExecutionService.d.ts +27 -2
  25. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  26. package/dist/modules/execution/ExecutionService.js +34 -2
  27. package/dist/modules/execution/ExecutionService.js.map +1 -1
  28. package/dist/modules/execution/InitiativeInterviewController.d.ts +4 -41
  29. package/dist/modules/execution/InitiativeInterviewController.d.ts.map +1 -1
  30. package/dist/modules/execution/InitiativeInterviewController.js +39 -132
  31. package/dist/modules/execution/InitiativeInterviewController.js.map +1 -1
  32. package/dist/modules/execution/InterviewGateController.d.ts +82 -0
  33. package/dist/modules/execution/InterviewGateController.d.ts.map +1 -0
  34. package/dist/modules/execution/InterviewGateController.js +128 -0
  35. package/dist/modules/execution/InterviewGateController.js.map +1 -0
  36. package/dist/modules/execution/RunDispatcher.d.ts +4 -0
  37. package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
  38. package/dist/modules/execution/RunDispatcher.js +16 -1
  39. package/dist/modules/execution/RunDispatcher.js.map +1 -1
  40. package/package.json +12 -12
@@ -0,0 +1,82 @@
1
+ import type { Block, BlockRepository, ExecutionInstance, ExecutionRepository, PipelineStep, WorkRunner } from '@cat-factory/kernel';
2
+ import type { AdvanceResult } from './advance.js';
3
+ import type { RunStateMachine } from './RunStateMachine.js';
4
+ import type { StepGraph } from './StepGraph.js';
5
+ /** The durable-driver collaborators every interview gate needs (shared with every other gate). */
6
+ export interface InterviewGateDeps {
7
+ blockRepository: BlockRepository;
8
+ executionRepository: ExecutionRepository;
9
+ workRunner: WorkRunner;
10
+ stateMachine: RunStateMachine;
11
+ stepGraph: StepGraph;
12
+ }
13
+ /**
14
+ * The per-feature differences an interview gate varies over. Everything else (the
15
+ * park/answer/resume/advance spine) lives in {@link InterviewGateController}.
16
+ *
17
+ * @typeParam TEntity the interview entity the window renders and the actions return (a
18
+ * `DocInterviewSession` for the doc interviewer, an `Initiative` for the planning interviewer).
19
+ */
20
+ export interface InterviewGateKind<TEntity> {
21
+ /** The pipeline-step `agentKind` this gate runs as (e.g. `doc-interviewer`). */
22
+ readonly agentKind: string;
23
+ /** Label for `assertFound` when a block has no live interview entity (e.g. `Initiative`). */
24
+ readonly entityName: string;
25
+ /** Whether the inline interviewer LLM is wired; false → the gate passes through unchanged. */
26
+ enabled(): boolean;
27
+ /**
28
+ * Drop any prior run's interview state for the block so a RE-RUN starts a clean interview
29
+ * (mirrors `IterativeReviewService.review` clearing the block before iteration 1). Optional — an
30
+ * entity-native gate whose entity lifecycle already isolates runs leaves it unset (no-op).
31
+ */
32
+ resetForFreshRun?(workspaceId: string, blockId: string): Promise<void>;
33
+ /**
34
+ * Run ONE interviewer pass and persist its result (owning its own load / model resolution /
35
+ * entity writes / live-event emit): return `park` when it asked the human a fresh batch of
36
+ * questions (the gate then parks on the decision-wait), or `advance` when it converged — or
37
+ * there was nothing to interview into.
38
+ */
39
+ runPass(workspaceId: string, instance: ExecutionInstance, block: Block, opts: {
40
+ proceed: boolean;
41
+ }): Promise<'park' | 'advance'>;
42
+ /** Record the human's answer to one pending question (and emit); null when there is no entity. */
43
+ recordAnswer(workspaceId: string, blockId: string, questionId: string, answer: string): Promise<TEntity | null>;
44
+ /** The block's current interview entity, or null (the window load path). */
45
+ current(workspaceId: string, blockId: string): Promise<TEntity | null>;
46
+ }
47
+ export declare class InterviewGateController<TEntity> {
48
+ private readonly deps;
49
+ private readonly kind;
50
+ constructor(deps: InterviewGateDeps, kind: InterviewGateKind<TEntity>);
51
+ /**
52
+ * Run the interviewer gate step. When no interviewer model is wired the step passes through
53
+ * (pipelines — and the conformance suite — run unchanged). Otherwise it runs an interviewer
54
+ * pass: questions → PARK for the window; converged → advance. Re-entrant: after the human
55
+ * `continue`s (or `proceed`s), the durable driver wakes and re-enters here, running the (slow)
56
+ * interviewer LLM in the driver rather than the HTTP request.
57
+ */
58
+ evaluate(workspaceId: string, instance: ExecutionInstance, step: PipelineStep, block: Block, isFinalStep: boolean): Promise<AdvanceResult>;
59
+ /** One interviewer pass: the strategy decides + persists, we park or advance. */
60
+ private dispatchPass;
61
+ /** Record the human's answer to one pending question. Does NOT resume the run. */
62
+ answer(workspaceId: string, blockId: string, questionId: string, answer: string): Promise<TEntity>;
63
+ /** Submit the answers and resume the interview (the interviewer re-runs, may ask more). */
64
+ continue(workspaceId: string, blockId: string): Promise<TEntity>;
65
+ /** Skip remaining questions: force the interviewer to converge, then advance. */
66
+ proceed(workspaceId: string, blockId: string): Promise<TEntity>;
67
+ /** The current interview entity for a block (window load path). */
68
+ getByBlock(workspaceId: string, blockId: string): Promise<TEntity | null>;
69
+ /**
70
+ * Record the continue/proceed intent on the parked interviewer step and signal the durable
71
+ * driver to wake — which re-enters {@link evaluate} and runs the (slow) interviewer LLM off the
72
+ * HTTP request. Off-path (no parked run) it is a no-op read: the interview is not live, so there
73
+ * is no driver to wake.
74
+ */
75
+ private resume;
76
+ private requireCurrent;
77
+ /** Locate the run + interviewer step a block's interview is parked on (or null). */
78
+ private findParkedStep;
79
+ /** Finish the interviewer step and advance to the next step (or finish the run). */
80
+ private completeStep;
81
+ }
82
+ //# sourceMappingURL=InterviewGateController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterviewGateController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/InterviewGateController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { assertFound } from '@cat-factory/kernel';
2
+ export class InterviewGateController {
3
+ deps;
4
+ kind;
5
+ constructor(deps, kind) {
6
+ this.deps = deps;
7
+ this.kind = kind;
8
+ }
9
+ /**
10
+ * Run the interviewer gate step. When no interviewer model is wired the step passes through
11
+ * (pipelines — and the conformance suite — run unchanged). Otherwise it runs an interviewer
12
+ * pass: questions → PARK for the window; converged → advance. Re-entrant: after the human
13
+ * `continue`s (or `proceed`s), the durable driver wakes and re-enters here, running the (slow)
14
+ * interviewer LLM in the driver rather than the HTTP request.
15
+ */
16
+ async evaluate(workspaceId, instance, step, block, isFinalStep) {
17
+ // Re-entry: the human answered and asked to continue/proceed. `proceed` forces the
18
+ // interviewer to converge (no more questions); `continue` lets it ask follow-ups. A parked
19
+ // run is never re-entered here without a decision (a blocked run no-ops in `advanceInstance`),
20
+ // so this branch is the ONLY resume path and the one below is the genuine first dispatch.
21
+ const pending = step.pendingInterview;
22
+ if (pending) {
23
+ step.pendingInterview = null;
24
+ if (!this.kind.enabled())
25
+ return this.completeStep(workspaceId, instance, step, isFinalStep);
26
+ return this.dispatchPass(workspaceId, instance, step, block, isFinalStep, {
27
+ proceed: pending.proceed === true,
28
+ });
29
+ }
30
+ // Fresh entry for this run: drop any prior run's interview state so a re-run starts a clean
31
+ // interview instead of reusing a stale (often converged / at-cap) session. Runs even when the
32
+ // interviewer is unwired, so a stale brief from an earlier wired run can't bleed downstream.
33
+ await this.kind.resetForFreshRun?.(workspaceId, block.id);
34
+ if (!this.kind.enabled())
35
+ return this.completeStep(workspaceId, instance, step, isFinalStep);
36
+ return this.dispatchPass(workspaceId, instance, step, block, isFinalStep, { proceed: false });
37
+ }
38
+ /** One interviewer pass: the strategy decides + persists, we park or advance. */
39
+ async dispatchPass(workspaceId, instance, step, block, isFinalStep, opts) {
40
+ const decision = await this.kind.runPass(workspaceId, instance, block, opts);
41
+ if (decision === 'park') {
42
+ // Surface a decision-required notification so the parked interview gate is discoverable.
43
+ await this.deps.stateMachine.raiseDecisionRequired(workspaceId, instance);
44
+ return this.deps.stateMachine.parkStepOnDecision(workspaceId, instance, step);
45
+ }
46
+ return this.completeStep(workspaceId, instance, step, isFinalStep);
47
+ }
48
+ // ---- window actions (driven by the per-feature server controller) --------------------------
49
+ /** Record the human's answer to one pending question. Does NOT resume the run. */
50
+ answer(workspaceId, blockId, questionId, answer) {
51
+ return this.requireCurrent(this.kind.recordAnswer(workspaceId, blockId, questionId, answer), blockId);
52
+ }
53
+ /** Submit the answers and resume the interview (the interviewer re-runs, may ask more). */
54
+ continue(workspaceId, blockId) {
55
+ return this.resume(workspaceId, blockId, { proceed: false }, 'continue');
56
+ }
57
+ /** Skip remaining questions: force the interviewer to converge, then advance. */
58
+ proceed(workspaceId, blockId) {
59
+ return this.resume(workspaceId, blockId, { proceed: true }, 'proceed');
60
+ }
61
+ /** The current interview entity for a block (window load path). */
62
+ getByBlock(workspaceId, blockId) {
63
+ return this.kind.current(workspaceId, blockId);
64
+ }
65
+ /**
66
+ * Record the continue/proceed intent on the parked interviewer step and signal the durable
67
+ * driver to wake — which re-enters {@link evaluate} and runs the (slow) interviewer LLM off the
68
+ * HTTP request. Off-path (no parked run) it is a no-op read: the interview is not live, so there
69
+ * is no driver to wake.
70
+ */
71
+ async resume(workspaceId, blockId, intent, choice) {
72
+ const parked = await this.findParkedStep(workspaceId, blockId);
73
+ if (parked) {
74
+ const { instance, step } = parked;
75
+ step.pendingInterview = intent.proceed ? { proceed: true } : {};
76
+ // Re-arm BEFORE signalling: the park left the run `blocked`, and `advanceInstance`
77
+ // no-ops unless it is `running`/`paused`, so a woken driver would otherwise return
78
+ // without re-entering the gate.
79
+ if (instance.status === 'blocked')
80
+ instance.status = 'running';
81
+ await this.deps.stateMachine.persistInstance(workspaceId, instance);
82
+ await this.deps.stateMachine.emitInstance(workspaceId, instance);
83
+ await this.deps.workRunner.signalDecision(workspaceId, instance.id, step.approval.id, choice);
84
+ }
85
+ return this.requireCurrent(this.kind.current(workspaceId, blockId), blockId);
86
+ }
87
+ async requireCurrent(entity, blockId) {
88
+ return assertFound(await entity, this.kind.entityName, blockId);
89
+ }
90
+ /** Locate the run + interviewer step a block's interview is parked on (or null). */
91
+ async findParkedStep(workspaceId, blockId) {
92
+ const block = await this.deps.blockRepository.get(workspaceId, blockId);
93
+ if (!block?.executionId)
94
+ return null;
95
+ const instance = await this.deps.executionRepository.get(workspaceId, block.executionId);
96
+ if (!instance)
97
+ return null;
98
+ const step = instance.steps.find((s) => s.agentKind === this.kind.agentKind &&
99
+ s.state === 'waiting_decision' &&
100
+ s.approval?.status === 'pending');
101
+ return step ? { instance, step } : null;
102
+ }
103
+ /** Finish the interviewer step and advance to the next step (or finish the run). */
104
+ async completeStep(workspaceId, instance, step, isFinalStep) {
105
+ this.deps.stepGraph.finishStep(step);
106
+ step.progress = 1;
107
+ step.subtasks = undefined;
108
+ step.approval = null;
109
+ step.pendingInterview = null;
110
+ if (isFinalStep) {
111
+ instance.status = 'done';
112
+ await this.deps.stateMachine.finalizeBlock(workspaceId, instance, undefined);
113
+ await this.deps.stateMachine.persistInstance(workspaceId, instance);
114
+ await this.deps.stateMachine.emitInstance(workspaceId, instance);
115
+ await this.deps.stateMachine.stopRunContainer(workspaceId, instance);
116
+ return { kind: 'done' };
117
+ }
118
+ instance.currentStep += 1;
119
+ const next = instance.steps[instance.currentStep];
120
+ if (next)
121
+ this.deps.stepGraph.startStep(next);
122
+ await this.deps.stateMachine.updateBlockProgress(workspaceId, instance, 'in_progress');
123
+ await this.deps.stateMachine.persistInstance(workspaceId, instance);
124
+ await this.deps.stateMachine.emitInstance(workspaceId, instance);
125
+ return { kind: 'continue' };
126
+ }
127
+ }
128
+ //# sourceMappingURL=InterviewGateController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterviewGateController.js","sourceRoot":"","sources":["../../../src/modules/execution/InterviewGateController.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { HumanTestController } from './HumanTestController.js';
7
7
  import { MergeResolver } from './MergeResolver.js';
8
8
  import { ReviewGateController, type ReviewKind } from './ReviewGateController.js';
9
9
  import type { InitiativeInterviewController } from './InitiativeInterviewController.js';
10
+ import type { DocInterviewController } from './DocInterviewController.js';
10
11
  import { RunStateMachine } from './RunStateMachine.js';
11
12
  import { StepGraph } from './StepGraph.js';
12
13
  import { TesterController } from './TesterController.js';
@@ -60,6 +61,8 @@ export interface RunDispatcherDeps {
60
61
  architectureBrainstormKind: ReviewKind<BrainstormSession>;
61
62
  /** The interactive-planning interviewer gate (slice 2); absent → the step passes through. */
62
63
  initiativeInterviewController?: InitiativeInterviewController;
64
+ /** The interactive document-interview gate (WS5); absent → the step passes through. */
65
+ docInterviewController?: DocInterviewController;
63
66
  runInitiatorScope: RunInitiatorScope;
64
67
  environmentProvisioning?: EnvironmentProvisioningService;
65
68
  ticketTrackerProvider?: TicketTrackerProvider;
@@ -116,6 +119,7 @@ export declare class RunDispatcher {
116
119
  private readonly requirementsBrainstormKind;
117
120
  private readonly architectureBrainstormKind;
118
121
  private readonly initiativeInterviewController?;
122
+ private readonly docInterviewController?;
119
123
  private readonly runInitiatorScope;
120
124
  private readonly environmentProvisioning?;
121
125
  private readonly ticketTrackerProvider?;
@@ -1 +1 @@
1
- {"version":3,"file":"RunDispatcher.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/RunDispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunDispatcher.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/RunDispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ConflictError, DEFAULT_MERGE_PRESET, getErrorMessage, getProvider, INITIATIVE_ANALYST_AGENT_KIND, INITIATIVE_COMMITTER_AGENT_KIND, INITIATIVE_INTERVIEWER_AGENT_KIND, INITIATIVE_PLANNER_AGENT_KIND, isAsyncAgentExecutor, NotFoundError, parseLocalModelId, recordGateAttempt, registeredGateFactories, registeredStepResolverFactories, requireProvider, sameSubtasks, } from '@cat-factory/kernel';
1
+ import { ConflictError, DEFAULT_MERGE_PRESET, getErrorMessage, DOC_INTERVIEWER_AGENT_KIND, getProvider, INITIATIVE_ANALYST_AGENT_KIND, INITIATIVE_COMMITTER_AGENT_KIND, INITIATIVE_INTERVIEWER_AGENT_KIND, INITIATIVE_PLANNER_AGENT_KIND, isAsyncAgentExecutor, NotFoundError, parseLocalModelId, recordGateAttempt, registeredGateFactories, registeredStepResolverFactories, requireProvider, sameSubtasks, } from '@cat-factory/kernel';
2
2
  import { frontendOriginsForService, parseBlueprintService, parseSpecDoc, } from '@cat-factory/contracts';
3
3
  import { blueprintPostOp, commitInitiativeTracker, isCompanionKind, isContainerBackedCompanion, moduleSlug, runRepoOps, specPostOp, TASK_ESTIMATOR_AGENT_KIND, } from '@cat-factory/agents';
4
4
  import { DEPLOYER_AGENT_KIND, isDeployStep } from '@cat-factory/integrations';
@@ -120,6 +120,7 @@ export class RunDispatcher {
120
120
  requirementsBrainstormKind;
121
121
  architectureBrainstormKind;
122
122
  initiativeInterviewController;
123
+ docInterviewController;
123
124
  runInitiatorScope;
124
125
  environmentProvisioning;
125
126
  ticketTrackerProvider;
@@ -164,6 +165,7 @@ export class RunDispatcher {
164
165
  this.requirementsBrainstormKind = deps.requirementsBrainstormKind;
165
166
  this.architectureBrainstormKind = deps.architectureBrainstormKind;
166
167
  this.initiativeInterviewController = deps.initiativeInterviewController;
168
+ this.docInterviewController = deps.docInterviewController;
167
169
  this.runInitiatorScope = deps.runInitiatorScope;
168
170
  this.environmentProvisioning = deps.environmentProvisioning;
169
171
  this.ticketTrackerProvider = deps.ticketTrackerProvider;
@@ -1959,6 +1961,19 @@ export class RunDispatcher {
1959
1961
  // without the store, but never leave the run stuck).
1960
1962
  this.recordStepResult(workspaceId, instance, step, isFinalStep, { output: '' }),
1961
1963
  },
1964
+ // The `doc-interviewer` step converses with the human to refine a document's scope /
1965
+ // structure — an inline LLM gate that PARKS the run on a decision-wait while they answer
1966
+ // through the interview window, then synthesizes an authoring brief onto its session and
1967
+ // advances (see {@link DocInterviewController}). Pass-through when the interviewer isn't
1968
+ // wired (no model), so document pipelines + conformance run unchanged off the raw outline.
1969
+ {
1970
+ kind: DOC_INTERVIEWER_AGENT_KIND,
1971
+ order: 114,
1972
+ canHandle: ({ step }) => step.agentKind === DOC_INTERVIEWER_AGENT_KIND,
1973
+ handle: ({ workspaceId, instance, step, block, isFinalStep }) => this.docInterviewController
1974
+ ? this.docInterviewController.evaluate(workspaceId, instance, step, block, isFinalStep)
1975
+ : this.recordStepResult(workspaceId, instance, step, isFinalStep, { output: '' }),
1976
+ },
1962
1977
  // The `initiative-committer` step persists an APPROVED initiative plan: it runs
1963
1978
  // strictly after the planner's human gate, flips the entity to `executing`, and
1964
1979
  // mirrors the tracker into the repo (`docs/initiatives/<slug>/`) when GitHub is