gipity 1.0.347 → 1.0.356

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 (390) hide show
  1. package/README.md +1 -1
  2. package/dist/adopt-cwd.js +1 -0
  3. package/dist/commands/add.js +136 -9
  4. package/dist/commands/logs.js +79 -0
  5. package/dist/commands/page-eval.js +31 -0
  6. package/dist/commands/page-inspect.js +91 -62
  7. package/dist/commands/page-screenshot.js +1 -1
  8. package/dist/commands/page.js +18 -0
  9. package/dist/commands/project.js +1 -0
  10. package/dist/commands/workflow.js +63 -16
  11. package/dist/flag-aliases.js +41 -2
  12. package/dist/index.js +3 -4
  13. package/dist/knowledge.js +5 -4
  14. package/dist/project-setup.js +24 -0
  15. package/dist/setup.js +1 -1
  16. package/dist/template-vars.js +156 -0
  17. package/package.json +7 -6
  18. package/dist/__tests__/adopt-cwd.test.d.ts +0 -1
  19. package/dist/__tests__/adopt-cwd.test.js +0 -176
  20. package/dist/__tests__/adopt-cwd.test.js.map +0 -1
  21. package/dist/__tests__/capture-transcript.test.d.ts +0 -1
  22. package/dist/__tests__/capture-transcript.test.js +0 -92
  23. package/dist/__tests__/capture-transcript.test.js.map +0 -1
  24. package/dist/__tests__/claude-noninteractive.test.d.ts +0 -1
  25. package/dist/__tests__/claude-noninteractive.test.js +0 -92
  26. package/dist/__tests__/claude-noninteractive.test.js.map +0 -1
  27. package/dist/__tests__/claude-trust.test.d.ts +0 -1
  28. package/dist/__tests__/claude-trust.test.js +0 -71
  29. package/dist/__tests__/claude-trust.test.js.map +0 -1
  30. package/dist/__tests__/cli-cmd-add.test.d.ts +0 -1
  31. package/dist/__tests__/cli-cmd-add.test.js +0 -45
  32. package/dist/__tests__/cli-cmd-add.test.js.map +0 -1
  33. package/dist/__tests__/cli-cmd-agent.test.d.ts +0 -1
  34. package/dist/__tests__/cli-cmd-agent.test.js +0 -76
  35. package/dist/__tests__/cli-cmd-agent.test.js.map +0 -1
  36. package/dist/__tests__/cli-cmd-approval.test.d.ts +0 -1
  37. package/dist/__tests__/cli-cmd-approval.test.js +0 -47
  38. package/dist/__tests__/cli-cmd-approval.test.js.map +0 -1
  39. package/dist/__tests__/cli-cmd-audit.test.d.ts +0 -1
  40. package/dist/__tests__/cli-cmd-audit.test.js +0 -33
  41. package/dist/__tests__/cli-cmd-audit.test.js.map +0 -1
  42. package/dist/__tests__/cli-cmd-chat.test.d.ts +0 -1
  43. package/dist/__tests__/cli-cmd-chat.test.js +0 -94
  44. package/dist/__tests__/cli-cmd-chat.test.js.map +0 -1
  45. package/dist/__tests__/cli-cmd-credits.test.d.ts +0 -1
  46. package/dist/__tests__/cli-cmd-credits.test.js +0 -66
  47. package/dist/__tests__/cli-cmd-credits.test.js.map +0 -1
  48. package/dist/__tests__/cli-cmd-db.test.d.ts +0 -1
  49. package/dist/__tests__/cli-cmd-db.test.js +0 -95
  50. package/dist/__tests__/cli-cmd-db.test.js.map +0 -1
  51. package/dist/__tests__/cli-cmd-deploy.test.d.ts +0 -1
  52. package/dist/__tests__/cli-cmd-deploy.test.js +0 -53
  53. package/dist/__tests__/cli-cmd-deploy.test.js.map +0 -1
  54. package/dist/__tests__/cli-cmd-domain.test.d.ts +0 -1
  55. package/dist/__tests__/cli-cmd-domain.test.js +0 -73
  56. package/dist/__tests__/cli-cmd-domain.test.js.map +0 -1
  57. package/dist/__tests__/cli-cmd-email.test.d.ts +0 -1
  58. package/dist/__tests__/cli-cmd-email.test.js +0 -31
  59. package/dist/__tests__/cli-cmd-email.test.js.map +0 -1
  60. package/dist/__tests__/cli-cmd-file.test.d.ts +0 -1
  61. package/dist/__tests__/cli-cmd-file.test.js +0 -86
  62. package/dist/__tests__/cli-cmd-file.test.js.map +0 -1
  63. package/dist/__tests__/cli-cmd-fn.test.d.ts +0 -1
  64. package/dist/__tests__/cli-cmd-fn.test.js +0 -50
  65. package/dist/__tests__/cli-cmd-fn.test.js.map +0 -1
  66. package/dist/__tests__/cli-cmd-generate.test.d.ts +0 -1
  67. package/dist/__tests__/cli-cmd-generate.test.js +0 -46
  68. package/dist/__tests__/cli-cmd-generate.test.js.map +0 -1
  69. package/dist/__tests__/cli-cmd-gmail.test.d.ts +0 -1
  70. package/dist/__tests__/cli-cmd-gmail.test.js +0 -49
  71. package/dist/__tests__/cli-cmd-gmail.test.js.map +0 -1
  72. package/dist/__tests__/cli-cmd-info.test.d.ts +0 -1
  73. package/dist/__tests__/cli-cmd-info.test.js +0 -52
  74. package/dist/__tests__/cli-cmd-info.test.js.map +0 -1
  75. package/dist/__tests__/cli-cmd-init.test.d.ts +0 -1
  76. package/dist/__tests__/cli-cmd-init.test.js +0 -76
  77. package/dist/__tests__/cli-cmd-init.test.js.map +0 -1
  78. package/dist/__tests__/cli-cmd-job.test.d.ts +0 -1
  79. package/dist/__tests__/cli-cmd-job.test.js +0 -204
  80. package/dist/__tests__/cli-cmd-job.test.js.map +0 -1
  81. package/dist/__tests__/cli-cmd-location.test.d.ts +0 -1
  82. package/dist/__tests__/cli-cmd-location.test.js +0 -58
  83. package/dist/__tests__/cli-cmd-location.test.js.map +0 -1
  84. package/dist/__tests__/cli-cmd-login.test.d.ts +0 -1
  85. package/dist/__tests__/cli-cmd-login.test.js +0 -41
  86. package/dist/__tests__/cli-cmd-login.test.js.map +0 -1
  87. package/dist/__tests__/cli-cmd-logout.test.d.ts +0 -1
  88. package/dist/__tests__/cli-cmd-logout.test.js +0 -20
  89. package/dist/__tests__/cli-cmd-logout.test.js.map +0 -1
  90. package/dist/__tests__/cli-cmd-logs.test.d.ts +0 -1
  91. package/dist/__tests__/cli-cmd-logs.test.js +0 -40
  92. package/dist/__tests__/cli-cmd-logs.test.js.map +0 -1
  93. package/dist/__tests__/cli-cmd-memory.test.d.ts +0 -1
  94. package/dist/__tests__/cli-cmd-memory.test.js +0 -58
  95. package/dist/__tests__/cli-cmd-memory.test.js.map +0 -1
  96. package/dist/__tests__/cli-cmd-page-inspect.test.d.ts +0 -1
  97. package/dist/__tests__/cli-cmd-page-inspect.test.js +0 -47
  98. package/dist/__tests__/cli-cmd-page-inspect.test.js.map +0 -1
  99. package/dist/__tests__/cli-cmd-plan.test.d.ts +0 -1
  100. package/dist/__tests__/cli-cmd-plan.test.js +0 -81
  101. package/dist/__tests__/cli-cmd-plan.test.js.map +0 -1
  102. package/dist/__tests__/cli-cmd-project.test.d.ts +0 -1
  103. package/dist/__tests__/cli-cmd-project.test.js +0 -61
  104. package/dist/__tests__/cli-cmd-project.test.js.map +0 -1
  105. package/dist/__tests__/cli-cmd-rbac.test.d.ts +0 -1
  106. package/dist/__tests__/cli-cmd-rbac.test.js +0 -39
  107. package/dist/__tests__/cli-cmd-rbac.test.js.map +0 -1
  108. package/dist/__tests__/cli-cmd-realtime.test.d.ts +0 -1
  109. package/dist/__tests__/cli-cmd-realtime.test.js +0 -51
  110. package/dist/__tests__/cli-cmd-realtime.test.js.map +0 -1
  111. package/dist/__tests__/cli-cmd-records.test.d.ts +0 -1
  112. package/dist/__tests__/cli-cmd-records.test.js +0 -67
  113. package/dist/__tests__/cli-cmd-records.test.js.map +0 -1
  114. package/dist/__tests__/cli-cmd-relay.test.d.ts +0 -1
  115. package/dist/__tests__/cli-cmd-relay.test.js +0 -100
  116. package/dist/__tests__/cli-cmd-relay.test.js.map +0 -1
  117. package/dist/__tests__/cli-cmd-sandbox.test.d.ts +0 -1
  118. package/dist/__tests__/cli-cmd-sandbox.test.js +0 -46
  119. package/dist/__tests__/cli-cmd-sandbox.test.js.map +0 -1
  120. package/dist/__tests__/cli-cmd-scaffold.test.d.ts +0 -1
  121. package/dist/__tests__/cli-cmd-scaffold.test.js +0 -30
  122. package/dist/__tests__/cli-cmd-scaffold.test.js.map +0 -1
  123. package/dist/__tests__/cli-cmd-skill.test.d.ts +0 -1
  124. package/dist/__tests__/cli-cmd-skill.test.js +0 -40
  125. package/dist/__tests__/cli-cmd-skill.test.js.map +0 -1
  126. package/dist/__tests__/cli-cmd-test.test.d.ts +0 -1
  127. package/dist/__tests__/cli-cmd-test.test.js +0 -58
  128. package/dist/__tests__/cli-cmd-test.test.js.map +0 -1
  129. package/dist/__tests__/cli-cmd-workflow.test.d.ts +0 -1
  130. package/dist/__tests__/cli-cmd-workflow.test.js +0 -84
  131. package/dist/__tests__/cli-cmd-workflow.test.js.map +0 -1
  132. package/dist/__tests__/cli-e2e-live.test.d.ts +0 -1
  133. package/dist/__tests__/cli-e2e-live.test.js +0 -144
  134. package/dist/__tests__/cli-e2e-live.test.js.map +0 -1
  135. package/dist/__tests__/cli-smoke.test.d.ts +0 -1
  136. package/dist/__tests__/cli-smoke.test.js +0 -69
  137. package/dist/__tests__/cli-smoke.test.js.map +0 -1
  138. package/dist/__tests__/config.test.d.ts +0 -1
  139. package/dist/__tests__/config.test.js +0 -95
  140. package/dist/__tests__/config.test.js.map +0 -1
  141. package/dist/__tests__/flag-aliases.test.d.ts +0 -1
  142. package/dist/__tests__/flag-aliases.test.js +0 -33
  143. package/dist/__tests__/flag-aliases.test.js.map +0 -1
  144. package/dist/__tests__/helpers/mock-server.d.ts +0 -52
  145. package/dist/__tests__/helpers/mock-server.js +0 -86
  146. package/dist/__tests__/helpers/mock-server.js.map +0 -1
  147. package/dist/__tests__/helpers/spawn-cli.d.ts +0 -30
  148. package/dist/__tests__/helpers/spawn-cli.js +0 -72
  149. package/dist/__tests__/helpers/spawn-cli.js.map +0 -1
  150. package/dist/__tests__/helpers/test-home.d.ts +0 -22
  151. package/dist/__tests__/helpers/test-home.js +0 -35
  152. package/dist/__tests__/helpers/test-home.js.map +0 -1
  153. package/dist/__tests__/hook-capture.test.d.ts +0 -1
  154. package/dist/__tests__/hook-capture.test.js +0 -65
  155. package/dist/__tests__/hook-capture.test.js.map +0 -1
  156. package/dist/__tests__/prompts.test.d.ts +0 -1
  157. package/dist/__tests__/prompts.test.js +0 -129
  158. package/dist/__tests__/prompts.test.js.map +0 -1
  159. package/dist/__tests__/push-cas.test.d.ts +0 -1
  160. package/dist/__tests__/push-cas.test.js +0 -133
  161. package/dist/__tests__/push-cas.test.js.map +0 -1
  162. package/dist/__tests__/relay-bridge-abort.test.d.ts +0 -1
  163. package/dist/__tests__/relay-bridge-abort.test.js +0 -65
  164. package/dist/__tests__/relay-bridge-abort.test.js.map +0 -1
  165. package/dist/__tests__/relay-daemon.test.d.ts +0 -1
  166. package/dist/__tests__/relay-daemon.test.js +0 -232
  167. package/dist/__tests__/relay-daemon.test.js.map +0 -1
  168. package/dist/__tests__/relay-ingest-contract.test.d.ts +0 -1
  169. package/dist/__tests__/relay-ingest-contract.test.js +0 -76
  170. package/dist/__tests__/relay-ingest-contract.test.js.map +0 -1
  171. package/dist/__tests__/relay-installers.test.d.ts +0 -1
  172. package/dist/__tests__/relay-installers.test.js +0 -95
  173. package/dist/__tests__/relay-installers.test.js.map +0 -1
  174. package/dist/__tests__/relay-machine-id.test.d.ts +0 -1
  175. package/dist/__tests__/relay-machine-id.test.js +0 -41
  176. package/dist/__tests__/relay-machine-id.test.js.map +0 -1
  177. package/dist/__tests__/relay-pair.test.d.ts +0 -1
  178. package/dist/__tests__/relay-pair.test.js.map +0 -1
  179. package/dist/__tests__/relay-redact.test.d.ts +0 -1
  180. package/dist/__tests__/relay-redact.test.js +0 -78
  181. package/dist/__tests__/relay-redact.test.js.map +0 -1
  182. package/dist/__tests__/relay-state.test.d.ts +0 -1
  183. package/dist/__tests__/relay-state.test.js +0 -85
  184. package/dist/__tests__/relay-state.test.js.map +0 -1
  185. package/dist/__tests__/setup-skills-block.test.d.ts +0 -1
  186. package/dist/__tests__/setup-skills-block.test.js +0 -65
  187. package/dist/__tests__/setup-skills-block.test.js.map +0 -1
  188. package/dist/__tests__/stream-json.test.d.ts +0 -1
  189. package/dist/__tests__/stream-json.test.js +0 -186
  190. package/dist/__tests__/stream-json.test.js.map +0 -1
  191. package/dist/__tests__/sync-apply.test.d.ts +0 -1
  192. package/dist/__tests__/sync-apply.test.js +0 -457
  193. package/dist/__tests__/sync-apply.test.js.map +0 -1
  194. package/dist/__tests__/sync-lock.test.d.ts +0 -1
  195. package/dist/__tests__/sync-lock.test.js +0 -105
  196. package/dist/__tests__/sync-lock.test.js.map +0 -1
  197. package/dist/__tests__/sync.test.d.ts +0 -1
  198. package/dist/__tests__/sync.test.js +0 -160
  199. package/dist/__tests__/sync.test.js.map +0 -1
  200. package/dist/__tests__/updater.test.d.ts +0 -1
  201. package/dist/__tests__/updater.test.js +0 -95
  202. package/dist/__tests__/updater.test.js.map +0 -1
  203. package/dist/__tests__/upload.test.d.ts +0 -1
  204. package/dist/__tests__/upload.test.js +0 -92
  205. package/dist/__tests__/upload.test.js.map +0 -1
  206. package/dist/__tests__/utils.test.d.ts +0 -1
  207. package/dist/__tests__/utils.test.js +0 -69
  208. package/dist/__tests__/utils.test.js.map +0 -1
  209. package/dist/adopt-cwd.d.ts +0 -69
  210. package/dist/adopt-cwd.js.map +0 -1
  211. package/dist/api.d.ts +0 -41
  212. package/dist/api.js.map +0 -1
  213. package/dist/auth.d.ts +0 -17
  214. package/dist/auth.js.map +0 -1
  215. package/dist/banner.d.ts +0 -6
  216. package/dist/banner.js.map +0 -1
  217. package/dist/capture/sources/claude-code.d.ts +0 -78
  218. package/dist/capture/sources/claude-code.js.map +0 -1
  219. package/dist/coding-guidelines.d.ts +0 -9
  220. package/dist/coding-guidelines.js.map +0 -1
  221. package/dist/colors.d.ts +0 -22
  222. package/dist/colors.js.map +0 -1
  223. package/dist/commands/add.d.ts +0 -2
  224. package/dist/commands/add.js.map +0 -1
  225. package/dist/commands/agent.d.ts +0 -2
  226. package/dist/commands/agent.js.map +0 -1
  227. package/dist/commands/api.d.ts +0 -1
  228. package/dist/commands/api.js.map +0 -1
  229. package/dist/commands/approval.d.ts +0 -2
  230. package/dist/commands/approval.js.map +0 -1
  231. package/dist/commands/audit.d.ts +0 -2
  232. package/dist/commands/audit.js.map +0 -1
  233. package/dist/commands/browser.d.ts +0 -2
  234. package/dist/commands/browser.js.map +0 -1
  235. package/dist/commands/chat.d.ts +0 -2
  236. package/dist/commands/chat.js.map +0 -1
  237. package/dist/commands/checkpoint.d.ts +0 -2
  238. package/dist/commands/checkpoint.js.map +0 -1
  239. package/dist/commands/claude.d.ts +0 -16
  240. package/dist/commands/claude.js.map +0 -1
  241. package/dist/commands/credits.d.ts +0 -2
  242. package/dist/commands/credits.js.map +0 -1
  243. package/dist/commands/db.d.ts +0 -2
  244. package/dist/commands/db.js.map +0 -1
  245. package/dist/commands/deploy.d.ts +0 -2
  246. package/dist/commands/deploy.js.map +0 -1
  247. package/dist/commands/doctor.d.ts +0 -2
  248. package/dist/commands/doctor.js.map +0 -1
  249. package/dist/commands/domain.d.ts +0 -2
  250. package/dist/commands/domain.js.map +0 -1
  251. package/dist/commands/email.d.ts +0 -2
  252. package/dist/commands/email.js.map +0 -1
  253. package/dist/commands/file.d.ts +0 -2
  254. package/dist/commands/file.js.map +0 -1
  255. package/dist/commands/fn.d.ts +0 -2
  256. package/dist/commands/fn.js.map +0 -1
  257. package/dist/commands/generate.d.ts +0 -2
  258. package/dist/commands/generate.js.map +0 -1
  259. package/dist/commands/gmail.d.ts +0 -2
  260. package/dist/commands/gmail.js.map +0 -1
  261. package/dist/commands/hook-capture.d.ts +0 -15
  262. package/dist/commands/hook-capture.js.map +0 -1
  263. package/dist/commands/init.d.ts +0 -2
  264. package/dist/commands/init.js.map +0 -1
  265. package/dist/commands/job.d.ts +0 -2
  266. package/dist/commands/job.js.map +0 -1
  267. package/dist/commands/location.d.ts +0 -9
  268. package/dist/commands/location.js.map +0 -1
  269. package/dist/commands/login.d.ts +0 -2
  270. package/dist/commands/login.js.map +0 -1
  271. package/dist/commands/logout.d.ts +0 -2
  272. package/dist/commands/logout.js.map +0 -1
  273. package/dist/commands/logs.d.ts +0 -2
  274. package/dist/commands/logs.js.map +0 -1
  275. package/dist/commands/memory.d.ts +0 -2
  276. package/dist/commands/memory.js.map +0 -1
  277. package/dist/commands/page-inspect.d.ts +0 -2
  278. package/dist/commands/page-inspect.js.map +0 -1
  279. package/dist/commands/page-screenshot.d.ts +0 -2
  280. package/dist/commands/page-screenshot.js.map +0 -1
  281. package/dist/commands/plan.d.ts +0 -2
  282. package/dist/commands/plan.js.map +0 -1
  283. package/dist/commands/project.d.ts +0 -2
  284. package/dist/commands/project.js.map +0 -1
  285. package/dist/commands/push.d.ts +0 -2
  286. package/dist/commands/push.js.map +0 -1
  287. package/dist/commands/rbac.d.ts +0 -2
  288. package/dist/commands/rbac.js.map +0 -1
  289. package/dist/commands/realtime.d.ts +0 -2
  290. package/dist/commands/realtime.js.map +0 -1
  291. package/dist/commands/records.d.ts +0 -2
  292. package/dist/commands/records.js.map +0 -1
  293. package/dist/commands/relay-install.d.ts +0 -11
  294. package/dist/commands/relay-install.js.map +0 -1
  295. package/dist/commands/relay.d.ts +0 -9
  296. package/dist/commands/relay.js.map +0 -1
  297. package/dist/commands/sandbox.d.ts +0 -2
  298. package/dist/commands/sandbox.js.map +0 -1
  299. package/dist/commands/scaffold.d.ts +0 -2
  300. package/dist/commands/scaffold.js.map +0 -1
  301. package/dist/commands/skill.d.ts +0 -2
  302. package/dist/commands/skill.js.map +0 -1
  303. package/dist/commands/skills.d.ts +0 -2
  304. package/dist/commands/skills.js.map +0 -1
  305. package/dist/commands/start-cc.d.ts +0 -2
  306. package/dist/commands/start-cc.js.map +0 -1
  307. package/dist/commands/status.d.ts +0 -2
  308. package/dist/commands/status.js.map +0 -1
  309. package/dist/commands/sync.d.ts +0 -2
  310. package/dist/commands/sync.js.map +0 -1
  311. package/dist/commands/test.d.ts +0 -2
  312. package/dist/commands/test.js.map +0 -1
  313. package/dist/commands/uninstall.d.ts +0 -10
  314. package/dist/commands/uninstall.js.map +0 -1
  315. package/dist/commands/update.d.ts +0 -2
  316. package/dist/commands/update.js.map +0 -1
  317. package/dist/commands/upload.d.ts +0 -2
  318. package/dist/commands/upload.js.map +0 -1
  319. package/dist/commands/workflow.d.ts +0 -2
  320. package/dist/commands/workflow.js.map +0 -1
  321. package/dist/config.d.ts +0 -39
  322. package/dist/config.js.map +0 -1
  323. package/dist/flag-aliases.d.ts +0 -12
  324. package/dist/flag-aliases.js.map +0 -1
  325. package/dist/gip3dw-guide.d.ts +0 -7
  326. package/dist/gip3dw-guide.js.map +0 -1
  327. package/dist/gipcc.d.ts +0 -2
  328. package/dist/gipcc.js.map +0 -1
  329. package/dist/gipccd.d.ts +0 -2
  330. package/dist/gipccd.js.map +0 -1
  331. package/dist/help-skills.d.ts +0 -7
  332. package/dist/help-skills.js.map +0 -1
  333. package/dist/helpers/command.d.ts +0 -12
  334. package/dist/helpers/command.js.map +0 -1
  335. package/dist/helpers/index.d.ts +0 -6
  336. package/dist/helpers/index.js.map +0 -1
  337. package/dist/helpers/output.d.ts +0 -22
  338. package/dist/helpers/output.js.map +0 -1
  339. package/dist/helpers/sync.d.ts +0 -13
  340. package/dist/helpers/sync.js.map +0 -1
  341. package/dist/hooks/capture-runner.d.ts +0 -24
  342. package/dist/hooks/capture-runner.js.map +0 -1
  343. package/dist/index.d.ts +0 -2
  344. package/dist/index.js.map +0 -1
  345. package/dist/knowledge.d.ts +0 -11
  346. package/dist/knowledge.js.map +0 -1
  347. package/dist/platform-overview.d.ts +0 -9
  348. package/dist/platform-overview.js.map +0 -1
  349. package/dist/project-setup.d.ts +0 -26
  350. package/dist/project-setup.js.map +0 -1
  351. package/dist/prompts.d.ts +0 -80
  352. package/dist/prompts.js.map +0 -1
  353. package/dist/provider-docs.d.ts +0 -27
  354. package/dist/provider-docs.js.map +0 -1
  355. package/dist/relay/daemon.d.ts +0 -47
  356. package/dist/relay/daemon.js.map +0 -1
  357. package/dist/relay/device-http.d.ts +0 -9
  358. package/dist/relay/device-http.js.map +0 -1
  359. package/dist/relay/installers.d.ts +0 -24
  360. package/dist/relay/installers.js.map +0 -1
  361. package/dist/relay/machine-id.d.ts +0 -2
  362. package/dist/relay/machine-id.js.map +0 -1
  363. package/dist/relay/onboarding.d.ts +0 -8
  364. package/dist/relay/onboarding.js.map +0 -1
  365. package/dist/relay/paths.d.ts +0 -5
  366. package/dist/relay/paths.js.map +0 -1
  367. package/dist/relay/redact.d.ts +0 -34
  368. package/dist/relay/redact.js.map +0 -1
  369. package/dist/relay/state.d.ts +0 -39
  370. package/dist/relay/state.js.map +0 -1
  371. package/dist/relay/stream-json.d.ts +0 -105
  372. package/dist/relay/stream-json.js.map +0 -1
  373. package/dist/relay/transcripts.d.ts +0 -60
  374. package/dist/relay/transcripts.js.map +0 -1
  375. package/dist/setup.d.ts +0 -101
  376. package/dist/setup.js.map +0 -1
  377. package/dist/sync.d.ts +0 -74
  378. package/dist/sync.js.map +0 -1
  379. package/dist/updater/bootstrap.d.ts +0 -13
  380. package/dist/updater/bootstrap.js.map +0 -1
  381. package/dist/updater/check.d.ts +0 -12
  382. package/dist/updater/check.js.map +0 -1
  383. package/dist/updater/shim.d.ts +0 -2
  384. package/dist/updater/shim.js.map +0 -1
  385. package/dist/updater/state.d.ts +0 -24
  386. package/dist/updater/state.js.map +0 -1
  387. package/dist/upload.d.ts +0 -40
  388. package/dist/upload.js.map +0 -1
  389. package/dist/utils.d.ts +0 -39
  390. package/dist/utils.js.map +0 -1
@@ -1,144 +0,0 @@
1
- // Real platform e2e tests. Skipped unless GIPITY_E2E=1 is set.
2
- //
3
- // Cost profile: ~$0.001 (one short LLM turn for `chat`); everything else is
4
- // free platform CRUD. Uses dev-bypass auth (magic code 914914) with an
5
- // `ec-` prefixed @914-6.com email so the platform suppresses real outbound
6
- // mail (see platform/CLAUDE.md).
7
- //
8
- // Defaults can be overridden by env:
9
- // GIPITY_E2E=1 enable the suite
10
- // GIPITY_E2E_API_BASE=... default https://a.gipity.ai
11
- // GIPITY_E2E_EMAIL=ec-cli-e2e@914-6.com
12
- // GIPITY_E2E_CODE=914914
13
- import { describe, it, before, after } from 'node:test';
14
- import assert from 'node:assert/strict';
15
- import { mkdtempSync, rmSync, existsSync } from 'fs';
16
- import { tmpdir } from 'os';
17
- import { join } from 'path';
18
- import { runCli, makeTmpHome } from './helpers/spawn-cli.js';
19
- const E2E_ENABLED = process.env['GIPITY_E2E'] === '1';
20
- const API_BASE = process.env['GIPITY_E2E_API_BASE'] ?? 'https://a.gipity.ai';
21
- const EMAIL = process.env['GIPITY_E2E_EMAIL'] ?? 'ec-cli-e2e@914-6.com';
22
- const CODE = process.env['GIPITY_E2E_CODE'] ?? '914914';
23
- // Email convention guard - protect against accidentally invoking real SendGrid.
24
- if (E2E_ENABLED && !EMAIL.startsWith('ec')) {
25
- throw new Error(`E2E test email must start with "ec" to suppress real outbound mail: got "${EMAIL}"`);
26
- }
27
- describe('cli-e2e-live', { skip: !E2E_ENABLED && 'set GIPITY_E2E=1 to run' }, () => {
28
- const tmpHome = makeTmpHome();
29
- const projectDir = mkdtempSync(join(tmpdir(), 'gipity-e2e-proj-'));
30
- const projectSlug = `gip-e2e-${Date.now().toString(36)}`;
31
- const env = { HOME: tmpHome };
32
- // All commands run inside projectDir against the test API base, with our
33
- // throwaway HOME so we never touch the developer's real ~/.gipity/auth.json.
34
- const cli = (args, opts = {}) => runCli(['--api-base', API_BASE, ...args], {
35
- env,
36
- cwd: opts.cwd ?? projectDir,
37
- timeout: opts.timeout ?? 60000,
38
- enableUpdater: false,
39
- });
40
- before(() => {
41
- const r = cli(['login', '--email', EMAIL, '--code', CODE]);
42
- assert.equal(r.status, 0, `login failed: ${r.stderr || r.stdout}`);
43
- });
44
- after(() => {
45
- // Best-effort cleanup; don't fail the whole suite if these go wrong.
46
- try {
47
- cli(['-y', 'project', 'delete', projectSlug]);
48
- }
49
- catch { /* ignore */ }
50
- try {
51
- cli(['logout']);
52
- }
53
- catch { /* ignore */ }
54
- try {
55
- rmSync(tmpHome, { recursive: true, force: true });
56
- }
57
- catch { /* ignore */ }
58
- try {
59
- rmSync(projectDir, { recursive: true, force: true });
60
- }
61
- catch { /* ignore */ }
62
- });
63
- it('1. auth round-trip', () => {
64
- const r = cli(['status', '--json']);
65
- assert.equal(r.status, 0);
66
- const data = JSON.parse(r.stdout);
67
- assert.equal(data.auth?.email, EMAIL);
68
- assert.equal(data.auth?.valid, true);
69
- });
70
- it('2. project lifecycle: init → status shows project', () => {
71
- const r = cli(['init', projectSlug]);
72
- assert.equal(r.status, 0, `init failed: ${r.stderr || r.stdout}`);
73
- const s = cli(['status', '--json']);
74
- const data = JSON.parse(s.stdout);
75
- assert.equal(data.project?.slug, projectSlug);
76
- });
77
- it('3. scaffold --type api creates expected files', () => {
78
- const r = cli(['scaffold', '--type', 'api']);
79
- assert.equal(r.status, 0, `scaffold failed: ${r.stderr || r.stdout}`);
80
- assert.ok(existsSync(join(projectDir, 'gipity.yaml')), 'gipity.yaml missing');
81
- assert.ok(existsSync(join(projectDir, 'functions')), 'functions/ missing');
82
- assert.ok(existsSync(join(projectDir, 'tests')), 'tests/ missing');
83
- });
84
- it('4a. deploy dev succeeds (first deploy)', () => {
85
- const r = cli(['deploy', 'dev'], { timeout: 120000 });
86
- assert.equal(r.status, 0, `deploy failed: ${r.stderr || r.stdout}`);
87
- });
88
- it('4b. deploy dev again is idempotent (no changes)', () => {
89
- const r = cli(['deploy', 'dev'], { timeout: 60000 });
90
- assert.equal(r.status, 0);
91
- // No strict assertion on output text - phases may say "skipped" or "ok"
92
- // depending on whether checksums caught everything. Just confirm exit 0.
93
- });
94
- it('4c. deploy dev --only functions filters phases', () => {
95
- const r = cli(['deploy', 'dev', '--only', 'functions'], { timeout: 60000 });
96
- assert.equal(r.status, 0);
97
- });
98
- it('4d. deploy dev --force re-runs all phases', () => {
99
- const r = cli(['deploy', 'dev', '--force'], { timeout: 120000 });
100
- assert.equal(r.status, 0);
101
- });
102
- it('5a. fn list shows the scaffolded get-weather function', () => {
103
- const r = cli(['fn', 'list', '--json']);
104
- assert.equal(r.status, 0);
105
- const fns = JSON.parse(r.stdout);
106
- assert.ok(Array.isArray(fns));
107
- assert.ok(fns.some((f) => f.name === 'get-weather'), 'get-weather not in fn list');
108
- });
109
- it('5b. fn call get-weather returns weather data', () => {
110
- const r = cli(['fn', 'call', 'get-weather', '{"zip":"94103"}'], { timeout: 30000 });
111
- assert.equal(r.status, 0, `fn call failed: ${r.stderr || r.stdout}`);
112
- assert.match(r.stdout, /temperature|weather|°|condition/i);
113
- });
114
- it('6a. db list succeeds', () => {
115
- const r = cli(['db', 'list', '--json']);
116
- assert.equal(r.status, 0, `db list failed: ${r.stderr || r.stdout}`);
117
- });
118
- it('6b. db query "select 1" returns 1', () => {
119
- const r = cli(['db', 'query', 'select 1 as n', '--json']);
120
- assert.equal(r.status, 0, `db query failed: ${r.stderr || r.stdout}`);
121
- assert.match(r.stdout, /"n"\s*:\s*1/);
122
- });
123
- it('7. chat "what is 2+2?" returns a 4', () => {
124
- const r = cli(['chat', 'what is 2+2? respond with only the number.'], { timeout: 60000 });
125
- assert.equal(r.status, 0, `chat failed: ${r.stderr || r.stdout}`);
126
- assert.match(r.stdout, /\b4\b/);
127
- });
128
- it('8. memory write/read/delete round-trip', () => {
129
- const w = cli(['memory', 'write', 'e2e-topic', 'ping']);
130
- assert.equal(w.status, 0, `memory write failed: ${w.stderr || w.stdout}`);
131
- const r = cli(['memory', 'read', 'e2e-topic']);
132
- assert.equal(r.status, 0);
133
- assert.match(r.stdout, /ping/);
134
- const d = cli(['-y', 'memory', 'delete', 'e2e-topic']);
135
- assert.equal(d.status, 0, `memory delete failed: ${d.stderr || d.stdout}`);
136
- });
137
- it('9. doctor reports sane install info with auth', () => {
138
- const r = cli(['doctor']);
139
- assert.equal(r.status, 0);
140
- assert.match(r.stdout, /Gipity CLI - doctor/);
141
- assert.match(r.stdout, /shim version/);
142
- });
143
- });
144
- //# sourceMappingURL=cli-e2e-live.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-e2e-live.test.js","sourceRoot":"","sources":["../../src/__tests__/cli-e2e-live.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,69 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { readFileSync } from 'fs';
4
- import { fileURLToPath } from 'url';
5
- import { dirname, resolve } from 'path';
6
- import { runCli } from './helpers/spawn-cli.js';
7
- const __dirname = dirname(fileURLToPath(import.meta.url));
8
- const PKG_VERSION = JSON.parse(readFileSync(resolve(__dirname, '..', '..', 'package.json'), 'utf-8')).version;
9
- describe('cli-smoke: --version and --help', () => {
10
- it('--version prints the package version + auth status', () => {
11
- const r = runCli(['--version']);
12
- assert.equal(r.status, 0);
13
- // Branded line: "Gipity v1.2.3"
14
- assert.match(r.stdout, new RegExp(`Gipity\\s+v${PKG_VERSION.replace(/\./g, '\\.')}`));
15
- // Auth status: logged-in, session expired, or never logged in.
16
- assert.match(r.stdout, /Logged in as |Session expired for |Not logged in\. Run: gipity login/);
17
- });
18
- it('--help shows version banner near the top and grouped sections in order', () => {
19
- const r = runCli(['--help']);
20
- assert.equal(r.status, 0);
21
- const out = r.stdout;
22
- assert.match(out, new RegExp(`Gipity CLI\\s+v${PKG_VERSION.replace(/\./g, '\\.')}`));
23
- // Cross-agent positioning line surfaces in top-level help.
24
- assert.match(out, /no MCP server needed/);
25
- const sections = ['Common:', 'Connect:', 'Project:', 'Files:', 'App building:', 'Utilities:', 'Agent:', 'Setup:'];
26
- let lastIdx = -1;
27
- for (const s of sections) {
28
- const idx = out.indexOf(s);
29
- assert.ok(idx > -1, `missing section header: ${s}`);
30
- assert.ok(idx > lastIdx, `section out of order: ${s} appeared before previous one`);
31
- lastIdx = idx;
32
- }
33
- });
34
- it('--help lists doctor and update under Setup', () => {
35
- const r = runCli(['--help']);
36
- const setup = r.stdout.split('Setup:')[1] ?? '';
37
- assert.match(setup, /\bdoctor\b/);
38
- assert.match(setup, /\bupdate\b/);
39
- });
40
- });
41
- describe('cli-smoke: doctor', () => {
42
- it('runs cleanly and reports auto-updates disabled when env is set', () => {
43
- const r = runCli(['doctor']);
44
- assert.equal(r.status, 0);
45
- assert.match(r.stdout, /auto-updates/);
46
- assert.match(r.stdout, /disabled \(DISABLE_AUTOUPDATER=1\)/);
47
- });
48
- });
49
- describe('cli-smoke: error behavior', () => {
50
- it('unknown command exits non-zero', () => {
51
- const r = runCli(['definitely-not-a-real-command']);
52
- assert.notEqual(r.status, 0);
53
- });
54
- it('status without auth prints not-logged-in message', () => {
55
- const r = runCli(['status']);
56
- // status returns 0 even when not logged in (it's a status report)
57
- const combined = r.stdout + r.stderr;
58
- assert.match(combined, /not logged in|Not a Gipity project/i);
59
- });
60
- });
61
- describe('cli-smoke: subcommand --help wiring', () => {
62
- for (const cmd of ['chat', 'deploy', 'db', 'fn', 'memory', 'scaffold', 'login', 'doctor', 'update']) {
63
- it(`gipity ${cmd} --help exits 0`, () => {
64
- const r = runCli([cmd, '--help']);
65
- assert.equal(r.status, 0, `${cmd} --help failed: ${r.stderr}`);
66
- });
67
- }
68
- });
69
- //# sourceMappingURL=cli-smoke.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/cli-smoke.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,95 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { mkdtempSync, mkdirSync, readFileSync, existsSync, rmSync } from 'fs';
4
- import { tmpdir } from 'os';
5
- import { join } from 'path';
6
- import { shouldIgnore, saveConfig, saveConfigAt, clearConfigCache, } from '../config.js';
7
- describe('shouldIgnore', () => {
8
- const patterns = ['node_modules', '.git', '.gipity.json', '.gipity/', '.claude/', '*.log'];
9
- it('ignores exact match', () => {
10
- assert.equal(shouldIgnore('.gipity.json', patterns), true);
11
- });
12
- it('ignores directory name anywhere in path', () => {
13
- assert.equal(shouldIgnore('node_modules', patterns), true);
14
- assert.equal(shouldIgnore('src/node_modules/foo.js', patterns), true);
15
- assert.equal(shouldIgnore('.git', patterns), true);
16
- });
17
- it('ignores prefix match with trailing slash', () => {
18
- assert.equal(shouldIgnore('.gipity/sync-state.json', patterns), true);
19
- assert.equal(shouldIgnore('.claude/settings.json', patterns), true);
20
- });
21
- it('ignores extension match', () => {
22
- assert.equal(shouldIgnore('app.log', patterns), true);
23
- assert.equal(shouldIgnore('logs/error.log', patterns), true);
24
- });
25
- it('does not ignore non-matching paths', () => {
26
- assert.equal(shouldIgnore('src/index.ts', patterns), false);
27
- assert.equal(shouldIgnore('package.json', patterns), false);
28
- assert.equal(shouldIgnore('README.md', patterns), false);
29
- });
30
- it('handles empty patterns', () => {
31
- assert.equal(shouldIgnore('anything.ts', []), false);
32
- });
33
- });
34
- const SAMPLE = {
35
- projectGuid: 'p_Test00000',
36
- projectSlug: 'test-proj',
37
- accountSlug: 'test-acct',
38
- agentGuid: 'a_Test00000',
39
- conversationGuid: null,
40
- apiBase: 'https://a.gipity.ai',
41
- ignore: [],
42
- };
43
- describe('saveConfig / saveConfigAt', () => {
44
- it('saveConfigAt writes .gipity.json at the given directory', () => {
45
- const cwd0 = process.cwd();
46
- const dir = mkdtempSync(join(tmpdir(), 'gipity-cfg-'));
47
- try {
48
- saveConfigAt(dir, SAMPLE);
49
- assert.ok(existsSync(join(dir, '.gipity.json')));
50
- const parsed = JSON.parse(readFileSync(join(dir, '.gipity.json'), 'utf-8'));
51
- assert.equal(parsed.projectSlug, 'test-proj');
52
- }
53
- finally {
54
- process.chdir(cwd0);
55
- clearConfigCache();
56
- rmSync(dir, { recursive: true, force: true });
57
- }
58
- });
59
- it('saveConfig throws - and creates nothing - when there is no config to update', () => {
60
- const cwd0 = process.cwd();
61
- const dir = mkdtempSync(join(tmpdir(), 'gipity-cfg-'));
62
- try {
63
- process.chdir(dir);
64
- clearConfigCache();
65
- assert.throws(() => saveConfig(SAMPLE), /no \.gipity\.json/);
66
- assert.equal(existsSync(join(dir, '.gipity.json')), false, 'saveConfig must never create a new config file');
67
- }
68
- finally {
69
- process.chdir(cwd0);
70
- clearConfigCache();
71
- rmSync(dir, { recursive: true, force: true });
72
- }
73
- });
74
- it('saveConfig updates the ancestor config found via walk-up, not the subdir', () => {
75
- const cwd0 = process.cwd();
76
- const dir = mkdtempSync(join(tmpdir(), 'gipity-cfg-'));
77
- try {
78
- saveConfigAt(dir, SAMPLE);
79
- const sub = join(dir, 'a', 'b');
80
- mkdirSync(sub, { recursive: true });
81
- process.chdir(sub);
82
- clearConfigCache();
83
- saveConfig({ ...SAMPLE, conversationGuid: 'c_Updated000' });
84
- assert.equal(existsSync(join(sub, '.gipity.json')), false, 'saveConfig must not drop a config into the subdirectory');
85
- const parsed = JSON.parse(readFileSync(join(dir, '.gipity.json'), 'utf-8'));
86
- assert.equal(parsed.conversationGuid, 'c_Updated000');
87
- }
88
- finally {
89
- process.chdir(cwd0);
90
- clearConfigCache();
91
- rmSync(dir, { recursive: true, force: true });
92
- }
93
- });
94
- });
95
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,33 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { normalizeAliases } from '../flag-aliases.js';
4
- describe('normalizeAliases', () => {
5
- it('rewrites --out to --output', () => {
6
- assert.deepEqual(normalizeAliases(['node', 'gipity', 'generate', 'image', 'prompt', '--out', 'rice.jpg']), ['node', 'gipity', 'generate', 'image', 'prompt', '--output', 'rice.jpg']);
7
- });
8
- it('leaves canonical --output unchanged', () => {
9
- assert.deepEqual(normalizeAliases(['--output', 'rice.jpg']), ['--output', 'rice.jpg']);
10
- });
11
- it('rewrites --out=value equals form', () => {
12
- assert.deepEqual(normalizeAliases(['--out=rice.jpg']), ['--output=rice.jpg']);
13
- });
14
- it('rewrites --db to --database', () => {
15
- assert.deepEqual(normalizeAliases(['db', 'query', 'select 1', '--db', 'mydb']), ['db', 'query', 'select 1', '--database', 'mydb']);
16
- });
17
- it('rewrites multiple aliases in one argv', () => {
18
- assert.deepEqual(normalizeAliases(['--proj', 'foo', '--aspect', '16:9', '--out', 'x.png']), ['--project', 'foo', '--aspect-ratio', '16:9', '--output', 'x.png']);
19
- });
20
- it('leaves unrelated long flags alone', () => {
21
- assert.deepEqual(normalizeAliases(['--quality', 'high', '--unknown-flag', 'v']), ['--quality', 'high', '--unknown-flag', 'v']);
22
- });
23
- it('does not rewrite short flags', () => {
24
- assert.deepEqual(normalizeAliases(['-o', 'x.png']), ['-o', 'x.png']);
25
- });
26
- it('does not rewrite positional values', () => {
27
- assert.deepEqual(normalizeAliases(['fn', 'call', 'foo', '{"x":"--out"}']), ['fn', 'call', 'foo', '{"x":"--out"}']);
28
- });
29
- it('does not rewrite a flag whose prefix matches an alias', () => {
30
- assert.deepEqual(normalizeAliases(['--output-dir']), ['--output-dir']);
31
- });
32
- });
33
- //# sourceMappingURL=flag-aliases.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flag-aliases.test.js","sourceRoot":"","sources":["../../src/__tests__/flag-aliases.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,EACxF,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAC1C,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CAAC,EACpC,CAAC,mBAAmB,CAAC,CACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAC7D,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EACzE,CAAC,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CACpE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,EAC9D,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAC7C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,EACxD,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,SAAS,CACd,gBAAgB,CAAC,CAAC,cAAc,CAAC,CAAC,EAClC,CAAC,cAAc,CAAC,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Reusable in-process HTTP mock for CLI happy-path tests.
3
- *
4
- * Each test:
5
- * - registers handlers via `mock.on('GET /path', response)` (response can be a value or a function of req)
6
- * - invokes the CLI via runCliAsync with `--api-base http://127.0.0.1:<port>`
7
- * - asserts on stdout/exit code
8
- *
9
- * The universal canary is to also assert `stdout` does NOT contain "undefined"
10
- * - which catches the kind of field-name mismatch we hit with credits/logs.
11
- */
12
- export type MockHandler = {
13
- status?: number;
14
- body?: unknown;
15
- raw?: string;
16
- contentType?: string;
17
- } | ((req: {
18
- method: string;
19
- url: string;
20
- body: unknown;
21
- headers: Record<string, string | string[] | undefined>;
22
- }) => Promise<{
23
- status?: number;
24
- body?: unknown;
25
- raw?: string;
26
- contentType?: string;
27
- }> | {
28
- status?: number;
29
- body?: unknown;
30
- raw?: string;
31
- contentType?: string;
32
- });
33
- export declare class MockServer {
34
- private routes;
35
- private server;
36
- private requestLog;
37
- apiBase: string;
38
- /** Register (or overwrite) a route handler. Key format: 'METHOD /path' (path is exact match, no patterns). */
39
- on(methodAndPath: string, handler: MockHandler): this;
40
- /** Clear all registered routes (call between tests if reusing the server). */
41
- reset(): void;
42
- /** All requests received since the last reset, in arrival order. */
43
- requests(): Array<{
44
- method: string;
45
- url: string;
46
- body: unknown;
47
- }>;
48
- start(): Promise<string>;
49
- stop(): Promise<void>;
50
- }
51
- /** Convenience: start a fresh server with no routes; tests call `mock.on(...)` per scenario. */
52
- export declare function startMockServer(): Promise<MockServer>;
@@ -1,86 +0,0 @@
1
- import { createServer } from 'http';
2
- export class MockServer {
3
- routes = new Map();
4
- server = null;
5
- requestLog = [];
6
- apiBase = '';
7
- /** Register (or overwrite) a route handler. Key format: 'METHOD /path' (path is exact match, no patterns). */
8
- on(methodAndPath, handler) {
9
- this.routes.set(methodAndPath.trim(), handler);
10
- return this;
11
- }
12
- /** Clear all registered routes (call between tests if reusing the server). */
13
- reset() {
14
- this.routes.clear();
15
- this.requestLog = [];
16
- }
17
- /** All requests received since the last reset, in arrival order. */
18
- requests() {
19
- return this.requestLog.slice();
20
- }
21
- async start() {
22
- this.server = createServer(async (req, res) => {
23
- const method = req.method ?? 'GET';
24
- const url = req.url ?? '/';
25
- const body = await readBody(req);
26
- this.requestLog.push({ method, url, body });
27
- // Try exact match first.
28
- const key = `${method} ${url}`;
29
- let handler = this.routes.get(key);
30
- // Then try query-stripped path (so `/credits/usage?limit=20` matches `GET /credits/usage`).
31
- if (!handler) {
32
- const path = url.split('?')[0];
33
- handler = this.routes.get(`${method} ${path}`);
34
- }
35
- if (!handler) {
36
- res.statusCode = 404;
37
- res.setHeader('content-type', 'application/json');
38
- res.end(JSON.stringify({ error: { code: 'NOT_FOUND', message: `no mock for ${method} ${url}` } }));
39
- return;
40
- }
41
- const resolved = typeof handler === 'function'
42
- ? await handler({ method, url, body, headers: req.headers })
43
- : handler;
44
- const status = resolved.status ?? 200;
45
- const contentType = resolved.contentType ?? 'application/json';
46
- res.statusCode = status;
47
- res.setHeader('content-type', contentType);
48
- if (resolved.raw !== undefined) {
49
- res.end(resolved.raw);
50
- }
51
- else {
52
- res.end(JSON.stringify(resolved.body ?? {}));
53
- }
54
- });
55
- await new Promise(resolve => this.server.listen(0, '127.0.0.1', resolve));
56
- const { port } = this.server.address();
57
- this.apiBase = `http://127.0.0.1:${port}`;
58
- return this.apiBase;
59
- }
60
- async stop() {
61
- if (!this.server)
62
- return;
63
- await new Promise(resolve => this.server.close(() => resolve()));
64
- this.server = null;
65
- }
66
- }
67
- async function readBody(req) {
68
- let raw = '';
69
- for await (const chunk of req)
70
- raw += chunk;
71
- if (!raw)
72
- return undefined;
73
- try {
74
- return JSON.parse(raw);
75
- }
76
- catch {
77
- return raw;
78
- }
79
- }
80
- /** Convenience: start a fresh server with no routes; tests call `mock.on(...)` per scenario. */
81
- export async function startMockServer() {
82
- const mock = new MockServer();
83
- await mock.start();
84
- return mock;
85
- }
86
- //# sourceMappingURL=mock-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-server.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mock-server.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- export declare const CLI_ENTRY: string;
2
- export interface SpawnResult {
3
- stdout: string;
4
- stderr: string;
5
- status: number;
6
- }
7
- export interface SpawnOptions {
8
- /** Extra/overriding env vars (merged on top of the sanitized base env). */
9
- env?: Record<string, string>;
10
- /** Working directory for the child process. */
11
- cwd?: string;
12
- /** ms before the spawn is killed. Default 15000. */
13
- timeout?: number;
14
- /** If true, do NOT set DISABLE_AUTOUPDATER (Tier C wants normal startup). */
15
- enableUpdater?: boolean;
16
- }
17
- /**
18
- * Run the built gipity CLI with a deterministic, isolated environment.
19
- * Returns combined stdout/stderr text plus exit status.
20
- */
21
- export declare function runCli(args: string[], opts?: SpawnOptions): SpawnResult;
22
- export declare function makeTmpHome(): string;
23
- /**
24
- * Async version of runCli - uses `spawn` instead of `spawnSync` so the
25
- * test's event loop keeps turning while the child runs. Required for any
26
- * test that spins up an in-process HTTP server for the child to hit
27
- * (spawnSync deadlocks because the server can't accept connections while
28
- * the event loop is blocked).
29
- */
30
- export declare function runCliAsync(args: string[], opts?: SpawnOptions): Promise<SpawnResult>;
@@ -1,72 +0,0 @@
1
- import { spawnSync, spawn } from 'child_process';
2
- import { fileURLToPath } from 'url';
3
- import { dirname, resolve } from 'path';
4
- import { mkdtempSync } from 'fs';
5
- import { tmpdir } from 'os';
6
- const __dirname = dirname(fileURLToPath(import.meta.url));
7
- // __dirname is dist/__tests__/helpers - CLI entry is dist/index.js
8
- export const CLI_ENTRY = resolve(__dirname, '..', '..', 'index.js');
9
- /**
10
- * Run the built gipity CLI with a deterministic, isolated environment.
11
- * Returns combined stdout/stderr text plus exit status.
12
- */
13
- export function runCli(args, opts = {}) {
14
- const baseEnv = {
15
- PATH: process.env['PATH'] ?? '',
16
- HOME: opts.env?.['HOME'] ?? mkdtempSync(`${tmpdir()}/gipity-cli-test-`),
17
- NO_COLOR: '1',
18
- CI: '1',
19
- };
20
- if (!opts.enableUpdater)
21
- baseEnv['DISABLE_AUTOUPDATER'] = '1';
22
- const env = { ...baseEnv, ...opts.env };
23
- const spawnOpts = {
24
- encoding: 'utf-8',
25
- cwd: opts.cwd ?? process.cwd(),
26
- env,
27
- timeout: opts.timeout ?? 15000,
28
- };
29
- const res = spawnSync(process.execPath, [CLI_ENTRY, ...args], spawnOpts);
30
- return {
31
- stdout: res.stdout ?? '',
32
- stderr: res.stderr ?? '',
33
- status: res.status ?? -1,
34
- };
35
- }
36
- export function makeTmpHome() {
37
- return mkdtempSync(`${tmpdir()}/gipity-cli-test-`);
38
- }
39
- /**
40
- * Async version of runCli - uses `spawn` instead of `spawnSync` so the
41
- * test's event loop keeps turning while the child runs. Required for any
42
- * test that spins up an in-process HTTP server for the child to hit
43
- * (spawnSync deadlocks because the server can't accept connections while
44
- * the event loop is blocked).
45
- */
46
- export async function runCliAsync(args, opts = {}) {
47
- const baseEnv = {
48
- PATH: process.env['PATH'] ?? '',
49
- HOME: opts.env?.['HOME'] ?? mkdtempSync(`${tmpdir()}/gipity-cli-test-`),
50
- NO_COLOR: '1',
51
- CI: '1',
52
- };
53
- if (!opts.enableUpdater)
54
- baseEnv['DISABLE_AUTOUPDATER'] = '1';
55
- const env = { ...baseEnv, ...opts.env };
56
- const child = spawn(process.execPath, [CLI_ENTRY, ...args], {
57
- cwd: opts.cwd ?? process.cwd(),
58
- env,
59
- });
60
- let stdout = '';
61
- let stderr = '';
62
- child.stdout.on('data', c => { stdout += c; });
63
- child.stderr.on('data', c => { stderr += c; });
64
- const timeoutMs = opts.timeout ?? 15000;
65
- const timer = setTimeout(() => child.kill('SIGKILL'), timeoutMs);
66
- const status = await new Promise(resolve => {
67
- child.on('exit', code => { clearTimeout(timer); resolve(code ?? -1); });
68
- child.on('error', () => { clearTimeout(timer); resolve(-1); });
69
- });
70
- return { stdout, stderr, status };
71
- }
72
- //# sourceMappingURL=spawn-cli.js.map