@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
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Model resolution utility — AA-006
|
|
3
|
-
*
|
|
4
|
-
* Resolves a ModelDef from config.models.balanced with fallback chain:
|
|
5
|
-
* config value -> adapter default -> throw if none configured
|
|
6
|
-
*
|
|
7
|
-
* Implementation placeholder — logic to be filled in by the implementer.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { resolveModel } from "../../config/schema";
|
|
11
|
-
import type { ModelDef, NaxConfig } from "../../config/schema";
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Resolve the balanced model definition from config, with optional adapter default fallback.
|
|
15
|
-
*
|
|
16
|
-
* Fallback chain:
|
|
17
|
-
* 1. config.models.balanced (object or string shorthand)
|
|
18
|
-
* 2. adapterDefault (if provided)
|
|
19
|
-
* 3. Throws if neither is configured
|
|
20
|
-
*
|
|
21
|
-
* @param config - Partial NaxConfig (models.balanced is read if present)
|
|
22
|
-
* @param adapterDefault - Optional adapter-level fallback ModelDef
|
|
23
|
-
* @returns Resolved ModelDef
|
|
24
|
-
* @throws Error if no balanced model is configured and no adapter default provided
|
|
25
|
-
*/
|
|
26
|
-
export function resolveBalancedModelDef(
|
|
27
|
-
config: Pick<NaxConfig, "models"> | Partial<NaxConfig>,
|
|
28
|
-
adapterDefault?: ModelDef,
|
|
29
|
-
): ModelDef {
|
|
30
|
-
const configWithModels = config as Pick<NaxConfig, "models">;
|
|
31
|
-
const models = configWithModels.models as Record<string, unknown> | undefined;
|
|
32
|
-
const balancedEntry = models?.balanced;
|
|
33
|
-
|
|
34
|
-
if (balancedEntry) {
|
|
35
|
-
return resolveModel(balancedEntry as string | ModelDef);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (adapterDefault) {
|
|
39
|
-
return adapterDefault;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
throw new Error("No balanced model configured in config.models.balanced and no adapter default provided");
|
|
43
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extended Agent Type Definitions
|
|
3
|
-
*
|
|
4
|
-
* Types for plan mode, decompose mode, and interactive PTY sessions.
|
|
5
|
-
* Separated from core types to keep each file under 400 lines.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { ModelDef, ModelTier, NaxConfig } from "../../config/schema";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Configuration options for running an agent in plan mode.
|
|
12
|
-
*
|
|
13
|
-
* Plan mode spawns the agent interactively (or non-interactively with input file)
|
|
14
|
-
* to gather requirements, ask clarifying questions, and produce a structured spec.
|
|
15
|
-
*/
|
|
16
|
-
export interface PlanOptions {
|
|
17
|
-
/** The initial planning prompt or task description */
|
|
18
|
-
prompt: string;
|
|
19
|
-
/** Working directory */
|
|
20
|
-
workdir: string;
|
|
21
|
-
/** Whether to run in interactive mode (agent takes over terminal) */
|
|
22
|
-
interactive: boolean;
|
|
23
|
-
/** Optional codebase context (file tree, dependencies, test patterns) */
|
|
24
|
-
codebaseContext?: string;
|
|
25
|
-
/** Optional input file path for non-interactive mode */
|
|
26
|
-
inputFile?: string;
|
|
27
|
-
/** Model tier to use for planning (default: "balanced") */
|
|
28
|
-
modelTier?: ModelTier;
|
|
29
|
-
/** Resolved model definition */
|
|
30
|
-
modelDef?: ModelDef;
|
|
31
|
-
/** Global config — used to resolve models.balanced when modelDef is absent */
|
|
32
|
-
config?: Partial<NaxConfig>;
|
|
33
|
-
/**
|
|
34
|
-
* Interaction bridge for mid-session human Q&A (ACP only).
|
|
35
|
-
* If provided, the agent can pause and ask clarifying questions during planning.
|
|
36
|
-
*/
|
|
37
|
-
interactionBridge?: {
|
|
38
|
-
detectQuestion: (text: string) => Promise<boolean>;
|
|
39
|
-
onQuestionDetected: (text: string) => Promise<string>;
|
|
40
|
-
};
|
|
41
|
-
/** Feature name for ACP session naming (plan→run continuity) */
|
|
42
|
-
featureName?: string;
|
|
43
|
-
/** Story ID for ACP session naming (plan→run continuity) */
|
|
44
|
-
storyId?: string;
|
|
45
|
-
/** Session role for TDD isolation (e.g. "test-writer" | "implementer" | "verifier") */
|
|
46
|
-
sessionRole?: string;
|
|
47
|
-
/** Timeout in seconds — inherited from config.execution.sessionTimeoutSeconds */
|
|
48
|
-
timeoutSeconds?: number;
|
|
49
|
-
/** Whether to skip permission prompts (maps to permissionMode in ACP) */
|
|
50
|
-
dangerouslySkipPermissions?: boolean;
|
|
51
|
-
/** Max interaction turns when interactionBridge is active (default: 10) */
|
|
52
|
-
maxInteractionTurns?: number;
|
|
53
|
-
/**
|
|
54
|
-
* Callback invoked with the ACP session name after the session is created.
|
|
55
|
-
* Used to persist the name to status.json for plan→run session continuity.
|
|
56
|
-
*/
|
|
57
|
-
onAcpSessionCreated?: (sessionName: string) => Promise<void> | void;
|
|
58
|
-
/** PID registry for tracking spawned agent processes — cleanup on crash/SIGTERM */
|
|
59
|
-
pidRegistry?: import("../../execution/pid-registry").PidRegistry;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Result from running an agent in plan mode.
|
|
64
|
-
*
|
|
65
|
-
* Contains the generated specification content and optional conversation log.
|
|
66
|
-
*/
|
|
67
|
-
export interface PlanResult {
|
|
68
|
-
/** The generated specification markdown content */
|
|
69
|
-
specContent: string;
|
|
70
|
-
/** Optional conversation log (for debugging/review) */
|
|
71
|
-
conversationLog?: string;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Configuration options for running an agent in decompose mode.
|
|
76
|
-
*
|
|
77
|
-
* Decompose mode reads a spec document and breaks it down into classified user stories
|
|
78
|
-
* in a single LLM call (decompose + classify combined).
|
|
79
|
-
*/
|
|
80
|
-
export interface DecomposeOptions {
|
|
81
|
-
/** The spec document content to decompose */
|
|
82
|
-
specContent: string;
|
|
83
|
-
/** Working directory */
|
|
84
|
-
workdir: string;
|
|
85
|
-
/** Codebase context (file tree, dependencies, test patterns) */
|
|
86
|
-
codebaseContext: string;
|
|
87
|
-
/** Model tier to use for decomposition (default: "balanced") */
|
|
88
|
-
modelTier?: ModelTier;
|
|
89
|
-
/** Resolved model definition */
|
|
90
|
-
modelDef?: ModelDef;
|
|
91
|
-
/** Global config — used to resolve models.balanced when modelDef is absent */
|
|
92
|
-
config?: Partial<NaxConfig>;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/** A single classified user story from decompose result. */
|
|
96
|
-
export interface DecomposedStory {
|
|
97
|
-
/** Story ID (e.g., "US-001") */
|
|
98
|
-
id: string;
|
|
99
|
-
/** Story title */
|
|
100
|
-
title: string;
|
|
101
|
-
/** Story description */
|
|
102
|
-
description: string;
|
|
103
|
-
/** Acceptance criteria */
|
|
104
|
-
acceptanceCriteria: string[];
|
|
105
|
-
/** Tags for routing */
|
|
106
|
-
tags: string[];
|
|
107
|
-
/** Dependencies (story IDs) */
|
|
108
|
-
dependencies: string[];
|
|
109
|
-
/** Classified complexity */
|
|
110
|
-
complexity: "simple" | "medium" | "complex" | "expert";
|
|
111
|
-
/** Context files to inject into agent prompt before execution */
|
|
112
|
-
contextFiles: string[];
|
|
113
|
-
/** Classification reasoning */
|
|
114
|
-
reasoning: string;
|
|
115
|
-
/** Estimated lines of code */
|
|
116
|
-
estimatedLOC: number;
|
|
117
|
-
/** Implementation risks */
|
|
118
|
-
risks: string[];
|
|
119
|
-
/** Test strategy recommendation from LLM */
|
|
120
|
-
testStrategy?: import("../../config/test-strategy").TestStrategy;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Result from running an agent in decompose mode.
|
|
125
|
-
*
|
|
126
|
-
* Contains the decomposed and classified user stories.
|
|
127
|
-
*/
|
|
128
|
-
export interface DecomposeResult {
|
|
129
|
-
/** The decomposed and classified user stories */
|
|
130
|
-
stories: DecomposedStory[];
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* PTY handle interface for managing spawned PTY process.
|
|
135
|
-
*
|
|
136
|
-
* Provides methods to write input, resize terminal, and kill process.
|
|
137
|
-
* Returned by runInteractive() for TUI integration.
|
|
138
|
-
*/
|
|
139
|
-
export interface PtyHandle {
|
|
140
|
-
/** Write input to PTY stdin */
|
|
141
|
-
write(data: string): void;
|
|
142
|
-
/** Resize PTY terminal */
|
|
143
|
-
resize(cols: number, rows: number): void;
|
|
144
|
-
/** Kill PTY process */
|
|
145
|
-
kill(): void;
|
|
146
|
-
/** Process ID */
|
|
147
|
-
pid: number;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Configuration options for running an agent in interactive PTY mode.
|
|
152
|
-
*
|
|
153
|
-
* Extends AgentRunOptions with PTY-specific callbacks for output streaming
|
|
154
|
-
* and exit handling. Used by TUI to embed agent sessions.
|
|
155
|
-
*/
|
|
156
|
-
export interface InteractiveRunOptions extends AgentRunOptions {
|
|
157
|
-
/** Callback fired when PTY outputs data */
|
|
158
|
-
onOutput: (data: Buffer) => void;
|
|
159
|
-
/** Callback fired when PTY process exits */
|
|
160
|
-
onExit: (code: number) => void;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// Re-import for the extends clause
|
|
164
|
-
import type { AgentRunOptions } from "../types";
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Validation Helpers
|
|
3
|
-
*
|
|
4
|
-
* Runtime validation for agent capabilities and tier compatibility.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { ModelTier } from "../../config/schema";
|
|
8
|
-
import type { AgentAdapter } from "../types";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Check if an agent supports a given model tier.
|
|
12
|
-
*
|
|
13
|
-
* Used to validate routing decisions at runtime — ensures the orchestrator
|
|
14
|
-
* doesn't try to use a tier the agent doesn't support.
|
|
15
|
-
*
|
|
16
|
-
* @param agent - The agent adapter to validate
|
|
17
|
-
* @param tier - The model tier to check (fast/balanced/powerful)
|
|
18
|
-
* @returns true if the agent declares support for this tier
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```ts
|
|
22
|
-
* const agent = new ClaudeCodeAdapter();
|
|
23
|
-
* if (!validateAgentForTier(agent, "powerful")) {
|
|
24
|
-
* console.warn(`Agent ${agent.name} does not support powerful tier`);
|
|
25
|
-
* }
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export function validateAgentForTier(agent: AgentAdapter, tier: ModelTier): boolean {
|
|
29
|
-
return agent.capabilities.supportedTiers.includes(tier);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Check if an agent supports a specific feature.
|
|
34
|
-
*
|
|
35
|
-
* @param agent - The agent adapter to validate
|
|
36
|
-
* @param feature - The feature to check (tdd/review/refactor/batch)
|
|
37
|
-
* @returns true if the agent declares support for this feature
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* const agent = new ClaudeCodeAdapter();
|
|
42
|
-
* if (!validateAgentFeature(agent, "tdd")) {
|
|
43
|
-
* throw new Error("Agent does not support TDD workflow");
|
|
44
|
-
* }
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export function validateAgentFeature(agent: AgentAdapter, feature: "tdd" | "review" | "refactor" | "batch"): boolean {
|
|
48
|
-
return agent.capabilities.features.has(feature);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Get a human-readable description of agent capabilities.
|
|
53
|
-
*
|
|
54
|
-
* @param agent - The agent adapter to describe
|
|
55
|
-
* @returns Formatted capability summary
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* ```ts
|
|
59
|
-
* const agent = new ClaudeCodeAdapter();
|
|
60
|
-
* console.log(describeAgentCapabilities(agent));
|
|
61
|
-
* // "claude: tiers=[fast,balanced,powerful], maxTokens=200000, features=[tdd,review,refactor,batch]"
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
export function describeAgentCapabilities(agent: AgentAdapter): string {
|
|
65
|
-
const tiers = agent.capabilities.supportedTiers.join(",");
|
|
66
|
-
const features = Array.from(agent.capabilities.features).join(",");
|
|
67
|
-
const maxTokens = agent.capabilities.maxContextTokens;
|
|
68
|
-
return `${agent.name}: tiers=[${tiers}], maxTokens=${maxTokens}, features=[${features}]`;
|
|
69
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent version detection utilities
|
|
3
|
-
*
|
|
4
|
-
* Extracts version information from installed agent binaries
|
|
5
|
-
* by running `<agent> --version` and parsing the output.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { getInstalledAgents } from "../registry";
|
|
9
|
-
import type { AgentAdapter } from "../types";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Information about an installed agent including its version
|
|
13
|
-
*/
|
|
14
|
-
export interface AgentVersionInfo {
|
|
15
|
-
/** Agent name (e.g., "codex", "aider") */
|
|
16
|
-
name: string;
|
|
17
|
-
/** Human-readable display name */
|
|
18
|
-
displayName: string;
|
|
19
|
-
/** Agent version or null if not installed/unable to detect */
|
|
20
|
-
version: string | null;
|
|
21
|
-
/** Whether the agent binary is installed */
|
|
22
|
-
installed: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Dependency injection for testability
|
|
27
|
-
*/
|
|
28
|
-
export const _versionDetectionDeps = {
|
|
29
|
-
spawn(
|
|
30
|
-
cmd: string[],
|
|
31
|
-
opts: { stdout: "pipe"; stderr: "pipe" },
|
|
32
|
-
): {
|
|
33
|
-
stdout: ReadableStream<Uint8Array>;
|
|
34
|
-
stderr: ReadableStream<Uint8Array>;
|
|
35
|
-
exited: Promise<number>;
|
|
36
|
-
} {
|
|
37
|
-
return Bun.spawn(cmd, opts) as unknown as {
|
|
38
|
-
stdout: ReadableStream<Uint8Array>;
|
|
39
|
-
stderr: ReadableStream<Uint8Array>;
|
|
40
|
-
exited: Promise<number>;
|
|
41
|
-
};
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Get version for a single agent binary
|
|
47
|
-
*
|
|
48
|
-
* Runs `<agent> --version` and extracts version string.
|
|
49
|
-
* Returns null if agent not found or version detection fails.
|
|
50
|
-
*/
|
|
51
|
-
export async function getAgentVersion(binaryName: string): Promise<string | null> {
|
|
52
|
-
try {
|
|
53
|
-
const proc = _versionDetectionDeps.spawn([binaryName, "--version"], {
|
|
54
|
-
stdout: "pipe",
|
|
55
|
-
stderr: "pipe",
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
const exitCode = await proc.exited;
|
|
59
|
-
if (exitCode !== 0) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const stdout = await new Response(proc.stdout).text();
|
|
64
|
-
const versionLine = stdout.trim().split("\n")[0];
|
|
65
|
-
|
|
66
|
-
// Extract version from common formats:
|
|
67
|
-
// "tool version 1.2.3"
|
|
68
|
-
// "v1.2.3"
|
|
69
|
-
// "1.2.3"
|
|
70
|
-
const versionMatch = versionLine.match(/v?(\d+\.\d+(?:\.\d+)?(?:[-+][\w.]+)?)/);
|
|
71
|
-
if (versionMatch) {
|
|
72
|
-
return versionMatch[0];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// If no version pattern matched, return the first line as-is
|
|
76
|
-
return versionLine || null;
|
|
77
|
-
} catch {
|
|
78
|
-
// Bun.spawn throws ENOENT if binary not found
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Get version information for all configured agents
|
|
85
|
-
*
|
|
86
|
-
* Returns list of agents with their installation status and version info.
|
|
87
|
-
*/
|
|
88
|
-
export async function getAgentVersions(): Promise<AgentVersionInfo[]> {
|
|
89
|
-
const agents = await getInstalledAgents();
|
|
90
|
-
const agentsByName = new Map(agents.map((a) => [a.name, a]));
|
|
91
|
-
|
|
92
|
-
// Import ALL_AGENTS to include non-installed ones
|
|
93
|
-
const { ALL_AGENTS } = await import("../registry");
|
|
94
|
-
|
|
95
|
-
const versions = await Promise.all(
|
|
96
|
-
ALL_AGENTS.map(async (agent: AgentAdapter): Promise<AgentVersionInfo> => {
|
|
97
|
-
const version = agentsByName.has(agent.name) ? await getAgentVersion(agent.binary) : null;
|
|
98
|
-
|
|
99
|
-
return {
|
|
100
|
-
name: agent.name,
|
|
101
|
-
displayName: agent.displayName,
|
|
102
|
-
version,
|
|
103
|
-
installed: agentsByName.has(agent.name),
|
|
104
|
-
};
|
|
105
|
-
}),
|
|
106
|
-
);
|
|
107
|
-
|
|
108
|
-
return versions;
|
|
109
|
-
}
|
package/src/agents/types.ts
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Adapter Interface
|
|
3
|
-
*
|
|
4
|
-
* Every coding agent (Claude Code, Codex, OpenCode, etc.)
|
|
5
|
-
* implements this interface so nax can spawn, monitor, and
|
|
6
|
-
* collect results from them uniformly.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { NaxConfig } from "../config";
|
|
10
|
-
import type { ModelDef, ModelTier } from "../config/schema";
|
|
11
|
-
import type { TokenUsage } from "./cost";
|
|
12
|
-
|
|
13
|
-
// Re-export extended types for backward compatibility
|
|
14
|
-
export type {
|
|
15
|
-
PlanOptions,
|
|
16
|
-
PlanResult,
|
|
17
|
-
DecomposeOptions,
|
|
18
|
-
DecomposeResult,
|
|
19
|
-
DecomposedStory,
|
|
20
|
-
PtyHandle,
|
|
21
|
-
InteractiveRunOptions,
|
|
22
|
-
} from "./shared/types-extended";
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Agent execution result returned after running a coding agent.
|
|
26
|
-
*/
|
|
27
|
-
export interface AgentResult {
|
|
28
|
-
/** Whether the agent completed successfully */
|
|
29
|
-
success: boolean;
|
|
30
|
-
/** Exit code from the process */
|
|
31
|
-
exitCode: number;
|
|
32
|
-
/** stdout output (last N lines) */
|
|
33
|
-
output: string;
|
|
34
|
-
/** stderr output tail (last N lines) — useful for diagnosing failures */
|
|
35
|
-
stderr?: string;
|
|
36
|
-
/** Whether the agent hit a rate limit */
|
|
37
|
-
rateLimited: boolean;
|
|
38
|
-
/** Duration in milliseconds */
|
|
39
|
-
durationMs: number;
|
|
40
|
-
/** Estimated cost for this run (USD) */
|
|
41
|
-
estimatedCost: number;
|
|
42
|
-
/** Token usage for this run (when available) */
|
|
43
|
-
tokenUsage?: TokenUsage;
|
|
44
|
-
/** Process ID of the spawned agent (for cleanup on failure) */
|
|
45
|
-
pid?: number;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Configuration options for running a coding agent session.
|
|
50
|
-
*/
|
|
51
|
-
export interface AgentRunOptions {
|
|
52
|
-
/** The prompt to send to the agent */
|
|
53
|
-
prompt: string;
|
|
54
|
-
/** Working directory */
|
|
55
|
-
workdir: string;
|
|
56
|
-
/** Model tier (for cost estimation) */
|
|
57
|
-
modelTier: ModelTier;
|
|
58
|
-
/** Resolved model definition */
|
|
59
|
-
modelDef: ModelDef;
|
|
60
|
-
/** Maximum runtime in seconds */
|
|
61
|
-
timeoutSeconds: number;
|
|
62
|
-
/** Environment variables to pass */
|
|
63
|
-
env?: Record<string, string>;
|
|
64
|
-
/** Use --dangerously-skip-permissions flag (default: true) */
|
|
65
|
-
dangerouslySkipPermissions?: boolean;
|
|
66
|
-
/** Interaction bridge for mid-session human interaction (ACP) */
|
|
67
|
-
interactionBridge?: {
|
|
68
|
-
detectQuestion: (text: string) => Promise<boolean>;
|
|
69
|
-
onQuestionDetected: (text: string) => Promise<string>;
|
|
70
|
-
};
|
|
71
|
-
/** PID registry for cleanup on crash/SIGTERM */
|
|
72
|
-
pidRegistry?: import("../execution/pid-registry").PidRegistry;
|
|
73
|
-
/** ACP session name to resume for plan→run session continuity */
|
|
74
|
-
acpSessionName?: string;
|
|
75
|
-
/** Feature name for ACP session naming and logging */
|
|
76
|
-
featureName?: string;
|
|
77
|
-
/** Story ID for ACP session naming and logging */
|
|
78
|
-
storyId?: string;
|
|
79
|
-
/** Session role for TDD isolation (e.g. "test-writer" | "implementer" | "verifier") */
|
|
80
|
-
sessionRole?: string;
|
|
81
|
-
/** Max turns in multi-turn interaction loop when interactionBridge is active (default: 10) */
|
|
82
|
-
maxInteractionTurns?: number;
|
|
83
|
-
/** Pipeline stage this run belongs to — used by resolvePermissions() (default: "run") */
|
|
84
|
-
pipelineStage?: import("../config/permissions").PipelineStage;
|
|
85
|
-
/** Full nax config — passed through so adapters can call resolvePermissions() */
|
|
86
|
-
config?: NaxConfig;
|
|
87
|
-
/**
|
|
88
|
-
* When true, the adapter will NOT close the session after a successful run.
|
|
89
|
-
* Use this for rectification loops where the same session must persist across
|
|
90
|
-
* multiple attempts so the agent retains full conversation context.
|
|
91
|
-
* The caller is responsible for closing the session when the loop is done.
|
|
92
|
-
*/
|
|
93
|
-
keepSessionOpen?: boolean;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Agent capability metadata describing what features and tiers the agent supports.
|
|
98
|
-
*/
|
|
99
|
-
export interface AgentCapabilities {
|
|
100
|
-
/** Model tiers this agent supports (e.g., fast/balanced/powerful) */
|
|
101
|
-
readonly supportedTiers: readonly ModelTier[];
|
|
102
|
-
/** Maximum context window size in tokens */
|
|
103
|
-
readonly maxContextTokens: number;
|
|
104
|
-
/** Feature flags — what workflows this agent can handle */
|
|
105
|
-
readonly features: ReadonlySet<"tdd" | "review" | "refactor" | "batch">;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Options for one-shot LLM completion calls.
|
|
110
|
-
*/
|
|
111
|
-
export interface CompleteOptions {
|
|
112
|
-
/** Maximum tokens for the response */
|
|
113
|
-
maxTokens?: number;
|
|
114
|
-
/** Request JSON-formatted output (adds --output-format json) */
|
|
115
|
-
jsonMode?: boolean;
|
|
116
|
-
/** Override the model (adds --model flag) */
|
|
117
|
-
model?: string;
|
|
118
|
-
/** Whether to skip permission prompts (maps to permissionMode in ACP) */
|
|
119
|
-
dangerouslySkipPermissions?: boolean;
|
|
120
|
-
/**
|
|
121
|
-
* Working directory for the completion call.
|
|
122
|
-
* Used by ACP adapter to set --cwd on the spawned acpx session.
|
|
123
|
-
* CLI adapter uses this as the process cwd when spawning the agent binary.
|
|
124
|
-
*/
|
|
125
|
-
workdir?: string;
|
|
126
|
-
/**
|
|
127
|
-
* Timeout for the completion call in milliseconds.
|
|
128
|
-
* Adapters that support it (e.g. ACP) will enforce this as a hard deadline.
|
|
129
|
-
* Callers may also wrap complete() in their own Promise.race for shorter timeouts.
|
|
130
|
-
*/
|
|
131
|
-
timeoutMs?: number;
|
|
132
|
-
/**
|
|
133
|
-
* Full nax config — used by resolvePermissions() to determine permission mode.
|
|
134
|
-
* Pass when available so complete() honours permissionProfile / dangerouslySkipPermissions.
|
|
135
|
-
*/
|
|
136
|
-
config?: NaxConfig;
|
|
137
|
-
/**
|
|
138
|
-
* Named session to use for this completion call.
|
|
139
|
-
* If omitted, a timestamp-based ephemeral session name is generated.
|
|
140
|
-
* Pass a meaningful name (e.g. "nax-decompose-us-001") to aid debugging.
|
|
141
|
-
*/
|
|
142
|
-
sessionName?: string;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Typed error thrown when complete() fails due to non-zero exit or empty output.
|
|
147
|
-
*/
|
|
148
|
-
export class CompleteError extends Error {
|
|
149
|
-
constructor(
|
|
150
|
-
message: string,
|
|
151
|
-
public readonly exitCode?: number,
|
|
152
|
-
) {
|
|
153
|
-
super(message);
|
|
154
|
-
this.name = "CompleteError";
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Agent adapter interface — one implementation per supported coding agent.
|
|
160
|
-
*
|
|
161
|
-
* Provides uniform interface for checking installation, running agents,
|
|
162
|
-
* and building CLI commands across different coding agent tools.
|
|
163
|
-
*/
|
|
164
|
-
export interface AgentAdapter {
|
|
165
|
-
/** Unique agent name (e.g., "claude", "codex", "opencode") */
|
|
166
|
-
readonly name: string;
|
|
167
|
-
/** Human-readable display name */
|
|
168
|
-
readonly displayName: string;
|
|
169
|
-
/** Binary command to check if agent is installed */
|
|
170
|
-
readonly binary: string;
|
|
171
|
-
/** Capability metadata describing supported tiers and features */
|
|
172
|
-
readonly capabilities: AgentCapabilities;
|
|
173
|
-
|
|
174
|
-
/** Check if the agent binary is available on this machine. */
|
|
175
|
-
isInstalled(): Promise<boolean>;
|
|
176
|
-
|
|
177
|
-
/** Run the agent with a prompt and return the result. */
|
|
178
|
-
run(options: AgentRunOptions): Promise<AgentResult>;
|
|
179
|
-
|
|
180
|
-
/** Build the CLI command for a given run (for dry-run display). */
|
|
181
|
-
buildCommand(options: AgentRunOptions): string[];
|
|
182
|
-
|
|
183
|
-
/** Run the agent in plan mode to generate a feature specification. */
|
|
184
|
-
plan(options: import("./shared/types-extended").PlanOptions): Promise<import("./shared/types-extended").PlanResult>;
|
|
185
|
-
|
|
186
|
-
/** Run the agent in decompose mode to break spec into classified stories. */
|
|
187
|
-
decompose(
|
|
188
|
-
options: import("./shared/types-extended").DecomposeOptions,
|
|
189
|
-
): Promise<import("./shared/types-extended").DecomposeResult>;
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Run a one-shot LLM call and return the plain text response.
|
|
193
|
-
* Uses claude -p CLI for non-interactive completions.
|
|
194
|
-
*/
|
|
195
|
-
complete(prompt: string, options?: CompleteOptions): Promise<string>;
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Run the agent in interactive PTY mode for TUI embedding.
|
|
199
|
-
* This method is optional — only implemented by agents that support
|
|
200
|
-
* interactive terminal sessions (e.g., Claude Code).
|
|
201
|
-
*/
|
|
202
|
-
runInteractive?(
|
|
203
|
-
options: import("./shared/types-extended").InteractiveRunOptions,
|
|
204
|
-
): import("./shared/types-extended").PtyHandle;
|
|
205
|
-
}
|