agentrix 0.0.1
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/README.md +235 -0
- package/bin/agentrix.js +5 -0
- package/dist/api/auth.d.ts +10 -0
- package/dist/api/auth.d.ts.map +1 -0
- package/dist/api/auth.js +30 -0
- package/dist/api/auth.js.map +1 -0
- package/dist/api/automation.d.ts +52 -0
- package/dist/api/automation.d.ts.map +1 -0
- package/dist/api/automation.js +181 -0
- package/dist/api/automation.js.map +1 -0
- package/dist/api/base-handler.d.ts +62 -0
- package/dist/api/base-handler.d.ts.map +1 -0
- package/dist/api/base-handler.js +55 -0
- package/dist/api/base-handler.js.map +1 -0
- package/dist/api/config.d.ts +5 -0
- package/dist/api/config.d.ts.map +1 -0
- package/dist/api/config.js +14 -0
- package/dist/api/config.js.map +1 -0
- package/dist/api/create-plan.d.ts +8 -0
- package/dist/api/create-plan.d.ts.map +1 -0
- package/dist/api/create-plan.js +77 -0
- package/dist/api/create-plan.js.map +1 -0
- package/dist/api/git-status.d.ts +6 -0
- package/dist/api/git-status.d.ts.map +1 -0
- package/dist/api/git-status.js +57 -0
- package/dist/api/git-status.js.map +1 -0
- package/dist/api/plans.d.ts +6 -0
- package/dist/api/plans.d.ts.map +1 -0
- package/dist/api/plans.js +75 -0
- package/dist/api/plans.js.map +1 -0
- package/dist/api/repo-dashboard.d.ts +13 -0
- package/dist/api/repo-dashboard.d.ts.map +1 -0
- package/dist/api/repo-dashboard.js +47 -0
- package/dist/api/repo-dashboard.js.map +1 -0
- package/dist/api/repo-issue.d.ts +12 -0
- package/dist/api/repo-issue.d.ts.map +1 -0
- package/dist/api/repo-issue.js +47 -0
- package/dist/api/repo-issue.js.map +1 -0
- package/dist/api/repos.d.ts +9 -0
- package/dist/api/repos.d.ts.map +1 -0
- package/dist/api/repos.js +46 -0
- package/dist/api/repos.js.map +1 -0
- package/dist/api/sessions.d.ts +5 -0
- package/dist/api/sessions.d.ts.map +1 -0
- package/dist/api/sessions.js +19 -0
- package/dist/api/sessions.js.map +1 -0
- package/dist/api/tasks.d.ts +6 -0
- package/dist/api/tasks.d.ts.map +1 -0
- package/dist/api/tasks.js +22 -0
- package/dist/api/tasks.js.map +1 -0
- package/dist/api/terminal.d.ts +7 -0
- package/dist/api/terminal.d.ts.map +1 -0
- package/dist/api/terminal.js +16 -0
- package/dist/api/terminal.js.map +1 -0
- package/dist/api/worktrees.d.ts +7 -0
- package/dist/api/worktrees.d.ts.map +1 -0
- package/dist/api/worktrees.js +26 -0
- package/dist/api/worktrees.js.map +1 -0
- package/dist/cli/arg-parser.d.ts +3 -0
- package/dist/cli/arg-parser.d.ts.map +1 -0
- package/dist/cli/arg-parser.js +243 -0
- package/dist/cli/arg-parser.js.map +1 -0
- package/dist/cli/config-resolver.d.ts +29 -0
- package/dist/cli/config-resolver.d.ts.map +1 -0
- package/dist/cli/config-resolver.js +139 -0
- package/dist/cli/config-resolver.js.map +1 -0
- package/dist/cli/config.d.ts +5 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +224 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/constants.d.ts +7 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +15 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +35 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +23 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +23 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/plans-command.d.ts +3 -0
- package/dist/cli/plans-command.d.ts.map +1 -0
- package/dist/cli/plans-command.js +151 -0
- package/dist/cli/plans-command.js.map +1 -0
- package/dist/cli/server-starter.d.ts +26 -0
- package/dist/cli/server-starter.d.ts.map +1 -0
- package/dist/cli/server-starter.js +72 -0
- package/dist/cli/server-starter.js.map +1 -0
- package/dist/cli/types.d.ts +46 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/validation.d.ts +14 -0
- package/dist/cli/validation.d.ts.map +1 -0
- package/dist/cli/validation.js +99 -0
- package/dist/cli/validation.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +73 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/agent-commands.d.ts +27 -0
- package/dist/config/agent-commands.d.ts.map +1 -0
- package/dist/config/agent-commands.js +56 -0
- package/dist/config/agent-commands.js.map +1 -0
- package/dist/config/constants.d.ts +35 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +35 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/developer-messages.d.ts +2 -0
- package/dist/config/developer-messages.d.ts.map +1 -0
- package/dist/config/developer-messages.js +43 -0
- package/dist/config/developer-messages.js.map +1 -0
- package/dist/core/agents.d.ts +23 -0
- package/dist/core/agents.d.ts.map +1 -0
- package/dist/core/agents.js +91 -0
- package/dist/core/agents.js.map +1 -0
- package/dist/core/auth.d.ts +3 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +69 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/automation/branch.d.ts +18 -0
- package/dist/core/automation/branch.d.ts.map +1 -0
- package/dist/core/automation/branch.js +29 -0
- package/dist/core/automation/branch.js.map +1 -0
- package/dist/core/automation/git-orchestration.d.ts +51 -0
- package/dist/core/automation/git-orchestration.d.ts.map +1 -0
- package/dist/core/automation/git-orchestration.js +25 -0
- package/dist/core/automation/git-orchestration.js.map +1 -0
- package/dist/core/automation/plan.d.ts +15 -0
- package/dist/core/automation/plan.d.ts.map +1 -0
- package/dist/core/automation/plan.js +25 -0
- package/dist/core/automation/plan.js.map +1 -0
- package/dist/core/automation/request-validation.d.ts +45 -0
- package/dist/core/automation/request-validation.d.ts.map +1 -0
- package/dist/core/automation/request-validation.js +144 -0
- package/dist/core/automation/request-validation.js.map +1 -0
- package/dist/core/automation/task-runner.d.ts +42 -0
- package/dist/core/automation/task-runner.d.ts.map +1 -0
- package/dist/core/automation/task-runner.js +215 -0
- package/dist/core/automation/task-runner.js.map +1 -0
- package/dist/core/branch-name.d.ts +13 -0
- package/dist/core/branch-name.d.ts.map +1 -0
- package/dist/core/branch-name.js +429 -0
- package/dist/core/branch-name.js.map +1 -0
- package/dist/core/default-branch.d.ts +12 -0
- package/dist/core/default-branch.d.ts.map +1 -0
- package/dist/core/default-branch.js +78 -0
- package/dist/core/default-branch.js.map +1 -0
- package/dist/core/event-bus.d.ts +73 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +127 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/git.d.ts +13 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +15 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/github.d.ts +10 -0
- package/dist/core/github.d.ts.map +1 -0
- package/dist/core/github.js +245 -0
- package/dist/core/github.js.map +1 -0
- package/dist/core/plan-storage.d.ts +46 -0
- package/dist/core/plan-storage.d.ts.map +1 -0
- package/dist/core/plan-storage.js +237 -0
- package/dist/core/plan-storage.js.map +1 -0
- package/dist/core/plan.d.ts +23 -0
- package/dist/core/plan.d.ts.map +1 -0
- package/dist/core/plan.js +445 -0
- package/dist/core/plan.js.map +1 -0
- package/dist/core/repositories.d.ts +2 -0
- package/dist/core/repositories.d.ts.map +1 -0
- package/dist/core/repositories.js +58 -0
- package/dist/core/repositories.js.map +1 -0
- package/dist/core/repository-config.d.ts +9 -0
- package/dist/core/repository-config.d.ts.map +1 -0
- package/dist/core/repository-config.js +65 -0
- package/dist/core/repository-config.js.map +1 -0
- package/dist/core/task-store.d.ts +14 -0
- package/dist/core/task-store.d.ts.map +1 -0
- package/dist/core/task-store.js +105 -0
- package/dist/core/task-store.js.map +1 -0
- package/dist/core/tasks.d.ts +62 -0
- package/dist/core/tasks.d.ts.map +1 -0
- package/dist/core/tasks.js +582 -0
- package/dist/core/tasks.js.map +1 -0
- package/dist/core/terminal-sessions.d.ts +18 -0
- package/dist/core/terminal-sessions.d.ts.map +1 -0
- package/dist/core/terminal-sessions.js +539 -0
- package/dist/core/terminal-sessions.js.map +1 -0
- package/dist/core/tmux.d.ts +29 -0
- package/dist/core/tmux.d.ts.map +1 -0
- package/dist/core/tmux.js +151 -0
- package/dist/core/tmux.js.map +1 -0
- package/dist/core/workdir.d.ts +8 -0
- package/dist/core/workdir.d.ts.map +1 -0
- package/dist/core/workdir.js +26 -0
- package/dist/core/workdir.js.map +1 -0
- package/dist/domain/branch-validator.d.ts +51 -0
- package/dist/domain/branch-validator.d.ts.map +1 -0
- package/dist/domain/branch-validator.js +88 -0
- package/dist/domain/branch-validator.js.map +1 -0
- package/dist/domain/git-url-parser.d.ts +27 -0
- package/dist/domain/git-url-parser.d.ts.map +1 -0
- package/dist/domain/git-url-parser.js +84 -0
- package/dist/domain/git-url-parser.js.map +1 -0
- package/dist/domain/index.d.ts +8 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +5 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/repository.d.ts +55 -0
- package/dist/domain/repository.d.ts.map +1 -0
- package/dist/domain/repository.js +73 -0
- package/dist/domain/repository.js.map +1 -0
- package/dist/domain/worktree.d.ts +43 -0
- package/dist/domain/worktree.d.ts.map +1 -0
- package/dist/domain/worktree.js +57 -0
- package/dist/domain/worktree.js.map +1 -0
- package/dist/infrastructure/cookies/cookie-manager.d.ts +18 -0
- package/dist/infrastructure/cookies/cookie-manager.d.ts.map +1 -0
- package/dist/infrastructure/cookies/cookie-manager.js +20 -0
- package/dist/infrastructure/cookies/cookie-manager.js.map +1 -0
- package/dist/infrastructure/cookies/cookie-parser.d.ts +43 -0
- package/dist/infrastructure/cookies/cookie-parser.d.ts.map +1 -0
- package/dist/infrastructure/cookies/cookie-parser.js +88 -0
- package/dist/infrastructure/cookies/cookie-parser.js.map +1 -0
- package/dist/infrastructure/cookies/cookie-security.d.ts +15 -0
- package/dist/infrastructure/cookies/cookie-security.d.ts.map +1 -0
- package/dist/infrastructure/cookies/cookie-security.js +35 -0
- package/dist/infrastructure/cookies/cookie-security.js.map +1 -0
- package/dist/infrastructure/cookies/index.d.ts +7 -0
- package/dist/infrastructure/cookies/index.d.ts.map +1 -0
- package/dist/infrastructure/cookies/index.js +4 -0
- package/dist/infrastructure/cookies/index.js.map +1 -0
- package/dist/infrastructure/errors/error-handler.d.ts +22 -0
- package/dist/infrastructure/errors/error-handler.d.ts.map +1 -0
- package/dist/infrastructure/errors/error-handler.js +89 -0
- package/dist/infrastructure/errors/error-handler.js.map +1 -0
- package/dist/infrastructure/errors/http-error.d.ts +30 -0
- package/dist/infrastructure/errors/http-error.d.ts.map +1 -0
- package/dist/infrastructure/errors/http-error.js +46 -0
- package/dist/infrastructure/errors/http-error.js.map +1 -0
- package/dist/infrastructure/errors/index.d.ts +5 -0
- package/dist/infrastructure/errors/index.d.ts.map +1 -0
- package/dist/infrastructure/errors/index.js +5 -0
- package/dist/infrastructure/errors/index.js.map +1 -0
- package/dist/infrastructure/errors/not-found-error.d.ts +8 -0
- package/dist/infrastructure/errors/not-found-error.d.ts.map +1 -0
- package/dist/infrastructure/errors/not-found-error.js +13 -0
- package/dist/infrastructure/errors/not-found-error.js.map +1 -0
- package/dist/infrastructure/errors/validation-error.d.ts +21 -0
- package/dist/infrastructure/errors/validation-error.d.ts.map +1 -0
- package/dist/infrastructure/errors/validation-error.js +31 -0
- package/dist/infrastructure/errors/validation-error.js.map +1 -0
- package/dist/infrastructure/logging/index.d.ts +3 -0
- package/dist/infrastructure/logging/index.d.ts.map +1 -0
- package/dist/infrastructure/logging/index.js +2 -0
- package/dist/infrastructure/logging/index.js.map +1 -0
- package/dist/infrastructure/logging/logger.d.ts +21 -0
- package/dist/infrastructure/logging/logger.d.ts.map +1 -0
- package/dist/infrastructure/logging/logger.js +49 -0
- package/dist/infrastructure/logging/logger.js.map +1 -0
- package/dist/repositories/git-repository.d.ts +67 -0
- package/dist/repositories/git-repository.d.ts.map +1 -0
- package/dist/repositories/git-repository.js +111 -0
- package/dist/repositories/git-repository.js.map +1 -0
- package/dist/repositories/git-status-repository.d.ts +22 -0
- package/dist/repositories/git-status-repository.d.ts.map +1 -0
- package/dist/repositories/git-status-repository.js +620 -0
- package/dist/repositories/git-status-repository.js.map +1 -0
- package/dist/repositories/repository-repository.d.ts +44 -0
- package/dist/repositories/repository-repository.d.ts.map +1 -0
- package/dist/repositories/repository-repository.js +155 -0
- package/dist/repositories/repository-repository.js.map +1 -0
- package/dist/repositories/worktree-repository.d.ts +66 -0
- package/dist/repositories/worktree-repository.d.ts.map +1 -0
- package/dist/repositories/worktree-repository.js +330 -0
- package/dist/repositories/worktree-repository.js.map +1 -0
- package/dist/server/cookies.d.ts +6 -0
- package/dist/server/cookies.d.ts.map +1 -0
- package/dist/server/cookies.js +6 -0
- package/dist/server/cookies.js.map +1 -0
- package/dist/server/events.d.ts +8 -0
- package/dist/server/events.d.ts.map +1 -0
- package/dist/server/events.js +128 -0
- package/dist/server/events.js.map +1 -0
- package/dist/server/index.d.ts +18 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +173 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/router.d.ts +16 -0
- package/dist/server/router.d.ts.map +1 -0
- package/dist/server/router.js +256 -0
- package/dist/server/router.js.map +1 -0
- package/dist/server/ui.d.ts +8 -0
- package/dist/server/ui.d.ts.map +1 -0
- package/dist/server/ui.js +211 -0
- package/dist/server/ui.js.map +1 -0
- package/dist/server/websocket.d.ts +9 -0
- package/dist/server/websocket.d.ts.map +1 -0
- package/dist/server/websocket.js +116 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/services/auth-service.d.ts +49 -0
- package/dist/services/auth-service.d.ts.map +1 -0
- package/dist/services/auth-service.js +53 -0
- package/dist/services/auth-service.js.map +1 -0
- package/dist/services/index.d.ts +11 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/repository-service.d.ts +57 -0
- package/dist/services/repository-service.d.ts.map +1 -0
- package/dist/services/repository-service.js +62 -0
- package/dist/services/repository-service.js.map +1 -0
- package/dist/services/session-service.d.ts +31 -0
- package/dist/services/session-service.d.ts.map +1 -0
- package/dist/services/session-service.js +134 -0
- package/dist/services/session-service.js.map +1 -0
- package/dist/services/terminal-service.d.ts +43 -0
- package/dist/services/terminal-service.d.ts.map +1 -0
- package/dist/services/terminal-service.js +85 -0
- package/dist/services/terminal-service.js.map +1 -0
- package/dist/services/worktree-service.d.ts +39 -0
- package/dist/services/worktree-service.d.ts.map +1 -0
- package/dist/services/worktree-service.js +208 -0
- package/dist/services/worktree-service.js.map +1 -0
- package/dist/types/auth.d.ts +35 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/config.d.ts +46 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/git.d.ts +190 -0
- package/dist/types/git.d.ts.map +1 -0
- package/dist/types/git.js +5 -0
- package/dist/types/git.js.map +1 -0
- package/dist/types/http.d.ts +46 -0
- package/dist/types/http.d.ts.map +1 -0
- package/dist/types/http.js +2 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plan.d.ts +31 -0
- package/dist/types/plan.d.ts.map +1 -0
- package/dist/types/plan.js +5 -0
- package/dist/types/plan.js.map +1 -0
- package/dist/types/services.d.ts +99 -0
- package/dist/types/services.d.ts.map +1 -0
- package/dist/types/services.js +2 -0
- package/dist/types/services.js.map +1 -0
- package/dist/types/tasks.d.ts +68 -0
- package/dist/types/tasks.d.ts.map +1 -0
- package/dist/types/tasks.js +5 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/types/terminal.d.ts +60 -0
- package/dist/types/terminal.d.ts.map +1 -0
- package/dist/types/terminal.js +2 -0
- package/dist/types/terminal.js.map +1 -0
- package/dist/utils/cookies.d.ts +7 -0
- package/dist/utils/cookies.d.ts.map +1 -0
- package/dist/utils/cookies.js +6 -0
- package/dist/utils/cookies.js.map +1 -0
- package/dist/utils/http.d.ts +23 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +58 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/random.d.ts +12 -0
- package/dist/utils/random.d.ts.map +1 -0
- package/dist/utils/random.js +25 -0
- package/dist/utils/random.js.map +1 -0
- package/dist/utils/repository-cache.d.ts +8 -0
- package/dist/utils/repository-cache.d.ts.map +1 -0
- package/dist/utils/repository-cache.js +13 -0
- package/dist/utils/repository-cache.js.map +1 -0
- package/dist/validation/index.d.ts +9 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +6 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/request-validator.d.ts +99 -0
- package/dist/validation/request-validator.d.ts.map +1 -0
- package/dist/validation/request-validator.js +189 -0
- package/dist/validation/request-validator.js.map +1 -0
- package/dist/validation/schemas/repository-schema.d.ts +26 -0
- package/dist/validation/schemas/repository-schema.d.ts.map +1 -0
- package/dist/validation/schemas/repository-schema.js +31 -0
- package/dist/validation/schemas/repository-schema.js.map +1 -0
- package/dist/validation/schemas/terminal-schema.d.ts +21 -0
- package/dist/validation/schemas/terminal-schema.d.ts.map +1 -0
- package/dist/validation/schemas/terminal-schema.js +38 -0
- package/dist/validation/schemas/terminal-schema.js.map +1 -0
- package/dist/validation/schemas/worktree-schema.d.ts +21 -0
- package/dist/validation/schemas/worktree-schema.d.ts.map +1 -0
- package/dist/validation/schemas/worktree-schema.js +29 -0
- package/dist/validation/schemas/worktree-schema.js.map +1 -0
- package/package.json +79 -0
- package/ui/dist/assets/index-BDDrbP3l.js +354 -0
- package/ui/dist/assets/index-CwB7gOl4.css +41 -0
- package/ui/dist/index.html +13 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { getConfigFilePath } from './constants.js';
|
|
4
|
+
import { validatePort, validateString, validateBranchLlm, validateTerminalSessionMode, validateCookieSecure, pickFirst, warnConfig, } from './validation.js';
|
|
5
|
+
function pickString(sources, configPath) {
|
|
6
|
+
return pickFirst(sources, validateString, configPath);
|
|
7
|
+
}
|
|
8
|
+
function pickLlm(sources, configPath) {
|
|
9
|
+
return pickFirst(sources, validateBranchLlm, configPath);
|
|
10
|
+
}
|
|
11
|
+
function normalizeDefaultBranches(config, configPath) {
|
|
12
|
+
const defaultBranchesOverride = config['defaultBranches'] && typeof config['defaultBranches'] === 'object'
|
|
13
|
+
? config['defaultBranches']
|
|
14
|
+
: null;
|
|
15
|
+
if (!defaultBranchesOverride) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const overrides = {};
|
|
19
|
+
for (const [key, value] of Object.entries(defaultBranchesOverride)) {
|
|
20
|
+
if (typeof value === 'string') {
|
|
21
|
+
const trimmed = value.trim();
|
|
22
|
+
if (trimmed) {
|
|
23
|
+
overrides[key.trim()] = trimmed;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
warnConfig(`Ignoring non-string defaultBranches entry for ${key} in ${configPath || 'config'}.`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return Object.keys(overrides).length > 0 ? overrides : undefined;
|
|
31
|
+
}
|
|
32
|
+
function extractNestedObject(config, key) {
|
|
33
|
+
return config[key] && typeof config[key] === 'object'
|
|
34
|
+
? config[key]
|
|
35
|
+
: null;
|
|
36
|
+
}
|
|
37
|
+
export function normalizeConfig(rawConfig, configPath) {
|
|
38
|
+
if (!rawConfig || typeof rawConfig !== 'object') {
|
|
39
|
+
if (rawConfig !== undefined) {
|
|
40
|
+
warnConfig(`Ignoring config at ${configPath || 'config'} because it is not a JSON object.`);
|
|
41
|
+
}
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
const config = rawConfig;
|
|
45
|
+
const normalized = {};
|
|
46
|
+
const commands = extractNestedObject(config, 'commands');
|
|
47
|
+
const branchName = extractNestedObject(config, 'branchName');
|
|
48
|
+
const plan = extractNestedObject(config, 'plan');
|
|
49
|
+
const openai = extractNestedObject(config, 'openai');
|
|
50
|
+
const automation = extractNestedObject(config, 'automation');
|
|
51
|
+
const ngrok = extractNestedObject(config, 'ngrok');
|
|
52
|
+
const cookieConfig = extractNestedObject(config, 'cookies');
|
|
53
|
+
// Port
|
|
54
|
+
const port = validatePort(config['port'], 'port', configPath);
|
|
55
|
+
if (port !== undefined)
|
|
56
|
+
normalized['port'] = port;
|
|
57
|
+
// Host
|
|
58
|
+
const host = validateString(config['host'], 'host', configPath);
|
|
59
|
+
if (host !== undefined)
|
|
60
|
+
normalized['host'] = host;
|
|
61
|
+
// UI path
|
|
62
|
+
const ui = pickString([
|
|
63
|
+
{ value: config['ui'], name: 'ui' },
|
|
64
|
+
{ value: config['uiPath'], name: 'uiPath' },
|
|
65
|
+
], configPath);
|
|
66
|
+
if (ui !== undefined)
|
|
67
|
+
normalized['ui'] = ui;
|
|
68
|
+
// Working directory
|
|
69
|
+
const workdir = pickString([
|
|
70
|
+
{ value: config['workdir'], name: 'workdir' },
|
|
71
|
+
{ value: config['workDir'], name: 'workDir' },
|
|
72
|
+
], configPath);
|
|
73
|
+
if (workdir !== undefined)
|
|
74
|
+
normalized['workdir'] = workdir;
|
|
75
|
+
// Default branch
|
|
76
|
+
const defaultBranch = validateString(config['defaultBranch'], 'defaultBranch', configPath);
|
|
77
|
+
if (defaultBranch !== undefined)
|
|
78
|
+
normalized['defaultBranch'] = defaultBranch;
|
|
79
|
+
// Default branches overrides
|
|
80
|
+
const defaultBranches = normalizeDefaultBranches(config, configPath);
|
|
81
|
+
if (defaultBranches)
|
|
82
|
+
normalized['defaultBranches'] = defaultBranches;
|
|
83
|
+
// Cookie secure
|
|
84
|
+
const cookieSecureRaw = cookieConfig?.['secure'] ?? config['cookieSecure'];
|
|
85
|
+
const cookieSecure = validateCookieSecure(cookieSecureRaw, 'cookieSecure', configPath);
|
|
86
|
+
if (cookieSecure !== undefined)
|
|
87
|
+
normalized['cookieSecure'] = cookieSecure;
|
|
88
|
+
// Password
|
|
89
|
+
const password = validateString(config['password'], 'password', configPath);
|
|
90
|
+
if (password !== undefined)
|
|
91
|
+
normalized['password'] = password;
|
|
92
|
+
// Commands
|
|
93
|
+
const codexCommand = pickString([
|
|
94
|
+
{ value: config['codexCommand'], name: 'codexCommand' },
|
|
95
|
+
{ value: commands?.['codex'], name: 'commands.codex' },
|
|
96
|
+
], configPath);
|
|
97
|
+
if (codexCommand !== undefined)
|
|
98
|
+
normalized['codexCommand'] = codexCommand;
|
|
99
|
+
const claudeCommand = pickString([
|
|
100
|
+
{ value: config['claudeCommand'], name: 'claudeCommand' },
|
|
101
|
+
{ value: commands?.['claude'], name: 'commands.claude' },
|
|
102
|
+
], configPath);
|
|
103
|
+
if (claudeCommand !== undefined)
|
|
104
|
+
normalized['claudeCommand'] = claudeCommand;
|
|
105
|
+
const cursorCommand = pickString([
|
|
106
|
+
{ value: config['cursorCommand'], name: 'cursorCommand' },
|
|
107
|
+
{ value: commands?.['cursor'], name: 'commands.cursor' },
|
|
108
|
+
], configPath);
|
|
109
|
+
if (cursorCommand !== undefined)
|
|
110
|
+
normalized['cursorCommand'] = cursorCommand;
|
|
111
|
+
const ideCommand = pickString([
|
|
112
|
+
{ value: config['ideCommand'], name: 'ideCommand' },
|
|
113
|
+
{ value: commands?.['ide'], name: 'commands.ide' },
|
|
114
|
+
], configPath);
|
|
115
|
+
if (ideCommand !== undefined)
|
|
116
|
+
normalized['ideCommand'] = ideCommand;
|
|
117
|
+
const vscodeCommand = pickString([
|
|
118
|
+
{ value: config['vscodeCommand'], name: 'vscodeCommand' },
|
|
119
|
+
{ value: commands?.['vscode'], name: 'commands.vscode' },
|
|
120
|
+
], configPath);
|
|
121
|
+
if (vscodeCommand !== undefined)
|
|
122
|
+
normalized['vscodeCommand'] = vscodeCommand;
|
|
123
|
+
// LLM configuration
|
|
124
|
+
const branchNameLlm = pickLlm([
|
|
125
|
+
{ value: config['branchNameLlm'], name: 'branchNameLlm' },
|
|
126
|
+
{ value: config['branchNameLLM'], name: 'branchNameLLM' },
|
|
127
|
+
{ value: config['branchLlm'], name: 'branchLlm' },
|
|
128
|
+
{ value: config['branchLLM'], name: 'branchLLM' },
|
|
129
|
+
{ value: config['defaultBranchLlm'], name: 'defaultBranchLlm' },
|
|
130
|
+
{ value: config['defaultBranchLLM'], name: 'defaultBranchLLM' },
|
|
131
|
+
{ value: branchName?.['llm'], name: 'branchName.llm' },
|
|
132
|
+
{ value: branchName?.['default'], name: 'branchName.default' },
|
|
133
|
+
{ value: branchName?.['model'], name: 'branchName.model' },
|
|
134
|
+
], configPath);
|
|
135
|
+
if (branchNameLlm !== undefined)
|
|
136
|
+
normalized['branchNameLlm'] = branchNameLlm;
|
|
137
|
+
const planLlm = pickLlm([
|
|
138
|
+
{ value: config['planLlm'], name: 'planLlm' },
|
|
139
|
+
{ value: config['planLLM'], name: 'planLLM' },
|
|
140
|
+
{ value: config['createPlanLlm'], name: 'createPlanLlm' },
|
|
141
|
+
{ value: config['createPlanLLM'], name: 'createPlanLLM' },
|
|
142
|
+
{ value: config['defaultPlanLlm'], name: 'defaultPlanLlm' },
|
|
143
|
+
{ value: config['defaultPlanLLM'], name: 'defaultPlanLLM' },
|
|
144
|
+
{ value: plan?.['llm'], name: 'plan.llm' },
|
|
145
|
+
{ value: plan?.['default'], name: 'plan.default' },
|
|
146
|
+
{ value: plan?.['model'], name: 'plan.model' },
|
|
147
|
+
], configPath);
|
|
148
|
+
if (planLlm !== undefined)
|
|
149
|
+
normalized['planLlm'] = planLlm;
|
|
150
|
+
// Terminal session mode
|
|
151
|
+
const terminalSessionMode = validateTerminalSessionMode(config['terminalSessionMode'], 'terminalSessionMode', configPath);
|
|
152
|
+
if (terminalSessionMode !== undefined)
|
|
153
|
+
normalized['terminalSessionMode'] = terminalSessionMode;
|
|
154
|
+
// ngrok
|
|
155
|
+
const ngrokApiKey = pickString([
|
|
156
|
+
{ value: config['ngrokApiKey'], name: 'ngrokApiKey' },
|
|
157
|
+
{ value: ngrok?.['apiKey'], name: 'ngrok.apiKey' },
|
|
158
|
+
{ value: ngrok?.['authtoken'], name: 'ngrok.authtoken' },
|
|
159
|
+
{ value: ngrok?.['token'], name: 'ngrok.token' },
|
|
160
|
+
], configPath);
|
|
161
|
+
if (ngrokApiKey !== undefined)
|
|
162
|
+
normalized['ngrokApiKey'] = ngrokApiKey;
|
|
163
|
+
const ngrokDomain = pickString([
|
|
164
|
+
{ value: config['ngrokDomain'], name: 'ngrokDomain' },
|
|
165
|
+
{ value: ngrok?.['domain'], name: 'ngrok.domain' },
|
|
166
|
+
], configPath);
|
|
167
|
+
if (ngrokDomain !== undefined)
|
|
168
|
+
normalized['ngrokDomain'] = ngrokDomain;
|
|
169
|
+
// API keys
|
|
170
|
+
const automationApiKey = pickString([
|
|
171
|
+
{ value: config['automationApiKey'], name: 'automationApiKey' },
|
|
172
|
+
{ value: config['apiKey'], name: 'apiKey' },
|
|
173
|
+
{ value: automation?.['apiKey'], name: 'automation.apiKey' },
|
|
174
|
+
], configPath);
|
|
175
|
+
if (automationApiKey !== undefined)
|
|
176
|
+
normalized['automationApiKey'] = automationApiKey;
|
|
177
|
+
const openaiApiKey = pickString([
|
|
178
|
+
{ value: config['openaiApiKey'], name: 'openaiApiKey' },
|
|
179
|
+
{ value: openai?.['apiKey'], name: 'openai.apiKey' },
|
|
180
|
+
], configPath);
|
|
181
|
+
if (openaiApiKey !== undefined)
|
|
182
|
+
normalized['openaiApiKey'] = openaiApiKey;
|
|
183
|
+
return normalized;
|
|
184
|
+
}
|
|
185
|
+
export async function loadConfig() {
|
|
186
|
+
const configPath = getConfigFilePath();
|
|
187
|
+
if (!configPath) {
|
|
188
|
+
return { values: {}, path: null };
|
|
189
|
+
}
|
|
190
|
+
let raw;
|
|
191
|
+
try {
|
|
192
|
+
raw = await fs.readFile(configPath, 'utf8');
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const err = error;
|
|
196
|
+
if (err && (err.code === 'ENOENT' || err.code === 'ENOTDIR')) {
|
|
197
|
+
return { values: {}, path: configPath };
|
|
198
|
+
}
|
|
199
|
+
warnConfig(`Failed to read config at ${configPath}: ${err?.message || String(error)}`);
|
|
200
|
+
return { values: {}, path: configPath };
|
|
201
|
+
}
|
|
202
|
+
let parsed;
|
|
203
|
+
try {
|
|
204
|
+
parsed = JSON.parse(raw);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
const err = error;
|
|
208
|
+
warnConfig(`Failed to parse config at ${configPath}: ${err?.message || String(error)}`);
|
|
209
|
+
return { values: {}, path: configPath };
|
|
210
|
+
}
|
|
211
|
+
return { values: normalizeConfig(parsed, configPath), path: configPath };
|
|
212
|
+
}
|
|
213
|
+
export async function saveConfig(configValues) {
|
|
214
|
+
const configPath = getConfigFilePath();
|
|
215
|
+
if (!configPath) {
|
|
216
|
+
throw new Error('Unable to resolve config file path (home directory not found).');
|
|
217
|
+
}
|
|
218
|
+
const dir = path.dirname(configPath);
|
|
219
|
+
await fs.mkdir(dir, { recursive: true });
|
|
220
|
+
const serialized = `${JSON.stringify(configValues, null, 2)}\n`;
|
|
221
|
+
await fs.writeFile(configPath, serialized, 'utf8');
|
|
222
|
+
return configPath;
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const CONFIG_DIR_NAME = ".agentrix";
|
|
2
|
+
export declare const CONFIG_FILE_NAME = "config.json";
|
|
3
|
+
export declare const VALID_BRANCH_LLMS: Set<string>;
|
|
4
|
+
export declare const VALID_TERMINAL_SESSION_MODES: Set<string>;
|
|
5
|
+
export declare const VALID_COOKIE_SECURE_MODES: Set<string>;
|
|
6
|
+
export declare function getConfigFilePath(): string | null;
|
|
7
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C,eAAO,MAAM,iBAAiB,aAAyC,CAAC;AACxE,eAAO,MAAM,4BAA4B,aAAmC,CAAC;AAC7E,eAAO,MAAM,yBAAyB,aAAqC,CAAC;AAE5E,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAMjD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
export const CONFIG_DIR_NAME = '.agentrix';
|
|
4
|
+
export const CONFIG_FILE_NAME = 'config.json';
|
|
5
|
+
export const VALID_BRANCH_LLMS = new Set(['codex', 'claude', 'cursor']);
|
|
6
|
+
export const VALID_TERMINAL_SESSION_MODES = new Set(['auto', 'tmux', 'pty']);
|
|
7
|
+
export const VALID_COOKIE_SECURE_MODES = new Set(['true', 'false', 'auto']);
|
|
8
|
+
export function getConfigFilePath() {
|
|
9
|
+
const homeDir = os.homedir();
|
|
10
|
+
if (!homeDir) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return path.join(homeDir, CONFIG_DIR_NAME, CONFIG_FILE_NAME);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,IAAI,IAAI,CA4BhC;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD"}
|
package/dist/cli/help.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DEFAULT_HOST, DEFAULT_PORT } from '../server/index.js';
|
|
2
|
+
export function printHelp() {
|
|
3
|
+
const helpText = `Usage: agentrix [options]
|
|
4
|
+
|
|
5
|
+
Options:
|
|
6
|
+
-p, --port <number> Port to bind the HTTP server (default: ${DEFAULT_PORT})
|
|
7
|
+
-H, --host <host> Host interface to bind (default: ${DEFAULT_HOST})
|
|
8
|
+
-u, --ui <path> Path to the UI directory or entry file (default: bundled build)
|
|
9
|
+
-w, --workdir <path> Working directory root (default: current directory)
|
|
10
|
+
-P, --password <string> Password for login (default: randomly generated)
|
|
11
|
+
--default-branch <name> Override default branch used when syncing repositories
|
|
12
|
+
--cookie-secure <mode> Set session cookie security (true, false, auto)
|
|
13
|
+
--terminal-session-mode <mode> Terminal backend preference: auto, tmux, pty (default: auto)
|
|
14
|
+
--force-tmux Shortcut for --terminal-session-mode tmux (fail if tmux unavailable)
|
|
15
|
+
--no-tmux Shortcut for --terminal-session-mode pty (disable tmux usage)
|
|
16
|
+
--show-password Print the resolved password even if provided via config or flag
|
|
17
|
+
--codex-command <cmd> Command executed when launching Codex (default: codex)
|
|
18
|
+
--claude-command <cmd> Command executed when launching Claude (default: claude)
|
|
19
|
+
--cursor-command <cmd> Command executed when launching Cursor (default: cursor-agent)
|
|
20
|
+
--ide-command <cmd> (deprecated) Alias for --cursor-command
|
|
21
|
+
--vscode-command <cmd> Command executed when launching VS Code (default: code .)
|
|
22
|
+
--ngrok-api-key <token> Authtoken used when establishing an ngrok tunnel
|
|
23
|
+
--ngrok-domain <domain> Reserved ngrok domain to expose the server publicly
|
|
24
|
+
--openai-api-key <token> OpenAI API key forwarded to local LLM commands
|
|
25
|
+
--save Persist the effective configuration and exit
|
|
26
|
+
-h, --help Display this help message
|
|
27
|
+
-v, --version Output the version number
|
|
28
|
+
`;
|
|
29
|
+
process.stdout.write(helpText);
|
|
30
|
+
}
|
|
31
|
+
export async function printVersion() {
|
|
32
|
+
const pkg = await import('../../package.json', { with: { type: 'json' } });
|
|
33
|
+
process.stdout.write(`${pkg.default.version}\n`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,UAAU,SAAS;IACvB,MAAM,QAAQ,GAAG;;;kEAG+C,YAAY;4DAClB,YAAY;;;;;;;;;;;;;;;;;;;;;CAqBvE,CAAC;IACA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides a clean, modular CLI interface following SOLID principles:
|
|
5
|
+
* - arg-parser: Command-line argument parsing
|
|
6
|
+
* - config: Configuration file loading, normalization, and saving
|
|
7
|
+
* - config-resolver: Merges CLI args with file config and resolves final values
|
|
8
|
+
* - validation: Reusable validation utilities for config values
|
|
9
|
+
* - plans-command: Handler for the 'plans' subcommand
|
|
10
|
+
* - server-starter: Server initialization and lifecycle management
|
|
11
|
+
* - help: Help text and version display
|
|
12
|
+
* - types: TypeScript type definitions
|
|
13
|
+
* - constants: Shared constants
|
|
14
|
+
*/
|
|
15
|
+
export { parseArgs } from './arg-parser.js';
|
|
16
|
+
export { loadConfig, saveConfig, normalizeConfig } from './config.js';
|
|
17
|
+
export { resolveConfig, validateNgrokConfig, buildConfigToSave } from './config-resolver.js';
|
|
18
|
+
export { printHelp, printVersion } from './help.js';
|
|
19
|
+
export { handlePlansCommand } from './plans-command.js';
|
|
20
|
+
export { startAppServer } from './server-starter.js';
|
|
21
|
+
export * from './types.js';
|
|
22
|
+
export * from './constants.js';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides a clean, modular CLI interface following SOLID principles:
|
|
5
|
+
* - arg-parser: Command-line argument parsing
|
|
6
|
+
* - config: Configuration file loading, normalization, and saving
|
|
7
|
+
* - config-resolver: Merges CLI args with file config and resolves final values
|
|
8
|
+
* - validation: Reusable validation utilities for config values
|
|
9
|
+
* - plans-command: Handler for the 'plans' subcommand
|
|
10
|
+
* - server-starter: Server initialization and lifecycle management
|
|
11
|
+
* - help: Help text and version display
|
|
12
|
+
* - types: TypeScript type definitions
|
|
13
|
+
* - constants: Shared constants
|
|
14
|
+
*/
|
|
15
|
+
export { parseArgs } from './arg-parser.js';
|
|
16
|
+
export { loadConfig, saveConfig, normalizeConfig } from './config.js';
|
|
17
|
+
export { resolveConfig, validateNgrokConfig, buildConfigToSave } from './config-resolver.js';
|
|
18
|
+
export { printHelp, printVersion } from './help.js';
|
|
19
|
+
export { handlePlansCommand } from './plans-command.js';
|
|
20
|
+
export { startAppServer } from './server-starter.js';
|
|
21
|
+
export * from './types.js';
|
|
22
|
+
export * from './constants.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plans-command.d.ts","sourceRoot":"","sources":["../../src/cli/plans-command.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,IAAI,IAAI,CAiBrC;AA2GD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CtE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { getWorktreePath } from '../core/git.js';
|
|
3
|
+
import { listPlansForWorktree, readPlanFromWorktree } from '../core/plan-storage.js';
|
|
4
|
+
export function printPlansHelp() {
|
|
5
|
+
const helpText = `Usage: agentrix plans <command> [options]
|
|
6
|
+
|
|
7
|
+
Commands:
|
|
8
|
+
list List saved plans for a worktree
|
|
9
|
+
show Print the contents of a saved plan
|
|
10
|
+
|
|
11
|
+
Options:
|
|
12
|
+
--org <name> Repository organisation
|
|
13
|
+
--repo <name> Repository name
|
|
14
|
+
--branch <branch> Branch/worktree name
|
|
15
|
+
--plan-id <file> Identifier returned by the list command (show only)
|
|
16
|
+
--limit <number> Maximum number of plans to list (list only)
|
|
17
|
+
--workdir <path> Override workdir root (defaults to current directory)
|
|
18
|
+
-h, --help Show this help message
|
|
19
|
+
`;
|
|
20
|
+
process.stdout.write(helpText);
|
|
21
|
+
}
|
|
22
|
+
function parsePlansOptions(args) {
|
|
23
|
+
const options = {
|
|
24
|
+
org: '',
|
|
25
|
+
repo: '',
|
|
26
|
+
branch: '',
|
|
27
|
+
planId: '',
|
|
28
|
+
limit: undefined,
|
|
29
|
+
workdir: process.cwd(),
|
|
30
|
+
help: false,
|
|
31
|
+
};
|
|
32
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
33
|
+
const token = args[i];
|
|
34
|
+
switch (token) {
|
|
35
|
+
case '--org':
|
|
36
|
+
options.org = (args[++i] || '').trim();
|
|
37
|
+
break;
|
|
38
|
+
case '--repo':
|
|
39
|
+
options.repo = (args[++i] || '').trim();
|
|
40
|
+
break;
|
|
41
|
+
case '--branch':
|
|
42
|
+
options.branch = (args[++i] || '').trim();
|
|
43
|
+
break;
|
|
44
|
+
case '--plan-id':
|
|
45
|
+
options.planId = (args[++i] || '').trim();
|
|
46
|
+
break;
|
|
47
|
+
case '--limit': {
|
|
48
|
+
const value = args[++i];
|
|
49
|
+
if (!value) {
|
|
50
|
+
throw new Error('Expected value after --limit');
|
|
51
|
+
}
|
|
52
|
+
const parsed = Number.parseInt(value, 10);
|
|
53
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
54
|
+
throw new Error('limit must be a positive integer');
|
|
55
|
+
}
|
|
56
|
+
options.limit = parsed;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
case '--workdir': {
|
|
60
|
+
const value = args[++i];
|
|
61
|
+
if (!value) {
|
|
62
|
+
throw new Error('Expected value after --workdir');
|
|
63
|
+
}
|
|
64
|
+
options.workdir = path.resolve(process.cwd(), value);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case '-h':
|
|
68
|
+
case '--help':
|
|
69
|
+
options.help = true;
|
|
70
|
+
break;
|
|
71
|
+
default:
|
|
72
|
+
throw new Error(`Unknown option for plans command: ${token}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return options;
|
|
76
|
+
}
|
|
77
|
+
async function handleListCommand(options) {
|
|
78
|
+
const { worktreePath } = await getWorktreePath(options.workdir, options.org, options.repo, options.branch);
|
|
79
|
+
const plans = await listPlansForWorktree({
|
|
80
|
+
worktreePath,
|
|
81
|
+
branch: options.branch,
|
|
82
|
+
limit: options.limit,
|
|
83
|
+
});
|
|
84
|
+
if (plans.length === 0) {
|
|
85
|
+
process.stdout.write('No plans found.\n');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
plans.forEach((plan) => {
|
|
89
|
+
process.stdout.write(`${plan.createdAt}\t${plan.id}\n`);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async function handleShowCommand(options) {
|
|
93
|
+
if (!options.planId) {
|
|
94
|
+
process.stderr.write('planId is required for the show command.\n');
|
|
95
|
+
process.exitCode = 1;
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const { worktreePath } = await getWorktreePath(options.workdir, options.org, options.repo, options.branch);
|
|
99
|
+
const plan = await readPlanFromWorktree({
|
|
100
|
+
worktreePath,
|
|
101
|
+
branch: options.branch,
|
|
102
|
+
id: options.planId,
|
|
103
|
+
});
|
|
104
|
+
process.stdout.write(`# ${plan.id}\n\n${plan.content}`);
|
|
105
|
+
}
|
|
106
|
+
export async function handlePlansCommand(argv) {
|
|
107
|
+
const [command, ...rest] = argv;
|
|
108
|
+
if (!command || command === '--help' || command === '-h') {
|
|
109
|
+
printPlansHelp();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (command !== 'list' && command !== 'show') {
|
|
113
|
+
process.stderr.write(`Unknown plans command: ${command}\n`);
|
|
114
|
+
printPlansHelp();
|
|
115
|
+
process.exitCode = 1;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
let options;
|
|
119
|
+
try {
|
|
120
|
+
options = parsePlansOptions(rest);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
const err = error;
|
|
124
|
+
process.stderr.write(`${err.message}\n`);
|
|
125
|
+
process.exitCode = 1;
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (options.help) {
|
|
129
|
+
printPlansHelp();
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (!options.org || !options.repo || !options.branch) {
|
|
133
|
+
process.stderr.write('org, repo, and branch are required.\n');
|
|
134
|
+
process.exitCode = 1;
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
if (command === 'list') {
|
|
139
|
+
await handleListCommand(options);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
await handleShowCommand(options);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
const err = error;
|
|
147
|
+
process.stderr.write(`${err?.message || error}\n`);
|
|
148
|
+
process.exitCode = 1;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=plans-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plans-command.js","sourceRoot":"","sources":["../../src/cli/plans-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
interface ServerConfig {
|
|
2
|
+
uiPath: string;
|
|
3
|
+
port: number;
|
|
4
|
+
host: string;
|
|
5
|
+
workdir: string;
|
|
6
|
+
password: string | null;
|
|
7
|
+
showPassword: boolean;
|
|
8
|
+
defaultBranch: string | null;
|
|
9
|
+
defaultBranches: Record<string, string> | null;
|
|
10
|
+
cookieSecure: string;
|
|
11
|
+
codexCommand: string | null;
|
|
12
|
+
claudeCommand: string | null;
|
|
13
|
+
cursorCommand: string | null;
|
|
14
|
+
ideCommand: string | null;
|
|
15
|
+
vscodeCommand: string | null;
|
|
16
|
+
ngrokApiKey: string | null;
|
|
17
|
+
ngrokDomain: string | null;
|
|
18
|
+
automationApiKey: string | null;
|
|
19
|
+
openaiApiKey: string | null;
|
|
20
|
+
branchNameLlm: string | null;
|
|
21
|
+
planLlm: string | null;
|
|
22
|
+
terminalSessionMode: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function startAppServer(config: ServerConfig): Promise<void>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=server-starter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-starter.d.ts","sourceRoot":"","sources":["../../src/cli/server-starter.ts"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsExE"}
|