@hivehub/rulebook 2.1.0 → 3.1.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 (550) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +840 -661
  3. package/dist/agents/claude-code.d.ts +0 -0
  4. package/dist/agents/claude-code.d.ts.map +0 -0
  5. package/dist/agents/claude-code.js +0 -0
  6. package/dist/agents/claude-code.js.map +0 -0
  7. package/dist/agents/cursor-agent.d.ts +0 -0
  8. package/dist/agents/cursor-agent.d.ts.map +0 -0
  9. package/dist/agents/cursor-agent.js +0 -0
  10. package/dist/agents/cursor-agent.js.map +0 -0
  11. package/dist/agents/gemini-cli.d.ts +0 -0
  12. package/dist/agents/gemini-cli.d.ts.map +0 -0
  13. package/dist/agents/gemini-cli.js +0 -0
  14. package/dist/agents/gemini-cli.js.map +0 -0
  15. package/dist/agents/ralph-parser.d.ts +52 -0
  16. package/dist/agents/ralph-parser.d.ts.map +1 -0
  17. package/dist/agents/ralph-parser.js +246 -0
  18. package/dist/agents/ralph-parser.js.map +1 -0
  19. package/dist/cli/commands.d.ts +35 -0
  20. package/dist/cli/commands.d.ts.map +1 -1
  21. package/dist/cli/commands.js +669 -28
  22. package/dist/cli/commands.js.map +1 -1
  23. package/dist/cli/docs-prompts.d.ts +0 -0
  24. package/dist/cli/docs-prompts.d.ts.map +0 -0
  25. package/dist/cli/docs-prompts.js +0 -0
  26. package/dist/cli/docs-prompts.js.map +0 -0
  27. package/dist/cli/prompts.d.ts +0 -0
  28. package/dist/cli/prompts.d.ts.map +0 -0
  29. package/dist/cli/prompts.js +0 -0
  30. package/dist/cli/prompts.js.map +0 -0
  31. package/dist/core/agent-manager.d.ts +0 -0
  32. package/dist/core/agent-manager.d.ts.map +0 -0
  33. package/dist/core/agent-manager.js +0 -0
  34. package/dist/core/agent-manager.js.map +0 -0
  35. package/dist/core/auto-fixer.d.ts +0 -0
  36. package/dist/core/auto-fixer.d.ts.map +0 -0
  37. package/dist/core/auto-fixer.js +0 -0
  38. package/dist/core/auto-fixer.js.map +0 -0
  39. package/dist/core/changelog-generator.d.ts +0 -0
  40. package/dist/core/changelog-generator.d.ts.map +0 -0
  41. package/dist/core/changelog-generator.js +0 -0
  42. package/dist/core/changelog-generator.js.map +0 -0
  43. package/dist/core/claude-mcp.d.ts +32 -0
  44. package/dist/core/claude-mcp.d.ts.map +1 -0
  45. package/dist/core/claude-mcp.js +92 -0
  46. package/dist/core/claude-mcp.js.map +1 -0
  47. package/dist/core/cli-bridge.d.ts +0 -0
  48. package/dist/core/cli-bridge.d.ts.map +0 -0
  49. package/dist/core/cli-bridge.js +0 -0
  50. package/dist/core/cli-bridge.js.map +0 -0
  51. package/dist/core/config-manager.d.ts +13 -2
  52. package/dist/core/config-manager.d.ts.map +1 -1
  53. package/dist/core/config-manager.js +209 -10
  54. package/dist/core/config-manager.js.map +1 -1
  55. package/dist/core/coverage-checker.d.ts +0 -0
  56. package/dist/core/coverage-checker.d.ts.map +0 -0
  57. package/dist/core/coverage-checker.js +0 -0
  58. package/dist/core/coverage-checker.js.map +0 -0
  59. package/dist/core/custom-templates.d.ts +0 -0
  60. package/dist/core/custom-templates.d.ts.map +0 -0
  61. package/dist/core/custom-templates.js +0 -0
  62. package/dist/core/custom-templates.js.map +0 -0
  63. package/dist/core/dependency-checker.d.ts +0 -0
  64. package/dist/core/dependency-checker.d.ts.map +0 -0
  65. package/dist/core/dependency-checker.js +0 -0
  66. package/dist/core/dependency-checker.js.map +0 -0
  67. package/dist/core/detector.d.ts +0 -0
  68. package/dist/core/detector.d.ts.map +0 -0
  69. package/dist/core/detector.js +0 -0
  70. package/dist/core/detector.js.map +0 -0
  71. package/dist/core/docs-generator.d.ts +0 -0
  72. package/dist/core/docs-generator.d.ts.map +0 -0
  73. package/dist/core/docs-generator.js +0 -0
  74. package/dist/core/docs-generator.js.map +0 -0
  75. package/dist/core/generator.d.ts +0 -0
  76. package/dist/core/generator.d.ts.map +1 -1
  77. package/dist/core/generator.js +181 -49
  78. package/dist/core/generator.js.map +1 -1
  79. package/dist/core/gitignore-generator.d.ts +0 -0
  80. package/dist/core/gitignore-generator.d.ts.map +0 -0
  81. package/dist/core/gitignore-generator.js +0 -0
  82. package/dist/core/gitignore-generator.js.map +0 -0
  83. package/dist/core/health-scorer.d.ts +0 -0
  84. package/dist/core/health-scorer.d.ts.map +0 -0
  85. package/dist/core/health-scorer.js +0 -0
  86. package/dist/core/health-scorer.js.map +0 -0
  87. package/dist/core/iteration-tracker.d.ts +57 -0
  88. package/dist/core/iteration-tracker.d.ts.map +1 -0
  89. package/dist/core/iteration-tracker.js +209 -0
  90. package/dist/core/iteration-tracker.js.map +1 -0
  91. package/dist/core/logger.d.ts +0 -0
  92. package/dist/core/logger.d.ts.map +0 -0
  93. package/dist/core/logger.js +0 -0
  94. package/dist/core/logger.js.map +0 -0
  95. package/dist/core/merger.d.ts +0 -0
  96. package/dist/core/merger.d.ts.map +0 -0
  97. package/dist/core/merger.js +0 -0
  98. package/dist/core/merger.js.map +0 -0
  99. package/dist/core/migrator.d.ts +13 -0
  100. package/dist/core/migrator.d.ts.map +1 -1
  101. package/dist/core/migrator.js +76 -9
  102. package/dist/core/migrator.js.map +1 -1
  103. package/dist/core/minimal-scaffolder.d.ts +0 -0
  104. package/dist/core/minimal-scaffolder.d.ts.map +0 -0
  105. package/dist/core/minimal-scaffolder.js +0 -0
  106. package/dist/core/minimal-scaffolder.js.map +0 -0
  107. package/dist/core/modern-console.d.ts +0 -0
  108. package/dist/core/modern-console.d.ts.map +0 -0
  109. package/dist/core/modern-console.js +0 -0
  110. package/dist/core/modern-console.js.map +0 -0
  111. package/dist/core/openspec-manager.d.ts +0 -0
  112. package/dist/core/openspec-manager.d.ts.map +0 -0
  113. package/dist/core/openspec-manager.js +0 -0
  114. package/dist/core/openspec-manager.js.map +0 -0
  115. package/dist/core/openspec-migrator.d.ts +1 -1
  116. package/dist/core/openspec-migrator.d.ts.map +1 -1
  117. package/dist/core/openspec-migrator.js +14 -7
  118. package/dist/core/openspec-migrator.js.map +1 -1
  119. package/dist/core/prd-generator.d.ts +36 -0
  120. package/dist/core/prd-generator.d.ts.map +1 -0
  121. package/dist/core/prd-generator.js +137 -0
  122. package/dist/core/prd-generator.js.map +1 -0
  123. package/dist/core/ralph-manager.d.ts +75 -0
  124. package/dist/core/ralph-manager.d.ts.map +1 -0
  125. package/dist/core/ralph-manager.js +276 -0
  126. package/dist/core/ralph-manager.js.map +1 -0
  127. package/dist/core/skills-manager.d.ts +0 -0
  128. package/dist/core/skills-manager.d.ts.map +0 -0
  129. package/dist/core/skills-manager.js +0 -0
  130. package/dist/core/skills-manager.js.map +0 -0
  131. package/dist/core/task-manager.d.ts +0 -0
  132. package/dist/core/task-manager.d.ts.map +0 -0
  133. package/dist/core/task-manager.js +0 -0
  134. package/dist/core/task-manager.js.map +0 -0
  135. package/dist/core/test-task-manager.d.ts +0 -0
  136. package/dist/core/test-task-manager.d.ts.map +0 -0
  137. package/dist/core/test-task-manager.js +0 -0
  138. package/dist/core/test-task-manager.js.map +0 -0
  139. package/dist/core/validator.d.ts +0 -0
  140. package/dist/core/validator.d.ts.map +0 -0
  141. package/dist/core/validator.js +0 -0
  142. package/dist/core/validator.js.map +0 -0
  143. package/dist/core/version-bumper.d.ts +0 -0
  144. package/dist/core/version-bumper.d.ts.map +0 -0
  145. package/dist/core/version-bumper.js +0 -0
  146. package/dist/core/version-bumper.js.map +0 -0
  147. package/dist/core/watcher.d.ts +0 -0
  148. package/dist/core/watcher.d.ts.map +0 -0
  149. package/dist/core/watcher.js +0 -0
  150. package/dist/core/watcher.js.map +0 -0
  151. package/dist/core/workflow-generator.d.ts +0 -0
  152. package/dist/core/workflow-generator.d.ts.map +0 -0
  153. package/dist/core/workflow-generator.js +297 -261
  154. package/dist/core/workflow-generator.js.map +1 -1
  155. package/dist/index.d.ts +0 -0
  156. package/dist/index.d.ts.map +0 -0
  157. package/dist/index.js +85 -1
  158. package/dist/index.js.map +1 -1
  159. package/dist/mcp/rulebook-server.d.ts +0 -0
  160. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  161. package/dist/mcp/rulebook-server.js +484 -74
  162. package/dist/mcp/rulebook-server.js.map +1 -1
  163. package/dist/memory/hnsw-index.d.ts +63 -0
  164. package/dist/memory/hnsw-index.d.ts.map +1 -0
  165. package/dist/memory/hnsw-index.js +421 -0
  166. package/dist/memory/hnsw-index.js.map +1 -0
  167. package/dist/memory/memory-cache.d.ts +33 -0
  168. package/dist/memory/memory-cache.d.ts.map +1 -0
  169. package/dist/memory/memory-cache.js +85 -0
  170. package/dist/memory/memory-cache.js.map +1 -0
  171. package/dist/memory/memory-hooks.d.ts +48 -0
  172. package/dist/memory/memory-hooks.d.ts.map +1 -0
  173. package/dist/memory/memory-hooks.js +250 -0
  174. package/dist/memory/memory-hooks.js.map +1 -0
  175. package/dist/memory/memory-manager.d.ts +56 -0
  176. package/dist/memory/memory-manager.d.ts.map +1 -0
  177. package/dist/memory/memory-manager.js +216 -0
  178. package/dist/memory/memory-manager.js.map +1 -0
  179. package/dist/memory/memory-search.d.ts +42 -0
  180. package/dist/memory/memory-search.d.ts.map +1 -0
  181. package/dist/memory/memory-search.js +166 -0
  182. package/dist/memory/memory-search.js.map +1 -0
  183. package/dist/memory/memory-store.d.ts +59 -0
  184. package/dist/memory/memory-store.d.ts.map +1 -0
  185. package/dist/memory/memory-store.js +394 -0
  186. package/dist/memory/memory-store.js.map +1 -0
  187. package/dist/memory/memory-types.d.ts +70 -0
  188. package/dist/memory/memory-types.d.ts.map +1 -0
  189. package/dist/memory/memory-types.js +7 -0
  190. package/dist/memory/memory-types.js.map +1 -0
  191. package/dist/memory/memory-vectorizer.d.ts +29 -0
  192. package/dist/memory/memory-vectorizer.d.ts.map +1 -0
  193. package/dist/memory/memory-vectorizer.js +104 -0
  194. package/dist/memory/memory-vectorizer.js.map +1 -0
  195. package/dist/types.d.ts +77 -0
  196. package/dist/types.d.ts.map +1 -1
  197. package/dist/types.js +0 -0
  198. package/dist/types.js.map +0 -0
  199. package/dist/utils/file-system.d.ts +0 -0
  200. package/dist/utils/file-system.d.ts.map +0 -0
  201. package/dist/utils/file-system.js +0 -0
  202. package/dist/utils/file-system.js.map +0 -0
  203. package/dist/utils/git-hooks.d.ts +0 -0
  204. package/dist/utils/git-hooks.d.ts.map +0 -0
  205. package/dist/utils/git-hooks.js +0 -0
  206. package/dist/utils/git-hooks.js.map +0 -0
  207. package/dist/utils/rulesignore.d.ts +0 -0
  208. package/dist/utils/rulesignore.d.ts.map +0 -0
  209. package/dist/utils/rulesignore.js +0 -0
  210. package/dist/utils/rulesignore.js.map +0 -0
  211. package/package.json +25 -25
  212. package/templates/cli/AIDER.md +0 -0
  213. package/templates/cli/AMAZON_Q.md +0 -0
  214. package/templates/cli/AUGGIE.md +0 -0
  215. package/templates/cli/CLAUDE.md +85 -0
  216. package/templates/cli/CLAUDE_CODE.md +0 -0
  217. package/templates/cli/CLINE.md +69 -2
  218. package/templates/cli/CODEBUDDY.md +0 -0
  219. package/templates/cli/CODEIUM.md +0 -0
  220. package/templates/cli/CODEX.md +0 -0
  221. package/templates/cli/CONTINUE.md +0 -0
  222. package/templates/cli/CURSOR_CLI.md +37 -3
  223. package/templates/cli/FACTORY.md +0 -0
  224. package/templates/cli/GEMINI.md +0 -0
  225. package/templates/cli/KILOCODE.md +0 -0
  226. package/templates/cli/OPENCODE.md +0 -0
  227. package/templates/cli/_GENERIC_TEMPLATE.md +0 -0
  228. package/templates/cli/gemini-extension.json +0 -0
  229. package/templates/commands/rulebook-memory-save.md +48 -0
  230. package/templates/commands/rulebook-memory-search.md +47 -0
  231. package/templates/commands/rulebook-task-apply.md +2 -2
  232. package/templates/commands/rulebook-task-archive.md +2 -2
  233. package/templates/commands/rulebook-task-create.md +2 -2
  234. package/templates/commands/rulebook-task-list.md +2 -2
  235. package/templates/commands/rulebook-task-show.md +2 -2
  236. package/templates/commands/rulebook-task-validate.md +2 -2
  237. package/templates/core/AGENT_AUTOMATION.md +142 -38
  238. package/templates/core/DAG.md +0 -0
  239. package/templates/core/DOCUMENTATION_RULES.md +0 -0
  240. package/templates/core/QUALITY_ENFORCEMENT.md +0 -0
  241. package/templates/core/RALPH.md +430 -0
  242. package/templates/core/RULEBOOK.md +20 -1
  243. package/templates/frameworks/ANGULAR.md +0 -0
  244. package/templates/frameworks/DJANGO.md +0 -0
  245. package/templates/frameworks/ELECTRON.md +0 -0
  246. package/templates/frameworks/FLASK.md +0 -0
  247. package/templates/frameworks/FLUTTER.md +0 -0
  248. package/templates/frameworks/JQUERY.md +0 -0
  249. package/templates/frameworks/LARAVEL.md +0 -0
  250. package/templates/frameworks/NESTJS.md +0 -0
  251. package/templates/frameworks/NEXTJS.md +0 -0
  252. package/templates/frameworks/NUXT.md +0 -0
  253. package/templates/frameworks/RAILS.md +0 -0
  254. package/templates/frameworks/REACT.md +0 -0
  255. package/templates/frameworks/REACT_NATIVE.md +0 -0
  256. package/templates/frameworks/SPRING.md +0 -0
  257. package/templates/frameworks/SYMFONY.md +0 -0
  258. package/templates/frameworks/VUE.md +0 -0
  259. package/templates/frameworks/ZEND.md +0 -0
  260. package/templates/git/CI_CD_PATTERNS.md +4 -4
  261. package/templates/git/GITHUB_ACTIONS.md +3 -3
  262. package/templates/git/GITLAB_CI.md +4 -4
  263. package/templates/git/GIT_WORKFLOW.md +0 -0
  264. package/templates/git/SECRETS_MANAGEMENT.md +4 -4
  265. package/templates/hooks/COMMIT_MSG.md +4 -4
  266. package/templates/hooks/POST_CHECKOUT.md +3 -3
  267. package/templates/hooks/PREPARE_COMMIT_MSG.md +3 -3
  268. package/templates/hooks/PRE_COMMIT.md +4 -4
  269. package/templates/hooks/PRE_PUSH.md +4 -4
  270. package/templates/hooks/csharp-pre-commit.sh +0 -0
  271. package/templates/hooks/csharp-pre-push.sh +0 -0
  272. package/templates/hooks/dart-pre-commit.sh +0 -0
  273. package/templates/hooks/dart-pre-push.sh +0 -0
  274. package/templates/hooks/elixir-pre-commit.sh +0 -0
  275. package/templates/hooks/elixir-pre-push.sh +0 -0
  276. package/templates/hooks/erlang-pre-commit.sh +0 -0
  277. package/templates/hooks/erlang-pre-push.sh +0 -0
  278. package/templates/hooks/go-pre-commit.sh +0 -0
  279. package/templates/hooks/go-pre-push.sh +0 -0
  280. package/templates/hooks/haskell-pre-commit.sh +0 -0
  281. package/templates/hooks/haskell-pre-push.sh +0 -0
  282. package/templates/hooks/java-pre-commit.sh +0 -0
  283. package/templates/hooks/java-pre-push.sh +0 -0
  284. package/templates/hooks/kotlin-pre-commit.sh +0 -0
  285. package/templates/hooks/kotlin-pre-push.sh +0 -0
  286. package/templates/hooks/php-pre-commit.sh +0 -0
  287. package/templates/hooks/php-pre-push.sh +0 -0
  288. package/templates/hooks/python-pre-commit.sh +0 -0
  289. package/templates/hooks/python-pre-push.sh +0 -0
  290. package/templates/hooks/ruby-pre-commit.sh +0 -0
  291. package/templates/hooks/ruby-pre-push.sh +0 -0
  292. package/templates/hooks/rust-pre-commit.sh +0 -0
  293. package/templates/hooks/rust-pre-push.sh +0 -0
  294. package/templates/hooks/scala-pre-commit.sh +0 -0
  295. package/templates/hooks/scala-pre-push.sh +0 -0
  296. package/templates/hooks/swift-pre-commit.sh +0 -0
  297. package/templates/hooks/swift-pre-push.sh +0 -0
  298. package/templates/hooks/typescript-pre-commit.sh +0 -0
  299. package/templates/hooks/typescript-pre-push.sh +0 -0
  300. package/templates/ides/COPILOT.md +0 -0
  301. package/templates/ides/CURSOR.md +0 -0
  302. package/templates/ides/JETBRAINS_AI.md +0 -0
  303. package/templates/ides/REPLIT.md +0 -0
  304. package/templates/ides/TABNINE.md +0 -0
  305. package/templates/ides/VSCODE.md +0 -0
  306. package/templates/ides/WINDSURF.md +0 -0
  307. package/templates/ides/ZED.md +0 -0
  308. package/templates/languages/ADA.md +0 -0
  309. package/templates/languages/C.md +0 -0
  310. package/templates/languages/CPP.md +0 -0
  311. package/templates/languages/CSHARP.md +0 -0
  312. package/templates/languages/DART.md +0 -0
  313. package/templates/languages/ELIXIR.md +0 -0
  314. package/templates/languages/ERLANG.md +0 -0
  315. package/templates/languages/GO.md +0 -0
  316. package/templates/languages/HASKELL.md +0 -0
  317. package/templates/languages/JAVA.md +0 -0
  318. package/templates/languages/JAVASCRIPT.md +0 -0
  319. package/templates/languages/JULIA.md +0 -0
  320. package/templates/languages/KOTLIN.md +0 -0
  321. package/templates/languages/LISP.md +0 -0
  322. package/templates/languages/LUA.md +0 -0
  323. package/templates/languages/OBJECTIVEC.md +0 -0
  324. package/templates/languages/PHP.md +0 -0
  325. package/templates/languages/PYTHON.md +0 -0
  326. package/templates/languages/R.md +0 -0
  327. package/templates/languages/RUBY.md +0 -0
  328. package/templates/languages/RUST.md +0 -0
  329. package/templates/languages/SAS.md +0 -0
  330. package/templates/languages/SCALA.md +0 -0
  331. package/templates/languages/SOLIDITY.md +0 -0
  332. package/templates/languages/SQL.md +0 -0
  333. package/templates/languages/SWIFT.md +0 -0
  334. package/templates/languages/TYPESCRIPT.md +0 -0
  335. package/templates/languages/ZIG.md +0 -0
  336. package/templates/modules/ATLASSIAN.md +0 -0
  337. package/templates/modules/CONTEXT7.md +0 -0
  338. package/templates/modules/FIGMA.md +0 -0
  339. package/templates/modules/GITHUB_MCP.md +0 -0
  340. package/templates/modules/GRAFANA.md +0 -0
  341. package/templates/modules/MEMORY.md +126 -0
  342. package/templates/modules/NOTION.md +0 -0
  343. package/templates/modules/PLAYWRIGHT.md +0 -0
  344. package/templates/modules/RULEBOOK_MCP.md +0 -0
  345. package/templates/modules/SERENA.md +0 -0
  346. package/templates/modules/SUPABASE.md +0 -0
  347. package/templates/modules/SYNAP.md +0 -0
  348. package/templates/modules/VECTORIZER.md +0 -0
  349. package/templates/services/AZURE_BLOB.md +0 -0
  350. package/templates/services/CASSANDRA.md +0 -0
  351. package/templates/services/DYNAMODB.md +0 -0
  352. package/templates/services/ELASTICSEARCH.md +0 -0
  353. package/templates/services/GCS.md +0 -0
  354. package/templates/services/INFLUXDB.md +0 -0
  355. package/templates/services/KAFKA.md +0 -0
  356. package/templates/services/MARIADB.md +0 -0
  357. package/templates/services/MEMCACHED.md +0 -0
  358. package/templates/services/MINIO.md +0 -0
  359. package/templates/services/MONGODB.md +0 -0
  360. package/templates/services/MYSQL.md +0 -0
  361. package/templates/services/NEO4J.md +0 -0
  362. package/templates/services/ORACLE.md +0 -0
  363. package/templates/services/POSTGRESQL.md +0 -0
  364. package/templates/services/RABBITMQ.md +0 -0
  365. package/templates/services/REDIS.md +0 -0
  366. package/templates/services/S3.md +0 -0
  367. package/templates/services/SQLITE.md +0 -0
  368. package/templates/services/SQLSERVER.md +0 -0
  369. package/templates/skills/cli/aider/SKILL.md +59 -0
  370. package/templates/skills/cli/amazon-q/SKILL.md +35 -0
  371. package/templates/skills/cli/auggie/SKILL.md +42 -0
  372. package/templates/skills/cli/claude/SKILL.md +42 -0
  373. package/templates/skills/cli/claude-code/SKILL.md +146 -0
  374. package/templates/skills/cli/cline/SKILL.md +42 -0
  375. package/templates/skills/cli/codebuddy/SKILL.md +30 -0
  376. package/templates/skills/cli/codeium/SKILL.md +30 -0
  377. package/templates/skills/cli/codex/SKILL.md +31 -0
  378. package/templates/skills/cli/continue/SKILL.md +44 -0
  379. package/templates/skills/cli/cursor-cli/SKILL.md +38 -0
  380. package/templates/skills/cli/factory/SKILL.md +28 -0
  381. package/templates/skills/cli/gemini/SKILL.md +45 -0
  382. package/templates/skills/cli/kilocode/SKILL.md +28 -0
  383. package/templates/skills/cli/opencode/SKILL.md +28 -0
  384. package/templates/skills/core/agent-automation/SKILL.md +194 -0
  385. package/templates/skills/core/dag/SKILL.md +314 -0
  386. package/templates/skills/core/documentation-rules/SKILL.md +47 -0
  387. package/templates/skills/core/quality-enforcement/SKILL.md +78 -0
  388. package/templates/skills/core/rulebook/SKILL.md +0 -0
  389. package/templates/skills/frameworks/angular/SKILL.md +46 -0
  390. package/templates/skills/frameworks/django/SKILL.md +93 -0
  391. package/templates/skills/frameworks/electron/SKILL.md +157 -0
  392. package/templates/skills/frameworks/flask/SKILL.md +48 -0
  393. package/templates/skills/frameworks/flutter/SKILL.md +65 -0
  394. package/templates/skills/frameworks/jquery/SKILL.md +42 -0
  395. package/templates/skills/frameworks/laravel/SKILL.md +48 -0
  396. package/templates/skills/frameworks/nestjs/SKILL.md +53 -0
  397. package/templates/skills/frameworks/nextjs/SKILL.md +137 -0
  398. package/templates/skills/frameworks/nuxt/SKILL.md +50 -0
  399. package/templates/skills/frameworks/rails/SKILL.md +76 -0
  400. package/templates/skills/frameworks/react/SKILL.md +48 -0
  401. package/templates/skills/frameworks/react-native/SKILL.md +57 -0
  402. package/templates/skills/frameworks/spring/SKILL.md +49 -0
  403. package/templates/skills/frameworks/symfony/SKILL.md +46 -0
  404. package/templates/skills/frameworks/vue/SKILL.md +46 -0
  405. package/templates/skills/frameworks/zend/SKILL.md +45 -0
  406. package/templates/skills/ides/copilot/SKILL.md +47 -0
  407. package/templates/skills/ides/cursor/SKILL.md +53 -0
  408. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -0
  409. package/templates/skills/ides/replit/SKILL.md +46 -0
  410. package/templates/skills/ides/tabnine/SKILL.md +39 -0
  411. package/templates/skills/ides/vscode/SKILL.md +50 -0
  412. package/templates/skills/ides/windsurf/SKILL.md +46 -0
  413. package/templates/skills/ides/zed/SKILL.md +42 -0
  414. package/templates/skills/languages/ada/SKILL.md +68 -0
  415. package/templates/skills/languages/c/SKILL.md +343 -0
  416. package/templates/skills/languages/cpp/SKILL.md +753 -0
  417. package/templates/skills/languages/csharp/SKILL.md +427 -0
  418. package/templates/skills/languages/dart/SKILL.md +342 -0
  419. package/templates/skills/languages/elixir/SKILL.md +464 -0
  420. package/templates/skills/languages/erlang/SKILL.md +371 -0
  421. package/templates/skills/languages/go/SKILL.md +655 -0
  422. package/templates/skills/languages/haskell/SKILL.md +187 -0
  423. package/templates/skills/languages/java/SKILL.md +617 -0
  424. package/templates/skills/languages/javascript/SKILL.md +641 -0
  425. package/templates/skills/languages/julia/SKILL.md +107 -0
  426. package/templates/skills/languages/kotlin/SKILL.md +521 -0
  427. package/templates/skills/languages/lisp/SKILL.md +110 -0
  428. package/templates/skills/languages/lua/SKILL.md +84 -0
  429. package/templates/skills/languages/objectivec/SKILL.md +100 -0
  430. package/templates/skills/languages/php/SKILL.md +426 -0
  431. package/templates/skills/languages/python/SKILL.md +692 -0
  432. package/templates/skills/languages/r/SKILL.md +360 -0
  433. package/templates/skills/languages/ruby/SKILL.md +431 -0
  434. package/templates/skills/languages/rust/SKILL.md +487 -0
  435. package/templates/skills/languages/sas/SKILL.md +83 -0
  436. package/templates/skills/languages/scala/SKILL.md +358 -0
  437. package/templates/skills/languages/solidity/SKILL.md +590 -0
  438. package/templates/skills/languages/sql/SKILL.md +147 -0
  439. package/templates/skills/languages/swift/SKILL.md +476 -0
  440. package/templates/skills/languages/typescript/SKILL.md +0 -0
  441. package/templates/skills/languages/zig/SKILL.md +275 -0
  442. package/templates/skills/modules/atlassian/SKILL.md +265 -0
  443. package/templates/skills/modules/context7/SKILL.md +64 -0
  444. package/templates/skills/modules/figma/SKILL.md +277 -0
  445. package/templates/skills/modules/github-mcp/SKILL.md +74 -0
  446. package/templates/skills/modules/grafana/SKILL.md +338 -0
  447. package/templates/skills/modules/memory/SKILL.md +73 -0
  448. package/templates/skills/modules/notion/SKILL.md +257 -0
  449. package/templates/skills/modules/playwright/SKILL.md +100 -0
  450. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -0
  451. package/templates/skills/modules/serena/SKILL.md +347 -0
  452. package/templates/skills/modules/supabase/SKILL.md +233 -0
  453. package/templates/skills/modules/synap/SKILL.md +79 -0
  454. package/templates/skills/modules/vectorizer/SKILL.md +73 -0
  455. package/templates/skills/services/azure-blob/SKILL.md +194 -0
  456. package/templates/skills/services/cassandra/SKILL.md +249 -0
  457. package/templates/skills/services/dynamodb/SKILL.md +318 -0
  458. package/templates/skills/services/elasticsearch/SKILL.md +357 -0
  459. package/templates/skills/services/gcs/SKILL.md +188 -0
  460. package/templates/skills/services/influxdb/SKILL.md +275 -0
  461. package/templates/skills/services/kafka/SKILL.md +351 -0
  462. package/templates/skills/services/mariadb/SKILL.md +193 -0
  463. package/templates/skills/services/memcached/SKILL.md +252 -0
  464. package/templates/skills/services/minio/SKILL.md +211 -0
  465. package/templates/skills/services/mongodb/SKILL.md +278 -0
  466. package/templates/skills/services/mysql/SKILL.md +368 -0
  467. package/templates/skills/services/neo4j/SKILL.md +257 -0
  468. package/templates/skills/services/oracle/SKILL.md +300 -0
  469. package/templates/skills/services/postgresql/SKILL.md +336 -0
  470. package/templates/skills/services/rabbitmq/SKILL.md +296 -0
  471. package/templates/skills/services/redis/SKILL.md +302 -0
  472. package/templates/skills/services/s3/SKILL.md +308 -0
  473. package/templates/skills/services/sqlite/SKILL.md +304 -0
  474. package/templates/skills/services/sqlserver/SKILL.md +304 -0
  475. package/templates/skills/workflows/ralph/SETUP.md +228 -0
  476. package/templates/skills/workflows/ralph/SKILL.md +309 -0
  477. package/templates/skills/workflows/ralph/install.sh +87 -0
  478. package/templates/skills/workflows/ralph/manifest.json +158 -0
  479. package/templates/workflows/codespell.yml +0 -0
  480. package/templates/workflows/cpp-lint.yml +0 -0
  481. package/templates/workflows/cpp-publish.yml +0 -0
  482. package/templates/workflows/cpp-test.yml +0 -0
  483. package/templates/workflows/dotnet-lint.yml +0 -0
  484. package/templates/workflows/dotnet-publish.yml +0 -0
  485. package/templates/workflows/dotnet-test.yml +0 -0
  486. package/templates/workflows/elixir-lint.yml +0 -0
  487. package/templates/workflows/elixir-publish.yml +0 -0
  488. package/templates/workflows/elixir-test.yml +0 -0
  489. package/templates/workflows/erlang-lint.yml +0 -0
  490. package/templates/workflows/erlang-test.yml +0 -0
  491. package/templates/workflows/go-lint.yml +0 -0
  492. package/templates/workflows/go-publish.yml +0 -0
  493. package/templates/workflows/go-test.yml +0 -0
  494. package/templates/workflows/java-lint.yml +0 -0
  495. package/templates/workflows/java-publish.yml +0 -0
  496. package/templates/workflows/java-test.yml +0 -0
  497. package/templates/workflows/kotlin-lint.yml +0 -0
  498. package/templates/workflows/kotlin-publish.yml +0 -0
  499. package/templates/workflows/kotlin-test.yml +0 -0
  500. package/templates/workflows/php-lint.yml +0 -0
  501. package/templates/workflows/php-publish.yml +0 -0
  502. package/templates/workflows/php-test.yml +0 -0
  503. package/templates/workflows/python-lint.yml +0 -0
  504. package/templates/workflows/python-publish.yml +0 -0
  505. package/templates/workflows/python-test.yml +0 -0
  506. package/templates/workflows/rust-lint.yml +0 -0
  507. package/templates/workflows/rust-publish.yml +0 -0
  508. package/templates/workflows/rust-test.yml +0 -0
  509. package/templates/workflows/solidity-lint.yml +0 -0
  510. package/templates/workflows/solidity-test.yml +0 -0
  511. package/templates/workflows/swift-lint.yml +0 -0
  512. package/templates/workflows/swift-publish.yml +0 -0
  513. package/templates/workflows/swift-test.yml +0 -0
  514. package/templates/workflows/typescript-lint.yml +0 -0
  515. package/templates/workflows/typescript-publish.yml +0 -0
  516. package/templates/workflows/typescript-test.yml +0 -0
  517. package/templates/workflows/zig-lint.yml +0 -0
  518. package/templates/workflows/zig-test.yml +0 -0
  519. package/dist/core/modern-console-new.d.ts +0 -81
  520. package/dist/core/modern-console-new.d.ts.map +0 -1
  521. package/dist/core/modern-console-new.js +0 -340
  522. package/dist/core/modern-console-new.js.map +0 -1
  523. package/dist/mcp/handlers/archive-task.d.ts +0 -17
  524. package/dist/mcp/handlers/archive-task.d.ts.map +0 -1
  525. package/dist/mcp/handlers/archive-task.js +0 -36
  526. package/dist/mcp/handlers/archive-task.js.map +0 -1
  527. package/dist/mcp/handlers/create-task.d.ts +0 -17
  528. package/dist/mcp/handlers/create-task.d.ts.map +0 -1
  529. package/dist/mcp/handlers/create-task.js +0 -56
  530. package/dist/mcp/handlers/create-task.js.map +0 -1
  531. package/dist/mcp/handlers/list-tasks.d.ts +0 -22
  532. package/dist/mcp/handlers/list-tasks.d.ts.map +0 -1
  533. package/dist/mcp/handlers/list-tasks.js +0 -42
  534. package/dist/mcp/handlers/list-tasks.js.map +0 -1
  535. package/dist/mcp/handlers/show-task.d.ts +0 -25
  536. package/dist/mcp/handlers/show-task.d.ts.map +0 -1
  537. package/dist/mcp/handlers/show-task.js +0 -43
  538. package/dist/mcp/handlers/show-task.js.map +0 -1
  539. package/dist/mcp/handlers/update-task.d.ts +0 -17
  540. package/dist/mcp/handlers/update-task.d.ts.map +0 -1
  541. package/dist/mcp/handlers/update-task.js +0 -35
  542. package/dist/mcp/handlers/update-task.js.map +0 -1
  543. package/dist/mcp/handlers/validate-task.d.ts +0 -15
  544. package/dist/mcp/handlers/validate-task.d.ts.map +0 -1
  545. package/dist/mcp/handlers/validate-task.js +0 -27
  546. package/dist/mcp/handlers/validate-task.js.map +0 -1
  547. package/dist/mcp/rulebook-config.d.ts +0 -22
  548. package/dist/mcp/rulebook-config.d.ts.map +0 -1
  549. package/dist/mcp/rulebook-config.js +0 -65
  550. package/dist/mcp/rulebook-config.js.map +0 -1
@@ -0,0 +1,158 @@
1
+ {
2
+ "name": "Ralph Autonomous Loop",
3
+ "id": "ralph-autonomous-loop",
4
+ "version": "1.0.0",
5
+ "category": "workflow",
6
+ "description": "Autonomous AI agent loop for iterative task implementation using fresh context per iteration",
7
+ "author": "Rulebook",
8
+ "license": "Apache-2.0",
9
+ "homepage": "https://github.com/snarktank/ralph",
10
+ "tags": ["autonomous", "workflow", "iterative", "ai-agent", "task-management"],
11
+ "dependencies": {
12
+ "@hivehub/rulebook": ">=3.0.0"
13
+ },
14
+ "provides": {
15
+ "commands": [
16
+ {
17
+ "name": "ralph init",
18
+ "description": "Initialize Ralph configuration and create PRD from rulebook tasks",
19
+ "usage": "rulebook ralph init [--force]"
20
+ },
21
+ {
22
+ "name": "ralph run",
23
+ "description": "Execute autonomous iteration loop",
24
+ "usage": "rulebook ralph run [--max-iterations N] [--tool claude|amp|gemini]"
25
+ },
26
+ {
27
+ "name": "ralph status",
28
+ "description": "Show loop progress, completed tasks, and current iteration",
29
+ "usage": "rulebook ralph status"
30
+ },
31
+ {
32
+ "name": "ralph history",
33
+ "description": "Display iteration history and learnings",
34
+ "usage": "rulebook ralph history [--learnings]"
35
+ },
36
+ {
37
+ "name": "ralph pause",
38
+ "description": "Gracefully pause autonomous loop",
39
+ "usage": "rulebook ralph pause"
40
+ },
41
+ {
42
+ "name": "ralph resume",
43
+ "description": "Resume from paused state",
44
+ "usage": "rulebook ralph resume"
45
+ }
46
+ ],
47
+ "mcpTools": [
48
+ {
49
+ "name": "rulebook_ralph_init",
50
+ "description": "Initialize Ralph via MCP"
51
+ },
52
+ {
53
+ "name": "rulebook_ralph_run",
54
+ "description": "Start autonomous loop via MCP"
55
+ },
56
+ {
57
+ "name": "rulebook_ralph_status",
58
+ "description": "Query loop status via MCP"
59
+ },
60
+ {
61
+ "name": "rulebook_ralph_get_iteration_history",
62
+ "description": "Retrieve iteration history via MCP"
63
+ }
64
+ ]
65
+ },
66
+ "installation": {
67
+ "type": "bash",
68
+ "script": "install.sh",
69
+ "instructions": [
70
+ "Ralph will be enabled in your .rulebook configuration",
71
+ "Create rulebook tasks with: rulebook task create <task-id>",
72
+ "Initialize Ralph with: rulebook ralph init",
73
+ "Run autonomous loop with: rulebook ralph run"
74
+ ]
75
+ },
76
+ "configuration": {
77
+ "defaults": {
78
+ "ralph": {
79
+ "enabled": false,
80
+ "maxIterations": 10,
81
+ "tool": "claude",
82
+ "maxContextLoss": 3
83
+ }
84
+ },
85
+ "schema": {
86
+ "ralph.enabled": {
87
+ "type": "boolean",
88
+ "description": "Enable Ralph autonomous loop"
89
+ },
90
+ "ralph.maxIterations": {
91
+ "type": "integer",
92
+ "description": "Maximum iterations before stopping",
93
+ "minimum": 1,
94
+ "maximum": 1000
95
+ },
96
+ "ralph.tool": {
97
+ "type": "string",
98
+ "description": "AI CLI tool to use (claude, amp, gemini)",
99
+ "enum": ["claude", "amp", "gemini"]
100
+ },
101
+ "ralph.maxContextLoss": {
102
+ "type": "integer",
103
+ "description": "Tolerance for incomplete agent outputs",
104
+ "minimum": 1,
105
+ "maximum": 10
106
+ }
107
+ }
108
+ },
109
+ "requiredCapabilities": [
110
+ "task-management",
111
+ "git-integration",
112
+ "quality-gates"
113
+ ],
114
+ "relatedSkills": [
115
+ "claude-code",
116
+ "cline",
117
+ "cursor-cli",
118
+ "persistent-memory"
119
+ ],
120
+ "documentation": {
121
+ "readme": "SKILL.md",
122
+ "examples": [
123
+ {
124
+ "title": "Initialize Ralph",
125
+ "command": "rulebook ralph init"
126
+ },
127
+ {
128
+ "title": "Run autonomous loop with 10 iterations",
129
+ "command": "rulebook ralph run --max-iterations 10"
130
+ },
131
+ {
132
+ "title": "Check loop status",
133
+ "command": "rulebook ralph status"
134
+ },
135
+ {
136
+ "title": "View iteration history and learnings",
137
+ "command": "rulebook ralph history --learnings"
138
+ },
139
+ {
140
+ "title": "Pause and resume loop",
141
+ "command": "rulebook ralph pause && rulebook ralph resume"
142
+ }
143
+ ]
144
+ },
145
+ "changelog": {
146
+ "1.0.0": {
147
+ "date": "2026-02-26",
148
+ "changes": [
149
+ "Initial release of Ralph Autonomous Loop skill",
150
+ "Support for Claude Code, Amp, and Gemini CLI tools",
151
+ "Fresh context per iteration with memory persistence via git, PRD, and progress log",
152
+ "Quality gates enforcement (type-check, lint, tests)",
153
+ "Pause/resume capability",
154
+ "MCP server integration for programmatic access"
155
+ ]
156
+ }
157
+ }
158
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,81 +0,0 @@
1
- export interface ModernConsoleOptions {
2
- projectRoot: string;
3
- refreshInterval?: number;
4
- }
5
- interface ActivityLogEntry {
6
- timestamp: Date;
7
- type: 'info' | 'success' | 'warning' | 'error' | 'tool';
8
- message: string;
9
- }
10
- /**
11
- * Simplified Progress-Focused Modern Console
12
- * New UI: Active Tasks + Progress Bar + Activity Logs
13
- */
14
- export declare class ModernConsole {
15
- private screen;
16
- private openspecManager;
17
- private options;
18
- private isRunning;
19
- private refreshTimer?;
20
- private animationFrame;
21
- private headerBox;
22
- private activeTasksBox;
23
- private progressBox;
24
- private logsBox;
25
- private statusBar;
26
- private tasks;
27
- private activityLogs;
28
- constructor(options: ModernConsoleOptions);
29
- private setupUI;
30
- private setupEventHandlers;
31
- /**
32
- * Get loading spinner frame
33
- */
34
- private getLoadingFrame;
35
- /**
36
- * Format duration in HH:MM:SS
37
- */
38
- private formatDuration;
39
- /**
40
- * Render active tasks (max 5, auto-remove completed)
41
- */
42
- private renderActiveTasks;
43
- /**
44
- * Render progress bar
45
- */
46
- private renderProgressBar;
47
- /**
48
- * Render activity logs (last 10 entries)
49
- */
50
- private renderActivityLogs;
51
- /**
52
- * Log activity
53
- */
54
- logActivity(type: ActivityLogEntry['type'], message: string): void;
55
- /**
56
- * Mark task as completed and remove from list
57
- */
58
- markTaskCompleted(taskId: string): void;
59
- /**
60
- * Mark task as in progress
61
- */
62
- markTaskInProgress(taskId: string): void;
63
- /**
64
- * Render all components
65
- */
66
- private render;
67
- /**
68
- * Start watching
69
- */
70
- start(): Promise<void>;
71
- /**
72
- * Stop watching
73
- */
74
- stop(): void;
75
- }
76
- /**
77
- * Factory function
78
- */
79
- export declare function createModernConsole(options: ModernConsoleOptions): ModernConsole;
80
- export {};
81
- //# sourceMappingURL=modern-console-new.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modern-console-new.d.ts","sourceRoot":"","sources":["../../src/core/modern-console-new.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,SAAS,CAA8B;IAG/C,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,YAAY,CAA0B;gBAElC,OAAO,EAAE,oBAAoB;IAqBzC,OAAO,CAAC,OAAO;IA2Gf,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAezE;;OAEG;IACI,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAa9C;;OAEG;IACI,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY/C;;OAEG;IACH,OAAO,CAAC,MAAM;IAOd;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC5B;;OAEG;IACH,IAAI,IAAI,IAAI;CAeb;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAEhF"}
@@ -1,340 +0,0 @@
1
- import blessed from 'blessed';
2
- import { createOpenSpecManager } from './openspec-manager.js';
3
- /**
4
- * Simplified Progress-Focused Modern Console
5
- * New UI: Active Tasks + Progress Bar + Activity Logs
6
- */
7
- export class ModernConsole {
8
- screen;
9
- openspecManager;
10
- options;
11
- isRunning = false;
12
- refreshTimer;
13
- animationFrame = 0;
14
- // UI Components
15
- headerBox;
16
- activeTasksBox;
17
- progressBox;
18
- logsBox;
19
- statusBar;
20
- // Data
21
- tasks = [];
22
- activityLogs = [];
23
- constructor(options) {
24
- this.options = {
25
- refreshInterval: 100, // 100ms for smooth animations
26
- ...options,
27
- };
28
- this.openspecManager = createOpenSpecManager(options.projectRoot);
29
- this.screen = blessed.screen({
30
- smartCSR: true,
31
- title: 'Rulebook Watcher',
32
- fullUnicode: true,
33
- dockBorders: true,
34
- autoPadding: true,
35
- warnings: false,
36
- });
37
- this.setupUI();
38
- this.setupEventHandlers();
39
- }
40
- setupUI() {
41
- // Header (3 lines)
42
- this.headerBox = blessed.box({
43
- top: 0,
44
- left: 0,
45
- width: '100%',
46
- height: 3,
47
- content: '{center}{bold}{blue-fg}🤖 RULEBOOK WATCHER{/blue-fg}{/bold} {gray-fg}[F10 Exit]{/gray-fg}{/center}',
48
- tags: true,
49
- style: {
50
- bg: 'blue',
51
- fg: 'white',
52
- bold: true,
53
- },
54
- border: {
55
- type: 'line',
56
- fg: 'blue',
57
- },
58
- });
59
- // Active Tasks (25% of remaining space, ~6-8 lines)
60
- this.activeTasksBox = blessed.box({
61
- top: 3,
62
- left: 0,
63
- width: '100%',
64
- height: '25%-3',
65
- label: ' {bold}📋 ACTIVE TASKS{/bold} ',
66
- tags: true,
67
- scrollable: false,
68
- style: {
69
- fg: 'white',
70
- },
71
- border: {
72
- type: 'line',
73
- fg: 'cyan',
74
- },
75
- });
76
- // Progress Bar (3 lines fixed)
77
- this.progressBox = blessed.box({
78
- top: '25%',
79
- left: 0,
80
- width: '100%',
81
- height: 5,
82
- label: ' {bold}📊 PROGRESS{/bold} ',
83
- tags: true,
84
- style: {
85
- fg: 'white',
86
- },
87
- border: {
88
- type: 'line',
89
- fg: 'green',
90
- },
91
- });
92
- // Activity Logs (remaining space, ~65%)
93
- this.logsBox = blessed.box({
94
- top: '30%',
95
- left: 0,
96
- width: '100%',
97
- height: '68%-3',
98
- label: ' {bold}📝 ACTIVITY LOGS{/bold} ',
99
- tags: true,
100
- scrollable: true,
101
- alwaysScroll: true,
102
- scrollbar: {
103
- ch: ' ',
104
- track: {
105
- bg: 'cyan',
106
- },
107
- style: {
108
- inverse: true,
109
- },
110
- },
111
- style: {
112
- fg: 'white',
113
- },
114
- border: {
115
- type: 'line',
116
- fg: 'yellow',
117
- },
118
- });
119
- // Status Bar (1 line)
120
- this.statusBar = blessed.box({
121
- bottom: 0,
122
- left: 0,
123
- width: '100%',
124
- height: 1,
125
- content: ' Press F10 or Ctrl+C to exit',
126
- tags: true,
127
- style: {
128
- bg: 'blue',
129
- fg: 'white',
130
- },
131
- });
132
- // Add to screen
133
- this.screen.append(this.headerBox);
134
- this.screen.append(this.activeTasksBox);
135
- this.screen.append(this.progressBox);
136
- this.screen.append(this.logsBox);
137
- this.screen.append(this.statusBar);
138
- this.screen.render();
139
- }
140
- setupEventHandlers() {
141
- // Exit on F10 or Ctrl+C
142
- this.screen.key(['f10', 'C-c'], () => {
143
- this.stop();
144
- });
145
- // Focus logs box for scrolling
146
- this.logsBox.focus();
147
- }
148
- /**
149
- * Get loading spinner frame
150
- */
151
- getLoadingFrame() {
152
- const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
153
- return frames[this.animationFrame % frames.length];
154
- }
155
- /**
156
- * Format duration in HH:MM:SS
157
- */
158
- formatDuration(ms) {
159
- const seconds = Math.floor(ms / 1000);
160
- const minutes = Math.floor(seconds / 60);
161
- const hours = Math.floor(minutes / 60);
162
- const h = String(hours).padStart(2, '0');
163
- const m = String(minutes % 60).padStart(2, '0');
164
- const s = String(seconds % 60).padStart(2, '0');
165
- return `${h}:${m}:${s}`;
166
- }
167
- /**
168
- * Render active tasks (max 5, auto-remove completed)
169
- */
170
- renderActiveTasks() {
171
- const activeTasks = this.tasks.filter(t => t.status !== 'completed').slice(0, 5);
172
- if (activeTasks.length === 0) {
173
- this.activeTasksBox.setContent('\n {gray-fg}No active tasks{/gray-fg}');
174
- return;
175
- }
176
- const lines = ['\n'];
177
- for (const task of activeTasks) {
178
- const icon = task.status === 'in-progress'
179
- ? `{cyan-fg}${this.getLoadingFrame()}{/cyan-fg}`
180
- : '{gray-fg}⏸ {/gray-fg}';
181
- const status = task.status === 'in-progress' ? 'In Progress' : 'Pending';
182
- const duration = task.status === 'in-progress' && task.metadata?.startedAt
183
- ? ` | Duration: ${this.formatDuration(Date.now() - new Date(task.metadata.startedAt).getTime())}`
184
- : '';
185
- lines.push(` ${icon} {bold}${task.title}{/bold}`);
186
- lines.push(` Status: ${status}${duration}\n`);
187
- }
188
- this.activeTasksBox.setContent(lines.join('\n'));
189
- }
190
- /**
191
- * Render progress bar
192
- */
193
- renderProgressBar() {
194
- const completed = this.tasks.filter(t => t.status === 'completed').length;
195
- const total = this.tasks.length;
196
- const percentage = total > 0 ? Math.round((completed / total) * 100) : 0;
197
- // Calculate bar width (screen width - borders - padding)
198
- const barWidth = Math.max(40, this.screen.width - 20);
199
- const filledWidth = Math.round((percentage / 100) * barWidth);
200
- const emptyWidth = barWidth - filledWidth;
201
- const filled = '█'.repeat(filledWidth);
202
- const empty = '░'.repeat(emptyWidth);
203
- // Color based on progress
204
- let color = 'green';
205
- if (percentage < 50)
206
- color = 'red';
207
- else if (percentage < 75)
208
- color = 'yellow';
209
- const bar = `\n {${color}-fg}${filled}{/}${empty} {bold}{white-fg}${percentage}%{/} {gray-fg}(${completed}/${total}){/}\n`;
210
- this.progressBox.setContent(bar);
211
- }
212
- /**
213
- * Render activity logs (last 10 entries)
214
- */
215
- renderActivityLogs() {
216
- if (this.activityLogs.length === 0) {
217
- this.logsBox.setContent('\n {gray-fg}No activity yet{/gray-fg}');
218
- return;
219
- }
220
- const LOG_ICONS = {
221
- success: '{green-fg}✅{/}',
222
- info: '{blue-fg}ℹ️ {/}',
223
- warning: '{yellow-fg}⚠️ {/}',
224
- error: '{red-fg}❌{/}',
225
- tool: '{cyan-fg}🔧{/}',
226
- };
227
- const lines = this.activityLogs
228
- .slice(-20) // Last 20 entries
229
- .map(entry => {
230
- const time = entry.timestamp.toLocaleTimeString('en-US', { hour12: false });
231
- const icon = LOG_ICONS[entry.type];
232
- return `{gray-fg}[${time}]{/} ${icon} ${entry.message}`;
233
- });
234
- this.logsBox.setContent('\n' + lines.join('\n') + '\n');
235
- // Auto-scroll to bottom
236
- this.logsBox.setScrollPerc(100);
237
- }
238
- /**
239
- * Log activity
240
- */
241
- logActivity(type, message) {
242
- this.activityLogs.push({
243
- timestamp: new Date(),
244
- type,
245
- message,
246
- });
247
- // Keep only last 100 entries in memory
248
- if (this.activityLogs.length > 100) {
249
- this.activityLogs = this.activityLogs.slice(-100);
250
- }
251
- this.render();
252
- }
253
- /**
254
- * Mark task as completed and remove from list
255
- */
256
- markTaskCompleted(taskId) {
257
- const task = this.tasks.find(t => t.id === taskId);
258
- if (task) {
259
- task.status = 'completed';
260
- this.logActivity('success', `Task completed: ${task.title}`);
261
- // Remove from active tasks
262
- this.tasks = this.tasks.filter(t => t.id !== taskId);
263
- this.render();
264
- }
265
- }
266
- /**
267
- * Mark task as in progress
268
- */
269
- markTaskInProgress(taskId) {
270
- const task = this.tasks.find(t => t.id === taskId);
271
- if (task) {
272
- task.status = 'in-progress';
273
- if (!task.metadata)
274
- task.metadata = {};
275
- task.metadata.startedAt = new Date().toISOString();
276
- this.logActivity('info', `Task started: ${task.title}`);
277
- this.render();
278
- }
279
- }
280
- /**
281
- * Render all components
282
- */
283
- render() {
284
- this.renderActiveTasks();
285
- this.renderProgressBar();
286
- this.renderActivityLogs();
287
- this.screen.render();
288
- }
289
- /**
290
- * Start watching
291
- */
292
- async start() {
293
- if (this.isRunning) {
294
- return;
295
- }
296
- this.isRunning = true;
297
- try {
298
- await this.openspecManager.initialize();
299
- const data = await this.openspecManager.loadOpenSpec();
300
- this.tasks = data.tasks;
301
- this.logActivity('info', 'Watcher started');
302
- this.render();
303
- // Animation timer (for loading spinner)
304
- this.refreshTimer = setInterval(() => {
305
- this.animationFrame++;
306
- // Only render if there are in-progress tasks (to show spinner)
307
- const hasInProgress = this.tasks.some(t => t.status === 'in-progress');
308
- if (hasInProgress) {
309
- this.render();
310
- }
311
- }, this.options.refreshInterval);
312
- }
313
- catch (error) {
314
- this.logActivity('error', `Failed to start: ${error}`);
315
- throw error;
316
- }
317
- }
318
- /**
319
- * Stop watching
320
- */
321
- stop() {
322
- if (!this.isRunning) {
323
- return;
324
- }
325
- this.isRunning = false;
326
- if (this.refreshTimer) {
327
- clearInterval(this.refreshTimer);
328
- this.refreshTimer = undefined;
329
- }
330
- this.screen.destroy();
331
- process.exit(0);
332
- }
333
- }
334
- /**
335
- * Factory function
336
- */
337
- export function createModernConsole(options) {
338
- return new ModernConsole(options);
339
- }
340
- //# sourceMappingURL=modern-console-new.js.map