@xdevops/issue-auto-finish 1.0.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 (161) hide show
  1. package/bin/issue-auto-finish.js +2 -0
  2. package/dist/ai-runner/AIRunner.d.ts +27 -0
  3. package/dist/ai-runner/AIRunner.d.ts.map +1 -0
  4. package/dist/ai-runner/BaseAIRunner.d.ts +19 -0
  5. package/dist/ai-runner/BaseAIRunner.d.ts.map +1 -0
  6. package/dist/ai-runner/ClaudeInternalRunner.d.ts +13 -0
  7. package/dist/ai-runner/ClaudeInternalRunner.d.ts.map +1 -0
  8. package/dist/ai-runner/CodebuddyRunner.d.ts +13 -0
  9. package/dist/ai-runner/CodebuddyRunner.d.ts.map +1 -0
  10. package/dist/ai-runner/CursorAgentRunner.d.ts +13 -0
  11. package/dist/ai-runner/CursorAgentRunner.d.ts.map +1 -0
  12. package/dist/ai-runner/index.d.ts +15 -0
  13. package/dist/ai-runner/index.d.ts.map +1 -0
  14. package/dist/chunk-HCHEFK4Z.js +80 -0
  15. package/dist/chunk-HCHEFK4Z.js.map +1 -0
  16. package/dist/chunk-I3T573SU.js +153 -0
  17. package/dist/chunk-I3T573SU.js.map +1 -0
  18. package/dist/chunk-IDUKWCC2.js +1995 -0
  19. package/dist/chunk-IDUKWCC2.js.map +1 -0
  20. package/dist/chunk-OWVT3Z34.js +770 -0
  21. package/dist/chunk-OWVT3Z34.js.map +1 -0
  22. package/dist/chunk-RIUI4ROA.js +180 -0
  23. package/dist/chunk-RIUI4ROA.js.map +1 -0
  24. package/dist/chunk-TBIEB3JY.js +3295 -0
  25. package/dist/chunk-TBIEB3JY.js.map +1 -0
  26. package/dist/cli/commands/doctor.d.ts +2 -0
  27. package/dist/cli/commands/doctor.d.ts.map +1 -0
  28. package/dist/cli/commands/init.d.ts +6 -0
  29. package/dist/cli/commands/init.d.ts.map +1 -0
  30. package/dist/cli/commands/start.d.ts +5 -0
  31. package/dist/cli/commands/start.d.ts.map +1 -0
  32. package/dist/cli/index.d.ts +3 -0
  33. package/dist/cli/index.d.ts.map +1 -0
  34. package/dist/cli/setup/ConfigGenerator.d.ts +44 -0
  35. package/dist/cli/setup/ConfigGenerator.d.ts.map +1 -0
  36. package/dist/cli/setup/DependencyChecker.d.ts +21 -0
  37. package/dist/cli/setup/DependencyChecker.d.ts.map +1 -0
  38. package/dist/cli.js +73 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/clients/GongfengClient.d.ts +86 -0
  41. package/dist/clients/GongfengClient.d.ts.map +1 -0
  42. package/dist/config.d.ts +92 -0
  43. package/dist/config.d.ts.map +1 -0
  44. package/dist/deploy/DevServerManager.d.ts +21 -0
  45. package/dist/deploy/DevServerManager.d.ts.map +1 -0
  46. package/dist/deploy/PortAllocator.d.ts +20 -0
  47. package/dist/deploy/PortAllocator.d.ts.map +1 -0
  48. package/dist/deploy/index.d.ts +3 -0
  49. package/dist/deploy/index.d.ts.map +1 -0
  50. package/dist/doctor-B26Q6JWI.js +33 -0
  51. package/dist/doctor-B26Q6JWI.js.map +1 -0
  52. package/dist/e2e/E2eSettings.d.ts +6 -0
  53. package/dist/e2e/E2eSettings.d.ts.map +1 -0
  54. package/dist/e2e/ScreenshotCollector.d.ts +11 -0
  55. package/dist/e2e/ScreenshotCollector.d.ts.map +1 -0
  56. package/dist/e2e/ScreenshotPublisher.d.ts +16 -0
  57. package/dist/e2e/ScreenshotPublisher.d.ts.map +1 -0
  58. package/dist/events/EventBus.d.ts +14 -0
  59. package/dist/events/EventBus.d.ts.map +1 -0
  60. package/dist/git/GitOperations.d.ts +30 -0
  61. package/dist/git/GitOperations.d.ts.map +1 -0
  62. package/dist/git/WorktreeContext.d.ts +9 -0
  63. package/dist/git/WorktreeContext.d.ts.map +1 -0
  64. package/dist/i18n/index.d.ts +8 -0
  65. package/dist/i18n/index.d.ts.map +1 -0
  66. package/dist/i18n/locales/en.d.ts +2 -0
  67. package/dist/i18n/locales/en.d.ts.map +1 -0
  68. package/dist/i18n/locales/zh-CN.d.ts +2 -0
  69. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +12 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/init-L3VIWCOV.js +65 -0
  75. package/dist/init-L3VIWCOV.js.map +1 -0
  76. package/dist/lib.d.ts +26 -0
  77. package/dist/lib.d.ts.map +1 -0
  78. package/dist/lib.js +50 -0
  79. package/dist/lib.js.map +1 -0
  80. package/dist/logger.d.ts +15 -0
  81. package/dist/logger.d.ts.map +1 -0
  82. package/dist/notesync/NoteSyncSettings.d.ts +12 -0
  83. package/dist/notesync/NoteSyncSettings.d.ts.map +1 -0
  84. package/dist/orchestrator/PipelineOrchestrator.d.ts +53 -0
  85. package/dist/orchestrator/PipelineOrchestrator.d.ts.map +1 -0
  86. package/dist/persistence/PlanPersistence.d.ts +37 -0
  87. package/dist/persistence/PlanPersistence.d.ts.map +1 -0
  88. package/dist/phases/AnalysisPhase.d.ts +13 -0
  89. package/dist/phases/AnalysisPhase.d.ts.map +1 -0
  90. package/dist/phases/BasePhase.d.ts +44 -0
  91. package/dist/phases/BasePhase.d.ts.map +1 -0
  92. package/dist/phases/BuildPhase.d.ts +9 -0
  93. package/dist/phases/BuildPhase.d.ts.map +1 -0
  94. package/dist/phases/DesignPhase.d.ts +13 -0
  95. package/dist/phases/DesignPhase.d.ts.map +1 -0
  96. package/dist/phases/ImplementPhase.d.ts +9 -0
  97. package/dist/phases/ImplementPhase.d.ts.map +1 -0
  98. package/dist/phases/PhaseFactory.d.ts +13 -0
  99. package/dist/phases/PhaseFactory.d.ts.map +1 -0
  100. package/dist/phases/PlanPhase.d.ts +14 -0
  101. package/dist/phases/PlanPhase.d.ts.map +1 -0
  102. package/dist/phases/VerifyPhase.d.ts +13 -0
  103. package/dist/phases/VerifyPhase.d.ts.map +1 -0
  104. package/dist/pipeline/PipelineDefinition.d.ts +40 -0
  105. package/dist/pipeline/PipelineDefinition.d.ts.map +1 -0
  106. package/dist/poller/IssuePoller.d.ts +26 -0
  107. package/dist/poller/IssuePoller.d.ts.map +1 -0
  108. package/dist/prompts/brainstorm-templates.d.ts +4 -0
  109. package/dist/prompts/brainstorm-templates.d.ts.map +1 -0
  110. package/dist/prompts/templates.d.ts +27 -0
  111. package/dist/prompts/templates.d.ts.map +1 -0
  112. package/dist/rules/RuleResolver.d.ts +13 -0
  113. package/dist/rules/RuleResolver.d.ts.map +1 -0
  114. package/dist/rules/index.d.ts +3 -0
  115. package/dist/rules/index.d.ts.map +1 -0
  116. package/dist/run.d.ts +2 -0
  117. package/dist/run.d.ts.map +1 -0
  118. package/dist/run.js +15 -0
  119. package/dist/run.js.map +1 -0
  120. package/dist/services/BrainstormService.d.ts +39 -0
  121. package/dist/services/BrainstormService.d.ts.map +1 -0
  122. package/dist/start-TVN4SS6E.js +25 -0
  123. package/dist/start-TVN4SS6E.js.map +1 -0
  124. package/dist/supplement/SupplementStore.d.ts +21 -0
  125. package/dist/supplement/SupplementStore.d.ts.map +1 -0
  126. package/dist/tracker/IssueState.d.ts +63 -0
  127. package/dist/tracker/IssueState.d.ts.map +1 -0
  128. package/dist/tracker/IssueTracker.d.ts +29 -0
  129. package/dist/tracker/IssueTracker.d.ts.map +1 -0
  130. package/dist/utils/AsyncMutex.d.ts +14 -0
  131. package/dist/utils/AsyncMutex.d.ts.map +1 -0
  132. package/dist/utils/MergeRequestHelper.d.ts +10 -0
  133. package/dist/utils/MergeRequestHelper.d.ts.map +1 -0
  134. package/dist/web/AgentLogStore.d.ts +22 -0
  135. package/dist/web/AgentLogStore.d.ts.map +1 -0
  136. package/dist/web/WebServer.d.ts +26 -0
  137. package/dist/web/WebServer.d.ts.map +1 -0
  138. package/dist/web/routes/api.d.ts +20 -0
  139. package/dist/web/routes/api.d.ts.map +1 -0
  140. package/dist/web/routes/brainstorm.d.ts +9 -0
  141. package/dist/web/routes/brainstorm.d.ts.map +1 -0
  142. package/dist/web/routes/setup.d.ts +8 -0
  143. package/dist/web/routes/setup.d.ts.map +1 -0
  144. package/dist/webhook/CommandExecutor.d.ts +45 -0
  145. package/dist/webhook/CommandExecutor.d.ts.map +1 -0
  146. package/dist/webhook/CommandParser.d.ts +24 -0
  147. package/dist/webhook/CommandParser.d.ts.map +1 -0
  148. package/dist/webhook/IntentRecognizer.d.ts +35 -0
  149. package/dist/webhook/IntentRecognizer.d.ts.map +1 -0
  150. package/dist/webhook/NoteDeduplicator.d.ts +18 -0
  151. package/dist/webhook/NoteDeduplicator.d.ts.map +1 -0
  152. package/dist/webhook/WebhookHandler.d.ts +30 -0
  153. package/dist/webhook/WebhookHandler.d.ts.map +1 -0
  154. package/dist/webhook/WebhookServer.d.ts +21 -0
  155. package/dist/webhook/WebhookServer.d.ts.map +1 -0
  156. package/dist/webhook/index.d.ts +12 -0
  157. package/dist/webhook/index.d.ts.map +1 -0
  158. package/package.json +82 -0
  159. package/src/web/frontend/dist/assets/index-CQdlU9PE.js +65 -0
  160. package/src/web/frontend/dist/assets/index-CgMEkyZJ.css +1 -0
  161. package/src/web/frontend/dist/index.html +13 -0
@@ -0,0 +1,44 @@
1
+ export interface SetupConfig {
2
+ gongfeng: {
3
+ apiUrl: string;
4
+ privateToken: string;
5
+ projectPath: string;
6
+ };
7
+ project: {
8
+ workDir: string;
9
+ gitRootDir?: string;
10
+ baseBranch?: string;
11
+ branchPrefix?: string;
12
+ worktreeBaseDir?: string;
13
+ projectSubDir?: string;
14
+ };
15
+ ai: {
16
+ mode: 'claude-internal' | 'cursor-agent' | 'codebuddy';
17
+ model?: string;
18
+ phaseTimeoutMs?: number;
19
+ };
20
+ poll?: {
21
+ discoveryIntervalMs?: number;
22
+ driveIntervalMs?: number;
23
+ maxRetries?: number;
24
+ maxConcurrent?: number;
25
+ };
26
+ web?: {
27
+ port?: number;
28
+ };
29
+ pipeline?: {
30
+ mode?: string;
31
+ };
32
+ review?: {
33
+ enabled?: boolean;
34
+ };
35
+ }
36
+ export declare class ConfigGenerator {
37
+ static getGlobalConfigDir(): string;
38
+ static getGlobalConfigPath(): string;
39
+ static isInitialized(configPath?: string): boolean;
40
+ static resolveConfigPath(configPath?: string): string;
41
+ static generate(config: SetupConfig): string;
42
+ static write(config: SetupConfig, outputPath?: string): string;
43
+ }
44
+ //# sourceMappingURL=ConfigGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigGenerator.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/ConfigGenerator.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,EAAE,EAAE;QACF,IAAI,EAAE,iBAAiB,GAAG,cAAc,GAAG,WAAW,CAAC;QACvD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,eAAe;IAC1B,MAAM,CAAC,kBAAkB,IAAI,MAAM;IAInC,MAAM,CAAC,mBAAmB,IAAI,MAAM;IAIpC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAKlD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAOrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IA2D5C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;CAU/D"}
@@ -0,0 +1,21 @@
1
+ export interface DepCheckResult {
2
+ name: string;
3
+ displayName: string;
4
+ required: boolean;
5
+ installed: boolean;
6
+ version?: string;
7
+ installCommand?: string;
8
+ installHint?: string;
9
+ }
10
+ export declare class DependencyChecker {
11
+ checkAll(aiMode?: string): Promise<DepCheckResult[]>;
12
+ checkVolta(): Promise<DepCheckResult>;
13
+ checkNode(): Promise<DepCheckResult>;
14
+ checkGit(): Promise<DepCheckResult>;
15
+ checkPnpm(): Promise<DepCheckResult>;
16
+ checkClaudeInternal(required: boolean): Promise<DepCheckResult>;
17
+ checkCursor(required: boolean): Promise<DepCheckResult>;
18
+ checkCodebuddy(required: boolean): Promise<DepCheckResult>;
19
+ install(name: string): AsyncGenerator<string>;
20
+ }
21
+ //# sourceMappingURL=DependencyChecker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DependencyChecker.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/DependencyChecker.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8BD,qBAAa,iBAAiB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAepD,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;IAYrC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAYpC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAYnC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAapC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAe/D,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAavD,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAezD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;CAyCrD"}
package/dist/cli.js ADDED
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/cli/index.ts
4
+ import { Command } from "commander";
5
+ import { readFileSync, existsSync } from "fs";
6
+ import { fileURLToPath } from "url";
7
+ import path from "path";
8
+ var __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+ function findPackageJson() {
10
+ for (let dir = __dirname; dir !== path.dirname(dir); dir = path.dirname(dir)) {
11
+ const candidate = path.join(dir, "package.json");
12
+ if (existsSync(candidate)) {
13
+ try {
14
+ const content = JSON.parse(readFileSync(candidate, "utf-8"));
15
+ if (content.name === "issue-auto-finish") return candidate;
16
+ } catch {
17
+ }
18
+ }
19
+ }
20
+ return path.resolve(__dirname, "../package.json");
21
+ }
22
+ var pkg = JSON.parse(readFileSync(findPackageJson(), "utf-8"));
23
+ var program = new Command();
24
+ program.name("issue-auto-finish").description("Issue Auto-Finish: AI-powered issue resolution daemon").version(pkg.version);
25
+ program.command("init").description("Launch the interactive web setup wizard").option("-p, --port <port>", "Port for the setup wizard", "3456").option("-c, --config <path>", "Config file path to generate").action(async (opts) => {
26
+ const { initCommand } = await import("./init-L3VIWCOV.js");
27
+ await initCommand({ port: parseInt(opts.port, 10), config: opts.config });
28
+ });
29
+ program.command("start").description("Start the issue-auto-finish daemon service").option("-c, --config <path>", "Path to .env config file").action(async (opts) => {
30
+ const { startCommand } = await import("./start-TVN4SS6E.js");
31
+ await startCommand({ config: opts.config });
32
+ });
33
+ program.command("doctor").description("Check environment dependencies").action(async () => {
34
+ const { doctorCommand } = await import("./doctor-B26Q6JWI.js");
35
+ await doctorCommand();
36
+ });
37
+ program.command("status").description("Show service status").option("-p, --port <port>", "Web UI port to query", "3000").action(async (opts) => {
38
+ const port = parseInt(opts.port, 10);
39
+ try {
40
+ const resp = await fetch(`http://localhost:${port}/api/system/status`, {
41
+ signal: AbortSignal.timeout(5e3)
42
+ });
43
+ if (!resp.ok) {
44
+ console.error(` Service returned HTTP ${resp.status}`);
45
+ process.exitCode = 1;
46
+ return;
47
+ }
48
+ const status = await resp.json();
49
+ console.log("\n Issue Auto-Finish Status\n");
50
+ const cfg = status.config;
51
+ const issues = status.issues;
52
+ console.log(` Uptime: ${formatUptime(status.uptime)}`);
53
+ console.log(` AI Mode: ${cfg?.aiMode ?? "unknown"}`);
54
+ console.log(` Pipeline: ${cfg?.pipelineMode ?? "unknown"}`);
55
+ console.log(` Issues: ${issues?.total ?? 0} total, ${issues?.active ?? 0} active`);
56
+ console.log("");
57
+ } catch {
58
+ console.error(`
59
+ Cannot connect to service at localhost:${port}.`);
60
+ console.error(" Is the service running? Start with: issue-auto-finish start\n");
61
+ process.exitCode = 1;
62
+ }
63
+ });
64
+ function formatUptime(ms) {
65
+ const s = Math.floor(ms / 1e3);
66
+ const h = Math.floor(s / 3600);
67
+ const m = Math.floor(s % 3600 / 60);
68
+ if (h > 0) return `${h}h ${m}m`;
69
+ if (m > 0) return `${m}m ${s % 60}s`;
70
+ return `${s}s`;
71
+ }
72
+ program.parse();
73
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport { readFileSync, existsSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport path from 'node:path';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nfunction findPackageJson(): string {\n for (let dir = __dirname; dir !== path.dirname(dir); dir = path.dirname(dir)) {\n const candidate = path.join(dir, 'package.json');\n if (existsSync(candidate)) {\n try {\n const content = JSON.parse(readFileSync(candidate, 'utf-8'));\n if (content.name === 'issue-auto-finish') return candidate;\n } catch { /* skip */ }\n }\n }\n return path.resolve(__dirname, '../package.json');\n}\n\nconst pkg = JSON.parse(readFileSync(findPackageJson(), 'utf-8'));\n\nconst program = new Command();\n\nprogram\n .name('issue-auto-finish')\n .description('Issue Auto-Finish: AI-powered issue resolution daemon')\n .version(pkg.version);\n\nprogram\n .command('init')\n .description('Launch the interactive web setup wizard')\n .option('-p, --port <port>', 'Port for the setup wizard', '3456')\n .option('-c, --config <path>', 'Config file path to generate')\n .action(async (opts) => {\n const { initCommand } = await import('./commands/init.js');\n await initCommand({ port: parseInt(opts.port, 10), config: opts.config });\n });\n\nprogram\n .command('start')\n .description('Start the issue-auto-finish daemon service')\n .option('-c, --config <path>', 'Path to .env config file')\n .action(async (opts) => {\n const { startCommand } = await import('./commands/start.js');\n await startCommand({ config: opts.config });\n });\n\nprogram\n .command('doctor')\n .description('Check environment dependencies')\n .action(async () => {\n const { doctorCommand } = await import('./commands/doctor.js');\n await doctorCommand();\n });\n\nprogram\n .command('status')\n .description('Show service status')\n .option('-p, --port <port>', 'Web UI port to query', '3000')\n .action(async (opts) => {\n const port = parseInt(opts.port, 10);\n try {\n const resp = await fetch(`http://localhost:${port}/api/system/status`, {\n signal: AbortSignal.timeout(5000),\n });\n if (!resp.ok) {\n console.error(` Service returned HTTP ${resp.status}`);\n process.exitCode = 1;\n return;\n }\n const status = await resp.json() as Record<string, unknown>;\n console.log('\\n Issue Auto-Finish Status\\n');\n const cfg = status.config as Record<string, unknown> | undefined;\n const issues = status.issues as Record<string, unknown> | undefined;\n console.log(` Uptime: ${formatUptime(status.uptime as number)}`);\n console.log(` AI Mode: ${cfg?.aiMode ?? 'unknown'}`);\n console.log(` Pipeline: ${cfg?.pipelineMode ?? 'unknown'}`);\n console.log(` Issues: ${issues?.total ?? 0} total, ${issues?.active ?? 0} active`);\n console.log('');\n } catch {\n console.error(`\\n Cannot connect to service at localhost:${port}.`);\n console.error(' Is the service running? Start with: issue-auto-finish start\\n');\n process.exitCode = 1;\n }\n });\n\nfunction formatUptime(ms: number): string {\n const s = Math.floor(ms / 1000);\n const h = Math.floor(s / 3600);\n const m = Math.floor((s % 3600) / 60);\n if (h > 0) return `${h}h ${m}m`;\n if (m > 0) return `${m}m ${s % 60}s`;\n return `${s}s`;\n}\n\nprogram.parse();\n"],"mappings":"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","names":[]}
@@ -0,0 +1,86 @@
1
+ export interface GongfengIssue {
2
+ id: number;
3
+ iid: number;
4
+ title: string;
5
+ description: string;
6
+ state: string;
7
+ labels: string[];
8
+ created_at: string;
9
+ updated_at: string;
10
+ author: {
11
+ username: string;
12
+ name: string;
13
+ };
14
+ }
15
+ export interface GongfengConfig {
16
+ apiUrl: string;
17
+ privateToken: string;
18
+ projectPath: string;
19
+ }
20
+ export interface CreateMergeRequestOptions {
21
+ sourceBranch: string;
22
+ targetBranch: string;
23
+ title: string;
24
+ description?: string;
25
+ }
26
+ export interface GongfengMergeRequest {
27
+ id: number;
28
+ iid: number;
29
+ title: string;
30
+ web_url: string;
31
+ state: string;
32
+ source_branch?: string;
33
+ target_branch?: string;
34
+ }
35
+ export interface UploadResult {
36
+ alt: string;
37
+ url: string;
38
+ markdown: string;
39
+ }
40
+ export interface GongfengNote {
41
+ id: number;
42
+ body: string;
43
+ author: {
44
+ username: string;
45
+ name: string;
46
+ };
47
+ created_at: string;
48
+ }
49
+ export declare const AGENT_NOTE_MARKER = "\n\n<!-- issue-auto-finish-agent -->";
50
+ export declare class GongfengClient {
51
+ private apiUrl;
52
+ private token;
53
+ private projectPath;
54
+ constructor(config: GongfengConfig);
55
+ private get projectApiBase();
56
+ private requestRaw;
57
+ private request;
58
+ createIssue(title: string, description: string, labels?: string[]): Promise<GongfengIssue>;
59
+ listIssues(state?: string, labels?: string): Promise<GongfengIssue[]>;
60
+ listIssuesAdvanced(options?: {
61
+ state?: string;
62
+ labels?: string;
63
+ search?: string;
64
+ page?: number;
65
+ perPage?: number;
66
+ }): Promise<{
67
+ issues: GongfengIssue[];
68
+ total: number;
69
+ }>;
70
+ getIssueDetail(issueId: number): Promise<GongfengIssue>;
71
+ createIssueNote(issueId: number, body: string): Promise<void>;
72
+ updateIssueLabels(issueId: number, labels: string[]): Promise<void>;
73
+ createMergeRequest(options: CreateMergeRequestOptions): Promise<GongfengMergeRequest>;
74
+ findMergeRequestByBranch(sourceBranch: string, targetBranch: string, state?: string): Promise<GongfengMergeRequest | null>;
75
+ private buildMergeRequestUrl;
76
+ uploadFile(filePath: string): Promise<UploadResult>;
77
+ createMergeRequestNote(mrIid: number, body: string): Promise<void>;
78
+ closeMergeRequest(mrIid: number): Promise<void>;
79
+ deleteIssue(issueId: number): Promise<void>;
80
+ closeIssue(issueId: number): Promise<void>;
81
+ listIssueNotes(issueId: number): Promise<GongfengNote[]>;
82
+ deleteIssueNote(issueId: number, noteId: number): Promise<void>;
83
+ cleanupAgentNotes(issueId: number): Promise<number>;
84
+ addLabel(issueId: number, label: string): Promise<void>;
85
+ }
86
+ //# sourceMappingURL=GongfengClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GongfengClient.d.ts","sourceRoot":"","sources":["../../src/clients/GongfengClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ export interface Config {
2
+ gongfeng: {
3
+ apiUrl: string;
4
+ privateToken: string;
5
+ projectPath: string;
6
+ };
7
+ project: {
8
+ workDir: string;
9
+ gitRootDir: string;
10
+ baseBranch: string;
11
+ branchPrefix: string;
12
+ worktreeBaseDir: string;
13
+ projectSubDir: string;
14
+ };
15
+ /** @deprecated Use ai instead */
16
+ claude?: {
17
+ binary: string;
18
+ phaseTimeoutMs: number;
19
+ nvmNodeVersion: string;
20
+ };
21
+ ai: {
22
+ mode: 'claude-internal' | 'cursor-agent' | 'codebuddy';
23
+ binary: string;
24
+ phaseTimeoutMs: number;
25
+ nvmNodeVersion: string;
26
+ model?: string;
27
+ };
28
+ poll: {
29
+ /** @deprecated Use discoveryIntervalMs instead */
30
+ intervalMs: number;
31
+ discoveryIntervalMs: number;
32
+ driveIntervalMs: number;
33
+ maxRetries: number;
34
+ maxConcurrent: number;
35
+ };
36
+ pipeline: {
37
+ mode: 'auto' | 'classic' | 'plan-mode';
38
+ };
39
+ review: {
40
+ enabled: boolean;
41
+ autoApproveLabels: string[];
42
+ };
43
+ web: {
44
+ enabled: boolean;
45
+ port: number;
46
+ frontendDistDir: string;
47
+ };
48
+ issueNoteSync: {
49
+ enabled: boolean;
50
+ webBaseUrl: string;
51
+ };
52
+ webhook: {
53
+ enabled: boolean;
54
+ port: number;
55
+ secret: string;
56
+ /** Use LLM to parse natural-language commands when regex fails */
57
+ llmFallback: boolean;
58
+ /** Binary for LLM intent recognition (defaults to claude-internal, independent of AI_RUNNER_MODE) */
59
+ llmBinary: string;
60
+ };
61
+ e2e: {
62
+ enabled: boolean;
63
+ baseUrl: string;
64
+ backendUrl: string;
65
+ authCookies: string;
66
+ backendPortBase: number;
67
+ frontendPortBase: number;
68
+ };
69
+ preview: {
70
+ enabled: boolean;
71
+ host: string;
72
+ ttlMs: number;
73
+ keepAfterComplete: boolean;
74
+ };
75
+ brainstorm: {
76
+ enabled: boolean;
77
+ maxRefinementRounds: number;
78
+ timeoutMs: number;
79
+ generator: BrainstormAgentConfig;
80
+ reviewer: BrainstormAgentConfig;
81
+ };
82
+ locale: 'zh-CN' | 'en';
83
+ }
84
+ export type AIRunnerMode = 'claude-internal' | 'cursor-agent' | 'codebuddy';
85
+ export interface BrainstormAgentConfig {
86
+ mode: AIRunnerMode;
87
+ binary: string;
88
+ nvmNodeVersion: string;
89
+ model?: string;
90
+ }
91
+ export declare function loadConfig(): Config;
92
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { PortPair } from './PortAllocator.js';
2
+ import type { WorktreeContext } from '../git/WorktreeContext.js';
3
+ export interface DevServerManagerOptions {
4
+ healthCheckTimeoutMs: number;
5
+ healthCheckIntervalMs: number;
6
+ }
7
+ export declare class DevServerManager {
8
+ private servers;
9
+ private options;
10
+ constructor(options?: Partial<DevServerManagerOptions>);
11
+ startServers(wtCtx: WorktreeContext, ports: PortPair): Promise<void>;
12
+ stopServers(issueIid: number): void;
13
+ stopAll(): void;
14
+ getStatus(issueIid: number): {
15
+ running: boolean;
16
+ ports?: PortPair;
17
+ startedAt?: string;
18
+ };
19
+ getRunningIssues(): number[];
20
+ }
21
+ //# sourceMappingURL=DevServerManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevServerManager.d.ts","sourceRoot":"","sources":["../../src/deploy/DevServerManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAajE,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AA6CD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAIhD,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6F1E,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYnC,OAAO,IAAI,IAAI;IAMf,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAUvF,gBAAgB,IAAI,MAAM,EAAE;CAG7B"}
@@ -0,0 +1,20 @@
1
+ export interface PortPair {
2
+ backendPort: number;
3
+ frontendPort: number;
4
+ }
5
+ export interface PortAllocatorOptions {
6
+ backendPortBase: number;
7
+ frontendPortBase: number;
8
+ maxPorts: number;
9
+ }
10
+ export declare class PortAllocator {
11
+ private allocated;
12
+ private options;
13
+ constructor(options?: Partial<PortAllocatorOptions>);
14
+ allocate(issueIid: number): Promise<PortPair>;
15
+ release(issueIid: number): void;
16
+ getPortsForIssue(issueIid: number): PortPair | undefined;
17
+ getAllAllocated(): Map<number, PortPair>;
18
+ restore(issueIid: number, ports: PortPair): void;
19
+ }
20
+ //# sourceMappingURL=PortAllocator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortAllocator.d.ts","sourceRoot":"","sources":["../../src/deploy/PortAllocator.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAmBD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,OAAO,CAAuB;gBAE1B,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAI7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6CnD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIxD,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIxC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;CAIjD"}
@@ -0,0 +1,3 @@
1
+ export { PortAllocator, type PortPair, type PortAllocatorOptions } from './PortAllocator.js';
2
+ export { DevServerManager, type DevServerManagerOptions } from './DevServerManager.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deploy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import {
2
+ DependencyChecker
3
+ } from "./chunk-RIUI4ROA.js";
4
+ import "./chunk-OWVT3Z34.js";
5
+
6
+ // src/cli/commands/doctor.ts
7
+ async function doctorCommand() {
8
+ const checker = new DependencyChecker();
9
+ console.log("\n Issue Auto-Finish - Environment Check\n");
10
+ const results = await checker.checkAll();
11
+ for (const dep of results) {
12
+ const icon = dep.installed ? "\u2705" : dep.required ? "\u274C" : "\u26A0\uFE0F";
13
+ const version = dep.version ? ` (${dep.version})` : "";
14
+ const label = dep.required ? "" : " [optional]";
15
+ console.log(` ${icon} ${dep.displayName}${version}${label}`);
16
+ if (!dep.installed && dep.installHint) {
17
+ console.log(` -> ${dep.installHint}`);
18
+ }
19
+ }
20
+ const missing = results.filter((d) => d.required && !d.installed);
21
+ console.log("");
22
+ if (missing.length > 0) {
23
+ console.log(` ${missing.length} required dependencies missing.`);
24
+ console.log(' Run "issue-auto-finish init" to set up interactively.\n');
25
+ process.exitCode = 1;
26
+ } else {
27
+ console.log(" All required dependencies are installed.\n");
28
+ }
29
+ }
30
+ export {
31
+ doctorCommand
32
+ };
33
+ //# sourceMappingURL=doctor-B26Q6JWI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/doctor.ts"],"sourcesContent":["import { DependencyChecker } from '../setup/DependencyChecker.js';\n\nexport async function doctorCommand(): Promise<void> {\n const checker = new DependencyChecker();\n console.log('\\n Issue Auto-Finish - Environment Check\\n');\n\n const results = await checker.checkAll();\n\n for (const dep of results) {\n const icon = dep.installed ? '\\u2705' : (dep.required ? '\\u274C' : '\\u26A0\\uFE0F');\n const version = dep.version ? ` (${dep.version})` : '';\n const label = dep.required ? '' : ' [optional]';\n console.log(` ${icon} ${dep.displayName}${version}${label}`);\n if (!dep.installed && dep.installHint) {\n console.log(` -> ${dep.installHint}`);\n }\n }\n\n const missing = results.filter((d) => d.required && !d.installed);\n console.log('');\n if (missing.length > 0) {\n console.log(` ${missing.length} required dependencies missing.`);\n console.log(' Run \"issue-auto-finish init\" to set up interactively.\\n');\n process.exitCode = 1;\n } else {\n console.log(' All required dependencies are installed.\\n');\n }\n}\n"],"mappings":";;;;;;AAEA,eAAsB,gBAA+B;AACnD,QAAM,UAAU,IAAI,kBAAkB;AACtC,UAAQ,IAAI,6CAA6C;AAEzD,QAAM,UAAU,MAAM,QAAQ,SAAS;AAEvC,aAAW,OAAO,SAAS;AACzB,UAAM,OAAO,IAAI,YAAY,WAAY,IAAI,WAAW,WAAW;AACnE,UAAM,UAAU,IAAI,UAAU,KAAK,IAAI,OAAO,MAAM;AACpD,UAAM,QAAQ,IAAI,WAAW,KAAK;AAClC,YAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,WAAW,GAAG,OAAO,GAAG,KAAK,EAAE;AAC5D,QAAI,CAAC,IAAI,aAAa,IAAI,aAAa;AACrC,cAAQ,IAAI,WAAW,IAAI,WAAW,EAAE;AAAA,IAC1C;AAAA,EACF;AAEA,QAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,SAAS;AAChE,UAAQ,IAAI,EAAE;AACd,MAAI,QAAQ,SAAS,GAAG;AACtB,YAAQ,IAAI,KAAK,QAAQ,MAAM,iCAAiC;AAChE,YAAQ,IAAI,2DAA2D;AACvE,YAAQ,WAAW;AAAA,EACrB,OAAO;AACL,YAAQ,IAAI,8CAA8C;AAAA,EAC5D;AACF;","names":[]}
@@ -0,0 +1,6 @@
1
+ import type { Config } from '../config.js';
2
+ import type { IssueTracker } from '../tracker/IssueTracker.js';
3
+ export declare function getE2eEnabled(cfg: Config): boolean;
4
+ export declare function setE2eOverride(value: boolean | undefined): void;
5
+ export declare function isE2eEnabledForIssue(issueIid: number, tracker: IssueTracker, cfg: Config): boolean;
6
+ //# sourceMappingURL=E2eSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"E2eSettings.d.ts","sourceRoot":"","sources":["../../src/e2e/E2eSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAE/D;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAIT"}
@@ -0,0 +1,11 @@
1
+ export interface ScreenshotFile {
2
+ filePath: string;
3
+ testName: string;
4
+ }
5
+ /**
6
+ * 从 worktree 的 frontend/test-results/ 目录收集 E2E 截图。
7
+ * Playwright 以 `screenshot: 'on'` 运行时,每个测试的截图保存在
8
+ * `test-results/<project>-<test-name>-<browser>/` 子目录下。
9
+ */
10
+ export declare function collectScreenshots(workDir: string): ScreenshotFile[];
11
+ //# sourceMappingURL=ScreenshotCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenshotCollector.d.ts","sourceRoot":"","sources":["../../src/e2e/ScreenshotCollector.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CA6BpE"}
@@ -0,0 +1,16 @@
1
+ import { GongfengClient } from '../clients/GongfengClient.js';
2
+ export interface PublishOptions {
3
+ workDir: string;
4
+ issueIid: number;
5
+ issueId: number;
6
+ mrIid?: number;
7
+ }
8
+ export declare class ScreenshotPublisher {
9
+ private gongfeng;
10
+ constructor(gongfeng: GongfengClient);
11
+ publish(options: PublishOptions): Promise<void>;
12
+ private uploadAll;
13
+ private postToIssue;
14
+ private postToMergeRequest;
15
+ }
16
+ //# sourceMappingURL=ScreenshotPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenshotPublisher.d.ts","sourceRoot":"","sources":["../../src/e2e/ScreenshotPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,8BAA8B,CAAC;AAO5E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqBD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,cAAc;IAEtC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YA+BvC,SAAS;YAqBT,WAAW;YAWX,kBAAkB;CAUjC"}
@@ -0,0 +1,14 @@
1
+ import { EventEmitter } from 'node:events';
2
+ export type EventType = 'issue:created' | 'issue:stateChanged' | 'issue:failed' | 'issue:deleted' | 'issue:resetForRetry' | 'issue:restarted' | 'issue:retryFromPhase' | 'poll:tick' | 'heartbeat' | 'agent:output' | 'pipeline:progress' | 'review:requested' | 'review:approved' | 'review:rejected';
3
+ export interface EventPayload {
4
+ type: EventType;
5
+ data: unknown;
6
+ timestamp: string;
7
+ }
8
+ declare class EventBusImpl extends EventEmitter {
9
+ emit(event: string | symbol, ...args: unknown[]): boolean;
10
+ emitTyped(type: EventType, data: unknown): void;
11
+ }
12
+ export declare const eventBus: EventBusImpl;
13
+ export {};
14
+ //# sourceMappingURL=EventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/events/EventBus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,oBAAoB,GACpB,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,iBAAiB,GACjB,sBAAsB,GACtB,WAAW,GACX,WAAW,GACX,cAAc,GACd,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,YAAa,SAAQ,YAAY;IACrC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;IAKzD,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAQhD;AAED,eAAO,MAAM,QAAQ,cAAqB,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare class GitOperations {
2
+ private workDir;
3
+ constructor(workDir: string);
4
+ private exec;
5
+ fetchAndPull(branch: string): Promise<void>;
6
+ fetch(): Promise<void>;
7
+ createBranch(name: string, from: string): Promise<void>;
8
+ checkout(branch: string): Promise<void>;
9
+ add(files: string[]): Promise<void>;
10
+ commit(message: string): Promise<void>;
11
+ push(branch: string): Promise<void>;
12
+ branchExists(name: string): Promise<boolean>;
13
+ remoteBranchExists(name: string): Promise<boolean>;
14
+ getCurrentBranch(): Promise<string>;
15
+ stash(): Promise<void>;
16
+ stashPop(): Promise<void>;
17
+ hasChanges(): Promise<boolean>;
18
+ addAndCommit(files: string[], message: string): Promise<void>;
19
+ checkoutTrack(remoteBranch: string): Promise<void>;
20
+ addCommitAndPush(files: string[], message: string, branch: string): Promise<void>;
21
+ deleteBranch(name: string): Promise<void>;
22
+ deleteRemoteBranch(name: string): Promise<void>;
23
+ worktreeAdd(dir: string, newBranch: string, startPoint: string): Promise<void>;
24
+ worktreeAddExisting(dir: string, branch: string): Promise<void>;
25
+ worktreeAddTracking(dir: string, remoteBranch: string): Promise<void>;
26
+ worktreeRemove(dir: string, force?: boolean): Promise<void>;
27
+ worktreeList(): Promise<string[]>;
28
+ showFile(ref: string, filePath: string): Promise<string | null>;
29
+ }
30
+ //# sourceMappingURL=GitOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitOperations.d.ts","sourceRoot":"","sources":["../../src/git/GitOperations.ts"],"names":[],"mappings":"AAOA,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;YAIb,IAAI;IAUZ,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAK9B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjF,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQjC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAOtE"}
@@ -0,0 +1,9 @@
1
+ import type { PortPair } from '../deploy/PortAllocator.js';
2
+ export interface WorktreeContext {
3
+ gitRootDir: string;
4
+ workDir: string;
5
+ branchName: string;
6
+ issueIid: number;
7
+ ports?: PortPair;
8
+ }
9
+ //# sourceMappingURL=WorktreeContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorktreeContext.d.ts","sourceRoot":"","sources":["../../src/git/WorktreeContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB"}
@@ -0,0 +1,8 @@
1
+ export type Locale = 'zh-CN' | 'en';
2
+ type MessageMap = Record<string, string>;
3
+ export declare function setLocale(locale: Locale): void;
4
+ export declare function getLocale(): Locale;
5
+ export declare function registerLocale(locale: Locale, messages: MessageMap): void;
6
+ export declare function t(key: string, params?: Record<string, string | number>): string;
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEpC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAKzC,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAEzE;AAED,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAc/E"}
@@ -0,0 +1,2 @@
1
+ export declare const en: Record<string, string>;
2
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwYrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const zhCN: Record<string, string>;
2
+ //# sourceMappingURL=zh-CN.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/zh-CN.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwYvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function main(): Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6D1C"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ import {
2
+ main
3
+ } from "./chunk-IDUKWCC2.js";
4
+ import "./chunk-TBIEB3JY.js";
5
+ import "./chunk-I3T573SU.js";
6
+ import "./chunk-HCHEFK4Z.js";
7
+ import "./chunk-RIUI4ROA.js";
8
+ import "./chunk-OWVT3Z34.js";
9
+ export {
10
+ main
11
+ };
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}