@xdevops/issue-auto-finish 1.0.88 → 1.0.90

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 (139) hide show
  1. package/dist/{AIRunnerRegistry-II3WWSFN.js → AIRunnerRegistry-CFDNWSXC.js} +6 -3
  2. package/dist/{LockNote-Z2CLDZNN.js → LockNote-W2JNVMW7.js} +3 -3
  3. package/dist/PtyRunner-NYASBTRP.js +33 -0
  4. package/dist/SdkRunner-U2OTOMZU.js +9 -0
  5. package/dist/ai-runner/AIRunner.d.ts +19 -1
  6. package/dist/ai-runner/AIRunner.d.ts.map +1 -1
  7. package/dist/ai-runner/AIRunnerRegistry.d.ts +8 -0
  8. package/dist/ai-runner/AIRunnerRegistry.d.ts.map +1 -1
  9. package/dist/ai-runner/PlanFileResolver.d.ts +53 -0
  10. package/dist/ai-runner/PlanFileResolver.d.ts.map +1 -0
  11. package/dist/ai-runner/PtyRunner.d.ts +45 -4
  12. package/dist/ai-runner/PtyRunner.d.ts.map +1 -1
  13. package/dist/ai-runner/SdkRunner.d.ts +22 -0
  14. package/dist/ai-runner/SdkRunner.d.ts.map +1 -0
  15. package/dist/ai-runner/index.d.ts +5 -2
  16. package/dist/ai-runner/index.d.ts.map +1 -1
  17. package/dist/ai-runner/sdk/ClaudeCodeSDK.d.ts +37 -0
  18. package/dist/ai-runner/sdk/ClaudeCodeSDK.d.ts.map +1 -0
  19. package/dist/ai-runner/sdk/Stream.d.ts +22 -0
  20. package/dist/ai-runner/sdk/Stream.d.ts.map +1 -0
  21. package/dist/ai-runner/sdk/types.d.ts +146 -0
  22. package/dist/ai-runner/sdk/types.d.ts.map +1 -0
  23. package/dist/{ai-runner-HLA44WI6.js → ai-runner-TOHVJJ76.js} +14 -5
  24. package/dist/{analyze-ZIXNC5GN.js → analyze-DBH4K3J7.js} +8 -6
  25. package/dist/{analyze-ZIXNC5GN.js.map → analyze-DBH4K3J7.js.map} +1 -1
  26. package/dist/{braindump-56WAY2RD.js → braindump-RYI4BGMG.js} +11 -9
  27. package/dist/{braindump-56WAY2RD.js.map → braindump-RYI4BGMG.js.map} +1 -1
  28. package/dist/{chunk-AVGZH64A.js → chunk-2RWGZPNF.js} +4 -1
  29. package/dist/chunk-2RWGZPNF.js.map +1 -0
  30. package/dist/chunk-4XMYOXGZ.js +1153 -0
  31. package/dist/chunk-4XMYOXGZ.js.map +1 -0
  32. package/dist/{chunk-M5C2WILQ.js → chunk-5M5SB6ZA.js} +7 -5
  33. package/dist/{chunk-M5C2WILQ.js.map → chunk-5M5SB6ZA.js.map} +1 -1
  34. package/dist/{chunk-D47Q5745.js → chunk-ENF24C44.js} +7 -7
  35. package/dist/{chunk-GXFG4JU6.js → chunk-EU4XFZ2T.js} +2 -2
  36. package/dist/{chunk-NZHKAPU6.js → chunk-FJTZKAJA.js} +9 -3
  37. package/dist/chunk-FJTZKAJA.js.map +1 -0
  38. package/dist/chunk-G7QI5WDI.js +14 -0
  39. package/dist/chunk-G7QI5WDI.js.map +1 -0
  40. package/dist/{chunk-2YQHKXLL.js → chunk-GPZX4DSY.js} +22 -6
  41. package/dist/chunk-GPZX4DSY.js.map +1 -0
  42. package/dist/{chunk-IP3QTP5A.js → chunk-IWSMQXBL.js} +189 -48
  43. package/dist/chunk-IWSMQXBL.js.map +1 -0
  44. package/dist/chunk-MSL7ROVK.js +1 -0
  45. package/dist/{chunk-YCYVNRLF.js → chunk-OBGEEGQ3.js} +61 -19
  46. package/dist/chunk-OBGEEGQ3.js.map +1 -0
  47. package/dist/chunk-R32Q3RGK.js +666 -0
  48. package/dist/chunk-R32Q3RGK.js.map +1 -0
  49. package/dist/{chunk-LNFMARKQ.js → chunk-SEO57UYI.js} +25 -8
  50. package/dist/chunk-SEO57UYI.js.map +1 -0
  51. package/dist/{chunk-2GJ2KA4Z.js → chunk-TDKTI363.js} +3 -3
  52. package/dist/{chunk-SAMTXC4A.js → chunk-TFEPHOVE.js} +12 -17
  53. package/dist/chunk-TFEPHOVE.js.map +1 -0
  54. package/dist/{chunk-C4MFVASL.js → chunk-Y62E72TA.js} +63 -20
  55. package/dist/chunk-Y62E72TA.js.map +1 -0
  56. package/dist/{chunk-HDFNMVRQ.js → chunk-Z3OBKODV.js} +12 -11
  57. package/dist/chunk-Z3OBKODV.js.map +1 -0
  58. package/dist/cli/setup/ConfigGenerator.d.ts +2 -0
  59. package/dist/cli/setup/ConfigGenerator.d.ts.map +1 -1
  60. package/dist/cli/setup/DependencyChecker.d.ts +1 -1
  61. package/dist/cli/setup/DependencyChecker.d.ts.map +1 -1
  62. package/dist/cli/setup/PreflightChecker.d.ts.map +1 -1
  63. package/dist/cli/setup/env-metadata.d.ts.map +1 -1
  64. package/dist/cli.js +10 -9
  65. package/dist/cli.js.map +1 -1
  66. package/dist/{config-WTRSZLOC.js → config-23TBYFP5.js} +5 -4
  67. package/dist/config-schema.d.ts +6 -0
  68. package/dist/config-schema.d.ts.map +1 -1
  69. package/dist/config.d.ts +6 -0
  70. package/dist/config.d.ts.map +1 -1
  71. package/dist/{doctor-37JNBGDN.js → doctor-LLETZLW2.js} +3 -3
  72. package/dist/errors/AIExecutionError.d.ts +3 -0
  73. package/dist/errors/AIExecutionError.d.ts.map +1 -1
  74. package/dist/{errors-S3BWYA4I.js → errors-J3ZRP66W.js} +2 -2
  75. package/dist/events/EventBus.d.ts +1 -1
  76. package/dist/events/EventBus.d.ts.map +1 -1
  77. package/dist/i18n/locales/en.d.ts.map +1 -1
  78. package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +16 -14
  81. package/dist/{init-4THZTNXY.js → init-UKTP7LXS.js} +9 -8
  82. package/dist/{init-4THZTNXY.js.map → init-UKTP7LXS.js.map} +1 -1
  83. package/dist/lib.js +10 -8
  84. package/dist/lib.js.map +1 -1
  85. package/dist/orchestrator/PendingDialogStore.d.ts +12 -0
  86. package/dist/orchestrator/PendingDialogStore.d.ts.map +1 -0
  87. package/dist/orchestrator/steps/FailureHandler.d.ts.map +1 -1
  88. package/dist/orchestrator/steps/PhaseLoopStep.d.ts.map +1 -1
  89. package/dist/persistence/PlanPersistence.d.ts +5 -0
  90. package/dist/persistence/PlanPersistence.d.ts.map +1 -1
  91. package/dist/persistence/TodolistExtractor.d.ts +31 -0
  92. package/dist/persistence/TodolistExtractor.d.ts.map +1 -0
  93. package/dist/phases/BasePhase.d.ts.map +1 -1
  94. package/dist/phases/PhaseOutcome.d.ts +2 -0
  95. package/dist/phases/PhaseOutcome.d.ts.map +1 -1
  96. package/dist/phases/PlanPhase.d.ts.map +1 -1
  97. package/dist/prompts/templates.d.ts +2 -2
  98. package/dist/prompts/templates.d.ts.map +1 -1
  99. package/dist/{restart-VEDIKB6M.js → restart-2BCP6AMK.js} +9 -8
  100. package/dist/{restart-VEDIKB6M.js.map → restart-2BCP6AMK.js.map} +1 -1
  101. package/dist/run.js +16 -14
  102. package/dist/run.js.map +1 -1
  103. package/dist/start-ECUOKGM2.js +16 -0
  104. package/dist/start-ECUOKGM2.js.map +1 -0
  105. package/dist/tracker/IssueTracker.d.ts +6 -0
  106. package/dist/tracker/IssueTracker.d.ts.map +1 -1
  107. package/dist/web/routes/api.d.ts.map +1 -1
  108. package/package.json +5 -1
  109. package/src/web/frontend/dist/assets/index-DWOHf3bd.css +1 -0
  110. package/src/web/frontend/dist/assets/index-Dby4j-V_.js +151 -0
  111. package/src/web/frontend/dist/index.html +2 -2
  112. package/dist/PtyRunner-6UGI5STW.js +0 -22
  113. package/dist/chunk-2YQHKXLL.js.map +0 -1
  114. package/dist/chunk-AVGZH64A.js.map +0 -1
  115. package/dist/chunk-C4MFVASL.js.map +0 -1
  116. package/dist/chunk-HDFNMVRQ.js.map +0 -1
  117. package/dist/chunk-IP3QTP5A.js.map +0 -1
  118. package/dist/chunk-LNFMARKQ.js.map +0 -1
  119. package/dist/chunk-NZHKAPU6.js.map +0 -1
  120. package/dist/chunk-SAMTXC4A.js.map +0 -1
  121. package/dist/chunk-U237JSLB.js +0 -1
  122. package/dist/chunk-U6GWFTKA.js +0 -657
  123. package/dist/chunk-U6GWFTKA.js.map +0 -1
  124. package/dist/chunk-YCYVNRLF.js.map +0 -1
  125. package/dist/start-5N6DIWM2.js +0 -15
  126. package/src/web/frontend/dist/assets/index-COYziOhv.css +0 -1
  127. package/src/web/frontend/dist/assets/index-D_oTMuJU.js +0 -151
  128. /package/dist/{AIRunnerRegistry-II3WWSFN.js.map → AIRunnerRegistry-CFDNWSXC.js.map} +0 -0
  129. /package/dist/{LockNote-Z2CLDZNN.js.map → LockNote-W2JNVMW7.js.map} +0 -0
  130. /package/dist/{PtyRunner-6UGI5STW.js.map → PtyRunner-NYASBTRP.js.map} +0 -0
  131. /package/dist/{ai-runner-HLA44WI6.js.map → SdkRunner-U2OTOMZU.js.map} +0 -0
  132. /package/dist/{chunk-U237JSLB.js.map → ai-runner-TOHVJJ76.js.map} +0 -0
  133. /package/dist/{chunk-D47Q5745.js.map → chunk-ENF24C44.js.map} +0 -0
  134. /package/dist/{chunk-GXFG4JU6.js.map → chunk-EU4XFZ2T.js.map} +0 -0
  135. /package/dist/{config-WTRSZLOC.js.map → chunk-MSL7ROVK.js.map} +0 -0
  136. /package/dist/{chunk-2GJ2KA4Z.js.map → chunk-TDKTI363.js.map} +0 -0
  137. /package/dist/{errors-S3BWYA4I.js.map → config-23TBYFP5.js.map} +0 -0
  138. /package/dist/{doctor-37JNBGDN.js.map → doctor-LLETZLW2.js.map} +0 -0
  139. /package/dist/{start-5N6DIWM2.js.map → errors-J3ZRP66W.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-YCYVNRLF.js";
3
+ } from "./chunk-OBGEEGQ3.js";
4
4
 
5
5
  // src/cli/setup/DependencyChecker.ts
6
6
  import { spawn } from "child_process";
@@ -57,27 +57,28 @@ async function getVersion(binary, args = ["--version"]) {
57
57
  });
58
58
  }
59
59
  var DependencyChecker = class {
60
- async checkAll(_aiMode) {
60
+ async checkAll(aiMode) {
61
+ const effectiveMode = aiMode || "cursor-agent";
62
+ const ptyAgent = effectiveMode === "pty" ? process.env.PTY_DEFAULT_AGENT || "claude-internal" : "";
61
63
  const results = await Promise.all([
62
64
  this.checkNode(),
63
65
  this.checkGit(),
64
- this.checkCursor(true),
65
- // cursor-agent 始终 required
66
- this.checkClaudeInternal(false),
67
- // 可选
68
- this.checkCodebuddy(false)
69
- // 可选
66
+ this.checkCursor(effectiveMode === "cursor-agent" || ptyAgent === "cursor-agent"),
67
+ this.checkClaudeInternal(effectiveMode === "claude-internal" || effectiveMode === "pty"),
68
+ this.checkCodebuddy(effectiveMode === "codebuddy" || ptyAgent === "codebuddy")
70
69
  ]);
71
70
  return results;
72
71
  }
73
72
  async checkNode() {
74
73
  const version = await getVersion("node");
74
+ const majorVersion = version ? parseInt(version.split(".")[0], 10) : 0;
75
+ const meetsMinVersion = version !== null && majorVersion >= 20;
75
76
  return {
76
77
  name: "node",
77
78
  displayName: "Node.js (>= 20)",
78
79
  required: true,
79
- installed: version !== null,
80
- version: version ?? void 0,
80
+ installed: meetsMinVersion,
81
+ version: version ? `${version}${!meetsMinVersion ? " (\u9700\u8981 >= 20)" : ""}` : void 0,
81
82
  installCommand: platform() === "linux" ? "curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs" : void 0,
82
83
  installHint: "https://nodejs.org/ or nvm install 20",
83
84
  category: "toolchain",
@@ -407,4 +408,4 @@ async function* streamProcessLines(proc, timeoutMs) {
407
408
  export {
408
409
  DependencyChecker
409
410
  };
410
- //# sourceMappingURL=chunk-HDFNMVRQ.js.map
411
+ //# sourceMappingURL=chunk-Z3OBKODV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/setup/DependencyChecker.ts"],"sourcesContent":["import { ChildProcess, spawn } from 'node:child_process';\nimport { platform, arch } from 'node:os';\nimport { t } from '../../i18n/index.js';\n\nconst INSTALL_TIMEOUT_MS = 120_000;\nconst AI_INSTALL_TIMEOUT_MS = 180_000;\n\nexport type AuthStatus = 'logged_in' | 'not_logged_in' | 'unknown';\n\nexport interface DepCheckResult {\n name: string;\n displayName: string;\n required: boolean;\n installed: boolean;\n version?: string;\n installCommand?: string;\n installHint?: string;\n aiInstallable?: boolean;\n category: 'ai-cli' | 'toolchain';\n authStatus?: AuthStatus;\n loginCommand?: string;\n}\n\nexport interface InstallAllEvent {\n phase?: string;\n dep?: string;\n status?: 'start' | 'done';\n installed?: boolean;\n line?: string;\n}\n\nasync function checkAuth(binary: string, args: string[]): Promise<AuthStatus> {\n return new Promise((resolve) => {\n const proc = spawn(binary, args, { stdio: ['ignore', 'pipe', 'pipe'] });\n const timer = setTimeout(() => { proc.kill('SIGTERM'); resolve('unknown'); }, 10_000);\n proc.on('close', (code) => { clearTimeout(timer); resolve(code === 0 ? 'logged_in' : 'not_logged_in'); });\n proc.on('error', () => { clearTimeout(timer); resolve('unknown'); });\n });\n}\n\nasync function which(binary: string): Promise<string | null> {\n return new Promise((resolve) => {\n const proc = spawn('which', [binary], { stdio: ['ignore', 'pipe', 'ignore'] });\n let out = '';\n proc.stdout.on('data', (d) => { out += d.toString(); });\n proc.on('close', (code) => resolve(code === 0 ? out.trim() : null));\n proc.on('error', () => resolve(null));\n });\n}\n\nasync function getVersion(binary: string, args: string[] = ['--version']): Promise<string | null> {\n return new Promise((resolve) => {\n const proc = spawn(binary, args, { stdio: ['ignore', 'pipe', 'pipe'] });\n let out = '';\n proc.stdout.on('data', (d) => { out += d.toString(); });\n proc.stderr.on('data', (d) => { out += d.toString(); });\n proc.on('close', (code) => {\n if (code === 0 && out.trim()) {\n const match = out.trim().match(/[\\d]+\\.[\\d]+[\\d.a-z-]*/);\n resolve(match ? match[0] : out.trim().split('\\n')[0]);\n } else {\n resolve(null);\n }\n });\n proc.on('error', () => resolve(null));\n });\n}\n\nexport class DependencyChecker {\n async checkAll(aiMode?: string): Promise<DepCheckResult[]> {\n const effectiveMode = aiMode || 'cursor-agent';\n const ptyAgent = effectiveMode === 'pty' ? (process.env.PTY_DEFAULT_AGENT || 'claude-internal') : '';\n const results = await Promise.all([\n this.checkNode(),\n this.checkGit(),\n this.checkCursor(effectiveMode === 'cursor-agent' || ptyAgent === 'cursor-agent'),\n this.checkClaudeInternal(effectiveMode === 'claude-internal' || effectiveMode === 'pty'),\n this.checkCodebuddy(effectiveMode === 'codebuddy' || ptyAgent === 'codebuddy'),\n ]);\n return results;\n }\n\n async checkNode(): Promise<DepCheckResult> {\n const version = await getVersion('node');\n const majorVersion = version ? parseInt(version.split('.')[0], 10) : 0;\n const meetsMinVersion = version !== null && majorVersion >= 20;\n return {\n name: 'node',\n displayName: 'Node.js (>= 20)',\n required: true,\n installed: meetsMinVersion,\n version: version ? `${version}${!meetsMinVersion ? ' (需要 >= 20)' : ''}` : undefined,\n installCommand: platform() === 'linux' ? 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs' : undefined,\n installHint: 'https://nodejs.org/ or nvm install 20',\n category: 'toolchain',\n aiInstallable: true,\n };\n }\n\n async checkGit(): Promise<DepCheckResult> {\n const version = await getVersion('git');\n return {\n name: 'git',\n displayName: 'Git',\n required: true,\n installed: version !== null,\n version: version ?? undefined,\n installCommand: platform() === 'linux' ? 'sudo apt-get install -y git' : undefined,\n installHint: 'sudo apt install git / brew install git',\n category: 'toolchain',\n aiInstallable: true,\n };\n }\n\n async checkClaudeInternal(required: boolean): Promise<DepCheckResult> {\n const binPath = await which('claude-internal');\n const version = binPath ? await getVersion('claude-internal') : null;\n const cmd = 'npm install -g claude-code-internal';\n const authStatus: AuthStatus = binPath ? await checkAuth('claude-internal', ['auth', 'status']) : 'unknown';\n return {\n name: 'claude-internal',\n displayName: 'Claude Internal CLI',\n required,\n installed: binPath !== null,\n version: version ?? undefined,\n installCommand: cmd,\n installHint: cmd,\n category: 'ai-cli',\n aiInstallable: false,\n authStatus,\n loginCommand: 'claude-internal auth login',\n };\n }\n\n async checkCursor(required: boolean): Promise<DepCheckResult> {\n const binPath = await which('cursor-agent');\n const version = binPath ? await getVersion('cursor-agent', ['-v']) : null;\n const authStatus: AuthStatus = binPath ? await checkAuth('cursor-agent', ['auth', 'whoami']) : 'unknown';\n return {\n name: 'cursor-agent',\n displayName: 'Cursor Agent CLI',\n required,\n installed: version !== null,\n version: version ?? undefined,\n // 不设置 installCommand → 前端不显示自动安装按钮\n // cursor-agent 使用 curl | bash 管道安装,在非 TTY 环境下无输出,改为手动安装\n installHint: t('cli.cursorInstallHint'),\n category: 'ai-cli',\n aiInstallable: false,\n authStatus,\n loginCommand: 'cursor-agent auth login',\n };\n }\n\n async checkCodebuddy(required: boolean): Promise<DepCheckResult> {\n const binPath = await which('codebuddy');\n const version = binPath ? await getVersion('codebuddy') : null;\n const cmd = 'npm install -g codebuddy-code';\n const authStatus: AuthStatus = binPath ? await checkAuth('codebuddy', ['auth', 'status']) : 'unknown';\n return {\n name: 'codebuddy',\n displayName: 'CodeBuddy CLI',\n required,\n installed: binPath !== null,\n version: version ?? undefined,\n installCommand: cmd,\n installHint: cmd,\n category: 'ai-cli',\n aiInstallable: false,\n authStatus,\n loginCommand: 'codebuddy auth login',\n };\n }\n\n async checkOne(name: string): Promise<DepCheckResult | null> {\n switch (name) {\n case 'node': return this.checkNode();\n case 'git': return this.checkGit();\n case 'claude-internal': return this.checkClaudeInternal(true);\n case 'cursor-agent': return this.checkCursor(true);\n case 'codebuddy': return this.checkCodebuddy(true);\n default: return null;\n }\n }\n\n async *install(name: string): AsyncGenerator<string> {\n yield t('cli.checkingDep', { name });\n const dep = await this.checkOne(name);\n if (!dep) {\n yield t('cli.unknownDep', { name });\n return;\n }\n if (dep.installed) {\n yield t('cli.alreadyInstalled', { name: dep.displayName, version: dep.version ?? '' });\n return;\n }\n if (!dep.installCommand) {\n yield t('cli.manualInstall', { name: dep.displayName, hint: dep.installHint ?? '' });\n return;\n }\n\n yield t('cli.installing', { name: dep.displayName });\n yield `$ ${dep.installCommand}`;\n\n const proc = spawn(dep.installCommand, {\n stdio: ['ignore', 'pipe', 'pipe'],\n shell: true,\n });\n\n const { exitCode, timedOut, lineCount } = yield* streamProcess(proc, INSTALL_TIMEOUT_MS);\n\n if (timedOut) {\n yield t('cli.installTimeout', { name: dep.displayName, seconds: INSTALL_TIMEOUT_MS / 1000 });\n return;\n }\n\n if (lineCount === 0) {\n yield t('cli.noOutput');\n }\n\n yield t('cli.verifyingInstall');\n\n if (exitCode === 0) {\n yield t('cli.installSuccess', { name: dep.displayName });\n } else {\n yield t('cli.installFailed', { name: dep.displayName, code: exitCode });\n }\n }\n\n async *installWithAI(dep: DepCheckResult): AsyncGenerator<string> {\n const claudePath = await which('claude-internal');\n if (!claudePath) {\n yield t('cli.aiInstallUnavailable');\n return;\n }\n\n yield t('cli.aiInstalling', { name: dep.displayName });\n\n const osInfo = `${platform()} ${arch()}`;\n const prompt = `Please install ${dep.displayName} on the current system (${osInfo}).\\nReference hint: ${dep.installHint ?? dep.installCommand ?? dep.name}\\nAfter installation, verify it was successful by running the version check command.\\nIf you need to modify shell config files (e.g. .bashrc), do it directly.`;\n\n // Remove CLAUDECODE env var to prevent nested session detection\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { CLAUDECODE, ...env } = process.env;\n const proc = spawn('claude-internal', [\n '-p', prompt,\n '--dangerously-skip-permissions',\n ], {\n stdio: ['ignore', 'pipe', 'pipe'],\n shell: false,\n env,\n });\n\n const { exitCode, timedOut } = yield* streamProcess(proc, AI_INSTALL_TIMEOUT_MS, true);\n\n if (timedOut) {\n yield t('cli.aiInstallTimeout', { name: dep.displayName, seconds: AI_INSTALL_TIMEOUT_MS / 1000 });\n return;\n }\n\n if (exitCode === 0) {\n yield t('cli.aiInstallSuccess', { name: dep.displayName });\n } else {\n yield t('cli.aiInstallFailed', { name: dep.displayName, code: exitCode });\n }\n }\n\n async *installAll(aiMode?: string): AsyncGenerator<InstallAllEvent> {\n yield { line: t('cli.installAllStart') };\n\n const installOrder: string[] = ['claude-internal'];\n if (aiMode === 'cursor-agent') {\n installOrder.push('cursor-agent');\n } else if (aiMode === 'codebuddy') {\n installOrder.push('codebuddy');\n }\n installOrder.push('node', 'git');\n\n let checks = await this.checkAll(aiMode);\n\n for (const depName of installOrder) {\n let dep = checks.find((d) => d.name === depName);\n if (!dep) continue;\n\n if (dep.installed) {\n yield { line: t('cli.skippingInstalled', { name: dep.displayName, version: dep.version ?? '' }) };\n continue;\n }\n\n const phase = dep.category === 'ai-cli' ? 'ai-cli' : 'toolchain';\n yield { phase, dep: depName, status: 'start' };\n\n let installed = false;\n let lineCount = 0;\n\n // Skip deps without installCommand (e.g. cursor-agent needs manual install)\n if (!dep.installCommand) {\n yield { line: t('cli.manualInstallRequired', { name: dep.displayName, hint: dep.installHint ?? '' }), dep: depName };\n yield { phase, dep: depName, status: 'done', installed: false };\n continue;\n }\n\n // Try installCommand first\n if (dep.installCommand) {\n yield { line: t('cli.installing', { name: dep.displayName }), dep: depName };\n yield { line: `$ ${dep.installCommand}`, dep: depName };\n\n const proc = spawn(dep.installCommand, {\n stdio: ['ignore', 'pipe', 'pipe'],\n shell: true,\n });\n\n for await (const chunk of streamProcessLines(proc, INSTALL_TIMEOUT_MS)) {\n yield { line: chunk.line, dep: depName };\n lineCount += chunk.count;\n }\n\n if (lineCount === 0) {\n yield { line: t('cli.noOutput'), dep: depName };\n }\n\n yield { line: t('cli.verifyingInstall'), dep: depName };\n\n // Re-check installation\n checks = await this.checkAll(aiMode);\n dep = checks.find((d) => d.name === depName)!;\n installed = dep.installed;\n }\n\n // AI fallback for toolchain deps\n if (!installed && dep.aiInstallable) {\n const claudePath = await which('claude-internal');\n if (claudePath) {\n yield { line: t('cli.tryingAiFallback', { name: dep.displayName }), dep: depName };\n yield { phase: 'ai-fallback', dep: depName, status: 'start' };\n\n for await (const chunk of this.installWithAILines(dep)) {\n yield { line: chunk, dep: depName };\n }\n\n // Re-check installation\n checks = await this.checkAll(aiMode);\n dep = checks.find((d) => d.name === depName)!;\n installed = dep.installed;\n }\n }\n\n yield { phase, dep: depName, status: 'done', installed };\n }\n\n yield { line: t('cli.installAllDone') };\n }\n\n private async *installWithAILines(dep: DepCheckResult): AsyncGenerator<string> {\n for await (const line of this.installWithAI(dep)) {\n yield line;\n }\n }\n}\n\nasync function* streamProcess(\n proc: ChildProcess,\n timeoutMs: number,\n markStderr = false,\n): AsyncGenerator<string, { exitCode: number; timedOut: boolean; lineCount: number }> {\n const chunks: string[] = [];\n let notify: (() => void) | null = null;\n let closed = false;\n let closedCode = 1;\n let timedOut = false;\n let lineCount = 0;\n\n const onStdout = (d: Buffer) => {\n chunks.push(d.toString());\n notify?.();\n };\n const onStderr = (d: Buffer) => {\n const text = d.toString();\n chunks.push(markStderr ? `[stderr] ${text}` : text);\n notify?.();\n };\n proc.stdout?.on('data', onStdout);\n proc.stderr?.on('data', onStderr);\n\n proc.on('close', (code) => {\n closed = true;\n closedCode = code ?? 1;\n notify?.();\n });\n\n const timer = setTimeout(() => {\n timedOut = true;\n proc.kill('SIGTERM');\n setTimeout(() => { if (!closed) proc.kill('SIGKILL'); }, 5000);\n notify?.();\n }, timeoutMs);\n\n try {\n while (!closed || chunks.length > 0) {\n if (chunks.length > 0) {\n lineCount++;\n yield chunks.shift()!;\n } else if (!closed) {\n await new Promise<void>((r) => { notify = r; });\n notify = null;\n }\n }\n } finally {\n clearTimeout(timer);\n }\n\n return { exitCode: closedCode, timedOut, lineCount };\n}\n\nasync function* streamProcessLines(\n proc: ChildProcess,\n timeoutMs: number,\n): AsyncGenerator<{ line: string; count: number }> {\n const chunks: string[] = [];\n let notify: (() => void) | null = null;\n let closed = false;\n let timedOut = false;\n let count = 0;\n\n const onStdout = (d: Buffer) => {\n chunks.push(d.toString());\n notify?.();\n };\n const onStderr = (d: Buffer) => {\n chunks.push(`[stderr] ${d.toString()}`);\n notify?.();\n };\n proc.stdout?.on('data', onStdout);\n proc.stderr?.on('data', onStderr);\n\n proc.on('close', () => {\n closed = true;\n notify?.();\n });\n\n const timer = setTimeout(() => {\n timedOut = true;\n proc.kill('SIGTERM');\n setTimeout(() => { if (!closed) proc.kill('SIGKILL'); }, 5000);\n notify?.();\n }, timeoutMs);\n\n try {\n while (!closed || chunks.length > 0) {\n if (chunks.length > 0) {\n count++;\n yield { line: chunks.shift()!, count };\n } else if (!closed) {\n await new Promise<void>((r) => { notify = r; });\n notify = null;\n }\n }\n } finally {\n clearTimeout(timer);\n }\n\n if (timedOut) {\n yield { line: '[stderr] Process timed out', count };\n }\n}\n"],"mappings":"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","names":[]}
@@ -19,6 +19,8 @@ export interface SetupConfig {
19
19
  mode: string;
20
20
  model?: string;
21
21
  phaseTimeoutMs?: number;
22
+ usePty?: boolean;
23
+ ptyDefaultAgent?: string;
22
24
  };
23
25
  poll?: {
24
26
  discoveryIntervalMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigGenerator.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/ConfigGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigGenerator.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/ConfigGenerator.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export interface InstallAllEvent {
20
20
  line?: string;
21
21
  }
22
22
  export declare class DependencyChecker {
23
- checkAll(_aiMode?: string): Promise<DepCheckResult[]>;
23
+ checkAll(aiMode?: string): Promise<DepCheckResult[]>;
24
24
  checkNode(): Promise<DepCheckResult>;
25
25
  checkGit(): Promise<DepCheckResult>;
26
26
  checkClaudeInternal(required: boolean): Promise<DepCheckResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"DependencyChecker.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/DependencyChecker.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,SAAS,CAAC;AAEnE,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;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuCD,qBAAa,iBAAiB;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAWrD,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAepC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAenC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB/D,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBvD,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWrD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IA4C7C,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;IAsC1D,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC;YAsFpD,kBAAkB;CAKlC"}
1
+ {"version":3,"file":"DependencyChecker.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/DependencyChecker.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,SAAS,CAAC;AAEnE,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;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuCD,qBAAa,iBAAiB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAapD,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAiBpC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAenC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB/D,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBvD,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWrD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IA4C7C,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;IAsC1D,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC;YAsFpD,kBAAkB;CAKlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PreflightChecker.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/PreflightChecker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOxD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgDD,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEjC,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAc1C,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO;IAQxC,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IA4BxC,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;IAkB7C,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;IA6B3C,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC;IAiC5C,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;YA2BvC,qBAAqB;IAiC7B,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuC9C,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuChD,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;CAY/C"}
1
+ {"version":3,"file":"PreflightChecker.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/PreflightChecker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOxD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgDD,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEjC,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAc1C,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO;IAQxC,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IA4BxC,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;IAkB7C,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;IA6B3C,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC;IAiC5C,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;YA4BvC,qBAAqB;IAiC7B,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuC9C,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuChD,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;CAY/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"env-metadata.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/env-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,UAAU;IACzB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA6B5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA4KnD,CAAC"}
1
+ {"version":3,"file":"env-metadata.d.ts","sourceRoot":"","sources":["../../../src/cli/setup/env-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,UAAU;IACzB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA6B5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA+KnD,CAAC"}
package/dist/cli.js CHANGED
@@ -12,13 +12,14 @@ import {
12
12
  } from "./chunk-B7XUZJOK.js";
13
13
  import {
14
14
  resolveConfigFilePath
15
- } from "./chunk-NZHKAPU6.js";
15
+ } from "./chunk-FJTZKAJA.js";
16
16
  import {
17
17
  resolveDisplayHost
18
18
  } from "./chunk-AKXDQH25.js";
19
19
  import "./chunk-TN2SYADO.js";
20
- import "./chunk-SAMTXC4A.js";
21
- import "./chunk-AVGZH64A.js";
20
+ import "./chunk-TFEPHOVE.js";
21
+ import "./chunk-G7QI5WDI.js";
22
+ import "./chunk-2RWGZPNF.js";
22
23
  import "./chunk-GF2RRYHB.js";
23
24
 
24
25
  // src/cli/index.ts
@@ -88,11 +89,11 @@ var defaults = getCliDefaults();
88
89
  var program = new Command();
89
90
  program.name("issue-auto-finish").description("Issue Auto-Finish: AI-powered issue resolution daemon").version(pkg.version, "-v, --version");
90
91
  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) => {
91
- const { initCommand } = await import("./init-4THZTNXY.js");
92
+ const { initCommand } = await import("./init-UKTP7LXS.js");
92
93
  await initCommand({ port: parseInt(opts.port, 10), config: opts.config });
93
94
  });
94
95
  program.command("start").description("Start the issue-auto-finish daemon service").option("-c, --config <path>", "Path to .env config file").option("-d, --daemon", "Run as a background daemon").action(async (opts) => {
95
- const { startCommand } = await import("./start-5N6DIWM2.js");
96
+ const { startCommand } = await import("./start-ECUOKGM2.js");
96
97
  await startCommand({ config: opts.config, daemon: opts.daemon });
97
98
  });
98
99
  program.command("stop").description("Stop the running service").option("-p, --port <port>", "Web UI port", defaults.port).option("-H, --host <host>", "Service host", defaults.host).option("-f, --force", "Force kill via SIGKILL").action(async (opts) => {
@@ -104,7 +105,7 @@ program.command("stop").description("Stop the running service").option("-p, --po
104
105
  });
105
106
  });
106
107
  program.command("restart").description("Restart the service (stop + start)").option("-c, --config <path>", "Path to .env config file").option("-p, --port <port>", "Web UI port", defaults.port).option("-H, --host <host>", "Service host", defaults.host).option("-d, --daemon", "Restart as a background daemon").action(async (opts) => {
107
- const { restartCommand } = await import("./restart-VEDIKB6M.js");
108
+ const { restartCommand } = await import("./restart-2BCP6AMK.js");
108
109
  await restartCommand({
109
110
  config: opts.config,
110
111
  host: opts.host,
@@ -113,11 +114,11 @@ program.command("restart").description("Restart the service (stop + start)").opt
113
114
  });
114
115
  });
115
116
  program.command("doctor").description("Check environment dependencies").action(async () => {
116
- const { doctorCommand } = await import("./doctor-37JNBGDN.js");
117
+ const { doctorCommand } = await import("./doctor-LLETZLW2.js");
117
118
  await doctorCommand();
118
119
  });
119
120
  program.command("analyze").description("Analyze target repository and generate knowledge.json").option("-d, --dir <path>", "Project directory to analyze (defaults to PROJECT_WORK_DIR)").option("-o, --output <path>", "Output path for knowledge.json").option("-f, --force", "Overwrite existing knowledge.json").action(async (opts) => {
120
- const { analyzeCommand } = await import("./analyze-ZIXNC5GN.js");
121
+ const { analyzeCommand } = await import("./analyze-DBH4K3J7.js");
121
122
  await analyzeCommand({ dir: opts.dir, output: opts.output, force: opts.force });
122
123
  });
123
124
  program.command("status").description("Show service status").option("-p, --port <port>", "Web UI port to query", defaults.port).option("-H, --host <host>", "Service host to query", defaults.host).option("--json", "Output raw JSON").action(async (opts) => {
@@ -250,7 +251,7 @@ program.command("issues").description("List tracked issues").option("-p, --port
250
251
  });
251
252
  });
252
253
  program.command("braindump").description("Batch braindump: split ideas into tasks and execute in parallel").option("-f, --file <path>", "Read input from file").option("-t, --target <branch>", "Target branch for merging").option("-c, --concurrency <n>", "Max concurrent tasks").option("--runner <mode>", "Default AI runner mode (claude-internal, cursor-agent, codebuddy)").option("--auto", "Skip confirmation and execute immediately").option("-p, --port <port>", "Service port (proxy to running daemon)", defaults.port).option("-H, --host <host>", "Service host", defaults.host).action(async (opts) => {
253
- const { braindumpCommand } = await import("./braindump-56WAY2RD.js");
254
+ const { braindumpCommand } = await import("./braindump-RYI4BGMG.js");
254
255
  await braindumpCommand({
255
256
  file: opts.file,
256
257
  target: opts.target,
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/index.ts","../src/cli/utils/defaults.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport { readFileSync, existsSync } from 'node:fs';\nimport { execFile } from 'node:child_process';\nimport { fileURLToPath } from 'node:url';\nimport path from 'node:path';\nimport {\n bold, dim, green, yellow, red, cyan,\n formatUptime, buildServiceUrl, formatConnectionError,\n} from './utils/format.js';\nimport { getCliDefaults } from './utils/defaults.js';\nimport { resolveDisplayHost } from '../utils/network.js';\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 === '@xdevops/issue-auto-finish' || 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\n/**\n * Detect global package manager and upgrade the CLI binary.\n * Supports Volta and plain npm.\n */\nasync function upgradeGlobalCli(targetVersion: string): Promise<void> {\n const pkgSpec = `${pkg.name}@${targetVersion}`;\n\n const runCmd = (cmd: string, args: string[]): Promise<string> =>\n new Promise((resolve, reject) => {\n execFile(cmd, args, { timeout: 120_000 }, (err, stdout, stderr) => {\n if (err) {\n reject(new Error(`${cmd} ${args.join(' ')} failed: ${stderr || err.message}`));\n return;\n }\n resolve(stdout);\n });\n });\n\n // Detect whether the CLI was installed via Volta\n const cliPath = process.argv[1] ?? '';\n const isVolta = cliPath.includes('.volta') || !!process.env.VOLTA_HOME;\n\n if (isVolta) {\n console.log(` Upgrading global CLI via Volta...`);\n await runCmd('volta', ['install', pkgSpec]);\n } else {\n console.log(` Upgrading global CLI via npm...`);\n await runCmd('npm', ['install', '-g', pkgSpec]);\n }\n}\n\n// Resolve default host/port from .env config (lazy, no Zod validation)\nconst defaults = getCliDefaults();\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, '-v, --version');\n\n// ------ init ------\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\n// ------ start ------\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 .option('-d, --daemon', 'Run as a background daemon')\n .action(async (opts) => {\n const { startCommand } = await import('./commands/start.js');\n await startCommand({ config: opts.config, daemon: opts.daemon });\n });\n\n// ------ stop ------\n\nprogram\n .command('stop')\n .description('Stop the running service')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .option('-f, --force', 'Force kill via SIGKILL')\n .action(async (opts) => {\n const { stopCommand } = await import('./commands/stop.js');\n await stopCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n force: !!opts.force,\n });\n });\n\n// ------ restart ------\n\nprogram\n .command('restart')\n .description('Restart the service (stop + start)')\n .option('-c, --config <path>', 'Path to .env config file')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .option('-d, --daemon', 'Restart as a background daemon')\n .action(async (opts) => {\n const { restartCommand } = await import('./commands/restart.js');\n await restartCommand({\n config: opts.config,\n host: opts.host,\n port: parseInt(opts.port, 10),\n daemon: opts.daemon,\n });\n });\n\n// ------ doctor ------\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\n// ------ analyze ------\n\nprogram\n .command('analyze')\n .description('Analyze target repository and generate knowledge.json')\n .option('-d, --dir <path>', 'Project directory to analyze (defaults to PROJECT_WORK_DIR)')\n .option('-o, --output <path>', 'Output path for knowledge.json')\n .option('-f, --force', 'Overwrite existing knowledge.json')\n .action(async (opts) => {\n const { analyzeCommand } = await import('./commands/analyze.js');\n await analyzeCommand({ dir: opts.dir, output: opts.output, force: opts.force });\n });\n\n// ------ status ------\n\ninterface StatusData {\n uptime: number;\n pid: number;\n version: string;\n config: {\n aiMode: string;\n aiModel: string;\n pipelineMode: string;\n baseBranch: string;\n projectPath: string;\n maxConcurrent: number;\n webHost: string;\n webPort: number;\n };\n issues: {\n total: number;\n active: number;\n failed: number;\n };\n}\n\nprogram\n .command('status')\n .description('Show service status')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('--json', 'Output raw JSON')\n .action(async (opts) => {\n const host = opts.host as string;\n const port = parseInt(opts.port, 10);\n const url = buildServiceUrl(host, port);\n try {\n const resp = await fetch(`${url}/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 StatusData;\n\n if (opts.json) {\n console.log(JSON.stringify(status, null, 2));\n return;\n }\n\n const cfg = status.config;\n const issues = status.issues;\n const webUrl = `http://${resolveDisplayHost(cfg.webHost)}:${cfg.webPort}`;\n\n console.log(`\\n ${bold('Issue Auto-Finish Status')}\\n`);\n console.log(` ${dim('Service:')} ${green('running')} (PID ${status.pid}) ${dim('Version:')} ${status.version}`);\n console.log(` ${dim('Uptime:')} ${formatUptime(status.uptime)} ${dim('Web UI:')} ${cyan(webUrl)}`);\n console.log('');\n console.log(` ${dim('AI Mode:')} ${cfg.aiMode} ${dim('Pipeline:')} ${cfg.pipelineMode}`);\n console.log(` ${dim('AI Model:')} ${cfg.aiModel} ${dim('Branch:')} ${cfg.baseBranch}`);\n console.log(` ${dim('Project:')} ${cfg.projectPath} ${dim('Concurrent:')} ${cfg.maxConcurrent}`);\n console.log('');\n const issuesSummary = [\n `${issues.total} total`,\n `${issues.active} active`,\n issues.failed > 0 ? red(`${issues.failed} failed`) : `${issues.failed} failed`,\n ].join(', ');\n console.log(` ${dim('Issues:')} ${issuesSummary}`);\n console.log('');\n } catch (err) {\n console.error(formatConnectionError(host, port, err));\n process.exitCode = 1;\n }\n });\n\n// ------ update ------\n\nprogram\n .command('update')\n .description('Check for updates or trigger an update')\n .option('--check', 'Only check for a new version without updating')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .action(async (opts) => {\n const host = opts.host as string;\n const port = parseInt(opts.port, 10);\n const url = buildServiceUrl(host, port);\n const checkOnly = !!opts.check;\n\n try {\n if (checkOnly) {\n const resp = await fetch(`${url}/api/system/update-check`, {\n method: 'POST',\n signal: AbortSignal.timeout(20_000),\n });\n if (!resp.ok) {\n const body = await resp.json() as { error?: string };\n console.error(` Check failed: ${body.error ?? resp.statusText}`);\n process.exitCode = 1;\n return;\n }\n const result = await resp.json() as { currentVersion: string; latestVersion: string; hasUpdate: boolean };\n console.log(`\\n Current version: ${result.currentVersion}`);\n console.log(` Latest version: ${result.latestVersion}`);\n console.log(` Update available: ${result.hasUpdate ? yellow('Yes') : green('No')}\\n`);\n } else {\n const checkResp = await fetch(`${url}/api/system/update-check`, {\n method: 'POST',\n signal: AbortSignal.timeout(20_000),\n });\n if (!checkResp.ok) {\n const body = await checkResp.json() as { error?: string };\n console.error(` Check failed: ${body.error ?? checkResp.statusText}`);\n process.exitCode = 1;\n return;\n }\n const result = await checkResp.json() as { currentVersion: string; latestVersion: string; hasUpdate: boolean };\n if (!result.hasUpdate) {\n console.log(`\\n ${green('Already up to date')} (v${result.currentVersion})\\n`);\n return;\n }\n\n console.log(`\\n Updating from v${result.currentVersion} to v${result.latestVersion}...`);\n const updateResp = await fetch(`${url}/api/system/update`, {\n method: 'POST',\n signal: AbortSignal.timeout(10_000),\n });\n if (!updateResp.ok) {\n const body = await updateResp.json() as { error?: string };\n console.error(` Update trigger failed: ${body.error ?? updateResp.statusText}`);\n process.exitCode = 1;\n return;\n }\n console.log(' Update triggered. The service will restart automatically via PM2.');\n\n // Also upgrade global CLI binary\n try {\n await upgradeGlobalCli(result.latestVersion);\n console.log(` ${green('Global CLI upgraded to v' + result.latestVersion)}\\n`);\n } catch (cliErr) {\n console.warn(` ${yellow('Global CLI upgrade failed (service update still proceeding):')}`);\n console.warn(` ${dim((cliErr as Error).message)}\\n`);\n }\n }\n } catch (err) {\n console.error(formatConnectionError(host, port, err));\n process.exitCode = 1;\n }\n });\n\n// ------ logs ------\n\nprogram\n .command('logs')\n .description('View service logs')\n .option('-f, --follow', 'Follow log output in real-time')\n .option('-n, --lines <count>', 'Number of lines to show', '50')\n .option('--error', 'Show only error logs')\n .action(async (opts) => {\n const { logsCommand } = await import('./commands/logs.js');\n await logsCommand({\n follow: !!opts.follow,\n lines: parseInt(opts.lines, 10),\n errorOnly: !!opts.error,\n });\n });\n\n// ------ issues ------\n\nprogram\n .command('issues')\n .description('List tracked issues')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('-s, --state <state>', 'Filter by state (active, failed, completed, all)', 'all')\n .option('--json', 'Output raw JSON')\n .action(async (opts) => {\n const { issuesCommand } = await import('./commands/issues.js');\n await issuesCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n state: opts.state,\n json: !!opts.json,\n });\n });\n\n// ------ braindump ------\n\nprogram\n .command('braindump')\n .description('Batch braindump: split ideas into tasks and execute in parallel')\n .option('-f, --file <path>', 'Read input from file')\n .option('-t, --target <branch>', 'Target branch for merging')\n .option('-c, --concurrency <n>', 'Max concurrent tasks')\n .option('--runner <mode>', 'Default AI runner mode (claude-internal, cursor-agent, codebuddy)')\n .option('--auto', 'Skip confirmation and execute immediately')\n .option('-p, --port <port>', 'Service port (proxy to running daemon)', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .action(async (opts) => {\n const { braindumpCommand } = await import('./commands/braindump.js');\n await braindumpCommand({\n file: opts.file,\n target: opts.target,\n concurrency: opts.concurrency ? parseInt(opts.concurrency, 10) : undefined,\n runner: opts.runner,\n auto: !!opts.auto,\n port: opts.port,\n host: opts.host,\n });\n });\n\n// ------ distill ------\n\nprogram\n .command('distill [action]')\n .description('Knowledge distillation management (run, status, search)')\n .argument('[query]', 'Search query (for distill search)')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('--json', 'Output raw JSON')\n .action(async (action, query, opts) => {\n const { distillCommand } = await import('./commands/distill.js');\n await distillCommand({\n action: action || 'status',\n query,\n host: opts.host,\n port: parseInt(opts.port, 10),\n json: !!opts.json,\n });\n });\n\n// ------ knowledge ------\n\nprogram\n .command('knowledge [action]')\n .description('Knowledge sync management (publish, restore, status)')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('--json', 'Output raw JSON')\n .action(async (action, opts) => {\n const { knowledgeSyncCommand } = await import('./commands/knowledge-sync.js');\n await knowledgeSyncCommand({\n action: action || 'status',\n host: opts.host,\n port: parseInt(opts.port, 10),\n json: !!opts.json,\n });\n });\n\n// ------ migrate ------\n\nprogram\n .command('migrate')\n .description('Migrate data from PM2 source-mode to npm package mode')\n .requiredOption('-s, --source <path>', 'Source project directory (PM2 mode)')\n .option('-f, --force', 'Overwrite existing files without asking')\n .option('--dry-run', 'Show what would be migrated without copying')\n .action(async (opts) => {\n const { migrateCommand } = await import('./commands/migrate.js');\n await migrateCommand({ source: opts.source, force: !!opts.force, dryRun: !!opts.dryRun });\n });\n\n// ------ lock-migrate ------\n\nprogram\n .command('lock-migrate')\n .description('Migrate existing active issues to use lock notes (one-time upgrade)')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .action(async (opts) => {\n const { lockMigrateCommand } = await import('./commands/lock-migrate.js');\n await lockMigrateCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n });\n });\n\n// ------ release-locks ------\n\nprogram\n .command('release-locks')\n .description('Release all lock notes held by the current node')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .action(async (opts) => {\n const { releaseLocksCommand } = await import('./commands/release-locks.js');\n await releaseLocksCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n });\n });\n\nprogram.parse();\n","/**\n * CLI defaults — resolve --host / --port defaults from .env config.\n *\n * Reads the .env file (same lookup chain as the service) to extract\n * WEB_HOST and WEB_PORT, so CLI commands automatically connect to\n * the right address without manual --host / --port flags.\n *\n * This is a lightweight, lazy-init module — it only parses .env when\n * the defaults are first accessed, and does NOT import the full config\n * stack (no Zod validation, no side effects).\n */\nimport { config as loadDotenv } from 'dotenv';\nimport { resolveConfigFilePath } from '../../config.js';\n\ninterface CliDefaults {\n host: string;\n port: string;\n}\n\nlet _cached: CliDefaults | null = null;\n\n/**\n * Return default host / port for CLI commands.\n *\n * Priority:\n * 1. .env `WEB_HOST` / `WEB_PORT` (via resolveConfigFilePath)\n * 2. Hardcoded fallbacks: `127.0.0.1` / `3000`\n */\nexport function getCliDefaults(): CliDefaults {\n if (_cached) return _cached;\n\n try {\n const envFile = resolveConfigFilePath();\n const result = loadDotenv({ path: envFile, override: false });\n const parsed = result.parsed ?? {};\n\n _cached = {\n host: parsed.WEB_HOST || '127.0.0.1',\n port: parsed.WEB_PORT || '3000',\n };\n } catch {\n _cached = { host: '127.0.0.1', port: '3000' };\n }\n\n return _cached;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli/index.ts","../src/cli/utils/defaults.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport { readFileSync, existsSync } from 'node:fs';\nimport { execFile } from 'node:child_process';\nimport { fileURLToPath } from 'node:url';\nimport path from 'node:path';\nimport {\n bold, dim, green, yellow, red, cyan,\n formatUptime, buildServiceUrl, formatConnectionError,\n} from './utils/format.js';\nimport { getCliDefaults } from './utils/defaults.js';\nimport { resolveDisplayHost } from '../utils/network.js';\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 === '@xdevops/issue-auto-finish' || 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\n/**\n * Detect global package manager and upgrade the CLI binary.\n * Supports Volta and plain npm.\n */\nasync function upgradeGlobalCli(targetVersion: string): Promise<void> {\n const pkgSpec = `${pkg.name}@${targetVersion}`;\n\n const runCmd = (cmd: string, args: string[]): Promise<string> =>\n new Promise((resolve, reject) => {\n execFile(cmd, args, { timeout: 120_000 }, (err, stdout, stderr) => {\n if (err) {\n reject(new Error(`${cmd} ${args.join(' ')} failed: ${stderr || err.message}`));\n return;\n }\n resolve(stdout);\n });\n });\n\n // Detect whether the CLI was installed via Volta\n const cliPath = process.argv[1] ?? '';\n const isVolta = cliPath.includes('.volta') || !!process.env.VOLTA_HOME;\n\n if (isVolta) {\n console.log(` Upgrading global CLI via Volta...`);\n await runCmd('volta', ['install', pkgSpec]);\n } else {\n console.log(` Upgrading global CLI via npm...`);\n await runCmd('npm', ['install', '-g', pkgSpec]);\n }\n}\n\n// Resolve default host/port from .env config (lazy, no Zod validation)\nconst defaults = getCliDefaults();\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, '-v, --version');\n\n// ------ init ------\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\n// ------ start ------\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 .option('-d, --daemon', 'Run as a background daemon')\n .action(async (opts) => {\n const { startCommand } = await import('./commands/start.js');\n await startCommand({ config: opts.config, daemon: opts.daemon });\n });\n\n// ------ stop ------\n\nprogram\n .command('stop')\n .description('Stop the running service')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .option('-f, --force', 'Force kill via SIGKILL')\n .action(async (opts) => {\n const { stopCommand } = await import('./commands/stop.js');\n await stopCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n force: !!opts.force,\n });\n });\n\n// ------ restart ------\n\nprogram\n .command('restart')\n .description('Restart the service (stop + start)')\n .option('-c, --config <path>', 'Path to .env config file')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .option('-d, --daemon', 'Restart as a background daemon')\n .action(async (opts) => {\n const { restartCommand } = await import('./commands/restart.js');\n await restartCommand({\n config: opts.config,\n host: opts.host,\n port: parseInt(opts.port, 10),\n daemon: opts.daemon,\n });\n });\n\n// ------ doctor ------\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\n// ------ analyze ------\n\nprogram\n .command('analyze')\n .description('Analyze target repository and generate knowledge.json')\n .option('-d, --dir <path>', 'Project directory to analyze (defaults to PROJECT_WORK_DIR)')\n .option('-o, --output <path>', 'Output path for knowledge.json')\n .option('-f, --force', 'Overwrite existing knowledge.json')\n .action(async (opts) => {\n const { analyzeCommand } = await import('./commands/analyze.js');\n await analyzeCommand({ dir: opts.dir, output: opts.output, force: opts.force });\n });\n\n// ------ status ------\n\ninterface StatusData {\n uptime: number;\n pid: number;\n version: string;\n config: {\n aiMode: string;\n aiModel: string;\n pipelineMode: string;\n baseBranch: string;\n projectPath: string;\n maxConcurrent: number;\n webHost: string;\n webPort: number;\n };\n issues: {\n total: number;\n active: number;\n failed: number;\n };\n}\n\nprogram\n .command('status')\n .description('Show service status')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('--json', 'Output raw JSON')\n .action(async (opts) => {\n const host = opts.host as string;\n const port = parseInt(opts.port, 10);\n const url = buildServiceUrl(host, port);\n try {\n const resp = await fetch(`${url}/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 StatusData;\n\n if (opts.json) {\n console.log(JSON.stringify(status, null, 2));\n return;\n }\n\n const cfg = status.config;\n const issues = status.issues;\n const webUrl = `http://${resolveDisplayHost(cfg.webHost)}:${cfg.webPort}`;\n\n console.log(`\\n ${bold('Issue Auto-Finish Status')}\\n`);\n console.log(` ${dim('Service:')} ${green('running')} (PID ${status.pid}) ${dim('Version:')} ${status.version}`);\n console.log(` ${dim('Uptime:')} ${formatUptime(status.uptime)} ${dim('Web UI:')} ${cyan(webUrl)}`);\n console.log('');\n console.log(` ${dim('AI Mode:')} ${cfg.aiMode} ${dim('Pipeline:')} ${cfg.pipelineMode}`);\n console.log(` ${dim('AI Model:')} ${cfg.aiModel} ${dim('Branch:')} ${cfg.baseBranch}`);\n console.log(` ${dim('Project:')} ${cfg.projectPath} ${dim('Concurrent:')} ${cfg.maxConcurrent}`);\n console.log('');\n const issuesSummary = [\n `${issues.total} total`,\n `${issues.active} active`,\n issues.failed > 0 ? red(`${issues.failed} failed`) : `${issues.failed} failed`,\n ].join(', ');\n console.log(` ${dim('Issues:')} ${issuesSummary}`);\n console.log('');\n } catch (err) {\n console.error(formatConnectionError(host, port, err));\n process.exitCode = 1;\n }\n });\n\n// ------ update ------\n\nprogram\n .command('update')\n .description('Check for updates or trigger an update')\n .option('--check', 'Only check for a new version without updating')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .action(async (opts) => {\n const host = opts.host as string;\n const port = parseInt(opts.port, 10);\n const url = buildServiceUrl(host, port);\n const checkOnly = !!opts.check;\n\n try {\n if (checkOnly) {\n const resp = await fetch(`${url}/api/system/update-check`, {\n method: 'POST',\n signal: AbortSignal.timeout(20_000),\n });\n if (!resp.ok) {\n const body = await resp.json() as { error?: string };\n console.error(` Check failed: ${body.error ?? resp.statusText}`);\n process.exitCode = 1;\n return;\n }\n const result = await resp.json() as { currentVersion: string; latestVersion: string; hasUpdate: boolean };\n console.log(`\\n Current version: ${result.currentVersion}`);\n console.log(` Latest version: ${result.latestVersion}`);\n console.log(` Update available: ${result.hasUpdate ? yellow('Yes') : green('No')}\\n`);\n } else {\n const checkResp = await fetch(`${url}/api/system/update-check`, {\n method: 'POST',\n signal: AbortSignal.timeout(20_000),\n });\n if (!checkResp.ok) {\n const body = await checkResp.json() as { error?: string };\n console.error(` Check failed: ${body.error ?? checkResp.statusText}`);\n process.exitCode = 1;\n return;\n }\n const result = await checkResp.json() as { currentVersion: string; latestVersion: string; hasUpdate: boolean };\n if (!result.hasUpdate) {\n console.log(`\\n ${green('Already up to date')} (v${result.currentVersion})\\n`);\n return;\n }\n\n console.log(`\\n Updating from v${result.currentVersion} to v${result.latestVersion}...`);\n const updateResp = await fetch(`${url}/api/system/update`, {\n method: 'POST',\n signal: AbortSignal.timeout(10_000),\n });\n if (!updateResp.ok) {\n const body = await updateResp.json() as { error?: string };\n console.error(` Update trigger failed: ${body.error ?? updateResp.statusText}`);\n process.exitCode = 1;\n return;\n }\n console.log(' Update triggered. The service will restart automatically via PM2.');\n\n // Also upgrade global CLI binary\n try {\n await upgradeGlobalCli(result.latestVersion);\n console.log(` ${green('Global CLI upgraded to v' + result.latestVersion)}\\n`);\n } catch (cliErr) {\n console.warn(` ${yellow('Global CLI upgrade failed (service update still proceeding):')}`);\n console.warn(` ${dim((cliErr as Error).message)}\\n`);\n }\n }\n } catch (err) {\n console.error(formatConnectionError(host, port, err));\n process.exitCode = 1;\n }\n });\n\n// ------ logs ------\n\nprogram\n .command('logs')\n .description('View service logs')\n .option('-f, --follow', 'Follow log output in real-time')\n .option('-n, --lines <count>', 'Number of lines to show', '50')\n .option('--error', 'Show only error logs')\n .action(async (opts) => {\n const { logsCommand } = await import('./commands/logs.js');\n await logsCommand({\n follow: !!opts.follow,\n lines: parseInt(opts.lines, 10),\n errorOnly: !!opts.error,\n });\n });\n\n// ------ issues ------\n\nprogram\n .command('issues')\n .description('List tracked issues')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('-s, --state <state>', 'Filter by state (active, failed, completed, all)', 'all')\n .option('--json', 'Output raw JSON')\n .action(async (opts) => {\n const { issuesCommand } = await import('./commands/issues.js');\n await issuesCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n state: opts.state,\n json: !!opts.json,\n });\n });\n\n// ------ braindump ------\n\nprogram\n .command('braindump')\n .description('Batch braindump: split ideas into tasks and execute in parallel')\n .option('-f, --file <path>', 'Read input from file')\n .option('-t, --target <branch>', 'Target branch for merging')\n .option('-c, --concurrency <n>', 'Max concurrent tasks')\n .option('--runner <mode>', 'Default AI runner mode (claude-internal, cursor-agent, codebuddy)')\n .option('--auto', 'Skip confirmation and execute immediately')\n .option('-p, --port <port>', 'Service port (proxy to running daemon)', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .action(async (opts) => {\n const { braindumpCommand } = await import('./commands/braindump.js');\n await braindumpCommand({\n file: opts.file,\n target: opts.target,\n concurrency: opts.concurrency ? parseInt(opts.concurrency, 10) : undefined,\n runner: opts.runner,\n auto: !!opts.auto,\n port: opts.port,\n host: opts.host,\n });\n });\n\n// ------ distill ------\n\nprogram\n .command('distill [action]')\n .description('Knowledge distillation management (run, status, search)')\n .argument('[query]', 'Search query (for distill search)')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('--json', 'Output raw JSON')\n .action(async (action, query, opts) => {\n const { distillCommand } = await import('./commands/distill.js');\n await distillCommand({\n action: action || 'status',\n query,\n host: opts.host,\n port: parseInt(opts.port, 10),\n json: !!opts.json,\n });\n });\n\n// ------ knowledge ------\n\nprogram\n .command('knowledge [action]')\n .description('Knowledge sync management (publish, restore, status)')\n .option('-p, --port <port>', 'Web UI port to query', defaults.port)\n .option('-H, --host <host>', 'Service host to query', defaults.host)\n .option('--json', 'Output raw JSON')\n .action(async (action, opts) => {\n const { knowledgeSyncCommand } = await import('./commands/knowledge-sync.js');\n await knowledgeSyncCommand({\n action: action || 'status',\n host: opts.host,\n port: parseInt(opts.port, 10),\n json: !!opts.json,\n });\n });\n\n// ------ migrate ------\n\nprogram\n .command('migrate')\n .description('Migrate data from PM2 source-mode to npm package mode')\n .requiredOption('-s, --source <path>', 'Source project directory (PM2 mode)')\n .option('-f, --force', 'Overwrite existing files without asking')\n .option('--dry-run', 'Show what would be migrated without copying')\n .action(async (opts) => {\n const { migrateCommand } = await import('./commands/migrate.js');\n await migrateCommand({ source: opts.source, force: !!opts.force, dryRun: !!opts.dryRun });\n });\n\n// ------ lock-migrate ------\n\nprogram\n .command('lock-migrate')\n .description('Migrate existing active issues to use lock notes (one-time upgrade)')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .action(async (opts) => {\n const { lockMigrateCommand } = await import('./commands/lock-migrate.js');\n await lockMigrateCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n });\n });\n\n// ------ release-locks ------\n\nprogram\n .command('release-locks')\n .description('Release all lock notes held by the current node')\n .option('-p, --port <port>', 'Web UI port', defaults.port)\n .option('-H, --host <host>', 'Service host', defaults.host)\n .action(async (opts) => {\n const { releaseLocksCommand } = await import('./commands/release-locks.js');\n await releaseLocksCommand({\n host: opts.host,\n port: parseInt(opts.port, 10),\n });\n });\n\nprogram.parse();\n","/**\n * CLI defaults — resolve --host / --port defaults from .env config.\n *\n * Reads the .env file (same lookup chain as the service) to extract\n * WEB_HOST and WEB_PORT, so CLI commands automatically connect to\n * the right address without manual --host / --port flags.\n *\n * This is a lightweight, lazy-init module — it only parses .env when\n * the defaults are first accessed, and does NOT import the full config\n * stack (no Zod validation, no side effects).\n */\nimport { config as loadDotenv } from 'dotenv';\nimport { resolveConfigFilePath } from '../../config.js';\n\ninterface CliDefaults {\n host: string;\n port: string;\n}\n\nlet _cached: CliDefaults | null = null;\n\n/**\n * Return default host / port for CLI commands.\n *\n * Priority:\n * 1. .env `WEB_HOST` / `WEB_PORT` (via resolveConfigFilePath)\n * 2. Hardcoded fallbacks: `127.0.0.1` / `3000`\n */\nexport function getCliDefaults(): CliDefaults {\n if (_cached) return _cached;\n\n try {\n const envFile = resolveConfigFilePath();\n const result = loadDotenv({ path: envFile, override: false });\n const parsed = result.parsed ?? {};\n\n _cached = {\n host: parsed.WEB_HOST || '127.0.0.1',\n port: parsed.WEB_PORT || '3000',\n };\n } catch {\n _cached = { host: '127.0.0.1', port: '3000' };\n }\n\n return _cached;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,eAAe;AACxB,SAAS,cAAc,kBAAkB;AACzC,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAC9B,OAAO,UAAU;;;ACKjB,SAAS,UAAU,kBAAkB;AAQrC,IAAI,UAA8B;AAS3B,SAAS,iBAA8B;AAC5C,MAAI,QAAS,QAAO;AAEpB,MAAI;AACF,UAAM,UAAU,sBAAsB;AACtC,UAAM,SAAS,WAAW,EAAE,MAAM,SAAS,UAAU,MAAM,CAAC;AAC5D,UAAM,SAAS,OAAO,UAAU,CAAC;AAEjC,cAAU;AAAA,MACR,MAAM,OAAO,YAAY;AAAA,MACzB,MAAM,OAAO,YAAY;AAAA,IAC3B;AAAA,EACF,QAAQ;AACN,cAAU,EAAE,MAAM,aAAa,MAAM,OAAO;AAAA,EAC9C;AAEA,SAAO;AACT;;;AD/BA,IAAM,YAAY,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC;AAE7D,SAAS,kBAA0B;AACjC,WAAS,MAAM,WAAW,QAAQ,KAAK,QAAQ,GAAG,GAAG,MAAM,KAAK,QAAQ,GAAG,GAAG;AAC5E,UAAM,YAAY,KAAK,KAAK,KAAK,cAAc;AAC/C,QAAI,WAAW,SAAS,GAAG;AACzB,UAAI;AACF,cAAM,UAAU,KAAK,MAAM,aAAa,WAAW,OAAO,CAAC;AAC3D,YAAI,QAAQ,SAAS,gCAAgC,QAAQ,SAAS,oBAAqB,QAAO;AAAA,MACpG,QAAQ;AAAA,MAAa;AAAA,IACvB;AAAA,EACF;AACA,SAAO,KAAK,QAAQ,WAAW,iBAAiB;AAClD;AAEA,IAAM,MAAM,KAAK,MAAM,aAAa,gBAAgB,GAAG,OAAO,CAAC;AAM/D,eAAe,iBAAiB,eAAsC;AACpE,QAAM,UAAU,GAAG,IAAI,IAAI,IAAI,aAAa;AAE5C,QAAM,SAAS,CAAC,KAAa,SAC3B,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC/B,aAAS,KAAK,MAAM,EAAE,SAAS,KAAQ,GAAG,CAAC,KAAK,QAAQ,WAAW;AACjE,UAAI,KAAK;AACP,eAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,YAAY,UAAU,IAAI,OAAO,EAAE,CAAC;AAC7E;AAAA,MACF;AACA,cAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AAGH,QAAM,UAAU,QAAQ,KAAK,CAAC,KAAK;AACnC,QAAM,UAAU,QAAQ,SAAS,QAAQ,KAAK,CAAC,CAAC,QAAQ,IAAI;AAE5D,MAAI,SAAS;AACX,YAAQ,IAAI,qCAAqC;AACjD,UAAM,OAAO,SAAS,CAAC,WAAW,OAAO,CAAC;AAAA,EAC5C,OAAO;AACL,YAAQ,IAAI,mCAAmC;AAC/C,UAAM,OAAO,OAAO,CAAC,WAAW,MAAM,OAAO,CAAC;AAAA,EAChD;AACF;AAGA,IAAM,WAAW,eAAe;AAEhC,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,mBAAmB,EACxB,YAAY,uDAAuD,EACnE,QAAQ,IAAI,SAAS,eAAe;AAIvC,QACG,QAAQ,MAAM,EACd,YAAY,yCAAyC,EACrD,OAAO,qBAAqB,6BAA6B,MAAM,EAC/D,OAAO,uBAAuB,8BAA8B,EAC5D,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,YAAY,IAAI,MAAM,OAAO,oBAAoB;AACzD,QAAM,YAAY,EAAE,MAAM,SAAS,KAAK,MAAM,EAAE,GAAG,QAAQ,KAAK,OAAO,CAAC;AAC1E,CAAC;AAIH,QACG,QAAQ,OAAO,EACf,YAAY,4CAA4C,EACxD,OAAO,uBAAuB,0BAA0B,EACxD,OAAO,gBAAgB,4BAA4B,EACnD,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,aAAa,IAAI,MAAM,OAAO,qBAAqB;AAC3D,QAAM,aAAa,EAAE,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO,CAAC;AACjE,CAAC;AAIH,QACG,QAAQ,MAAM,EACd,YAAY,0BAA0B,EACtC,OAAO,qBAAqB,eAAe,SAAS,IAAI,EACxD,OAAO,qBAAqB,gBAAgB,SAAS,IAAI,EACzD,OAAO,eAAe,wBAAwB,EAC9C,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,YAAY,IAAI,MAAM,OAAO,oBAAoB;AACzD,QAAM,YAAY;AAAA,IAChB,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,IAC5B,OAAO,CAAC,CAAC,KAAK;AAAA,EAChB,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,SAAS,EACjB,YAAY,oCAAoC,EAChD,OAAO,uBAAuB,0BAA0B,EACxD,OAAO,qBAAqB,eAAe,SAAS,IAAI,EACxD,OAAO,qBAAqB,gBAAgB,SAAS,IAAI,EACzD,OAAO,gBAAgB,gCAAgC,EACvD,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,eAAe,IAAI,MAAM,OAAO,uBAAuB;AAC/D,QAAM,eAAe;AAAA,IACnB,QAAQ,KAAK;AAAA,IACb,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,IAC5B,QAAQ,KAAK;AAAA,EACf,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,QAAQ,EAChB,YAAY,gCAAgC,EAC5C,OAAO,YAAY;AAClB,QAAM,EAAE,cAAc,IAAI,MAAM,OAAO,sBAAsB;AAC7D,QAAM,cAAc;AACtB,CAAC;AAIH,QACG,QAAQ,SAAS,EACjB,YAAY,uDAAuD,EACnE,OAAO,oBAAoB,6DAA6D,EACxF,OAAO,uBAAuB,gCAAgC,EAC9D,OAAO,eAAe,mCAAmC,EACzD,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,eAAe,IAAI,MAAM,OAAO,uBAAuB;AAC/D,QAAM,eAAe,EAAE,KAAK,KAAK,KAAK,QAAQ,KAAK,QAAQ,OAAO,KAAK,MAAM,CAAC;AAChF,CAAC;AAyBH,QACG,QAAQ,QAAQ,EAChB,YAAY,qBAAqB,EACjC,OAAO,qBAAqB,wBAAwB,SAAS,IAAI,EACjE,OAAO,qBAAqB,yBAAyB,SAAS,IAAI,EAClE,OAAO,UAAU,iBAAiB,EAClC,OAAO,OAAO,SAAS;AACtB,QAAM,OAAO,KAAK;AAClB,QAAM,OAAO,SAAS,KAAK,MAAM,EAAE;AACnC,QAAM,MAAM,gBAAgB,MAAM,IAAI;AACtC,MAAI;AACF,UAAM,OAAO,MAAM,MAAM,GAAG,GAAG,sBAAsB;AAAA,MACnD,QAAQ,YAAY,QAAQ,GAAI;AAAA,IAClC,CAAC;AACD,QAAI,CAAC,KAAK,IAAI;AACZ,cAAQ,MAAM,2BAA2B,KAAK,MAAM,EAAE;AACtD,cAAQ,WAAW;AACnB;AAAA,IACF;AACA,UAAM,SAAS,MAAM,KAAK,KAAK;AAE/B,QAAI,KAAK,MAAM;AACb,cAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,IACF;AAEA,UAAM,MAAM,OAAO;AACnB,UAAM,SAAS,OAAO;AACtB,UAAM,SAAS,UAAU,mBAAmB,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO;AAEvE,YAAQ,IAAI;AAAA,IAAO,KAAK,0BAA0B,CAAC;AAAA,CAAI;AACvD,YAAQ,IAAI,KAAK,IAAI,UAAU,CAAC,OAAO,MAAM,SAAS,CAAC,SAAS,OAAO,GAAG,WAAW,IAAI,UAAU,CAAC,OAAO,OAAO,OAAO,EAAE;AAC3H,YAAQ,IAAI,KAAK,IAAI,SAAS,CAAC,QAAQ,aAAa,OAAO,MAAM,CAAC,uBAAuB,IAAI,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE;AAC7H,YAAQ,IAAI,EAAE;AACd,YAAQ,IAAI,KAAK,IAAI,UAAU,CAAC,OAAO,IAAI,MAAM,cAAc,IAAI,WAAW,CAAC,MAAM,IAAI,YAAY,EAAE;AACvG,YAAQ,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,IAAI,OAAO,cAAc,IAAI,SAAS,CAAC,QAAQ,IAAI,UAAU,EAAE;AACtG,YAAQ,IAAI,KAAK,IAAI,UAAU,CAAC,OAAO,IAAI,WAAW,iBAAiB,IAAI,aAAa,CAAC,IAAI,IAAI,aAAa,EAAE;AAChH,YAAQ,IAAI,EAAE;AACd,UAAM,gBAAgB;AAAA,MACpB,GAAG,OAAO,KAAK;AAAA,MACf,GAAG,OAAO,MAAM;AAAA,MAChB,OAAO,SAAS,IAAI,IAAI,GAAG,OAAO,MAAM,SAAS,IAAI,GAAG,OAAO,MAAM;AAAA,IACvE,EAAE,KAAK,IAAI;AACX,YAAQ,IAAI,KAAK,IAAI,SAAS,CAAC,QAAQ,aAAa,EAAE;AACtD,YAAQ,IAAI,EAAE;AAAA,EAChB,SAAS,KAAK;AACZ,YAAQ,MAAM,sBAAsB,MAAM,MAAM,GAAG,CAAC;AACpD,YAAQ,WAAW;AAAA,EACrB;AACF,CAAC;AAIH,QACG,QAAQ,QAAQ,EAChB,YAAY,wCAAwC,EACpD,OAAO,WAAW,+CAA+C,EACjE,OAAO,qBAAqB,wBAAwB,SAAS,IAAI,EACjE,OAAO,qBAAqB,yBAAyB,SAAS,IAAI,EAClE,OAAO,OAAO,SAAS;AACtB,QAAM,OAAO,KAAK;AAClB,QAAM,OAAO,SAAS,KAAK,MAAM,EAAE;AACnC,QAAM,MAAM,gBAAgB,MAAM,IAAI;AACtC,QAAM,YAAY,CAAC,CAAC,KAAK;AAEzB,MAAI;AACF,QAAI,WAAW;AACb,YAAM,OAAO,MAAM,MAAM,GAAG,GAAG,4BAA4B;AAAA,QACzD,QAAQ;AAAA,QACR,QAAQ,YAAY,QAAQ,GAAM;AAAA,MACpC,CAAC;AACD,UAAI,CAAC,KAAK,IAAI;AACZ,cAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,gBAAQ,MAAM,mBAAmB,KAAK,SAAS,KAAK,UAAU,EAAE;AAChE,gBAAQ,WAAW;AACnB;AAAA,MACF;AACA,YAAM,SAAS,MAAM,KAAK,KAAK;AAC/B,cAAQ,IAAI;AAAA,qBAAwB,OAAO,cAAc,EAAE;AAC3D,cAAQ,IAAI,sBAAsB,OAAO,aAAa,EAAE;AACxD,cAAQ,IAAI,uBAAuB,OAAO,YAAY,OAAO,KAAK,IAAI,MAAM,IAAI,CAAC;AAAA,CAAI;AAAA,IACvF,OAAO;AACL,YAAM,YAAY,MAAM,MAAM,GAAG,GAAG,4BAA4B;AAAA,QAC9D,QAAQ;AAAA,QACR,QAAQ,YAAY,QAAQ,GAAM;AAAA,MACpC,CAAC;AACD,UAAI,CAAC,UAAU,IAAI;AACjB,cAAM,OAAO,MAAM,UAAU,KAAK;AAClC,gBAAQ,MAAM,mBAAmB,KAAK,SAAS,UAAU,UAAU,EAAE;AACrE,gBAAQ,WAAW;AACnB;AAAA,MACF;AACA,YAAM,SAAS,MAAM,UAAU,KAAK;AACpC,UAAI,CAAC,OAAO,WAAW;AACrB,gBAAQ,IAAI;AAAA,IAAO,MAAM,oBAAoB,CAAC,MAAM,OAAO,cAAc;AAAA,CAAK;AAC9E;AAAA,MACF;AAEA,cAAQ,IAAI;AAAA,mBAAsB,OAAO,cAAc,QAAQ,OAAO,aAAa,KAAK;AACxF,YAAM,aAAa,MAAM,MAAM,GAAG,GAAG,sBAAsB;AAAA,QACzD,QAAQ;AAAA,QACR,QAAQ,YAAY,QAAQ,GAAM;AAAA,MACpC,CAAC;AACD,UAAI,CAAC,WAAW,IAAI;AAClB,cAAM,OAAO,MAAM,WAAW,KAAK;AACnC,gBAAQ,MAAM,4BAA4B,KAAK,SAAS,WAAW,UAAU,EAAE;AAC/E,gBAAQ,WAAW;AACnB;AAAA,MACF;AACA,cAAQ,IAAI,qEAAqE;AAGjF,UAAI;AACF,cAAM,iBAAiB,OAAO,aAAa;AAC3C,gBAAQ,IAAI,KAAK,MAAM,6BAA6B,OAAO,aAAa,CAAC;AAAA,CAAI;AAAA,MAC/E,SAAS,QAAQ;AACf,gBAAQ,KAAK,KAAK,OAAO,8DAA8D,CAAC,EAAE;AAC1F,gBAAQ,KAAK,KAAK,IAAK,OAAiB,OAAO,CAAC;AAAA,CAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,MAAM,sBAAsB,MAAM,MAAM,GAAG,CAAC;AACpD,YAAQ,WAAW;AAAA,EACrB;AACF,CAAC;AAIH,QACG,QAAQ,MAAM,EACd,YAAY,mBAAmB,EAC/B,OAAO,gBAAgB,gCAAgC,EACvD,OAAO,uBAAuB,2BAA2B,IAAI,EAC7D,OAAO,WAAW,sBAAsB,EACxC,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,YAAY,IAAI,MAAM,OAAO,oBAAoB;AACzD,QAAM,YAAY;AAAA,IAChB,QAAQ,CAAC,CAAC,KAAK;AAAA,IACf,OAAO,SAAS,KAAK,OAAO,EAAE;AAAA,IAC9B,WAAW,CAAC,CAAC,KAAK;AAAA,EACpB,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,QAAQ,EAChB,YAAY,qBAAqB,EACjC,OAAO,qBAAqB,wBAAwB,SAAS,IAAI,EACjE,OAAO,qBAAqB,yBAAyB,SAAS,IAAI,EAClE,OAAO,uBAAuB,oDAAoD,KAAK,EACvF,OAAO,UAAU,iBAAiB,EAClC,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,cAAc,IAAI,MAAM,OAAO,sBAAsB;AAC7D,QAAM,cAAc;AAAA,IAClB,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,IAC5B,OAAO,KAAK;AAAA,IACZ,MAAM,CAAC,CAAC,KAAK;AAAA,EACf,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,WAAW,EACnB,YAAY,iEAAiE,EAC7E,OAAO,qBAAqB,sBAAsB,EAClD,OAAO,yBAAyB,2BAA2B,EAC3D,OAAO,yBAAyB,sBAAsB,EACtD,OAAO,mBAAmB,mEAAmE,EAC7F,OAAO,UAAU,2CAA2C,EAC5D,OAAO,qBAAqB,0CAA0C,SAAS,IAAI,EACnF,OAAO,qBAAqB,gBAAgB,SAAS,IAAI,EACzD,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,yBAAyB;AACnE,QAAM,iBAAiB;AAAA,IACrB,MAAM,KAAK;AAAA,IACX,QAAQ,KAAK;AAAA,IACb,aAAa,KAAK,cAAc,SAAS,KAAK,aAAa,EAAE,IAAI;AAAA,IACjE,QAAQ,KAAK;AAAA,IACb,MAAM,CAAC,CAAC,KAAK;AAAA,IACb,MAAM,KAAK;AAAA,IACX,MAAM,KAAK;AAAA,EACb,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,kBAAkB,EAC1B,YAAY,yDAAyD,EACrE,SAAS,WAAW,mCAAmC,EACvD,OAAO,qBAAqB,wBAAwB,SAAS,IAAI,EACjE,OAAO,qBAAqB,yBAAyB,SAAS,IAAI,EAClE,OAAO,UAAU,iBAAiB,EAClC,OAAO,OAAO,QAAQ,OAAO,SAAS;AACrC,QAAM,EAAE,eAAe,IAAI,MAAM,OAAO,uBAAuB;AAC/D,QAAM,eAAe;AAAA,IACnB,QAAQ,UAAU;AAAA,IAClB;AAAA,IACA,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,IAC5B,MAAM,CAAC,CAAC,KAAK;AAAA,EACf,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,oBAAoB,EAC5B,YAAY,sDAAsD,EAClE,OAAO,qBAAqB,wBAAwB,SAAS,IAAI,EACjE,OAAO,qBAAqB,yBAAyB,SAAS,IAAI,EAClE,OAAO,UAAU,iBAAiB,EAClC,OAAO,OAAO,QAAQ,SAAS;AAC9B,QAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,8BAA8B;AAC5E,QAAM,qBAAqB;AAAA,IACzB,QAAQ,UAAU;AAAA,IAClB,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,IAC5B,MAAM,CAAC,CAAC,KAAK;AAAA,EACf,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,SAAS,EACjB,YAAY,uDAAuD,EACnE,eAAe,uBAAuB,qCAAqC,EAC3E,OAAO,eAAe,yCAAyC,EAC/D,OAAO,aAAa,6CAA6C,EACjE,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,eAAe,IAAI,MAAM,OAAO,uBAAuB;AAC/D,QAAM,eAAe,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC,CAAC,KAAK,OAAO,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC;AAC1F,CAAC;AAIH,QACG,QAAQ,cAAc,EACtB,YAAY,qEAAqE,EACjF,OAAO,qBAAqB,eAAe,SAAS,IAAI,EACxD,OAAO,qBAAqB,gBAAgB,SAAS,IAAI,EACzD,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,4BAA4B;AACxE,QAAM,mBAAmB;AAAA,IACvB,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,EAC9B,CAAC;AACH,CAAC;AAIH,QACG,QAAQ,eAAe,EACvB,YAAY,iDAAiD,EAC7D,OAAO,qBAAqB,eAAe,SAAS,IAAI,EACxD,OAAO,qBAAqB,gBAAgB,SAAS,IAAI,EACzD,OAAO,OAAO,SAAS;AACtB,QAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,6BAA6B;AAC1E,QAAM,oBAAoB;AAAA,IACxB,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,EAC9B,CAAC;AACH,CAAC;AAEH,QAAQ,MAAM;","names":[]}
@@ -4,11 +4,12 @@ import {
4
4
  reloadConfig,
5
5
  resetDotenvCache,
6
6
  resolveConfigFilePath
7
- } from "./chunk-NZHKAPU6.js";
7
+ } from "./chunk-FJTZKAJA.js";
8
8
  import "./chunk-AKXDQH25.js";
9
9
  import "./chunk-TN2SYADO.js";
10
- import "./chunk-SAMTXC4A.js";
11
- import "./chunk-AVGZH64A.js";
10
+ import "./chunk-TFEPHOVE.js";
11
+ import "./chunk-G7QI5WDI.js";
12
+ import "./chunk-2RWGZPNF.js";
12
13
  import "./chunk-GF2RRYHB.js";
13
14
  export {
14
15
  ConfigValidationError,
@@ -17,4 +18,4 @@ export {
17
18
  resetDotenvCache,
18
19
  resolveConfigFilePath
19
20
  };
20
- //# sourceMappingURL=config-WTRSZLOC.js.map
21
+ //# sourceMappingURL=config-23TBYFP5.js.map
@@ -28,6 +28,9 @@ export declare const envSchema: z.ZodObject<{
28
28
  CODEBUDDY_ACP_AUTO_APPROVE: z.ZodPipe<z.ZodDefault<z.ZodOptional<z.ZodString>>, z.ZodTransform<boolean, string>>;
29
29
  CLAUDE_PHASE_TIMEOUT_MS: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
30
30
  AI_IDLE_TIMEOUT_MS: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
31
+ PHASE_TIMEOUT_GRACE_MS: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
32
+ PHASE_TIMEOUT_EXTENSION_MS: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
33
+ PHASE_TIMEOUT_MAX_EXTENSIONS: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
31
34
  NVM_NODE_VERSION: z.ZodDefault<z.ZodOptional<z.ZodString>>;
32
35
  PIPELINE_MODE: z.ZodDefault<z.ZodOptional<z.ZodString>>;
33
36
  POLL_DISCOVERY_INTERVAL_MS: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
@@ -163,6 +166,9 @@ export declare function transformEnvToConfig(env: ParsedEnv, dirname: string): {
163
166
  readonly binary: string;
164
167
  readonly phaseTimeoutMs: number;
165
168
  readonly idleTimeoutMs: number | undefined;
169
+ readonly timeoutGraceMs: number;
170
+ readonly timeoutExtensionMs: number;
171
+ readonly timeoutMaxExtensions: number;
166
172
  readonly nvmNodeVersion: string;
167
173
  readonly model: string;
168
174
  readonly codebuddyAcpAutoApprove: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -37,6 +37,9 @@ export declare function loadConfig(): {
37
37
  readonly binary: string;
38
38
  readonly phaseTimeoutMs: number;
39
39
  readonly idleTimeoutMs: number | undefined;
40
+ readonly timeoutGraceMs: number;
41
+ readonly timeoutExtensionMs: number;
42
+ readonly timeoutMaxExtensions: number;
40
43
  readonly nvmNodeVersion: string;
41
44
  readonly model: string;
42
45
  readonly codebuddyAcpAutoApprove: boolean;
@@ -208,6 +211,9 @@ export declare function reloadConfig(): {
208
211
  readonly binary: string;
209
212
  readonly phaseTimeoutMs: number;
210
213
  readonly idleTimeoutMs: number | undefined;
214
+ readonly timeoutGraceMs: number;
215
+ readonly timeoutExtensionMs: number;
216
+ readonly timeoutMaxExtensions: number;
211
217
  readonly nvmNodeVersion: string;
212
218
  readonly model: string;
213
219
  readonly codebuddyAcpAutoApprove: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAaA,YAAY,EACV,MAAM,EACN,YAAY,EACZ,qBAAqB,EACrB,eAAe,EAEf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,aAAa,EACb,UAAU,EACV,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAI3D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBjE;AASD,wBAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;;GAIG;AACH,wBAAgB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ3B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAaA,YAAY,EACV,MAAM,EACN,YAAY,EACZ,qBAAqB,EACrB,eAAe,EAEf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,aAAa,EACb,UAAU,EACV,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAI3D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBjE;AASD,wBAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;;GAIG;AACH,wBAAgB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ3B"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DependencyChecker
3
- } from "./chunk-HDFNMVRQ.js";
4
- import "./chunk-YCYVNRLF.js";
3
+ } from "./chunk-Z3OBKODV.js";
4
+ import "./chunk-OBGEEGQ3.js";
5
5
  import {
6
6
  resolveDataDir
7
7
  } from "./chunk-TN2SYADO.js";
@@ -98,4 +98,4 @@ async function doctorCommand() {
98
98
  export {
99
99
  doctorCommand
100
100
  };
101
- //# sourceMappingURL=doctor-37JNBGDN.js.map
101
+ //# sourceMappingURL=doctor-LLETZLW2.js.map
@@ -4,11 +4,14 @@ export declare class AIExecutionError extends AppError {
4
4
  readonly output?: string;
5
5
  readonly exitCode?: number | null;
6
6
  readonly isRetryable: boolean;
7
+ /** Agent was still actively producing output when timeout fired — soft failure */
8
+ readonly wasActiveAtTimeout: boolean;
7
9
  constructor(phase: string, message: string, opts?: {
8
10
  output?: string;
9
11
  exitCode?: number | null;
10
12
  cause?: Error;
11
13
  isRetryable?: boolean;
14
+ wasActiveAtTimeout?: boolean;
12
15
  });
13
16
  }
14
17
  //# sourceMappingURL=AIExecutionError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AIExecutionError.d.ts","sourceRoot":"","sources":["../../src/errors/AIExecutionError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,SAAgB,WAAW,EAAE,OAAO,CAAC;gBAEzB,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;CAOvI"}
1
+ {"version":3,"file":"AIExecutionError.d.ts","sourceRoot":"","sources":["../../src/errors/AIExecutionError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,SAAgB,WAAW,EAAE,OAAO,CAAC;IACrC,kFAAkF;IAClF,SAAgB,kBAAkB,EAAE,OAAO,CAAC;gBAEhC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE;CAQrK"}
@@ -18,7 +18,7 @@ import {
18
18
  SessionNotFoundError,
19
19
  TaskNotFoundError,
20
20
  UnregisteredPhasesError
21
- } from "./chunk-AVGZH64A.js";
21
+ } from "./chunk-2RWGZPNF.js";
22
22
  export {
23
23
  AIExecutionError,
24
24
  AIOutputParseError,
@@ -40,4 +40,4 @@ export {
40
40
  TaskNotFoundError,
41
41
  UnregisteredPhasesError
42
42
  };
43
- //# sourceMappingURL=errors-S3BWYA4I.js.map
43
+ //# sourceMappingURL=errors-J3ZRP66W.js.map
@@ -1,5 +1,5 @@
1
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' | 'conflict:started' | 'conflict:resolved' | 'conflict:failed' | 'update:checking' | 'update:available' | 'update:downloading' | 'update:completed' | 'update:failed' | 'braindump:created' | 'braindump:split:done' | 'braindump:confirmed' | 'braindump:task:started' | 'braindump:task:completed' | 'braindump:task:merging' | 'braindump:task:merged' | 'braindump:task:failed' | 'braindump:completed' | 'braindump:failed' | 'distill:diary:created' | 'distill:started' | 'distill:memory:updated' | 'distill:rule:generated' | 'distill:completed' | 'distill:failed' | 'verify:loopStarted' | 'verify:iterationComplete' | 'verify:loopExhausted' | 'release:gateRequested' | 'uat:gateRequested' | 'uat:completed' | 'uat:failed' | 'issue:paused' | 'issue:continued' | 'issue:redone' | 'preview:reaped';
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' | 'conflict:started' | 'conflict:resolved' | 'conflict:failed' | 'update:checking' | 'update:available' | 'update:downloading' | 'update:completed' | 'update:failed' | 'braindump:created' | 'braindump:split:done' | 'braindump:confirmed' | 'braindump:task:started' | 'braindump:task:completed' | 'braindump:task:merging' | 'braindump:task:merged' | 'braindump:task:failed' | 'braindump:completed' | 'braindump:failed' | 'distill:diary:created' | 'distill:started' | 'distill:memory:updated' | 'distill:rule:generated' | 'distill:completed' | 'distill:failed' | 'verify:loopStarted' | 'verify:iterationComplete' | 'verify:loopExhausted' | 'release:gateRequested' | 'uat:gateRequested' | 'uat:completed' | 'uat:failed' | 'issue:paused' | 'issue:continued' | 'issue:redone' | 'preview:reaped' | 'agent:inputRequired' | 'agent:inputResponse' | 'agent:dialogDismissed';
3
3
  export interface EventPayload {
4
4
  type: EventType;
5
5
  data: unknown;
@@ -1 +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,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,eAAe,GAEf,mBAAmB,GACnB,sBAAsB,GACtB,qBAAqB,GACrB,wBAAwB,GACxB,0BAA0B,GAC1B,wBAAwB,GACxB,uBAAuB,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,kBAAkB,GAElB,uBAAuB,GACvB,iBAAiB,GACjB,wBAAwB,GACxB,wBAAwB,GACxB,mBAAmB,GACnB,gBAAgB,GAEhB,oBAAoB,GACpB,0BAA0B,GAC1B,sBAAsB,GAEtB,uBAAuB,GAEvB,mBAAmB,GACnB,eAAe,GACf,YAAY,GAEZ,cAAc,GACd,iBAAiB,GACjB,cAAc,GAEd,gBAAgB,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,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;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
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,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,eAAe,GAEf,mBAAmB,GACnB,sBAAsB,GACtB,qBAAqB,GACrB,wBAAwB,GACxB,0BAA0B,GAC1B,wBAAwB,GACxB,uBAAuB,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,kBAAkB,GAElB,uBAAuB,GACvB,iBAAiB,GACjB,wBAAwB,GACxB,wBAAwB,GACxB,mBAAmB,GACnB,gBAAgB,GAEhB,oBAAoB,GACpB,0BAA0B,GAC1B,sBAAsB,GAEtB,uBAAuB,GAEvB,mBAAmB,GACnB,eAAe,GACf,YAAY,GAEZ,cAAc,GACd,iBAAiB,GACjB,cAAc,GAEd,gBAAgB,GAEhB,qBAAqB,GACrB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,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;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
@@ -1 +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,CA6iBrC,CAAC"}
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,CAmkBrC,CAAC"}
@@ -1 +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,CA6iBvC,CAAC"}
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,CAmkBvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4CA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4e1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4CA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA0f1C"}
package/dist/index.js CHANGED
@@ -1,24 +1,26 @@
1
1
  import {
2
2
  main
3
- } from "./chunk-C4MFVASL.js";
4
- import "./chunk-M5C2WILQ.js";
5
- import "./chunk-D47Q5745.js";
6
- import "./chunk-HDFNMVRQ.js";
7
- import "./chunk-GXFG4JU6.js";
3
+ } from "./chunk-Y62E72TA.js";
4
+ import "./chunk-5M5SB6ZA.js";
5
+ import "./chunk-ENF24C44.js";
6
+ import "./chunk-Z3OBKODV.js";
7
+ import "./chunk-EU4XFZ2T.js";
8
8
  import "./chunk-KC5S66OZ.js";
9
- import "./chunk-LNFMARKQ.js";
10
- import "./chunk-IP3QTP5A.js";
11
- import "./chunk-2YQHKXLL.js";
12
- import "./chunk-U237JSLB.js";
13
- import "./chunk-U6GWFTKA.js";
9
+ import "./chunk-SEO57UYI.js";
10
+ import "./chunk-IWSMQXBL.js";
11
+ import "./chunk-GPZX4DSY.js";
12
+ import "./chunk-MSL7ROVK.js";
13
+ import "./chunk-4XMYOXGZ.js";
14
+ import "./chunk-R32Q3RGK.js";
14
15
  import "./chunk-ACVOOHAR.js";
15
16
  import "./chunk-B7TVVODN.js";
16
- import "./chunk-YCYVNRLF.js";
17
- import "./chunk-NZHKAPU6.js";
17
+ import "./chunk-OBGEEGQ3.js";
18
+ import "./chunk-FJTZKAJA.js";
18
19
  import "./chunk-AKXDQH25.js";
19
20
  import "./chunk-TN2SYADO.js";
20
- import "./chunk-SAMTXC4A.js";
21
- import "./chunk-AVGZH64A.js";
21
+ import "./chunk-TFEPHOVE.js";
22
+ import "./chunk-G7QI5WDI.js";
23
+ import "./chunk-2RWGZPNF.js";
22
24
  import "./chunk-DAX3FD2O.js";
23
25
  import "./chunk-GF2RRYHB.js";
24
26
  export {