@hivehub/rulebook 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +539 -0
  3. package/dist/agents/claude-code.d.ts +69 -0
  4. package/dist/agents/claude-code.d.ts.map +1 -0
  5. package/dist/agents/claude-code.js +180 -0
  6. package/dist/agents/claude-code.js.map +1 -0
  7. package/dist/agents/cursor-agent.d.ts +184 -0
  8. package/dist/agents/cursor-agent.d.ts.map +1 -0
  9. package/dist/agents/cursor-agent.js +299 -0
  10. package/dist/agents/cursor-agent.js.map +1 -0
  11. package/dist/agents/gemini-cli.d.ts +69 -0
  12. package/dist/agents/gemini-cli.d.ts.map +1 -0
  13. package/dist/agents/gemini-cli.js +180 -0
  14. package/dist/agents/gemini-cli.js.map +1 -0
  15. package/dist/cli/commands.d.ts +57 -0
  16. package/dist/cli/commands.d.ts.map +1 -0
  17. package/dist/cli/commands.js +1370 -0
  18. package/dist/cli/commands.js.map +1 -0
  19. package/dist/cli/docs-prompts.d.ts +3 -0
  20. package/dist/cli/docs-prompts.d.ts.map +1 -0
  21. package/dist/cli/docs-prompts.js +45 -0
  22. package/dist/cli/docs-prompts.js.map +1 -0
  23. package/dist/cli/prompts.d.ts +6 -0
  24. package/dist/cli/prompts.d.ts.map +1 -0
  25. package/dist/cli/prompts.js +376 -0
  26. package/dist/cli/prompts.js.map +1 -0
  27. package/dist/core/agent-manager.d.ts +89 -0
  28. package/dist/core/agent-manager.d.ts.map +1 -0
  29. package/dist/core/agent-manager.js +546 -0
  30. package/dist/core/agent-manager.js.map +1 -0
  31. package/dist/core/auto-fixer.d.ts +14 -0
  32. package/dist/core/auto-fixer.d.ts.map +1 -0
  33. package/dist/core/auto-fixer.js +207 -0
  34. package/dist/core/auto-fixer.js.map +1 -0
  35. package/dist/core/changelog-generator.d.ts +44 -0
  36. package/dist/core/changelog-generator.d.ts.map +1 -0
  37. package/dist/core/changelog-generator.js +222 -0
  38. package/dist/core/changelog-generator.js.map +1 -0
  39. package/dist/core/cli-bridge.d.ts +113 -0
  40. package/dist/core/cli-bridge.d.ts.map +1 -0
  41. package/dist/core/cli-bridge.js +1094 -0
  42. package/dist/core/cli-bridge.js.map +1 -0
  43. package/dist/core/config-manager.d.ts +65 -0
  44. package/dist/core/config-manager.d.ts.map +1 -0
  45. package/dist/core/config-manager.js +266 -0
  46. package/dist/core/config-manager.js.map +1 -0
  47. package/dist/core/coverage-checker.d.ts +14 -0
  48. package/dist/core/coverage-checker.d.ts.map +1 -0
  49. package/dist/core/coverage-checker.js +176 -0
  50. package/dist/core/coverage-checker.js.map +1 -0
  51. package/dist/core/custom-templates.d.ts +27 -0
  52. package/dist/core/custom-templates.d.ts.map +1 -0
  53. package/dist/core/custom-templates.js +122 -0
  54. package/dist/core/custom-templates.js.map +1 -0
  55. package/dist/core/dependency-checker.d.ts +21 -0
  56. package/dist/core/dependency-checker.d.ts.map +1 -0
  57. package/dist/core/dependency-checker.js +247 -0
  58. package/dist/core/dependency-checker.js.map +1 -0
  59. package/dist/core/detector.d.ts +3 -0
  60. package/dist/core/detector.d.ts.map +1 -0
  61. package/dist/core/detector.js +1443 -0
  62. package/dist/core/detector.js.map +1 -0
  63. package/dist/core/docs-generator.d.ts +9 -0
  64. package/dist/core/docs-generator.d.ts.map +1 -0
  65. package/dist/core/docs-generator.js +531 -0
  66. package/dist/core/docs-generator.js.map +1 -0
  67. package/dist/core/generator.d.ts +16 -0
  68. package/dist/core/generator.d.ts.map +1 -0
  69. package/dist/core/generator.js +561 -0
  70. package/dist/core/generator.js.map +1 -0
  71. package/dist/core/gitignore-generator.d.ts +13 -0
  72. package/dist/core/gitignore-generator.d.ts.map +1 -0
  73. package/dist/core/gitignore-generator.js +307 -0
  74. package/dist/core/gitignore-generator.js.map +1 -0
  75. package/dist/core/health-scorer.d.ts +22 -0
  76. package/dist/core/health-scorer.d.ts.map +1 -0
  77. package/dist/core/health-scorer.js +395 -0
  78. package/dist/core/health-scorer.js.map +1 -0
  79. package/dist/core/logger.d.ts +116 -0
  80. package/dist/core/logger.d.ts.map +1 -0
  81. package/dist/core/logger.js +289 -0
  82. package/dist/core/logger.js.map +1 -0
  83. package/dist/core/merger.d.ts +6 -0
  84. package/dist/core/merger.d.ts.map +1 -0
  85. package/dist/core/merger.js +131 -0
  86. package/dist/core/merger.js.map +1 -0
  87. package/dist/core/migrator.d.ts +19 -0
  88. package/dist/core/migrator.d.ts.map +1 -0
  89. package/dist/core/migrator.js +102 -0
  90. package/dist/core/migrator.js.map +1 -0
  91. package/dist/core/minimal-scaffolder.d.ts +8 -0
  92. package/dist/core/minimal-scaffolder.d.ts.map +1 -0
  93. package/dist/core/minimal-scaffolder.js +51 -0
  94. package/dist/core/minimal-scaffolder.js.map +1 -0
  95. package/dist/core/modern-console-new.d.ts +81 -0
  96. package/dist/core/modern-console-new.d.ts.map +1 -0
  97. package/dist/core/modern-console-new.js +340 -0
  98. package/dist/core/modern-console-new.js.map +1 -0
  99. package/dist/core/modern-console.d.ts +99 -0
  100. package/dist/core/modern-console.d.ts.map +1 -0
  101. package/dist/core/modern-console.js +568 -0
  102. package/dist/core/modern-console.js.map +1 -0
  103. package/dist/core/openspec-manager.d.ts +133 -0
  104. package/dist/core/openspec-manager.d.ts.map +1 -0
  105. package/dist/core/openspec-manager.js +605 -0
  106. package/dist/core/openspec-manager.js.map +1 -0
  107. package/dist/core/openspec-migrator.d.ts +27 -0
  108. package/dist/core/openspec-migrator.d.ts.map +1 -0
  109. package/dist/core/openspec-migrator.js +255 -0
  110. package/dist/core/openspec-migrator.js.map +1 -0
  111. package/dist/core/task-manager.d.ts +65 -0
  112. package/dist/core/task-manager.d.ts.map +1 -0
  113. package/dist/core/task-manager.js +318 -0
  114. package/dist/core/task-manager.js.map +1 -0
  115. package/dist/core/test-task-manager.d.ts +49 -0
  116. package/dist/core/test-task-manager.d.ts.map +1 -0
  117. package/dist/core/test-task-manager.js +121 -0
  118. package/dist/core/test-task-manager.js.map +1 -0
  119. package/dist/core/validator.d.ts +21 -0
  120. package/dist/core/validator.d.ts.map +1 -0
  121. package/dist/core/validator.js +177 -0
  122. package/dist/core/validator.js.map +1 -0
  123. package/dist/core/version-bumper.d.ts +19 -0
  124. package/dist/core/version-bumper.d.ts.map +1 -0
  125. package/dist/core/version-bumper.js +180 -0
  126. package/dist/core/version-bumper.js.map +1 -0
  127. package/dist/core/watcher.d.ts +9 -0
  128. package/dist/core/watcher.d.ts.map +1 -0
  129. package/dist/core/watcher.js +22 -0
  130. package/dist/core/watcher.js.map +1 -0
  131. package/dist/core/workflow-generator.d.ts +10 -0
  132. package/dist/core/workflow-generator.d.ts.map +1 -0
  133. package/dist/core/workflow-generator.js +279 -0
  134. package/dist/core/workflow-generator.js.map +1 -0
  135. package/dist/index.d.ts +3 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +159 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/mcp/handlers/archive-task.d.ts +17 -0
  140. package/dist/mcp/handlers/archive-task.d.ts.map +1 -0
  141. package/dist/mcp/handlers/archive-task.js +36 -0
  142. package/dist/mcp/handlers/archive-task.js.map +1 -0
  143. package/dist/mcp/handlers/create-task.d.ts +17 -0
  144. package/dist/mcp/handlers/create-task.d.ts.map +1 -0
  145. package/dist/mcp/handlers/create-task.js +56 -0
  146. package/dist/mcp/handlers/create-task.js.map +1 -0
  147. package/dist/mcp/handlers/list-tasks.d.ts +22 -0
  148. package/dist/mcp/handlers/list-tasks.d.ts.map +1 -0
  149. package/dist/mcp/handlers/list-tasks.js +42 -0
  150. package/dist/mcp/handlers/list-tasks.js.map +1 -0
  151. package/dist/mcp/handlers/show-task.d.ts +25 -0
  152. package/dist/mcp/handlers/show-task.d.ts.map +1 -0
  153. package/dist/mcp/handlers/show-task.js +43 -0
  154. package/dist/mcp/handlers/show-task.js.map +1 -0
  155. package/dist/mcp/handlers/update-task.d.ts +17 -0
  156. package/dist/mcp/handlers/update-task.d.ts.map +1 -0
  157. package/dist/mcp/handlers/update-task.js +35 -0
  158. package/dist/mcp/handlers/update-task.js.map +1 -0
  159. package/dist/mcp/handlers/validate-task.d.ts +15 -0
  160. package/dist/mcp/handlers/validate-task.d.ts.map +1 -0
  161. package/dist/mcp/handlers/validate-task.js +27 -0
  162. package/dist/mcp/handlers/validate-task.js.map +1 -0
  163. package/dist/mcp/rulebook-config.d.ts +22 -0
  164. package/dist/mcp/rulebook-config.d.ts.map +1 -0
  165. package/dist/mcp/rulebook-config.js +65 -0
  166. package/dist/mcp/rulebook-config.js.map +1 -0
  167. package/dist/mcp/rulebook-server.d.ts +4 -0
  168. package/dist/mcp/rulebook-server.d.ts.map +1 -0
  169. package/dist/mcp/rulebook-server.js +246 -0
  170. package/dist/mcp/rulebook-server.js.map +1 -0
  171. package/dist/types.d.ts +190 -0
  172. package/dist/types.d.ts.map +1 -0
  173. package/dist/types.js +2 -0
  174. package/dist/types.js.map +1 -0
  175. package/dist/utils/file-system.d.ts +9 -0
  176. package/dist/utils/file-system.d.ts.map +1 -0
  177. package/dist/utils/file-system.js +51 -0
  178. package/dist/utils/file-system.js.map +1 -0
  179. package/dist/utils/git-hooks.d.ts +8 -0
  180. package/dist/utils/git-hooks.d.ts.map +1 -0
  181. package/dist/utils/git-hooks.js +440 -0
  182. package/dist/utils/git-hooks.js.map +1 -0
  183. package/dist/utils/rulesignore.d.ts +9 -0
  184. package/dist/utils/rulesignore.d.ts.map +1 -0
  185. package/dist/utils/rulesignore.js +42 -0
  186. package/dist/utils/rulesignore.js.map +1 -0
  187. package/package.json +106 -0
  188. package/templates/cli/AIDER.md +49 -0
  189. package/templates/cli/AMAZON_Q.md +25 -0
  190. package/templates/cli/AUGGIE.md +32 -0
  191. package/templates/cli/CLAUDE.md +32 -0
  192. package/templates/cli/CLAUDE_CODE.md +35 -0
  193. package/templates/cli/CLINE.md +32 -0
  194. package/templates/cli/CODEBUDDY.md +20 -0
  195. package/templates/cli/CODEIUM.md +20 -0
  196. package/templates/cli/CODEX.md +21 -0
  197. package/templates/cli/CONTINUE.md +34 -0
  198. package/templates/cli/CURSOR_CLI.md +28 -0
  199. package/templates/cli/FACTORY.md +18 -0
  200. package/templates/cli/GEMINI.md +35 -0
  201. package/templates/cli/KILOCODE.md +18 -0
  202. package/templates/cli/OPENCODE.md +18 -0
  203. package/templates/cli/_GENERIC_TEMPLATE.md +29 -0
  204. package/templates/commands/rulebook-task-apply.md +67 -0
  205. package/templates/commands/rulebook-task-archive.md +70 -0
  206. package/templates/commands/rulebook-task-create.md +93 -0
  207. package/templates/commands/rulebook-task-list.md +42 -0
  208. package/templates/commands/rulebook-task-show.md +52 -0
  209. package/templates/commands/rulebook-task-validate.md +53 -0
  210. package/templates/core/AGENT_AUTOMATION.md +184 -0
  211. package/templates/core/DAG.md +304 -0
  212. package/templates/core/DOCUMENTATION_RULES.md +37 -0
  213. package/templates/core/QUALITY_ENFORCEMENT.md +68 -0
  214. package/templates/core/RULEBOOK.md +1874 -0
  215. package/templates/frameworks/ANGULAR.md +36 -0
  216. package/templates/frameworks/DJANGO.md +83 -0
  217. package/templates/frameworks/ELECTRON.md +147 -0
  218. package/templates/frameworks/FLASK.md +38 -0
  219. package/templates/frameworks/FLUTTER.md +55 -0
  220. package/templates/frameworks/JQUERY.md +32 -0
  221. package/templates/frameworks/LARAVEL.md +38 -0
  222. package/templates/frameworks/NESTJS.md +43 -0
  223. package/templates/frameworks/NEXTJS.md +127 -0
  224. package/templates/frameworks/NUXT.md +40 -0
  225. package/templates/frameworks/RAILS.md +66 -0
  226. package/templates/frameworks/REACT.md +38 -0
  227. package/templates/frameworks/REACT_NATIVE.md +47 -0
  228. package/templates/frameworks/SPRING.md +39 -0
  229. package/templates/frameworks/SYMFONY.md +36 -0
  230. package/templates/frameworks/VUE.md +36 -0
  231. package/templates/frameworks/ZEND.md +35 -0
  232. package/templates/git/CI_CD_PATTERNS.md +661 -0
  233. package/templates/git/GITHUB_ACTIONS.md +728 -0
  234. package/templates/git/GITLAB_CI.md +730 -0
  235. package/templates/git/GIT_WORKFLOW.md +1157 -0
  236. package/templates/git/SECRETS_MANAGEMENT.md +585 -0
  237. package/templates/hooks/COMMIT_MSG.md +530 -0
  238. package/templates/hooks/POST_CHECKOUT.md +546 -0
  239. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -0
  240. package/templates/hooks/PRE_COMMIT.md +414 -0
  241. package/templates/hooks/PRE_PUSH.md +601 -0
  242. package/templates/hooks/csharp-pre-commit.sh +23 -0
  243. package/templates/hooks/csharp-pre-push.sh +23 -0
  244. package/templates/hooks/dart-pre-commit.sh +30 -0
  245. package/templates/hooks/dart-pre-push.sh +25 -0
  246. package/templates/hooks/elixir-pre-commit.sh +32 -0
  247. package/templates/hooks/elixir-pre-push.sh +31 -0
  248. package/templates/hooks/erlang-pre-commit.sh +30 -0
  249. package/templates/hooks/erlang-pre-push.sh +37 -0
  250. package/templates/hooks/go-pre-commit.sh +40 -0
  251. package/templates/hooks/go-pre-push.sh +31 -0
  252. package/templates/hooks/haskell-pre-commit.sh +41 -0
  253. package/templates/hooks/haskell-pre-push.sh +37 -0
  254. package/templates/hooks/java-pre-commit.sh +34 -0
  255. package/templates/hooks/java-pre-push.sh +24 -0
  256. package/templates/hooks/kotlin-pre-commit.sh +32 -0
  257. package/templates/hooks/kotlin-pre-push.sh +16 -0
  258. package/templates/hooks/php-pre-commit.sh +36 -0
  259. package/templates/hooks/php-pre-push.sh +26 -0
  260. package/templates/hooks/python-pre-commit.sh +51 -0
  261. package/templates/hooks/python-pre-push.sh +25 -0
  262. package/templates/hooks/ruby-pre-commit.sh +33 -0
  263. package/templates/hooks/ruby-pre-push.sh +32 -0
  264. package/templates/hooks/rust-pre-commit.sh +30 -0
  265. package/templates/hooks/rust-pre-push.sh +30 -0
  266. package/templates/hooks/scala-pre-commit.sh +32 -0
  267. package/templates/hooks/scala-pre-push.sh +24 -0
  268. package/templates/hooks/swift-pre-commit.sh +25 -0
  269. package/templates/hooks/swift-pre-push.sh +23 -0
  270. package/templates/hooks/typescript-pre-commit.sh +37 -0
  271. package/templates/hooks/typescript-pre-push.sh +36 -0
  272. package/templates/ides/COPILOT.md +37 -0
  273. package/templates/ides/CURSOR.md +43 -0
  274. package/templates/ides/JETBRAINS_AI.md +35 -0
  275. package/templates/ides/REPLIT.md +36 -0
  276. package/templates/ides/TABNINE.md +29 -0
  277. package/templates/ides/VSCODE.md +40 -0
  278. package/templates/ides/WINDSURF.md +36 -0
  279. package/templates/ides/ZED.md +32 -0
  280. package/templates/languages/ADA.md +58 -0
  281. package/templates/languages/C.md +333 -0
  282. package/templates/languages/CPP.md +743 -0
  283. package/templates/languages/CSHARP.md +417 -0
  284. package/templates/languages/DART.md +332 -0
  285. package/templates/languages/ELIXIR.md +454 -0
  286. package/templates/languages/ERLANG.md +361 -0
  287. package/templates/languages/GO.md +645 -0
  288. package/templates/languages/HASKELL.md +177 -0
  289. package/templates/languages/JAVA.md +607 -0
  290. package/templates/languages/JAVASCRIPT.md +631 -0
  291. package/templates/languages/JULIA.md +97 -0
  292. package/templates/languages/KOTLIN.md +511 -0
  293. package/templates/languages/LISP.md +100 -0
  294. package/templates/languages/LUA.md +74 -0
  295. package/templates/languages/OBJECTIVEC.md +90 -0
  296. package/templates/languages/PHP.md +416 -0
  297. package/templates/languages/PYTHON.md +682 -0
  298. package/templates/languages/R.md +350 -0
  299. package/templates/languages/RUBY.md +421 -0
  300. package/templates/languages/RUST.md +477 -0
  301. package/templates/languages/SAS.md +73 -0
  302. package/templates/languages/SCALA.md +348 -0
  303. package/templates/languages/SOLIDITY.md +580 -0
  304. package/templates/languages/SQL.md +137 -0
  305. package/templates/languages/SWIFT.md +466 -0
  306. package/templates/languages/TYPESCRIPT.md +591 -0
  307. package/templates/languages/ZIG.md +265 -0
  308. package/templates/modules/ATLASSIAN.md +255 -0
  309. package/templates/modules/CONTEXT7.md +54 -0
  310. package/templates/modules/FIGMA.md +267 -0
  311. package/templates/modules/GITHUB_MCP.md +64 -0
  312. package/templates/modules/GRAFANA.md +328 -0
  313. package/templates/modules/NOTION.md +247 -0
  314. package/templates/modules/PLAYWRIGHT.md +90 -0
  315. package/templates/modules/RULEBOOK_MCP.md +156 -0
  316. package/templates/modules/SERENA.md +337 -0
  317. package/templates/modules/SUPABASE.md +223 -0
  318. package/templates/modules/SYNAP.md +69 -0
  319. package/templates/modules/VECTORIZER.md +63 -0
  320. package/templates/services/AZURE_BLOB.md +184 -0
  321. package/templates/services/CASSANDRA.md +239 -0
  322. package/templates/services/DYNAMODB.md +308 -0
  323. package/templates/services/ELASTICSEARCH.md +347 -0
  324. package/templates/services/GCS.md +178 -0
  325. package/templates/services/INFLUXDB.md +265 -0
  326. package/templates/services/KAFKA.md +341 -0
  327. package/templates/services/MARIADB.md +183 -0
  328. package/templates/services/MEMCACHED.md +242 -0
  329. package/templates/services/MINIO.md +201 -0
  330. package/templates/services/MONGODB.md +268 -0
  331. package/templates/services/MYSQL.md +358 -0
  332. package/templates/services/NEO4J.md +247 -0
  333. package/templates/services/ORACLE.md +290 -0
  334. package/templates/services/POSTGRESQL.md +326 -0
  335. package/templates/services/RABBITMQ.md +286 -0
  336. package/templates/services/REDIS.md +292 -0
  337. package/templates/services/S3.md +298 -0
  338. package/templates/services/SQLITE.md +294 -0
  339. package/templates/services/SQLSERVER.md +294 -0
  340. package/templates/workflows/codespell.yml +31 -0
  341. package/templates/workflows/cpp-lint.yml +47 -0
  342. package/templates/workflows/cpp-publish.yml +119 -0
  343. package/templates/workflows/cpp-test.yml +77 -0
  344. package/templates/workflows/dotnet-lint.yml +29 -0
  345. package/templates/workflows/dotnet-publish.yml +40 -0
  346. package/templates/workflows/dotnet-test.yml +41 -0
  347. package/templates/workflows/elixir-lint.yml +45 -0
  348. package/templates/workflows/elixir-publish.yml +49 -0
  349. package/templates/workflows/elixir-test.yml +54 -0
  350. package/templates/workflows/erlang-lint.yml +47 -0
  351. package/templates/workflows/erlang-test.yml +62 -0
  352. package/templates/workflows/go-lint.yml +39 -0
  353. package/templates/workflows/go-publish.yml +95 -0
  354. package/templates/workflows/go-test.yml +59 -0
  355. package/templates/workflows/java-lint.yml +60 -0
  356. package/templates/workflows/java-publish.yml +120 -0
  357. package/templates/workflows/java-test.yml +85 -0
  358. package/templates/workflows/kotlin-lint.yml +34 -0
  359. package/templates/workflows/kotlin-publish.yml +56 -0
  360. package/templates/workflows/kotlin-test.yml +48 -0
  361. package/templates/workflows/php-lint.yml +39 -0
  362. package/templates/workflows/php-publish.yml +50 -0
  363. package/templates/workflows/php-test.yml +54 -0
  364. package/templates/workflows/python-lint.yml +47 -0
  365. package/templates/workflows/python-publish.yml +91 -0
  366. package/templates/workflows/python-test.yml +59 -0
  367. package/templates/workflows/rust-lint.yml +54 -0
  368. package/templates/workflows/rust-publish.yml +66 -0
  369. package/templates/workflows/rust-test.yml +75 -0
  370. package/templates/workflows/solidity-lint.yml +41 -0
  371. package/templates/workflows/solidity-test.yml +47 -0
  372. package/templates/workflows/swift-lint.yml +32 -0
  373. package/templates/workflows/swift-publish.yml +58 -0
  374. package/templates/workflows/swift-test.yml +44 -0
  375. package/templates/workflows/typescript-lint.yml +61 -0
  376. package/templates/workflows/typescript-publish.yml +60 -0
  377. package/templates/workflows/typescript-test.yml +73 -0
  378. package/templates/workflows/zig-lint.yml +27 -0
  379. package/templates/workflows/zig-test.yml +40 -0
@@ -0,0 +1,89 @@
1
+ import type { OpenSpecTask } from '../types.js';
2
+ export interface AgentOptions {
3
+ dryRun?: boolean;
4
+ tool?: string;
5
+ maxIterations?: number;
6
+ watchMode?: boolean;
7
+ onLog?: (type: 'info' | 'success' | 'warning' | 'error' | 'tool', message: string) => void;
8
+ onTaskStatusChange?: (taskId: string, status: string) => void;
9
+ onTasksReloaded?: (tasks: OpenSpecTask[]) => void;
10
+ }
11
+ export declare class AgentManager {
12
+ private openspecManager;
13
+ private logger;
14
+ private configManager;
15
+ private cliBridge;
16
+ private config;
17
+ private isRunning;
18
+ private currentTool?;
19
+ private onLog?;
20
+ private onTaskStatusChange?;
21
+ private onTasksReloaded?;
22
+ private initializePromise?;
23
+ constructor(projectRoot: string);
24
+ /**
25
+ * Initialize agent manager (only once, thread-safe)
26
+ */
27
+ initialize(): Promise<void>;
28
+ /**
29
+ * Start autonomous agent workflow
30
+ */
31
+ startAgent(options?: AgentOptions): Promise<void>;
32
+ /**
33
+ * Detect and select CLI tool
34
+ */
35
+ selectCLITool(preferredTool?: string): Promise<string | null>;
36
+ /**
37
+ * Run main agent workflow loop
38
+ */
39
+ runAgentWorkflow(options: AgentOptions): Promise<void>;
40
+ /**
41
+ * Execute workflow for a single task
42
+ */
43
+ executeTaskWorkflow(task: OpenSpecTask, options: AgentOptions): Promise<boolean>;
44
+ /**
45
+ * Run quality checks (lint, format)
46
+ */
47
+ private runQualityChecks;
48
+ /**
49
+ * Run tests
50
+ */
51
+ private runTests;
52
+ /**
53
+ * Check coverage
54
+ */
55
+ private checkCoverage;
56
+ /**
57
+ * Test workflows
58
+ */
59
+ private testWorkflows;
60
+ /**
61
+ * Commit changes
62
+ */
63
+ private commitChanges;
64
+ /**
65
+ * Start watcher in background
66
+ */
67
+ private startWatcherInBackground;
68
+ /**
69
+ * Cleanup resources
70
+ */
71
+ private cleanup;
72
+ /**
73
+ * Delay execution
74
+ */
75
+ private delay;
76
+ /**
77
+ * Stop agent
78
+ */
79
+ stop(): Promise<void>;
80
+ }
81
+ /**
82
+ * Create and start agent
83
+ */
84
+ export declare function startAgent(projectRoot: string, options?: AgentOptions): Promise<void>;
85
+ /**
86
+ * Create agent manager instance
87
+ */
88
+ export declare function createAgentManager(projectRoot: string): AgentManager;
89
+ //# sourceMappingURL=agent-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-manager.d.ts","sourceRoot":"","sources":["../../src/core/agent-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3F,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CACnD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAwB;IACtC,OAAO,CAAC,kBAAkB,CAAC,CAAqC;IAChE,OAAO,CAAC,eAAe,CAAC,CAAkC;IAC1D,OAAO,CAAC,iBAAiB,CAAC,CAAgB;gBAE9B,WAAW,EAAE,MAAM;IAO/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCjC;;OAEG;IACG,UAAU,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuE3D;;OAEG;IACG,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqDnE;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiF5D;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAyMtF;;OAEG;YACW,gBAAgB;IAoC9B;;OAEG;YACW,QAAQ;IAWtB;;OAEG;YACW,aAAa;IAW3B;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,aAAa;IAS3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAMhC;;OAEG;YACW,OAAO;IAUrB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAEpE"}
@@ -0,0 +1,546 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import { createOpenSpecManager } from './openspec-manager.js';
4
+ import { initializeLogger } from './logger.js';
5
+ import { createConfigManager } from './config-manager.js';
6
+ import { createCLIBridge } from './cli-bridge.js';
7
+ export class AgentManager {
8
+ openspecManager;
9
+ logger;
10
+ configManager;
11
+ cliBridge;
12
+ config;
13
+ isRunning = false;
14
+ currentTool;
15
+ onLog;
16
+ onTaskStatusChange;
17
+ onTasksReloaded;
18
+ initializePromise; // Track initialization promise to prevent race conditions
19
+ constructor(projectRoot) {
20
+ this.openspecManager = createOpenSpecManager(projectRoot);
21
+ this.logger = initializeLogger(projectRoot);
22
+ this.configManager = createConfigManager(projectRoot);
23
+ this.config = {}; // Will be loaded in initialize()
24
+ }
25
+ /**
26
+ * Initialize agent manager (only once, thread-safe)
27
+ */
28
+ async initialize() {
29
+ // If already initializing or initialized, return the same promise
30
+ if (this.initializePromise) {
31
+ // Update callbacks even if already initialized (they might have changed)
32
+ if (this.cliBridge && this.onLog) {
33
+ this.cliBridge.setLogCallback(this.onLog);
34
+ this.openspecManager.setLogCallback(this.onLog);
35
+ }
36
+ return this.initializePromise;
37
+ }
38
+ // Create and store the initialization promise
39
+ this.initializePromise = (async () => {
40
+ try {
41
+ this.config = await this.configManager.loadConfig();
42
+ this.cliBridge = createCLIBridge(this.logger, this.config);
43
+ // Pass onLog callback to CLI bridge if available
44
+ if (this.onLog) {
45
+ this.cliBridge.setLogCallback(this.onLog);
46
+ this.openspecManager.setLogCallback(this.onLog);
47
+ }
48
+ await this.openspecManager.initialize();
49
+ this.logger.info('Agent Manager initialized');
50
+ }
51
+ catch (error) {
52
+ this.logger.error('Failed to initialize Agent Manager', { error: String(error) });
53
+ // Clear the promise so it can be retried
54
+ this.initializePromise = undefined;
55
+ throw error;
56
+ }
57
+ })();
58
+ return this.initializePromise;
59
+ }
60
+ /**
61
+ * Start autonomous agent workflow
62
+ */
63
+ async startAgent(options = {}) {
64
+ try {
65
+ // Set callbacks BEFORE initialize
66
+ this.onLog = options.onLog;
67
+ this.onTaskStatusChange = options.onTaskStatusChange;
68
+ this.onTasksReloaded = options.onTasksReloaded;
69
+ await this.initialize();
70
+ if (!this.onLog) {
71
+ console.log(chalk.bold.blue('\n🤖 Rulebook Autonomous Agent\n'));
72
+ }
73
+ else {
74
+ this.onLog('info', '🤖 Rulebook Autonomous Agent');
75
+ }
76
+ // Detect and select CLI tool
77
+ const selectedTool = await this.selectCLITool(options.tool);
78
+ if (!selectedTool) {
79
+ const msg = 'No CLI tool selected. Exiting.';
80
+ if (this.onLog) {
81
+ this.onLog('error', msg);
82
+ }
83
+ else {
84
+ console.log(chalk.red(msg));
85
+ }
86
+ return;
87
+ }
88
+ this.currentTool = selectedTool;
89
+ this.isRunning = true;
90
+ // Sync task status first
91
+ if (this.onLog) {
92
+ this.onLog('info', '📋 Syncing task status...');
93
+ }
94
+ else {
95
+ console.log(chalk.gray('📋 Syncing task status...'));
96
+ }
97
+ await this.openspecManager.syncTaskStatus();
98
+ // Notify watcher with reloaded tasks
99
+ if (this.onTasksReloaded) {
100
+ const data = await this.openspecManager.loadOpenSpec();
101
+ this.onTasksReloaded(data.tasks);
102
+ }
103
+ if (this.onLog) {
104
+ this.onLog('success', '✅ Task status synced');
105
+ }
106
+ else {
107
+ console.log(chalk.green('✅ Task status synced\n'));
108
+ }
109
+ // Start watcher if requested
110
+ if (options.watchMode) {
111
+ this.startWatcherInBackground();
112
+ }
113
+ // Run main workflow loop
114
+ await this.runAgentWorkflow(options);
115
+ }
116
+ catch (error) {
117
+ this.logger.error('Agent failed', { error: String(error) });
118
+ const msg = `❌ Agent failed: ${error}`;
119
+ if (this.onLog) {
120
+ this.onLog('error', msg);
121
+ }
122
+ else {
123
+ console.error(chalk.red('\n' + msg));
124
+ }
125
+ }
126
+ finally {
127
+ await this.cleanup();
128
+ }
129
+ }
130
+ /**
131
+ * Detect and select CLI tool
132
+ */
133
+ async selectCLITool(preferredTool) {
134
+ const availableTools = await this.cliBridge.detectCLITools();
135
+ if (availableTools.length === 0) {
136
+ const msg = 'No CLI tools detected. Please install cursor-agent, claude-code, or gemini-cli.';
137
+ if (this.onLog) {
138
+ this.onLog('error', msg);
139
+ }
140
+ else {
141
+ console.log(chalk.red(msg));
142
+ }
143
+ return null;
144
+ }
145
+ // If preferred tool is specified and available, use it
146
+ if (preferredTool && availableTools.some((tool) => tool.name === preferredTool)) {
147
+ const msg = `Using preferred tool: ${preferredTool}`;
148
+ if (this.onLog) {
149
+ this.onLog('info', msg);
150
+ }
151
+ else {
152
+ console.log(chalk.green(msg));
153
+ }
154
+ return preferredTool;
155
+ }
156
+ // If only one tool available, use it
157
+ if (availableTools.length === 1) {
158
+ const msg = `Using available tool: ${availableTools[0].name}`;
159
+ if (this.onLog) {
160
+ this.onLog('info', msg);
161
+ }
162
+ else {
163
+ console.log(chalk.green(msg));
164
+ }
165
+ return availableTools[0].name;
166
+ }
167
+ // Multiple tools available, let user choose
168
+ const choices = availableTools.map((tool) => ({
169
+ name: `${tool.name} ${tool.version ? `(${tool.version})` : ''}`,
170
+ value: tool.name,
171
+ }));
172
+ const answer = await inquirer.prompt([
173
+ {
174
+ type: 'list',
175
+ name: 'tool',
176
+ message: 'Select CLI tool to use:',
177
+ choices,
178
+ },
179
+ ]);
180
+ return answer.tool;
181
+ }
182
+ /**
183
+ * Run main agent workflow loop
184
+ */
185
+ async runAgentWorkflow(options) {
186
+ const maxIterations = options.maxIterations || 10;
187
+ let iteration = 0;
188
+ this.logger.info('Starting agent workflow', { maxIterations });
189
+ while (this.isRunning && iteration < maxIterations) {
190
+ try {
191
+ iteration++;
192
+ this.logger.info(`Workflow iteration ${iteration}/${maxIterations}`);
193
+ // Get next task
194
+ const nextTask = await this.openspecManager.getNextTask();
195
+ if (!nextTask) {
196
+ this.logger.info('No more tasks available');
197
+ const msg = '✅ All tasks completed!';
198
+ if (this.onLog) {
199
+ this.onLog('success', msg);
200
+ }
201
+ else {
202
+ console.log(chalk.green(`\n${msg}`));
203
+ }
204
+ break;
205
+ }
206
+ // Debug: Log task being executed
207
+ if (this.onLog) {
208
+ this.onLog('info', `[DEBUG] Agent picked task: ${nextTask.id} - ${nextTask.title.substring(0, 50)}`);
209
+ }
210
+ // Execute task workflow
211
+ const success = await this.executeTaskWorkflow(nextTask, options);
212
+ if (success) {
213
+ await this.openspecManager.markTaskComplete(nextTask.id);
214
+ this.logger.taskComplete(nextTask.id, nextTask.title, 0);
215
+ // Notify watcher about completion
216
+ if (this.onTaskStatusChange) {
217
+ this.onTaskStatusChange(nextTask.id, 'completed');
218
+ }
219
+ }
220
+ else {
221
+ await this.openspecManager.updateTaskStatus(nextTask.id, 'failed');
222
+ this.logger.taskFailed(nextTask.id, nextTask.title, 'Task execution failed');
223
+ // Notify watcher about failure
224
+ if (this.onTaskStatusChange) {
225
+ this.onTaskStatusChange(nextTask.id, 'failed');
226
+ }
227
+ }
228
+ // Small delay between tasks
229
+ await this.delay(2000);
230
+ }
231
+ catch (error) {
232
+ this.logger.error(`Workflow iteration ${iteration} failed`, { error: String(error) });
233
+ const msg = `❌ Iteration ${iteration} failed: ${error}`;
234
+ if (this.onLog) {
235
+ this.onLog('error', msg);
236
+ }
237
+ else {
238
+ console.error(chalk.red('\n' + msg));
239
+ }
240
+ // Continue with next iteration unless it's a critical error
241
+ if (iteration >= maxIterations) {
242
+ break;
243
+ }
244
+ }
245
+ }
246
+ if (iteration >= maxIterations) {
247
+ const msg = `⚠️ Reached maximum iterations (${maxIterations})`;
248
+ if (this.onLog) {
249
+ this.onLog('warning', msg);
250
+ }
251
+ else {
252
+ console.log(chalk.yellow('\n' + msg));
253
+ }
254
+ }
255
+ }
256
+ /**
257
+ * Execute workflow for a single task
258
+ */
259
+ async executeTaskWorkflow(task, options) {
260
+ const startTime = Date.now();
261
+ this.logger.taskStart(task.id, task.title);
262
+ const msg = `📋 Executing task: ${task.title}`;
263
+ if (this.onLog) {
264
+ this.onLog('info', msg);
265
+ }
266
+ else {
267
+ console.log(chalk.blue('\n' + msg));
268
+ }
269
+ try {
270
+ // Set task as in-progress
271
+ await this.openspecManager.setCurrentTask(task.id);
272
+ await this.openspecManager.updateTaskStatus(task.id, 'in-progress');
273
+ // Notify watcher about status change
274
+ if (this.onTaskStatusChange) {
275
+ if (this.onLog) {
276
+ this.onLog('info', `[DEBUG] Calling onTaskStatusChange for ${task.id}`);
277
+ }
278
+ this.onTaskStatusChange(task.id, 'in-progress');
279
+ }
280
+ else {
281
+ if (this.onLog) {
282
+ this.onLog('warning', '[DEBUG] onTaskStatusChange callback is undefined!');
283
+ }
284
+ }
285
+ if (options.dryRun) {
286
+ if (this.onLog) {
287
+ this.onLog('warning', '🔍 DRY RUN MODE - No actual execution');
288
+ this.onLog('info', `Would execute: ${task.title}`);
289
+ }
290
+ else {
291
+ console.log(chalk.yellow('🔍 DRY RUN MODE - No actual execution'));
292
+ console.log(chalk.gray(`Would execute: ${task.title}`));
293
+ }
294
+ return true;
295
+ }
296
+ // Step 1: Send task to CLI
297
+ if (this.onLog) {
298
+ this.onLog('info', '📤 Sending task to CLI...');
299
+ }
300
+ else {
301
+ console.log(chalk.gray('📤 Sending task to CLI...'));
302
+ }
303
+ const taskResponse = await this.cliBridge.sendTaskCommand(this.currentTool, task);
304
+ if (this.onLog) {
305
+ this.onLog('info', '📥 Agent Response:');
306
+ this.onLog('info', '─'.repeat(80));
307
+ this.onLog('info', taskResponse.output || '(no output)');
308
+ this.onLog('info', '─'.repeat(80));
309
+ this.onLog('info', `Exit Code: ${taskResponse.exitCode} | Duration: ${Math.round(taskResponse.duration / 1000)}s`);
310
+ if (taskResponse.error) {
311
+ this.onLog('warning', '⚠️ Error Output:');
312
+ this.onLog('error', taskResponse.error);
313
+ }
314
+ }
315
+ else {
316
+ console.log(chalk.blue('\n📥 Agent Response:'));
317
+ console.log(chalk.gray('─'.repeat(80)));
318
+ console.log(taskResponse.output || '(no output)');
319
+ console.log(chalk.gray('─'.repeat(80)));
320
+ console.log(chalk.gray(`Exit Code: ${taskResponse.exitCode} | Duration: ${Math.round(taskResponse.duration / 1000)}s`));
321
+ if (taskResponse.error) {
322
+ console.log(chalk.red('\n⚠️ Error Output:'));
323
+ console.log(chalk.red(taskResponse.error));
324
+ }
325
+ }
326
+ if (!taskResponse.success) {
327
+ throw new Error(`Task command failed: ${taskResponse.error}`);
328
+ }
329
+ // Step 2: Continue implementation loop
330
+ if (this.onLog) {
331
+ this.onLog('info', '🔄 Continuing implementation...');
332
+ }
333
+ else {
334
+ console.log(chalk.gray('\n🔄 Continuing implementation...'));
335
+ }
336
+ const continueResponse = await this.cliBridge.sendContinueCommand(this.currentTool, 10);
337
+ if (this.onLog) {
338
+ this.onLog('info', '📥 Continue Response:');
339
+ this.onLog('info', '─'.repeat(80));
340
+ this.onLog('info', continueResponse.output || '(no output)');
341
+ this.onLog('info', '─'.repeat(80));
342
+ this.onLog('info', `Exit Code: ${continueResponse.exitCode} | Duration: ${Math.round(continueResponse.duration / 1000)}s`);
343
+ if (continueResponse.error) {
344
+ this.onLog('warning', '⚠️ Error Output:');
345
+ this.onLog('error', continueResponse.error);
346
+ }
347
+ if (!continueResponse.success) {
348
+ this.onLog('warning', '⚠️ Continue command failed, but continuing workflow');
349
+ }
350
+ }
351
+ else {
352
+ console.log(chalk.blue('\n📥 Continue Response:'));
353
+ console.log(chalk.gray('─'.repeat(80)));
354
+ console.log(continueResponse.output || '(no output)');
355
+ console.log(chalk.gray('─'.repeat(80)));
356
+ console.log(chalk.gray(`Exit Code: ${continueResponse.exitCode} | Duration: ${Math.round(continueResponse.duration / 1000)}s`));
357
+ if (continueResponse.error) {
358
+ console.log(chalk.red('\n⚠️ Error Output:'));
359
+ console.log(chalk.red(continueResponse.error));
360
+ }
361
+ if (!continueResponse.success) {
362
+ console.log(chalk.yellow('⚠️ Continue command failed, but continuing workflow'));
363
+ }
364
+ }
365
+ // Step 3: Run quality checks
366
+ if (this.onLog) {
367
+ this.onLog('info', '🔍 Running quality checks...');
368
+ }
369
+ else {
370
+ console.log(chalk.gray('🔍 Running quality checks...'));
371
+ }
372
+ await this.runQualityChecks();
373
+ // Step 4: Run tests
374
+ if (this.onLog) {
375
+ this.onLog('info', '🧪 Running tests...');
376
+ }
377
+ else {
378
+ console.log(chalk.gray('🧪 Running tests...'));
379
+ }
380
+ const testSuccess = await this.runTests();
381
+ if (!testSuccess) {
382
+ throw new Error('Tests failed');
383
+ }
384
+ // Step 5: Check coverage
385
+ if (this.onLog) {
386
+ this.onLog('info', '📊 Checking coverage...');
387
+ }
388
+ else {
389
+ console.log(chalk.gray('📊 Checking coverage...'));
390
+ }
391
+ const coverageSuccess = await this.checkCoverage();
392
+ if (!coverageSuccess) {
393
+ throw new Error('Coverage below threshold');
394
+ }
395
+ // Step 6: Test workflows
396
+ if (this.onLog) {
397
+ this.onLog('info', '⚙️ Testing workflows...');
398
+ }
399
+ else {
400
+ console.log(chalk.gray('⚙️ Testing workflows...'));
401
+ }
402
+ await this.testWorkflows();
403
+ // Step 7: Commit changes
404
+ if (this.onLog) {
405
+ this.onLog('info', '💾 Committing changes...');
406
+ }
407
+ else {
408
+ console.log(chalk.gray('💾 Committing changes...'));
409
+ }
410
+ await this.commitChanges(task);
411
+ const duration = Date.now() - startTime;
412
+ this.logger.taskComplete(task.id, task.title, duration);
413
+ const successMsg = `✅ Task completed successfully in ${Math.round(duration / 1000)}s`;
414
+ if (this.onLog) {
415
+ this.onLog('success', successMsg);
416
+ }
417
+ else {
418
+ console.log(chalk.green(successMsg));
419
+ }
420
+ return true;
421
+ }
422
+ catch (error) {
423
+ const duration = Date.now() - startTime;
424
+ this.logger.taskFailed(task.id, task.title, String(error), duration);
425
+ const errorMsg = `❌ Task failed: ${error}`;
426
+ if (this.onLog) {
427
+ this.onLog('error', errorMsg);
428
+ }
429
+ else {
430
+ console.error(chalk.red(errorMsg));
431
+ }
432
+ return false;
433
+ }
434
+ }
435
+ /**
436
+ * Run quality checks (lint, format)
437
+ */
438
+ async runQualityChecks() {
439
+ // Run lint
440
+ const lintResponse = await this.cliBridge.sendLintCommand(this.currentTool);
441
+ this.logger.testExecution('lint', lintResponse.success ? 'passed' : 'failed', lintResponse.duration);
442
+ if (!lintResponse.success) {
443
+ const msg = '⚠️ Lint issues found, but continuing';
444
+ if (this.onLog) {
445
+ this.onLog('warning', msg);
446
+ }
447
+ else {
448
+ console.log(chalk.yellow(msg));
449
+ }
450
+ }
451
+ // Run format
452
+ const formatResponse = await this.cliBridge.sendFormatCommand(this.currentTool);
453
+ this.logger.testExecution('format', formatResponse.success ? 'passed' : 'failed', formatResponse.duration);
454
+ if (!formatResponse.success) {
455
+ const msg = '⚠️ Format issues found, but continuing';
456
+ if (this.onLog) {
457
+ this.onLog('warning', msg);
458
+ }
459
+ else {
460
+ console.log(chalk.yellow(msg));
461
+ }
462
+ }
463
+ }
464
+ /**
465
+ * Run tests
466
+ */
467
+ async runTests() {
468
+ const testResponse = await this.cliBridge.sendTestCommand(this.currentTool);
469
+ this.logger.testExecution('tests', testResponse.success ? 'passed' : 'failed', testResponse.duration);
470
+ return testResponse.success;
471
+ }
472
+ /**
473
+ * Check coverage
474
+ */
475
+ async checkCoverage() {
476
+ // This would integrate with your coverage checker
477
+ // For now, assume coverage is OK
478
+ const coverage = 95; // This should come from actual coverage check
479
+ const threshold = this.config.coverageThreshold;
480
+ this.logger.coverageCheck(coverage, threshold);
481
+ return coverage >= threshold;
482
+ }
483
+ /**
484
+ * Test workflows
485
+ */
486
+ async testWorkflows() {
487
+ // This would test GitHub Actions workflows
488
+ // For now, just log
489
+ this.logger.info('Testing workflows (placeholder)');
490
+ }
491
+ /**
492
+ * Commit changes
493
+ */
494
+ async commitChanges(task) {
495
+ const message = `feat: ${task.title}\n\n${task.description}`;
496
+ const commitResponse = await this.cliBridge.sendCommitCommand(this.currentTool, message);
497
+ if (!commitResponse.success) {
498
+ throw new Error(`Commit failed: ${commitResponse.error}`);
499
+ }
500
+ }
501
+ /**
502
+ * Start watcher in background
503
+ */
504
+ startWatcherInBackground() {
505
+ // This would start the watcher in a separate process or thread
506
+ // For now, just log
507
+ this.logger.info('Watcher mode requested (placeholder)');
508
+ }
509
+ /**
510
+ * Cleanup resources
511
+ */
512
+ async cleanup() {
513
+ this.isRunning = false;
514
+ if (this.cliBridge) {
515
+ await this.cliBridge.killAllProcesses();
516
+ }
517
+ await this.logger.close();
518
+ }
519
+ /**
520
+ * Delay execution
521
+ */
522
+ delay(ms) {
523
+ return new Promise((resolve) => setTimeout(resolve, ms));
524
+ }
525
+ /**
526
+ * Stop agent
527
+ */
528
+ async stop() {
529
+ this.isRunning = false;
530
+ await this.cleanup();
531
+ }
532
+ }
533
+ /**
534
+ * Create and start agent
535
+ */
536
+ export async function startAgent(projectRoot, options = {}) {
537
+ const agent = new AgentManager(projectRoot);
538
+ await agent.startAgent(options);
539
+ }
540
+ /**
541
+ * Create agent manager instance
542
+ */
543
+ export function createAgentManager(projectRoot) {
544
+ return new AgentManager(projectRoot);
545
+ }
546
+ //# sourceMappingURL=agent-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-manager.js","sourceRoot":"","sources":["../../src/core/agent-manager.ts"],"names":[],"mappings":"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"}