@stigmer/cli 3.0.8

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 (1049) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +42 -0
  3. package/auth/auth0.d.ts +19 -0
  4. package/auth/auth0.d.ts.map +1 -0
  5. package/auth/auth0.js +39 -0
  6. package/auth/auth0.js.map +1 -0
  7. package/auth/callback-server.d.ts +18 -0
  8. package/auth/callback-server.d.ts.map +1 -0
  9. package/auth/callback-server.js +77 -0
  10. package/auth/callback-server.js.map +1 -0
  11. package/auth/index.d.ts +5 -0
  12. package/auth/index.d.ts.map +1 -0
  13. package/auth/index.js +6 -0
  14. package/auth/index.js.map +1 -0
  15. package/auth/login.d.ts +2 -0
  16. package/auth/login.d.ts.map +1 -0
  17. package/auth/login.js +56 -0
  18. package/auth/login.js.map +1 -0
  19. package/auth/pages.d.ts +7 -0
  20. package/auth/pages.d.ts.map +1 -0
  21. package/auth/pages.js +21 -0
  22. package/auth/pages.js.map +1 -0
  23. package/auth/pkce.d.ts +7 -0
  24. package/auth/pkce.d.ts.map +1 -0
  25. package/auth/pkce.js +22 -0
  26. package/auth/pkce.js.map +1 -0
  27. package/auth/token.d.ts +33 -0
  28. package/auth/token.d.ts.map +1 -0
  29. package/auth/token.js +111 -0
  30. package/auth/token.js.map +1 -0
  31. package/backend.d.ts +5 -0
  32. package/backend.d.ts.map +1 -0
  33. package/backend.js +14 -0
  34. package/backend.js.map +1 -0
  35. package/cli/stigmer.d.ts +3 -0
  36. package/cli/stigmer.d.ts.map +1 -0
  37. package/cli/stigmer.js +14 -0
  38. package/cli/stigmer.js.map +1 -0
  39. package/client/client.d.ts +25 -0
  40. package/client/client.d.ts.map +1 -0
  41. package/client/client.js +55 -0
  42. package/client/client.js.map +1 -0
  43. package/client/index.d.ts +2 -0
  44. package/client/index.d.ts.map +1 -0
  45. package/client/index.js +3 -0
  46. package/client/index.js.map +1 -0
  47. package/commands/agent-exec-flags.d.ts +30 -0
  48. package/commands/agent-exec-flags.d.ts.map +1 -0
  49. package/commands/agent-exec-flags.js +52 -0
  50. package/commands/agent-exec-flags.js.map +1 -0
  51. package/commands/apikey/duration.d.ts +2 -0
  52. package/commands/apikey/duration.d.ts.map +1 -0
  53. package/commands/apikey/duration.js +30 -0
  54. package/commands/apikey/duration.js.map +1 -0
  55. package/commands/apikey/index.d.ts +3 -0
  56. package/commands/apikey/index.d.ts.map +1 -0
  57. package/commands/apikey/index.js +118 -0
  58. package/commands/apikey/index.js.map +1 -0
  59. package/commands/apply.d.ts +3 -0
  60. package/commands/apply.d.ts.map +1 -0
  61. package/commands/apply.js +155 -0
  62. package/commands/apply.js.map +1 -0
  63. package/commands/auth/index.d.ts +3 -0
  64. package/commands/auth/index.d.ts.map +1 -0
  65. package/commands/auth/index.js +76 -0
  66. package/commands/auth/index.js.map +1 -0
  67. package/commands/completion.d.ts +3 -0
  68. package/commands/completion.d.ts.map +1 -0
  69. package/commands/completion.js +82 -0
  70. package/commands/completion.js.map +1 -0
  71. package/commands/config/backend.d.ts +3 -0
  72. package/commands/config/backend.d.ts.map +1 -0
  73. package/commands/config/backend.js +49 -0
  74. package/commands/config/backend.js.map +1 -0
  75. package/commands/config/context.d.ts +3 -0
  76. package/commands/config/context.d.ts.map +1 -0
  77. package/commands/config/context.js +23 -0
  78. package/commands/config/context.js.map +1 -0
  79. package/commands/config/index.d.ts +3 -0
  80. package/commands/config/index.d.ts.map +1 -0
  81. package/commands/config/index.js +13 -0
  82. package/commands/config/index.js.map +1 -0
  83. package/commands/config/kv.d.ts +3 -0
  84. package/commands/config/kv.d.ts.map +1 -0
  85. package/commands/config/kv.js +39 -0
  86. package/commands/config/kv.js.map +1 -0
  87. package/commands/connect.d.ts +3 -0
  88. package/commands/connect.d.ts.map +1 -0
  89. package/commands/connect.js +56 -0
  90. package/commands/connect.js.map +1 -0
  91. package/commands/delete.d.ts +3 -0
  92. package/commands/delete.d.ts.map +1 -0
  93. package/commands/delete.js +41 -0
  94. package/commands/delete.js.map +1 -0
  95. package/commands/diff.d.ts +3 -0
  96. package/commands/diff.d.ts.map +1 -0
  97. package/commands/diff.js +87 -0
  98. package/commands/diff.js.map +1 -0
  99. package/commands/down.d.ts +3 -0
  100. package/commands/down.d.ts.map +1 -0
  101. package/commands/down.js +23 -0
  102. package/commands/down.js.map +1 -0
  103. package/commands/download.d.ts +3 -0
  104. package/commands/download.d.ts.map +1 -0
  105. package/commands/download.js +46 -0
  106. package/commands/download.js.map +1 -0
  107. package/commands/draft.d.ts +3 -0
  108. package/commands/draft.d.ts.map +1 -0
  109. package/commands/draft.js +97 -0
  110. package/commands/draft.js.map +1 -0
  111. package/commands/execution/approve.d.ts +3 -0
  112. package/commands/execution/approve.d.ts.map +1 -0
  113. package/commands/execution/approve.js +60 -0
  114. package/commands/execution/approve.js.map +1 -0
  115. package/commands/execution/control.d.ts +3 -0
  116. package/commands/execution/control.d.ts.map +1 -0
  117. package/commands/execution/control.js +57 -0
  118. package/commands/execution/control.js.map +1 -0
  119. package/commands/execution/index.d.ts +3 -0
  120. package/commands/execution/index.d.ts.map +1 -0
  121. package/commands/execution/index.js +21 -0
  122. package/commands/execution/index.js.map +1 -0
  123. package/commands/execution/logs.d.ts +3 -0
  124. package/commands/execution/logs.d.ts.map +1 -0
  125. package/commands/execution/logs.js +34 -0
  126. package/commands/execution/logs.js.map +1 -0
  127. package/commands/execution/trace.d.ts +3 -0
  128. package/commands/execution/trace.d.ts.map +1 -0
  129. package/commands/execution/trace.js +24 -0
  130. package/commands/execution/trace.js.map +1 -0
  131. package/commands/get.d.ts +3 -0
  132. package/commands/get.d.ts.map +1 -0
  133. package/commands/get.js +81 -0
  134. package/commands/get.js.map +1 -0
  135. package/commands/internal-daemon.d.ts +3 -0
  136. package/commands/internal-daemon.d.ts.map +1 -0
  137. package/commands/internal-daemon.js +22 -0
  138. package/commands/internal-daemon.js.map +1 -0
  139. package/commands/list.d.ts +3 -0
  140. package/commands/list.d.ts.map +1 -0
  141. package/commands/list.js +117 -0
  142. package/commands/list.js.map +1 -0
  143. package/commands/logs.d.ts +3 -0
  144. package/commands/logs.d.ts.map +1 -0
  145. package/commands/logs.js +59 -0
  146. package/commands/logs.js.map +1 -0
  147. package/commands/mcp-server.d.ts +22 -0
  148. package/commands/mcp-server.d.ts.map +1 -0
  149. package/commands/mcp-server.js +104 -0
  150. package/commands/mcp-server.js.map +1 -0
  151. package/commands/push.d.ts +3 -0
  152. package/commands/push.d.ts.map +1 -0
  153. package/commands/push.js +150 -0
  154. package/commands/push.js.map +1 -0
  155. package/commands/reset.d.ts +3 -0
  156. package/commands/reset.d.ts.map +1 -0
  157. package/commands/reset.js +45 -0
  158. package/commands/reset.js.map +1 -0
  159. package/commands/resume.d.ts +3 -0
  160. package/commands/resume.d.ts.map +1 -0
  161. package/commands/resume.js +87 -0
  162. package/commands/resume.js.map +1 -0
  163. package/commands/run.d.ts +3 -0
  164. package/commands/run.d.ts.map +1 -0
  165. package/commands/run.js +193 -0
  166. package/commands/run.js.map +1 -0
  167. package/commands/search.d.ts +3 -0
  168. package/commands/search.d.ts.map +1 -0
  169. package/commands/search.js +73 -0
  170. package/commands/search.js.map +1 -0
  171. package/commands/seedpack.d.ts +3 -0
  172. package/commands/seedpack.d.ts.map +1 -0
  173. package/commands/seedpack.js +76 -0
  174. package/commands/seedpack.js.map +1 -0
  175. package/commands/setup.d.ts +3 -0
  176. package/commands/setup.d.ts.map +1 -0
  177. package/commands/setup.js +57 -0
  178. package/commands/setup.js.map +1 -0
  179. package/commands/shared.d.ts +15 -0
  180. package/commands/shared.d.ts.map +1 -0
  181. package/commands/shared.js +34 -0
  182. package/commands/shared.js.map +1 -0
  183. package/commands/status.d.ts +3 -0
  184. package/commands/status.d.ts.map +1 -0
  185. package/commands/status.js +18 -0
  186. package/commands/status.js.map +1 -0
  187. package/commands/tag.d.ts +3 -0
  188. package/commands/tag.d.ts.map +1 -0
  189. package/commands/tag.js +24 -0
  190. package/commands/tag.js.map +1 -0
  191. package/commands/up.d.ts +3 -0
  192. package/commands/up.d.ts.map +1 -0
  193. package/commands/up.js +39 -0
  194. package/commands/up.js.map +1 -0
  195. package/commands/usage.d.ts +3 -0
  196. package/commands/usage.d.ts.map +1 -0
  197. package/commands/usage.js +56 -0
  198. package/commands/usage.js.map +1 -0
  199. package/commands/validate.d.ts +3 -0
  200. package/commands/validate.d.ts.map +1 -0
  201. package/commands/validate.js +64 -0
  202. package/commands/validate.js.map +1 -0
  203. package/commands/version.d.ts +3 -0
  204. package/commands/version.d.ts.map +1 -0
  205. package/commands/version.js +11 -0
  206. package/commands/version.js.map +1 -0
  207. package/config/config.d.ts +39 -0
  208. package/config/config.d.ts.map +1 -0
  209. package/config/config.js +85 -0
  210. package/config/config.js.map +1 -0
  211. package/config/index.d.ts +5 -0
  212. package/config/index.d.ts.map +1 -0
  213. package/config/index.js +6 -0
  214. package/config/index.js.map +1 -0
  215. package/config/keys.d.ts +6 -0
  216. package/config/keys.d.ts.map +1 -0
  217. package/config/keys.js +53 -0
  218. package/config/keys.js.map +1 -0
  219. package/config/paths.d.ts +10 -0
  220. package/config/paths.d.ts.map +1 -0
  221. package/config/paths.js +21 -0
  222. package/config/paths.js.map +1 -0
  223. package/config/resolve.d.ts +33 -0
  224. package/config/resolve.d.ts.map +1 -0
  225. package/config/resolve.js +77 -0
  226. package/config/resolve.js.map +1 -0
  227. package/errors/classify.d.ts +17 -0
  228. package/errors/classify.d.ts.map +1 -0
  229. package/errors/classify.js +158 -0
  230. package/errors/classify.js.map +1 -0
  231. package/errors/cli-exit-error.d.ts +6 -0
  232. package/errors/cli-exit-error.d.ts.map +1 -0
  233. package/errors/cli-exit-error.js +15 -0
  234. package/errors/cli-exit-error.js.map +1 -0
  235. package/errors/exit-codes.d.ts +10 -0
  236. package/errors/exit-codes.d.ts.map +1 -0
  237. package/errors/exit-codes.js +12 -0
  238. package/errors/exit-codes.js.map +1 -0
  239. package/errors/handle.d.ts +14 -0
  240. package/errors/handle.d.ts.map +1 -0
  241. package/errors/handle.js +46 -0
  242. package/errors/handle.js.map +1 -0
  243. package/errors/index.d.ts +6 -0
  244. package/errors/index.d.ts.map +1 -0
  245. package/errors/index.js +7 -0
  246. package/errors/index.js.map +1 -0
  247. package/errors/usage-error.d.ts +5 -0
  248. package/errors/usage-error.d.ts.map +1 -0
  249. package/errors/usage-error.js +13 -0
  250. package/errors/usage-error.js.map +1 -0
  251. package/index.d.ts +3 -0
  252. package/index.d.ts.map +1 -0
  253. package/index.js +8 -0
  254. package/index.js.map +1 -0
  255. package/local/artifact.d.ts +38 -0
  256. package/local/artifact.d.ts.map +1 -0
  257. package/local/artifact.js +133 -0
  258. package/local/artifact.js.map +1 -0
  259. package/local/constants.d.ts +36 -0
  260. package/local/constants.d.ts.map +1 -0
  261. package/local/constants.js +44 -0
  262. package/local/constants.js.map +1 -0
  263. package/local/daemon/components.d.ts +20 -0
  264. package/local/daemon/components.d.ts.map +1 -0
  265. package/local/daemon/components.js +105 -0
  266. package/local/daemon/components.js.map +1 -0
  267. package/local/daemon/env.d.ts +55 -0
  268. package/local/daemon/env.d.ts.map +1 -0
  269. package/local/daemon/env.js +82 -0
  270. package/local/daemon/env.js.map +1 -0
  271. package/local/daemon/host.d.ts +7 -0
  272. package/local/daemon/host.d.ts.map +1 -0
  273. package/local/daemon/host.js +74 -0
  274. package/local/daemon/host.js.map +1 -0
  275. package/local/daemon/index.d.ts +8 -0
  276. package/local/daemon/index.d.ts.map +1 -0
  277. package/local/daemon/index.js +8 -0
  278. package/local/daemon/index.js.map +1 -0
  279. package/local/daemon/launch.d.ts +11 -0
  280. package/local/daemon/launch.d.ts.map +1 -0
  281. package/local/daemon/launch.js +219 -0
  282. package/local/daemon/launch.js.map +1 -0
  283. package/local/daemon/process.d.ts +28 -0
  284. package/local/daemon/process.d.ts.map +1 -0
  285. package/local/daemon/process.js +149 -0
  286. package/local/daemon/process.js.map +1 -0
  287. package/local/daemon/supervisor.d.ts +56 -0
  288. package/local/daemon/supervisor.d.ts.map +1 -0
  289. package/local/daemon/supervisor.js +211 -0
  290. package/local/daemon/supervisor.js.map +1 -0
  291. package/local/daemon/types.d.ts +63 -0
  292. package/local/daemon/types.d.ts.map +1 -0
  293. package/local/daemon/types.js +9 -0
  294. package/local/daemon/types.js.map +1 -0
  295. package/local/llm-config.d.ts +30 -0
  296. package/local/llm-config.d.ts.map +1 -0
  297. package/local/llm-config.js +93 -0
  298. package/local/llm-config.js.map +1 -0
  299. package/local/logs/tail.d.ts +19 -0
  300. package/local/logs/tail.d.ts.map +1 -0
  301. package/local/logs/tail.js +86 -0
  302. package/local/logs/tail.js.map +1 -0
  303. package/local/logs/view.d.ts +20 -0
  304. package/local/logs/view.d.ts.map +1 -0
  305. package/local/logs/view.js +50 -0
  306. package/local/logs/view.js.map +1 -0
  307. package/local/net/tcp.d.ts +23 -0
  308. package/local/net/tcp.d.ts.map +1 -0
  309. package/local/net/tcp.js +47 -0
  310. package/local/net/tcp.js.map +1 -0
  311. package/local/paths.d.ts +26 -0
  312. package/local/paths.d.ts.map +1 -0
  313. package/local/paths.js +57 -0
  314. package/local/paths.js.map +1 -0
  315. package/local/reset.d.ts +14 -0
  316. package/local/reset.d.ts.map +1 -0
  317. package/local/reset.js +57 -0
  318. package/local/reset.js.map +1 -0
  319. package/local/runtime/index.d.ts +5 -0
  320. package/local/runtime/index.d.ts.map +1 -0
  321. package/local/runtime/index.js +6 -0
  322. package/local/runtime/index.js.map +1 -0
  323. package/local/runtime/node.d.ts +8 -0
  324. package/local/runtime/node.d.ts.map +1 -0
  325. package/local/runtime/node.js +59 -0
  326. package/local/runtime/node.js.map +1 -0
  327. package/local/runtime/runner.d.ts +40 -0
  328. package/local/runtime/runner.d.ts.map +1 -0
  329. package/local/runtime/runner.js +154 -0
  330. package/local/runtime/runner.js.map +1 -0
  331. package/local/runtime/server.d.ts +39 -0
  332. package/local/runtime/server.d.ts.map +1 -0
  333. package/local/runtime/server.js +141 -0
  334. package/local/runtime/server.js.map +1 -0
  335. package/local/runtime/which.d.ts +3 -0
  336. package/local/runtime/which.d.ts.map +1 -0
  337. package/local/runtime/which.js +30 -0
  338. package/local/runtime/which.js.map +1 -0
  339. package/local/seedpack/apply.d.ts +43 -0
  340. package/local/seedpack/apply.d.ts.map +1 -0
  341. package/local/seedpack/apply.js +94 -0
  342. package/local/seedpack/apply.js.map +1 -0
  343. package/local/seedpack/content.d.ts +56 -0
  344. package/local/seedpack/content.d.ts.map +1 -0
  345. package/local/seedpack/content.js +201 -0
  346. package/local/seedpack/content.js.map +1 -0
  347. package/local/setup/prompt.d.ts +8 -0
  348. package/local/setup/prompt.d.ts.map +1 -0
  349. package/local/setup/prompt.js +63 -0
  350. package/local/setup/prompt.js.map +1 -0
  351. package/local/setup/wizard.d.ts +22 -0
  352. package/local/setup/wizard.d.ts.map +1 -0
  353. package/local/setup/wizard.js +65 -0
  354. package/local/setup/wizard.js.map +1 -0
  355. package/local/state/health-state.d.ts +26 -0
  356. package/local/state/health-state.d.ts.map +1 -0
  357. package/local/state/health-state.js +34 -0
  358. package/local/state/health-state.js.map +1 -0
  359. package/local/state/index.d.ts +7 -0
  360. package/local/state/index.d.ts.map +1 -0
  361. package/local/state/index.js +8 -0
  362. package/local/state/index.js.map +1 -0
  363. package/local/state/lock.d.ts +12 -0
  364. package/local/state/lock.d.ts.map +1 -0
  365. package/local/state/lock.js +70 -0
  366. package/local/state/lock.js.map +1 -0
  367. package/local/state/log-rotation.d.ts +17 -0
  368. package/local/state/log-rotation.d.ts.map +1 -0
  369. package/local/state/log-rotation.js +101 -0
  370. package/local/state/log-rotation.js.map +1 -0
  371. package/local/state/pidfile.d.ts +11 -0
  372. package/local/state/pidfile.d.ts.map +1 -0
  373. package/local/state/pidfile.js +35 -0
  374. package/local/state/pidfile.js.map +1 -0
  375. package/local/state/proc.d.ts +16 -0
  376. package/local/state/proc.d.ts.map +1 -0
  377. package/local/state/proc.js +69 -0
  378. package/local/state/proc.js.map +1 -0
  379. package/local/state/startup-config.d.ts +23 -0
  380. package/local/state/startup-config.d.ts.map +1 -0
  381. package/local/state/startup-config.js +33 -0
  382. package/local/state/startup-config.js.map +1 -0
  383. package/local/status.d.ts +9 -0
  384. package/local/status.d.ts.map +1 -0
  385. package/local/status.js +168 -0
  386. package/local/status.js.map +1 -0
  387. package/local/temporal/download.d.ts +20 -0
  388. package/local/temporal/download.d.ts.map +1 -0
  389. package/local/temporal/download.js +36 -0
  390. package/local/temporal/download.js.map +1 -0
  391. package/local/temporal/index.d.ts +5 -0
  392. package/local/temporal/index.d.ts.map +1 -0
  393. package/local/temporal/index.js +6 -0
  394. package/local/temporal/index.js.map +1 -0
  395. package/local/temporal/inspect.d.ts +8 -0
  396. package/local/temporal/inspect.d.ts.map +1 -0
  397. package/local/temporal/inspect.js +33 -0
  398. package/local/temporal/inspect.js.map +1 -0
  399. package/local/temporal/manager.d.ts +50 -0
  400. package/local/temporal/manager.d.ts.map +1 -0
  401. package/local/temporal/manager.js +208 -0
  402. package/local/temporal/manager.js.map +1 -0
  403. package/local/temporal/supervisor.d.ts +34 -0
  404. package/local/temporal/supervisor.d.ts.map +1 -0
  405. package/local/temporal/supervisor.js +83 -0
  406. package/local/temporal/supervisor.js.map +1 -0
  407. package/local/webconsole/index.d.ts +4 -0
  408. package/local/webconsole/index.d.ts.map +1 -0
  409. package/local/webconsole/index.js +13 -0
  410. package/local/webconsole/index.js.map +1 -0
  411. package/logger.d.ts +13 -0
  412. package/logger.d.ts.map +1 -0
  413. package/logger.js +35 -0
  414. package/logger.js.map +1 -0
  415. package/output/command-result.d.ts +47 -0
  416. package/output/command-result.d.ts.map +1 -0
  417. package/output/command-result.js +134 -0
  418. package/output/command-result.js.map +1 -0
  419. package/output/confirm.d.ts +22 -0
  420. package/output/confirm.d.ts.map +1 -0
  421. package/output/confirm.js +42 -0
  422. package/output/confirm.js.map +1 -0
  423. package/output/format.d.ts +22 -0
  424. package/output/format.d.ts.map +1 -0
  425. package/output/format.js +72 -0
  426. package/output/format.js.map +1 -0
  427. package/output/index.d.ts +7 -0
  428. package/output/index.d.ts.map +1 -0
  429. package/output/index.js +8 -0
  430. package/output/index.js.map +1 -0
  431. package/output/ndjson.d.ts +24 -0
  432. package/output/ndjson.d.ts.map +1 -0
  433. package/output/ndjson.js +38 -0
  434. package/output/ndjson.js.map +1 -0
  435. package/output/proto.d.ts +12 -0
  436. package/output/proto.d.ts.map +1 -0
  437. package/output/proto.js +34 -0
  438. package/output/proto.js.map +1 -0
  439. package/output/style.d.ts +19 -0
  440. package/output/style.d.ts.map +1 -0
  441. package/output/style.js +44 -0
  442. package/output/style.js.map +1 -0
  443. package/output/table.d.ts +5 -0
  444. package/output/table.d.ts.map +1 -0
  445. package/output/table.js +43 -0
  446. package/output/table.js.map +1 -0
  447. package/package.json +49 -0
  448. package/program.d.ts +3 -0
  449. package/program.d.ts.map +1 -0
  450. package/program.js +95 -0
  451. package/program.js.map +1 -0
  452. package/registry/aliases.d.ts +18 -0
  453. package/registry/aliases.d.ts.map +1 -0
  454. package/registry/aliases.js +85 -0
  455. package/registry/aliases.js.map +1 -0
  456. package/registry/index.d.ts +6 -0
  457. package/registry/index.d.ts.map +1 -0
  458. package/registry/index.js +7 -0
  459. package/registry/index.js.map +1 -0
  460. package/registry/metadata.d.ts +12 -0
  461. package/registry/metadata.d.ts.map +1 -0
  462. package/registry/metadata.js +49 -0
  463. package/registry/metadata.js.map +1 -0
  464. package/registry/registry.d.ts +39 -0
  465. package/registry/registry.d.ts.map +1 -0
  466. package/registry/registry.js +59 -0
  467. package/registry/registry.js.map +1 -0
  468. package/registry/verb-support.d.ts +5 -0
  469. package/registry/verb-support.d.ts.map +1 -0
  470. package/registry/verb-support.js +48 -0
  471. package/registry/verb-support.js.map +1 -0
  472. package/registry/verbs.d.ts +16 -0
  473. package/registry/verbs.d.ts.map +1 -0
  474. package/registry/verbs.js +36 -0
  475. package/registry/verbs.js.map +1 -0
  476. package/resources/apply/apply.d.ts +55 -0
  477. package/resources/apply/apply.d.ts.map +1 -0
  478. package/resources/apply/apply.js +163 -0
  479. package/resources/apply/apply.js.map +1 -0
  480. package/resources/apply/declarative.d.ts +106 -0
  481. package/resources/apply/declarative.d.ts.map +1 -0
  482. package/resources/apply/declarative.js +378 -0
  483. package/resources/apply/declarative.js.map +1 -0
  484. package/resources/apply/discovery.d.ts +7 -0
  485. package/resources/apply/discovery.d.ts.map +1 -0
  486. package/resources/apply/discovery.js +47 -0
  487. package/resources/apply/discovery.js.map +1 -0
  488. package/resources/apply/handlers.d.ts +15 -0
  489. package/resources/apply/handlers.d.ts.map +1 -0
  490. package/resources/apply/handlers.js +126 -0
  491. package/resources/apply/handlers.js.map +1 -0
  492. package/resources/apply/synth/project-track.d.ts +21 -0
  493. package/resources/apply/synth/project-track.d.ts.map +1 -0
  494. package/resources/apply/synth/project-track.js +102 -0
  495. package/resources/apply/synth/project-track.js.map +1 -0
  496. package/resources/apply/synth/reader.d.ts +18 -0
  497. package/resources/apply/synth/reader.d.ts.map +1 -0
  498. package/resources/apply/synth/reader.js +55 -0
  499. package/resources/apply/synth/reader.js.map +1 -0
  500. package/resources/apply/synth/runtime.d.ts +8 -0
  501. package/resources/apply/synth/runtime.d.ts.map +1 -0
  502. package/resources/apply/synth/runtime.js +32 -0
  503. package/resources/apply/synth/runtime.js.map +1 -0
  504. package/resources/apply/synth/synthesize.d.ts +43 -0
  505. package/resources/apply/synth/synthesize.d.ts.map +1 -0
  506. package/resources/apply/synth/synthesize.js +115 -0
  507. package/resources/apply/synth/synthesize.js.map +1 -0
  508. package/resources/connect/connect.d.ts +24 -0
  509. package/resources/connect/connect.d.ts.map +1 -0
  510. package/resources/connect/connect.js +71 -0
  511. package/resources/connect/connect.js.map +1 -0
  512. package/resources/connect/discover.d.ts +5 -0
  513. package/resources/connect/discover.d.ts.map +1 -0
  514. package/resources/connect/discover.js +100 -0
  515. package/resources/connect/discover.js.map +1 -0
  516. package/resources/connect/display.d.ts +5 -0
  517. package/resources/connect/display.d.ts.map +1 -0
  518. package/resources/connect/display.js +58 -0
  519. package/resources/connect/display.js.map +1 -0
  520. package/resources/connect/oauth.d.ts +45 -0
  521. package/resources/connect/oauth.d.ts.map +1 -0
  522. package/resources/connect/oauth.js +152 -0
  523. package/resources/connect/oauth.js.map +1 -0
  524. package/resources/delete.d.ts +18 -0
  525. package/resources/delete.d.ts.map +1 -0
  526. package/resources/delete.js +180 -0
  527. package/resources/delete.js.map +1 -0
  528. package/resources/diff.d.ts +16 -0
  529. package/resources/diff.d.ts.map +1 -0
  530. package/resources/diff.js +158 -0
  531. package/resources/diff.js.map +1 -0
  532. package/resources/documents.d.ts +16 -0
  533. package/resources/documents.d.ts.map +1 -0
  534. package/resources/documents.js +89 -0
  535. package/resources/documents.js.map +1 -0
  536. package/resources/download.d.ts +16 -0
  537. package/resources/download.d.ts.map +1 -0
  538. package/resources/download.js +107 -0
  539. package/resources/download.js.map +1 -0
  540. package/resources/execution-approve.d.ts +26 -0
  541. package/resources/execution-approve.d.ts.map +1 -0
  542. package/resources/execution-approve.js +69 -0
  543. package/resources/execution-approve.js.map +1 -0
  544. package/resources/execution-control.d.ts +16 -0
  545. package/resources/execution-control.d.ts.map +1 -0
  546. package/resources/execution-control.js +57 -0
  547. package/resources/execution-control.js.map +1 -0
  548. package/resources/execution-format.d.ts +12 -0
  549. package/resources/execution-format.d.ts.map +1 -0
  550. package/resources/execution-format.js +56 -0
  551. package/resources/execution-format.js.map +1 -0
  552. package/resources/execution-logs.d.ts +16 -0
  553. package/resources/execution-logs.d.ts.map +1 -0
  554. package/resources/execution-logs.js +132 -0
  555. package/resources/execution-logs.js.map +1 -0
  556. package/resources/execution-trace.d.ts +10 -0
  557. package/resources/execution-trace.d.ts.map +1 -0
  558. package/resources/execution-trace.js +125 -0
  559. package/resources/execution-trace.js.map +1 -0
  560. package/resources/execution.d.ts +59 -0
  561. package/resources/execution.d.ts.map +1 -0
  562. package/resources/execution.js +192 -0
  563. package/resources/execution.js.map +1 -0
  564. package/resources/get-bindings.d.ts +12 -0
  565. package/resources/get-bindings.d.ts.map +1 -0
  566. package/resources/get-bindings.js +40 -0
  567. package/resources/get-bindings.js.map +1 -0
  568. package/resources/get.d.ts +6 -0
  569. package/resources/get.d.ts.map +1 -0
  570. package/resources/get.js +31 -0
  571. package/resources/get.js.map +1 -0
  572. package/resources/git.d.ts +15 -0
  573. package/resources/git.d.ts.map +1 -0
  574. package/resources/git.js +69 -0
  575. package/resources/git.js.map +1 -0
  576. package/resources/ignore/defaults.d.ts +2 -0
  577. package/resources/ignore/defaults.d.ts.map +1 -0
  578. package/resources/ignore/defaults.js +140 -0
  579. package/resources/ignore/defaults.js.map +1 -0
  580. package/resources/ignore/index.d.ts +5 -0
  581. package/resources/ignore/index.d.ts.map +1 -0
  582. package/resources/ignore/index.js +6 -0
  583. package/resources/ignore/index.js.map +1 -0
  584. package/resources/ignore/match.d.ts +3 -0
  585. package/resources/ignore/match.d.ts.map +1 -0
  586. package/resources/ignore/match.js +166 -0
  587. package/resources/ignore/match.js.map +1 -0
  588. package/resources/ignore/matcher.d.ts +44 -0
  589. package/resources/ignore/matcher.d.ts.map +1 -0
  590. package/resources/ignore/matcher.js +125 -0
  591. package/resources/ignore/matcher.js.map +1 -0
  592. package/resources/ignore/pattern.d.ts +13 -0
  593. package/resources/ignore/pattern.d.ts.map +1 -0
  594. package/resources/ignore/pattern.js +118 -0
  595. package/resources/ignore/pattern.js.map +1 -0
  596. package/resources/list.d.ts +7 -0
  597. package/resources/list.d.ts.map +1 -0
  598. package/resources/list.js +82 -0
  599. package/resources/list.js.map +1 -0
  600. package/resources/mcp/runtime-env.d.ts +23 -0
  601. package/resources/mcp/runtime-env.d.ts.map +1 -0
  602. package/resources/mcp/runtime-env.js +68 -0
  603. package/resources/mcp/runtime-env.js.map +1 -0
  604. package/resources/picker/ink.d.ts +35 -0
  605. package/resources/picker/ink.d.ts.map +1 -0
  606. package/resources/picker/ink.js +45 -0
  607. package/resources/picker/ink.js.map +1 -0
  608. package/resources/picker/tty.d.ts +19 -0
  609. package/resources/picker/tty.d.ts.map +1 -0
  610. package/resources/picker/tty.js +21 -0
  611. package/resources/picker/tty.js.map +1 -0
  612. package/resources/reference.d.ts +32 -0
  613. package/resources/reference.d.ts.map +1 -0
  614. package/resources/reference.js +128 -0
  615. package/resources/reference.js.map +1 -0
  616. package/resources/render.d.ts +28 -0
  617. package/resources/render.d.ts.map +1 -0
  618. package/resources/render.js +87 -0
  619. package/resources/render.js.map +1 -0
  620. package/resources/run/agent-exec.d.ts +15 -0
  621. package/resources/run/agent-exec.d.ts.map +1 -0
  622. package/resources/run/agent-exec.js +81 -0
  623. package/resources/run/agent-exec.js.map +1 -0
  624. package/resources/run/attachments.d.ts +24 -0
  625. package/resources/run/attachments.d.ts.map +1 -0
  626. package/resources/run/attachments.js +209 -0
  627. package/resources/run/attachments.js.map +1 -0
  628. package/resources/run/create.d.ts +56 -0
  629. package/resources/run/create.d.ts.map +1 -0
  630. package/resources/run/create.js +105 -0
  631. package/resources/run/create.js.map +1 -0
  632. package/resources/run/env.d.ts +18 -0
  633. package/resources/run/env.d.ts.map +1 -0
  634. package/resources/run/env.js +147 -0
  635. package/resources/run/env.js.map +1 -0
  636. package/resources/run/epilogue.d.ts +9 -0
  637. package/resources/run/epilogue.d.ts.map +1 -0
  638. package/resources/run/epilogue.js +144 -0
  639. package/resources/run/epilogue.js.map +1 -0
  640. package/resources/run/header.d.ts +23 -0
  641. package/resources/run/header.d.ts.map +1 -0
  642. package/resources/run/header.js +51 -0
  643. package/resources/run/header.js.map +1 -0
  644. package/resources/run/prepare.d.ts +60 -0
  645. package/resources/run/prepare.d.ts.map +1 -0
  646. package/resources/run/prepare.js +78 -0
  647. package/resources/run/prepare.js.map +1 -0
  648. package/resources/run/resolve.d.ts +8 -0
  649. package/resources/run/resolve.d.ts.map +1 -0
  650. package/resources/run/resolve.js +28 -0
  651. package/resources/run/resolve.js.map +1 -0
  652. package/resources/run/resume.d.ts +13 -0
  653. package/resources/run/resume.d.ts.map +1 -0
  654. package/resources/run/resume.js +94 -0
  655. package/resources/run/resume.js.map +1 -0
  656. package/resources/run/stream.d.ts +24 -0
  657. package/resources/run/stream.d.ts.map +1 -0
  658. package/resources/run/stream.js +80 -0
  659. package/resources/run/stream.js.map +1 -0
  660. package/resources/run/workflow-stream.d.ts +25 -0
  661. package/resources/run/workflow-stream.d.ts.map +1 -0
  662. package/resources/run/workflow-stream.js +152 -0
  663. package/resources/run/workflow-stream.js.map +1 -0
  664. package/resources/run/workspace.d.ts +17 -0
  665. package/resources/run/workspace.d.ts.map +1 -0
  666. package/resources/run/workspace.js +147 -0
  667. package/resources/run/workspace.js.map +1 -0
  668. package/resources/search.d.ts +22 -0
  669. package/resources/search.d.ts.map +1 -0
  670. package/resources/search.js +23 -0
  671. package/resources/search.js.map +1 -0
  672. package/resources/session.d.ts +19 -0
  673. package/resources/session.d.ts.map +1 -0
  674. package/resources/session.js +51 -0
  675. package/resources/session.js.map +1 -0
  676. package/resources/skill.d.ts +84 -0
  677. package/resources/skill.d.ts.map +1 -0
  678. package/resources/skill.js +342 -0
  679. package/resources/skill.js.map +1 -0
  680. package/resources/stream/approval-detect.d.ts +38 -0
  681. package/resources/stream/approval-detect.d.ts.map +1 -0
  682. package/resources/stream/approval-detect.js +93 -0
  683. package/resources/stream/approval-detect.js.map +1 -0
  684. package/resources/stream/convert.d.ts +38 -0
  685. package/resources/stream/convert.d.ts.map +1 -0
  686. package/resources/stream/convert.js +178 -0
  687. package/resources/stream/convert.js.map +1 -0
  688. package/resources/stream/diff.d.ts +29 -0
  689. package/resources/stream/diff.d.ts.map +1 -0
  690. package/resources/stream/diff.js +214 -0
  691. package/resources/stream/diff.js.map +1 -0
  692. package/resources/stream/events.d.ts +137 -0
  693. package/resources/stream/events.d.ts.map +1 -0
  694. package/resources/stream/events.js +15 -0
  695. package/resources/stream/events.js.map +1 -0
  696. package/resources/stream/headless.d.ts +38 -0
  697. package/resources/stream/headless.d.ts.map +1 -0
  698. package/resources/stream/headless.js +75 -0
  699. package/resources/stream/headless.js.map +1 -0
  700. package/resources/stream/ink.d.ts +22 -0
  701. package/resources/stream/ink.d.ts.map +1 -0
  702. package/resources/stream/ink.js +24 -0
  703. package/resources/stream/ink.js.map +1 -0
  704. package/resources/stream/render-ndjson.d.ts +25 -0
  705. package/resources/stream/render-ndjson.d.ts.map +1 -0
  706. package/resources/stream/render-ndjson.js +156 -0
  707. package/resources/stream/render-ndjson.js.map +1 -0
  708. package/resources/stream/render-plaintext.d.ts +18 -0
  709. package/resources/stream/render-plaintext.d.ts.map +1 -0
  710. package/resources/stream/render-plaintext.js +71 -0
  711. package/resources/stream/render-plaintext.js.map +1 -0
  712. package/resources/stream/snapshot.d.ts +8 -0
  713. package/resources/stream/snapshot.d.ts.map +1 -0
  714. package/resources/stream/snapshot.js +163 -0
  715. package/resources/stream/snapshot.js.map +1 -0
  716. package/resources/stream/subagent.d.ts +12 -0
  717. package/resources/stream/subagent.d.ts.map +1 -0
  718. package/resources/stream/subagent.js +76 -0
  719. package/resources/stream/subagent.js.map +1 -0
  720. package/resources/stream/submit.d.ts +20 -0
  721. package/resources/stream/submit.d.ts.map +1 -0
  722. package/resources/stream/submit.js +125 -0
  723. package/resources/stream/submit.js.map +1 -0
  724. package/resources/stream/todo.d.ts +11 -0
  725. package/resources/stream/todo.d.ts.map +1 -0
  726. package/resources/stream/todo.js +44 -0
  727. package/resources/stream/todo.js.map +1 -0
  728. package/resources/stream/tool-state.d.ts +31 -0
  729. package/resources/stream/tool-state.d.ts.map +1 -0
  730. package/resources/stream/tool-state.js +126 -0
  731. package/resources/stream/tool-state.js.map +1 -0
  732. package/resources/stream/tty.d.ts +8 -0
  733. package/resources/stream/tty.d.ts.map +1 -0
  734. package/resources/stream/tty.js +15 -0
  735. package/resources/stream/tty.js.map +1 -0
  736. package/resources/stream/workflow-event-view.d.ts +21 -0
  737. package/resources/stream/workflow-event-view.d.ts.map +1 -0
  738. package/resources/stream/workflow-event-view.js +88 -0
  739. package/resources/stream/workflow-event-view.js.map +1 -0
  740. package/resources/stream/workflow-render-ndjson.d.ts +5 -0
  741. package/resources/stream/workflow-render-ndjson.d.ts.map +1 -0
  742. package/resources/stream/workflow-render-ndjson.js +54 -0
  743. package/resources/stream/workflow-render-ndjson.js.map +1 -0
  744. package/resources/stream/workflow-render-plaintext.d.ts +8 -0
  745. package/resources/stream/workflow-render-plaintext.d.ts.map +1 -0
  746. package/resources/stream/workflow-render-plaintext.js +34 -0
  747. package/resources/stream/workflow-render-plaintext.js.map +1 -0
  748. package/resources/tag.d.ts +4 -0
  749. package/resources/tag.d.ts.map +1 -0
  750. package/resources/tag.js +36 -0
  751. package/resources/tag.js.map +1 -0
  752. package/resources/usage.d.ts +14 -0
  753. package/resources/usage.d.ts.map +1 -0
  754. package/resources/usage.js +251 -0
  755. package/resources/usage.js.map +1 -0
  756. package/resources/validate.d.ts +6 -0
  757. package/resources/validate.d.ts.map +1 -0
  758. package/resources/validate.js +28 -0
  759. package/resources/validate.js.map +1 -0
  760. package/resources/version.d.ts +6 -0
  761. package/resources/version.d.ts.map +1 -0
  762. package/resources/version.js +75 -0
  763. package/resources/version.js.map +1 -0
  764. package/runtime.d.ts +5 -0
  765. package/runtime.d.ts.map +1 -0
  766. package/runtime.js +19 -0
  767. package/runtime.js.map +1 -0
  768. package/src/auth/auth0.ts +43 -0
  769. package/src/auth/callback-server.ts +104 -0
  770. package/src/auth/index.ts +6 -0
  771. package/src/auth/login.ts +61 -0
  772. package/src/auth/pages.ts +31 -0
  773. package/src/auth/pkce.test.ts +37 -0
  774. package/src/auth/pkce.ts +26 -0
  775. package/src/auth/token.test.ts +95 -0
  776. package/src/auth/token.ts +135 -0
  777. package/src/backend.ts +15 -0
  778. package/src/cli/stigmer.ts +16 -0
  779. package/src/client/client.test.ts +46 -0
  780. package/src/client/client.ts +84 -0
  781. package/src/client/index.ts +3 -0
  782. package/src/commands/agent-exec-flags.ts +75 -0
  783. package/src/commands/apikey/duration.test.ts +23 -0
  784. package/src/commands/apikey/duration.ts +35 -0
  785. package/src/commands/apikey/index.ts +133 -0
  786. package/src/commands/apply.ts +213 -0
  787. package/src/commands/auth/index.ts +87 -0
  788. package/src/commands/completion.ts +96 -0
  789. package/src/commands/config/backend.ts +58 -0
  790. package/src/commands/config/context.ts +26 -0
  791. package/src/commands/config/index.ts +18 -0
  792. package/src/commands/config/kv.ts +44 -0
  793. package/src/commands/connect.ts +75 -0
  794. package/src/commands/delete.ts +56 -0
  795. package/src/commands/diff.ts +97 -0
  796. package/src/commands/down.ts +27 -0
  797. package/src/commands/download.ts +68 -0
  798. package/src/commands/draft.ts +128 -0
  799. package/src/commands/execution/approve.ts +76 -0
  800. package/src/commands/execution/control.ts +79 -0
  801. package/src/commands/execution/index.ts +24 -0
  802. package/src/commands/execution/logs.ts +47 -0
  803. package/src/commands/execution/trace.ts +32 -0
  804. package/src/commands/get.ts +99 -0
  805. package/src/commands/internal-daemon.ts +25 -0
  806. package/src/commands/list.ts +138 -0
  807. package/src/commands/logs.ts +73 -0
  808. package/src/commands/mcp-server.test.ts +65 -0
  809. package/src/commands/mcp-server.ts +124 -0
  810. package/src/commands/push.ts +205 -0
  811. package/src/commands/reset.ts +57 -0
  812. package/src/commands/resume.ts +121 -0
  813. package/src/commands/run.ts +276 -0
  814. package/src/commands/search.ts +90 -0
  815. package/src/commands/seedpack.ts +94 -0
  816. package/src/commands/setup.ts +71 -0
  817. package/src/commands/shared.ts +41 -0
  818. package/src/commands/status.ts +20 -0
  819. package/src/commands/tag.ts +31 -0
  820. package/src/commands/up.ts +51 -0
  821. package/src/commands/usage.ts +74 -0
  822. package/src/commands/validate.test.ts +79 -0
  823. package/src/commands/validate.ts +73 -0
  824. package/src/commands/version.ts +13 -0
  825. package/src/config/config.test.ts +76 -0
  826. package/src/config/config.ts +127 -0
  827. package/src/config/index.ts +22 -0
  828. package/src/config/keys.test.ts +38 -0
  829. package/src/config/keys.ts +64 -0
  830. package/src/config/paths.ts +25 -0
  831. package/src/config/resolve.test.ts +103 -0
  832. package/src/config/resolve.ts +80 -0
  833. package/src/errors/classify.ts +199 -0
  834. package/src/errors/cli-exit-error.ts +16 -0
  835. package/src/errors/clierr.test.ts +172 -0
  836. package/src/errors/exit-codes.ts +14 -0
  837. package/src/errors/handle.ts +53 -0
  838. package/src/errors/index.ts +7 -0
  839. package/src/errors/usage-error.ts +14 -0
  840. package/src/index.ts +8 -0
  841. package/src/local/artifact.test.ts +28 -0
  842. package/src/local/artifact.ts +166 -0
  843. package/src/local/constants.ts +52 -0
  844. package/src/local/daemon/components.test.ts +80 -0
  845. package/src/local/daemon/components.ts +113 -0
  846. package/src/local/daemon/daemon.integration.test.ts +183 -0
  847. package/src/local/daemon/env.test.ts +51 -0
  848. package/src/local/daemon/env.ts +118 -0
  849. package/src/local/daemon/host.ts +79 -0
  850. package/src/local/daemon/index.ts +18 -0
  851. package/src/local/daemon/launch.ts +260 -0
  852. package/src/local/daemon/process.ts +183 -0
  853. package/src/local/daemon/supervisor.test.ts +260 -0
  854. package/src/local/daemon/supervisor.ts +249 -0
  855. package/src/local/daemon/types.ts +76 -0
  856. package/src/local/llm-config.test.ts +80 -0
  857. package/src/local/llm-config.ts +107 -0
  858. package/src/local/logs/tail.test.ts +70 -0
  859. package/src/local/logs/tail.ts +100 -0
  860. package/src/local/logs/view.test.ts +46 -0
  861. package/src/local/logs/view.ts +65 -0
  862. package/src/local/net/tcp.ts +65 -0
  863. package/src/local/paths.ts +67 -0
  864. package/src/local/reset.test.ts +53 -0
  865. package/src/local/reset.ts +90 -0
  866. package/src/local/runtime/index.ts +18 -0
  867. package/src/local/runtime/node.ts +67 -0
  868. package/src/local/runtime/runner.ts +186 -0
  869. package/src/local/runtime/runtime.test.ts +155 -0
  870. package/src/local/runtime/server.test.ts +152 -0
  871. package/src/local/runtime/server.ts +172 -0
  872. package/src/local/runtime/which.ts +30 -0
  873. package/src/local/seedpack/apply.test.ts +166 -0
  874. package/src/local/seedpack/apply.ts +139 -0
  875. package/src/local/seedpack/content.test.ts +148 -0
  876. package/src/local/seedpack/content.ts +223 -0
  877. package/src/local/setup/prompt.ts +70 -0
  878. package/src/local/setup/wizard.test.ts +42 -0
  879. package/src/local/setup/wizard.ts +78 -0
  880. package/src/local/state/health-state.ts +55 -0
  881. package/src/local/state/index.ts +8 -0
  882. package/src/local/state/lock.ts +77 -0
  883. package/src/local/state/log-rotation.ts +112 -0
  884. package/src/local/state/pidfile.ts +37 -0
  885. package/src/local/state/proc.ts +66 -0
  886. package/src/local/state/startup-config.ts +51 -0
  887. package/src/local/state/state.test.ts +166 -0
  888. package/src/local/status.test.ts +88 -0
  889. package/src/local/status.ts +186 -0
  890. package/src/local/temporal/download.test.ts +64 -0
  891. package/src/local/temporal/download.ts +54 -0
  892. package/src/local/temporal/index.ts +6 -0
  893. package/src/local/temporal/inspect.ts +32 -0
  894. package/src/local/temporal/manager.test.ts +31 -0
  895. package/src/local/temporal/manager.ts +247 -0
  896. package/src/local/temporal/supervisor.test.ts +77 -0
  897. package/src/local/temporal/supervisor.ts +97 -0
  898. package/src/local/webconsole/index.ts +13 -0
  899. package/src/logger.ts +39 -0
  900. package/src/output/command-result.test.ts +64 -0
  901. package/src/output/command-result.ts +185 -0
  902. package/src/output/confirm.test.ts +43 -0
  903. package/src/output/confirm.ts +53 -0
  904. package/src/output/format.test.ts +65 -0
  905. package/src/output/format.ts +101 -0
  906. package/src/output/index.ts +30 -0
  907. package/src/output/ndjson.ts +55 -0
  908. package/src/output/proto.test.ts +72 -0
  909. package/src/output/proto.ts +55 -0
  910. package/src/output/style.ts +57 -0
  911. package/src/output/table.test.ts +37 -0
  912. package/src/output/table.ts +52 -0
  913. package/src/program.test.ts +64 -0
  914. package/src/program.ts +100 -0
  915. package/src/registry/aliases.test.ts +99 -0
  916. package/src/registry/aliases.ts +93 -0
  917. package/src/registry/index.ts +7 -0
  918. package/src/registry/metadata.ts +60 -0
  919. package/src/registry/registry.test.ts +80 -0
  920. package/src/registry/registry.ts +101 -0
  921. package/src/registry/verb-support.ts +50 -0
  922. package/src/registry/verbs.ts +43 -0
  923. package/src/resources/apply/apply.integration.test.ts +207 -0
  924. package/src/resources/apply/apply.ts +202 -0
  925. package/src/resources/apply/declarative.integration.test.ts +126 -0
  926. package/src/resources/apply/declarative.test.ts +132 -0
  927. package/src/resources/apply/declarative.ts +474 -0
  928. package/src/resources/apply/discovery.ts +60 -0
  929. package/src/resources/apply/handlers.ts +145 -0
  930. package/src/resources/apply/synth/capstone.integration.test.ts +134 -0
  931. package/src/resources/apply/synth/project-track.integration.test.ts +194 -0
  932. package/src/resources/apply/synth/project-track.ts +126 -0
  933. package/src/resources/apply/synth/reader.test.ts +90 -0
  934. package/src/resources/apply/synth/reader.ts +68 -0
  935. package/src/resources/apply/synth/runtime.test.ts +29 -0
  936. package/src/resources/apply/synth/runtime.ts +39 -0
  937. package/src/resources/apply/synth/synthesize.test.ts +109 -0
  938. package/src/resources/apply/synth/synthesize.ts +161 -0
  939. package/src/resources/connect/__fixtures__/stdio-crash.mjs +6 -0
  940. package/src/resources/connect/__fixtures__/stdio-server.mjs +43 -0
  941. package/src/resources/connect/connect.integration.test.ts +185 -0
  942. package/src/resources/connect/connect.ts +107 -0
  943. package/src/resources/connect/discover.test.ts +45 -0
  944. package/src/resources/connect/discover.ts +125 -0
  945. package/src/resources/connect/display.ts +68 -0
  946. package/src/resources/connect/oauth.test.ts +155 -0
  947. package/src/resources/connect/oauth.ts +191 -0
  948. package/src/resources/delete.ts +239 -0
  949. package/src/resources/diff.integration.test.ts +103 -0
  950. package/src/resources/diff.test.ts +34 -0
  951. package/src/resources/diff.ts +187 -0
  952. package/src/resources/documents.test.ts +67 -0
  953. package/src/resources/documents.ts +102 -0
  954. package/src/resources/download.ts +151 -0
  955. package/src/resources/execution-approve.test.ts +50 -0
  956. package/src/resources/execution-approve.ts +94 -0
  957. package/src/resources/execution-control.ts +78 -0
  958. package/src/resources/execution-format.test.ts +48 -0
  959. package/src/resources/execution-format.ts +54 -0
  960. package/src/resources/execution-logs.ts +176 -0
  961. package/src/resources/execution-trace.ts +159 -0
  962. package/src/resources/execution.integration.test.ts +285 -0
  963. package/src/resources/execution.test.ts +138 -0
  964. package/src/resources/execution.ts +229 -0
  965. package/src/resources/get-bindings.ts +61 -0
  966. package/src/resources/get.ts +41 -0
  967. package/src/resources/git.ts +71 -0
  968. package/src/resources/ignore/defaults.ts +155 -0
  969. package/src/resources/ignore/ignore.test.ts +139 -0
  970. package/src/resources/ignore/index.ts +17 -0
  971. package/src/resources/ignore/match.ts +158 -0
  972. package/src/resources/ignore/matcher.ts +158 -0
  973. package/src/resources/ignore/pattern.ts +131 -0
  974. package/src/resources/list.ts +97 -0
  975. package/src/resources/mcp/runtime-env.test.ts +68 -0
  976. package/src/resources/mcp/runtime-env.ts +79 -0
  977. package/src/resources/mutate-verbs.integration.test.ts +233 -0
  978. package/src/resources/picker/ink.tsx +114 -0
  979. package/src/resources/picker/tty.test.ts +37 -0
  980. package/src/resources/picker/tty.ts +30 -0
  981. package/src/resources/push-download.integration.test.ts +175 -0
  982. package/src/resources/read-completion.integration.test.ts +156 -0
  983. package/src/resources/read-verbs.integration.test.ts +164 -0
  984. package/src/resources/reference.test.ts +107 -0
  985. package/src/resources/reference.ts +140 -0
  986. package/src/resources/render.ts +118 -0
  987. package/src/resources/run/agent-exec.ts +107 -0
  988. package/src/resources/run/attachments.test.ts +113 -0
  989. package/src/resources/run/attachments.ts +261 -0
  990. package/src/resources/run/create.test.ts +119 -0
  991. package/src/resources/run/create.ts +165 -0
  992. package/src/resources/run/env.test.ts +131 -0
  993. package/src/resources/run/env.ts +167 -0
  994. package/src/resources/run/epilogue.ts +166 -0
  995. package/src/resources/run/header.test.ts +61 -0
  996. package/src/resources/run/header.ts +62 -0
  997. package/src/resources/run/prepare.test.ts +92 -0
  998. package/src/resources/run/prepare.ts +139 -0
  999. package/src/resources/run/resolve.ts +32 -0
  1000. package/src/resources/run/resume.ts +119 -0
  1001. package/src/resources/run/stream.ts +108 -0
  1002. package/src/resources/run/workflow-stream.integration.test.ts +157 -0
  1003. package/src/resources/run/workflow-stream.ts +203 -0
  1004. package/src/resources/run/workspace.test.ts +93 -0
  1005. package/src/resources/run/workspace.ts +171 -0
  1006. package/src/resources/search.ts +53 -0
  1007. package/src/resources/session.test.ts +48 -0
  1008. package/src/resources/session.ts +66 -0
  1009. package/src/resources/skill.test.ts +227 -0
  1010. package/src/resources/skill.ts +451 -0
  1011. package/src/resources/stream/approval-detect.ts +118 -0
  1012. package/src/resources/stream/convert.ts +210 -0
  1013. package/src/resources/stream/diff.test.ts +316 -0
  1014. package/src/resources/stream/diff.ts +254 -0
  1015. package/src/resources/stream/events.ts +193 -0
  1016. package/src/resources/stream/headless.test.ts +119 -0
  1017. package/src/resources/stream/headless.ts +112 -0
  1018. package/src/resources/stream/ink.tsx +56 -0
  1019. package/src/resources/stream/lazy-import.test.ts +63 -0
  1020. package/src/resources/stream/render-ndjson.test.ts +116 -0
  1021. package/src/resources/stream/render-ndjson.ts +176 -0
  1022. package/src/resources/stream/render-plaintext.test.ts +68 -0
  1023. package/src/resources/stream/render-plaintext.ts +86 -0
  1024. package/src/resources/stream/snapshot.test.ts +97 -0
  1025. package/src/resources/stream/snapshot.ts +191 -0
  1026. package/src/resources/stream/subagent.ts +104 -0
  1027. package/src/resources/stream/submit.test.ts +77 -0
  1028. package/src/resources/stream/submit.ts +137 -0
  1029. package/src/resources/stream/todo.ts +53 -0
  1030. package/src/resources/stream/tool-state.ts +142 -0
  1031. package/src/resources/stream/tty.ts +14 -0
  1032. package/src/resources/stream/workflow-event-view.test.ts +116 -0
  1033. package/src/resources/stream/workflow-event-view.ts +111 -0
  1034. package/src/resources/stream/workflow-render-ndjson.ts +61 -0
  1035. package/src/resources/stream/workflow-render-plaintext.ts +43 -0
  1036. package/src/resources/stream/workflow-render.test.ts +81 -0
  1037. package/src/resources/tag.ts +50 -0
  1038. package/src/resources/usage.test.ts +94 -0
  1039. package/src/resources/usage.ts +301 -0
  1040. package/src/resources/validate.test.ts +54 -0
  1041. package/src/resources/validate.ts +31 -0
  1042. package/src/resources/version.ts +105 -0
  1043. package/src/runtime.ts +23 -0
  1044. package/src/types/marked-terminal.d.ts +31 -0
  1045. package/src/version.ts +46 -0
  1046. package/version.d.ts +2 -0
  1047. package/version.d.ts.map +1 -0
  1048. package/version.js +45 -0
  1049. package/version.js.map +1 -0
@@ -0,0 +1,39 @@
1
+ // Runtime inference for SDK project synthesis.
2
+ //
3
+ // A project's `entry_point` extension determines which language runtime executes
4
+ // it — there is no explicit `runtime` field (the proto enum was removed; the
5
+ // extension is the single source of truth). Port of the Go CLI's
6
+ // `internal/cli/apply/runtime.go`; the extension table is kept in lockstep with
7
+ // the backend's `supportedEntryPointExtensions` (project validator).
8
+
9
+ import { extname } from "node:path";
10
+ import { UsageError } from "../../../errors/index.js";
11
+
12
+ /** Language runtime used to execute an SDK entry point. */
13
+ export type Runtime = "go" | "python" | "node";
14
+
15
+ // Extension → runtime. Keep in sync with the backend project validator and Go's
16
+ // extensionToRuntime.
17
+ const EXTENSION_TO_RUNTIME: ReadonlyMap<string, Runtime> = new Map([
18
+ [".go", "go"],
19
+ [".py", "python"],
20
+ [".ts", "node"],
21
+ [".js", "node"],
22
+ [".mts", "node"],
23
+ [".mjs", "node"],
24
+ ]);
25
+
26
+ /**
27
+ * Infer the runtime from an entry point's file extension. Throws a UsageError
28
+ * listing the supported extensions when the extension is unrecognized.
29
+ */
30
+ export function inferRuntime(entryPoint: string): Runtime {
31
+ const ext = extname(entryPoint).toLowerCase();
32
+ const runtime = EXTENSION_TO_RUNTIME.get(ext);
33
+ if (runtime !== undefined) return runtime;
34
+
35
+ const supported = [...EXTENSION_TO_RUNTIME.keys()].join(", ");
36
+ throw new UsageError(
37
+ `cannot infer runtime from entry point '${entryPoint}' (extension '${ext}')\n\n` + `Supported extensions: ${supported}`,
38
+ );
39
+ }
@@ -0,0 +1,109 @@
1
+ // Synthesize orchestration with an injected spawn: asserts the env/cwd/command
2
+ // handed to the subprocess, the per-runtime command choice, the `.stigmer`
3
+ // output dir, and the actionable errors on non-zero exit / spawn failure /
4
+ // missing inputs.
5
+
6
+ import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
7
+ import { tmpdir } from "node:os";
8
+ import { isAbsolute, join } from "node:path";
9
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
10
+ import { runtimeCommand, type SpawnFn, synthesize } from "./synthesize.js";
11
+
12
+ let dir: string;
13
+
14
+ beforeEach(() => {
15
+ dir = mkdtempSync(join(tmpdir(), "synth-exec-"));
16
+ writeFileSync(join(dir, "index.ts"), "// entry");
17
+ });
18
+
19
+ afterEach(() => {
20
+ rmSync(dir, { recursive: true, force: true });
21
+ });
22
+
23
+ const ok: SpawnFn = async () => ({ exitCode: 0, stdout: "done", stderr: "" });
24
+ const noPrepare = () => {};
25
+
26
+ describe("synthesize", () => {
27
+ it("spawns the entry point with the synthesis env and cwd, creating .stigmer", async () => {
28
+ const calls: Array<{ command: string; args: readonly string[]; cwd: string; env: NodeJS.ProcessEnv }> = [];
29
+ const spawn: SpawnFn = async (command, args, options) => {
30
+ calls.push({ command, args, cwd: options.cwd, env: options.env });
31
+ return { exitCode: 0, stdout: "", stderr: "" };
32
+ };
33
+
34
+ const result = await synthesize(
35
+ { projectDir: dir, entryPoint: "index.ts", runtime: "node", orgId: "acme" },
36
+ { spawn, prepare: noPrepare },
37
+ );
38
+
39
+ expect(calls).toHaveLength(1);
40
+ expect(calls[0].command).toBe("npx");
41
+ // The entry is passed as an absolute path (npx ignores cwd for relative).
42
+ expect(calls[0].args[0]).toBe("tsx");
43
+ expect(isAbsolute(calls[0].args[1])).toBe(true);
44
+ expect(calls[0].args[1].endsWith("/index.ts")).toBe(true);
45
+ expect(calls[0].cwd).toBe(result.outputDir.replace(/\/\.stigmer$/, ""));
46
+ expect(calls[0].env.STIGMER_OUT_DIR).toBe(result.outputDir);
47
+ expect(calls[0].env.STIGMER_ORG_ID).toBe("acme");
48
+ expect(result.outputDir.endsWith("/.stigmer")).toBe(true);
49
+ expect(existsSync(result.outputDir)).toBe(true);
50
+ });
51
+
52
+ it("omits STIGMER_ORG_ID when no org is given", async () => {
53
+ let env: NodeJS.ProcessEnv = {};
54
+ const spawn: SpawnFn = async (_c, _a, options) => {
55
+ env = options.env;
56
+ return { exitCode: 0, stdout: "", stderr: "" };
57
+ };
58
+ await synthesize({ projectDir: dir, entryPoint: "index.ts", runtime: "node", orgId: "" }, { spawn, prepare: noPrepare });
59
+ expect(env.STIGMER_ORG_ID).toBeUndefined();
60
+ });
61
+
62
+ it("maps a non-zero exit to an actionable error with stderr and guidance", async () => {
63
+ const spawn: SpawnFn = async () => ({ exitCode: 1, stdout: "", stderr: "ReferenceError: boom" });
64
+ await expect(
65
+ synthesize({ projectDir: dir, entryPoint: "index.ts", runtime: "node", orgId: "" }, { spawn, prepare: noPrepare }),
66
+ ).rejects.toThrow(/SDK synthesis failed:[\s\S]*ReferenceError: boom[\s\S]*npm install/);
67
+ });
68
+
69
+ it("maps a spawn failure (missing binary) to an actionable error", async () => {
70
+ const spawn: SpawnFn = async () => {
71
+ throw new Error("spawn npx ENOENT");
72
+ };
73
+ await expect(
74
+ synthesize({ projectDir: dir, entryPoint: "index.ts", runtime: "node", orgId: "" }, { spawn, prepare: noPrepare }),
75
+ ).rejects.toThrow(/SDK synthesis failed:[\s\S]*spawn npx ENOENT/);
76
+ });
77
+
78
+ it("rejects a missing entry point before spawning", async () => {
79
+ const spawn = vi.fn(ok);
80
+ await expect(
81
+ synthesize({ projectDir: dir, entryPoint: "missing.ts", runtime: "node", orgId: "" }, { spawn, prepare: noPrepare }),
82
+ ).rejects.toThrow(/entry point not found/);
83
+ expect(spawn).not.toHaveBeenCalled();
84
+ });
85
+
86
+ it("rejects a missing project directory", async () => {
87
+ await expect(
88
+ synthesize({ projectDir: join(dir, "nope"), entryPoint: "index.ts", runtime: "node", orgId: "" }, { spawn: ok }),
89
+ ).rejects.toThrow(/project directory not found/);
90
+ });
91
+
92
+ it("enforces node readiness via the default prepare (node_modules missing)", async () => {
93
+ writeFileSync(join(dir, "package.json"), "{}");
94
+ await expect(
95
+ synthesize({ projectDir: dir, entryPoint: "index.ts", runtime: "node", orgId: "" }, { spawn: ok }),
96
+ ).rejects.toThrow(/node_modules not found/);
97
+ });
98
+ });
99
+
100
+ describe("runtimeCommand", () => {
101
+ it("chooses the runner per runtime and extension", () => {
102
+ expect(runtimeCommand("go", "main.go")).toEqual(["go", "run", "main.go"]);
103
+ expect(runtimeCommand("python", "main.py")).toEqual(["python3", "main.py"]);
104
+ expect(runtimeCommand("node", "index.ts")).toEqual(["npx", "tsx", "index.ts"]);
105
+ expect(runtimeCommand("node", "index.mts")).toEqual(["npx", "tsx", "index.mts"]);
106
+ expect(runtimeCommand("node", "index.js")).toEqual(["node", "index.js"]);
107
+ expect(runtimeCommand("node", "index.mjs")).toEqual(["node", "index.mjs"]);
108
+ });
109
+ });
@@ -0,0 +1,161 @@
1
+ // SDK synthesis execution.
2
+ //
3
+ // Runs a project's `entry_point` as a subprocess with `STIGMER_OUT_DIR` (and
4
+ // `STIGMER_ORG_ID`) set; the program writes `.pb` files into that dir, which the
5
+ // reader then decodes. Uniform subprocess model for every runtime (DD-009 §5):
6
+ // go → `go run <entry>`
7
+ // python → `python3 <entry>`
8
+ // node → `npx tsx <entry>` for TS, `node <entry>` for JS
9
+ //
10
+ // `tsx` (not Go's `ts-node`) executes TypeScript entries — it is the runner the
11
+ // CLI ecosystem already standardizes on (DD-009 alternatives). The spawn is
12
+ // injected so the orchestration is unit-testable without a real subprocess
13
+ // (mirrors `connect/oauth.ts`). Port of `internal/cli/apply/synthesize.go`.
14
+
15
+ import { spawn } from "node:child_process";
16
+ import { existsSync, mkdirSync } from "node:fs";
17
+ import { extname, join, resolve } from "node:path";
18
+ import { UsageError } from "../../../errors/index.js";
19
+ import type { Runtime } from "./runtime.js";
20
+
21
+ /** Result of running a subprocess to completion. */
22
+ export interface SpawnResult {
23
+ readonly exitCode: number;
24
+ readonly stdout: string;
25
+ readonly stderr: string;
26
+ }
27
+
28
+ /** A function that runs a command to completion (injectable for tests). */
29
+ export type SpawnFn = (
30
+ command: string,
31
+ args: readonly string[],
32
+ options: { readonly cwd: string; readonly env: NodeJS.ProcessEnv },
33
+ ) => Promise<SpawnResult>;
34
+
35
+ /** Inputs for one synthesis run. */
36
+ export interface SynthesizeOptions {
37
+ /** Directory containing the SDK code and stigmer.yaml. */
38
+ readonly projectDir: string;
39
+ /** Entry point file, relative to `projectDir`. */
40
+ readonly entryPoint: string;
41
+ /** Runtime inferred from the entry point extension. */
42
+ readonly runtime: Runtime;
43
+ /** Resolved org, injected as STIGMER_ORG_ID (empty = omit). */
44
+ readonly orgId: string;
45
+ }
46
+
47
+ /** Injectable collaborators (defaults run real subprocesses / fs checks). */
48
+ export interface SynthesizeDeps {
49
+ readonly spawn?: SpawnFn;
50
+ readonly prepare?: (runtime: Runtime, projectDir: string) => void;
51
+ }
52
+
53
+ /** Outcome of synthesis: where the `.pb` files were written, plus SDK stdout. */
54
+ export interface SynthesizeResult {
55
+ readonly outputDir: string;
56
+ readonly stdout: string;
57
+ }
58
+
59
+ /**
60
+ * Execute the SDK entry point and leave the synthesized `.pb` files in
61
+ * `<projectDir>/.stigmer`. Validates inputs, runs runtime prep, spawns the
62
+ * program with the synthesis env, and maps a non-zero exit (or spawn failure)
63
+ * to an actionable error. The caller reads the output dir with the reader.
64
+ */
65
+ export async function synthesize(opts: SynthesizeOptions, deps: SynthesizeDeps = {}): Promise<SynthesizeResult> {
66
+ if (opts.projectDir === "") throw new UsageError("project directory is required");
67
+ if (opts.entryPoint === "") throw new UsageError("entry point is required");
68
+
69
+ const projectDir = resolve(opts.projectDir);
70
+ if (!existsSync(projectDir)) throw new UsageError(`project directory not found: ${opts.projectDir}`);
71
+ const entryAbs = join(projectDir, opts.entryPoint);
72
+ if (!existsSync(entryAbs)) throw new UsageError(`entry point not found: ${opts.entryPoint}`);
73
+
74
+ const outputDir = join(projectDir, ".stigmer");
75
+ mkdirSync(outputDir, { recursive: true });
76
+
77
+ (deps.prepare ?? defaultPrepare)(opts.runtime, projectDir);
78
+
79
+ // Pass the ABSOLUTE entry path: `npx` resolves a relative entry against the
80
+ // npm project root (its "local prefix"), not the spawn cwd, so a relative path
81
+ // breaks for the node runtime. An absolute path is correct for every runtime;
82
+ // cwd stays the project dir so the program's own relative imports resolve.
83
+ const [command, ...args] = runtimeCommand(opts.runtime, entryAbs);
84
+ const env: NodeJS.ProcessEnv = { ...process.env, STIGMER_OUT_DIR: outputDir };
85
+ if (opts.orgId !== "") env.STIGMER_ORG_ID = opts.orgId;
86
+
87
+ let result: SpawnResult;
88
+ try {
89
+ result = await (deps.spawn ?? defaultSpawn)(command, args, { cwd: projectDir, env });
90
+ } catch (err) {
91
+ throw new UsageError(formatExecutionError(opts.runtime, "", (err as Error).message));
92
+ }
93
+ if (result.exitCode !== 0) {
94
+ throw new UsageError(formatExecutionError(opts.runtime, result.stderr, `exited with code ${result.exitCode}`));
95
+ }
96
+
97
+ return { outputDir, stdout: result.stdout };
98
+ }
99
+
100
+ /** Command + args to execute an entry point for the given runtime. */
101
+ export function runtimeCommand(runtime: Runtime, entryPoint: string): string[] {
102
+ switch (runtime) {
103
+ case "go":
104
+ return ["go", "run", entryPoint];
105
+ case "python":
106
+ return ["python3", entryPoint];
107
+ case "node": {
108
+ const ext = extname(entryPoint).toLowerCase();
109
+ // TypeScript entries run through tsx; plain JS runs on node directly.
110
+ return ext === ".ts" || ext === ".tsx" || ext === ".mts" ? ["npx", "tsx", entryPoint] : ["node", entryPoint];
111
+ }
112
+ }
113
+ }
114
+
115
+ // Lightweight, runtime-specific readiness checks (no subprocess). Unlike Go we
116
+ // do NOT auto-run `go mod tidy`; the entry-point run surfaces missing deps and
117
+ // the user resolves them — keeping the single subprocess the synthesis itself.
118
+ function defaultPrepare(runtime: Runtime, projectDir: string): void {
119
+ if (runtime === "node") {
120
+ if (!existsSync(join(projectDir, "package.json"))) {
121
+ throw new UsageError("package.json not found: run 'npm init' to initialize a Node.js project");
122
+ }
123
+ if (!existsSync(join(projectDir, "node_modules"))) {
124
+ throw new UsageError("node_modules not found: run 'npm install' to install dependencies");
125
+ }
126
+ } else if (runtime === "go" && !existsSync(join(projectDir, "go.mod"))) {
127
+ throw new UsageError("go.mod not found: run 'go mod init' to initialize a Go module");
128
+ }
129
+ }
130
+
131
+ // Real subprocess: collects stdout/stderr, resolves with the exit code.
132
+ const defaultSpawn: SpawnFn = (command, args, options) =>
133
+ new Promise<SpawnResult>((resolvePromise, rejectPromise) => {
134
+ const child = spawn(command, [...args], { cwd: options.cwd, env: options.env });
135
+ let stdout = "";
136
+ let stderr = "";
137
+ child.stdout?.on("data", (chunk) => {
138
+ stdout += chunk.toString();
139
+ });
140
+ child.stderr?.on("data", (chunk) => {
141
+ stderr += chunk.toString();
142
+ });
143
+ child.on("error", (err) => rejectPromise(err));
144
+ child.on("close", (code) => resolvePromise({ exitCode: code ?? 0, stdout, stderr }));
145
+ });
146
+
147
+ // Actionable failure message: truncated stderr + runtime-specific guidance.
148
+ // Port of Go's formatExecutionError.
149
+ function formatExecutionError(runtime: Runtime, stderr: string, fallback: string): string {
150
+ let detail = stderr.length > 800 ? `${stderr.slice(0, 800)}\n... (truncated)` : stderr;
151
+ if (detail === "") detail = fallback;
152
+
153
+ const guidance =
154
+ runtime === "go"
155
+ ? "Check for compile errors above. Run 'go build' to see full error output."
156
+ : runtime === "python"
157
+ ? "If you see import errors, install your dependencies (e.g. pip install -r requirements.txt)."
158
+ : "If you see module errors, run 'npm install' to install dependencies.";
159
+
160
+ return `SDK synthesis failed:\n${detail}\n\n${guidance}`;
161
+ }
@@ -0,0 +1,6 @@
1
+ // A stdio command that fails to start an MCP server: it writes a diagnostic to
2
+ // stderr and exits non-zero. Used to assert connect --dry-run surfaces a clear
3
+ // connection error (and the subprocess stderr) rather than hanging.
4
+
5
+ process.stderr.write("fixture boom: missing CONFIG\n");
6
+ process.exit(1);
@@ -0,0 +1,43 @@
1
+ // Minimal stdio MCP server fixture for `connect --dry-run` discovery tests.
2
+ //
3
+ // Spawned as a subprocess by discover.ts via StdioClientTransport. Advertises a
4
+ // single tool and a single resource template using the low-level Server API
5
+ // (the most version-stable surface of @modelcontextprotocol/sdk). It also echoes
6
+ // an --env-provided value through the tool description so tests can assert env
7
+ // propagation when needed.
8
+
9
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
10
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
11
+ import {
12
+ ListResourceTemplatesRequestSchema,
13
+ ListToolsRequestSchema,
14
+ } from "@modelcontextprotocol/sdk/types.js";
15
+
16
+ const server = new Server(
17
+ { name: "fixture-mcp", version: "0.0.1" },
18
+ { capabilities: { tools: {}, resources: {} } },
19
+ );
20
+
21
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
22
+ tools: [
23
+ {
24
+ name: "echo",
25
+ description: `echo a message (token=${process.env.FIXTURE_TOKEN ?? "unset"})`,
26
+ inputSchema: { type: "object", properties: { text: { type: "string" } } },
27
+ },
28
+ { name: "noop", description: "", inputSchema: { type: "object" } },
29
+ ],
30
+ }));
31
+
32
+ server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
33
+ resourceTemplates: [
34
+ {
35
+ uriTemplate: "file:///{path}",
36
+ name: "local-file",
37
+ description: "a local file",
38
+ mimeType: "text/plain",
39
+ },
40
+ ],
41
+ }));
42
+
43
+ await server.connect(new StdioServerTransport());
@@ -0,0 +1,185 @@
1
+ // In-process integration test for `connect mcp-server` orchestration.
2
+ //
3
+ // Stands up a Connect backend serving the McpServer query + command controllers,
4
+ // points an SDK node client at it, and drives connectMcpServer end to end: the
5
+ // push path (asserts ConnectInput fields + rendered capabilities), the OAuth
6
+ // guidance gate, and the dry-run path (local discovery, no Connect RPC).
7
+
8
+ import { create } from "@bufbuild/protobuf";
9
+ import type { ConnectRouter } from "@connectrpc/connect";
10
+ import { connectNodeAdapter } from "@connectrpc/connect-node";
11
+ import { McpServerSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
12
+ import { McpServerCommandController } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/command_pb";
13
+ import {
14
+ type ConnectInput,
15
+ GetOAuthGrantStatusOutputSchema,
16
+ } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/io_pb";
17
+ import { McpServerQueryController } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/query_pb";
18
+ import { McpServerAuthSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/spec_pb";
19
+ import type { Stigmer } from "@stigmer/sdk";
20
+ import { createNodeClient, normalizeEndpoint } from "@stigmer/sdk/node";
21
+ import { createServer as createHttp2Server, type Http2Server, type ServerHttp2Session } from "node:http2";
22
+ import type { AddressInfo } from "node:net";
23
+ import { fileURLToPath } from "node:url";
24
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";
25
+ import { UsageError } from "../../errors/index.js";
26
+ import { connectMcpServer } from "./connect.js";
27
+ import { renderConnectResult } from "./display.js";
28
+
29
+ const FIXTURE = fileURLToPath(new URL("./__fixtures__/stdio-server.mjs", import.meta.url));
30
+
31
+ let backend: Http2Server;
32
+ let client: Stigmer;
33
+ const openSessions = new Set<ServerHttp2Session>();
34
+
35
+ let connectCalls: ConnectInput[] = [];
36
+ let grantConnected = false;
37
+ // The server returned by getByReference; mutated per test for auth scenarios.
38
+ let servedSpec: ReturnType<typeof create<typeof McpServerSchema>>;
39
+
40
+ beforeEach(() => {
41
+ connectCalls = [];
42
+ grantConnected = false;
43
+ servedSpec = create(McpServerSchema, {
44
+ metadata: { id: "mcp_1", name: "github", slug: "github", org: "acme" },
45
+ spec: {
46
+ serverType: { case: "stdio", value: { command: process.execPath, args: [FIXTURE] } },
47
+ env: { GITHUB_TOKEN: { isSecret: true } },
48
+ },
49
+ });
50
+ });
51
+
52
+ // The updated server the Connect RPC returns, carrying discovered capabilities.
53
+ const updatedServer = create(McpServerSchema, {
54
+ metadata: { id: "mcp_1", name: "github", slug: "github", org: "acme" },
55
+ spec: { serverType: { case: "stdio", value: { command: "github-mcp" } } },
56
+ status: {
57
+ discoveredCapabilities: {
58
+ tools: [{ name: "search_issues", description: "search issues" }],
59
+ resourceTemplates: [{ name: "issue", uriTemplate: "github:///issues/{id}" }],
60
+ },
61
+ },
62
+ });
63
+
64
+ beforeAll(async () => {
65
+ const routes = (router: ConnectRouter) => {
66
+ router.service(McpServerQueryController, {
67
+ getByReference: () => servedSpec,
68
+ get: () => servedSpec,
69
+ getOAuthGrantStatus: () => create(GetOAuthGrantStatusOutputSchema, { connected: grantConnected }),
70
+ });
71
+ router.service(McpServerCommandController, {
72
+ connect: (req) => (connectCalls.push(req), updatedServer),
73
+ });
74
+ };
75
+
76
+ backend = createHttp2Server(connectNodeAdapter({ routes }));
77
+ backend.on("session", (session) => {
78
+ openSessions.add(session);
79
+ session.on("close", () => openSessions.delete(session));
80
+ });
81
+ await new Promise<void>((resolve) => backend.listen(0, "127.0.0.1", resolve));
82
+ const port = (backend.address() as AddressInfo).port;
83
+ client = createNodeClient({ baseUrl: normalizeEndpoint(`127.0.0.1:${port}`) });
84
+ });
85
+
86
+ afterAll(async () => {
87
+ for (const session of openSessions) session.destroy();
88
+ await new Promise<void>((resolve) => backend.close(() => resolve()));
89
+ });
90
+
91
+ describe("connect push path", () => {
92
+ it("sends ConnectInput with merged runtime env and returns discovered capabilities", async () => {
93
+ const result = await connectMcpServer(client, {
94
+ reference: "github",
95
+ org: "acme",
96
+ timeoutMs: 30_000,
97
+ dryRun: false,
98
+ envOverrides: ["GITHUB_TOKEN=ghp-override"],
99
+ backendType: "cloud",
100
+ interactive: false,
101
+ });
102
+
103
+ expect(connectCalls).toHaveLength(1);
104
+ expect(connectCalls[0].mcpServerId).toBe("mcp_1");
105
+ expect(connectCalls[0].runtimeEnv.GITHUB_TOKEN.value).toBe("ghp-override");
106
+ expect(connectCalls[0].runtimeEnv.GITHUB_TOKEN.isSecret).toBe(true);
107
+
108
+ expect(result.updated?.metadata?.id).toBe("mcp_1");
109
+ expect(result.capabilities?.tools.map((t) => t.name)).toEqual(["search_issues"]);
110
+ });
111
+ });
112
+
113
+ describe("OAuth guidance gate", () => {
114
+ beforeEach(() => {
115
+ servedSpec.spec!.auth = create(McpServerAuthSchema, { targetEnvVar: "GITHUB_TOKEN" });
116
+ });
117
+
118
+ it("stops with actionable guidance when auth is required off an interactive terminal", async () => {
119
+ await expect(
120
+ connectMcpServer(client, {
121
+ reference: "github",
122
+ org: "acme",
123
+ timeoutMs: 30_000,
124
+ dryRun: false,
125
+ envOverrides: [],
126
+ backendType: "cloud",
127
+ interactive: false,
128
+ }),
129
+ ).rejects.toThrow(UsageError);
130
+ expect(connectCalls).toHaveLength(0);
131
+ });
132
+
133
+ it("proceeds when an OAuth grant already exists", async () => {
134
+ grantConnected = true;
135
+ await connectMcpServer(client, {
136
+ reference: "github",
137
+ org: "acme",
138
+ timeoutMs: 30_000,
139
+ dryRun: false,
140
+ envOverrides: [],
141
+ backendType: "cloud",
142
+ interactive: false,
143
+ });
144
+ expect(connectCalls).toHaveLength(1);
145
+ });
146
+
147
+ it("proceeds when --env credentials are supplied (bypassing OAuth)", async () => {
148
+ await connectMcpServer(client, {
149
+ reference: "github",
150
+ org: "acme",
151
+ timeoutMs: 30_000,
152
+ dryRun: false,
153
+ envOverrides: ["GITHUB_TOKEN=ghp-x"],
154
+ backendType: "cloud",
155
+ interactive: false,
156
+ });
157
+ expect(connectCalls).toHaveLength(1);
158
+ });
159
+ });
160
+
161
+ describe("dry-run path", () => {
162
+ it("discovers locally and never calls the Connect RPC", async () => {
163
+ const result = await connectMcpServer(client, {
164
+ reference: "github",
165
+ org: "acme",
166
+ timeoutMs: 10_000,
167
+ dryRun: true,
168
+ envOverrides: [],
169
+ backendType: "cloud",
170
+ interactive: false,
171
+ });
172
+
173
+ expect(connectCalls).toHaveLength(0);
174
+ expect(result.updated).toBeUndefined();
175
+ expect(result.capabilities?.tools.map((t) => t.name)).toEqual(["echo", "noop"]);
176
+
177
+ const lines: string[] = [];
178
+ renderConnectResult(result, (l) => lines.push(l), false);
179
+ const text = lines.join("\n");
180
+ expect(text).toContain("MCP Server: acme/github");
181
+ expect(text).toContain("Transport: stdio");
182
+ expect(text).toContain("Tools (2):");
183
+ expect(text).toContain("Dry run — results not saved");
184
+ }, 15_000);
185
+ });
@@ -0,0 +1,107 @@
1
+ // `connect mcp-server` orchestration. Mirrors Go's mcpserver.Connect (connect.go):
2
+ // resolve the server, then either push to the backend (the Connect RPC runs
3
+ // discovery server-side and persists capabilities + tool-approval policies) or,
4
+ // for --dry-run, discover locally and return without persisting.
5
+ //
6
+ // OAuth: when a server requires OAuth, has no existing grant, and no --env was
7
+ // supplied, the interactive browser flow (oauth.ts) shepherds the user through
8
+ // the web console and waits for the grant. Off an interactive terminal (CI,
9
+ // pipes) we stop with actionable guidance instead of blocking for 5 minutes.
10
+ // Audit identity (reviewer) and token acquisition stay server-side by design.
11
+
12
+ import { create } from "@bufbuild/protobuf";
13
+ import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
14
+ import { ConnectInputSchema, GetOAuthGrantStatusInputSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/io_pb";
15
+ import type { DiscoveredCapabilities } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/status_pb";
16
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
17
+ import type { Stigmer } from "@stigmer/sdk";
18
+ import type { BackendType } from "../../config/config.js";
19
+ import { UsageError } from "../../errors/index.js";
20
+ import { defaultRegistry } from "../../registry/index.js";
21
+ import { buildRuntimeEnv } from "../mcp/runtime-env.js";
22
+ import { parseReference } from "../reference.js";
23
+ import { localDiscover } from "./discover.js";
24
+
25
+ export interface ConnectOptions {
26
+ readonly reference: string;
27
+ readonly org: string;
28
+ readonly timeoutMs: number;
29
+ readonly dryRun: boolean;
30
+ readonly envOverrides: readonly string[];
31
+ /** Backend type, for resolving the OAuth web-console URL. */
32
+ readonly backendType: BackendType;
33
+ /** Whether an interactive terminal is available to run the OAuth flow. */
34
+ readonly interactive: boolean;
35
+ }
36
+
37
+ export interface ConnectResult {
38
+ readonly server: McpServer;
39
+ readonly capabilities: DiscoveredCapabilities | undefined;
40
+ /** Set when capabilities were persisted (non-dry-run); undefined for dry-run. */
41
+ readonly updated: McpServer | undefined;
42
+ }
43
+
44
+ /** Connect to an MCP server and discover its capabilities (push or dry-run). */
45
+ export async function connectMcpServer(client: Stigmer, opts: ConnectOptions): Promise<ConnectResult> {
46
+ const server = await resolveMcpServer(client, opts.reference, opts.org);
47
+
48
+ if (opts.dryRun) {
49
+ if (server.spec === undefined) throw new UsageError("MCP server has no spec; cannot discover capabilities");
50
+ const capabilities = await localDiscover(server.spec, opts.envOverrides, opts.timeoutMs);
51
+ return { server, capabilities, updated: undefined };
52
+ }
53
+
54
+ await ensureOAuthSatisfied(client, server, opts);
55
+
56
+ const updated = await client.mcpServer.connect(
57
+ create(ConnectInputSchema, {
58
+ mcpServerId: server.metadata?.id ?? "",
59
+ runtimeEnv: buildRuntimeEnv(server, opts.envOverrides),
60
+ }),
61
+ );
62
+ return { server, capabilities: updated.status?.discoveredCapabilities, updated };
63
+ }
64
+
65
+ // Resolve a reference (id, org/slug, or bare slug) to an McpServer. Mirrors Go's
66
+ // GetFromBackend.
67
+ async function resolveMcpServer(client: Stigmer, reference: string, org: string): Promise<McpServer> {
68
+ const idPrefix = defaultRegistry().getByAlias("mcp-server")?.idPrefix ?? "";
69
+ const parsed = parseReference(reference, org, idPrefix);
70
+ if (parsed.kind === "id") return client.mcpServer.get(parsed.id);
71
+ return client.mcpServer.getByReference({ org: parsed.org, slug: parsed.slug });
72
+ }
73
+
74
+ // Ensure an OAuth grant exists before connecting an auth-configured server that
75
+ // was given no --env credentials. On an interactive terminal, run the browser
76
+ // flow and wait for the grant; otherwise stop with actionable guidance so
77
+ // scripted callers get a clean, stable failure instead of a 5-minute block.
78
+ async function ensureOAuthSatisfied(client: Stigmer, server: McpServer, opts: ConnectOptions): Promise<void> {
79
+ if (!oauthRequired(server) || opts.envOverrides.length > 0) return;
80
+
81
+ const status = await client.mcpServer.getOAuthGrantStatus(
82
+ create(GetOAuthGrantStatusInputSchema, {
83
+ resourceId: server.metadata?.id ?? "",
84
+ org: opts.org,
85
+ }),
86
+ );
87
+ if (status.connected) return;
88
+
89
+ if (!opts.interactive) throw oauthGuidanceError(server, opts.reference);
90
+
91
+ const { runOAuthFlow } = await import("./oauth.js");
92
+ await runOAuthFlow({ client, server, org: opts.org, backendType: opts.backendType });
93
+ }
94
+
95
+ function oauthGuidanceError(server: McpServer, reference: string): UsageError {
96
+ const slug = server.metadata?.slug ?? server.metadata?.name ?? reference;
97
+ return new UsageError(
98
+ `MCP server '${slug}' requires OAuth authentication, which needs an interactive terminal.\n\n` +
99
+ "To connect, choose one of:\n" +
100
+ " - Re-run this command in an interactive terminal to complete OAuth in your browser\n" +
101
+ ` - Provide credentials directly: stigmer connect mcp-server ${slug} --env TOKEN=...`,
102
+ );
103
+ }
104
+
105
+ function oauthRequired(server: McpServer): boolean {
106
+ return (server.spec?.auth?.targetEnvVar ?? "") !== "";
107
+ }