studiograph 1.3.48-next.141 → 1.3.48-next.142

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 (259) hide show
  1. package/README.md +13 -9
  2. package/dist/agent/skills/interview/skill.md +0 -15
  3. package/dist/agent/tools/ops-tools.js +30 -23
  4. package/dist/agent/tools/ops-tools.js.map +1 -1
  5. package/dist/cli/commands/admin/audit-workspace.d.ts +23 -0
  6. package/dist/cli/commands/admin/audit-workspace.js +133 -0
  7. package/dist/cli/commands/admin/audit-workspace.js.map +1 -0
  8. package/dist/cli/commands/admin/audit.d.ts +21 -0
  9. package/dist/cli/commands/admin/audit.js +174 -0
  10. package/dist/cli/commands/admin/audit.js.map +1 -0
  11. package/dist/cli/commands/admin/backup.d.ts +54 -0
  12. package/dist/cli/commands/admin/backup.js +207 -0
  13. package/dist/cli/commands/admin/backup.js.map +1 -0
  14. package/dist/cli/commands/admin/folder.d.ts +11 -0
  15. package/dist/cli/commands/admin/folder.js +186 -0
  16. package/dist/cli/commands/admin/folder.js.map +1 -0
  17. package/dist/cli/commands/admin/index.d.ts +16 -0
  18. package/dist/cli/commands/admin/index.js +44 -0
  19. package/dist/cli/commands/admin/index.js.map +1 -0
  20. package/dist/cli/commands/admin/migrate.d.ts +56 -0
  21. package/dist/cli/commands/admin/migrate.js +263 -0
  22. package/dist/cli/commands/admin/migrate.js.map +1 -0
  23. package/dist/cli/commands/admin/restore.d.ts +24 -0
  24. package/dist/cli/commands/admin/restore.js +228 -0
  25. package/dist/cli/commands/admin/restore.js.map +1 -0
  26. package/dist/cli/commands/admin/secrets.d.ts +23 -0
  27. package/dist/cli/commands/admin/secrets.js +256 -0
  28. package/dist/cli/commands/admin/secrets.js.map +1 -0
  29. package/dist/cli/commands/admin/settings.d.ts +28 -0
  30. package/dist/cli/commands/admin/settings.js +284 -0
  31. package/dist/cli/commands/admin/settings.js.map +1 -0
  32. package/dist/cli/commands/admin/token.d.ts +42 -0
  33. package/dist/cli/commands/admin/token.js +126 -0
  34. package/dist/cli/commands/admin/token.js.map +1 -0
  35. package/dist/cli/commands/admin/transfer-ownership.d.ts +15 -0
  36. package/dist/cli/commands/admin/transfer-ownership.js +106 -0
  37. package/dist/cli/commands/admin/transfer-ownership.js.map +1 -0
  38. package/dist/cli/commands/admin/user.d.ts +11 -0
  39. package/dist/cli/commands/admin/user.js +187 -0
  40. package/dist/cli/commands/admin/user.js.map +1 -0
  41. package/dist/cli/commands/clone.js +22 -3
  42. package/dist/cli/commands/clone.js.map +1 -1
  43. package/dist/cli/commands/config.d.ts +23 -107
  44. package/dist/cli/commands/config.js +52 -260
  45. package/dist/cli/commands/config.js.map +1 -1
  46. package/dist/cli/commands/connector.d.ts +10 -13
  47. package/dist/cli/commands/connector.js +16 -58
  48. package/dist/cli/commands/connector.js.map +1 -1
  49. package/dist/cli/commands/deploy.js +17 -17
  50. package/dist/cli/commands/deploy.js.map +1 -1
  51. package/dist/cli/commands/init.js +3 -25
  52. package/dist/cli/commands/init.js.map +1 -1
  53. package/dist/cli/commands/redeploy.js +23 -10
  54. package/dist/cli/commands/redeploy.js.map +1 -1
  55. package/dist/cli/commands/reset.d.ts +22 -6
  56. package/dist/cli/commands/reset.js +132 -34
  57. package/dist/cli/commands/reset.js.map +1 -1
  58. package/dist/cli/commands/serve.js +20 -0
  59. package/dist/cli/commands/serve.js.map +1 -1
  60. package/dist/cli/commands/sync.js +66 -297
  61. package/dist/cli/commands/sync.js.map +1 -1
  62. package/dist/cli/crypto-bundle.d.ts +39 -0
  63. package/dist/cli/crypto-bundle.js +94 -0
  64. package/dist/cli/crypto-bundle.js.map +1 -0
  65. package/dist/cli/index.js +22 -30
  66. package/dist/cli/index.js.map +1 -1
  67. package/dist/cli/railway-pin.d.ts +68 -0
  68. package/dist/cli/railway-pin.js +96 -0
  69. package/dist/cli/railway-pin.js.map +1 -0
  70. package/dist/cli/setup-wizard.js +4 -2
  71. package/dist/cli/setup-wizard.js.map +1 -1
  72. package/dist/core/graph.d.ts +18 -0
  73. package/dist/core/graph.js +41 -5
  74. package/dist/core/graph.js.map +1 -1
  75. package/dist/core/secrets/registry.js +15 -0
  76. package/dist/core/secrets/registry.js.map +1 -1
  77. package/dist/core/user-config.d.ts +23 -0
  78. package/dist/core/user-config.js +36 -0
  79. package/dist/core/user-config.js.map +1 -1
  80. package/dist/core/workspace-manager.d.ts +3 -0
  81. package/dist/core/workspace-manager.js +10 -1
  82. package/dist/core/workspace-manager.js.map +1 -1
  83. package/dist/server/routes/auth-api.js +33 -10
  84. package/dist/server/routes/auth-api.js.map +1 -1
  85. package/dist/server/routes/git-http.js +4 -4
  86. package/dist/server/routes/git-http.js.map +1 -1
  87. package/dist/server/routes/graph-api.js +23 -1
  88. package/dist/server/routes/graph-api.js.map +1 -1
  89. package/dist/server/routes/insights-api.js +8 -41
  90. package/dist/server/routes/insights-api.js.map +1 -1
  91. package/dist/services/vector-service.d.ts +61 -2
  92. package/dist/services/vector-service.js +137 -3
  93. package/dist/services/vector-service.js.map +1 -1
  94. package/dist/utils/version-checker.d.ts +12 -22
  95. package/dist/utils/version-checker.js +14 -104
  96. package/dist/utils/version-checker.js.map +1 -1
  97. package/dist/web/_app/immutable/assets/{0.m6KHz5Ct.css → 0.rk06bb50.css} +1 -1
  98. package/dist/web/_app/immutable/assets/CalendarView.2_5KwEnm.css +1 -0
  99. package/dist/web/_app/immutable/assets/{Filters.DtCty8E-.css → Filters.DW9xqrSh.css} +1 -1
  100. package/dist/web/_app/immutable/assets/{KanbanView.G3NZ0uHb.css → KanbanView.BykCv6-6.css} +1 -1
  101. package/dist/web/_app/immutable/assets/{TimelineView.CTJIfMlQ.css → TimelineView.D5Vr4f4p.css} +1 -1
  102. package/dist/web/_app/immutable/chunks/{DrKGybIx.js → -6gQBbFR.js} +1 -1
  103. package/dist/web/_app/immutable/chunks/{hkz4tVDj.js → 0DopuZap.js} +1 -1
  104. package/dist/web/_app/immutable/chunks/{C6VKh19i2.js → 1-LQKXfZ2.js} +1 -1
  105. package/dist/web/_app/immutable/chunks/25df8L_v2.js +1 -0
  106. package/dist/web/_app/immutable/chunks/7DYGAJq32.js +1 -0
  107. package/dist/web/_app/immutable/chunks/{DoqF9D6X.js → B49iyw-B.js} +1 -1
  108. package/dist/web/_app/immutable/chunks/B8WVxDoi.js +1 -0
  109. package/dist/web/_app/immutable/chunks/{CMTVWAWD2.js → B8ern2gu2.js} +1 -1
  110. package/dist/web/_app/immutable/chunks/BL_MJFAi2.js +1 -0
  111. package/dist/web/_app/immutable/chunks/{BPLOxwd9.js → BQkTMTc1.js} +1 -1
  112. package/dist/web/_app/immutable/chunks/BRYgZsoN.js +1 -0
  113. package/dist/web/_app/immutable/chunks/{Brmm2B1F.js → Ba4GBqJu.js} +3 -3
  114. package/dist/web/_app/immutable/chunks/BbvKJFF_.js +1 -0
  115. package/dist/web/_app/immutable/chunks/{DFI49Ojd.js → Beinnj2F.js} +1 -1
  116. package/dist/web/_app/immutable/chunks/{3dvegJyw.js → BfYCB5cu.js} +4 -4
  117. package/dist/web/_app/immutable/chunks/{Bx_sUbFW2.js → Bgd45X5W2.js} +1 -1
  118. package/dist/web/_app/immutable/chunks/{B0sOCB6J2.js → Bn5UWofR2.js} +2 -2
  119. package/dist/web/_app/immutable/chunks/BnRO5LhI.js +1 -0
  120. package/dist/web/_app/immutable/chunks/Bq0v_R5r.js +2 -0
  121. package/dist/web/_app/immutable/chunks/{uYkLLAve.js → BrVXfxYL.js} +1 -1
  122. package/dist/web/_app/immutable/chunks/{BNMvG3vo.js → BzHJlS8U.js} +1 -1
  123. package/dist/web/_app/immutable/chunks/{D_x_Qx4b.js → C0r3tbe6.js} +1 -1
  124. package/dist/web/_app/immutable/chunks/{DWAwVvou2.js → C2rrtlqJ2.js} +1 -1
  125. package/dist/web/_app/immutable/chunks/{Cpzw6IR0.js → C6wTxDUN.js} +1 -1
  126. package/dist/web/_app/immutable/chunks/{DFa-r0hK2.js → C758laSC2.js} +1 -1
  127. package/dist/web/_app/immutable/chunks/{BsRJ3k1d.js → C7dZPzrF.js} +1 -1
  128. package/dist/web/_app/immutable/chunks/C7ehUIgK.js +1 -0
  129. package/dist/web/_app/immutable/chunks/{DimvZ1rk.js → CDdrTEPh.js} +1 -1
  130. package/dist/web/_app/immutable/chunks/{1lBMH6iW2.js → CDjqTDPq.js} +1 -1
  131. package/dist/web/_app/immutable/chunks/{H2kmhAjb2.js → CEzdXAzx.js} +1 -1
  132. package/dist/web/_app/immutable/chunks/CKyVp7pa.js +1 -0
  133. package/dist/web/_app/immutable/chunks/{CZl1ot9W.js → CNDUnAll.js} +1 -1
  134. package/dist/web/_app/immutable/chunks/{CQmPiyUp.js → CQZjBhsQ.js} +1 -1
  135. package/dist/web/_app/immutable/chunks/{BL1oxZiW2.js → CQpwu0Rw.js} +1 -1
  136. package/dist/web/_app/immutable/chunks/Ca4KscMv2.js +1 -0
  137. package/dist/web/_app/immutable/chunks/{DnvUa5lw2.js → CeH-DnOb2.js} +1 -1
  138. package/dist/web/_app/immutable/chunks/{DGzcahbp.js → Cl7sUEPM.js} +1 -1
  139. package/dist/web/_app/immutable/chunks/{D3fuCoSW2.js → ClZaQQEO2.js} +1 -1
  140. package/dist/web/_app/immutable/chunks/CqpDNs5Z.js +1 -0
  141. package/dist/web/_app/immutable/chunks/{Ds-56rNC.js → Cspt7VYo.js} +1 -1
  142. package/dist/web/_app/immutable/chunks/{C_SyfpYe.js → CvnXl5Rr.js} +1 -1
  143. package/dist/web/_app/immutable/chunks/{D5hsPE8N.js → Cw3xz8bO.js} +1 -1
  144. package/dist/web/_app/immutable/chunks/{Dz1qECzz.js → Cx1nIj6x.js} +1 -1
  145. package/dist/web/_app/immutable/chunks/{DuZvkPqs2.js → CyiNWqN72.js} +1 -1
  146. package/dist/web/_app/immutable/chunks/Cz2FjHF6.js +1 -0
  147. package/dist/web/_app/immutable/chunks/{DfLl5AcG2.js → Czwjp7ip2.js} +1 -1
  148. package/dist/web/_app/immutable/chunks/{DKVEBJ-32.js → D5YwRLyY2.js} +1 -1
  149. package/dist/web/_app/immutable/chunks/D5ydJQMZ.js +1 -0
  150. package/dist/web/_app/immutable/chunks/{iyvdeKmj.js → D9FQivYK.js} +1 -1
  151. package/dist/web/_app/immutable/chunks/{DOEenJe1.js → DARmfkV3.js} +1 -1
  152. package/dist/web/_app/immutable/chunks/DBANz5d9.js +1 -0
  153. package/dist/web/_app/immutable/chunks/DEsRD0Kx.js +1 -0
  154. package/dist/web/_app/immutable/chunks/{BqbXE992.js → DFGbrpeM.js} +3 -3
  155. package/dist/web/_app/immutable/chunks/DFKfEAag2.js +1 -0
  156. package/dist/web/_app/immutable/chunks/DGBLBaQ_.js +1 -0
  157. package/dist/web/_app/immutable/chunks/{CQ-2yccd.js → DJpbNaAK.js} +1 -1
  158. package/dist/web/_app/immutable/chunks/{yvIeeb_42.js → DNgAQxDP.js} +1 -1
  159. package/dist/web/_app/immutable/chunks/DPD8EOKr2.js +2 -0
  160. package/dist/web/_app/immutable/chunks/{DjuziFSq.js → DPYXG0kj.js} +1 -1
  161. package/dist/web/_app/immutable/chunks/{4pIH0_tT.js → DRPw0stG.js} +1 -1
  162. package/dist/web/_app/immutable/chunks/{BLhU-GJf.js → DR_cAG4D.js} +1 -1
  163. package/dist/web/_app/immutable/chunks/{xaGl2eMs.js → DTBwqHgG.js} +1 -1
  164. package/dist/web/_app/immutable/chunks/{CfK1GcGP2.js → DYvLXLU62.js} +1 -1
  165. package/dist/web/_app/immutable/chunks/{Qqt3Iwci2.js → DZHwUnTK.js} +1 -1
  166. package/dist/web/_app/immutable/chunks/{Byqqksev.js → DZV_JkdQ2.js} +1 -1
  167. package/dist/web/_app/immutable/chunks/{C83yuW3m2.js → Dha-MiFJ2.js} +1 -1
  168. package/dist/web/_app/immutable/chunks/DnawuswL2.js +1 -0
  169. package/dist/web/_app/immutable/chunks/{BdDPs-DM.js → Dux-JxEb.js} +1 -1
  170. package/dist/web/_app/immutable/chunks/F4YWa-kI.js +1 -0
  171. package/dist/web/_app/immutable/chunks/{Ci3J2iwp2.js → GbgQ0w_p2.js} +1 -1
  172. package/dist/web/_app/immutable/chunks/L1BSvKbu2.js +1 -0
  173. package/dist/web/_app/immutable/chunks/kW0emxZs.js +1 -0
  174. package/dist/web/_app/immutable/chunks/{DEcbx4K4.js → u2YWWW0D.js} +1 -1
  175. package/dist/web/_app/immutable/chunks/{CqX-MwhK.js → ud-80bN1.js} +1 -1
  176. package/dist/web/_app/immutable/chunks/wQ835Iqq2.js +83 -0
  177. package/dist/web/_app/immutable/entry/app.DcFury20.js +2 -0
  178. package/dist/web/_app/immutable/entry/start.31Egd-4X.js +1 -0
  179. package/dist/web/_app/immutable/nodes/{0.CITPEjbR.js → 0.C15TiBjR.js} +2 -2
  180. package/dist/web/_app/immutable/nodes/{1.DduJECtM.js → 1.DBqnCp5N.js} +1 -1
  181. package/dist/web/_app/immutable/nodes/{10.Cui_JZxb.js → 10.BoogCEfh.js} +1 -1
  182. package/dist/web/_app/immutable/nodes/{11.UeCoxbD-.js → 11.B5C95aiY.js} +1 -1
  183. package/dist/web/_app/immutable/nodes/{12.B9WJ7c9l.js → 12.Bo39gio2.js} +1 -1
  184. package/dist/web/_app/immutable/nodes/{13.DqgCQkJL.js → 13.DEPiNgiO.js} +1 -1
  185. package/dist/web/_app/immutable/nodes/2.Dqhur93F.js +106 -0
  186. package/dist/web/_app/immutable/nodes/{3.DZhsdFdZ.js → 3.DXrb2xtu.js} +1 -1
  187. package/dist/web/_app/immutable/nodes/4.BR9ghNP-.js +2 -0
  188. package/dist/web/_app/immutable/nodes/{5.CMsuIqT6.js → 5.B-uwmPkj.js} +1 -1
  189. package/dist/web/_app/immutable/nodes/{6.CkWVXmyL.js → 6.CtKXZ-rA.js} +1 -1
  190. package/dist/web/_app/immutable/nodes/{7.BkYENY24.js → 7.CQ40ZEvw.js} +1 -1
  191. package/dist/web/_app/immutable/nodes/{8.DwdTJOgA.js → 8.DHbQ0NZN.js} +1 -1
  192. package/dist/web/_app/immutable/nodes/{9.DKZ3Sgx1.js → 9.5fODFcxN.js} +1 -1
  193. package/dist/web/_app/version.json +1 -1
  194. package/dist/web/index.html +14 -14
  195. package/package.json +1 -1
  196. package/dist/web/_app/immutable/assets/CalendarView.B_hbOAbM.css +0 -1
  197. package/dist/web/_app/immutable/chunks/-ioccU5s.js +0 -2
  198. package/dist/web/_app/immutable/chunks/BK0ggYL62.js +0 -1
  199. package/dist/web/_app/immutable/chunks/CA4g7cjE2.js +0 -1
  200. package/dist/web/_app/immutable/chunks/CF8PYvJA.js +0 -1
  201. package/dist/web/_app/immutable/chunks/CGKzi17I2.js +0 -1
  202. package/dist/web/_app/immutable/chunks/ConbjvYQ2.js +0 -1
  203. package/dist/web/_app/immutable/chunks/D0e8PVhd2.js +0 -1
  204. package/dist/web/_app/immutable/chunks/D8tqcUuZ.js +0 -1
  205. package/dist/web/_app/immutable/chunks/D9PNm1z6.js +0 -1
  206. package/dist/web/_app/immutable/chunks/DO51xrVU.js +0 -1
  207. package/dist/web/_app/immutable/chunks/DT8BrRgZ.js +0 -1
  208. package/dist/web/_app/immutable/chunks/DU5E-t7g.js +0 -1
  209. package/dist/web/_app/immutable/chunks/DYdnKpvC2.js +0 -2
  210. package/dist/web/_app/immutable/chunks/DfGc2Vbl.js +0 -1
  211. package/dist/web/_app/immutable/chunks/Dvmab3aw2.js +0 -1
  212. package/dist/web/_app/immutable/chunks/JKJTTpmw.js +0 -1
  213. package/dist/web/_app/immutable/chunks/LB81VOAq.js +0 -1
  214. package/dist/web/_app/immutable/chunks/SRjhqDO_.js +0 -1
  215. package/dist/web/_app/immutable/chunks/YyBqtYe3.js +0 -1
  216. package/dist/web/_app/immutable/chunks/gULFBDXq2.js +0 -83
  217. package/dist/web/_app/immutable/entry/app.Bx-aFaCy.js +0 -2
  218. package/dist/web/_app/immutable/entry/start.B58d5Pp4.js +0 -1
  219. package/dist/web/_app/immutable/nodes/2.CuIyeEFg.js +0 -106
  220. package/dist/web/_app/immutable/nodes/4.BOsIV0oS.js +0 -2
  221. /package/dist/web/_app/immutable/chunks/{ByqcwQIl.js → 0y07qhHv.js} +0 -0
  222. /package/dist/web/_app/immutable/chunks/{C0Prwfom.js → 3Ddap93k.js} +0 -0
  223. /package/dist/web/_app/immutable/chunks/{CU3SD7Uz.js → BAQqEuSW.js} +0 -0
  224. /package/dist/web/_app/immutable/chunks/{CQzfplZr.js → BAwCCELm.js} +0 -0
  225. /package/dist/web/_app/immutable/chunks/{C50qCxM2.js → BBVt71H0.js} +0 -0
  226. /package/dist/web/_app/immutable/chunks/{BY2QDF2w2.js → BJDI0CVm2.js} +0 -0
  227. /package/dist/web/_app/immutable/chunks/{Cd727XFk.js → BLZ_gUXk.js} +0 -0
  228. /package/dist/web/_app/immutable/chunks/{DuxlyVaW.js → BM8OckeF.js} +0 -0
  229. /package/dist/web/_app/immutable/chunks/{BRcFsc6v.js → BNjJ851o.js} +0 -0
  230. /package/dist/web/_app/immutable/chunks/{DTsh-rY8.js → BQAzQWNc.js} +0 -0
  231. /package/dist/web/_app/immutable/chunks/{BSz-Rs6A.js → BaRWyZJp.js} +0 -0
  232. /package/dist/web/_app/immutable/chunks/{XMWvwY0B2.js → BdEEvMm72.js} +0 -0
  233. /package/dist/web/_app/immutable/chunks/{Dpq3LnpX.js → BzdIirhc.js} +0 -0
  234. /package/dist/web/_app/immutable/chunks/{BzeVNab0.js → C4ezn1Zj.js} +0 -0
  235. /package/dist/web/_app/immutable/chunks/{Mj7EytRp.js → C4q5lyFs.js} +0 -0
  236. /package/dist/web/_app/immutable/chunks/{C4_lca3x.js → C4qg8l0L2.js} +0 -0
  237. /package/dist/web/_app/immutable/chunks/{DQKRvmzW.js → C4wPmO56.js} +0 -0
  238. /package/dist/web/_app/immutable/chunks/{DxAl1xVd.js → CBNzpT1u.js} +0 -0
  239. /package/dist/web/_app/immutable/chunks/{C9bebE2N.js → CBb1eVhA.js} +0 -0
  240. /package/dist/web/_app/immutable/chunks/{_3ZPFErk.js → CCvrA-Jl.js} +0 -0
  241. /package/dist/web/_app/immutable/chunks/{DllsEP8T.js → CLHWE-_g.js} +0 -0
  242. /package/dist/web/_app/immutable/chunks/{C2A9kXuc.js → CQ-uDjOs.js} +0 -0
  243. /package/dist/web/_app/immutable/chunks/{A6bT_qFs.js → CgE_evqe2.js} +0 -0
  244. /package/dist/web/_app/immutable/chunks/{DazIzF5w.js → ChSBCyG-.js} +0 -0
  245. /package/dist/web/_app/immutable/chunks/{Ct9eObjX2.js → ChdqjvhH2.js} +0 -0
  246. /package/dist/web/_app/immutable/chunks/{Br5pOq3s2.js → CjiKtAHC2.js} +0 -0
  247. /package/dist/web/_app/immutable/chunks/{DihOyosf2.js → CltHJTT32.js} +0 -0
  248. /package/dist/web/_app/immutable/chunks/{UkaYCElu.js → CnXnpq3_.js} +0 -0
  249. /package/dist/web/_app/immutable/chunks/{c-GqbtBN.js → Cw58x-kY.js} +0 -0
  250. /package/dist/web/_app/immutable/chunks/{DW4yjnj8.js → D1f8I7Vy.js} +0 -0
  251. /package/dist/web/_app/immutable/chunks/{BgGI_ZrC.js → D6KPkxcJ.js} +0 -0
  252. /package/dist/web/_app/immutable/chunks/{DZZTHHPW.js → DP3v2upT.js} +0 -0
  253. /package/dist/web/_app/immutable/chunks/{BuHDhb_3.js → Dsmkh2We.js} +0 -0
  254. /package/dist/web/_app/immutable/chunks/{NKbVWJ8w.js → DzMSiHnE.js} +0 -0
  255. /package/dist/web/_app/immutable/chunks/{Dwtqnses.js → E1QJ8qxh.js} +0 -0
  256. /package/dist/web/_app/immutable/chunks/{DhF8zQQ3.js → EW0uyMSW.js} +0 -0
  257. /package/dist/web/_app/immutable/chunks/{DPqDmSD4.js → YrKPpvrI2.js} +0 -0
  258. /package/dist/web/_app/immutable/chunks/{DLG3I4qA.js → hEijmR6g.js} +0 -0
  259. /package/dist/web/_app/immutable/chunks/{CsmcxOCI2.js → wR_dFW8K2.js} +0 -0
package/README.md CHANGED
@@ -31,22 +31,27 @@ To create repos on GitHub during init:
31
31
  studiograph init "My Studio" --github --github-org my-org
32
32
  ```
33
33
 
34
- ### Join an Existing Workspace
34
+ ### Clone an Existing Workspace
35
35
 
36
36
  ```bash
37
- studiograph join https://github.com/my-org/.studiograph.git
37
+ studiograph clone https://studiograph.example.com /path/to/local/copy
38
38
  ```
39
39
 
40
- This clones the config repo, identifies your role from the team roster, and clones all repos you have access to.
40
+ Authenticates as the workspace owner against a running Studiograph server,
41
+ mints a per-machine API token, persists it to `~/.studiograph/user.json`, and
42
+ clones every accessible repo. Subsequent `pull`/`push` runs are non-interactive
43
+ via the stored token.
41
44
 
42
- ### Start the Agent
45
+ ### Boot the Workspace
43
46
 
44
47
  ```bash
45
48
  cd my-studio
46
- studiograph start
49
+ studiograph serve
47
50
  ```
48
51
 
49
- On first run, you'll be prompted to select an AI provider and model. The agent provides a chat interface where you can create, search, and manage entities across your knowledge graph.
52
+ This starts the local HTTP server + opens the web UI. The web chat panel is the canonical agent surface: a richer chat UX, real-time graph view, and inline editor. On first boot you'll be prompted to set up an AI provider and model.
53
+
54
+ If you want a terminal-side agent (Claude Desktop / Cursor integration), run `studiograph mcp` — it exposes the same toolset over MCP.
50
55
 
51
56
  ## How It Works
52
57
 
@@ -118,14 +123,13 @@ There are 17 built-in entity types (project, meeting, person, organization, deci
118
123
  | Command | Description |
119
124
  |---------|-------------|
120
125
  | `studiograph init <team-name> [dir]` | Initialize a new workspace |
121
- | `studiograph join <url> [dir]` | Join an existing workspace via GitHub URL |
122
- | `studiograph auth` | Manage GitHub authentication |
126
+ | `studiograph clone <url> [dir]` | Clone an existing workspace from a running server |
123
127
 
124
128
  ### Daily Workflow
125
129
 
126
130
  | Command | Description |
127
131
  |---------|-------------|
128
- | `studiograph start` | Launch the AI agent chat interface |
132
+ | `studiograph serve` | Boot the local HTTP server + open the web UI |
129
133
  | `studiograph pull` | Pull latest changes from remote |
130
134
  | `studiograph push` | Push local commits to remote |
131
135
 
@@ -13,7 +13,6 @@ You are an interviewer. Your primary job is to build the user's organizational k
13
13
  **At the start of every conversation**, assess the graph state by calling `list_entities` across all folders. Then:
14
14
 
15
15
  - **If the workspace has no folders (or no entries):** This is a brand-new workspace. Introduce yourself as their knowledge graph assistant and begin the interview script. Start by asking for their website and organization name. Create the first folder as you go (see "Folder Structure" below).
16
- - **If the only folder is `meridian-rebrand` (or the graph contains *only* the starter scaffold below):** Treat the workspace as empty. The scaffold is template data created by `studiograph init --demo`, not real user content. Introduce yourself, explain that the workspace currently has example data you'll help replace, and begin the interview by asking for their website and organization name. Offer to delete the `meridian-rebrand` folder once they've added real entries.
17
16
  - **If the graph has baseline coverage but gaps remain:** Pick up where the gaps are. Ask the next most valuable question based on what's missing.
18
17
  - **If the user asks something unrelated:** Handle their request, then return to the interview with your next question.
19
18
 
@@ -29,20 +28,6 @@ These two are often different — many workspaces are personal projects, side ve
29
28
 
30
29
  Never derive organization facts from the email domain alone — the model may know about the firm and pattern-match plausible sentences ("strategic design firm doing data visualization"), but plausible isn't the same as accurate.
31
30
 
32
- ### Recognizing the starter scaffold (`--demo` workspaces only)
33
-
34
- The default `studiograph init` creates a bare workspace with no scaffolded content — the interview is the primary onboarding surface. Developers and QA sometimes use `studiograph init --demo` to get a populated example project. If you see one folder named `meridian-rebrand` containing exactly these 8 entries:
35
-
36
- - `meridian-health` (organization, client)
37
- - `sarah-chen`, `alex-rivera` (people)
38
- - `meridian-rebrand` (project)
39
- - `2026-02-10-kickoff` (meeting)
40
- - `dec-2026-001` (decision)
41
- - `discovery-workshop` (process)
42
- - `brand-deliverables-checklist` (guideline)
43
-
44
- …do **not** treat it as the user's real graph. It's a template demonstrating how entries connect. Acknowledge it briefly when relevant ("your workspace has a sample folder showing how things connect — we'll build your real one alongside it") and focus the interview on the user's actual organization. Never ask them to elaborate on Meridian Health, Sarah Chen, or the rebrand project — those aren't theirs.
45
-
46
31
  **Always end your response with the next interview question.** The interview is always running. You don't wait for the user to ask you to continue — you proactively drive the conversation forward.
47
32
 
48
33
  The only time you don't ask a follow-up question is if the user explicitly says "stop", "that's enough", or "no more questions."
@@ -12,6 +12,7 @@ import { homedir } from 'os';
12
12
  import { randomBytes } from 'crypto';
13
13
  import { wrapToolResult } from './graph-tools.js';
14
14
  import { provisionRequiredRailwaySecrets, } from '../../cli/railway-provisioning.js';
15
+ import { pinStartCommand, readOwnVersion } from '../../cli/railway-pin.js';
15
16
  const RAILWAY_API = 'https://backboard.railway.com/graphql/v2';
16
17
  async function railwayQuery(token, query, variables = {}) {
17
18
  const res = await fetch(RAILWAY_API, {
@@ -61,12 +62,13 @@ export function createOpsTools(_workspacePath, workspaceConfig) {
61
62
  const apiKey = randomBytes(24).toString('base64url');
62
63
  const projectName = params.projectName
63
64
  || (workspaceConfig.team_name ? `${workspaceConfig.team_name} — Studiograph` : 'Studiograph');
64
- // Determine start command from package version
65
- const pkgPath = new URL('../../../package.json', import.meta.url);
66
- const pkgVersion = JSON.parse(readFileSync(pkgPath, 'utf-8')).version;
67
- const startCommand = pkgVersion.includes('-')
68
- ? `cd /workspace && npx studiograph@${pkgVersion} serve`
69
- : 'cd /workspace && npx studiograph serve';
65
+ // Pin to the exact CLI version, prerelease or not. The pre-A7
66
+ // non-prerelease branch used unpinned `npx studiograph`, which
67
+ // resolves to whatever @latest is at Railway boot — the same
68
+ // version-drift footgun the CLI deploy path had.
69
+ // See cli-owner-audit §6.2 + codex review appendix.
70
+ const pkgVersion = readOwnVersion();
71
+ const startCommand = `cd /workspace && npx --yes studiograph@${pkgVersion} serve`;
70
72
  const query = (q, variables = {}) => railwayQuery(railwayToken, q, variables);
71
73
  // Create project
72
74
  const projectData = await query(`
@@ -83,12 +85,10 @@ export function createOpsTools(_workspacePath, workspaceConfig) {
83
85
  mutation($input: ServiceCreateInput!) { serviceCreate(input: $input) { id name } }
84
86
  `, { input: { projectId, name: 'studiograph' } });
85
87
  const serviceId = serviceData.serviceCreate.id;
86
- // Set start command
87
- await query(`
88
- mutation($serviceId: String!, $environmentId: String!, $input: ServiceInstanceUpdateInput!) {
89
- serviceInstanceUpdate(serviceId: $serviceId, environmentId: $environmentId, input: $input)
90
- }
91
- `, { serviceId, environmentId: envId, input: { startCommand } });
88
+ // Set start command via the shared pin helper. Throws on Railway
89
+ // API errors — failing fast keeps a half-built service from
90
+ // booting with no/wrong start command.
91
+ await pinStartCommand((q, v) => query(q, v ?? {}), { serviceId, environmentId: envId }, pkgVersion, { startCommand });
92
92
  // Create volume
93
93
  await query(`
94
94
  mutation($input: VolumeCreateInput!) { volumeCreate(input: $input) { id } }
@@ -184,19 +184,26 @@ export function createOpsTools(_workspacePath, workspaceConfig) {
184
184
  if (!environmentId) {
185
185
  return wrapToolResult({ success: false, error: 'Could not determine Railway environment.' });
186
186
  }
187
- // Update start command to current version
188
- let startCommand = `npx --yes studiograph serve`;
187
+ if (!serviceId) {
188
+ return wrapToolResult({ success: false, error: 'Could not determine Railway service.' });
189
+ }
190
+ // Update start command via the shared pin helper. Fatal on
191
+ // failure — the pre-A7 path swallowed errors, which left Railway
192
+ // running the old broken start command while the tool reported
193
+ // success. See cli-owner-audit §6.2 + codex review appendix.
194
+ const pkgVersion = readOwnVersion();
195
+ let startCommand;
189
196
  try {
190
- const pkgPath = new URL('../../../package.json', import.meta.url);
191
- const pkgVersion = JSON.parse(readFileSync(pkgPath, 'utf-8')).version;
192
- startCommand = `npx --yes studiograph@${pkgVersion} serve`;
193
- await railwayQuery(token, `
194
- mutation($serviceId: String!, $environmentId: String!, $input: ServiceInstanceUpdateInput!) {
195
- serviceInstanceUpdate(serviceId: $serviceId, environmentId: $environmentId, input: $input)
196
- }
197
- `, { serviceId, environmentId, input: { startCommand } });
197
+ startCommand = await pinStartCommand((q, v) => railwayQuery(token, q, v), { serviceId, environmentId }, pkgVersion);
198
+ }
199
+ catch (err) {
200
+ return wrapToolResult({
201
+ success: false,
202
+ error: `Could not pin Railway start command to studiograph@${pkgVersion}: ` +
203
+ (err instanceof Error ? err.message : String(err)) +
204
+ '. Aborting redeploy so the service keeps running its prior version.',
205
+ });
198
206
  }
199
- catch { /* non-fatal — continue with redeploy */ }
200
207
  // Find latest deployment and redeploy
201
208
  const deployData = await railwayQuery(token, `
202
209
  query($projectId: String!, $serviceId: String!, $environmentId: String!) {
@@ -1 +1 @@
1
- {"version":3,"file":"ops-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/ops-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/ops-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * studiograph admin audit-workspace — read-only health aggregator.
3
+ *
4
+ * Wraps `analyzeGraphHealth()` from src/services/graph-maintenance.ts —
5
+ * the same service that powers the dashboard's health digest — and
6
+ * emits a markdown report. The point isn't to surface anything new; it's
7
+ * to give the owner a single command for the periodic sweep, instead of
8
+ * running `studiograph lint`, `studiograph orphans`, and chasing broken
9
+ * wikilinks by hand.
10
+ *
11
+ * Output is stdout by default (so it can be piped to `pbcopy`, `glow`,
12
+ * or `tee somewhere.md`). `--out <path>` writes to disk and prints just
13
+ * the summary table.
14
+ */
15
+ import { Command } from 'commander';
16
+ import { type GraphHealthReport } from '../../../services/graph-maintenance.js';
17
+ export declare const adminAuditWorkspaceCommand: Command;
18
+ /**
19
+ * Render the report as a markdown document. Sections are emitted only
20
+ * when they have content — an empty workspace produces a tight one-page
21
+ * doc, a full audit produces a long one.
22
+ */
23
+ export declare function renderMarkdown(report: GraphHealthReport, workspaceName: string): string;
@@ -0,0 +1,133 @@
1
+ /**
2
+ * studiograph admin audit-workspace — read-only health aggregator.
3
+ *
4
+ * Wraps `analyzeGraphHealth()` from src/services/graph-maintenance.ts —
5
+ * the same service that powers the dashboard's health digest — and
6
+ * emits a markdown report. The point isn't to surface anything new; it's
7
+ * to give the owner a single command for the periodic sweep, instead of
8
+ * running `studiograph lint`, `studiograph orphans`, and chasing broken
9
+ * wikilinks by hand.
10
+ *
11
+ * Output is stdout by default (so it can be piped to `pbcopy`, `glow`,
12
+ * or `tee somewhere.md`). `--out <path>` writes to disk and prints just
13
+ * the summary table.
14
+ */
15
+ import { Command } from 'commander';
16
+ import { intro, outro, log, spinner } from '@clack/prompts';
17
+ import { writeFileSync } from 'fs';
18
+ import { resolve } from 'path';
19
+ import { Workspace } from '../../../core/workspace.js';
20
+ import { WorkspaceManager } from '../../../core/workspace-manager.js';
21
+ import { analyzeGraphHealth, } from '../../../services/graph-maintenance.js';
22
+ export const adminAuditWorkspaceCommand = new Command('audit-workspace')
23
+ .description('Read-only workspace health report (lint + orphans + stale + broken wikilinks)')
24
+ .option('--out <path>', 'Write the markdown report to <path> instead of stdout')
25
+ .option('--quiet', 'Suppress the intro/outro decorations (useful in pipes)')
26
+ .action(async (opts) => {
27
+ if (!opts.quiet)
28
+ intro('Studiograph workspace audit');
29
+ const workspace = new Workspace();
30
+ if (!workspace.isWorkspace()) {
31
+ if (!opts.quiet)
32
+ outro('Not a Studiograph workspace. Run from your workspace root.');
33
+ else
34
+ console.error('Not a Studiograph workspace.');
35
+ process.exit(1);
36
+ return;
37
+ }
38
+ const config = await workspace.loadConfig();
39
+ const gitUser = { id: 'system', name: 'system', email: 'system@local' };
40
+ const manager = new WorkspaceManager(process.cwd(), config, gitUser);
41
+ const spin = opts.quiet ? null : spinner();
42
+ spin?.start('Aggregating health metrics');
43
+ const report = await analyzeGraphHealth(manager);
44
+ spin?.stop('Done');
45
+ const markdown = renderMarkdown(report, config.team_name ?? 'workspace');
46
+ if (opts.out) {
47
+ const path = resolve(opts.out);
48
+ writeFileSync(path, markdown, 'utf-8');
49
+ if (!opts.quiet)
50
+ log.success(`Wrote ${path}`);
51
+ printSummary(report);
52
+ }
53
+ else {
54
+ // Stdout path. clack's log helpers add prefixes that fight pipes, so
55
+ // use plain console.log for the report and reserve clack for the
56
+ // intro/outro framing (skipped under --quiet).
57
+ console.log(markdown);
58
+ }
59
+ if (!opts.quiet)
60
+ outro(`${report.summary.totalIssues} issue(s) across ${report.summary.totalEntities} entities.`);
61
+ });
62
+ function printSummary(report) {
63
+ const s = report.summary;
64
+ log.message(`Summary:\n` +
65
+ ` entities: ${s.totalEntities}\n` +
66
+ ` missing fields: ${s.missingFields}\n` +
67
+ ` orphans: ${s.orphanEntities}\n` +
68
+ ` stale: ${s.staleEntities}\n` +
69
+ ` broken wikilinks: ${s.brokenWikilinks}\n` +
70
+ ` total issues: ${s.totalIssues}`);
71
+ }
72
+ /**
73
+ * Render the report as a markdown document. Sections are emitted only
74
+ * when they have content — an empty workspace produces a tight one-page
75
+ * doc, a full audit produces a long one.
76
+ */
77
+ export function renderMarkdown(report, workspaceName) {
78
+ const s = report.summary;
79
+ const lines = [];
80
+ lines.push(`# Workspace audit — ${workspaceName}`);
81
+ lines.push('');
82
+ lines.push(`_Generated ${report.generatedAt}_`);
83
+ lines.push('');
84
+ lines.push('## Summary');
85
+ lines.push('');
86
+ lines.push('| Metric | Count |');
87
+ lines.push('| --- | ---: |');
88
+ lines.push(`| Entities | ${s.totalEntities} |`);
89
+ lines.push(`| Total issues | ${s.totalIssues} |`);
90
+ lines.push(`| Missing-field issues | ${s.missingFields} |`);
91
+ lines.push(`| Orphan entities | ${s.orphanEntities} |`);
92
+ lines.push(`| Stale entities (>30d) | ${s.staleEntities} |`);
93
+ lines.push(`| Broken wikilinks | ${s.brokenWikilinks} |`);
94
+ lines.push('');
95
+ if (s.totalIssues === 0) {
96
+ lines.push('No issues found.');
97
+ return lines.join('\n') + '\n';
98
+ }
99
+ if (report.missingFields.length > 0) {
100
+ lines.push('## Missing fields');
101
+ lines.push('');
102
+ for (const issue of report.missingFields) {
103
+ lines.push(`- **${issue.entityType}** \`${issue.entityId}\` (${issue.repo}) — ${issue.missingFields.join(', ')}`);
104
+ }
105
+ lines.push('');
106
+ }
107
+ if (report.orphans.length > 0) {
108
+ lines.push('## Orphans (zero inbound references)');
109
+ lines.push('');
110
+ for (const o of report.orphans) {
111
+ lines.push(`- **${o.entityType}** \`${o.entityId}\` (${o.repo}) — ${o.name}`);
112
+ }
113
+ lines.push('');
114
+ }
115
+ if (report.stale.length > 0) {
116
+ lines.push('## Stale entities (no edits in >30 days)');
117
+ lines.push('');
118
+ for (const st of report.stale) {
119
+ lines.push(`- **${st.entityType}** \`${st.entityId}\` (${st.repo}) — ${st.name}, last touched ${st.lastUpdated} (${st.daysSinceUpdate}d ago)`);
120
+ }
121
+ lines.push('');
122
+ }
123
+ if (report.brokenLinks.length > 0) {
124
+ lines.push('## Broken wikilinks');
125
+ lines.push('');
126
+ for (const bl of report.brokenLinks) {
127
+ lines.push(`- **${bl.entityType}** \`${bl.entityId}\` (${bl.repo}) — ${bl.name} → \`[[${bl.brokenLink}]]\``);
128
+ }
129
+ lines.push('');
130
+ }
131
+ return lines.join('\n') + '\n';
132
+ }
133
+ //# sourceMappingURL=audit-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-workspace.js","sourceRoot":"","sources":["../../../../src/cli/commands/admin/audit-workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * studiograph audit — read-only operator view of the append-only audit log.
3
+ *
4
+ * studiograph audit list [filters]
5
+ * --key <pattern> Filter by key name (exact match)
6
+ * --actor <user-id> Filter by actor user-id
7
+ * --action <action> Filter by action type
8
+ * (set|delete|test|describe|migrate|...)
9
+ * --since <iso-date> Only events at-or-after this time
10
+ * --until <iso-date> Only events at-or-before this time
11
+ * --limit <n> Page size (default 50, max 500)
12
+ * --offset <n> Pagination offset
13
+ * --format <table|json> Output format (default table)
14
+ *
15
+ * Audit reads aren't audited themselves (append-only log; reading
16
+ * doesn't change state). The UI used to surface this as a Settings →
17
+ * Audit Log tab; removed because filtering and exporting are much
18
+ * better in a terminal.
19
+ */
20
+ import { Command } from 'commander';
21
+ export declare const auditCommand: Command;
@@ -0,0 +1,174 @@
1
+ /**
2
+ * studiograph audit — read-only operator view of the append-only audit log.
3
+ *
4
+ * studiograph audit list [filters]
5
+ * --key <pattern> Filter by key name (exact match)
6
+ * --actor <user-id> Filter by actor user-id
7
+ * --action <action> Filter by action type
8
+ * (set|delete|test|describe|migrate|...)
9
+ * --since <iso-date> Only events at-or-after this time
10
+ * --until <iso-date> Only events at-or-before this time
11
+ * --limit <n> Page size (default 50, max 500)
12
+ * --offset <n> Pagination offset
13
+ * --format <table|json> Output format (default table)
14
+ *
15
+ * Audit reads aren't audited themselves (append-only log; reading
16
+ * doesn't change state). The UI used to surface this as a Settings →
17
+ * Audit Log tab; removed because filtering and exporting are much
18
+ * better in a terminal.
19
+ */
20
+ import { Command } from 'commander';
21
+ import { log } from '@clack/prompts';
22
+ import { homedir } from 'os';
23
+ import { existsSync } from 'fs';
24
+ import { join } from 'path';
25
+ import { SqliteEncryptedStore, loadMasterKey, loadPreviousMasterKey, setSecretStore, } from '../../../core/secrets/index.js';
26
+ function openStore() {
27
+ const loaded = loadMasterKey();
28
+ const previous = loadPreviousMasterKey();
29
+ const sgRoot = process.env.RAILWAY_ENVIRONMENT && existsSync('/workspace')
30
+ ? '/workspace'
31
+ : join(homedir(), '.studiograph');
32
+ const dbPath = join(sgRoot, 'secrets.db');
33
+ if (!existsSync(dbPath)) {
34
+ log.error(`Secrets store not found at ${dbPath}`);
35
+ log.info('Run `studiograph init` first, or start `studiograph serve` to initialize the store.');
36
+ process.exit(1);
37
+ }
38
+ const store = new SqliteEncryptedStore({
39
+ dbPath,
40
+ masterKey: loaded.key,
41
+ previousMasterKey: previous,
42
+ });
43
+ setSecretStore(store);
44
+ return store;
45
+ }
46
+ function parseTs(v) {
47
+ if (!v)
48
+ return undefined;
49
+ const n = Number(v);
50
+ if (Number.isFinite(n) && n > 0)
51
+ return n;
52
+ const d = Date.parse(v);
53
+ return Number.isFinite(d) ? d : undefined;
54
+ }
55
+ function fmtTs(ms) {
56
+ return new Date(ms).toISOString();
57
+ }
58
+ function fmtActor(row) {
59
+ return row.actor_type === 'user'
60
+ ? `user:${row.actor_user_id ?? '?'}`
61
+ : `system:${row.actor_system_id ?? '?'}`;
62
+ }
63
+ function fmtTable(rows) {
64
+ if (rows.length === 0)
65
+ return '';
66
+ const cols = Object.keys(rows[0]);
67
+ const widths = cols.map((c) => Math.max(c.length, ...rows.map((r) => r[c]?.length ?? 0)));
68
+ const header = cols.map((c, i) => c.padEnd(widths[i])).join(' ');
69
+ const sep = widths.map((w) => '─'.repeat(w)).join(' ');
70
+ const body = rows.map((r) => cols.map((c, i) => (r[c] ?? '').padEnd(widths[i])).join(' ')).join('\n');
71
+ return `${header}\n${sep}\n${body}`;
72
+ }
73
+ export const auditCommand = new Command('audit')
74
+ .description('Read the append-only audit log (formerly the Settings → Audit Log tab)');
75
+ auditCommand
76
+ .command('list')
77
+ .description('List recent audit events, newest first. Filters compose with AND.')
78
+ .option('--key <key>', 'Filter by key name (exact match)')
79
+ .option('--actor <user-id>', 'Filter by actor user-id')
80
+ .option('--actor-type <type>', 'Filter by actor type: user or system')
81
+ .option('--action <action>', 'Filter by action (set, delete, test, describe, migrate, decrypt_fail, rotate_master, bundle_export, bundle_import)')
82
+ .option('--since <iso-date>', 'Only events at-or-after this time (ISO date or epoch ms)')
83
+ .option('--until <iso-date>', 'Only events at-or-before this time (ISO date or epoch ms)')
84
+ .option('--limit <n>', 'Page size, default 50, max 500', '50')
85
+ .option('--offset <n>', 'Pagination offset', '0')
86
+ .option('--format <format>', 'Output format: table (default) or json', 'table')
87
+ .action(async (opts) => {
88
+ const store = openStore();
89
+ try {
90
+ const where = [];
91
+ const params = [];
92
+ if (opts.key) {
93
+ where.push('key = ?');
94
+ params.push(opts.key);
95
+ }
96
+ if (opts.actor) {
97
+ where.push('actor_user_id = ?');
98
+ params.push(opts.actor);
99
+ }
100
+ if (opts.actorType) {
101
+ where.push('actor_type = ?');
102
+ params.push(opts.actorType);
103
+ }
104
+ if (opts.action) {
105
+ where.push('action = ?');
106
+ params.push(opts.action);
107
+ }
108
+ const since = parseTs(opts.since);
109
+ const until = parseTs(opts.until);
110
+ if (since !== undefined) {
111
+ where.push('ts >= ?');
112
+ params.push(since);
113
+ }
114
+ if (until !== undefined) {
115
+ where.push('ts <= ?');
116
+ params.push(until);
117
+ }
118
+ const limit = Math.min(Math.max(parseInt(opts.limit, 10) || 50, 1), 500);
119
+ const offset = Math.max(parseInt(opts.offset, 10) || 0, 0);
120
+ const sql = `SELECT id, ts, actor_type, actor_user_id, actor_system_id, action,
121
+ key, success, ip, user_agent, detail_json
122
+ FROM audit_log
123
+ ${where.length ? `WHERE ${where.join(' AND ')}` : ''}
124
+ ORDER BY ts DESC
125
+ LIMIT ? OFFSET ?`;
126
+ // `store.db` is private; the route code already reaches in via `(store as any).db`
127
+ // and we follow the same pattern. Refactoring the store to expose a public
128
+ // query helper is out of scope for this CLI.
129
+ const rows = (store.db
130
+ .prepare(sql)
131
+ .all(...params, limit, offset));
132
+ const totalRow = (store.db
133
+ .prepare(`SELECT COUNT(*) AS n FROM audit_log ${where.length ? `WHERE ${where.join(' AND ')}` : ''}`)
134
+ .get(...params));
135
+ if (opts.format === 'json') {
136
+ console.log(JSON.stringify({
137
+ total: totalRow.n,
138
+ limit,
139
+ offset,
140
+ items: rows.map((r) => ({
141
+ id: r.id,
142
+ ts: r.ts,
143
+ actor_type: r.actor_type,
144
+ actor_user_id: r.actor_user_id,
145
+ actor_system_id: r.actor_system_id,
146
+ action: r.action,
147
+ key: r.key,
148
+ success: !!r.success,
149
+ ip: r.ip,
150
+ user_agent: r.user_agent,
151
+ detail: r.detail_json ? JSON.parse(r.detail_json) : null,
152
+ })),
153
+ }, null, 2));
154
+ return;
155
+ }
156
+ if (rows.length === 0) {
157
+ log.info(`No audit events found${where.length ? ' for the given filters' : ''}.`);
158
+ return;
159
+ }
160
+ const tableRows = rows.map((r) => ({
161
+ time: fmtTs(r.ts),
162
+ actor: fmtActor(r),
163
+ action: r.action,
164
+ key: r.key ?? '—',
165
+ result: r.success ? 'ok' : 'fail',
166
+ }));
167
+ console.log(fmtTable(tableRows));
168
+ console.log(`\nShowing ${rows.length} of ${totalRow.n} events (offset=${offset}, limit=${limit})`);
169
+ }
170
+ finally {
171
+ store.close();
172
+ }
173
+ });
174
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../../src/cli/commands/admin/audit.ts"],"names":[],"mappings":"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"}