@specforge/mcp 2.5.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/README.md +118 -45
  2. package/dist/ai-provider/circuit-breaker.d.ts +63 -0
  3. package/dist/ai-provider/circuit-breaker.d.ts.map +1 -0
  4. package/dist/ai-provider/circuit-breaker.js +160 -0
  5. package/dist/ai-provider/circuit-breaker.js.map +1 -0
  6. package/dist/ai-provider/cli-version.d.ts +50 -0
  7. package/dist/ai-provider/cli-version.d.ts.map +1 -0
  8. package/dist/ai-provider/cli-version.js +141 -0
  9. package/dist/ai-provider/cli-version.js.map +1 -0
  10. package/dist/ai-provider/config-loader.d.ts +45 -0
  11. package/dist/ai-provider/config-loader.d.ts.map +1 -0
  12. package/dist/ai-provider/config-loader.js +106 -0
  13. package/dist/ai-provider/config-loader.js.map +1 -0
  14. package/dist/ai-provider/errors.d.ts +48 -0
  15. package/dist/ai-provider/errors.d.ts.map +1 -0
  16. package/dist/ai-provider/errors.js +102 -0
  17. package/dist/ai-provider/errors.js.map +1 -0
  18. package/dist/ai-provider/events.d.ts +73 -0
  19. package/dist/ai-provider/events.d.ts.map +1 -0
  20. package/dist/ai-provider/events.js +75 -0
  21. package/dist/ai-provider/events.js.map +1 -0
  22. package/dist/ai-provider/factory.d.ts +31 -0
  23. package/dist/ai-provider/factory.d.ts.map +1 -0
  24. package/dist/ai-provider/factory.js +100 -0
  25. package/dist/ai-provider/factory.js.map +1 -0
  26. package/dist/ai-provider/index.d.ts +24 -0
  27. package/dist/ai-provider/index.d.ts.map +1 -0
  28. package/dist/ai-provider/index.js +46 -0
  29. package/dist/ai-provider/index.js.map +1 -0
  30. package/dist/ai-provider/instance-coordinator.d.ts +54 -0
  31. package/dist/ai-provider/instance-coordinator.d.ts.map +1 -0
  32. package/dist/ai-provider/instance-coordinator.js +199 -0
  33. package/dist/ai-provider/instance-coordinator.js.map +1 -0
  34. package/dist/ai-provider/jsonl-parser.d.ts +43 -0
  35. package/dist/ai-provider/jsonl-parser.d.ts.map +1 -0
  36. package/dist/ai-provider/jsonl-parser.js +107 -0
  37. package/dist/ai-provider/jsonl-parser.js.map +1 -0
  38. package/dist/ai-provider/lifecycle.d.ts +50 -0
  39. package/dist/ai-provider/lifecycle.d.ts.map +1 -0
  40. package/dist/ai-provider/lifecycle.js +145 -0
  41. package/dist/ai-provider/lifecycle.js.map +1 -0
  42. package/dist/ai-provider/logger.d.ts +69 -0
  43. package/dist/ai-provider/logger.d.ts.map +1 -0
  44. package/dist/ai-provider/logger.js +161 -0
  45. package/dist/ai-provider/logger.js.map +1 -0
  46. package/dist/ai-provider/metrics.d.ts +91 -0
  47. package/dist/ai-provider/metrics.d.ts.map +1 -0
  48. package/dist/ai-provider/metrics.js +187 -0
  49. package/dist/ai-provider/metrics.js.map +1 -0
  50. package/dist/ai-provider/process-manager.d.ts +97 -0
  51. package/dist/ai-provider/process-manager.d.ts.map +1 -0
  52. package/dist/ai-provider/process-manager.js +477 -0
  53. package/dist/ai-provider/process-manager.js.map +1 -0
  54. package/dist/ai-provider/providers/claude-code.d.ts +64 -0
  55. package/dist/ai-provider/providers/claude-code.d.ts.map +1 -0
  56. package/dist/ai-provider/providers/claude-code.js +205 -0
  57. package/dist/ai-provider/providers/claude-code.js.map +1 -0
  58. package/dist/ai-provider/retry-executor.d.ts +52 -0
  59. package/dist/ai-provider/retry-executor.d.ts.map +1 -0
  60. package/dist/ai-provider/retry-executor.js +138 -0
  61. package/dist/ai-provider/retry-executor.js.map +1 -0
  62. package/dist/ai-provider/safe-args.d.ts +58 -0
  63. package/dist/ai-provider/safe-args.d.ts.map +1 -0
  64. package/dist/ai-provider/safe-args.js +176 -0
  65. package/dist/ai-provider/safe-args.js.map +1 -0
  66. package/dist/ai-provider/semaphore.d.ts +50 -0
  67. package/dist/ai-provider/semaphore.d.ts.map +1 -0
  68. package/dist/ai-provider/semaphore.js +97 -0
  69. package/dist/ai-provider/semaphore.js.map +1 -0
  70. package/dist/ai-provider/tracer.d.ts +67 -0
  71. package/dist/ai-provider/tracer.d.ts.map +1 -0
  72. package/dist/ai-provider/tracer.js +209 -0
  73. package/dist/ai-provider/tracer.js.map +1 -0
  74. package/dist/ai-provider/types.d.ts +181 -0
  75. package/dist/ai-provider/types.d.ts.map +1 -0
  76. package/dist/ai-provider/types.js +8 -0
  77. package/dist/ai-provider/types.js.map +1 -0
  78. package/dist/autopilot/agents/agent-runner.d.ts +109 -0
  79. package/dist/autopilot/agents/agent-runner.d.ts.map +1 -0
  80. package/dist/autopilot/agents/agent-runner.js +731 -0
  81. package/dist/autopilot/agents/agent-runner.js.map +1 -0
  82. package/dist/autopilot/agents/agent-selector.d.ts +59 -0
  83. package/dist/autopilot/agents/agent-selector.d.ts.map +1 -0
  84. package/dist/autopilot/agents/agent-selector.js +234 -0
  85. package/dist/autopilot/agents/agent-selector.js.map +1 -0
  86. package/dist/autopilot/agents/model-selector.d.ts +49 -0
  87. package/dist/autopilot/agents/model-selector.d.ts.map +1 -0
  88. package/dist/autopilot/agents/model-selector.js +62 -0
  89. package/dist/autopilot/agents/model-selector.js.map +1 -0
  90. package/dist/autopilot/agents/profiles/builtin.d.ts +55 -0
  91. package/dist/autopilot/agents/profiles/builtin.d.ts.map +1 -0
  92. package/dist/autopilot/agents/profiles/builtin.js +323 -0
  93. package/dist/autopilot/agents/profiles/builtin.js.map +1 -0
  94. package/dist/autopilot/agents/profiles/types.d.ts +98 -0
  95. package/dist/autopilot/agents/profiles/types.d.ts.map +1 -0
  96. package/dist/autopilot/agents/profiles/types.js +17 -0
  97. package/dist/autopilot/agents/profiles/types.js.map +1 -0
  98. package/dist/autopilot/api/autopilot-api-client.d.ts +217 -0
  99. package/dist/autopilot/api/autopilot-api-client.d.ts.map +1 -0
  100. package/dist/autopilot/api/autopilot-api-client.js +402 -0
  101. package/dist/autopilot/api/autopilot-api-client.js.map +1 -0
  102. package/dist/autopilot/cli/abort.d.ts +20 -0
  103. package/dist/autopilot/cli/abort.d.ts.map +1 -0
  104. package/dist/autopilot/cli/abort.js +201 -0
  105. package/dist/autopilot/cli/abort.js.map +1 -0
  106. package/dist/autopilot/cli/display.d.ts +63 -0
  107. package/dist/autopilot/cli/display.d.ts.map +1 -0
  108. package/dist/autopilot/cli/display.js +260 -0
  109. package/dist/autopilot/cli/display.js.map +1 -0
  110. package/dist/autopilot/cli/index.d.ts +24 -0
  111. package/dist/autopilot/cli/index.d.ts.map +1 -0
  112. package/dist/autopilot/cli/index.js +79 -0
  113. package/dist/autopilot/cli/index.js.map +1 -0
  114. package/dist/autopilot/cli/pause.d.ts +18 -0
  115. package/dist/autopilot/cli/pause.d.ts.map +1 -0
  116. package/dist/autopilot/cli/pause.js +110 -0
  117. package/dist/autopilot/cli/pause.js.map +1 -0
  118. package/dist/autopilot/cli/resume.d.ts +22 -0
  119. package/dist/autopilot/cli/resume.d.ts.map +1 -0
  120. package/dist/autopilot/cli/resume.js +172 -0
  121. package/dist/autopilot/cli/resume.js.map +1 -0
  122. package/dist/autopilot/cli/run.d.ts +25 -0
  123. package/dist/autopilot/cli/run.d.ts.map +1 -0
  124. package/dist/autopilot/cli/run.js +220 -0
  125. package/dist/autopilot/cli/run.js.map +1 -0
  126. package/dist/autopilot/cli/status.d.ts +20 -0
  127. package/dist/autopilot/cli/status.d.ts.map +1 -0
  128. package/dist/autopilot/cli/status.js +217 -0
  129. package/dist/autopilot/cli/status.js.map +1 -0
  130. package/dist/autopilot/config.d.ts +45 -0
  131. package/dist/autopilot/config.d.ts.map +1 -0
  132. package/dist/autopilot/config.js +269 -0
  133. package/dist/autopilot/config.js.map +1 -0
  134. package/dist/autopilot/core/dependency-resolver.d.ts +108 -0
  135. package/dist/autopilot/core/dependency-resolver.d.ts.map +1 -0
  136. package/dist/autopilot/core/dependency-resolver.js +394 -0
  137. package/dist/autopilot/core/dependency-resolver.js.map +1 -0
  138. package/dist/autopilot/core/dispatcher.d.ts +215 -0
  139. package/dist/autopilot/core/dispatcher.d.ts.map +1 -0
  140. package/dist/autopilot/core/dispatcher.js +594 -0
  141. package/dist/autopilot/core/dispatcher.js.map +1 -0
  142. package/dist/autopilot/core/failure-handler.d.ts +145 -0
  143. package/dist/autopilot/core/failure-handler.d.ts.map +1 -0
  144. package/dist/autopilot/core/failure-handler.js +308 -0
  145. package/dist/autopilot/core/failure-handler.js.map +1 -0
  146. package/dist/autopilot/core/rate-limit-handler.d.ts +108 -0
  147. package/dist/autopilot/core/rate-limit-handler.d.ts.map +1 -0
  148. package/dist/autopilot/core/rate-limit-handler.js +195 -0
  149. package/dist/autopilot/core/rate-limit-handler.js.map +1 -0
  150. package/dist/autopilot/core/state-manager.d.ts +160 -0
  151. package/dist/autopilot/core/state-manager.d.ts.map +1 -0
  152. package/dist/autopilot/core/state-manager.js +393 -0
  153. package/dist/autopilot/core/state-manager.js.map +1 -0
  154. package/dist/autopilot/core/timeout-manager.d.ts +95 -0
  155. package/dist/autopilot/core/timeout-manager.d.ts.map +1 -0
  156. package/dist/autopilot/core/timeout-manager.js +188 -0
  157. package/dist/autopilot/core/timeout-manager.js.map +1 -0
  158. package/dist/autopilot/git/branch-manager.d.ts +117 -0
  159. package/dist/autopilot/git/branch-manager.d.ts.map +1 -0
  160. package/dist/autopilot/git/branch-manager.js +238 -0
  161. package/dist/autopilot/git/branch-manager.js.map +1 -0
  162. package/dist/autopilot/git/index.d.ts +9 -0
  163. package/dist/autopilot/git/index.d.ts.map +1 -0
  164. package/dist/autopilot/git/index.js +9 -0
  165. package/dist/autopilot/git/index.js.map +1 -0
  166. package/dist/autopilot/git/merge-manager.d.ts +118 -0
  167. package/dist/autopilot/git/merge-manager.d.ts.map +1 -0
  168. package/dist/autopilot/git/merge-manager.js +304 -0
  169. package/dist/autopilot/git/merge-manager.js.map +1 -0
  170. package/dist/autopilot/git/worktree-manager.d.ts +128 -0
  171. package/dist/autopilot/git/worktree-manager.d.ts.map +1 -0
  172. package/dist/autopilot/git/worktree-manager.js +298 -0
  173. package/dist/autopilot/git/worktree-manager.js.map +1 -0
  174. package/dist/autopilot/index.d.ts +30 -0
  175. package/dist/autopilot/index.d.ts.map +1 -0
  176. package/dist/autopilot/index.js +55 -0
  177. package/dist/autopilot/index.js.map +1 -0
  178. package/dist/autopilot/sync/index.d.ts +7 -0
  179. package/dist/autopilot/sync/index.d.ts.map +1 -0
  180. package/dist/autopilot/sync/index.js +7 -0
  181. package/dist/autopilot/sync/index.js.map +1 -0
  182. package/dist/autopilot/sync/sync-manager.d.ts +168 -0
  183. package/dist/autopilot/sync/sync-manager.d.ts.map +1 -0
  184. package/dist/autopilot/sync/sync-manager.js +303 -0
  185. package/dist/autopilot/sync/sync-manager.js.map +1 -0
  186. package/dist/autopilot/types.d.ts +454 -0
  187. package/dist/autopilot/types.d.ts.map +1 -0
  188. package/dist/autopilot/types.js +26 -0
  189. package/dist/autopilot/types.js.map +1 -0
  190. package/dist/autopilot/utils/audit-logger.d.ts +176 -0
  191. package/dist/autopilot/utils/audit-logger.d.ts.map +1 -0
  192. package/dist/autopilot/utils/audit-logger.js +308 -0
  193. package/dist/autopilot/utils/audit-logger.js.map +1 -0
  194. package/dist/autopilot/utils/cost-tracker.d.ts +162 -0
  195. package/dist/autopilot/utils/cost-tracker.d.ts.map +1 -0
  196. package/dist/autopilot/utils/cost-tracker.js +269 -0
  197. package/dist/autopilot/utils/cost-tracker.js.map +1 -0
  198. package/dist/autopilot/utils/index.d.ts +9 -0
  199. package/dist/autopilot/utils/index.d.ts.map +1 -0
  200. package/dist/autopilot/utils/index.js +9 -0
  201. package/dist/autopilot/utils/index.js.map +1 -0
  202. package/dist/autopilot/utils/progress-reporter.d.ts +132 -0
  203. package/dist/autopilot/utils/progress-reporter.d.ts.map +1 -0
  204. package/dist/autopilot/utils/progress-reporter.js +290 -0
  205. package/dist/autopilot/utils/progress-reporter.js.map +1 -0
  206. package/dist/autopilot/worker/worker-pool.d.ts +179 -0
  207. package/dist/autopilot/worker/worker-pool.d.ts.map +1 -0
  208. package/dist/autopilot/worker/worker-pool.js +331 -0
  209. package/dist/autopilot/worker/worker-pool.js.map +1 -0
  210. package/dist/autopilot/worker/worker-session.d.ts +171 -0
  211. package/dist/autopilot/worker/worker-session.d.ts.map +1 -0
  212. package/dist/autopilot/worker/worker-session.js +295 -0
  213. package/dist/autopilot/worker/worker-session.js.map +1 -0
  214. package/dist/cli/commands/blocked.js +6 -6
  215. package/dist/cli/commands/blocked.js.map +1 -1
  216. package/dist/cli/commands/blueprints.js +1 -1
  217. package/dist/cli/commands/blueprints.js.map +1 -1
  218. package/dist/cli/commands/configure.js +6 -6
  219. package/dist/cli/commands/configure.js.map +1 -1
  220. package/dist/cli/commands/debug/call.js +3 -3
  221. package/dist/cli/commands/debug/call.js.map +1 -1
  222. package/dist/cli/commands/debug/register.js +11 -11
  223. package/dist/cli/commands/debug/test.js +1 -1
  224. package/dist/cli/commands/debug/test.js.map +1 -1
  225. package/dist/cli/commands/debug/tools.js +1 -1
  226. package/dist/cli/commands/debug/tools.js.map +1 -1
  227. package/dist/cli/commands/docs/content/api.js +3 -3
  228. package/dist/cli/commands/docs/content/examples.js +12 -12
  229. package/dist/cli/commands/docs/content/workflow.js +2 -2
  230. package/dist/cli/commands/docs/display.js +4 -4
  231. package/dist/cli/commands/docs/display.js.map +1 -1
  232. package/dist/cli/commands/docs/docs.js +3 -3
  233. package/dist/cli/commands/docs/docs.js.map +1 -1
  234. package/dist/cli/commands/docs/tool-docs.js +2 -2
  235. package/dist/cli/commands/docs/tool-docs.js.map +1 -1
  236. package/dist/cli/commands/doctor.js +2 -2
  237. package/dist/cli/commands/doctor.types.d.ts +7 -7
  238. package/dist/cli/commands/doctor.types.js +7 -7
  239. package/dist/cli/commands/doctor.types.js.map +1 -1
  240. package/dist/cli/commands/feedback.js +5 -5
  241. package/dist/cli/commands/init.js +8 -8
  242. package/dist/cli/commands/init.js.map +1 -1
  243. package/dist/cli/commands/invitations.js +5 -5
  244. package/dist/cli/commands/invitations.js.map +1 -1
  245. package/dist/cli/commands/login.js +6 -6
  246. package/dist/cli/commands/login.js.map +1 -1
  247. package/dist/cli/commands/members.js +9 -9
  248. package/dist/cli/commands/members.js.map +1 -1
  249. package/dist/cli/commands/next.js +10 -10
  250. package/dist/cli/commands/next.js.map +1 -1
  251. package/dist/cli/commands/projects.js +6 -6
  252. package/dist/cli/commands/projects.js.map +1 -1
  253. package/dist/cli/commands/review/review.js +8 -8
  254. package/dist/cli/commands/review/review.js.map +1 -1
  255. package/dist/cli/commands/scaffold/scaffold.js +2 -2
  256. package/dist/cli/commands/scaffold/scaffold.js.map +1 -1
  257. package/dist/cli/commands/session/display.js +1 -1
  258. package/dist/cli/commands/session/display.js.map +1 -1
  259. package/dist/cli/commands/session/end.js +6 -6
  260. package/dist/cli/commands/session/end.js.map +1 -1
  261. package/dist/cli/commands/session/register.js +12 -12
  262. package/dist/cli/commands/session/start.js +6 -6
  263. package/dist/cli/commands/session/start.js.map +1 -1
  264. package/dist/cli/commands/session/status.js +1 -1
  265. package/dist/cli/commands/session/status.js.map +1 -1
  266. package/dist/cli/commands/specs.js +9 -9
  267. package/dist/cli/commands/specs.js.map +1 -1
  268. package/dist/cli/commands/status.js +11 -11
  269. package/dist/cli/commands/status.js.map +1 -1
  270. package/dist/cli/commands/switch.js +10 -10
  271. package/dist/cli/commands/switch.js.map +1 -1
  272. package/dist/cli/commands/ticket/command.js +5 -5
  273. package/dist/cli/commands/ticket/command.js.map +1 -1
  274. package/dist/cli/commands/ticket/register.js +4 -4
  275. package/dist/cli/commands/ticket/resolver.js +1 -1
  276. package/dist/cli/commands/ticket/resolver.js.map +1 -1
  277. package/dist/cli/commands/tickets.js +11 -11
  278. package/dist/cli/commands/tickets.js.map +1 -1
  279. package/dist/cli/config/loader.d.ts +1 -1
  280. package/dist/cli/config/loader.js +1 -1
  281. package/dist/cli/config/types.d.ts +2 -2
  282. package/dist/cli/index.d.ts +1 -1
  283. package/dist/cli/index.d.ts.map +1 -1
  284. package/dist/cli/index.js +10 -7
  285. package/dist/cli/index.js.map +1 -1
  286. package/dist/cli/middleware/auth-guard.js +1 -1
  287. package/dist/cli/middleware/auth-guard.js.map +1 -1
  288. package/dist/cli/middleware/error-handler.js +1 -1
  289. package/dist/cli/middleware/error-handler.js.map +1 -1
  290. package/dist/cli/ui/dashboard.js +1 -1
  291. package/dist/cli/ui/dashboard.js.map +1 -1
  292. package/dist/cli/ui/output.d.ts +2 -2
  293. package/dist/cli/ui/output.js +2 -2
  294. package/dist/index.js +1 -1
  295. package/dist/index.js.map +1 -1
  296. package/dist/server.js +1 -1
  297. package/dist/server.js.map +1 -1
  298. package/dist/tools/core/workflow-guide.js +1 -1
  299. package/dist/tools/core/workflow-guide.js.map +1 -1
  300. package/dist/tools/index.d.ts.map +1 -1
  301. package/dist/tools/index.js +60 -0
  302. package/dist/tools/index.js.map +1 -1
  303. package/dist/validation/index.d.ts.map +1 -1
  304. package/dist/validation/index.js +4 -1
  305. package/dist/validation/index.js.map +1 -1
  306. package/package.json +18 -13
  307. /package/bin/{specforge-mcp → specforge} +0 -0
package/README.md CHANGED
@@ -42,7 +42,7 @@ Add to `~/.config/claude/claude_desktop_config.json` (Linux/macOS) or `%APPDATA%
42
42
  {
43
43
  "mcpServers": {
44
44
  "specforge": {
45
- "command": "specforge-mcp",
45
+ "command": "specforge",
46
46
  "env": {
47
47
  "SPECFORGE_API_KEY": "sf_live_your_api_key_here",
48
48
  "SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
@@ -60,7 +60,7 @@ Add to `~/.claude/settings.json`:
60
60
  {
61
61
  "mcpServers": {
62
62
  "specforge": {
63
- "command": "specforge-mcp",
63
+ "command": "specforge",
64
64
  "env": {
65
65
  "SPECFORGE_API_KEY": "sf_live_your_api_key_here",
66
66
  "SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
@@ -75,7 +75,7 @@ Or set environment variables in your shell and run:
75
75
  ```bash
76
76
  export SPECFORGE_API_KEY="sf_live_your_api_key_here"
77
77
  export SPECFORGE_API_URL="https://your-api-gateway-url.amazonaws.com/prod"
78
- specforge-mcp
78
+ specforge
79
79
  ```
80
80
 
81
81
  ### Cursor
@@ -107,7 +107,7 @@ Add to your VS Code `settings.json`:
107
107
  "mcp": {
108
108
  "servers": {
109
109
  "specforge": {
110
- "command": "specforge-mcp",
110
+ "command": "specforge",
111
111
  "env": {
112
112
  "SPECFORGE_API_KEY": "sf_live_your_api_key_here",
113
113
  "SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
@@ -127,7 +127,7 @@ Create a config file at `~/.config/gh-copilot/mcp.json`:
127
127
  {
128
128
  "servers": {
129
129
  "specforge": {
130
- "command": "specforge-mcp",
130
+ "command": "specforge",
131
131
  "env": {
132
132
  "SPECFORGE_API_KEY": "sf_live_your_api_key_here",
133
133
  "SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
@@ -146,7 +146,7 @@ export SPECFORGE_API_KEY="sf_live_your_api_key_here"
146
146
  export SPECFORGE_API_URL="https://your-api-gateway-url.amazonaws.com/prod"
147
147
 
148
148
  # Then configure your Codex CLI to use the MCP server
149
- codex --mcp-server specforge-mcp
149
+ codex --mcp-server specforge
150
150
  ```
151
151
 
152
152
  ### ChatGPT Desktop
@@ -157,7 +157,7 @@ Add to ChatGPT Desktop's MCP configuration:
157
157
  {
158
158
  "mcpServers": {
159
159
  "specforge": {
160
- "command": "specforge-mcp",
160
+ "command": "specforge",
161
161
  "env": {
162
162
  "SPECFORGE_API_KEY": "sf_live_your_api_key_here",
163
163
  "SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
@@ -176,7 +176,7 @@ Add to Windsurf's settings:
176
176
  "mcp": {
177
177
  "servers": {
178
178
  "specforge": {
179
- "command": "specforge-mcp",
179
+ "command": "specforge",
180
180
  "env": {
181
181
  "SPECFORGE_API_KEY": "sf_live_your_api_key_here",
182
182
  "SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
@@ -193,7 +193,7 @@ For any MCP-compatible client, the server uses stdio transport:
193
193
 
194
194
  ```bash
195
195
  # Start the server with environment variables
196
- SPECFORGE_API_KEY="sf_live_xxx" SPECFORGE_API_URL="https://xxx" specforge-mcp
196
+ SPECFORGE_API_KEY="sf_live_xxx" SPECFORGE_API_URL="https://xxx" specforge
197
197
  ```
198
198
 
199
199
  The server communicates via JSON-RPC over stdin/stdout.
@@ -251,6 +251,22 @@ The SpecForge MCP server provides the following tool categories:
251
251
  - `get_ticket_commits` - Get commits for a ticket
252
252
  - `get_ticket_prs` - Get PRs for a ticket
253
253
 
254
+ ### Blueprint Management
255
+ - `blueprint` - Manage specification blueprints (diagrams, mockups, ADRs)
256
+ - Operations: `create`, `get`, `update`, `list`, `delete`, `link`, `unlink`, `get_for_ticket`
257
+ - Categories: flowchart, architecture, state, sequence, erd, mockup, adr, component, deployment, api
258
+ - See [Blueprint Documentation](/docs/mcp/tools/blueprint.md)
259
+
260
+ ### Project Sharing
261
+ - `list_project_members` - List all members of a project
262
+ - `invite_to_project` - Invite a user by email
263
+ - `remove_project_member` - Remove a member from project
264
+ - `update_member_role` - Change a member's role (owner, editor, viewer)
265
+ - `list_invitations` - List pending invitations
266
+ - `accept_project_invitation` - Accept an invitation
267
+ - `decline_project_invitation` - Decline an invitation
268
+ - See [Project Sharing Documentation](/docs/mcp/collaboration/)
269
+
254
270
  ## CLI Commands
255
271
 
256
272
  The SpecForge MCP package includes a CLI for project configuration and management.
@@ -278,13 +294,18 @@ The SpecForge MCP package includes a CLI for project configuration and managemen
278
294
  | `tools` | List available MCP tools |
279
295
  | `test` | Test API connection |
280
296
  | `whoami` | Show current user/config |
297
+ | `autopilot run` | Start autonomous implementation |
298
+ | `autopilot status` | Show autopilot session status |
299
+ | `autopilot pause` | Pause active session |
300
+ | `autopilot resume` | Resume paused session |
301
+ | `autopilot abort` | Stop and cleanup session |
281
302
 
282
303
  ### Setup Commands
283
304
 
284
305
  #### login
285
306
 
286
307
  ```bash
287
- specforge-mcp login [--api-key <key>] [--force]
308
+ specforge login [--api-key <key>] [--force]
288
309
  ```
289
310
 
290
311
  Authenticate with the SpecForge API.
@@ -296,15 +317,15 @@ Authenticate with the SpecForge API.
296
317
 
297
318
  Examples:
298
319
  ```bash
299
- specforge-mcp login # Interactive login
300
- specforge-mcp login --api-key sf_live_xxx # Non-interactive
301
- specforge-mcp login --force # Re-authenticate
320
+ specforge login # Interactive login
321
+ specforge login --api-key sf_live_xxx # Non-interactive
322
+ specforge login --force # Re-authenticate
302
323
  ```
303
324
 
304
325
  #### init
305
326
 
306
327
  ```bash
307
- specforge-mcp init [--project <id>] [--spec <id>] [--format <format>] [--force]
328
+ specforge init [--project <id>] [--spec <id>] [--format <format>] [--force]
308
329
  ```
309
330
 
310
331
  Initialize SpecForge in the current directory.
@@ -322,15 +343,15 @@ Creates:
322
343
 
323
344
  Examples:
324
345
  ```bash
325
- specforge-mcp init # Interactive setup
326
- specforge-mcp init --project proj_abc # Set project
327
- specforge-mcp init --project proj_abc --spec spec_xyz --format toon
346
+ specforge init # Interactive setup
347
+ specforge init --project proj_abc # Set project
348
+ specforge init --project proj_abc --spec spec_xyz --format toon
328
349
  ```
329
350
 
330
351
  #### configure
331
352
 
332
353
  ```bash
333
- specforge-mcp configure [--format <format>] [--project <id>]
354
+ specforge configure [--format <format>] [--project <id>]
334
355
  ```
335
356
 
336
357
  Configure default preferences.
@@ -338,7 +359,7 @@ Configure default preferences.
338
359
  #### doctor
339
360
 
340
361
  ```bash
341
- specforge-mcp doctor [--json]
362
+ specforge doctor [--json]
342
363
  ```
343
364
 
344
365
  Diagnose configuration and connection issues.
@@ -358,7 +379,7 @@ Check categories:
358
379
  #### switch
359
380
 
360
381
  ```bash
361
- specforge-mcp switch [--project <id>] [--spec <id>]
382
+ specforge switch [--project <id>] [--spec <id>]
362
383
  ```
363
384
 
364
385
  Switch between projects or specifications.
@@ -366,7 +387,7 @@ Switch between projects or specifications.
366
387
  #### projects
367
388
 
368
389
  ```bash
369
- specforge-mcp projects [--json] [--toon]
390
+ specforge projects [--json] [--toon]
370
391
  ```
371
392
 
372
393
  List all accessible projects.
@@ -374,7 +395,7 @@ List all accessible projects.
374
395
  #### specs
375
396
 
376
397
  ```bash
377
- specforge-mcp specs [--project <id>] [--status <status>] [--json]
398
+ specforge specs [--project <id>] [--status <status>] [--json]
378
399
  ```
379
400
 
380
401
  List specifications for the current or specified project.
@@ -384,7 +405,7 @@ List specifications for the current or specified project.
384
405
  #### status
385
406
 
386
407
  ```bash
387
- specforge-mcp status [--spec <id>] [--json]
408
+ specforge status [--spec <id>] [--json]
388
409
  ```
389
410
 
390
411
  Show current specification status with progress metrics.
@@ -392,7 +413,7 @@ Show current specification status with progress metrics.
392
413
  #### tickets
393
414
 
394
415
  ```bash
395
- specforge-mcp tickets [--epic <id>] [--status <status>] [--limit <n>] [--json]
416
+ specforge tickets [--epic <id>] [--status <status>] [--limit <n>] [--json]
396
417
  ```
397
418
 
398
419
  List tickets for the current specification.
@@ -400,7 +421,7 @@ List tickets for the current specification.
400
421
  #### ticket
401
422
 
402
423
  ```bash
403
- specforge-mcp ticket <id> [--json] [--context]
424
+ specforge ticket <id> [--json] [--context]
404
425
  ```
405
426
 
406
427
  Show full details for a specific ticket.
@@ -413,7 +434,7 @@ Show full details for a specific ticket.
413
434
  #### next
414
435
 
415
436
  ```bash
416
- specforge-mcp next [--spec <id>] [--count <n>] [--json]
437
+ specforge next [--spec <id>] [--count <n>] [--json]
417
438
  ```
418
439
 
419
440
  Get the next actionable tickets (dependencies satisfied).
@@ -421,7 +442,7 @@ Get the next actionable tickets (dependencies satisfied).
421
442
  #### blocked
422
443
 
423
444
  ```bash
424
- specforge-mcp blocked [--spec <id>] [--json]
445
+ specforge blocked [--spec <id>] [--json]
425
446
  ```
426
447
 
427
448
  List blocked tickets with blocking reasons.
@@ -431,7 +452,7 @@ List blocked tickets with blocking reasons.
431
452
  #### session
432
453
 
433
454
  ```bash
434
- specforge-mcp session [--json]
455
+ specforge session [--json]
435
456
  ```
436
457
 
437
458
  Show current implementation session status.
@@ -439,7 +460,7 @@ Show current implementation session status.
439
460
  #### session start
440
461
 
441
462
  ```bash
442
- specforge-mcp session start [specId] [--mode <mode>] [--max-tickets <n>] [--stop-on-failure] [--force]
463
+ specforge session start [specId] [--mode <mode>] [--max-tickets <n>] [--stop-on-failure] [--force]
443
464
  ```
444
465
 
445
466
  Start a new implementation session.
@@ -455,7 +476,7 @@ Start a new implementation session.
455
476
  #### session end
456
477
 
457
478
  ```bash
458
- specforge-mcp session end [--status <status>] [--summary <text>]
479
+ specforge session end [--status <status>] [--summary <text>]
459
480
  ```
460
481
 
461
482
  End the current implementation session.
@@ -470,22 +491,22 @@ End the current implementation session.
470
491
  #### call
471
492
 
472
493
  ```bash
473
- specforge-mcp call <tool> [--args <json>] [--format <format>] [--raw]
494
+ specforge call <tool> [--args <json>] [--format <format>] [--raw]
474
495
  ```
475
496
 
476
497
  Directly call an MCP tool with JSON arguments.
477
498
 
478
499
  Examples:
479
500
  ```bash
480
- specforge-mcp call list_projects
481
- specforge-mcp call get_ticket --args='{"ticketId":"abc123"}'
482
- specforge-mcp call list_tickets --format toon
501
+ specforge call list_projects
502
+ specforge call get_ticket --args='{"ticketId":"abc123"}'
503
+ specforge call list_tickets --format toon
483
504
  ```
484
505
 
485
506
  #### tools
486
507
 
487
508
  ```bash
488
- specforge-mcp tools [--category <category>] [--search <query>] [--json]
509
+ specforge tools [--category <category>] [--search <query>] [--json]
489
510
  ```
490
511
 
491
512
  List available MCP tools with optional filtering.
@@ -493,7 +514,7 @@ List available MCP tools with optional filtering.
493
514
  #### test
494
515
 
495
516
  ```bash
496
- specforge-mcp test
517
+ specforge test
497
518
  ```
498
519
 
499
520
  Test API connection and authentication. Shows response time and user info.
@@ -501,11 +522,63 @@ Test API connection and authentication. Shows response time and user info.
501
522
  #### whoami
502
523
 
503
524
  ```bash
504
- specforge-mcp whoami [--json]
525
+ specforge whoami [--json]
505
526
  ```
506
527
 
507
528
  Show current user information and configuration settings.
508
529
 
530
+ ### Autopilot Commands
531
+
532
+ Autopilot enables autonomous ticket implementation using Claude Code. See [full documentation](/docs/mcp/autopilot/).
533
+
534
+ #### autopilot run
535
+
536
+ ```bash
537
+ specforge autopilot run [options]
538
+ ```
539
+
540
+ Start autonomous ticket implementation.
541
+
542
+ | Option | Description |
543
+ |--------|-------------|
544
+ | `-s, --spec <id>` | Specification ID |
545
+ | `-e, --epic <id>` | Only implement tickets from this epic |
546
+ | `-p, --parallel <n>` | Number of parallel workers (1-10) |
547
+ | `-c, --max-cost <usd>` | Maximum cost in USD |
548
+ | `-n, --dry-run` | Show plan without executing |
549
+ | `-w, --watch` | Watch mode with live dashboard |
550
+ | `-r, --resume <id>` | Resume a previous run |
551
+
552
+ Examples:
553
+ ```bash
554
+ specforge autopilot run --dry-run # Preview
555
+ specforge autopilot run --parallel 2 # Run with 2 workers
556
+ specforge autopilot run --max-cost 10 # Limit to $10
557
+ specforge autopilot run --watch # Live dashboard
558
+ ```
559
+
560
+ #### autopilot status
561
+
562
+ ```bash
563
+ specforge autopilot status [options]
564
+ ```
565
+
566
+ Show current autopilot session status.
567
+
568
+ | Option | Description |
569
+ |--------|-------------|
570
+ | `-w, --watch` | Live updates (2s refresh) |
571
+ | `-v, --verbose` | Show detailed dashboard |
572
+ | `--json` | Output as JSON |
573
+
574
+ #### autopilot pause / resume / abort
575
+
576
+ ```bash
577
+ specforge autopilot pause # Pause gracefully
578
+ specforge autopilot resume # Resume latest session
579
+ specforge autopilot abort --force # Stop and cleanup
580
+ ```
581
+
509
582
  ### Configuration Files
510
583
 
511
584
  | File | Location | Purpose |
@@ -548,19 +621,19 @@ Non-interactive usage for scripts:
548
621
  ```bash
549
622
  # Authenticate via environment or flag
550
623
  export SPECFORGE_API_KEY="sf_live_xxx"
551
- specforge-mcp login --api-key $SPECFORGE_API_KEY
624
+ specforge login --api-key $SPECFORGE_API_KEY
552
625
 
553
626
  # Initialize non-interactively
554
- specforge-mcp init --project $PROJECT_ID --spec $SPEC_ID --format json --force
627
+ specforge init --project $PROJECT_ID --spec $SPEC_ID --format json --force
555
628
 
556
629
  # Check health (exits 1 on failure)
557
- specforge-mcp doctor --json
630
+ specforge doctor --json
558
631
 
559
632
  # Get tickets as JSON for processing
560
- specforge-mcp tickets --json | jq '.[]'
633
+ specforge tickets --json | jq '.[]'
561
634
 
562
635
  # Get next actionable ticket ID
563
- specforge-mcp next --json | jq -r '.tickets[0].id'
636
+ specforge next --json | jq -r '.tickets[0].id'
564
637
  ```
565
638
 
566
639
  ### Global Options
@@ -607,7 +680,7 @@ If you're experiencing connection issues:
607
680
 
608
681
  ```bash
609
682
  export SPECFORGE_DEBUG=true
610
- specforge-mcp
683
+ specforge
611
684
  ```
612
685
 
613
686
  ### Debug Mode
@@ -632,11 +705,11 @@ This will output detailed logs to stderr, including:
632
705
 
633
706
  ### Permission Denied
634
707
 
635
- If you get "permission denied" when running `specforge-mcp`:
708
+ If you get "permission denied" when running `specforge`:
636
709
 
637
710
  ```bash
638
711
  # On macOS/Linux
639
- chmod +x $(which specforge-mcp)
712
+ chmod +x $(which specforge)
640
713
 
641
714
  # Or run with node directly
642
715
  node $(npm root -g)/@specforge/mcp/dist/index.js
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Circuit Breaker Pattern
3
+ *
4
+ * Prevents cascading failures by opening the circuit after too many failures.
5
+ * States: closed (normal) -> open (failing) -> half-open (testing) -> closed
6
+ */
7
+ import type { CircuitState, CircuitBreakerConfig } from './types.js';
8
+ export declare class CircuitBreaker {
9
+ private config;
10
+ private state;
11
+ private failures;
12
+ private successes;
13
+ private lastFailureTime;
14
+ private halfOpenAttempts;
15
+ constructor(config: CircuitBreakerConfig);
16
+ /**
17
+ * Check if a request can proceed.
18
+ */
19
+ canRequest(): boolean;
20
+ /**
21
+ * Record a successful request.
22
+ */
23
+ recordSuccess(): void;
24
+ /**
25
+ * Record a failed request.
26
+ */
27
+ recordFailure(): void;
28
+ /**
29
+ * Get current circuit state.
30
+ */
31
+ getState(): CircuitState;
32
+ /**
33
+ * Get circuit breaker statistics.
34
+ */
35
+ getStats(): {
36
+ state: CircuitState;
37
+ failures: number;
38
+ successes: number;
39
+ lastFailureTime: number | null;
40
+ halfOpenAttempts: number;
41
+ };
42
+ /**
43
+ * Force reset the circuit breaker to closed state.
44
+ */
45
+ forceReset(): void;
46
+ /**
47
+ * Update state based on recovery time.
48
+ */
49
+ private updateState;
50
+ /**
51
+ * Transition to a new state with event emission.
52
+ */
53
+ private transitionTo;
54
+ /**
55
+ * Reset internal counters.
56
+ */
57
+ private reset;
58
+ }
59
+ /**
60
+ * Create a circuit breaker with default configuration.
61
+ */
62
+ export declare function createCircuitBreaker(config?: Partial<CircuitBreakerConfig>): CircuitBreaker;
63
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/ai-provider/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAMrE,qBAAa,cAAc;IAOb,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,gBAAgB,CAAa;gBAEjB,MAAM,EAAE,oBAAoB;IAEhD;;OAEG;IACH,UAAU,IAAI,OAAO;IAarB;;OAEG;IACH,aAAa,IAAI,IAAI;IAkBrB;;OAEG;IACH,aAAa,IAAI,IAAI;IAsBrB;;OAEG;IACH,QAAQ,IAAI,YAAY;IAKxB;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,YAAY,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAUD;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACH,OAAO,CAAC,KAAK;CAId;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,cAAc,CAMhB"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Circuit Breaker Pattern
3
+ *
4
+ * Prevents cascading failures by opening the circuit after too many failures.
5
+ * States: closed (normal) -> open (failing) -> half-open (testing) -> closed
6
+ */
7
+ import { aiProviderEvents } from './events.js';
8
+ import { createLogger } from './logger.js';
9
+ const logger = createLogger('CircuitBreaker');
10
+ export class CircuitBreaker {
11
+ config;
12
+ state = 'closed';
13
+ failures = 0;
14
+ successes = 0;
15
+ lastFailureTime = 0;
16
+ halfOpenAttempts = 0;
17
+ constructor(config) {
18
+ this.config = config;
19
+ }
20
+ /**
21
+ * Check if a request can proceed.
22
+ */
23
+ canRequest() {
24
+ this.updateState();
25
+ switch (this.state) {
26
+ case 'closed':
27
+ return true;
28
+ case 'open':
29
+ return false;
30
+ case 'half-open':
31
+ return this.halfOpenAttempts < this.config.halfOpenRequests;
32
+ }
33
+ }
34
+ /**
35
+ * Record a successful request.
36
+ */
37
+ recordSuccess() {
38
+ // Update state first (open -> half-open if recovery time elapsed)
39
+ this.updateState();
40
+ this.successes++;
41
+ if (this.state === 'half-open') {
42
+ this.halfOpenAttempts++;
43
+ if (this.halfOpenAttempts >= this.config.halfOpenRequests) {
44
+ // Recovery successful - close the circuit
45
+ this.transitionTo('closed');
46
+ this.reset();
47
+ }
48
+ }
49
+ else if (this.state === 'closed') {
50
+ // Reset failure count on success in closed state
51
+ this.failures = 0;
52
+ }
53
+ }
54
+ /**
55
+ * Record a failed request.
56
+ */
57
+ recordFailure() {
58
+ // Update state first (open -> half-open if recovery time elapsed)
59
+ this.updateState();
60
+ this.failures++;
61
+ this.lastFailureTime = Date.now();
62
+ if (this.state === 'half-open') {
63
+ // Failed during recovery - reopen the circuit
64
+ this.transitionTo('open');
65
+ this.halfOpenAttempts = 0;
66
+ }
67
+ else if (this.failures >= this.config.failureThreshold) {
68
+ // Too many failures - open the circuit
69
+ this.transitionTo('open');
70
+ }
71
+ logger.warn('Failure recorded', {
72
+ failures: this.failures,
73
+ threshold: this.config.failureThreshold,
74
+ state: this.state,
75
+ });
76
+ }
77
+ /**
78
+ * Get current circuit state.
79
+ */
80
+ getState() {
81
+ this.updateState();
82
+ return this.state;
83
+ }
84
+ /**
85
+ * Get circuit breaker statistics.
86
+ */
87
+ getStats() {
88
+ return {
89
+ state: this.getState(),
90
+ failures: this.failures,
91
+ successes: this.successes,
92
+ lastFailureTime: this.lastFailureTime || null,
93
+ halfOpenAttempts: this.halfOpenAttempts,
94
+ };
95
+ }
96
+ /**
97
+ * Force reset the circuit breaker to closed state.
98
+ */
99
+ forceReset() {
100
+ this.reset();
101
+ this.transitionTo('closed');
102
+ logger.info('Circuit breaker force reset');
103
+ }
104
+ /**
105
+ * Update state based on recovery time.
106
+ */
107
+ updateState() {
108
+ if (this.state === 'open') {
109
+ const elapsed = Date.now() - this.lastFailureTime;
110
+ if (elapsed >= this.config.recoveryTimeMs) {
111
+ this.transitionTo('half-open');
112
+ this.halfOpenAttempts = 0;
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * Transition to a new state with event emission.
118
+ */
119
+ transitionTo(newState) {
120
+ const previousState = this.state;
121
+ if (previousState === newState) {
122
+ return;
123
+ }
124
+ this.state = newState;
125
+ logger.info('Circuit breaker state change', {
126
+ previousState,
127
+ newState,
128
+ });
129
+ const payload = { previousState, newState };
130
+ switch (newState) {
131
+ case 'open':
132
+ aiProviderEvents.emit('circuit_breaker:opened', payload);
133
+ break;
134
+ case 'half-open':
135
+ aiProviderEvents.emit('circuit_breaker:half_open', payload);
136
+ break;
137
+ case 'closed':
138
+ aiProviderEvents.emit('circuit_breaker:closed', payload);
139
+ break;
140
+ }
141
+ }
142
+ /**
143
+ * Reset internal counters.
144
+ */
145
+ reset() {
146
+ this.failures = 0;
147
+ this.halfOpenAttempts = 0;
148
+ }
149
+ }
150
+ /**
151
+ * Create a circuit breaker with default configuration.
152
+ */
153
+ export function createCircuitBreaker(config) {
154
+ return new CircuitBreaker({
155
+ failureThreshold: config?.failureThreshold ?? 5,
156
+ recoveryTimeMs: config?.recoveryTimeMs ?? 30000,
157
+ halfOpenRequests: config?.halfOpenRequests ?? 2,
158
+ });
159
+ }
160
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/ai-provider/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * CLI Version Detection
3
+ *
4
+ * Detects Claude CLI version and feature support.
5
+ */
6
+ import type { CLIVersionInfo } from './types.js';
7
+ export declare class CLIVersionDetector {
8
+ private cachedVersion?;
9
+ /**
10
+ * Detect CLI version and capabilities.
11
+ */
12
+ detect(): Promise<CLIVersionInfo>;
13
+ /**
14
+ * Check if CLI is installed.
15
+ */
16
+ isInstalled(): Promise<boolean>;
17
+ /**
18
+ * Get cached version info (throws if not detected yet).
19
+ */
20
+ getCachedVersion(): CLIVersionInfo | undefined;
21
+ /**
22
+ * Clear cached version.
23
+ */
24
+ clearCache(): void;
25
+ /**
26
+ * Build appropriate arguments based on version capabilities.
27
+ */
28
+ buildArgs(options: {
29
+ prompt: string;
30
+ outputFormat?: string;
31
+ }): string[];
32
+ /**
33
+ * Compare two semver versions.
34
+ * Returns: -1 if a < b, 0 if a == b, 1 if a > b
35
+ */
36
+ private compareVersions;
37
+ }
38
+ /**
39
+ * Get or create the CLI version detector.
40
+ */
41
+ export declare function getCLIVersionDetector(): CLIVersionDetector;
42
+ /**
43
+ * Detect CLI version (convenience function).
44
+ */
45
+ export declare function detectCLIVersion(): Promise<CLIVersionInfo>;
46
+ /**
47
+ * Check if CLI is installed (convenience function).
48
+ */
49
+ export declare function isCLIInstalled(): Promise<boolean>;
50
+ //# sourceMappingURL=cli-version.d.ts.map