@stigmer/cli 3.35.0 → 3.37.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 (514) hide show
  1. package/auth/auth0.d.ts.map +1 -1
  2. package/auth/auth0.js.map +1 -1
  3. package/auth/callback-server.d.ts.map +1 -1
  4. package/auth/callback-server.js.map +1 -1
  5. package/auth/index.d.ts.map +1 -1
  6. package/auth/index.js.map +1 -1
  7. package/auth/login.d.ts.map +1 -1
  8. package/auth/login.js.map +1 -1
  9. package/auth/pages.d.ts.map +1 -1
  10. package/auth/pages.js.map +1 -1
  11. package/auth/pkce.d.ts.map +1 -1
  12. package/auth/pkce.js.map +1 -1
  13. package/auth/token.d.ts.map +1 -1
  14. package/auth/token.js.map +1 -1
  15. package/backend.d.ts.map +1 -1
  16. package/backend.js.map +1 -1
  17. package/cli/stigmer.d.ts.map +1 -1
  18. package/cli/stigmer.js.map +1 -1
  19. package/client/client.d.ts.map +1 -1
  20. package/client/client.js.map +1 -1
  21. package/client/index.d.ts.map +1 -1
  22. package/client/index.js.map +1 -1
  23. package/commands/agent-exec-flags.d.ts.map +1 -1
  24. package/commands/agent-exec-flags.js.map +1 -1
  25. package/commands/apikey/duration.d.ts.map +1 -1
  26. package/commands/apikey/duration.js.map +1 -1
  27. package/commands/apikey/index.d.ts.map +1 -1
  28. package/commands/apikey/index.js.map +1 -1
  29. package/commands/apply.d.ts.map +1 -1
  30. package/commands/apply.js.map +1 -1
  31. package/commands/auth/index.d.ts.map +1 -1
  32. package/commands/auth/index.js.map +1 -1
  33. package/commands/auth/login.d.ts.map +1 -1
  34. package/commands/auth/login.js.map +1 -1
  35. package/commands/auth/whoami.d.ts.map +1 -1
  36. package/commands/auth/whoami.js.map +1 -1
  37. package/commands/bootstrap.d.ts.map +1 -1
  38. package/commands/bootstrap.js.map +1 -1
  39. package/commands/completion.d.ts.map +1 -1
  40. package/commands/completion.js.map +1 -1
  41. package/commands/config/backend.d.ts.map +1 -1
  42. package/commands/config/backend.js.map +1 -1
  43. package/commands/config/context.d.ts.map +1 -1
  44. package/commands/config/context.js.map +1 -1
  45. package/commands/config/index.d.ts.map +1 -1
  46. package/commands/config/index.js.map +1 -1
  47. package/commands/config/kv.d.ts.map +1 -1
  48. package/commands/config/kv.js.map +1 -1
  49. package/commands/connect.d.ts.map +1 -1
  50. package/commands/connect.js.map +1 -1
  51. package/commands/delete.d.ts.map +1 -1
  52. package/commands/delete.js.map +1 -1
  53. package/commands/diff.d.ts.map +1 -1
  54. package/commands/diff.js.map +1 -1
  55. package/commands/down.d.ts.map +1 -1
  56. package/commands/down.js.map +1 -1
  57. package/commands/download.d.ts.map +1 -1
  58. package/commands/download.js.map +1 -1
  59. package/commands/execution/approve.d.ts.map +1 -1
  60. package/commands/execution/approve.js.map +1 -1
  61. package/commands/execution/control.d.ts.map +1 -1
  62. package/commands/execution/control.js.map +1 -1
  63. package/commands/execution/index.d.ts.map +1 -1
  64. package/commands/execution/index.js.map +1 -1
  65. package/commands/execution/logs.d.ts.map +1 -1
  66. package/commands/execution/logs.js.map +1 -1
  67. package/commands/execution/trace.d.ts.map +1 -1
  68. package/commands/execution/trace.js.map +1 -1
  69. package/commands/get.d.ts.map +1 -1
  70. package/commands/get.js.map +1 -1
  71. package/commands/install.d.ts.map +1 -1
  72. package/commands/install.js.map +1 -1
  73. package/commands/internal-daemon.d.ts.map +1 -1
  74. package/commands/internal-daemon.js.map +1 -1
  75. package/commands/list.d.ts.map +1 -1
  76. package/commands/list.js.map +1 -1
  77. package/commands/logs.d.ts.map +1 -1
  78. package/commands/logs.js.map +1 -1
  79. package/commands/marketplace.d.ts.map +1 -1
  80. package/commands/marketplace.js.map +1 -1
  81. package/commands/mcp-server.d.ts.map +1 -1
  82. package/commands/mcp-server.js.map +1 -1
  83. package/commands/push.d.ts.map +1 -1
  84. package/commands/push.js.map +1 -1
  85. package/commands/reset.d.ts.map +1 -1
  86. package/commands/reset.js.map +1 -1
  87. package/commands/resume.d.ts.map +1 -1
  88. package/commands/resume.js.map +1 -1
  89. package/commands/run.d.ts.map +1 -1
  90. package/commands/run.js.map +1 -1
  91. package/commands/schedule.d.ts.map +1 -1
  92. package/commands/schedule.js.map +1 -1
  93. package/commands/search.d.ts.map +1 -1
  94. package/commands/search.js.map +1 -1
  95. package/commands/setup.d.ts.map +1 -1
  96. package/commands/setup.js.map +1 -1
  97. package/commands/share.d.ts.map +1 -1
  98. package/commands/share.js.map +1 -1
  99. package/commands/shared.d.ts.map +1 -1
  100. package/commands/shared.js.map +1 -1
  101. package/commands/status.d.ts.map +1 -1
  102. package/commands/status.js.map +1 -1
  103. package/commands/tag.d.ts.map +1 -1
  104. package/commands/tag.js.map +1 -1
  105. package/commands/up.d.ts.map +1 -1
  106. package/commands/up.js.map +1 -1
  107. package/commands/usage.d.ts.map +1 -1
  108. package/commands/usage.js.map +1 -1
  109. package/commands/validate.d.ts.map +1 -1
  110. package/commands/validate.js.map +1 -1
  111. package/commands/version.d.ts.map +1 -1
  112. package/commands/version.js.map +1 -1
  113. package/config/config.d.ts.map +1 -1
  114. package/config/config.js.map +1 -1
  115. package/config/index.d.ts.map +1 -1
  116. package/config/index.js.map +1 -1
  117. package/config/keys.d.ts.map +1 -1
  118. package/config/keys.js.map +1 -1
  119. package/config/paths.d.ts.map +1 -1
  120. package/config/paths.js.map +1 -1
  121. package/config/resolve.d.ts.map +1 -1
  122. package/config/resolve.js.map +1 -1
  123. package/errors/classify.d.ts.map +1 -1
  124. package/errors/classify.js.map +1 -1
  125. package/errors/cli-exit-error.d.ts.map +1 -1
  126. package/errors/cli-exit-error.js.map +1 -1
  127. package/errors/exit-codes.d.ts.map +1 -1
  128. package/errors/exit-codes.js.map +1 -1
  129. package/errors/handle.d.ts.map +1 -1
  130. package/errors/handle.js.map +1 -1
  131. package/errors/index.d.ts.map +1 -1
  132. package/errors/index.js.map +1 -1
  133. package/errors/usage-error.d.ts.map +1 -1
  134. package/errors/usage-error.js.map +1 -1
  135. package/index.d.ts.map +1 -1
  136. package/index.js.map +1 -1
  137. package/local/artifact.d.ts.map +1 -1
  138. package/local/artifact.js.map +1 -1
  139. package/local/bootstrap.d.ts.map +1 -1
  140. package/local/bootstrap.js.map +1 -1
  141. package/local/constants.d.ts.map +1 -1
  142. package/local/constants.js.map +1 -1
  143. package/local/daemon/components.d.ts.map +1 -1
  144. package/local/daemon/components.js.map +1 -1
  145. package/local/daemon/env.d.ts.map +1 -1
  146. package/local/daemon/env.js.map +1 -1
  147. package/local/daemon/host.d.ts.map +1 -1
  148. package/local/daemon/host.js.map +1 -1
  149. package/local/daemon/index.d.ts.map +1 -1
  150. package/local/daemon/index.js.map +1 -1
  151. package/local/daemon/launch.d.ts.map +1 -1
  152. package/local/daemon/launch.js.map +1 -1
  153. package/local/daemon/process.d.ts.map +1 -1
  154. package/local/daemon/process.js.map +1 -1
  155. package/local/daemon/supervisor.d.ts.map +1 -1
  156. package/local/daemon/supervisor.js.map +1 -1
  157. package/local/daemon/types.d.ts.map +1 -1
  158. package/local/daemon/types.js.map +1 -1
  159. package/local/llm-config.d.ts.map +1 -1
  160. package/local/llm-config.js.map +1 -1
  161. package/local/logs/tail.d.ts.map +1 -1
  162. package/local/logs/tail.js.map +1 -1
  163. package/local/logs/view.d.ts.map +1 -1
  164. package/local/logs/view.js.map +1 -1
  165. package/local/net/tcp.d.ts.map +1 -1
  166. package/local/net/tcp.js.map +1 -1
  167. package/local/operator-config.d.ts.map +1 -1
  168. package/local/operator-config.js.map +1 -1
  169. package/local/paths.d.ts.map +1 -1
  170. package/local/paths.js.map +1 -1
  171. package/local/reset.d.ts.map +1 -1
  172. package/local/reset.js.map +1 -1
  173. package/local/runtime/index.d.ts.map +1 -1
  174. package/local/runtime/index.js.map +1 -1
  175. package/local/runtime/node.d.ts.map +1 -1
  176. package/local/runtime/node.js.map +1 -1
  177. package/local/runtime/runner.d.ts.map +1 -1
  178. package/local/runtime/runner.js.map +1 -1
  179. package/local/runtime/runtimes-install.d.ts.map +1 -1
  180. package/local/runtime/runtimes-install.js.map +1 -1
  181. package/local/runtime/server.d.ts.map +1 -1
  182. package/local/runtime/server.js.map +1 -1
  183. package/local/runtime/which.d.ts.map +1 -1
  184. package/local/runtime/which.js.map +1 -1
  185. package/local/setup/prompt.d.ts.map +1 -1
  186. package/local/setup/prompt.js.map +1 -1
  187. package/local/setup/wizard.d.ts.map +1 -1
  188. package/local/setup/wizard.js.map +1 -1
  189. package/local/state/health-state.d.ts.map +1 -1
  190. package/local/state/health-state.js.map +1 -1
  191. package/local/state/index.d.ts.map +1 -1
  192. package/local/state/index.js.map +1 -1
  193. package/local/state/lock.d.ts.map +1 -1
  194. package/local/state/lock.js.map +1 -1
  195. package/local/state/log-rotation.d.ts.map +1 -1
  196. package/local/state/log-rotation.js.map +1 -1
  197. package/local/state/pidfile.d.ts.map +1 -1
  198. package/local/state/pidfile.js.map +1 -1
  199. package/local/state/proc.d.ts.map +1 -1
  200. package/local/state/proc.js.map +1 -1
  201. package/local/state/startup-config.d.ts.map +1 -1
  202. package/local/state/startup-config.js.map +1 -1
  203. package/local/status.d.ts.map +1 -1
  204. package/local/status.js.map +1 -1
  205. package/local/temporal/download.d.ts.map +1 -1
  206. package/local/temporal/download.js.map +1 -1
  207. package/local/temporal/index.d.ts.map +1 -1
  208. package/local/temporal/index.js.map +1 -1
  209. package/local/temporal/inspect.d.ts.map +1 -1
  210. package/local/temporal/inspect.js.map +1 -1
  211. package/local/temporal/manager.d.ts.map +1 -1
  212. package/local/temporal/manager.js.map +1 -1
  213. package/local/temporal/supervisor.d.ts.map +1 -1
  214. package/local/temporal/supervisor.js.map +1 -1
  215. package/local/webconsole/index.d.ts.map +1 -1
  216. package/local/webconsole/index.js.map +1 -1
  217. package/logger.d.ts.map +1 -1
  218. package/logger.js.map +1 -1
  219. package/marketplace/config.d.ts.map +1 -1
  220. package/marketplace/config.js.map +1 -1
  221. package/marketplace/github.d.ts.map +1 -1
  222. package/marketplace/github.js.map +1 -1
  223. package/marketplace/index.d.ts.map +1 -1
  224. package/marketplace/index.js.map +1 -1
  225. package/marketplace/install.d.ts.map +1 -1
  226. package/marketplace/install.js.map +1 -1
  227. package/marketplace/materialize.d.ts.map +1 -1
  228. package/marketplace/materialize.js.map +1 -1
  229. package/marketplace/official.d.ts.map +1 -1
  230. package/marketplace/official.js.map +1 -1
  231. package/marketplace/read.d.ts.map +1 -1
  232. package/marketplace/read.js.map +1 -1
  233. package/marketplace/ref.d.ts.map +1 -1
  234. package/marketplace/ref.js.map +1 -1
  235. package/marketplace/render.d.ts.map +1 -1
  236. package/marketplace/render.js.map +1 -1
  237. package/output/command-result.d.ts.map +1 -1
  238. package/output/command-result.js.map +1 -1
  239. package/output/confirm.d.ts.map +1 -1
  240. package/output/confirm.js.map +1 -1
  241. package/output/format.d.ts.map +1 -1
  242. package/output/format.js.map +1 -1
  243. package/output/index.d.ts.map +1 -1
  244. package/output/index.js.map +1 -1
  245. package/output/ndjson.d.ts.map +1 -1
  246. package/output/ndjson.js.map +1 -1
  247. package/output/proto.d.ts.map +1 -1
  248. package/output/proto.js.map +1 -1
  249. package/output/style.d.ts.map +1 -1
  250. package/output/style.js.map +1 -1
  251. package/output/table.d.ts.map +1 -1
  252. package/output/table.js.map +1 -1
  253. package/package.json +7 -7
  254. package/program.d.ts.map +1 -1
  255. package/program.js.map +1 -1
  256. package/registry/aliases.d.ts.map +1 -1
  257. package/registry/aliases.js.map +1 -1
  258. package/registry/index.d.ts.map +1 -1
  259. package/registry/index.js.map +1 -1
  260. package/registry/metadata.d.ts.map +1 -1
  261. package/registry/metadata.js.map +1 -1
  262. package/registry/registry.d.ts.map +1 -1
  263. package/registry/registry.js.map +1 -1
  264. package/registry/verb-support.d.ts.map +1 -1
  265. package/registry/verb-support.js.map +1 -1
  266. package/registry/verbs.d.ts.map +1 -1
  267. package/registry/verbs.js.map +1 -1
  268. package/resources/apply/apply.d.ts.map +1 -1
  269. package/resources/apply/apply.js.map +1 -1
  270. package/resources/apply/discovery.d.ts.map +1 -1
  271. package/resources/apply/discovery.js.map +1 -1
  272. package/resources/apply/handlers.d.ts.map +1 -1
  273. package/resources/apply/handlers.js.map +1 -1
  274. package/resources/connect/connect.d.ts.map +1 -1
  275. package/resources/connect/connect.js.map +1 -1
  276. package/resources/connect/discover.d.ts.map +1 -1
  277. package/resources/connect/discover.js.map +1 -1
  278. package/resources/connect/display.d.ts.map +1 -1
  279. package/resources/connect/display.js.map +1 -1
  280. package/resources/connect/oauth.d.ts.map +1 -1
  281. package/resources/connect/oauth.js.map +1 -1
  282. package/resources/cursor-pages.d.ts.map +1 -1
  283. package/resources/cursor-pages.js.map +1 -1
  284. package/resources/delete.d.ts.map +1 -1
  285. package/resources/delete.js.map +1 -1
  286. package/resources/diff.d.ts.map +1 -1
  287. package/resources/diff.js.map +1 -1
  288. package/resources/documents.d.ts.map +1 -1
  289. package/resources/documents.js.map +1 -1
  290. package/resources/download.d.ts.map +1 -1
  291. package/resources/download.js.map +1 -1
  292. package/resources/execution-approve.d.ts.map +1 -1
  293. package/resources/execution-approve.js.map +1 -1
  294. package/resources/execution-control.d.ts.map +1 -1
  295. package/resources/execution-control.js.map +1 -1
  296. package/resources/execution-format.d.ts.map +1 -1
  297. package/resources/execution-format.js.map +1 -1
  298. package/resources/execution-logs.d.ts.map +1 -1
  299. package/resources/execution-logs.js.map +1 -1
  300. package/resources/execution-trace.d.ts.map +1 -1
  301. package/resources/execution-trace.js.map +1 -1
  302. package/resources/execution.d.ts.map +1 -1
  303. package/resources/execution.js.map +1 -1
  304. package/resources/get-bindings.d.ts.map +1 -1
  305. package/resources/get-bindings.js.map +1 -1
  306. package/resources/get.d.ts.map +1 -1
  307. package/resources/get.js.map +1 -1
  308. package/resources/git.d.ts.map +1 -1
  309. package/resources/git.js.map +1 -1
  310. package/resources/ignore/index.d.ts.map +1 -1
  311. package/resources/ignore/index.js.map +1 -1
  312. package/resources/ignore/matcher.d.ts.map +1 -1
  313. package/resources/ignore/matcher.js.map +1 -1
  314. package/resources/list.d.ts.map +1 -1
  315. package/resources/list.js.map +1 -1
  316. package/resources/mcp/placeholder-resolver.d.ts.map +1 -1
  317. package/resources/mcp/placeholder-resolver.js.map +1 -1
  318. package/resources/mcp/runtime-env.d.ts.map +1 -1
  319. package/resources/mcp/runtime-env.js.map +1 -1
  320. package/resources/picker/ink.d.ts.map +1 -1
  321. package/resources/picker/ink.js.map +1 -1
  322. package/resources/picker/tty.d.ts.map +1 -1
  323. package/resources/picker/tty.js.map +1 -1
  324. package/resources/plugin.d.ts.map +1 -1
  325. package/resources/plugin.js.map +1 -1
  326. package/resources/reference.d.ts.map +1 -1
  327. package/resources/reference.js.map +1 -1
  328. package/resources/render.d.ts.map +1 -1
  329. package/resources/render.js.map +1 -1
  330. package/resources/run/agent-exec.d.ts.map +1 -1
  331. package/resources/run/agent-exec.js.map +1 -1
  332. package/resources/run/attachments.d.ts.map +1 -1
  333. package/resources/run/attachments.js.map +1 -1
  334. package/resources/run/create.d.ts.map +1 -1
  335. package/resources/run/create.js.map +1 -1
  336. package/resources/run/env.d.ts.map +1 -1
  337. package/resources/run/env.js.map +1 -1
  338. package/resources/run/epilogue.d.ts.map +1 -1
  339. package/resources/run/epilogue.js.map +1 -1
  340. package/resources/run/header.d.ts.map +1 -1
  341. package/resources/run/header.js.map +1 -1
  342. package/resources/run/prepare.d.ts.map +1 -1
  343. package/resources/run/prepare.js.map +1 -1
  344. package/resources/run/resolve.d.ts.map +1 -1
  345. package/resources/run/resolve.js.map +1 -1
  346. package/resources/run/resume.d.ts.map +1 -1
  347. package/resources/run/resume.js.map +1 -1
  348. package/resources/run/stream.d.ts.map +1 -1
  349. package/resources/run/stream.js.map +1 -1
  350. package/resources/run/workflow-stream.d.ts.map +1 -1
  351. package/resources/run/workflow-stream.js.map +1 -1
  352. package/resources/run/workspace.d.ts.map +1 -1
  353. package/resources/run/workspace.js.map +1 -1
  354. package/resources/schedule.d.ts.map +1 -1
  355. package/resources/schedule.js.map +1 -1
  356. package/resources/search.d.ts.map +1 -1
  357. package/resources/search.js.map +1 -1
  358. package/resources/session.d.ts.map +1 -1
  359. package/resources/session.js.map +1 -1
  360. package/resources/share.d.ts.map +1 -1
  361. package/resources/share.js.map +1 -1
  362. package/resources/skill.d.ts.map +1 -1
  363. package/resources/skill.js.map +1 -1
  364. package/resources/stream/approval-detect.d.ts.map +1 -1
  365. package/resources/stream/approval-detect.js.map +1 -1
  366. package/resources/stream/convert.d.ts.map +1 -1
  367. package/resources/stream/convert.js.map +1 -1
  368. package/resources/stream/diff.d.ts.map +1 -1
  369. package/resources/stream/diff.js.map +1 -1
  370. package/resources/stream/events.d.ts.map +1 -1
  371. package/resources/stream/events.js.map +1 -1
  372. package/resources/stream/headless.d.ts.map +1 -1
  373. package/resources/stream/headless.js.map +1 -1
  374. package/resources/stream/ink.d.ts.map +1 -1
  375. package/resources/stream/ink.js.map +1 -1
  376. package/resources/stream/render-ndjson.d.ts.map +1 -1
  377. package/resources/stream/render-ndjson.js.map +1 -1
  378. package/resources/stream/render-plaintext.d.ts.map +1 -1
  379. package/resources/stream/render-plaintext.js.map +1 -1
  380. package/resources/stream/snapshot.d.ts.map +1 -1
  381. package/resources/stream/snapshot.js.map +1 -1
  382. package/resources/stream/subagent.d.ts.map +1 -1
  383. package/resources/stream/subagent.js.map +1 -1
  384. package/resources/stream/submit.d.ts.map +1 -1
  385. package/resources/stream/submit.js.map +1 -1
  386. package/resources/stream/todo.d.ts.map +1 -1
  387. package/resources/stream/todo.js.map +1 -1
  388. package/resources/stream/tool-state.d.ts.map +1 -1
  389. package/resources/stream/tool-state.js.map +1 -1
  390. package/resources/stream/tty.d.ts.map +1 -1
  391. package/resources/stream/tty.js.map +1 -1
  392. package/resources/stream/workflow-event-view.d.ts.map +1 -1
  393. package/resources/stream/workflow-event-view.js.map +1 -1
  394. package/resources/stream/workflow-render-ndjson.d.ts.map +1 -1
  395. package/resources/stream/workflow-render-ndjson.js.map +1 -1
  396. package/resources/stream/workflow-render-plaintext.d.ts.map +1 -1
  397. package/resources/stream/workflow-render-plaintext.js.map +1 -1
  398. package/resources/tag.d.ts.map +1 -1
  399. package/resources/tag.js.map +1 -1
  400. package/resources/task-configs.d.ts.map +1 -1
  401. package/resources/task-configs.js.map +1 -1
  402. package/resources/usage.d.ts.map +1 -1
  403. package/resources/usage.js.map +1 -1
  404. package/resources/validate.d.ts.map +1 -1
  405. package/resources/validate.js.map +1 -1
  406. package/resources/version.d.ts.map +1 -1
  407. package/resources/version.js.map +1 -1
  408. package/runtime.d.ts.map +1 -1
  409. package/runtime.js.map +1 -1
  410. package/version.d.ts.map +1 -1
  411. package/version.js.map +1 -1
  412. package/src/auth/pkce.test.ts +0 -37
  413. package/src/auth/token.test.ts +0 -151
  414. package/src/client/client.test.ts +0 -142
  415. package/src/commands/apikey/duration.test.ts +0 -23
  416. package/src/commands/auth/login.test.ts +0 -52
  417. package/src/commands/auth/whoami.test.ts +0 -96
  418. package/src/commands/bootstrap.test.ts +0 -178
  419. package/src/commands/config/backend.test.ts +0 -122
  420. package/src/commands/config/context.test.ts +0 -171
  421. package/src/commands/connect.test.ts +0 -113
  422. package/src/commands/install.test.ts +0 -307
  423. package/src/commands/marketplace.test.ts +0 -205
  424. package/src/commands/mcp-server.test.ts +0 -65
  425. package/src/commands/validate.test.ts +0 -168
  426. package/src/config/config.test.ts +0 -132
  427. package/src/config/keys.test.ts +0 -61
  428. package/src/config/resolve.test.ts +0 -242
  429. package/src/errors/clierr.test.ts +0 -172
  430. package/src/local/artifact.test.ts +0 -54
  431. package/src/local/bootstrap.test.ts +0 -166
  432. package/src/local/daemon/components.test.ts +0 -148
  433. package/src/local/daemon/daemon.integration.test.ts +0 -216
  434. package/src/local/daemon/env.test.ts +0 -108
  435. package/src/local/daemon/launch.test.ts +0 -136
  436. package/src/local/daemon/supervisor.test.ts +0 -260
  437. package/src/local/llm-config.test.ts +0 -66
  438. package/src/local/logs/tail.test.ts +0 -70
  439. package/src/local/logs/view.test.ts +0 -46
  440. package/src/local/operator-config.test.ts +0 -72
  441. package/src/local/reset.test.ts +0 -53
  442. package/src/local/runtime/runtime.test.ts +0 -240
  443. package/src/local/runtime/runtimes-install.test.ts +0 -58
  444. package/src/local/runtime/server.test.ts +0 -253
  445. package/src/local/setup/wizard.test.ts +0 -94
  446. package/src/local/state/state.test.ts +0 -210
  447. package/src/local/status.test.ts +0 -108
  448. package/src/local/temporal/download.test.ts +0 -248
  449. package/src/local/temporal/inspect.test.ts +0 -83
  450. package/src/local/temporal/manager.test.ts +0 -64
  451. package/src/local/temporal/supervisor.test.ts +0 -77
  452. package/src/marketplace/__fixtures__/cursor-marketplace.ts +0 -69
  453. package/src/marketplace/config.test.ts +0 -254
  454. package/src/marketplace/github.test.ts +0 -394
  455. package/src/marketplace/install.test.ts +0 -261
  456. package/src/marketplace/official.test.ts +0 -107
  457. package/src/marketplace/read.test.ts +0 -93
  458. package/src/marketplace/ref.test.ts +0 -179
  459. package/src/output/command-result.test.ts +0 -73
  460. package/src/output/confirm.test.ts +0 -43
  461. package/src/output/format.test.ts +0 -65
  462. package/src/output/proto.test.ts +0 -72
  463. package/src/output/table.test.ts +0 -37
  464. package/src/program.test.ts +0 -62
  465. package/src/registry/aliases.test.ts +0 -142
  466. package/src/registry/registry.test.ts +0 -355
  467. package/src/resources/apply/apply.integration.test.ts +0 -353
  468. package/src/resources/apply/apply.test.ts +0 -134
  469. package/src/resources/apply/discovery.integration.test.ts +0 -99
  470. package/src/resources/connect/__fixtures__/stdio-crash.mjs +0 -6
  471. package/src/resources/connect/__fixtures__/stdio-server.mjs +0 -48
  472. package/src/resources/connect/connect.integration.test.ts +0 -383
  473. package/src/resources/connect/discover.test.ts +0 -84
  474. package/src/resources/connect/oauth.test.ts +0 -158
  475. package/src/resources/cursor-pages.test.ts +0 -55
  476. package/src/resources/diff.integration.test.ts +0 -103
  477. package/src/resources/diff.test.ts +0 -34
  478. package/src/resources/documents.test.ts +0 -67
  479. package/src/resources/execution-approve.test.ts +0 -50
  480. package/src/resources/execution-format.test.ts +0 -48
  481. package/src/resources/execution.integration.test.ts +0 -285
  482. package/src/resources/execution.test.ts +0 -138
  483. package/src/resources/ignore/ignore.test.ts +0 -62
  484. package/src/resources/mcp/placeholder-resolver.test.ts +0 -71
  485. package/src/resources/mcp/runtime-env.test.ts +0 -102
  486. package/src/resources/mutate-verbs.integration.test.ts +0 -455
  487. package/src/resources/picker/tty.test.ts +0 -37
  488. package/src/resources/plugin.test.ts +0 -379
  489. package/src/resources/push-download.integration.test.ts +0 -175
  490. package/src/resources/read-completion.integration.test.ts +0 -164
  491. package/src/resources/read-verbs.integration.test.ts +0 -603
  492. package/src/resources/reference.test.ts +0 -107
  493. package/src/resources/run/agent-exec.test.ts +0 -179
  494. package/src/resources/run/attachments.test.ts +0 -135
  495. package/src/resources/run/create.test.ts +0 -336
  496. package/src/resources/run/env.test.ts +0 -131
  497. package/src/resources/run/header.test.ts +0 -79
  498. package/src/resources/run/prepare.test.ts +0 -428
  499. package/src/resources/run/workflow-stream.integration.test.ts +0 -157
  500. package/src/resources/run/workspace.test.ts +0 -93
  501. package/src/resources/share.test.ts +0 -523
  502. package/src/resources/skill.test.ts +0 -364
  503. package/src/resources/stream/diff.test.ts +0 -338
  504. package/src/resources/stream/headless.test.ts +0 -119
  505. package/src/resources/stream/lazy-import.test.ts +0 -63
  506. package/src/resources/stream/render-ndjson.test.ts +0 -126
  507. package/src/resources/stream/render-plaintext.test.ts +0 -127
  508. package/src/resources/stream/snapshot.test.ts +0 -111
  509. package/src/resources/stream/submit.test.ts +0 -77
  510. package/src/resources/stream/workflow-event-view.test.ts +0 -116
  511. package/src/resources/stream/workflow-render.test.ts +0 -81
  512. package/src/resources/task-configs.test.ts +0 -98
  513. package/src/resources/usage.test.ts +0 -94
  514. package/src/resources/validate.test.ts +0 -79
@@ -1,336 +0,0 @@
1
- // Unit tests for run-path resource creation: full-proto field mapping, the
2
- // message default, ExecutionConfig presence/contents, runtime-env conversion,
3
- // the one-call session_spec bootstrap, and the workflow shape. The controller
4
- // is faked to capture the exact proto sent to the RPC.
5
-
6
- import { describe, expect, it } from "vitest";
7
- import { InteractionMode, ServiceTier, ThinkingMode } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
8
- import { create } from "@bufbuild/protobuf";
9
- import { Harness } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
10
- import {
11
- LocalPathSourceSchema,
12
- WorkspaceEntrySchema,
13
- WorkspaceSourceSchema,
14
- } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
15
- import { type ControllerFn, createAgentExecution, createWorkflowExecution } from "./create.js";
16
-
17
- // Returns a controller whose every RPC echoes the request back, and records the
18
- // last message sent. `create` is the only RPC the run path calls.
19
- function fakeController(): { fn: ControllerFn; last: () => unknown } {
20
- let captured: unknown;
21
- const fn = (() =>
22
- ({
23
- create: async (msg: unknown) => {
24
- captured = msg;
25
- return msg;
26
- },
27
- })) as unknown as ControllerFn;
28
- return { fn, last: () => captured };
29
- }
30
-
31
- describe("createAgentExecution", () => {
32
- it("maps the full spec and defaults an empty message to 'execute'", async () => {
33
- const { fn } = fakeController();
34
- const exec = await createAgentExecution(fn, {
35
- agentId: "agt_1",
36
- orgId: "acme",
37
- message: "",
38
- runtimeEnv: { FOO: { value: "bar", isSecret: false }, TOKEN: { value: "s", isSecret: true } },
39
- attachments: [],
40
- workspaceFileRefs: ["src/a.ts"],
41
- workspaceEntries: [],
42
- model: "claude",
43
- mode: "plan",
44
- serviceTier: "",
45
- thinking: "",
46
- autoApproveAll: true,
47
- harness: "",
48
- });
49
-
50
- expect(exec.kind).toBe("AgentExecution");
51
- expect(exec.metadata?.org).toBe("acme");
52
- expect(exec.spec?.message).toBe("execute");
53
- expect(exec.spec?.agentId).toBe("agt_1");
54
- expect(exec.spec?.autoApproveAll).toBe(true);
55
- expect(exec.spec?.workspaceFileRefs).toEqual(["src/a.ts"]);
56
- expect(exec.spec?.runtimeEnv.FOO).toMatchObject({ value: "bar", isSecret: false });
57
- expect(exec.spec?.runtimeEnv.TOKEN).toMatchObject({ value: "s", isSecret: true });
58
- expect(exec.spec?.executionConfig?.modelName).toBe("claude");
59
- expect(exec.spec?.executionConfig?.interactionMode).toBe(InteractionMode.PLAN);
60
- });
61
-
62
- it("omits ExecutionConfig when neither model nor mode is set", async () => {
63
- const { fn } = fakeController();
64
- const exec = await createAgentExecution(fn, {
65
- agentId: "agt_1",
66
- orgId: "acme",
67
- message: "hi",
68
- runtimeEnv: {},
69
- attachments: [],
70
- workspaceFileRefs: [],
71
- workspaceEntries: [],
72
- model: "",
73
- mode: "",
74
- serviceTier: "",
75
- thinking: "",
76
- autoApproveAll: false,
77
- harness: "",
78
- });
79
- expect(exec.spec?.message).toBe("hi");
80
- expect(exec.spec?.executionConfig).toBeUndefined();
81
- });
82
-
83
- it("maps --service-tier fast to the enum (#357)", async () => {
84
- const { fn } = fakeController();
85
- const exec = await createAgentExecution(fn, {
86
- agentId: "agt_1",
87
- orgId: "acme",
88
- message: "x",
89
- runtimeEnv: {},
90
- attachments: [],
91
- workspaceFileRefs: [],
92
- workspaceEntries: [],
93
- model: "composer-2.5",
94
- mode: "",
95
- serviceTier: "fast",
96
- thinking: "",
97
- autoApproveAll: false,
98
- harness: "",
99
- });
100
- expect(exec.spec?.executionConfig?.serviceTier).toBe(ServiceTier.FAST);
101
- });
102
-
103
- it("maps an explicit --service-tier standard to STANDARD, not UNSPECIFIED", async () => {
104
- // Unspecified-vs-explicit-standard is a load-bearing ledger
105
- // distinction (#357): an explicit choice must survive to the proto.
106
- const { fn } = fakeController();
107
- const exec = await createAgentExecution(fn, {
108
- agentId: "agt_1",
109
- orgId: "acme",
110
- message: "x",
111
- runtimeEnv: {},
112
- attachments: [],
113
- workspaceFileRefs: [],
114
- workspaceEntries: [],
115
- model: "",
116
- mode: "",
117
- serviceTier: "standard",
118
- thinking: "",
119
- autoApproveAll: false,
120
- harness: "",
121
- });
122
- expect(exec.spec?.executionConfig?.serviceTier).toBe(ServiceTier.STANDARD);
123
- });
124
-
125
- it("maps --thinking enabled to the enum (#772)", async () => {
126
- const { fn } = fakeController();
127
- const exec = await createAgentExecution(fn, {
128
- agentId: "agt_1",
129
- orgId: "acme",
130
- message: "x",
131
- runtimeEnv: {},
132
- attachments: [],
133
- workspaceFileRefs: [],
134
- workspaceEntries: [],
135
- model: "claude-haiku-4-5",
136
- mode: "",
137
- serviceTier: "",
138
- thinking: "enabled",
139
- autoApproveAll: false,
140
- harness: "",
141
- });
142
- expect(exec.spec?.executionConfig?.thinkingMode).toBe(ThinkingMode.ENABLED);
143
- });
144
-
145
- it("maps an explicit --thinking disabled to DISABLED, not UNSPECIFIED", async () => {
146
- // The tier's #772 twin: unspecified-vs-explicit-disabled is the same
147
- // load-bearing ledger distinction.
148
- const { fn } = fakeController();
149
- const exec = await createAgentExecution(fn, {
150
- agentId: "agt_1",
151
- orgId: "acme",
152
- message: "x",
153
- runtimeEnv: {},
154
- attachments: [],
155
- workspaceFileRefs: [],
156
- workspaceEntries: [],
157
- model: "",
158
- mode: "",
159
- serviceTier: "",
160
- thinking: "disabled",
161
- autoApproveAll: false,
162
- harness: "",
163
- });
164
- expect(exec.spec?.executionConfig?.thinkingMode).toBe(ThinkingMode.DISABLED);
165
- });
166
-
167
- it("leaves InteractionMode unspecified for agent mode", async () => {
168
- const { fn } = fakeController();
169
- const exec = await createAgentExecution(fn, {
170
- sessionId: "ses_1",
171
- orgId: "acme",
172
- message: "x",
173
- runtimeEnv: {},
174
- attachments: [],
175
- workspaceFileRefs: [],
176
- workspaceEntries: [],
177
- model: "m",
178
- mode: "agent",
179
- serviceTier: "",
180
- thinking: "",
181
- autoApproveAll: false,
182
- harness: "",
183
- });
184
- expect(exec.spec?.sessionId).toBe("ses_1");
185
- expect(exec.spec?.executionConfig?.interactionMode).toBe(InteractionMode.UNSPECIFIED);
186
- });
187
-
188
- it("embeds workspace entries as session_spec (one-call bootstrap) with an empty subject", async () => {
189
- const entry = create(WorkspaceEntrySchema, {
190
- name: "repo",
191
- source: create(WorkspaceSourceSchema, {
192
- source: { case: "localPath", value: create(LocalPathSourceSchema, { path: "/home/user/repo" }) },
193
- }),
194
- });
195
-
196
- const { fn } = fakeController();
197
- const exec = await createAgentExecution(fn, {
198
- agentId: "agt_1",
199
- orgId: "acme",
200
- message: "hi",
201
- runtimeEnv: {},
202
- attachments: [],
203
- workspaceFileRefs: [],
204
- workspaceEntries: [entry],
205
- model: "",
206
- mode: "",
207
- serviceTier: "",
208
- thinking: "",
209
- autoApproveAll: false,
210
- harness: "",
211
- });
212
-
213
- expect(exec.spec?.sessionId).toBe("");
214
- expect(exec.spec?.sessionSpec?.workspaceEntries).toEqual([entry]);
215
- // Subject stays empty so the server defaults its sentinel and the async
216
- // title activity generates a real one.
217
- expect(exec.spec?.sessionSpec?.subject).toBe("");
218
- // No harness opinion: the field stays UNSPECIFIED so the server default
219
- // (native) applies — a workspace-only run is byte-identical to before
220
- // the --harness flag existed.
221
- expect(exec.spec?.sessionSpec?.harness).toBe(Harness.UNSPECIFIED);
222
- });
223
-
224
- it("omits session_spec when there are no workspace entries and no harness (wire-shape regression pin)", async () => {
225
- // The pre---harness wire shape for a plain run: NO embedded session_spec
226
- // at all. If this pin fails, plain runs have started carrying a spec they
227
- // never carried before — a silent contract change, not a feature.
228
- const { fn } = fakeController();
229
- const exec = await createAgentExecution(fn, {
230
- agentId: "agt_1",
231
- orgId: "acme",
232
- message: "hi",
233
- runtimeEnv: {},
234
- attachments: [],
235
- workspaceFileRefs: [],
236
- workspaceEntries: [],
237
- model: "",
238
- mode: "",
239
- serviceTier: "",
240
- thinking: "",
241
- autoApproveAll: false,
242
- harness: "",
243
- });
244
- expect(exec.spec?.sessionSpec).toBeUndefined();
245
- });
246
-
247
- it("stamps cursor harness on a session_spec created just for it (oss#293)", async () => {
248
- const { fn } = fakeController();
249
- const exec = await createAgentExecution(fn, {
250
- agentId: "agt_1",
251
- orgId: "acme",
252
- message: "hi",
253
- runtimeEnv: {},
254
- attachments: [],
255
- workspaceFileRefs: [],
256
- workspaceEntries: [],
257
- model: "",
258
- mode: "",
259
- serviceTier: "",
260
- thinking: "",
261
- autoApproveAll: false,
262
- harness: "cursor",
263
- });
264
- // Harness alone justifies the embedded spec: the server clones it onto
265
- // the auto-created session (the one-call bootstrap contract).
266
- expect(exec.spec?.sessionSpec?.harness).toBe(Harness.CURSOR);
267
- expect(exec.spec?.sessionSpec?.workspaceEntries).toEqual([]);
268
- });
269
-
270
- it("stamps an explicit native harness rather than leaving it unspecified", async () => {
271
- // "native" may be a deliberate per-run escape from the account's
272
- // default_harness preference — it must survive on the wire so it beats
273
- // any future change to the server-side default (D3).
274
- const { fn } = fakeController();
275
- const exec = await createAgentExecution(fn, {
276
- agentId: "agt_1",
277
- orgId: "acme",
278
- message: "hi",
279
- runtimeEnv: {},
280
- attachments: [],
281
- workspaceFileRefs: [],
282
- workspaceEntries: [],
283
- model: "",
284
- mode: "",
285
- serviceTier: "",
286
- thinking: "",
287
- autoApproveAll: false,
288
- harness: "native",
289
- });
290
- expect(exec.spec?.sessionSpec?.harness).toBe(Harness.NATIVE);
291
- });
292
-
293
- it("carries harness and workspace entries together on one session_spec", async () => {
294
- const entry = create(WorkspaceEntrySchema, {
295
- name: "repo",
296
- source: create(WorkspaceSourceSchema, {
297
- source: { case: "localPath", value: create(LocalPathSourceSchema, { path: "/home/user/repo" }) },
298
- }),
299
- });
300
-
301
- const { fn } = fakeController();
302
- const exec = await createAgentExecution(fn, {
303
- agentId: "agt_1",
304
- orgId: "acme",
305
- message: "hi",
306
- runtimeEnv: {},
307
- attachments: [],
308
- workspaceFileRefs: [],
309
- workspaceEntries: [entry],
310
- model: "",
311
- mode: "",
312
- serviceTier: "",
313
- thinking: "",
314
- autoApproveAll: false,
315
- harness: "cursor",
316
- });
317
- expect(exec.spec?.sessionSpec?.harness).toBe(Harness.CURSOR);
318
- expect(exec.spec?.sessionSpec?.workspaceEntries).toEqual([entry]);
319
- });
320
- });
321
-
322
- describe("createWorkflowExecution", () => {
323
- it("builds a workflow execution with the trigger message", async () => {
324
- const { fn } = fakeController();
325
- const exec = await createWorkflowExecution(fn, {
326
- workflowId: "wfl_1",
327
- orgId: "acme",
328
- message: "",
329
- runtimeEnv: { K: { value: "v", isSecret: false } },
330
- });
331
- expect(exec.kind).toBe("WorkflowExecution");
332
- expect(exec.spec?.workflowId).toBe("wfl_1");
333
- expect(exec.spec?.triggerMessage).toBe("execute");
334
- expect(exec.spec?.runtimeEnv.K).toMatchObject({ value: "v", isSecret: false });
335
- });
336
- });
@@ -1,131 +0,0 @@
1
- // Unit tests for runtime-env assembly: dotenv parsing, flag parsing, precedence,
2
- // and quote/escape handling. The precedence ordering is a wire-parity contract
3
- // with the Go CLI, so it gets dedicated coverage.
4
-
5
- import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
6
- import { tmpdir } from "node:os";
7
- import { join } from "node:path";
8
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
9
- import { loadAndMergeEnv } from "./env.js";
10
-
11
- let dir: string;
12
- beforeEach(() => {
13
- dir = mkdtempSync(join(tmpdir(), "env-test-"));
14
- });
15
- afterEach(() => {
16
- rmSync(dir, { recursive: true, force: true });
17
- });
18
-
19
- function writeFile(name: string, contents: string): string {
20
- const path = join(dir, name);
21
- writeFileSync(path, contents);
22
- return path;
23
- }
24
-
25
- const NONE = { envFlags: [], secretFlags: [], envFiles: [], secretFiles: [] };
26
-
27
- describe("loadAndMergeEnv flags", () => {
28
- it("parses plain KEY=VALUE env flags as non-secrets", () => {
29
- expect(loadAndMergeEnv({ ...NONE, envFlags: ["FOO=bar", "BAZ=qux"] })).toEqual({
30
- FOO: { value: "bar", isSecret: false },
31
- BAZ: { value: "qux", isSecret: false },
32
- });
33
- });
34
-
35
- it("parses secret flags as secrets", () => {
36
- expect(loadAndMergeEnv({ ...NONE, secretFlags: ["TOKEN=abc"] })).toEqual({
37
- TOKEN: { value: "abc", isSecret: true },
38
- });
39
- });
40
-
41
- it("rejects a flag without '='", () => {
42
- expect(() => loadAndMergeEnv({ ...NONE, envFlags: ["NOEQUALS"] })).toThrow(/missing '=' separator/);
43
- });
44
-
45
- it("rejects an invalid key", () => {
46
- expect(() => loadAndMergeEnv({ ...NONE, envFlags: ["1BAD=x"] })).toThrow(/invalid key/);
47
- });
48
-
49
- it("keeps everything after the first '=' as the value", () => {
50
- expect(loadAndMergeEnv({ ...NONE, envFlags: ["URL=https://a.b/c?d=e"] })).toEqual({
51
- URL: { value: "https://a.b/c?d=e", isSecret: false },
52
- });
53
- });
54
- });
55
-
56
- describe("loadAndMergeEnv files", () => {
57
- it("parses comments, blanks, export prefix, and quoted values", () => {
58
- const path = writeFile(
59
- ".env",
60
- ["# comment", "", "export FOO=bar", 'QUOTED="hello world"', "SINGLE='single'"].join("\n"),
61
- );
62
- expect(loadAndMergeEnv({ ...NONE, envFiles: [path] })).toEqual({
63
- FOO: { value: "bar", isSecret: false },
64
- QUOTED: { value: "hello world", isSecret: false },
65
- SINGLE: { value: "single", isSecret: false },
66
- });
67
- });
68
-
69
- it("treats secret files as all-secret", () => {
70
- const path = writeFile("secrets.env", "API_KEY=xyz\n");
71
- expect(loadAndMergeEnv({ ...NONE, secretFiles: [path] })).toEqual({
72
- API_KEY: { value: "xyz", isSecret: true },
73
- });
74
- });
75
-
76
- it("reports the file and line on a parse error", () => {
77
- const path = writeFile(".env", "GOOD=1\nBADLINE\n");
78
- expect(() => loadAndMergeEnv({ ...NONE, envFiles: [path] })).toThrow(/:2:/);
79
- });
80
-
81
- it("errors clearly when a file is missing", () => {
82
- expect(() => loadAndMergeEnv({ ...NONE, envFiles: [join(dir, "nope.env")] })).toThrow(
83
- /failed to open environment file/,
84
- );
85
- });
86
- });
87
-
88
- describe("loadAndMergeEnv precedence (later wins)", () => {
89
- it("layers env-files < secret-files < --env < --secret", () => {
90
- const envFile = writeFile("a.env", "K=from-env-file\n");
91
- const secretFile = writeFile("b.env", "K=from-secret-file\n");
92
- // secret-file beats env-file:
93
- expect(loadAndMergeEnv({ ...NONE, envFiles: [envFile], secretFiles: [secretFile] })).toEqual({
94
- K: { value: "from-secret-file", isSecret: true },
95
- });
96
- // --env beats secret-file:
97
- expect(
98
- loadAndMergeEnv({ ...NONE, secretFiles: [secretFile], envFlags: ["K=from-env-flag"] }),
99
- ).toEqual({ K: { value: "from-env-flag", isSecret: false } });
100
- // --secret beats --env:
101
- expect(loadAndMergeEnv({ ...NONE, envFlags: ["K=from-env"], secretFlags: ["K=from-secret"] })).toEqual({
102
- K: { value: "from-secret", isSecret: true },
103
- });
104
- });
105
-
106
- it("applies later files within the same tier last", () => {
107
- const first = writeFile("first.env", "K=first\n");
108
- const second = writeFile("second.env", "K=second\n");
109
- expect(loadAndMergeEnv({ ...NONE, envFiles: [first, second] })).toEqual({
110
- K: { value: "second", isSecret: false },
111
- });
112
- });
113
- });
114
-
115
- describe("escape handling matches Go's single-pass replacer", () => {
116
- it("does not double-process a literal backslash-n", () => {
117
- // "\\n" in the file is backslash + backslash + n; Go yields backslash + n,
118
- // NOT a newline. A naive chained replace would wrongly produce a newline.
119
- const path = writeFile(".env", 'K="\\\\n"\n');
120
- expect(loadAndMergeEnv({ ...NONE, envFiles: [path] })).toEqual({
121
- K: { value: "\\n", isSecret: false },
122
- });
123
- });
124
-
125
- it("unescapes real escape sequences", () => {
126
- const path = writeFile(".env", 'K="a\\tb\\nc"\n');
127
- expect(loadAndMergeEnv({ ...NONE, envFiles: [path] })).toEqual({
128
- K: { value: "a\tb\nc", isSecret: false },
129
- });
130
- });
131
- });
@@ -1,79 +0,0 @@
1
- import { create } from "@bufbuild/protobuf";
2
- import {
3
- WorkspaceEntrySchema,
4
- } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
5
- import { describe, expect, it } from "vitest";
6
- import { renderSessionHeader, workspaceNames } from "./header.js";
7
-
8
- function capture(): { out: { write(c: string): void; isTTY: boolean }; text: () => string } {
9
- let buf = "";
10
- return {
11
- out: { write: (c: string) => void (buf += c), isTTY: false },
12
- text: () => buf,
13
- };
14
- }
15
-
16
- describe("renderSessionHeader", () => {
17
- it("omits empty fields and aligns labels", () => {
18
- const { out, text } = capture();
19
- renderSessionHeader(out, { agentName: "Reviewer", sessionId: "ses_abc", model: "", mode: "", workspaces: [] });
20
- expect(text()).toBe("Agent: Reviewer\nSession: ses_abc\n\n");
21
- });
22
-
23
- it("surfaces plan mode but not agent/default", () => {
24
- const plan = capture();
25
- renderSessionHeader(plan.out, { agentName: "", sessionId: "", model: "", mode: "plan", workspaces: [] });
26
- expect(plan.text()).toContain("Mode:");
27
- expect(plan.text()).toContain("Plan (read-only)");
28
-
29
- const agent = capture();
30
- renderSessionHeader(agent.out, { agentName: "", sessionId: "s", model: "", mode: "agent", workspaces: [] });
31
- expect(agent.text()).not.toContain("Mode:");
32
- });
33
-
34
- it("surfaces the cursor harness but not native/default (oss#293 D2 visibility)", () => {
35
- // A cursor session may have been selected by the account preference, not
36
- // a flag — the header is the CLI's only pre-stream channel to say so.
37
- const cursor = capture();
38
- renderSessionHeader(cursor.out, { agentName: "", sessionId: "s", model: "", mode: "", harness: "cursor", workspaces: [] });
39
- expect(cursor.text()).toContain("Harness:");
40
- expect(cursor.text()).toContain("Cursor");
41
-
42
- // Native (explicit or defaulted) stays implicit, like agent mode.
43
- const native = capture();
44
- renderSessionHeader(native.out, { agentName: "", sessionId: "s", model: "", mode: "", harness: "native", workspaces: [] });
45
- expect(native.text()).not.toContain("Harness:");
46
-
47
- const unset = capture();
48
- renderSessionHeader(unset.out, { agentName: "", sessionId: "s", model: "", mode: "", workspaces: [] });
49
- expect(unset.text()).not.toContain("Harness:");
50
- });
51
-
52
- it("indents extra workspaces under the first", () => {
53
- const { out, text } = capture();
54
- renderSessionHeader(out, {
55
- agentName: "",
56
- sessionId: "",
57
- model: "",
58
- mode: "",
59
- workspaces: ["app", "infra"],
60
- });
61
- expect(text()).toBe("Workspaces: app\n infra\n\n");
62
- });
63
-
64
- it("prints nothing when every field is empty", () => {
65
- const { out, text } = capture();
66
- renderSessionHeader(out, { agentName: "", sessionId: "", model: "", mode: "", workspaces: [] });
67
- expect(text()).toBe("");
68
- });
69
- });
70
-
71
- describe("workspaceNames", () => {
72
- it("extracts the derived name from each entry", () => {
73
- const entries = [
74
- create(WorkspaceEntrySchema, { name: "app" }),
75
- create(WorkspaceEntrySchema, { name: "infra" }),
76
- ];
77
- expect(workspaceNames(entries)).toEqual(["app", "infra"]);
78
- });
79
- });