agentrix 0.0.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/api/auth.d.ts +11 -0
  2. package/dist/api/auth.d.ts.map +1 -1
  3. package/dist/api/auth.js +18 -3
  4. package/dist/api/auth.js.map +1 -1
  5. package/dist/api/automation.d.ts +27 -2
  6. package/dist/api/automation.d.ts.map +1 -1
  7. package/dist/api/automation.js +43 -15
  8. package/dist/api/automation.js.map +1 -1
  9. package/dist/api/base-handler.d.ts +9 -0
  10. package/dist/api/base-handler.d.ts.map +1 -1
  11. package/dist/api/base-handler.js +14 -12
  12. package/dist/api/base-handler.js.map +1 -1
  13. package/dist/api/create-plan.d.ts +11 -0
  14. package/dist/api/create-plan.d.ts.map +1 -1
  15. package/dist/api/create-plan.js +25 -10
  16. package/dist/api/create-plan.js.map +1 -1
  17. package/dist/api/git-status.d.ts +12 -0
  18. package/dist/api/git-status.d.ts.map +1 -1
  19. package/dist/api/git-status.js +20 -4
  20. package/dist/api/git-status.js.map +1 -1
  21. package/dist/api/plans.d.ts +18 -0
  22. package/dist/api/plans.d.ts.map +1 -1
  23. package/dist/api/plans.js +33 -14
  24. package/dist/api/plans.js.map +1 -1
  25. package/dist/api/repo-dashboard.d.ts.map +1 -1
  26. package/dist/api/repo-dashboard.js +4 -5
  27. package/dist/api/repo-dashboard.js.map +1 -1
  28. package/dist/api/repo-issue.d.ts.map +1 -1
  29. package/dist/api/repo-issue.js +6 -9
  30. package/dist/api/repo-issue.js.map +1 -1
  31. package/dist/api/repos.d.ts +5 -1
  32. package/dist/api/repos.d.ts.map +1 -1
  33. package/dist/api/repos.js +2 -2
  34. package/dist/api/repos.js.map +1 -1
  35. package/dist/api/sessions.d.ts +5 -1
  36. package/dist/api/sessions.d.ts.map +1 -1
  37. package/dist/api/sessions.js +2 -2
  38. package/dist/api/sessions.js.map +1 -1
  39. package/dist/api/tasks.d.ts +6 -1
  40. package/dist/api/tasks.d.ts.map +1 -1
  41. package/dist/api/tasks.js +7 -3
  42. package/dist/api/tasks.js.map +1 -1
  43. package/dist/api/terminal.d.ts +5 -2
  44. package/dist/api/terminal.d.ts.map +1 -1
  45. package/dist/api/terminal.js +2 -1
  46. package/dist/api/terminal.js.map +1 -1
  47. package/dist/api/worktrees.d.ts +5 -1
  48. package/dist/api/worktrees.d.ts.map +1 -1
  49. package/dist/api/worktrees.js +2 -2
  50. package/dist/api/worktrees.js.map +1 -1
  51. package/dist/cli/plans-command.d.ts +9 -0
  52. package/dist/cli/plans-command.d.ts.map +1 -1
  53. package/dist/cli/plans-command.js +17 -4
  54. package/dist/cli/plans-command.js.map +1 -1
  55. package/dist/cli/server-starter.d.ts +6 -0
  56. package/dist/cli/server-starter.d.ts.map +1 -1
  57. package/dist/cli/server-starter.js +14 -2
  58. package/dist/cli/server-starter.js.map +1 -1
  59. package/dist/core/agents.d.ts +11 -0
  60. package/dist/core/agents.d.ts.map +1 -1
  61. package/dist/core/agents.js +22 -8
  62. package/dist/core/agents.js.map +1 -1
  63. package/dist/core/auth.d.ts +10 -0
  64. package/dist/core/auth.d.ts.map +1 -1
  65. package/dist/core/auth.js +18 -4
  66. package/dist/core/auth.js.map +1 -1
  67. package/dist/core/branch-name.d.ts +10 -0
  68. package/dist/core/branch-name.d.ts.map +1 -1
  69. package/dist/core/branch-name.js +19 -6
  70. package/dist/core/branch-name.js.map +1 -1
  71. package/dist/core/plan-storage.js +2 -2
  72. package/dist/core/plan-storage.js.map +1 -1
  73. package/dist/repositories/git-repository.d.ts +6 -0
  74. package/dist/repositories/git-repository.d.ts.map +1 -1
  75. package/dist/repositories/git-repository.js +9 -1
  76. package/dist/repositories/git-repository.js.map +1 -1
  77. package/dist/repositories/repository-repository.d.ts +13 -0
  78. package/dist/repositories/repository-repository.d.ts.map +1 -1
  79. package/dist/repositories/repository-repository.js +29 -7
  80. package/dist/repositories/repository-repository.js.map +1 -1
  81. package/dist/repositories/worktree-repository.d.ts +11 -0
  82. package/dist/repositories/worktree-repository.d.ts.map +1 -1
  83. package/dist/repositories/worktree-repository.js +8 -1
  84. package/dist/repositories/worktree-repository.js.map +1 -1
  85. package/dist/services/repository-service.d.ts +14 -0
  86. package/dist/services/repository-service.d.ts.map +1 -1
  87. package/dist/services/repository-service.js +36 -8
  88. package/dist/services/repository-service.js.map +1 -1
  89. package/dist/services/session-service.d.ts +15 -0
  90. package/dist/services/session-service.d.ts.map +1 -1
  91. package/dist/services/session-service.js +38 -8
  92. package/dist/services/session-service.js.map +1 -1
  93. package/dist/services/terminal-service.d.ts +10 -0
  94. package/dist/services/terminal-service.d.ts.map +1 -1
  95. package/dist/services/terminal-service.js +30 -6
  96. package/dist/services/terminal-service.js.map +1 -1
  97. package/dist/utils/repository-cache.d.ts +11 -0
  98. package/dist/utils/repository-cache.d.ts.map +1 -1
  99. package/dist/utils/repository-cache.js +17 -2
  100. package/dist/utils/repository-cache.js.map +1 -1
  101. package/package.json +5 -3
  102. package/ui/dist/assets/{index-BI2EZLfU.js → index-Df_Dnr2P.js} +149 -134
  103. package/ui/dist/assets/index-Dq7NgFme.css +41 -0
  104. package/ui/dist/index.html +2 -2
  105. package/ui/dist/assets/index-CwB7gOl4.css +0 -41
@@ -1,5 +1,15 @@
1
+ import { sendJson } from '../utils/http.js';
2
+ import { createAuthService } from '../services/index.js';
1
3
  import type { RequestContext } from '../types/http.js';
2
4
  import type { AuthManager, CookieManager } from '../types/auth.js';
5
+ interface AuthDependencies {
6
+ createAuthService: typeof createAuthService;
7
+ sendJson: typeof sendJson;
8
+ }
9
+ /**
10
+ * @internal Test hook to override auth handler dependencies
11
+ */
12
+ export declare function __setAuthTestOverrides(overrides?: Partial<AuthDependencies>): void;
3
13
  export declare function createAuthHandlers(authManager: AuthManager, { cookieManager }?: {
4
14
  cookieManager?: CookieManager;
5
15
  }): {
@@ -7,4 +17,5 @@ export declare function createAuthHandlers(authManager: AuthManager, { cookieMan
7
17
  logout: (context: RequestContext) => Promise<void>;
8
18
  status: (context: RequestContext) => Promise<void>;
9
19
  };
20
+ export {};
10
21
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEnE,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,EAAE,aAAa,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,aAAa,CAAA;CAAO;;;;EAiC1D"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEnE,UAAU,gBAAgB;IACxB,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,QAAQ,EAAE,OAAO,QAAQ,CAAC;CAC3B;AASD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAMlF;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,EAAE,aAAa,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,aAAa,CAAA;CAAO;;;;EA+B1D"}
package/dist/api/auth.js CHANGED
@@ -2,21 +2,36 @@ import { sendJson } from '../utils/http.js';
2
2
  import { createAuthService } from '../services/index.js';
3
3
  import { asyncHandler } from '../infrastructure/errors/index.js';
4
4
  import { createSimpleHandler } from './base-handler.js';
5
+ const defaultDependencies = {
6
+ createAuthService,
7
+ sendJson,
8
+ };
9
+ let activeDependencies = { ...defaultDependencies };
10
+ /**
11
+ * @internal Test hook to override auth handler dependencies
12
+ */
13
+ export function __setAuthTestOverrides(overrides) {
14
+ if (!overrides) {
15
+ activeDependencies = { ...defaultDependencies };
16
+ return;
17
+ }
18
+ activeDependencies = { ...activeDependencies, ...overrides };
19
+ }
5
20
  export function createAuthHandlers(authManager, { cookieManager } = {}) {
6
- const authService = createAuthService(authManager, cookieManager);
21
+ const authService = activeDependencies.createAuthService(authManager, cookieManager);
7
22
  // Login requires special error handling for status codes
8
23
  const login = asyncHandler(async (context) => {
9
24
  const payload = await context.readJsonBody();
10
25
  const password = typeof payload['password'] === 'string' ? payload['password'].trim() : '';
11
26
  try {
12
27
  const result = await authService.login(context.req, context.res, password);
13
- sendJson(context.res, 200, result);
28
+ activeDependencies.sendJson(context.res, 200, result);
14
29
  }
15
30
  catch (error) {
16
31
  // Auth errors need special handling for status codes
17
32
  const err = error;
18
33
  const statusCode = err.statusCode || (err.message === 'Invalid password' ? 401 : 400);
19
- sendJson(context.res, statusCode, { error: err.message });
34
+ activeDependencies.sendJson(context.res, statusCode, { error: err.message });
20
35
  }
21
36
  });
22
37
  const logout = createSimpleHandler(async (context) => authService.logout(context.req, context.res));
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,UAAU,kBAAkB,CAChC,WAAwB,EACxB,EAAE,aAAa,KAAwC,EAAE;IAEzD,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAElE,yDAAyD;IACzD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3E,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,qDAAqD;YACrD,MAAM,GAAG,GAAG,KAAiD,CAAC;YAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtF,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,mBAAmB,CAChC,KAAK,EAAE,OAAuB,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAChF,CAAC;IAEF,MAAM,MAAM,GAAG,mBAAmB,CAChC,KAAK,EAAE,OAAuB,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CACtE,CAAC;IAEF,OAAO;QACL,KAAK;QACL,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AASxD,MAAM,mBAAmB,GAAqB;IAC5C,iBAAiB;IACjB,QAAQ;CACT,CAAC;AAEF,IAAI,kBAAkB,GAAqB,EAAE,GAAG,mBAAmB,EAAE,CAAC;AAEtE;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAqC;IAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,kBAAkB,GAAG,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IACD,kBAAkB,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,SAAS,EAAsB,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,WAAwB,EACxB,EAAE,aAAa,KAAwC,EAAE;IAEzD,MAAM,WAAW,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAErF,yDAAyD;IACzD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3E,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,qDAAqD;YACrD,MAAM,GAAG,GAAG,KAAiD,CAAC;YAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtF,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpH,MAAM,MAAM,GAAG,mBAAmB,CAChC,KAAK,EAAE,OAAuB,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CACtE,CAAC;IAEF,OAAO;QACL,KAAK;QACL,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -1,11 +1,36 @@
1
+ import { cloneRepository, createWorktree, ensureRepository, getWorktreePath } from '../core/git.js';
1
2
  import { launchAgentProcess } from '../core/agents.js';
2
3
  import { runTask } from '../core/tasks.js';
4
+ import { validateAutomationRequest } from '../core/automation/request-validation.js';
5
+ import { resolveBranchName } from '../core/automation/branch.js';
6
+ import { generatePlanText } from '../core/automation/plan.js';
7
+ import { createGitOrchestrator } from '../core/automation/git-orchestration.js';
8
+ import { runAutomationTask } from '../core/automation/task-runner.js';
9
+ import { createLogger } from '../infrastructure/logging/index.js';
3
10
  import type { Logger } from '../infrastructure/logging/index.js';
4
- declare function ensureRepositoryExists(workdir: string, org: string, repo: string): Promise<{
11
+ interface AutomationModuleDependencies {
12
+ cloneRepository: typeof cloneRepository;
13
+ ensureRepository: typeof ensureRepository;
14
+ getWorktreePath: typeof getWorktreePath;
15
+ createWorktree: typeof createWorktree;
16
+ launchAgentProcess: typeof launchAgentProcess;
17
+ runTask: typeof runTask;
18
+ validateAutomationRequest: typeof validateAutomationRequest;
19
+ resolveBranchName: typeof resolveBranchName;
20
+ generatePlanText: typeof generatePlanText;
21
+ createGitOrchestrator: typeof createGitOrchestrator;
22
+ runAutomationTask: typeof runAutomationTask;
23
+ createLogger: typeof createLogger;
24
+ }
25
+ /**
26
+ * @internal Test hook to override automation dependencies
27
+ */
28
+ export declare function __setAutomationTestOverrides(overrides?: Partial<AutomationModuleDependencies>): void;
29
+ export declare function ensureRepositoryExists(workdir: string, org: string, repo: string): Promise<{
5
30
  repositoryPath: string;
6
31
  cloned: boolean;
7
32
  }>;
8
- declare function ensureWorktreeExists(workdir: string, org: string, repo: string, branch: string, options?: unknown): Promise<{
33
+ export declare function ensureWorktreeExists(workdir: string, org: string, repo: string, branch: string, options?: unknown): Promise<{
9
34
  worktreePath: string;
10
35
  created: boolean;
11
36
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"automation.d.ts","sourceRoot":"","sources":["../../src/api/automation.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAW3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,iBAAe,sBAAsB,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CActD;AAED,iBAAe,oBAAoB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAarD;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAajC,CAAC;AAEF,wBAAgB,0BAA0B,SAOzC;AAeD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,8BAA8B;IAC7C,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,OAAO,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;CAChC;AAED,wBAAgB,wBAAwB,CACtC,EACE,OAAO,EACP,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,eAAe,GAChB,EAAE,wBAAwB,EAC3B,EACE,sBAAsB,EAAE,gBAAyC,EACjE,oBAAoB,EAAE,cAAqC,EAC3D,kBAAkB,EAAE,WAAgC,EACpD,WAAqB,EACrB,GAAsB,EACtB,eAAoC,GACrC,GAAE,8BAAmC;sBASP;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,KAAG,OAAO,CAAC,IAAI,CAAC;EAoHpH"}
1
+ {"version":3,"file":"automation.d.ts","sourceRoot":"","sources":["../../src/api/automation.ts"],"names":[],"mappings":"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"}
@@ -9,32 +9,60 @@ import { generatePlanText } from '../core/automation/plan.js';
9
9
  import { createGitOrchestrator } from '../core/automation/git-orchestration.js';
10
10
  import { runAutomationTask } from '../core/automation/task-runner.js';
11
11
  import { createLogger } from '../infrastructure/logging/index.js';
12
- async function ensureRepositoryExists(workdir, org, repo) {
12
+ const defaultAutomationDependencies = {
13
+ cloneRepository,
14
+ ensureRepository,
15
+ getWorktreePath,
16
+ createWorktree,
17
+ launchAgentProcess,
18
+ runTask,
19
+ validateAutomationRequest,
20
+ resolveBranchName,
21
+ generatePlanText,
22
+ createGitOrchestrator,
23
+ runAutomationTask,
24
+ createLogger,
25
+ };
26
+ let activeAutomationDependencies = { ...defaultAutomationDependencies };
27
+ /**
28
+ * @internal Test hook to override automation dependencies
29
+ */
30
+ export function __setAutomationTestOverrides(overrides) {
31
+ if (!overrides) {
32
+ activeAutomationDependencies = { ...defaultAutomationDependencies };
33
+ return;
34
+ }
35
+ activeAutomationDependencies = {
36
+ ...activeAutomationDependencies,
37
+ ...overrides,
38
+ };
39
+ }
40
+ export async function ensureRepositoryExists(workdir, org, repo) {
13
41
  try {
14
- const { repositoryPath } = await ensureRepository(workdir, org, repo);
42
+ const { repositoryPath } = await activeAutomationDependencies.ensureRepository(workdir, org, repo);
15
43
  return { repositoryPath, cloned: false };
16
44
  }
17
45
  catch (error) {
18
46
  const err = error;
19
47
  if (err && /Repository not found/i.test(err.message || '')) {
20
48
  const remote = `git@github.com:${org}/${repo}.git`;
21
- await cloneRepository(workdir, remote);
22
- const { repositoryPath } = await ensureRepository(workdir, org, repo);
49
+ await activeAutomationDependencies.cloneRepository(workdir, remote);
50
+ const { repositoryPath } = await activeAutomationDependencies.ensureRepository(workdir, org, repo);
23
51
  return { repositoryPath, cloned: true };
24
52
  }
25
53
  throw error;
26
54
  }
27
55
  }
28
- async function ensureWorktreeExists(workdir, org, repo, branch, options = {}) {
56
+ export async function ensureWorktreeExists(workdir, org, repo, branch, options = {}) {
29
57
  try {
30
- const { worktreePath } = await getWorktreePath(workdir, org, repo, branch);
58
+ const { worktreePath } = await activeAutomationDependencies.getWorktreePath(workdir, org, repo, branch);
31
59
  return { worktreePath, created: false };
32
60
  }
33
61
  catch (error) {
34
62
  const err = error;
35
63
  if (err && /worktree .* not found/i.test(err.message || '')) {
36
- await createWorktree(workdir, org, repo, branch, options);
37
- const { worktreePath } = await getWorktreePath(workdir, org, repo, branch);
64
+ await activeAutomationDependencies.createWorktree(workdir, org, repo, branch, options);
65
+ const { worktreePath } = await activeAutomationDependencies.getWorktreePath(workdir, org, repo, branch);
38
66
  return { worktreePath, created: true };
39
67
  }
40
68
  throw error;
@@ -75,17 +103,17 @@ function finishMetrics(key, success, durationMs) {
75
103
  }
76
104
  bucket.totalLatencyMs += durationMs;
77
105
  }
78
- export function createAutomationHandlers({ workdir, agentCommands, apiKey, branchNameGenerator, planService, logger, defaultBranches, }, { ensureRepositoryExists: ensureRepoExists = ensureRepositoryExists, ensureWorktreeExists: ensureWorktree = ensureWorktreeExists, launchAgentProcess: launchAgent = launchAgentProcess, runTaskImpl = runTask, now = () => Date.now(), createRequestId = () => randomUUID(), } = {}) {
79
- const gitOrchestrator = createGitOrchestrator({
106
+ export function createAutomationHandlers({ workdir, agentCommands, apiKey, branchNameGenerator, planService, logger, defaultBranches, }, { ensureRepositoryExists: ensureRepoExists = ensureRepositoryExists, ensureWorktreeExists: ensureWorktree = ensureWorktreeExists, launchAgentProcess: launchAgent = activeAutomationDependencies.launchAgentProcess, runTaskImpl = activeAutomationDependencies.runTask, now = () => Date.now(), createRequestId = () => randomUUID(), } = {}) {
107
+ const gitOrchestrator = activeAutomationDependencies.createGitOrchestrator({
80
108
  ensureRepositoryExists: ensureRepoExists,
81
109
  ensureWorktreeExists: ensureWorktree,
82
110
  });
83
- const log = createLogger(logger);
111
+ const log = activeAutomationDependencies.createLogger(logger);
84
112
  async function launch(context) {
85
113
  const ctx = context;
86
114
  let validation;
87
115
  try {
88
- validation = await validateAutomationRequest({
116
+ validation = await activeAutomationDependencies.validateAutomationRequest({
89
117
  req: ctx.req,
90
118
  expectedApiKey: apiKey || '',
91
119
  readJsonBody: ctx.readJsonBody,
@@ -141,10 +169,10 @@ export function createAutomationHandlers({ workdir, agentCommands, apiKey, branc
141
169
  return;
142
170
  }
143
171
  try {
144
- const result = (await runAutomationTask({
172
+ const result = (await activeAutomationDependencies.runAutomationTask({
145
173
  runTaskImpl: runTaskImpl,
146
- resolveBranchName: resolveBranchName,
147
- generatePlanText: generatePlanText,
174
+ resolveBranchName: activeAutomationDependencies.resolveBranchName,
175
+ generatePlanText: activeAutomationDependencies.generatePlanText,
148
176
  gitOrchestrator,
149
177
  launchAgent: launchAgent,
150
178
  workdir,
@@ -1 +1 @@
1
- {"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/api/automation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/api/automation.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { sendJson } from '../utils/http.js';
1
2
  import type { RequestContext } from '../types/http.js';
2
3
  /**
3
4
  * Generic handler function type
@@ -44,6 +45,13 @@ export interface HandlerOptions<TInput, TOutput> {
44
45
  * });
45
46
  * ```
46
47
  */
48
+ interface HandlerDependencies {
49
+ sendJson: typeof sendJson;
50
+ }
51
+ /**
52
+ * @internal Test hook to override handler dependencies
53
+ */
54
+ export declare function __setBaseHandlerTestOverrides(overrides?: Partial<HandlerDependencies>): void;
47
55
  export declare function createHandler<TInput = void, TOutput = unknown>(options: HandlerOptions<TInput, TOutput>): (context: RequestContext) => Promise<void>;
48
56
  /**
49
57
  * Creates a simple handler that doesn't require input validation
@@ -59,4 +67,5 @@ export declare function createQueryHandler<TOutput = unknown>(handler: (context:
59
67
  successCode?: number;
60
68
  responseTransformer?: (result: TOutput) => unknown;
61
69
  }): (context: RequestContext) => Promise<void>;
70
+ export {};
62
71
  //# sourceMappingURL=base-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../src/api/base-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CACjE,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,MAAM,EAAE,OAAO;IAC7C;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1C;;OAEG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEvC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CACpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EAC5D,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CA2B5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAG,OAAO,EACnD,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,EACtD,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAA;CAAO,GACzF,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAM5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAG,OAAO,EAClD,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,EACtD,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAA;CAAO,GACzF,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAQ5C"}
1
+ {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../src/api/base-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CACjE,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,MAAM,EAAE,OAAO;IAC7C;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1C;;OAEG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEvC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CACpD;AAED;;;;;;;;;;;GAWG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,OAAO,QAAQ,CAAC;CAC3B;AAQD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAM5F;AAED,wBAAgB,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EAC5D,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CA2B5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAG,OAAO,EACnD,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,EACtD,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAA;CAAO,GACzF,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAM5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAG,OAAO,EAClD,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,EACtD,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAA;CAAO,GACzF,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAQ5C"}
@@ -1,17 +1,19 @@
1
1
  import { sendJson } from '../utils/http.js';
2
2
  import { asyncHandler } from '../infrastructure/errors/index.js';
3
+ const defaultDependencies = {
4
+ sendJson,
5
+ };
6
+ let activeDependencies = { ...defaultDependencies };
3
7
  /**
4
- * Creates a standardized API handler with validation and error handling
5
- *
6
- * @example
7
- * ```typescript
8
- * const createUser = createHandler({
9
- * handler: async (input, context) => userService.create(input),
10
- * validator: validateUserCreate,
11
- * successCode: 201
12
- * });
13
- * ```
8
+ * @internal Test hook to override handler dependencies
14
9
  */
10
+ export function __setBaseHandlerTestOverrides(overrides) {
11
+ if (!overrides) {
12
+ activeDependencies = { ...defaultDependencies };
13
+ return;
14
+ }
15
+ activeDependencies = { ...activeDependencies, ...overrides };
16
+ }
15
17
  export function createHandler(options) {
16
18
  const { handler, validator, successCode = 200, readBody = Boolean(validator), responseTransformer, } = options;
17
19
  return asyncHandler(async (context) => {
@@ -27,7 +29,7 @@ export function createHandler(options) {
27
29
  const response = responseTransformer
28
30
  ? responseTransformer(result)
29
31
  : result;
30
- sendJson(context.res, successCode, response);
32
+ activeDependencies.sendJson(context.res, successCode, response);
31
33
  });
32
34
  }
33
35
  /**
@@ -49,7 +51,7 @@ export function createQueryHandler(handler, options = {}) {
49
51
  const response = options.responseTransformer
50
52
  ? options.responseTransformer(result)
51
53
  : result;
52
- sendJson(context.res, options.successCode || 200, response);
54
+ activeDependencies.sendJson(context.res, options.successCode || 200, response);
53
55
  });
54
56
  }
55
57
  //# sourceMappingURL=base-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-handler.js","sourceRoot":"","sources":["../../src/api/base-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AA8CjE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAwC;IAExC,MAAM,EACJ,OAAO,EACP,SAAS,EACT,WAAW,GAAG,GAAG,EACjB,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,EAC7B,mBAAmB,GACpB,GAAG,OAAO,CAAC;IAEZ,OAAO,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACpD,IAAI,KAAa,CAAC;QAElB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAC7C,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAkB,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,SAAmB,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,mBAAmB;YAClC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC7B,CAAC,CAAC,MAAM,CAAC;QAEX,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAsD,EACtD,UAAwF,EAAE;IAE1F,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,MAAY,EAAE,OAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1E,QAAQ,EAAE,KAAK;QACf,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAsD,EACtD,UAAwF,EAAE;IAE1F,OAAO,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB;YAC1C,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC;QACX,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"base-handler.js","sourceRoot":"","sources":["../../src/api/base-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AA8DjE,MAAM,mBAAmB,GAAwB;IAC/C,QAAQ;CACT,CAAC;AAEF,IAAI,kBAAkB,GAAwB,EAAE,GAAG,mBAAmB,EAAE,CAAC;AAEzE;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAAwC;IACpF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,kBAAkB,GAAG,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IACD,kBAAkB,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,SAAS,EAAyB,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAwC;IAExC,MAAM,EACJ,OAAO,EACP,SAAS,EACT,WAAW,GAAG,GAAG,EACjB,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,EAC7B,mBAAmB,GACpB,GAAG,OAAO,CAAC;IAEZ,OAAO,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACpD,IAAI,KAAa,CAAC;QAElB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAC7C,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAkB,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,SAAmB,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,mBAAmB;YAClC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC7B,CAAC,CAAC,MAAM,CAAC;QAEX,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAsD,EACtD,UAAwF,EAAE;IAE1F,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,MAAY,EAAE,OAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1E,QAAQ,EAAE,KAAK;QACf,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAsD,EACtD,UAAwF,EAAE;IAE1F,OAAO,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB;YAC1C,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC;QACX,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,8 +1,19 @@
1
+ import { sendJson } from '../utils/http.js';
2
+ import { ensureRepository } from '../core/git.js';
1
3
  import type { RequestContext } from '../types/http.js';
2
4
  import type { PlanService } from '../types/plan.js';
5
+ interface CreatePlanDependencies {
6
+ ensureRepository: typeof ensureRepository;
7
+ sendJson: typeof sendJson;
8
+ }
9
+ /**
10
+ * @internal Test hook to override create-plan dependencies
11
+ */
12
+ export declare function __setCreatePlanTestOverrides(overrides?: Partial<CreatePlanDependencies>): void;
3
13
  export declare function createPlanHandlers({ planService: providedPlanService }?: {
4
14
  planService?: PlanService;
5
15
  }): {
6
16
  create: (context: RequestContext) => Promise<void>;
7
17
  };
18
+ export {};
8
19
  //# sourceMappingURL=create-plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-plan.d.ts","sourceRoot":"","sources":["../../src/api/create-plan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAO;sBAG1E,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC;EA8E9D"}
1
+ {"version":3,"file":"create-plan.d.ts","sourceRoot":"","sources":["../../src/api/create-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,UAAU,sBAAsB;IAC9B,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,QAAQ,EAAE,OAAO,QAAQ,CAAC;CAC3B;AASD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAM9F;AAED,wBAAgB,kBAAkB,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAO;sBAG1E,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC;EA8E9D"}
@@ -1,5 +1,20 @@
1
1
  import { sendJson } from '../utils/http.js';
2
2
  import { ensureRepository } from '../core/git.js';
3
+ const defaultDependencies = {
4
+ ensureRepository,
5
+ sendJson,
6
+ };
7
+ let activeDependencies = { ...defaultDependencies };
8
+ /**
9
+ * @internal Test hook to override create-plan dependencies
10
+ */
11
+ export function __setCreatePlanTestOverrides(overrides) {
12
+ if (!overrides) {
13
+ activeDependencies = { ...defaultDependencies };
14
+ return;
15
+ }
16
+ activeDependencies = { ...activeDependencies, ...overrides };
17
+ }
3
18
  export function createPlanHandlers({ planService: providedPlanService } = {}) {
4
19
  const planService = providedPlanService;
5
20
  async function create(context) {
@@ -9,18 +24,18 @@ export function createPlanHandlers({ planService: providedPlanService } = {}) {
9
24
  }
10
25
  catch (error) {
11
26
  const err = error;
12
- sendJson(context.res, 400, { error: err.message });
27
+ activeDependencies.sendJson(context.res, 400, { error: err.message });
13
28
  return;
14
29
  }
15
30
  const prompt = typeof payload['prompt'] === 'string' ? payload['prompt'] : '';
16
31
  if (!prompt.trim()) {
17
- sendJson(context.res, 400, { error: 'prompt is required' });
32
+ activeDependencies.sendJson(context.res, 400, { error: 'prompt is required' });
18
33
  return;
19
34
  }
20
35
  const rawPrompt = payload && typeof payload['rawPrompt'] === 'boolean' ? payload['rawPrompt'] : false;
21
36
  const dangerousMode = payload && typeof payload['dangerousMode'] === 'boolean' ? payload['dangerousMode'] : false;
22
37
  if (!planService || !planService.isConfigured) {
23
- sendJson(context.res, 500, {
38
+ activeDependencies.sendJson(context.res, 500, {
24
39
  error: 'Plan generation is not configured. Configure a local LLM command (set planLlm in config.json).',
25
40
  });
26
41
  return;
@@ -29,7 +44,7 @@ export function createPlanHandlers({ planService: providedPlanService } = {}) {
29
44
  const repo = typeof payload['repo'] === 'string' ? payload['repo'].trim() : '';
30
45
  let commandCwd = '';
31
46
  if ((org && !repo) || (!org && repo)) {
32
- sendJson(context.res, 400, {
47
+ activeDependencies.sendJson(context.res, 400, {
33
48
  error: 'Both org and repo must be provided when specifying repository context.',
34
49
  });
35
50
  return;
@@ -37,18 +52,18 @@ export function createPlanHandlers({ planService: providedPlanService } = {}) {
37
52
  if (org && repo) {
38
53
  const workdir = typeof context.workdir === 'string' ? context.workdir : '';
39
54
  if (!workdir) {
40
- sendJson(context.res, 500, {
55
+ activeDependencies.sendJson(context.res, 500, {
41
56
  error: 'Server workdir is not configured.',
42
57
  });
43
58
  return;
44
59
  }
45
60
  try {
46
- const { repositoryPath } = await ensureRepository(workdir, org, repo);
61
+ const { repositoryPath } = await activeDependencies.ensureRepository(workdir, org, repo);
47
62
  commandCwd = repositoryPath;
48
63
  }
49
64
  catch (error) {
50
65
  const message = error instanceof Error ? error.message : String(error);
51
- sendJson(context.res, 404, { error: message });
66
+ activeDependencies.sendJson(context.res, 404, { error: message });
52
67
  return;
53
68
  }
54
69
  }
@@ -61,16 +76,16 @@ export function createPlanHandlers({ planService: providedPlanService } = {}) {
61
76
  }
62
77
  catch (error) {
63
78
  if (error instanceof Error && error.message === 'prompt is required') {
64
- sendJson(context.res, 400, { error: error.message });
79
+ activeDependencies.sendJson(context.res, 400, { error: error.message });
65
80
  return;
66
81
  }
67
82
  const message = error instanceof Error ? error.message : String(error);
68
- sendJson(context.res, 502, {
83
+ activeDependencies.sendJson(context.res, 502, {
69
84
  error: message,
70
85
  });
71
86
  return;
72
87
  }
73
- sendJson(context.res, 200, { plan: planText });
88
+ activeDependencies.sendJson(context.res, 200, { plan: planText });
74
89
  }
75
90
  return { create };
76
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-plan.js","sourceRoot":"","sources":["../../src/api/create-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-plan.js","sourceRoot":"","sources":["../../src/api/create-plan.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,18 @@
1
+ import { getWorktreeStatus, getWorktreeFileDiff } from '../core/git.js';
2
+ import { extractWorktreeParams } from '../validation/index.js';
1
3
  import type { RequestContext } from '../types/http.js';
4
+ interface GitStatusDependencies {
5
+ getWorktreeStatus: typeof getWorktreeStatus;
6
+ getWorktreeFileDiff: typeof getWorktreeFileDiff;
7
+ extractWorktreeParams: typeof extractWorktreeParams;
8
+ }
9
+ /**
10
+ * @internal Test hook to override git-status dependencies
11
+ */
12
+ export declare function __setGitStatusTestOverrides(overrides?: Partial<GitStatusDependencies>): void;
2
13
  export declare function createGitStatusHandlers(workdir: string): {
3
14
  read: (context: RequestContext) => Promise<void>;
4
15
  diff: (context: RequestContext) => Promise<void>;
5
16
  };
17
+ export {};
6
18
  //# sourceMappingURL=git-status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-status.d.ts","sourceRoot":"","sources":["../../src/api/git-status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBvD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM;;;EA+CtD"}
1
+ {"version":3,"file":"git-status.d.ts","sourceRoot":"","sources":["../../src/api/git-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,UAAU,qBAAqB;IAC7B,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;IAChD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;CACrD;AAUD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAM5F;AAiBD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM;;;EA+CtD"}
@@ -2,6 +2,22 @@ import { getWorktreeStatus, getWorktreeFileDiff } from '../core/git.js';
2
2
  import { createQueryHandler } from './base-handler.js';
3
3
  import { extractWorktreeParams } from '../validation/index.js';
4
4
  import { ValidationError } from '../infrastructure/errors/index.js';
5
+ const defaultDependencies = {
6
+ getWorktreeStatus,
7
+ getWorktreeFileDiff,
8
+ extractWorktreeParams,
9
+ };
10
+ let activeDependencies = { ...defaultDependencies };
11
+ /**
12
+ * @internal Test hook to override git-status dependencies
13
+ */
14
+ export function __setGitStatusTestOverrides(overrides) {
15
+ if (!overrides) {
16
+ activeDependencies = { ...defaultDependencies };
17
+ return;
18
+ }
19
+ activeDependencies = { ...activeDependencies, ...overrides };
20
+ }
5
21
  function parseOptionalInteger(value, fallback) {
6
22
  if (typeof value !== 'string') {
7
23
  return fallback;
@@ -21,10 +37,10 @@ export function createGitStatusHandlers(workdir) {
21
37
  throw new Error('workdir is required');
22
38
  }
23
39
  const read = createQueryHandler(async (context) => {
24
- const { org, repo, branch } = extractWorktreeParams(context.url.searchParams);
40
+ const { org, repo, branch } = activeDependencies.extractWorktreeParams(context.url.searchParams);
25
41
  const entryLimit = parseOptionalInteger(context.url.searchParams.get('entryLimit'), undefined);
26
42
  const commitLimit = parseOptionalInteger(context.url.searchParams.get('commitLimit'), undefined);
27
- const status = await getWorktreeStatus(workdir, org, repo, branch, {
43
+ const status = await activeDependencies.getWorktreeStatus(workdir, org, repo, branch, {
28
44
  entryLimit,
29
45
  commitLimit,
30
46
  });
@@ -33,7 +49,7 @@ export function createGitStatusHandlers(workdir) {
33
49
  });
34
50
  const diff = createQueryHandler(async (context) => {
35
51
  const payload = await context.readJsonBody();
36
- const { org, repo, branch } = extractWorktreeParams(new URLSearchParams({
52
+ const { org, repo, branch } = activeDependencies.extractWorktreeParams(new URLSearchParams({
37
53
  org: typeof payload['org'] === 'string' ? payload['org'] : '',
38
54
  repo: typeof payload['repo'] === 'string' ? payload['repo'] : '',
39
55
  branch: typeof payload['branch'] === 'string' ? payload['branch'] : '',
@@ -45,7 +61,7 @@ export function createGitStatusHandlers(workdir) {
45
61
  const previousPath = typeof payload['previousPath'] === 'string' ? payload['previousPath'] : undefined;
46
62
  const mode = typeof payload['mode'] === 'string' ? payload['mode'] : undefined;
47
63
  const status = typeof payload['status'] === 'string' ? payload['status'] : undefined;
48
- return await getWorktreeFileDiff(workdir, org, repo, branch, {
64
+ return await activeDependencies.getWorktreeFileDiff(workdir, org, repo, branch, {
49
65
  path: filePath,
50
66
  previousPath,
51
67
  mode,
@@ -1 +1 @@
1
- {"version":3,"file":"git-status.js","sourceRoot":"","sources":["../../src/api/git-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-status.js","sourceRoot":"","sources":["../../src/api/git-status.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,24 @@
1
+ import { getWorktreePath } from '../core/git.js';
2
+ import { listPlansForWorktree, readPlanFromWorktree } from '../core/plan-storage.js';
3
+ import { sendJson } from '../utils/http.js';
4
+ import { extractWorktreeParams } from '../validation/index.js';
5
+ import { extractErrorMessage } from '../infrastructure/errors/index.js';
1
6
  import type { RequestContext } from '../types/http.js';
7
+ interface PlansDependencies {
8
+ getWorktreePath: typeof getWorktreePath;
9
+ listPlansForWorktree: typeof listPlansForWorktree;
10
+ readPlanFromWorktree: typeof readPlanFromWorktree;
11
+ extractWorktreeParams: typeof extractWorktreeParams;
12
+ sendJson: typeof sendJson;
13
+ extractErrorMessage: typeof extractErrorMessage;
14
+ }
15
+ /**
16
+ * @internal Test hook to override plans dependencies
17
+ */
18
+ export declare function __setPlansTestOverrides(overrides?: Partial<PlansDependencies>): void;
2
19
  export declare function createPlanArtifactHandlers(workdir: string): {
3
20
  list: (context: RequestContext) => Promise<void>;
4
21
  read: (context: RequestContext) => Promise<void>;
5
22
  };
23
+ export {};
6
24
  //# sourceMappingURL=plans.d.ts.map