@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.
Files changed (352) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/nax.js +579 -373
  3. package/package.json +1 -3
  4. package/bin/nax.ts +0 -1195
  5. package/src/acceptance/fix-generator.ts +0 -322
  6. package/src/acceptance/generator.ts +0 -423
  7. package/src/acceptance/index.ts +0 -42
  8. package/src/acceptance/refinement.ts +0 -224
  9. package/src/acceptance/templates/cli.ts +0 -47
  10. package/src/acceptance/templates/component.ts +0 -78
  11. package/src/acceptance/templates/e2e.ts +0 -43
  12. package/src/acceptance/templates/index.ts +0 -21
  13. package/src/acceptance/templates/snapshot.ts +0 -50
  14. package/src/acceptance/templates/unit.ts +0 -48
  15. package/src/acceptance/types.ts +0 -135
  16. package/src/agents/acp/adapter.ts +0 -888
  17. package/src/agents/acp/cost.ts +0 -9
  18. package/src/agents/acp/index.ts +0 -7
  19. package/src/agents/acp/interaction-bridge.ts +0 -126
  20. package/src/agents/acp/parser.ts +0 -119
  21. package/src/agents/acp/spawn-client.ts +0 -373
  22. package/src/agents/acp/types.ts +0 -22
  23. package/src/agents/aider/adapter.ts +0 -135
  24. package/src/agents/claude/adapter.ts +0 -258
  25. package/src/agents/claude/complete.ts +0 -80
  26. package/src/agents/claude/cost.ts +0 -16
  27. package/src/agents/claude/execution.ts +0 -215
  28. package/src/agents/claude/index.ts +0 -3
  29. package/src/agents/claude/interactive.ts +0 -77
  30. package/src/agents/claude/plan.ts +0 -179
  31. package/src/agents/codex/adapter.ts +0 -153
  32. package/src/agents/cost/calculate.ts +0 -154
  33. package/src/agents/cost/index.ts +0 -10
  34. package/src/agents/cost/parse.ts +0 -97
  35. package/src/agents/cost/pricing.ts +0 -59
  36. package/src/agents/cost/types.ts +0 -45
  37. package/src/agents/gemini/adapter.ts +0 -177
  38. package/src/agents/index.ts +0 -18
  39. package/src/agents/opencode/adapter.ts +0 -106
  40. package/src/agents/registry.ts +0 -136
  41. package/src/agents/shared/decompose.ts +0 -154
  42. package/src/agents/shared/model-resolution.ts +0 -43
  43. package/src/agents/shared/types-extended.ts +0 -164
  44. package/src/agents/shared/validation.ts +0 -69
  45. package/src/agents/shared/version-detection.ts +0 -109
  46. package/src/agents/types.ts +0 -205
  47. package/src/analyze/classifier.ts +0 -282
  48. package/src/analyze/index.ts +0 -16
  49. package/src/analyze/scanner.ts +0 -171
  50. package/src/analyze/types.ts +0 -51
  51. package/src/cli/accept.ts +0 -108
  52. package/src/cli/agents.ts +0 -87
  53. package/src/cli/analyze-parser.ts +0 -291
  54. package/src/cli/analyze.ts +0 -352
  55. package/src/cli/config-descriptions.ts +0 -218
  56. package/src/cli/config-diff.ts +0 -103
  57. package/src/cli/config-display.ts +0 -285
  58. package/src/cli/config-get.ts +0 -55
  59. package/src/cli/config.ts +0 -14
  60. package/src/cli/constitution.ts +0 -17
  61. package/src/cli/diagnose-analysis.ts +0 -159
  62. package/src/cli/diagnose-formatter.ts +0 -87
  63. package/src/cli/diagnose.ts +0 -203
  64. package/src/cli/generate.ts +0 -250
  65. package/src/cli/index.ts +0 -42
  66. package/src/cli/init-context.ts +0 -405
  67. package/src/cli/init-detect.ts +0 -303
  68. package/src/cli/init.ts +0 -296
  69. package/src/cli/interact.ts +0 -295
  70. package/src/cli/plan.ts +0 -509
  71. package/src/cli/plugins.ts +0 -122
  72. package/src/cli/prompts-export.ts +0 -58
  73. package/src/cli/prompts-init.ts +0 -200
  74. package/src/cli/prompts-main.ts +0 -183
  75. package/src/cli/prompts-shared.ts +0 -70
  76. package/src/cli/prompts-tdd.ts +0 -88
  77. package/src/cli/prompts.ts +0 -17
  78. package/src/cli/runs.ts +0 -174
  79. package/src/cli/status-cost.ts +0 -151
  80. package/src/cli/status-features.ts +0 -405
  81. package/src/cli/status.ts +0 -13
  82. package/src/commands/common.ts +0 -171
  83. package/src/commands/diagnose.ts +0 -17
  84. package/src/commands/index.ts +0 -9
  85. package/src/commands/logs-formatter.ts +0 -201
  86. package/src/commands/logs-reader.ts +0 -171
  87. package/src/commands/logs.ts +0 -103
  88. package/src/commands/precheck.ts +0 -86
  89. package/src/commands/runs.ts +0 -220
  90. package/src/commands/unlock.ts +0 -96
  91. package/src/config/defaults.ts +0 -217
  92. package/src/config/index.ts +0 -22
  93. package/src/config/loader.ts +0 -143
  94. package/src/config/merge.ts +0 -106
  95. package/src/config/merger.ts +0 -147
  96. package/src/config/path-security.ts +0 -121
  97. package/src/config/paths.ts +0 -27
  98. package/src/config/permissions.ts +0 -63
  99. package/src/config/runtime-types.ts +0 -520
  100. package/src/config/schema-types.ts +0 -53
  101. package/src/config/schema.ts +0 -60
  102. package/src/config/schemas.ts +0 -425
  103. package/src/config/test-strategy.ts +0 -71
  104. package/src/config/types.ts +0 -57
  105. package/src/config/validate.ts +0 -103
  106. package/src/constitution/generator.ts +0 -158
  107. package/src/constitution/generators/aider.ts +0 -41
  108. package/src/constitution/generators/claude.ts +0 -35
  109. package/src/constitution/generators/cursor.ts +0 -36
  110. package/src/constitution/generators/opencode.ts +0 -38
  111. package/src/constitution/generators/types.ts +0 -33
  112. package/src/constitution/generators/windsurf.ts +0 -36
  113. package/src/constitution/index.ts +0 -11
  114. package/src/constitution/loader.ts +0 -121
  115. package/src/constitution/types.ts +0 -31
  116. package/src/context/auto-detect.ts +0 -228
  117. package/src/context/builder.ts +0 -299
  118. package/src/context/elements.ts +0 -122
  119. package/src/context/formatter.ts +0 -107
  120. package/src/context/generator.ts +0 -343
  121. package/src/context/generators/aider.ts +0 -34
  122. package/src/context/generators/claude.ts +0 -28
  123. package/src/context/generators/codex.ts +0 -28
  124. package/src/context/generators/cursor.ts +0 -28
  125. package/src/context/generators/gemini.ts +0 -28
  126. package/src/context/generators/opencode.ts +0 -30
  127. package/src/context/generators/windsurf.ts +0 -28
  128. package/src/context/greenfield.ts +0 -114
  129. package/src/context/index.ts +0 -34
  130. package/src/context/injector.ts +0 -279
  131. package/src/context/parent-context.ts +0 -39
  132. package/src/context/test-scanner.ts +0 -370
  133. package/src/context/types.ts +0 -98
  134. package/src/decompose/apply.ts +0 -50
  135. package/src/decompose/builder.ts +0 -181
  136. package/src/decompose/index.ts +0 -8
  137. package/src/decompose/sections/codebase.ts +0 -26
  138. package/src/decompose/sections/constraints.ts +0 -32
  139. package/src/decompose/sections/index.ts +0 -4
  140. package/src/decompose/sections/sibling-stories.ts +0 -25
  141. package/src/decompose/sections/target-story.ts +0 -31
  142. package/src/decompose/types.ts +0 -55
  143. package/src/decompose/validators/complexity.ts +0 -45
  144. package/src/decompose/validators/coverage.ts +0 -134
  145. package/src/decompose/validators/dependency.ts +0 -91
  146. package/src/decompose/validators/index.ts +0 -35
  147. package/src/decompose/validators/overlap.ts +0 -128
  148. package/src/errors.ts +0 -67
  149. package/src/execution/batching.ts +0 -157
  150. package/src/execution/crash-heartbeat.ts +0 -77
  151. package/src/execution/crash-recovery.ts +0 -79
  152. package/src/execution/crash-signals.ts +0 -165
  153. package/src/execution/crash-writer.ts +0 -154
  154. package/src/execution/deferred-review.ts +0 -105
  155. package/src/execution/dry-run.ts +0 -81
  156. package/src/execution/escalation/escalation.ts +0 -46
  157. package/src/execution/escalation/index.ts +0 -13
  158. package/src/execution/escalation/tier-escalation.ts +0 -346
  159. package/src/execution/escalation/tier-outcome.ts +0 -143
  160. package/src/execution/executor-types.ts +0 -73
  161. package/src/execution/helpers.ts +0 -38
  162. package/src/execution/index.ts +0 -27
  163. package/src/execution/iteration-runner.ts +0 -160
  164. package/src/execution/lifecycle/acceptance-loop.ts +0 -280
  165. package/src/execution/lifecycle/headless-formatter.ts +0 -83
  166. package/src/execution/lifecycle/index.ts +0 -11
  167. package/src/execution/lifecycle/parallel-lifecycle.ts +0 -101
  168. package/src/execution/lifecycle/precheck-runner.ts +0 -140
  169. package/src/execution/lifecycle/run-cleanup.ts +0 -81
  170. package/src/execution/lifecycle/run-completion.ts +0 -247
  171. package/src/execution/lifecycle/run-initialization.ts +0 -187
  172. package/src/execution/lifecycle/run-regression.ts +0 -305
  173. package/src/execution/lifecycle/run-setup.ts +0 -240
  174. package/src/execution/lifecycle/story-size-prompts.ts +0 -123
  175. package/src/execution/lock.ts +0 -129
  176. package/src/execution/parallel-coordinator.ts +0 -281
  177. package/src/execution/parallel-executor-rectification-pass.ts +0 -117
  178. package/src/execution/parallel-executor-rectify.ts +0 -136
  179. package/src/execution/parallel-executor.ts +0 -330
  180. package/src/execution/parallel-worker.ts +0 -149
  181. package/src/execution/parallel.ts +0 -13
  182. package/src/execution/pid-registry.ts +0 -275
  183. package/src/execution/pipeline-result-handler.ts +0 -221
  184. package/src/execution/progress.ts +0 -27
  185. package/src/execution/queue-handler.ts +0 -109
  186. package/src/execution/runner-completion.ts +0 -171
  187. package/src/execution/runner-execution.ts +0 -243
  188. package/src/execution/runner-setup.ts +0 -86
  189. package/src/execution/runner.ts +0 -265
  190. package/src/execution/sequential-executor.ts +0 -219
  191. package/src/execution/status-file.ts +0 -264
  192. package/src/execution/status-writer.ts +0 -181
  193. package/src/execution/story-context.ts +0 -266
  194. package/src/execution/story-selector.ts +0 -76
  195. package/src/execution/test-output-parser.ts +0 -14
  196. package/src/execution/timeout-handler.ts +0 -100
  197. package/src/hooks/index.ts +0 -2
  198. package/src/hooks/runner.ts +0 -280
  199. package/src/hooks/types.ts +0 -79
  200. package/src/interaction/chain.ts +0 -170
  201. package/src/interaction/index.ts +0 -61
  202. package/src/interaction/init.ts +0 -84
  203. package/src/interaction/plugins/auto.ts +0 -243
  204. package/src/interaction/plugins/cli.ts +0 -300
  205. package/src/interaction/plugins/telegram.ts +0 -384
  206. package/src/interaction/plugins/webhook.ts +0 -286
  207. package/src/interaction/state.ts +0 -171
  208. package/src/interaction/triggers.ts +0 -250
  209. package/src/interaction/types.ts +0 -170
  210. package/src/logger/formatters.ts +0 -84
  211. package/src/logger/index.ts +0 -16
  212. package/src/logger/logger.ts +0 -296
  213. package/src/logger/types.ts +0 -48
  214. package/src/logging/formatter.ts +0 -355
  215. package/src/logging/index.ts +0 -22
  216. package/src/logging/types.ts +0 -93
  217. package/src/metrics/aggregator.ts +0 -191
  218. package/src/metrics/index.ts +0 -14
  219. package/src/metrics/tracker.ts +0 -200
  220. package/src/metrics/types.ts +0 -115
  221. package/src/optimizer/index.ts +0 -63
  222. package/src/optimizer/noop.optimizer.ts +0 -24
  223. package/src/optimizer/rule-based.optimizer.ts +0 -248
  224. package/src/optimizer/types.ts +0 -53
  225. package/src/pipeline/event-bus.ts +0 -297
  226. package/src/pipeline/events.ts +0 -130
  227. package/src/pipeline/index.ts +0 -19
  228. package/src/pipeline/runner.ts +0 -149
  229. package/src/pipeline/stages/acceptance-setup.ts +0 -140
  230. package/src/pipeline/stages/acceptance.ts +0 -215
  231. package/src/pipeline/stages/autofix.ts +0 -262
  232. package/src/pipeline/stages/completion.ts +0 -110
  233. package/src/pipeline/stages/constitution.ts +0 -63
  234. package/src/pipeline/stages/context.ts +0 -122
  235. package/src/pipeline/stages/execution.ts +0 -359
  236. package/src/pipeline/stages/index.ts +0 -86
  237. package/src/pipeline/stages/optimizer.ts +0 -74
  238. package/src/pipeline/stages/prompt.ts +0 -79
  239. package/src/pipeline/stages/queue-check.ts +0 -103
  240. package/src/pipeline/stages/rectify.ts +0 -101
  241. package/src/pipeline/stages/regression.ts +0 -99
  242. package/src/pipeline/stages/review.ts +0 -94
  243. package/src/pipeline/stages/routing.ts +0 -276
  244. package/src/pipeline/stages/verify.ts +0 -286
  245. package/src/pipeline/subscribers/events-writer.ts +0 -135
  246. package/src/pipeline/subscribers/hooks.ts +0 -179
  247. package/src/pipeline/subscribers/interaction.ts +0 -103
  248. package/src/pipeline/subscribers/registry.ts +0 -73
  249. package/src/pipeline/subscribers/reporters.ts +0 -174
  250. package/src/pipeline/types.ts +0 -220
  251. package/src/plugins/extensions.ts +0 -225
  252. package/src/plugins/index.ts +0 -33
  253. package/src/plugins/loader.ts +0 -352
  254. package/src/plugins/plugin-logger.ts +0 -41
  255. package/src/plugins/registry.ts +0 -168
  256. package/src/plugins/types.ts +0 -206
  257. package/src/plugins/validator.ts +0 -352
  258. package/src/prd/index.ts +0 -220
  259. package/src/prd/schema.ts +0 -268
  260. package/src/prd/types.ts +0 -273
  261. package/src/prd/validate.ts +0 -41
  262. package/src/precheck/checks-agents.ts +0 -63
  263. package/src/precheck/checks-blockers.ts +0 -23
  264. package/src/precheck/checks-cli.ts +0 -68
  265. package/src/precheck/checks-config.ts +0 -102
  266. package/src/precheck/checks-git.ts +0 -117
  267. package/src/precheck/checks-system.ts +0 -101
  268. package/src/precheck/checks-warnings.ts +0 -221
  269. package/src/precheck/checks.ts +0 -36
  270. package/src/precheck/index.ts +0 -374
  271. package/src/precheck/story-size-gate.ts +0 -144
  272. package/src/precheck/types.ts +0 -31
  273. package/src/prompts/builder.ts +0 -166
  274. package/src/prompts/index.ts +0 -2
  275. package/src/prompts/loader.ts +0 -43
  276. package/src/prompts/sections/conventions.ts +0 -19
  277. package/src/prompts/sections/hermetic.ts +0 -41
  278. package/src/prompts/sections/index.ts +0 -12
  279. package/src/prompts/sections/isolation.ts +0 -70
  280. package/src/prompts/sections/role-task.ts +0 -182
  281. package/src/prompts/sections/story.ts +0 -55
  282. package/src/prompts/sections/verdict.ts +0 -70
  283. package/src/prompts/types.ts +0 -21
  284. package/src/queue/index.ts +0 -2
  285. package/src/queue/manager.ts +0 -254
  286. package/src/queue/types.ts +0 -54
  287. package/src/review/index.ts +0 -8
  288. package/src/review/orchestrator.ts +0 -154
  289. package/src/review/runner.ts +0 -303
  290. package/src/review/types.ts +0 -70
  291. package/src/routing/batch-route.ts +0 -35
  292. package/src/routing/builder.ts +0 -81
  293. package/src/routing/chain.ts +0 -75
  294. package/src/routing/content-hash.ts +0 -25
  295. package/src/routing/index.ts +0 -20
  296. package/src/routing/loader.ts +0 -62
  297. package/src/routing/router.ts +0 -305
  298. package/src/routing/strategies/adaptive.ts +0 -215
  299. package/src/routing/strategies/index.ts +0 -8
  300. package/src/routing/strategies/keyword.ts +0 -180
  301. package/src/routing/strategies/llm-prompts.ts +0 -224
  302. package/src/routing/strategies/llm.ts +0 -320
  303. package/src/routing/strategies/manual.ts +0 -50
  304. package/src/routing/strategy.ts +0 -102
  305. package/src/tdd/cleanup.ts +0 -120
  306. package/src/tdd/index.ts +0 -22
  307. package/src/tdd/isolation.ts +0 -117
  308. package/src/tdd/orchestrator.ts +0 -406
  309. package/src/tdd/prompts.ts +0 -40
  310. package/src/tdd/rectification-gate.ts +0 -274
  311. package/src/tdd/session-runner.ts +0 -263
  312. package/src/tdd/types.ts +0 -84
  313. package/src/tdd/verdict-reader.ts +0 -266
  314. package/src/tdd/verdict.ts +0 -152
  315. package/src/tui/App.tsx +0 -265
  316. package/src/tui/components/AgentPanel.tsx +0 -75
  317. package/src/tui/components/CostOverlay.tsx +0 -118
  318. package/src/tui/components/HelpOverlay.tsx +0 -107
  319. package/src/tui/components/StatusBar.tsx +0 -63
  320. package/src/tui/components/StoriesPanel.tsx +0 -177
  321. package/src/tui/hooks/useKeyboard.ts +0 -142
  322. package/src/tui/hooks/useLayout.ts +0 -137
  323. package/src/tui/hooks/usePipelineEvents.ts +0 -183
  324. package/src/tui/hooks/usePty.ts +0 -189
  325. package/src/tui/index.tsx +0 -38
  326. package/src/tui/types.ts +0 -76
  327. package/src/utils/errors.ts +0 -12
  328. package/src/utils/git.ts +0 -245
  329. package/src/utils/json-file.ts +0 -72
  330. package/src/utils/log-test-output.ts +0 -25
  331. package/src/utils/path-security.ts +0 -73
  332. package/src/utils/queue-writer.ts +0 -54
  333. package/src/verification/crash-detector.ts +0 -34
  334. package/src/verification/executor.ts +0 -250
  335. package/src/verification/index.ts +0 -12
  336. package/src/verification/orchestrator-types.ts +0 -154
  337. package/src/verification/orchestrator.ts +0 -76
  338. package/src/verification/parser.ts +0 -220
  339. package/src/verification/rectification-loop.ts +0 -172
  340. package/src/verification/rectification.ts +0 -108
  341. package/src/verification/runners.ts +0 -129
  342. package/src/verification/smart-runner.ts +0 -307
  343. package/src/verification/strategies/acceptance.ts +0 -136
  344. package/src/verification/strategies/regression.ts +0 -90
  345. package/src/verification/strategies/scoped.ts +0 -154
  346. package/src/verification/types.ts +0 -117
  347. package/src/version.ts +0 -40
  348. package/src/worktree/dispatcher.ts +0 -6
  349. package/src/worktree/index.ts +0 -2
  350. package/src/worktree/manager.ts +0 -193
  351. package/src/worktree/merge.ts +0 -302
  352. package/src/worktree/types.ts +0 -4
@@ -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
- }
@@ -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";