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 @@
|
|
|
1
|
+
{"version":3,"file":"branch-name.js","sourceRoot":"","sources":["../../src/core/branch-name.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface DefaultBranchOptions {
|
|
2
|
+
remote?: string;
|
|
3
|
+
override?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface DefaultBranchConfig {
|
|
6
|
+
global?: string;
|
|
7
|
+
overrides?: Record<string, string>;
|
|
8
|
+
repositories?: Record<string, string>;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveDefaultBranch(repositoryPath: string, { remote, override }?: DefaultBranchOptions): Promise<string>;
|
|
11
|
+
export declare function selectDefaultBranchOverride(config: DefaultBranchConfig | unknown, org: string, repo: string): string | undefined;
|
|
12
|
+
//# sourceMappingURL=default-branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-branch.d.ts","sourceRoot":"","sources":["../../src/core/default-branch.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAWD,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,EAAE,MAAiB,EAAE,QAAQ,EAAE,GAAE,oBAAyB,GACzD,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,mBAAmB,GAAG,OAAO,EACrC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CA+BpB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { promisify } from 'node:util';
|
|
2
|
+
import * as childProcess from 'node:child_process';
|
|
3
|
+
const execFileAsync = promisify(childProcess.execFile);
|
|
4
|
+
function parseRef(value) {
|
|
5
|
+
if (!value || typeof value !== 'string') {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const trimmed = value.trim();
|
|
9
|
+
const match = trimmed.match(/refs\/heads\/(.+)$/);
|
|
10
|
+
return match ? match[1] : trimmed || null;
|
|
11
|
+
}
|
|
12
|
+
export async function resolveDefaultBranch(repositoryPath, { remote = 'origin', override } = {}) {
|
|
13
|
+
if (override && typeof override === 'string' && override.trim()) {
|
|
14
|
+
return override.trim();
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const { stdout } = await execFileAsync('git', ['-C', repositoryPath, 'symbolic-ref', 'HEAD'], {
|
|
18
|
+
maxBuffer: 1024 * 1024,
|
|
19
|
+
});
|
|
20
|
+
const headBranch = parseRef(stdout);
|
|
21
|
+
if (headBranch) {
|
|
22
|
+
return headBranch;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// fall through to remote inspection
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const { stdout } = await execFileAsync('git', ['remote', 'show', remote], {
|
|
30
|
+
cwd: repositoryPath,
|
|
31
|
+
maxBuffer: 1024 * 1024,
|
|
32
|
+
});
|
|
33
|
+
const lines = stdout.split('\n');
|
|
34
|
+
for (const line of lines) {
|
|
35
|
+
const trimmed = line.trim();
|
|
36
|
+
if (!trimmed.toLowerCase().startsWith('head branch:')) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const branch = trimmed.slice('head branch:'.length).trim();
|
|
40
|
+
if (branch && branch.toLowerCase() !== '(unknown)') {
|
|
41
|
+
return branch;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// fall through
|
|
47
|
+
}
|
|
48
|
+
return 'main';
|
|
49
|
+
}
|
|
50
|
+
export function selectDefaultBranchOverride(config, org, repo) {
|
|
51
|
+
if (!config) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const cfg = config;
|
|
55
|
+
const { overrides, repositories, global } = cfg;
|
|
56
|
+
// Try repository-specific override first
|
|
57
|
+
if (repositories && typeof repositories === 'object') {
|
|
58
|
+
const key = `${org}/${repo}`;
|
|
59
|
+
const value = repositories[key];
|
|
60
|
+
if (typeof value === 'string' && value.trim()) {
|
|
61
|
+
return value.trim();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Try legacy overrides format
|
|
65
|
+
if (overrides && typeof overrides === 'object') {
|
|
66
|
+
const key = `${org}/${repo}`;
|
|
67
|
+
const value = overrides[key];
|
|
68
|
+
if (typeof value === 'string' && value.trim()) {
|
|
69
|
+
return value.trim();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Fall back to global default
|
|
73
|
+
if (typeof global === 'string' && global.trim()) {
|
|
74
|
+
return global.trim();
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=default-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-branch.js","sourceRoot":"","sources":["../../src/core/default-branch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
type EventCallback = (data: unknown) => void;
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to an event
|
|
4
|
+
* @param event - Event name
|
|
5
|
+
* @param callback - Callback function
|
|
6
|
+
* @returns Unsubscribe function
|
|
7
|
+
*/
|
|
8
|
+
export declare function on(event: string, callback: EventCallback): () => void;
|
|
9
|
+
/**
|
|
10
|
+
* Emits an event to all subscribers
|
|
11
|
+
* @param event - Event name
|
|
12
|
+
* @param data - Event data
|
|
13
|
+
*/
|
|
14
|
+
export declare function emit(event: string, data: unknown): void;
|
|
15
|
+
/**
|
|
16
|
+
* Event type registry for type-safe event handling
|
|
17
|
+
*/
|
|
18
|
+
export declare const EventTypes: {
|
|
19
|
+
readonly REPOS_UPDATE: "repos:update";
|
|
20
|
+
readonly SESSIONS_UPDATE: "sessions:update";
|
|
21
|
+
readonly TASKS_UPDATE: "tasks:update";
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Emits a repositories update event
|
|
25
|
+
* @param data - Repository data
|
|
26
|
+
*/
|
|
27
|
+
export declare function emitReposUpdate(data: unknown): void;
|
|
28
|
+
/**
|
|
29
|
+
* Subscribes to repository updates
|
|
30
|
+
* @param callback - Callback function
|
|
31
|
+
* @returns Unsubscribe function
|
|
32
|
+
*/
|
|
33
|
+
export declare function onReposUpdate(callback: EventCallback): () => void;
|
|
34
|
+
/**
|
|
35
|
+
* Emits a sessions update event
|
|
36
|
+
* @param data - Sessions data
|
|
37
|
+
*/
|
|
38
|
+
export declare function emitSessionsUpdate(data: unknown): void;
|
|
39
|
+
/**
|
|
40
|
+
* Subscribes to sessions updates
|
|
41
|
+
* @param callback - Callback function
|
|
42
|
+
* @returns Unsubscribe function
|
|
43
|
+
*/
|
|
44
|
+
export declare function onSessionsUpdate(callback: EventCallback): () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Emits a tasks update event
|
|
47
|
+
* @param data - Tasks data
|
|
48
|
+
*/
|
|
49
|
+
export declare function emitTasksUpdate(data: unknown): void;
|
|
50
|
+
/**
|
|
51
|
+
* Subscribes to tasks updates
|
|
52
|
+
* @param callback - Callback function
|
|
53
|
+
* @returns Unsubscribe function
|
|
54
|
+
*/
|
|
55
|
+
export declare function onTasksUpdate(callback: EventCallback): () => void;
|
|
56
|
+
/**
|
|
57
|
+
* Gets all event type constants
|
|
58
|
+
* @returns Event types object
|
|
59
|
+
*/
|
|
60
|
+
export declare function getEventTypes(): {
|
|
61
|
+
readonly REPOS_UPDATE: "repos:update";
|
|
62
|
+
readonly SESSIONS_UPDATE: "sessions:update";
|
|
63
|
+
readonly TASKS_UPDATE: "tasks:update";
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Subscribes to events (alias for on)
|
|
67
|
+
* @param event - Event name
|
|
68
|
+
* @param callback - Callback function
|
|
69
|
+
* @returns Unsubscribe function
|
|
70
|
+
*/
|
|
71
|
+
export declare function subscribeToEvents(event: string, callback: EventCallback): () => void;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAI7C;;;;;GAKG;AACH,wBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAiBrE;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAYvD;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAkBX;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAEjE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAEpE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAEjE;AAED;;;GAGG;AACH,wBAAgB,aAAa;;;;EAE5B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAEpF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
const listeners = new Map();
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to an event
|
|
4
|
+
* @param event - Event name
|
|
5
|
+
* @param callback - Callback function
|
|
6
|
+
* @returns Unsubscribe function
|
|
7
|
+
*/
|
|
8
|
+
export function on(event, callback) {
|
|
9
|
+
let callbacks = listeners.get(event);
|
|
10
|
+
if (!callbacks) {
|
|
11
|
+
callbacks = new Set();
|
|
12
|
+
listeners.set(event, callbacks);
|
|
13
|
+
}
|
|
14
|
+
callbacks.add(callback);
|
|
15
|
+
return () => {
|
|
16
|
+
const cbs = listeners.get(event);
|
|
17
|
+
if (cbs) {
|
|
18
|
+
cbs.delete(callback);
|
|
19
|
+
if (cbs.size === 0) {
|
|
20
|
+
listeners.delete(event);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Emits an event to all subscribers
|
|
27
|
+
* @param event - Event name
|
|
28
|
+
* @param data - Event data
|
|
29
|
+
*/
|
|
30
|
+
export function emit(event, data) {
|
|
31
|
+
const callbacks = listeners.get(event);
|
|
32
|
+
if (!callbacks) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
callbacks.forEach((callback) => {
|
|
36
|
+
try {
|
|
37
|
+
callback(data);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error(`[agentrix] Event handler error for ${event}:`, error);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Event type registry for type-safe event handling
|
|
46
|
+
*/
|
|
47
|
+
export const EventTypes = {
|
|
48
|
+
REPOS_UPDATE: 'repos:update',
|
|
49
|
+
SESSIONS_UPDATE: 'sessions:update',
|
|
50
|
+
TASKS_UPDATE: 'tasks:update',
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Generic helper to create typed emit/subscribe pairs
|
|
54
|
+
* @param eventName - Event name
|
|
55
|
+
* @returns Object with emit and subscribe functions
|
|
56
|
+
*/
|
|
57
|
+
function createEventPair(eventName) {
|
|
58
|
+
return {
|
|
59
|
+
emit: (data) => emit(eventName, data),
|
|
60
|
+
subscribe: (callback) => on(eventName, callback),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const reposUpdateEvent = createEventPair(EventTypes.REPOS_UPDATE);
|
|
64
|
+
const sessionsUpdateEvent = createEventPair(EventTypes.SESSIONS_UPDATE);
|
|
65
|
+
const tasksUpdateEvent = createEventPair(EventTypes.TASKS_UPDATE);
|
|
66
|
+
/**
|
|
67
|
+
* Emits a repositories update event
|
|
68
|
+
* @param data - Repository data
|
|
69
|
+
*/
|
|
70
|
+
export function emitReposUpdate(data) {
|
|
71
|
+
reposUpdateEvent.emit(data);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Subscribes to repository updates
|
|
75
|
+
* @param callback - Callback function
|
|
76
|
+
* @returns Unsubscribe function
|
|
77
|
+
*/
|
|
78
|
+
export function onReposUpdate(callback) {
|
|
79
|
+
return reposUpdateEvent.subscribe(callback);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Emits a sessions update event
|
|
83
|
+
* @param data - Sessions data
|
|
84
|
+
*/
|
|
85
|
+
export function emitSessionsUpdate(data) {
|
|
86
|
+
sessionsUpdateEvent.emit(data);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Subscribes to sessions updates
|
|
90
|
+
* @param callback - Callback function
|
|
91
|
+
* @returns Unsubscribe function
|
|
92
|
+
*/
|
|
93
|
+
export function onSessionsUpdate(callback) {
|
|
94
|
+
return sessionsUpdateEvent.subscribe(callback);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Emits a tasks update event
|
|
98
|
+
* @param data - Tasks data
|
|
99
|
+
*/
|
|
100
|
+
export function emitTasksUpdate(data) {
|
|
101
|
+
tasksUpdateEvent.emit(data);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Subscribes to tasks updates
|
|
105
|
+
* @param callback - Callback function
|
|
106
|
+
* @returns Unsubscribe function
|
|
107
|
+
*/
|
|
108
|
+
export function onTasksUpdate(callback) {
|
|
109
|
+
return tasksUpdateEvent.subscribe(callback);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets all event type constants
|
|
113
|
+
* @returns Event types object
|
|
114
|
+
*/
|
|
115
|
+
export function getEventTypes() {
|
|
116
|
+
return EventTypes;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Subscribes to events (alias for on)
|
|
120
|
+
* @param event - Event name
|
|
121
|
+
* @param callback - Callback function
|
|
122
|
+
* @returns Unsubscribe function
|
|
123
|
+
*/
|
|
124
|
+
export function subscribeToEvents(event, callback) {
|
|
125
|
+
return on(event, callback);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated This file now re-exports from the repositories layer for backward compatibility.
|
|
3
|
+
* New code should import directly from src/repositories/ or src/domain/
|
|
4
|
+
*/
|
|
5
|
+
export { parseRepositoryUrl, normalizeBranchName, deriveWorktreeFolderName, } from '../domain/index.js';
|
|
6
|
+
export type { GitUrlParts } from '../domain/index.js';
|
|
7
|
+
export { GitWorktreeError, listWorktrees, countLocalWorktrees, createWorktree, getWorktreePath, removeWorktree, } from '../repositories/worktree-repository.js';
|
|
8
|
+
export type { WorktreeEntry, CreateWorktreeOptions, WorktreePathResult, InitCommandResult, } from '../repositories/worktree-repository.js';
|
|
9
|
+
export { ensureRepository, cloneRepository, discoverRepositories, } from '../repositories/repository-repository.js';
|
|
10
|
+
export type { RepositoryPaths, CloneResult, CloneOptions, RepositoriesMap, } from '../repositories/repository-repository.js';
|
|
11
|
+
export { getWorktreeStatus, getWorktreeFileDiff, } from '../repositories/git-status-repository.js';
|
|
12
|
+
export { normalizeBranchName as normaliseBranchName } from '../domain/index.js';
|
|
13
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/core/git.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated This file now re-exports from the repositories layer for backward compatibility.
|
|
3
|
+
* New code should import directly from src/repositories/ or src/domain/
|
|
4
|
+
*/
|
|
5
|
+
// Re-export from domain layer
|
|
6
|
+
export { parseRepositoryUrl, normalizeBranchName, deriveWorktreeFolderName, } from '../domain/index.js';
|
|
7
|
+
// Re-export from worktree repository
|
|
8
|
+
export { GitWorktreeError, listWorktrees, countLocalWorktrees, createWorktree, getWorktreePath, removeWorktree, } from '../repositories/worktree-repository.js';
|
|
9
|
+
// Re-export from repository repository
|
|
10
|
+
export { ensureRepository, cloneRepository, discoverRepositories, } from '../repositories/repository-repository.js';
|
|
11
|
+
// Re-export from git status repository
|
|
12
|
+
export { getWorktreeStatus, getWorktreeFileDiff, } from '../repositories/git-status-repository.js';
|
|
13
|
+
// Legacy alias for backward compatibility
|
|
14
|
+
export { normalizeBranchName as normaliseBranchName } from '../domain/index.js';
|
|
15
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8BAA8B;AAC9B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,qCAAqC;AACrC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,wCAAwC,CAAC;AAQhD,uCAAuC;AACvC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,0CAA0C,CAAC;AAQlD,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAElD,0CAA0C;AAC1C,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function createGithubClient({ timeoutMs }?: {
|
|
2
|
+
timeoutMs?: number;
|
|
3
|
+
}): {
|
|
4
|
+
countOpenPullRequests: (org: string, repo: string) => Promise<number>;
|
|
5
|
+
countOpenIssues: (org: string, repo: string) => Promise<number>;
|
|
6
|
+
countRunningWorkflows: (org: string, repo: string) => Promise<number>;
|
|
7
|
+
listOpenIssues: (org: string, repo: string) => Promise<unknown[]>;
|
|
8
|
+
getIssue: (org: string, repo: string, issueNumber: number | string) => Promise<Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/core/github.ts"],"names":[],"mappings":"AA+EA,wBAAgB,kBAAkB,CAAC,EAAE,SAA8B,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO;iCACtD,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;2BAS5C,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;iCAShC,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;0BA0B7C,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAAC;oBAwD/C,MAAM,QAAQ,MAAM,eAAe,MAAM,GAAG,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EA0GnH"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
5
|
+
const DEFAULT_MAX_BUFFER = 1024 * 1024;
|
|
6
|
+
function createGithubError(message, cause) {
|
|
7
|
+
const error = new Error(message);
|
|
8
|
+
if (cause) {
|
|
9
|
+
error.cause = cause;
|
|
10
|
+
}
|
|
11
|
+
return error;
|
|
12
|
+
}
|
|
13
|
+
function normaliseRepo(org, repo) {
|
|
14
|
+
const trimmedOrg = typeof org === 'string' ? org.trim() : '';
|
|
15
|
+
const trimmedRepo = typeof repo === 'string' ? repo.trim() : '';
|
|
16
|
+
if (!trimmedOrg || !trimmedRepo) {
|
|
17
|
+
throw createGithubError('Organisation and repository are required');
|
|
18
|
+
}
|
|
19
|
+
return { repoSlug: `${trimmedOrg}/${trimmedRepo}`, org: trimmedOrg, repo: trimmedRepo };
|
|
20
|
+
}
|
|
21
|
+
function parseJsonArray(payload, contextMessage) {
|
|
22
|
+
const text = typeof payload === 'string' ? payload.trim() : '';
|
|
23
|
+
if (!text) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const data = JSON.parse(text);
|
|
28
|
+
if (Array.isArray(data)) {
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
throw createGithubError(contextMessage, error);
|
|
34
|
+
}
|
|
35
|
+
throw createGithubError(contextMessage);
|
|
36
|
+
}
|
|
37
|
+
function parseJsonObject(payload, contextMessage) {
|
|
38
|
+
const text = typeof payload === 'string' ? payload.trim() : '';
|
|
39
|
+
if (!text) {
|
|
40
|
+
throw createGithubError(contextMessage);
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const data = JSON.parse(text);
|
|
44
|
+
if (data && typeof data === 'object' && !Array.isArray(data)) {
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
throw createGithubError(contextMessage, error);
|
|
50
|
+
}
|
|
51
|
+
throw createGithubError(contextMessage);
|
|
52
|
+
}
|
|
53
|
+
async function runGh(args, { timeoutMs = DEFAULT_TIMEOUT_MS } = {}) {
|
|
54
|
+
try {
|
|
55
|
+
const { stdout } = await execFileAsync('gh', args, {
|
|
56
|
+
timeout: timeoutMs,
|
|
57
|
+
maxBuffer: DEFAULT_MAX_BUFFER,
|
|
58
|
+
});
|
|
59
|
+
return typeof stdout === 'string' ? stdout : '';
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
const err = error;
|
|
63
|
+
if (err?.code === 'ENOENT') {
|
|
64
|
+
throw createGithubError('GitHub CLI (gh) is not installed or not available on PATH', error);
|
|
65
|
+
}
|
|
66
|
+
if (err?.code === 'ETIMEDOUT' || err?.signal === 'SIGTERM' || err?.killed) {
|
|
67
|
+
throw createGithubError('GitHub CLI command timed out', error);
|
|
68
|
+
}
|
|
69
|
+
const stderr = typeof err?.stderr === 'string' ? err.stderr.trim() : '';
|
|
70
|
+
const stdout = typeof err?.stdout === 'string' ? err.stdout.trim() : '';
|
|
71
|
+
const message = stderr || stdout || err?.message || 'GitHub CLI command failed';
|
|
72
|
+
throw createGithubError(message, error);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function createGithubClient({ timeoutMs = DEFAULT_TIMEOUT_MS } = {}) {
|
|
76
|
+
async function countOpenPullRequests(org, repo) {
|
|
77
|
+
const { repoSlug } = normaliseRepo(org, repo);
|
|
78
|
+
const stdout = await runGh(['pr', 'list', '--repo', repoSlug, '--state', 'open', '--json', 'number', '--limit', '100'], { timeoutMs });
|
|
79
|
+
return parseJsonArray(stdout, 'Unexpected response when listing pull requests').length;
|
|
80
|
+
}
|
|
81
|
+
async function countOpenIssues(org, repo) {
|
|
82
|
+
const { repoSlug } = normaliseRepo(org, repo);
|
|
83
|
+
const stdout = await runGh(['issue', 'list', '--repo', repoSlug, '--state', 'open', '--json', 'number', '--limit', '100'], { timeoutMs });
|
|
84
|
+
return parseJsonArray(stdout, 'Unexpected response when listing issues').length;
|
|
85
|
+
}
|
|
86
|
+
async function countRunningWorkflows(org, repo) {
|
|
87
|
+
const { repoSlug } = normaliseRepo(org, repo);
|
|
88
|
+
const statuses = ['in_progress', 'queued'];
|
|
89
|
+
const results = await Promise.all(statuses.map(async (status) => {
|
|
90
|
+
const stdout = await runGh([
|
|
91
|
+
'run',
|
|
92
|
+
'list',
|
|
93
|
+
'--repo',
|
|
94
|
+
repoSlug,
|
|
95
|
+
'--status',
|
|
96
|
+
status,
|
|
97
|
+
'--json',
|
|
98
|
+
'databaseId,status,workflowName',
|
|
99
|
+
'--limit',
|
|
100
|
+
'100',
|
|
101
|
+
], { timeoutMs });
|
|
102
|
+
return parseJsonArray(stdout, 'Unexpected response when listing workflow runs').length;
|
|
103
|
+
}));
|
|
104
|
+
return results.reduce((total, value) => total + value, 0);
|
|
105
|
+
}
|
|
106
|
+
async function listOpenIssues(org, repo) {
|
|
107
|
+
const { repoSlug } = normaliseRepo(org, repo);
|
|
108
|
+
const stdout = await runGh([
|
|
109
|
+
'issue',
|
|
110
|
+
'list',
|
|
111
|
+
'--repo',
|
|
112
|
+
repoSlug,
|
|
113
|
+
'--state',
|
|
114
|
+
'open',
|
|
115
|
+
'--json',
|
|
116
|
+
'number,title,labels,createdAt,url',
|
|
117
|
+
'--limit',
|
|
118
|
+
'200',
|
|
119
|
+
], { timeoutMs });
|
|
120
|
+
const issues = parseJsonArray(stdout, 'Unexpected response when listing issues');
|
|
121
|
+
return issues
|
|
122
|
+
.map((issue) => {
|
|
123
|
+
const issueRecord = issue;
|
|
124
|
+
const number = typeof issueRecord['number'] === 'number' ? issueRecord['number'] : null;
|
|
125
|
+
if (number === null) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const title = typeof issueRecord['title'] === 'string' ? issueRecord['title'] : '';
|
|
129
|
+
const createdAtValue = typeof issueRecord['createdAt'] === 'string' ? issueRecord['createdAt'] : null;
|
|
130
|
+
let createdAt = null;
|
|
131
|
+
if (createdAtValue) {
|
|
132
|
+
const parsedDate = new Date(createdAtValue);
|
|
133
|
+
if (!Number.isNaN(parsedDate.getTime())) {
|
|
134
|
+
createdAt = parsedDate.toISOString();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const labels = Array.isArray(issueRecord['labels'])
|
|
138
|
+
? issueRecord['labels']
|
|
139
|
+
.map((label) => {
|
|
140
|
+
const labelRecord = label;
|
|
141
|
+
return labelRecord && typeof labelRecord['name'] === 'string' ? labelRecord['name'] : null;
|
|
142
|
+
})
|
|
143
|
+
.filter(Boolean)
|
|
144
|
+
: [];
|
|
145
|
+
const url = typeof issueRecord['url'] === 'string' && issueRecord['url']
|
|
146
|
+
? issueRecord['url']
|
|
147
|
+
: `https://github.com/${repoSlug}/issues/${number}`;
|
|
148
|
+
return {
|
|
149
|
+
number,
|
|
150
|
+
title,
|
|
151
|
+
createdAt,
|
|
152
|
+
labels,
|
|
153
|
+
url,
|
|
154
|
+
};
|
|
155
|
+
})
|
|
156
|
+
.filter(Boolean);
|
|
157
|
+
}
|
|
158
|
+
async function getIssue(org, repo, issueNumber) {
|
|
159
|
+
const { repoSlug } = normaliseRepo(org, repo);
|
|
160
|
+
const parsedNumber = typeof issueNumber === 'number'
|
|
161
|
+
? issueNumber
|
|
162
|
+
: Number.parseInt(typeof issueNumber === 'string' ? issueNumber.trim() : '', 10);
|
|
163
|
+
if (!Number.isInteger(parsedNumber) || parsedNumber <= 0) {
|
|
164
|
+
throw createGithubError('Issue number must be a positive integer');
|
|
165
|
+
}
|
|
166
|
+
const stdout = await runGh([
|
|
167
|
+
'issue',
|
|
168
|
+
'view',
|
|
169
|
+
String(parsedNumber),
|
|
170
|
+
'--repo',
|
|
171
|
+
repoSlug,
|
|
172
|
+
'--json',
|
|
173
|
+
'number,title,body,author,createdAt,updatedAt,labels,url,state',
|
|
174
|
+
], { timeoutMs });
|
|
175
|
+
const issue = parseJsonObject(stdout, 'Unexpected response when reading issue details');
|
|
176
|
+
const title = typeof issue?.["title"] === 'string' ? issue["title"] : '';
|
|
177
|
+
const body = typeof issue?.["body"] === 'string' ? issue["body"] : '';
|
|
178
|
+
const createdAtValue = typeof issue?.["createdAt"] === 'string' ? issue["createdAt"] : null;
|
|
179
|
+
const updatedAtValue = typeof issue?.["updatedAt"] === 'string' ? issue["updatedAt"] : null;
|
|
180
|
+
function normaliseDate(value) {
|
|
181
|
+
if (!value) {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
const parsed = new Date(String(value));
|
|
185
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
return parsed.toISOString();
|
|
189
|
+
}
|
|
190
|
+
const authorData = issue && typeof issue?.["author"] === 'object' && issue["author"] !== null ? issue["author"] : null;
|
|
191
|
+
let author = null;
|
|
192
|
+
if (authorData) {
|
|
193
|
+
const authorRecord = authorData;
|
|
194
|
+
const login = typeof authorRecord['login'] === 'string' && authorRecord['login'] ? authorRecord['login'] : null;
|
|
195
|
+
const name = typeof authorRecord['name'] === 'string' && authorRecord['name'] ? authorRecord['name'] : null;
|
|
196
|
+
const profileUrl = typeof authorRecord['url'] === 'string' && authorRecord['url'] ? authorRecord['url'] : null;
|
|
197
|
+
const avatarUrl = typeof authorRecord['avatarUrl'] === 'string' && authorRecord['avatarUrl'] ? authorRecord['avatarUrl'] : null;
|
|
198
|
+
if (login || name || profileUrl || avatarUrl) {
|
|
199
|
+
author = {
|
|
200
|
+
login,
|
|
201
|
+
name,
|
|
202
|
+
url: profileUrl,
|
|
203
|
+
avatarUrl,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const labels = Array.isArray(issue?.["labels"])
|
|
208
|
+
? issue["labels"]
|
|
209
|
+
.map((label) => {
|
|
210
|
+
const labelRecord = label;
|
|
211
|
+
if (!labelRecord || typeof labelRecord['name'] !== 'string' || !labelRecord['name']) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
const color = typeof labelRecord['color'] === 'string' && labelRecord['color'] ? labelRecord['color'] : null;
|
|
215
|
+
return { name: labelRecord['name'], color };
|
|
216
|
+
})
|
|
217
|
+
.filter(Boolean)
|
|
218
|
+
: [];
|
|
219
|
+
const url = typeof issue?.["url"] === 'string' && issue["url"]
|
|
220
|
+
? issue["url"]
|
|
221
|
+
: `https://github.com/${repoSlug}/issues/${parsedNumber}`;
|
|
222
|
+
const state = typeof issue?.["state"] === 'string' && issue["state"]
|
|
223
|
+
? issue["state"].toLowerCase()
|
|
224
|
+
: null;
|
|
225
|
+
return {
|
|
226
|
+
number: parsedNumber,
|
|
227
|
+
title,
|
|
228
|
+
body,
|
|
229
|
+
author,
|
|
230
|
+
createdAt: normaliseDate(createdAtValue),
|
|
231
|
+
updatedAt: normaliseDate(updatedAtValue),
|
|
232
|
+
labels,
|
|
233
|
+
url,
|
|
234
|
+
state,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
countOpenPullRequests,
|
|
239
|
+
countOpenIssues,
|
|
240
|
+
countRunningWorkflows,
|
|
241
|
+
listOpenIssues,
|
|
242
|
+
getIssue,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=github.js.map
|