@nathapp/nax 0.50.2 → 0.51.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/CHANGELOG.md +30 -0
- package/dist/nax.js +579 -373
- package/package.json +1 -3
- package/bin/nax.ts +0 -1195
- package/src/acceptance/fix-generator.ts +0 -322
- package/src/acceptance/generator.ts +0 -423
- package/src/acceptance/index.ts +0 -42
- package/src/acceptance/refinement.ts +0 -224
- package/src/acceptance/templates/cli.ts +0 -47
- package/src/acceptance/templates/component.ts +0 -78
- package/src/acceptance/templates/e2e.ts +0 -43
- package/src/acceptance/templates/index.ts +0 -21
- package/src/acceptance/templates/snapshot.ts +0 -50
- package/src/acceptance/templates/unit.ts +0 -48
- package/src/acceptance/types.ts +0 -135
- package/src/agents/acp/adapter.ts +0 -888
- package/src/agents/acp/cost.ts +0 -9
- package/src/agents/acp/index.ts +0 -7
- package/src/agents/acp/interaction-bridge.ts +0 -126
- package/src/agents/acp/parser.ts +0 -119
- package/src/agents/acp/spawn-client.ts +0 -373
- package/src/agents/acp/types.ts +0 -22
- package/src/agents/aider/adapter.ts +0 -135
- package/src/agents/claude/adapter.ts +0 -258
- package/src/agents/claude/complete.ts +0 -80
- package/src/agents/claude/cost.ts +0 -16
- package/src/agents/claude/execution.ts +0 -215
- package/src/agents/claude/index.ts +0 -3
- package/src/agents/claude/interactive.ts +0 -77
- package/src/agents/claude/plan.ts +0 -179
- package/src/agents/codex/adapter.ts +0 -153
- package/src/agents/cost/calculate.ts +0 -154
- package/src/agents/cost/index.ts +0 -10
- package/src/agents/cost/parse.ts +0 -97
- package/src/agents/cost/pricing.ts +0 -59
- package/src/agents/cost/types.ts +0 -45
- package/src/agents/gemini/adapter.ts +0 -177
- package/src/agents/index.ts +0 -18
- package/src/agents/opencode/adapter.ts +0 -106
- package/src/agents/registry.ts +0 -136
- package/src/agents/shared/decompose.ts +0 -154
- package/src/agents/shared/model-resolution.ts +0 -43
- package/src/agents/shared/types-extended.ts +0 -164
- package/src/agents/shared/validation.ts +0 -69
- package/src/agents/shared/version-detection.ts +0 -109
- package/src/agents/types.ts +0 -205
- package/src/analyze/classifier.ts +0 -282
- package/src/analyze/index.ts +0 -16
- package/src/analyze/scanner.ts +0 -171
- package/src/analyze/types.ts +0 -51
- package/src/cli/accept.ts +0 -108
- package/src/cli/agents.ts +0 -87
- package/src/cli/analyze-parser.ts +0 -291
- package/src/cli/analyze.ts +0 -352
- package/src/cli/config-descriptions.ts +0 -218
- package/src/cli/config-diff.ts +0 -103
- package/src/cli/config-display.ts +0 -285
- package/src/cli/config-get.ts +0 -55
- package/src/cli/config.ts +0 -14
- package/src/cli/constitution.ts +0 -17
- package/src/cli/diagnose-analysis.ts +0 -159
- package/src/cli/diagnose-formatter.ts +0 -87
- package/src/cli/diagnose.ts +0 -203
- package/src/cli/generate.ts +0 -250
- package/src/cli/index.ts +0 -42
- package/src/cli/init-context.ts +0 -405
- package/src/cli/init-detect.ts +0 -303
- package/src/cli/init.ts +0 -296
- package/src/cli/interact.ts +0 -295
- package/src/cli/plan.ts +0 -509
- package/src/cli/plugins.ts +0 -122
- package/src/cli/prompts-export.ts +0 -58
- package/src/cli/prompts-init.ts +0 -200
- package/src/cli/prompts-main.ts +0 -183
- package/src/cli/prompts-shared.ts +0 -70
- package/src/cli/prompts-tdd.ts +0 -88
- package/src/cli/prompts.ts +0 -17
- package/src/cli/runs.ts +0 -174
- package/src/cli/status-cost.ts +0 -151
- package/src/cli/status-features.ts +0 -405
- package/src/cli/status.ts +0 -13
- package/src/commands/common.ts +0 -171
- package/src/commands/diagnose.ts +0 -17
- package/src/commands/index.ts +0 -9
- package/src/commands/logs-formatter.ts +0 -201
- package/src/commands/logs-reader.ts +0 -171
- package/src/commands/logs.ts +0 -103
- package/src/commands/precheck.ts +0 -86
- package/src/commands/runs.ts +0 -220
- package/src/commands/unlock.ts +0 -96
- package/src/config/defaults.ts +0 -217
- package/src/config/index.ts +0 -22
- package/src/config/loader.ts +0 -143
- package/src/config/merge.ts +0 -106
- package/src/config/merger.ts +0 -147
- package/src/config/path-security.ts +0 -121
- package/src/config/paths.ts +0 -27
- package/src/config/permissions.ts +0 -63
- package/src/config/runtime-types.ts +0 -520
- package/src/config/schema-types.ts +0 -53
- package/src/config/schema.ts +0 -60
- package/src/config/schemas.ts +0 -425
- package/src/config/test-strategy.ts +0 -71
- package/src/config/types.ts +0 -57
- package/src/config/validate.ts +0 -103
- package/src/constitution/generator.ts +0 -158
- package/src/constitution/generators/aider.ts +0 -41
- package/src/constitution/generators/claude.ts +0 -35
- package/src/constitution/generators/cursor.ts +0 -36
- package/src/constitution/generators/opencode.ts +0 -38
- package/src/constitution/generators/types.ts +0 -33
- package/src/constitution/generators/windsurf.ts +0 -36
- package/src/constitution/index.ts +0 -11
- package/src/constitution/loader.ts +0 -121
- package/src/constitution/types.ts +0 -31
- package/src/context/auto-detect.ts +0 -228
- package/src/context/builder.ts +0 -299
- package/src/context/elements.ts +0 -122
- package/src/context/formatter.ts +0 -107
- package/src/context/generator.ts +0 -343
- package/src/context/generators/aider.ts +0 -34
- package/src/context/generators/claude.ts +0 -28
- package/src/context/generators/codex.ts +0 -28
- package/src/context/generators/cursor.ts +0 -28
- package/src/context/generators/gemini.ts +0 -28
- package/src/context/generators/opencode.ts +0 -30
- package/src/context/generators/windsurf.ts +0 -28
- package/src/context/greenfield.ts +0 -114
- package/src/context/index.ts +0 -34
- package/src/context/injector.ts +0 -279
- package/src/context/parent-context.ts +0 -39
- package/src/context/test-scanner.ts +0 -370
- package/src/context/types.ts +0 -98
- package/src/decompose/apply.ts +0 -50
- package/src/decompose/builder.ts +0 -181
- package/src/decompose/index.ts +0 -8
- package/src/decompose/sections/codebase.ts +0 -26
- package/src/decompose/sections/constraints.ts +0 -32
- package/src/decompose/sections/index.ts +0 -4
- package/src/decompose/sections/sibling-stories.ts +0 -25
- package/src/decompose/sections/target-story.ts +0 -31
- package/src/decompose/types.ts +0 -55
- package/src/decompose/validators/complexity.ts +0 -45
- package/src/decompose/validators/coverage.ts +0 -134
- package/src/decompose/validators/dependency.ts +0 -91
- package/src/decompose/validators/index.ts +0 -35
- package/src/decompose/validators/overlap.ts +0 -128
- package/src/errors.ts +0 -67
- package/src/execution/batching.ts +0 -157
- package/src/execution/crash-heartbeat.ts +0 -77
- package/src/execution/crash-recovery.ts +0 -79
- package/src/execution/crash-signals.ts +0 -165
- package/src/execution/crash-writer.ts +0 -154
- package/src/execution/deferred-review.ts +0 -105
- package/src/execution/dry-run.ts +0 -81
- package/src/execution/escalation/escalation.ts +0 -46
- package/src/execution/escalation/index.ts +0 -13
- package/src/execution/escalation/tier-escalation.ts +0 -346
- package/src/execution/escalation/tier-outcome.ts +0 -143
- package/src/execution/executor-types.ts +0 -73
- package/src/execution/helpers.ts +0 -38
- package/src/execution/index.ts +0 -27
- package/src/execution/iteration-runner.ts +0 -160
- package/src/execution/lifecycle/acceptance-loop.ts +0 -280
- package/src/execution/lifecycle/headless-formatter.ts +0 -83
- package/src/execution/lifecycle/index.ts +0 -11
- package/src/execution/lifecycle/parallel-lifecycle.ts +0 -101
- package/src/execution/lifecycle/precheck-runner.ts +0 -140
- package/src/execution/lifecycle/run-cleanup.ts +0 -81
- package/src/execution/lifecycle/run-completion.ts +0 -247
- package/src/execution/lifecycle/run-initialization.ts +0 -187
- package/src/execution/lifecycle/run-regression.ts +0 -305
- package/src/execution/lifecycle/run-setup.ts +0 -240
- package/src/execution/lifecycle/story-size-prompts.ts +0 -123
- package/src/execution/lock.ts +0 -129
- package/src/execution/parallel-coordinator.ts +0 -281
- package/src/execution/parallel-executor-rectification-pass.ts +0 -117
- package/src/execution/parallel-executor-rectify.ts +0 -136
- package/src/execution/parallel-executor.ts +0 -330
- package/src/execution/parallel-worker.ts +0 -149
- package/src/execution/parallel.ts +0 -13
- package/src/execution/pid-registry.ts +0 -275
- package/src/execution/pipeline-result-handler.ts +0 -221
- package/src/execution/progress.ts +0 -27
- package/src/execution/queue-handler.ts +0 -109
- package/src/execution/runner-completion.ts +0 -171
- package/src/execution/runner-execution.ts +0 -243
- package/src/execution/runner-setup.ts +0 -86
- package/src/execution/runner.ts +0 -265
- package/src/execution/sequential-executor.ts +0 -219
- package/src/execution/status-file.ts +0 -264
- package/src/execution/status-writer.ts +0 -181
- package/src/execution/story-context.ts +0 -266
- package/src/execution/story-selector.ts +0 -76
- package/src/execution/test-output-parser.ts +0 -14
- package/src/execution/timeout-handler.ts +0 -100
- package/src/hooks/index.ts +0 -2
- package/src/hooks/runner.ts +0 -280
- package/src/hooks/types.ts +0 -79
- package/src/interaction/chain.ts +0 -170
- package/src/interaction/index.ts +0 -61
- package/src/interaction/init.ts +0 -84
- package/src/interaction/plugins/auto.ts +0 -243
- package/src/interaction/plugins/cli.ts +0 -300
- package/src/interaction/plugins/telegram.ts +0 -384
- package/src/interaction/plugins/webhook.ts +0 -286
- package/src/interaction/state.ts +0 -171
- package/src/interaction/triggers.ts +0 -250
- package/src/interaction/types.ts +0 -170
- package/src/logger/formatters.ts +0 -84
- package/src/logger/index.ts +0 -16
- package/src/logger/logger.ts +0 -296
- package/src/logger/types.ts +0 -48
- package/src/logging/formatter.ts +0 -355
- package/src/logging/index.ts +0 -22
- package/src/logging/types.ts +0 -93
- package/src/metrics/aggregator.ts +0 -191
- package/src/metrics/index.ts +0 -14
- package/src/metrics/tracker.ts +0 -200
- package/src/metrics/types.ts +0 -115
- package/src/optimizer/index.ts +0 -63
- package/src/optimizer/noop.optimizer.ts +0 -24
- package/src/optimizer/rule-based.optimizer.ts +0 -248
- package/src/optimizer/types.ts +0 -53
- package/src/pipeline/event-bus.ts +0 -297
- package/src/pipeline/events.ts +0 -130
- package/src/pipeline/index.ts +0 -19
- package/src/pipeline/runner.ts +0 -149
- package/src/pipeline/stages/acceptance-setup.ts +0 -140
- package/src/pipeline/stages/acceptance.ts +0 -215
- package/src/pipeline/stages/autofix.ts +0 -262
- package/src/pipeline/stages/completion.ts +0 -110
- package/src/pipeline/stages/constitution.ts +0 -63
- package/src/pipeline/stages/context.ts +0 -122
- package/src/pipeline/stages/execution.ts +0 -359
- package/src/pipeline/stages/index.ts +0 -86
- package/src/pipeline/stages/optimizer.ts +0 -74
- package/src/pipeline/stages/prompt.ts +0 -79
- package/src/pipeline/stages/queue-check.ts +0 -103
- package/src/pipeline/stages/rectify.ts +0 -101
- package/src/pipeline/stages/regression.ts +0 -99
- package/src/pipeline/stages/review.ts +0 -94
- package/src/pipeline/stages/routing.ts +0 -276
- package/src/pipeline/stages/verify.ts +0 -286
- package/src/pipeline/subscribers/events-writer.ts +0 -135
- package/src/pipeline/subscribers/hooks.ts +0 -179
- package/src/pipeline/subscribers/interaction.ts +0 -103
- package/src/pipeline/subscribers/registry.ts +0 -73
- package/src/pipeline/subscribers/reporters.ts +0 -174
- package/src/pipeline/types.ts +0 -220
- package/src/plugins/extensions.ts +0 -225
- package/src/plugins/index.ts +0 -33
- package/src/plugins/loader.ts +0 -352
- package/src/plugins/plugin-logger.ts +0 -41
- package/src/plugins/registry.ts +0 -168
- package/src/plugins/types.ts +0 -206
- package/src/plugins/validator.ts +0 -352
- package/src/prd/index.ts +0 -220
- package/src/prd/schema.ts +0 -268
- package/src/prd/types.ts +0 -273
- package/src/prd/validate.ts +0 -41
- package/src/precheck/checks-agents.ts +0 -63
- package/src/precheck/checks-blockers.ts +0 -23
- package/src/precheck/checks-cli.ts +0 -68
- package/src/precheck/checks-config.ts +0 -102
- package/src/precheck/checks-git.ts +0 -117
- package/src/precheck/checks-system.ts +0 -101
- package/src/precheck/checks-warnings.ts +0 -221
- package/src/precheck/checks.ts +0 -36
- package/src/precheck/index.ts +0 -374
- package/src/precheck/story-size-gate.ts +0 -144
- package/src/precheck/types.ts +0 -31
- package/src/prompts/builder.ts +0 -166
- package/src/prompts/index.ts +0 -2
- package/src/prompts/loader.ts +0 -43
- package/src/prompts/sections/conventions.ts +0 -19
- package/src/prompts/sections/hermetic.ts +0 -41
- package/src/prompts/sections/index.ts +0 -12
- package/src/prompts/sections/isolation.ts +0 -70
- package/src/prompts/sections/role-task.ts +0 -182
- package/src/prompts/sections/story.ts +0 -55
- package/src/prompts/sections/verdict.ts +0 -70
- package/src/prompts/types.ts +0 -21
- package/src/queue/index.ts +0 -2
- package/src/queue/manager.ts +0 -254
- package/src/queue/types.ts +0 -54
- package/src/review/index.ts +0 -8
- package/src/review/orchestrator.ts +0 -154
- package/src/review/runner.ts +0 -303
- package/src/review/types.ts +0 -70
- package/src/routing/batch-route.ts +0 -35
- package/src/routing/builder.ts +0 -81
- package/src/routing/chain.ts +0 -75
- package/src/routing/content-hash.ts +0 -25
- package/src/routing/index.ts +0 -20
- package/src/routing/loader.ts +0 -62
- package/src/routing/router.ts +0 -305
- package/src/routing/strategies/adaptive.ts +0 -215
- package/src/routing/strategies/index.ts +0 -8
- package/src/routing/strategies/keyword.ts +0 -180
- package/src/routing/strategies/llm-prompts.ts +0 -224
- package/src/routing/strategies/llm.ts +0 -320
- package/src/routing/strategies/manual.ts +0 -50
- package/src/routing/strategy.ts +0 -102
- package/src/tdd/cleanup.ts +0 -120
- package/src/tdd/index.ts +0 -22
- package/src/tdd/isolation.ts +0 -117
- package/src/tdd/orchestrator.ts +0 -406
- package/src/tdd/prompts.ts +0 -40
- package/src/tdd/rectification-gate.ts +0 -274
- package/src/tdd/session-runner.ts +0 -263
- package/src/tdd/types.ts +0 -84
- package/src/tdd/verdict-reader.ts +0 -266
- package/src/tdd/verdict.ts +0 -152
- package/src/tui/App.tsx +0 -265
- package/src/tui/components/AgentPanel.tsx +0 -75
- package/src/tui/components/CostOverlay.tsx +0 -118
- package/src/tui/components/HelpOverlay.tsx +0 -107
- package/src/tui/components/StatusBar.tsx +0 -63
- package/src/tui/components/StoriesPanel.tsx +0 -177
- package/src/tui/hooks/useKeyboard.ts +0 -142
- package/src/tui/hooks/useLayout.ts +0 -137
- package/src/tui/hooks/usePipelineEvents.ts +0 -183
- package/src/tui/hooks/usePty.ts +0 -189
- package/src/tui/index.tsx +0 -38
- package/src/tui/types.ts +0 -76
- package/src/utils/errors.ts +0 -12
- package/src/utils/git.ts +0 -245
- package/src/utils/json-file.ts +0 -72
- package/src/utils/log-test-output.ts +0 -25
- package/src/utils/path-security.ts +0 -73
- package/src/utils/queue-writer.ts +0 -54
- package/src/verification/crash-detector.ts +0 -34
- package/src/verification/executor.ts +0 -250
- package/src/verification/index.ts +0 -12
- package/src/verification/orchestrator-types.ts +0 -154
- package/src/verification/orchestrator.ts +0 -76
- package/src/verification/parser.ts +0 -220
- package/src/verification/rectification-loop.ts +0 -172
- package/src/verification/rectification.ts +0 -108
- package/src/verification/runners.ts +0 -129
- package/src/verification/smart-runner.ts +0 -307
- package/src/verification/strategies/acceptance.ts +0 -136
- package/src/verification/strategies/regression.ts +0 -90
- package/src/verification/strategies/scoped.ts +0 -154
- package/src/verification/types.ts +0 -117
- package/src/version.ts +0 -40
- package/src/worktree/dispatcher.ts +0 -6
- package/src/worktree/index.ts +0 -2
- package/src/worktree/manager.ts +0 -193
- package/src/worktree/merge.ts +0 -302
- package/src/worktree/types.ts +0 -4
package/src/pipeline/types.ts
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pipeline Framework Types
|
|
3
|
-
*
|
|
4
|
-
* Composable stage-based execution pipeline for refactoring the monolithic runner.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { AgentResult } from "../agents/types";
|
|
8
|
-
import type { NaxConfig } from "../config/schema";
|
|
9
|
-
import type { ConstitutionResult } from "../constitution/types";
|
|
10
|
-
import type { BuiltContext } from "../context/types";
|
|
11
|
-
import type { PidRegistry } from "../execution/pid-registry";
|
|
12
|
-
import type { HooksConfig } from "../hooks/types";
|
|
13
|
-
import type { InteractionChain } from "../interaction/chain";
|
|
14
|
-
import type { StoryMetrics } from "../metrics/types";
|
|
15
|
-
import type { PluginRegistry } from "../plugins/registry";
|
|
16
|
-
import type { PRD, UserStory } from "../prd/types";
|
|
17
|
-
import type { ReviewResult } from "../review/types";
|
|
18
|
-
import type { FailureCategory } from "../tdd/types";
|
|
19
|
-
import type { VerifyResult } from "../verification/orchestrator-types";
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Routing result from complexity classification
|
|
23
|
-
*/
|
|
24
|
-
export interface RoutingResult {
|
|
25
|
-
/** Classified complexity */
|
|
26
|
-
complexity: "simple" | "medium" | "complex" | "expert";
|
|
27
|
-
/** Selected model tier */
|
|
28
|
-
modelTier: "fast" | "balanced" | "powerful";
|
|
29
|
-
/** Test strategy */
|
|
30
|
-
testStrategy: "test-after" | "tdd-simple" | "three-session-tdd" | "three-session-tdd-lite";
|
|
31
|
-
/** Reasoning for the classification */
|
|
32
|
-
reasoning: string;
|
|
33
|
-
/** Estimated cost for this story */
|
|
34
|
-
estimatedCost?: number;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Pipeline context — shared state passed through all stages.
|
|
39
|
-
*
|
|
40
|
-
* Stages read from and write to this context. It accumulates data
|
|
41
|
-
* as the pipeline progresses through each stage.
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```ts
|
|
45
|
-
* const ctx: PipelineContext = {
|
|
46
|
-
* config: loadedConfig,
|
|
47
|
-
* prd: loadedPRD,
|
|
48
|
-
* story: currentStory,
|
|
49
|
-
* stories: [currentStory],
|
|
50
|
-
* routing: { complexity: "simple", modelTier: "fast", ... },
|
|
51
|
-
* workdir: "/home/user/project",
|
|
52
|
-
* hooks: loadedHooks,
|
|
53
|
-
* };
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
export type AgentGetFn = (name: string) => import("../agents/types").AgentAdapter | undefined;
|
|
57
|
-
|
|
58
|
-
export interface PipelineContext {
|
|
59
|
-
/** Ngent configuration */
|
|
60
|
-
config: NaxConfig;
|
|
61
|
-
/**
|
|
62
|
-
* Resolved config for this story's package.
|
|
63
|
-
* When story.workdir is set, this is root config merged with package config.
|
|
64
|
-
* When no workdir, this equals ctx.config (root).
|
|
65
|
-
* Set once per story in the iteration runner before pipeline execution.
|
|
66
|
-
*/
|
|
67
|
-
effectiveConfig: NaxConfig;
|
|
68
|
-
/** Full PRD document */
|
|
69
|
-
prd: PRD;
|
|
70
|
-
/** Current story (or batch leader) */
|
|
71
|
-
story: UserStory;
|
|
72
|
-
/** Batch of stories (length 1 for single-story execution) */
|
|
73
|
-
stories: UserStory[];
|
|
74
|
-
/** Routing result from complexity classification */
|
|
75
|
-
routing: RoutingResult;
|
|
76
|
-
/** Working directory (project root) */
|
|
77
|
-
workdir: string;
|
|
78
|
-
/** Absolute path to the prd.json file (used by routing stage to persist initial classification) */
|
|
79
|
-
prdPath?: string;
|
|
80
|
-
/** Feature directory (optional, e.g., nax/features/my-feature/) */
|
|
81
|
-
featureDir?: string;
|
|
82
|
-
/** Hooks configuration */
|
|
83
|
-
hooks: HooksConfig;
|
|
84
|
-
/** Plugin registry (optional, for plugin-provided extensions) */
|
|
85
|
-
plugins?: PluginRegistry;
|
|
86
|
-
/**
|
|
87
|
-
* Protocol-aware agent resolver. When set (ACP mode), returns AcpAgentAdapter;
|
|
88
|
-
* falls back to standalone getAgent (CLI mode) when absent.
|
|
89
|
-
*/
|
|
90
|
-
agentGetFn?: AgentGetFn;
|
|
91
|
-
/** PID registry for crash recovery — passed through to agent.run() for child process registration. */
|
|
92
|
-
pidRegistry?: PidRegistry;
|
|
93
|
-
/** Interaction chain (optional, for human-in-the-loop triggers) */
|
|
94
|
-
interaction?: InteractionChain;
|
|
95
|
-
/** Constitution result (set by constitutionStage) */
|
|
96
|
-
constitution?: ConstitutionResult;
|
|
97
|
-
/** Context markdown for the agent (set by contextStage) */
|
|
98
|
-
contextMarkdown?: string;
|
|
99
|
-
/** Built context with element-level token tracking (set by contextStage) */
|
|
100
|
-
builtContext?: BuiltContext;
|
|
101
|
-
/** Final prompt sent to agent (set by promptStage) */
|
|
102
|
-
prompt?: string;
|
|
103
|
-
/** Agent execution result (set by executionStage) */
|
|
104
|
-
agentResult?: AgentResult;
|
|
105
|
-
/** Verify result (set by verifyStage) */
|
|
106
|
-
verifyResult?: VerifyResult;
|
|
107
|
-
/** Review result (set by reviewStage) */
|
|
108
|
-
reviewResult?: ReviewResult;
|
|
109
|
-
/** Acceptance test failures (set by acceptanceStage) */
|
|
110
|
-
acceptanceFailures?: {
|
|
111
|
-
failedACs: string[];
|
|
112
|
-
testOutput: string;
|
|
113
|
-
};
|
|
114
|
-
/** Story start timestamp (ISO string, set by runner before pipeline) */
|
|
115
|
-
storyStartTime?: string;
|
|
116
|
-
/** Tracks how many times the rectify stage has run this pipeline (for event attempt numbers). */
|
|
117
|
-
rectifyAttempt?: number;
|
|
118
|
-
/** Tracks how many times the autofix stage has run this pipeline (for event attempt numbers). */
|
|
119
|
-
autofixAttempt?: number;
|
|
120
|
-
/** Git HEAD ref captured before agent ran this attempt (FEAT-010: precise smart-runner diff) */
|
|
121
|
-
storyGitRef?: string;
|
|
122
|
-
/** Collected story metrics (set by completionStage) */
|
|
123
|
-
storyMetrics?: StoryMetrics[];
|
|
124
|
-
/** Whether to retry the story in lite mode after a failure */
|
|
125
|
-
retryAsLite?: boolean;
|
|
126
|
-
/** Results from acceptance-setup stage (set by acceptanceSetupStage) */
|
|
127
|
-
acceptanceSetup?: {
|
|
128
|
-
totalCriteria: number;
|
|
129
|
-
testableCount: number;
|
|
130
|
-
redFailCount: number;
|
|
131
|
-
};
|
|
132
|
-
/** Failure category from TDD orchestrator (set by executionStage on TDD failure) */
|
|
133
|
-
tddFailureCategory?: FailureCategory;
|
|
134
|
-
/** Set to true when TDD full-suite gate already passed — verify stage skips to avoid redundant run (BUG-054) */
|
|
135
|
-
fullSuiteGatePassed?: boolean;
|
|
136
|
-
/** Number of runtime crashes (RUNTIME_CRASH verify status) encountered for this story (BUG-070) */
|
|
137
|
-
storyRuntimeCrashes?: number;
|
|
138
|
-
/** Structured review findings from plugin reviewers — passed to escalation for retry context */
|
|
139
|
-
reviewFindings?: import("../plugins/types").ReviewFinding[];
|
|
140
|
-
/** Accumulated cost across all prior escalation attempts (BUG-067) */
|
|
141
|
-
accumulatedAttemptCost?: number;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Stage action — determines how the pipeline proceeds after a stage executes.
|
|
146
|
-
*/
|
|
147
|
-
export type StageAction =
|
|
148
|
-
/** Continue to the next stage */
|
|
149
|
-
| { action: "continue"; cost?: number }
|
|
150
|
-
/** Skip this story (mark as skipped, don't run further stages) */
|
|
151
|
-
| { action: "skip"; reason: string; cost?: number }
|
|
152
|
-
/** Story was decomposed into sub-stories — don't consume an iteration, emit story:decomposed event */
|
|
153
|
-
| { action: "decomposed"; reason: string; subStoryCount: number; cost?: number }
|
|
154
|
-
/** Mark story as failed (don't run further stages) */
|
|
155
|
-
| { action: "fail"; reason: string; cost?: number }
|
|
156
|
-
/** Escalate to a higher tier and retry the pipeline */
|
|
157
|
-
| { action: "escalate"; reason?: string; cost?: number }
|
|
158
|
-
/** Pause execution (user intervention required via queue command) */
|
|
159
|
-
| { action: "pause"; reason: string; cost?: number }
|
|
160
|
-
/** Retry from a specific stage (used by rectify/autofix stages) */
|
|
161
|
-
| { action: "retry"; fromStage: string; cost?: number };
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Result returned by a pipeline stage after execution.
|
|
165
|
-
*/
|
|
166
|
-
export type StageResult = StageAction;
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* A single pipeline stage.
|
|
170
|
-
*
|
|
171
|
-
* Stages are composable units of work that execute sequentially.
|
|
172
|
-
* Each stage can read from and modify the pipeline context, then
|
|
173
|
-
* return an action that determines whether to continue, skip, fail,
|
|
174
|
-
* escalate, or pause.
|
|
175
|
-
*
|
|
176
|
-
* @example
|
|
177
|
-
* ```ts
|
|
178
|
-
* const routingStage: PipelineStage = {
|
|
179
|
-
* name: "routing",
|
|
180
|
-
* enabled: (ctx) => true,
|
|
181
|
-
* execute: async (ctx) => {
|
|
182
|
-
* const result = await classifyComplexity(ctx.story);
|
|
183
|
-
* ctx.routing = result;
|
|
184
|
-
* return { action: "continue" };
|
|
185
|
-
* },
|
|
186
|
-
* };
|
|
187
|
-
* ```
|
|
188
|
-
*/
|
|
189
|
-
export interface PipelineStage {
|
|
190
|
-
/** Unique stage identifier (e.g., "routing", "execution", "review") */
|
|
191
|
-
name: string;
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Determines if this stage should run.
|
|
195
|
-
*
|
|
196
|
-
* If false, the stage is skipped and the pipeline continues to the next stage.
|
|
197
|
-
*
|
|
198
|
-
* @param ctx - Current pipeline context
|
|
199
|
-
* @returns true if the stage should execute, false to skip
|
|
200
|
-
*/
|
|
201
|
-
enabled: (ctx: PipelineContext) => boolean;
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Optional human-readable reason why the stage was skipped.
|
|
205
|
-
* Distinguishes "not needed" (conditions not met) from "disabled" (config).
|
|
206
|
-
* Used by the pipeline runner for better observability (BUG-055).
|
|
207
|
-
*/
|
|
208
|
-
skipReason?: (ctx: PipelineContext) => string;
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Execute the stage logic.
|
|
212
|
-
*
|
|
213
|
-
* Can read from and modify the pipeline context, then returns a result
|
|
214
|
-
* that determines how the pipeline should proceed.
|
|
215
|
-
*
|
|
216
|
-
* @param ctx - Current pipeline context
|
|
217
|
-
* @returns Stage result indicating next action
|
|
218
|
-
*/
|
|
219
|
-
execute: (ctx: PipelineContext) => Promise<StageResult>;
|
|
220
|
-
}
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin extension types
|
|
3
|
-
*
|
|
4
|
-
* Defines interfaces for specific plugin extensions that can be provided.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { UserStory } from "../prd/types";
|
|
8
|
-
|
|
9
|
-
// ============================================================================
|
|
10
|
-
// Review Extension
|
|
11
|
-
// ============================================================================
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* A single structured finding from a review check.
|
|
15
|
-
*
|
|
16
|
-
* Designed to be service-agnostic — works with Semgrep, ESLint, SonarQube,
|
|
17
|
-
* Snyk, CodeQL, and other SAST/DAST/linting tools.
|
|
18
|
-
*/
|
|
19
|
-
export interface ReviewFinding {
|
|
20
|
-
/** Rule or check ID (e.g., "detect-non-literal-regexp", "no-unused-vars") */
|
|
21
|
-
ruleId: string;
|
|
22
|
-
/** Severity level (tool-agnostic scale) */
|
|
23
|
-
severity: "critical" | "error" | "warning" | "info" | "low";
|
|
24
|
-
/** File path (relative to workdir) */
|
|
25
|
-
file: string;
|
|
26
|
-
/** Line number (1-indexed) */
|
|
27
|
-
line: number;
|
|
28
|
-
/** Column number (1-indexed, optional) */
|
|
29
|
-
column?: number;
|
|
30
|
-
/** End line number (optional, for multi-line findings) */
|
|
31
|
-
endLine?: number;
|
|
32
|
-
/** End column number (optional) */
|
|
33
|
-
endColumn?: number;
|
|
34
|
-
/** Human-readable message */
|
|
35
|
-
message: string;
|
|
36
|
-
/** Optional URL for rule documentation or details */
|
|
37
|
-
url?: string;
|
|
38
|
-
/** Source tool that produced this finding (e.g., "semgrep", "eslint", "snyk") */
|
|
39
|
-
source?: string;
|
|
40
|
-
/** Finding category (e.g., "security", "performance", "style", "bug") */
|
|
41
|
-
category?: string;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Result from a review check.
|
|
46
|
-
*/
|
|
47
|
-
export interface ReviewCheckResult {
|
|
48
|
-
/** Whether the review check passed */
|
|
49
|
-
passed: boolean;
|
|
50
|
-
/** Human-readable output or error messages */
|
|
51
|
-
output: string;
|
|
52
|
-
/** Exit code from the check process (if applicable) */
|
|
53
|
-
exitCode?: number;
|
|
54
|
-
/** Structured findings (optional — plugins can provide machine-readable results) */
|
|
55
|
-
findings?: ReviewFinding[];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Review plugin interface.
|
|
60
|
-
*
|
|
61
|
-
* Review plugins run custom checks after agent execution (e.g., security scans,
|
|
62
|
-
* license checks, performance tests). Failures trigger retry/escalation.
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```ts
|
|
66
|
-
* const reviewer: IReviewPlugin = {
|
|
67
|
-
* name: "security-scan",
|
|
68
|
-
* description: "Scans for security vulnerabilities",
|
|
69
|
-
* async check(workdir, changedFiles) {
|
|
70
|
-
* const result = await securityScanner.scan(workdir, changedFiles);
|
|
71
|
-
* return {
|
|
72
|
-
* passed: result.vulnerabilities.length === 0,
|
|
73
|
-
* output: result.report
|
|
74
|
-
* };
|
|
75
|
-
* }
|
|
76
|
-
* };
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
export interface IReviewPlugin {
|
|
80
|
-
/** Check name (e.g., "security-scan", "license-check") */
|
|
81
|
-
name: string;
|
|
82
|
-
|
|
83
|
-
/** Human-readable description */
|
|
84
|
-
description: string;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Run the review check against the working directory.
|
|
88
|
-
*
|
|
89
|
-
* @param workdir - Project root directory
|
|
90
|
-
* @param changedFiles - Files modified by the agent in this story
|
|
91
|
-
* @returns Review check result
|
|
92
|
-
*/
|
|
93
|
-
check(workdir: string, changedFiles: string[]): Promise<ReviewCheckResult>;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// ============================================================================
|
|
97
|
-
// Context Provider Extension
|
|
98
|
-
// ============================================================================
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Result from a context provider.
|
|
102
|
-
*/
|
|
103
|
-
export interface ContextProviderResult {
|
|
104
|
-
/** Markdown content to inject */
|
|
105
|
-
content: string;
|
|
106
|
-
/** Token estimate for budget tracking */
|
|
107
|
-
estimatedTokens: number;
|
|
108
|
-
/** Section label in the prompt (e.g., "Jira Context") */
|
|
109
|
-
label: string;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Context provider interface.
|
|
114
|
-
*
|
|
115
|
-
* Context providers fetch external data (Jira tickets, Confluence docs,
|
|
116
|
-
* Linear issues, etc.) and inject it into agent prompts.
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* ```ts
|
|
120
|
-
* const provider: IContextProvider = {
|
|
121
|
-
* name: "jira",
|
|
122
|
-
* async getContext(story) {
|
|
123
|
-
* const ticket = await jiraApi.getTicket(story.tags[0]);
|
|
124
|
-
* return {
|
|
125
|
-
* content: `## ${ticket.key}\n\n${ticket.description}`,
|
|
126
|
-
* estimatedTokens: estimateTokens(ticket.description),
|
|
127
|
-
* label: "Jira Context"
|
|
128
|
-
* };
|
|
129
|
-
* }
|
|
130
|
-
* };
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
|
-
export interface IContextProvider {
|
|
134
|
-
/** Provider name (e.g., "jira", "linear", "confluence") */
|
|
135
|
-
name: string;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Fetch external context relevant to a story.
|
|
139
|
-
*
|
|
140
|
-
* @param story - The user story being executed
|
|
141
|
-
* @returns Markdown content to inject into the agent prompt
|
|
142
|
-
*/
|
|
143
|
-
getContext(story: UserStory): Promise<ContextProviderResult>;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// ============================================================================
|
|
147
|
-
// Reporter Extension
|
|
148
|
-
// ============================================================================
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Event emitted when a run starts.
|
|
152
|
-
*/
|
|
153
|
-
export interface RunStartEvent {
|
|
154
|
-
runId: string;
|
|
155
|
-
feature: string;
|
|
156
|
-
totalStories: number;
|
|
157
|
-
startTime: string;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Event emitted when a story completes.
|
|
162
|
-
*/
|
|
163
|
-
export interface StoryCompleteEvent {
|
|
164
|
-
runId: string;
|
|
165
|
-
storyId: string;
|
|
166
|
-
status: "completed" | "failed" | "skipped" | "paused";
|
|
167
|
-
runElapsedMs: number;
|
|
168
|
-
cost: number;
|
|
169
|
-
tier: string;
|
|
170
|
-
testStrategy: string;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Event emitted when a run ends.
|
|
175
|
-
*/
|
|
176
|
-
export interface RunEndEvent {
|
|
177
|
-
runId: string;
|
|
178
|
-
totalDurationMs: number;
|
|
179
|
-
totalCost: number;
|
|
180
|
-
storySummary: {
|
|
181
|
-
completed: number;
|
|
182
|
-
failed: number;
|
|
183
|
-
skipped: number;
|
|
184
|
-
paused: number;
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Reporter interface.
|
|
190
|
-
*
|
|
191
|
-
* Reporters receive run lifecycle events and can emit them to external
|
|
192
|
-
* systems (dashboards, Slack, CI, databases, etc.).
|
|
193
|
-
*
|
|
194
|
-
* All reporter methods are fire-and-forget — failures are logged but
|
|
195
|
-
* never block the pipeline.
|
|
196
|
-
*
|
|
197
|
-
* @example
|
|
198
|
-
* ```ts
|
|
199
|
-
* const reporter: IReporter = {
|
|
200
|
-
* name: "telegram",
|
|
201
|
-
* async onRunStart(event) {
|
|
202
|
-
* await telegram.send(`Started ${event.feature}`);
|
|
203
|
-
* },
|
|
204
|
-
* async onStoryComplete(event) {
|
|
205
|
-
* await telegram.send(`${event.storyId} ${event.status}`);
|
|
206
|
-
* },
|
|
207
|
-
* async onRunEnd(event) {
|
|
208
|
-
* await telegram.send(`Completed ${event.storySummary.completed} stories`);
|
|
209
|
-
* }
|
|
210
|
-
* };
|
|
211
|
-
* ```
|
|
212
|
-
*/
|
|
213
|
-
export interface IReporter {
|
|
214
|
-
/** Reporter name */
|
|
215
|
-
name: string;
|
|
216
|
-
|
|
217
|
-
/** Called when a run starts */
|
|
218
|
-
onRunStart?(event: RunStartEvent): Promise<void>;
|
|
219
|
-
|
|
220
|
-
/** Called when a story completes (success or failure) */
|
|
221
|
-
onStoryComplete?(event: StoryCompleteEvent): Promise<void>;
|
|
222
|
-
|
|
223
|
-
/** Called when a run ends */
|
|
224
|
-
onRunEnd?(event: RunEndEvent): Promise<void>;
|
|
225
|
-
}
|
package/src/plugins/index.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin System — Public API
|
|
3
|
-
*
|
|
4
|
-
* Exports all plugin types, interfaces, and loading utilities.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export type {
|
|
8
|
-
NaxPlugin,
|
|
9
|
-
PluginType,
|
|
10
|
-
PluginExtensions,
|
|
11
|
-
PluginConfigEntry,
|
|
12
|
-
PluginLogger,
|
|
13
|
-
IReviewPlugin,
|
|
14
|
-
ReviewCheckResult,
|
|
15
|
-
IContextProvider,
|
|
16
|
-
ContextProviderResult,
|
|
17
|
-
IReporter,
|
|
18
|
-
RunStartEvent,
|
|
19
|
-
StoryCompleteEvent,
|
|
20
|
-
RunEndEvent,
|
|
21
|
-
} from "./types";
|
|
22
|
-
|
|
23
|
-
// Re-export optimizer types from optimizer module (via types.ts)
|
|
24
|
-
export type {
|
|
25
|
-
IPromptOptimizer,
|
|
26
|
-
PromptOptimizerInput,
|
|
27
|
-
PromptOptimizerResult,
|
|
28
|
-
} from "./types";
|
|
29
|
-
|
|
30
|
-
export { validatePlugin } from "./validator";
|
|
31
|
-
export { loadPlugins } from "./loader";
|
|
32
|
-
export { PluginRegistry } from "./registry";
|
|
33
|
-
export { createPluginLogger } from "./plugin-logger";
|