studiograph 1.3.48-next.123 → 1.3.48-next.124

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 (274) hide show
  1. package/dist/agent/tools/ops-tools.js +93 -0
  2. package/dist/agent/tools/ops-tools.js.map +1 -1
  3. package/dist/agent/tools/tool-loader.js +5 -4
  4. package/dist/agent/tools/tool-loader.js.map +1 -1
  5. package/dist/agent/tools/web-tools.js +58 -8
  6. package/dist/agent/tools/web-tools.js.map +1 -1
  7. package/dist/cli/commands/audit.d.ts +21 -0
  8. package/dist/cli/commands/audit.js +174 -0
  9. package/dist/cli/commands/audit.js.map +1 -0
  10. package/dist/cli/commands/clone.js +25 -8
  11. package/dist/cli/commands/clone.js.map +1 -1
  12. package/dist/cli/commands/deploy.js +13 -0
  13. package/dist/cli/commands/deploy.js.map +1 -1
  14. package/dist/cli/commands/join.js +19 -8
  15. package/dist/cli/commands/join.js.map +1 -1
  16. package/dist/cli/commands/mcp.js +7 -3
  17. package/dist/cli/commands/mcp.js.map +1 -1
  18. package/dist/cli/commands/redeploy.js +41 -1
  19. package/dist/cli/commands/redeploy.js.map +1 -1
  20. package/dist/cli/commands/secrets.d.ts +23 -0
  21. package/dist/cli/commands/secrets.js +256 -0
  22. package/dist/cli/commands/secrets.js.map +1 -0
  23. package/dist/cli/commands/serve.js +108 -0
  24. package/dist/cli/commands/serve.js.map +1 -1
  25. package/dist/cli/commands/sync.js +42 -10
  26. package/dist/cli/commands/sync.js.map +1 -1
  27. package/dist/cli/index.js +4 -0
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/railway-provisioning.d.ts +53 -0
  30. package/dist/cli/railway-provisioning.js +85 -0
  31. package/dist/cli/railway-provisioning.js.map +1 -0
  32. package/dist/cli/setup-wizard.js +14 -0
  33. package/dist/cli/setup-wizard.js.map +1 -1
  34. package/dist/core/schemas/connector.d.ts +67 -0
  35. package/dist/core/schemas/connector.js +100 -0
  36. package/dist/core/schemas/connector.js.map +1 -0
  37. package/dist/core/schemas/workspace.d.ts +122 -0
  38. package/dist/core/schemas/workspace.js +211 -0
  39. package/dist/core/schemas/workspace.js.map +1 -0
  40. package/dist/core/secrets/SecretStore.d.ts +77 -0
  41. package/dist/core/secrets/SecretStore.js +13 -0
  42. package/dist/core/secrets/SecretStore.js.map +1 -0
  43. package/dist/core/secrets/SettingsResolver.d.ts +54 -0
  44. package/dist/core/secrets/SettingsResolver.js +80 -0
  45. package/dist/core/secrets/SettingsResolver.js.map +1 -0
  46. package/dist/core/secrets/SettingsStore.d.ts +30 -0
  47. package/dist/core/secrets/SettingsStore.js +9 -0
  48. package/dist/core/secrets/SettingsStore.js.map +1 -0
  49. package/dist/core/secrets/SqliteEncryptedStore.d.ts +78 -0
  50. package/dist/core/secrets/SqliteEncryptedStore.js +581 -0
  51. package/dist/core/secrets/SqliteEncryptedStore.js.map +1 -0
  52. package/dist/core/secrets/audit.d.ts +36 -0
  53. package/dist/core/secrets/audit.js +60 -0
  54. package/dist/core/secrets/audit.js.map +1 -0
  55. package/dist/core/secrets/auth-db-migration.d.ts +129 -0
  56. package/dist/core/secrets/auth-db-migration.js +653 -0
  57. package/dist/core/secrets/auth-db-migration.js.map +1 -0
  58. package/dist/core/secrets/bundle.d.ts +141 -0
  59. package/dist/core/secrets/bundle.js +435 -0
  60. package/dist/core/secrets/bundle.js.map +1 -0
  61. package/dist/core/secrets/dual-write.d.ts +79 -0
  62. package/dist/core/secrets/dual-write.js +229 -0
  63. package/dist/core/secrets/dual-write.js.map +1 -0
  64. package/dist/core/secrets/encryption.d.ts +44 -0
  65. package/dist/core/secrets/encryption.js +97 -0
  66. package/dist/core/secrets/encryption.js.map +1 -0
  67. package/dist/core/secrets/importer.d.ts +94 -0
  68. package/dist/core/secrets/importer.js +319 -0
  69. package/dist/core/secrets/importer.js.map +1 -0
  70. package/dist/core/secrets/index.d.ts +38 -0
  71. package/dist/core/secrets/index.js +61 -0
  72. package/dist/core/secrets/index.js.map +1 -0
  73. package/dist/core/secrets/master-key.d.ts +38 -0
  74. package/dist/core/secrets/master-key.js +122 -0
  75. package/dist/core/secrets/master-key.js.map +1 -0
  76. package/dist/core/secrets/probes/anthropic.d.ts +98 -0
  77. package/dist/core/secrets/probes/anthropic.js +300 -0
  78. package/dist/core/secrets/probes/anthropic.js.map +1 -0
  79. package/dist/core/secrets/probes/brave.d.ts +9 -0
  80. package/dist/core/secrets/probes/brave.js +15 -0
  81. package/dist/core/secrets/probes/brave.js.map +1 -0
  82. package/dist/core/secrets/probes/r2.d.ts +15 -0
  83. package/dist/core/secrets/probes/r2.js +14 -0
  84. package/dist/core/secrets/probes/r2.js.map +1 -0
  85. package/dist/core/secrets/probes/voyage.d.ts +13 -0
  86. package/dist/core/secrets/probes/voyage.js +52 -0
  87. package/dist/core/secrets/probes/voyage.js.map +1 -0
  88. package/dist/core/secrets/read-flip.d.ts +55 -0
  89. package/dist/core/secrets/read-flip.js +87 -0
  90. package/dist/core/secrets/read-flip.js.map +1 -0
  91. package/dist/core/secrets/registry.d.ts +195 -0
  92. package/dist/core/secrets/registry.js +565 -0
  93. package/dist/core/secrets/registry.js.map +1 -0
  94. package/dist/core/types.d.ts +1 -1
  95. package/dist/core/user-config.d.ts +34 -12
  96. package/dist/core/user-config.js +76 -11
  97. package/dist/core/user-config.js.map +1 -1
  98. package/dist/core/validation.d.ts +2 -2
  99. package/dist/core/workspace-manager.js +25 -12
  100. package/dist/core/workspace-manager.js.map +1 -1
  101. package/dist/core/workspace.d.ts +19 -1
  102. package/dist/core/workspace.js +44 -4
  103. package/dist/core/workspace.js.map +1 -1
  104. package/dist/mcp/connector-manager.d.ts +16 -1
  105. package/dist/mcp/connector-manager.js +40 -5
  106. package/dist/mcp/connector-manager.js.map +1 -1
  107. package/dist/mcp/server.d.ts +3 -1
  108. package/dist/mcp/server.js +5 -2
  109. package/dist/mcp/server.js.map +1 -1
  110. package/dist/server/index.d.ts +11 -0
  111. package/dist/server/index.js +99 -4
  112. package/dist/server/index.js.map +1 -1
  113. package/dist/server/middleware/sanitize.d.ts +46 -0
  114. package/dist/server/middleware/sanitize.js +171 -0
  115. package/dist/server/middleware/sanitize.js.map +1 -0
  116. package/dist/server/routes/audit-api.d.ts +24 -0
  117. package/dist/server/routes/audit-api.js +119 -0
  118. package/dist/server/routes/audit-api.js.map +1 -0
  119. package/dist/server/routes/auth-api.js +5 -1
  120. package/dist/server/routes/auth-api.js.map +1 -1
  121. package/dist/server/routes/chat.js +3 -2
  122. package/dist/server/routes/chat.js.map +1 -1
  123. package/dist/server/routes/config-api.js +162 -47
  124. package/dist/server/routes/config-api.js.map +1 -1
  125. package/dist/server/routes/connectors-api.js +13 -7
  126. package/dist/server/routes/connectors-api.js.map +1 -1
  127. package/dist/server/routes/features-api.d.ts +5 -0
  128. package/dist/server/routes/features-api.js +10 -1
  129. package/dist/server/routes/features-api.js.map +1 -1
  130. package/dist/server/routes/graph-api.js +6 -5
  131. package/dist/server/routes/graph-api.js.map +1 -1
  132. package/dist/server/routes/insights-api.js +11 -3
  133. package/dist/server/routes/insights-api.js.map +1 -1
  134. package/dist/server/routes/messages-api.js +5 -4
  135. package/dist/server/routes/messages-api.js.map +1 -1
  136. package/dist/server/routes/secrets-api.d.ts +36 -0
  137. package/dist/server/routes/secrets-api.js +319 -0
  138. package/dist/server/routes/secrets-api.js.map +1 -0
  139. package/dist/server/routes/settings-api.d.ts +28 -0
  140. package/dist/server/routes/settings-api.js +190 -0
  141. package/dist/server/routes/settings-api.js.map +1 -0
  142. package/dist/server/routes/workspace-api.js +3 -2
  143. package/dist/server/routes/workspace-api.js.map +1 -1
  144. package/dist/server/routes/ws.js +2 -1
  145. package/dist/server/routes/ws.js.map +1 -1
  146. package/dist/services/asset-upload-service.js +5 -4
  147. package/dist/services/asset-upload-service.js.map +1 -1
  148. package/dist/services/auth-service.d.ts +26 -1
  149. package/dist/services/auth-service.js +218 -27
  150. package/dist/services/auth-service.js.map +1 -1
  151. package/dist/services/briefing.js +7 -6
  152. package/dist/services/briefing.js.map +1 -1
  153. package/dist/services/event-processor.js +4 -3
  154. package/dist/services/event-processor.js.map +1 -1
  155. package/dist/services/heartbeat.js +4 -3
  156. package/dist/services/heartbeat.js.map +1 -1
  157. package/dist/services/vector-service.d.ts +13 -1
  158. package/dist/services/vector-service.js +18 -2
  159. package/dist/services/vector-service.js.map +1 -1
  160. package/dist/utils/log.d.ts +42 -0
  161. package/dist/utils/log.js +137 -0
  162. package/dist/utils/log.js.map +1 -0
  163. package/dist/web/_app/immutable/assets/0.Bp6xXZUi.css +2 -0
  164. package/dist/web/_app/immutable/assets/SettingsDialog.tBn8y9DD.css +1 -0
  165. package/dist/web/_app/immutable/chunks/{D0uHMAjI.js → 7baHosBC.js} +1 -1
  166. package/dist/web/_app/immutable/chunks/{DOYHH0jE.js → 8-RxxJ9g.js} +1 -1
  167. package/dist/web/_app/immutable/chunks/{Hjbzn7vd.js → 8LakcfiG.js} +1 -1
  168. package/dist/web/_app/immutable/chunks/{CEjfGaQ82.js → BDc-k7Rc2.js} +1 -1
  169. package/dist/web/_app/immutable/chunks/{C2oJr77v.js → CGfsuYRw.js} +1 -1
  170. package/dist/web/_app/immutable/chunks/{BSRkvyDi.js → CHZvrUFl.js} +1 -1
  171. package/dist/web/_app/immutable/chunks/{DhOomwVF.js → CIx0QS6c.js} +1 -1
  172. package/dist/web/_app/immutable/chunks/{D_SIhV96.js → C_7IjoHY.js} +1 -1
  173. package/dist/web/_app/immutable/chunks/{WxslGJR0.js → D9HkdR0B.js} +1 -1
  174. package/dist/web/_app/immutable/chunks/{lSINohfr2.js → DAxTM9Lb2.js} +1 -1
  175. package/dist/web/_app/immutable/chunks/DHepUItL.js +1 -0
  176. package/dist/web/_app/immutable/chunks/DN6UCrb2.js +1 -0
  177. package/dist/web/_app/immutable/chunks/DZ4kLH4V.js +6 -0
  178. package/dist/web/_app/immutable/chunks/{Dnc-uKGN.js → Db7a1qQf.js} +1 -1
  179. package/dist/web/_app/immutable/chunks/DqzLN-gX.js +1 -0
  180. package/dist/web/_app/immutable/chunks/{4cOIYCkN.js → FOL_I7KG.js} +1 -1
  181. package/dist/web/_app/immutable/chunks/G5IR3kw72.js +2 -0
  182. package/dist/web/_app/immutable/chunks/{CRb-2LlR.js → I7uLi56A.js} +1 -1
  183. package/dist/web/_app/immutable/chunks/{B06nh7yQ.js → ScubSdUz.js} +1 -1
  184. package/dist/web/_app/immutable/chunks/{DDmyGMfZ.js → TDQSSWj9.js} +1 -1
  185. package/dist/web/_app/immutable/chunks/{CA3H6v2m.js → _9N1NuMz.js} +3 -3
  186. package/dist/web/_app/immutable/chunks/{BqZ2sF9k2.js → pUKwtPEb2.js} +1 -1
  187. package/dist/web/_app/immutable/chunks/{C00bh6xa2.js → qZM8V82b2.js} +1 -1
  188. package/dist/web/_app/immutable/chunks/{2NMx1iHe.js → vJkT0IPN.js} +1 -1
  189. package/dist/web/_app/immutable/chunks/{BYEHshxp2.js → wcz-NS472.js} +1 -1
  190. package/dist/web/_app/immutable/entry/{app.DtfAMzjw.js → app.DaIQnNyv.js} +2 -2
  191. package/dist/web/_app/immutable/entry/start.BiLCB4pI.js +1 -0
  192. package/dist/web/_app/immutable/nodes/{0.Bo5JtNE9.js → 0.Dn7IoSsy.js} +2 -2
  193. package/dist/web/_app/immutable/nodes/{1.DMMq8CNh.js → 1.DrnZYjnA.js} +1 -1
  194. package/dist/web/_app/immutable/nodes/{10.DBt7Ix2R.js → 10.DOae4rA6.js} +1 -1
  195. package/dist/web/_app/immutable/nodes/{11.3kv4nphz.js → 11.CeGzx1dJ.js} +1 -1
  196. package/dist/web/_app/immutable/nodes/{12.X4iTl9bb.js → 12.B_YxHSnW.js} +1 -1
  197. package/dist/web/_app/immutable/nodes/{13.Cja-a3pw.js → 13.D57z7JEQ.js} +1 -1
  198. package/dist/web/_app/immutable/nodes/{2.xXjE1Dge.js → 2.CaWRQbU1.js} +4 -4
  199. package/dist/web/_app/immutable/nodes/{3.BL5LAwgX.js → 3.C-aq_orU.js} +1 -1
  200. package/dist/web/_app/immutable/nodes/4.Cso8n668.js +2 -0
  201. package/dist/web/_app/immutable/nodes/{5.Cfcja3HV.js → 5.Cvnuk49Z.js} +1 -1
  202. package/dist/web/_app/immutable/nodes/{6.1pFmyd4Y.js → 6.DaZknwcQ.js} +1 -1
  203. package/dist/web/_app/immutable/nodes/7.BKh_H0eN.js +1 -0
  204. package/dist/web/_app/immutable/nodes/{8.DSs8xC56.js → 8.gm_C2WcY.js} +1 -1
  205. package/dist/web/_app/immutable/nodes/{9.CCpAaOEh.js → 9.DHPIqGdt.js} +1 -1
  206. package/dist/web/_app/version.json +1 -1
  207. package/dist/web/index.html +14 -14
  208. package/package.json +4 -1
  209. package/dist/agent/skills/enrich-entities.md +0 -136
  210. package/dist/agent/skills/sync-configuration.md +0 -119
  211. package/dist/agent/skills/sync-setup.md +0 -82
  212. package/dist/cli/commands/app.d.ts +0 -7
  213. package/dist/cli/commands/app.js +0 -268
  214. package/dist/cli/commands/app.js.map +0 -1
  215. package/dist/cli/commands/collection.d.ts +0 -10
  216. package/dist/cli/commands/collection.js +0 -185
  217. package/dist/cli/commands/collection.js.map +0 -1
  218. package/dist/core/launch-entity-types.d.ts +0 -23
  219. package/dist/core/launch-entity-types.js +0 -48
  220. package/dist/core/launch-entity-types.js.map +0 -1
  221. package/dist/integrations/registry.d.ts +0 -8
  222. package/dist/integrations/registry.js +0 -7
  223. package/dist/integrations/registry.js.map +0 -1
  224. package/dist/integrations/types.d.ts +0 -43
  225. package/dist/integrations/types.js +0 -5
  226. package/dist/integrations/types.js.map +0 -1
  227. package/dist/lib/lib/utils.d.ts +0 -2
  228. package/dist/lib/lib/utils.js +0 -6
  229. package/dist/lib/lib/utils.js.map +0 -1
  230. package/dist/server/chrome/chrome.css +0 -701
  231. package/dist/server/chrome/chrome.js +0 -390
  232. package/dist/server/commit-scheduler.d.ts +0 -39
  233. package/dist/server/commit-scheduler.js +0 -113
  234. package/dist/server/commit-scheduler.js.map +0 -1
  235. package/dist/server/plugin-loader.d.ts +0 -53
  236. package/dist/server/plugin-loader.js +0 -155
  237. package/dist/server/plugin-loader.js.map +0 -1
  238. package/dist/server/routes/meeting-ingest-api.d.ts +0 -15
  239. package/dist/server/routes/meeting-ingest-api.js +0 -123
  240. package/dist/server/routes/meeting-ingest-api.js.map +0 -1
  241. package/dist/services/batch-processor.d.ts +0 -49
  242. package/dist/services/batch-processor.js +0 -166
  243. package/dist/services/batch-processor.js.map +0 -1
  244. package/dist/services/csv-service.d.ts +0 -36
  245. package/dist/services/csv-service.js +0 -143
  246. package/dist/services/csv-service.js.map +0 -1
  247. package/dist/services/image-import-service.d.ts +0 -24
  248. package/dist/services/image-import-service.js +0 -108
  249. package/dist/services/image-import-service.js.map +0 -1
  250. package/dist/services/insights.d.ts +0 -38
  251. package/dist/services/insights.js +0 -269
  252. package/dist/services/insights.js.map +0 -1
  253. package/dist/services/meeting-processor.d.ts +0 -99
  254. package/dist/services/meeting-processor.js +0 -436
  255. package/dist/services/meeting-processor.js.map +0 -1
  256. package/dist/services/private-folder.d.ts +0 -15
  257. package/dist/services/private-folder.js +0 -31
  258. package/dist/services/private-folder.js.map +0 -1
  259. package/dist/utils/workspace-config.d.ts +0 -8
  260. package/dist/utils/workspace-config.js +0 -22
  261. package/dist/utils/workspace-config.js.map +0 -1
  262. package/dist/web/_app/immutable/assets/0.CTaJA8Ft.css +0 -2
  263. package/dist/web/_app/immutable/assets/SettingsDialog.B4eW6kgF.css +0 -1
  264. package/dist/web/_app/immutable/chunks/BH4TlszM2.js +0 -2
  265. package/dist/web/_app/immutable/chunks/BM-cHVJB.js +0 -1
  266. package/dist/web/_app/immutable/chunks/DSA0EAGn.js +0 -1
  267. package/dist/web/_app/immutable/chunks/E9mKSNrh.js +0 -6
  268. package/dist/web/_app/immutable/chunks/kNNRSdiM.js +0 -1
  269. package/dist/web/_app/immutable/entry/start.DP7AQ0kH.js +0 -1
  270. package/dist/web/_app/immutable/nodes/4.DiYb6rTu.js +0 -2
  271. package/dist/web/_app/immutable/nodes/7.BzfBVLyt.js +0 -1
  272. /package/dist/web/_app/immutable/chunks/{DSvDEGYK.js → 54VmiJfH.js} +0 -0
  273. /package/dist/web/_app/immutable/chunks/{BU_aRUb2.js → B12eXGpE.js} +0 -0
  274. /package/dist/web/_app/immutable/chunks/{Biuvg81T.js → BqGj0_GS.js} +0 -0
@@ -9,7 +9,9 @@ import { Type as T } from 'typebox';
9
9
  import { existsSync, readFileSync } from 'fs';
10
10
  import { join } from 'path';
11
11
  import { homedir } from 'os';
12
+ import { randomBytes } from 'crypto';
12
13
  import { wrapToolResult } from './graph-tools.js';
14
+ import { provisionRequiredRailwaySecrets, } from '../../cli/railway-provisioning.js';
13
15
  const RAILWAY_API = 'https://backboard.railway.com/graphql/v2';
14
16
  async function railwayQuery(token, query, variables = {}) {
15
17
  const res = await fetch(RAILWAY_API, {
@@ -101,6 +103,13 @@ export function createOpsTools(_workspacePath, workspaceConfig) {
101
103
  await query(`
102
104
  mutation($input: VariableCollectionUpsertInput!) { variableCollectionUpsert(input: $input) }
103
105
  `, { input: { projectId, environmentId: envId, serviceId, variables: envVars } });
106
+ // H4 (Codex): Phase-2 bootstrap secrets must also land on the
107
+ // freshly-created service. The CLI deploy path (deploy.ts)
108
+ // calls provisionRequiredRailwaySecrets — the agent tool used
109
+ // to skip it, which would brick services created via the
110
+ // agent under Phase 4's hard-fail. Idempotent: if a value is
111
+ // already set we leave it, otherwise we generate a fresh one.
112
+ const provisionedBootstrap = await provisionRequiredRailwaySecrets((q, v) => query(q, v ?? {}), { projectId, serviceId, environmentId: envId });
104
113
  // Generate domain
105
114
  let domain = '';
106
115
  try {
@@ -123,6 +132,7 @@ export function createOpsTools(_workspacePath, workspaceConfig) {
123
132
  dashboardUrl: `https://railway.com/project/${projectId}`,
124
133
  apiKey,
125
134
  startCommand,
135
+ provisionedBootstrap,
126
136
  });
127
137
  }
128
138
  catch (err) {
@@ -219,6 +229,89 @@ export function createOpsTools(_workspacePath, workspaceConfig) {
219
229
  }
220
230
  },
221
231
  },
232
+ // Phase 2: provision STUDIOGRAPH_MASTER_KEY (and STUDIOGRAPH_JWT_SECRET
233
+ // if missing) on the linked Railway service. Idempotent — if both are
234
+ // already set, returns success with `provisioned: []`. Owner-gated: the
235
+ // agent only runs for authenticated workspace owners.
236
+ {
237
+ name: 'provision_master_key',
238
+ label: 'Provision Master Key',
239
+ description: 'Generate and set STUDIOGRAPH_MASTER_KEY (and STUDIOGRAPH_JWT_SECRET if missing) on the linked Railway service via the API. Idempotent — does NOT overwrite existing values. Use this when a Railway service is missing the master key required for the encrypted secrets store. Returns the names of the variables that were generated and set.',
240
+ parameters: T.Object({}),
241
+ execute: async (_toolCallId, _params) => {
242
+ try {
243
+ const userConfig = loadUserConfig();
244
+ const token = process.env.RAILWAY_TOKEN || userConfig.railway_token;
245
+ if (!token) {
246
+ return wrapToolResult({ success: false, error: 'No Railway token found. Set railway_token in ~/.studiograph/user.json or RAILWAY_TOKEN env var.' });
247
+ }
248
+ const projectId = workspaceConfig.railway?.project_id;
249
+ const serviceId = workspaceConfig.railway?.service_id;
250
+ const environmentId = workspaceConfig.railway?.environment_id;
251
+ if (!projectId || !serviceId || !environmentId) {
252
+ return wrapToolResult({ success: false, error: 'No Railway service linked to this workspace. Run `studiograph redeploy <railway-dashboard-url>` first.' });
253
+ }
254
+ const queryFn = (q, v) => railwayQuery(token, q, v ?? {});
255
+ const ctx = { projectId, serviceId, environmentId };
256
+ const provisioned = await provisionRequiredRailwaySecrets(queryFn, ctx);
257
+ return wrapToolResult({
258
+ success: true,
259
+ provisioned,
260
+ message: provisioned.length === 0
261
+ ? 'All required env vars already present.'
262
+ : `Set ${provisioned.length} new variable(s): ${provisioned.join(', ')}. Trigger a redeploy for them to take effect.`,
263
+ });
264
+ }
265
+ catch (err) {
266
+ return wrapToolResult({ success: false, error: err instanceof Error ? err.message : String(err) });
267
+ }
268
+ },
269
+ },
270
+ // Phase 2: rotate the JWT signing secret. Generates a new 32-byte
271
+ // base64 secret, writes via the Railway API, and triggers a redeploy
272
+ // (the new value is only picked up at boot). Owner-gated by the
273
+ // calling context. Invalidates every extant session token — the user
274
+ // must explicitly accept that consequence.
275
+ {
276
+ name: 'rotate_jwt_secret',
277
+ label: 'Rotate JWT Secret',
278
+ description: 'Generate a new STUDIOGRAPH_JWT_SECRET on the linked Railway service. WARNING: this invalidates every extant session token — every user (including the caller) will need to log in again after the redeploy. The new secret is generated client-side and POSTed via the Railway API; the old value is overwritten and is unrecoverable. Confirm with the user before invoking.',
279
+ parameters: T.Object({}),
280
+ execute: async (_toolCallId, _params) => {
281
+ try {
282
+ const userConfig = loadUserConfig();
283
+ const token = process.env.RAILWAY_TOKEN || userConfig.railway_token;
284
+ if (!token) {
285
+ return wrapToolResult({ success: false, error: 'No Railway token found.' });
286
+ }
287
+ const projectId = workspaceConfig.railway?.project_id;
288
+ const serviceId = workspaceConfig.railway?.service_id;
289
+ const environmentId = workspaceConfig.railway?.environment_id;
290
+ if (!projectId || !serviceId || !environmentId) {
291
+ return wrapToolResult({ success: false, error: 'No Railway service linked.' });
292
+ }
293
+ const queryFn = (q, v) => railwayQuery(token, q, v ?? {});
294
+ const next = randomBytes(32).toString('base64');
295
+ await queryFn(`mutation($input: VariableCollectionUpsertInput!) {
296
+ variableCollectionUpsert(input: $input)
297
+ }`, {
298
+ input: {
299
+ projectId,
300
+ environmentId,
301
+ serviceId,
302
+ variables: { STUDIOGRAPH_JWT_SECRET: next },
303
+ },
304
+ });
305
+ return wrapToolResult({
306
+ success: true,
307
+ message: 'STUDIOGRAPH_JWT_SECRET rotated. Trigger a redeploy for it to take effect — every existing session will be invalidated at next boot.',
308
+ });
309
+ }
310
+ catch (err) {
311
+ return wrapToolResult({ success: false, error: err instanceof Error ? err.message : String(err) });
312
+ }
313
+ },
314
+ },
222
315
  ];
223
316
  }
224
317
  //# sourceMappingURL=ops-tools.js.map
@@ -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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"}
@@ -18,6 +18,7 @@
18
18
  */
19
19
  import { existsSync, readdirSync } from 'fs';
20
20
  import { join } from 'path';
21
+ import { log } from '../../utils/log.js';
21
22
  export async function loadCustomTools(toolsDirs, context) {
22
23
  const tools = [];
23
24
  const seen = new Set();
@@ -41,15 +42,15 @@ export async function loadCustomTools(toolsDirs, context) {
41
42
  const mod = await import(toolPath);
42
43
  const tool = mod.default ?? mod;
43
44
  if (!tool || typeof tool !== 'object') {
44
- console.warn(`Custom tool at ${toolPath}: does not export an object — skipping`);
45
+ log.warn(`Custom tool at ${toolPath}: does not export an object — skipping`);
45
46
  continue;
46
47
  }
47
48
  if (typeof tool.name !== 'string' || !tool.name) {
48
- console.warn(`Custom tool at ${toolPath}: missing required field "name" — skipping`);
49
+ log.warn(`Custom tool at ${toolPath}: missing required field "name" — skipping`);
49
50
  continue;
50
51
  }
51
52
  if (typeof tool.execute !== 'function') {
52
- console.warn(`Custom tool at ${toolPath}: missing required field "execute" — skipping`);
53
+ log.warn(`Custom tool at ${toolPath}: missing required field "execute" — skipping`);
53
54
  continue;
54
55
  }
55
56
  // First occurrence wins (workspace overrides app-bundled)
@@ -64,7 +65,7 @@ export async function loadCustomTools(toolsDirs, context) {
64
65
  });
65
66
  }
66
67
  catch (err) {
67
- console.warn(`Failed to load custom tool from ${toolPath}:`, err);
68
+ log.warn(`Failed to load custom tool from ${toolPath}:`, err);
68
69
  }
69
70
  }
70
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-loader.js","sourceRoot":"","sources":["../../../src/agent/tools/tool-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAmB,EACnB,OAAoB;IAEpB,MAAM,KAAK,GAAU,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAE/B,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAEpC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;gBAEhC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC,kBAAkB,QAAQ,wCAAwC,CAAC,CAAC;oBACjF,SAAS;gBACX,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChD,OAAO,CAAC,IAAI,CAAC,kBAAkB,QAAQ,4CAA4C,CAAC,CAAC;oBACrF,SAAS;gBACX,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,kBAAkB,QAAQ,+CAA+C,CAAC,CAAC;oBACxF,SAAS;gBACX,CAAC;gBAED,0DAA0D;gBAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpB,mDAAmD;gBACnD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG,IAAI;oBACP,OAAO,EAAE,CAAC,UAAkB,EAAE,MAAW,EAAE,EAAE,CAC3C,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;iBAC/C,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"tool-loader.js","sourceRoot":"","sources":["../../../src/agent/tools/tool-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAOzC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAmB,EACnB,OAAoB;IAEpB,MAAM,KAAK,GAAU,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAE/B,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAEpC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;gBAEhC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtC,GAAG,CAAC,IAAI,CAAC,kBAAkB,QAAQ,wCAAwC,CAAC,CAAC;oBAC7E,SAAS;gBACX,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChD,GAAG,CAAC,IAAI,CAAC,kBAAkB,QAAQ,4CAA4C,CAAC,CAAC;oBACjF,SAAS;gBACX,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACvC,GAAG,CAAC,IAAI,CAAC,kBAAkB,QAAQ,+CAA+C,CAAC,CAAC;oBACpF,SAAS;gBACX,CAAC;gBAED,0DAA0D;gBAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpB,mDAAmD;gBACnD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG,IAAI;oBACP,OAAO,EAAE,CAAC,UAAkB,EAAE,MAAW,EAAE,EAAE,CAC3C,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;iBAC/C,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,mCAAmC,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -6,6 +6,7 @@
6
6
  * Provider is configured via workspace config or env vars.
7
7
  */
8
8
  import { Type as T } from 'typebox';
9
+ import { tryResolve } from '../../core/secrets/read-flip.js';
9
10
  function wrapToolResult(result) {
10
11
  const text = JSON.stringify(result, null, 2);
11
12
  return {
@@ -88,37 +89,86 @@ class TavilySearchProvider {
88
89
  }
89
90
  /**
90
91
  * Resolve a search provider from config + env vars.
91
- * Priority: workspace config > env vars > null (disabled).
92
92
  *
93
- * Env vars checked:
93
+ * Phase 6 read-flip: when `STUDIOGRAPH_NEW_STORE=1`, the encrypted
94
+ * store wins via the resolver. We check the store for each provider's
95
+ * api_key + (for Google) `search.google.cx`, then fall back to the
96
+ * workspace config and env-var chain. The resolver itself bakes in
97
+ * env > store > default precedence, so calling tryResolve()
98
+ * is the right way to consult either source without duplicating
99
+ * precedence logic.
100
+ *
101
+ * Env vars checked (legacy fallback only):
94
102
  * BRAVE_SEARCH_API_KEY
95
103
  * GOOGLE_SEARCH_API_KEY + GOOGLE_SEARCH_CX
96
104
  * TAVILY_API_KEY
97
105
  */
98
106
  function resolveSearchProvider(config) {
99
- // Explicit config
107
+ // Three-tier resolution, in order of precedence:
108
+ // 1. `search.provider` setting in the new store — explicit, picker-driven.
109
+ // Uses ONLY that provider's key. Other keys, even if stored, are
110
+ // ignored (no silent cascade-overrides-my-pick).
111
+ // 2. Legacy workspace-config `search.provider` — same explicit behavior,
112
+ // kept for back-compat with old workspace.json files.
113
+ // 3. Auto-detect cascade (brave → tavily → google) for any setup that
114
+ // predates the picker. First key found wins.
115
+ const storeProvider = tryResolve('search.provider');
116
+ const storeBrave = tryResolve('search.brave.api_key');
117
+ const storeTavily = tryResolve('search.tavily.api_key');
118
+ const storeGoogle = tryResolve('search.google.api_key');
119
+ const storeGoogleCx = tryResolve('search.google.cx');
120
+ // 1. Explicit picker via the new store. When the user has chosen a
121
+ // provider in the settings UI, that choice is authoritative — no
122
+ // cascade. If the chosen provider's key isn't set, we return null
123
+ // rather than silently fall through to a different provider.
124
+ if (storeProvider === 'brave' || storeProvider === 'tavily' || storeProvider === 'google') {
125
+ switch (storeProvider) {
126
+ case 'brave': {
127
+ const key = storeBrave || process.env.BRAVE_SEARCH_API_KEY;
128
+ return key ? new BraveSearchProvider(key) : null;
129
+ }
130
+ case 'tavily': {
131
+ const key = storeTavily || process.env.TAVILY_API_KEY;
132
+ return key ? new TavilySearchProvider(key) : null;
133
+ }
134
+ case 'google': {
135
+ const key = storeGoogle || process.env.GOOGLE_SEARCH_API_KEY;
136
+ const cx = storeGoogleCx || process.env.GOOGLE_SEARCH_CX;
137
+ return key && cx ? new GoogleSearchProvider(key, cx) : null;
138
+ }
139
+ }
140
+ }
141
+ // 2. Legacy workspace-config preference.
100
142
  if (config?.provider && config?.api_key) {
101
143
  const key = resolveEnvValue(config.api_key);
102
144
  switch (config.provider) {
103
145
  case 'brave':
104
- return new BraveSearchProvider(key);
146
+ return new BraveSearchProvider(storeBrave || key);
105
147
  case 'google': {
106
- const cx = resolveEnvValue(config.google_cx ?? '');
148
+ const cx = storeGoogleCx || resolveEnvValue(config.google_cx ?? '');
107
149
  if (!cx)
108
150
  return null;
109
- return new GoogleSearchProvider(key, cx);
151
+ return new GoogleSearchProvider(storeGoogle || key, cx);
110
152
  }
111
153
  case 'tavily':
112
- return new TavilySearchProvider(key);
154
+ return new TavilySearchProvider(storeTavily || key);
113
155
  }
114
156
  }
115
- // Auto-detect from env vars (try in order: Brave, Tavily, Google)
157
+ // 3. Auto-detect cascade (back-compat for installs without an explicit
158
+ // picker setting). Brave wins if any of its surfaces are set.
159
+ if (storeBrave)
160
+ return new BraveSearchProvider(storeBrave);
116
161
  if (process.env.BRAVE_SEARCH_API_KEY) {
117
162
  return new BraveSearchProvider(process.env.BRAVE_SEARCH_API_KEY);
118
163
  }
164
+ if (storeTavily)
165
+ return new TavilySearchProvider(storeTavily);
119
166
  if (process.env.TAVILY_API_KEY) {
120
167
  return new TavilySearchProvider(process.env.TAVILY_API_KEY);
121
168
  }
169
+ if (storeGoogle && storeGoogleCx) {
170
+ return new GoogleSearchProvider(storeGoogle, storeGoogleCx);
171
+ }
122
172
  if (process.env.GOOGLE_SEARCH_API_KEY && process.env.GOOGLE_SEARCH_CX) {
123
173
  return new GoogleSearchProvider(process.env.GOOGLE_SEARCH_API_KEY, process.env.GOOGLE_SEARCH_CX);
124
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/web-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/web-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,SAAS,cAAc,CAAC,MAAW;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAeD,kEAAkE;AAElE,MAAM,mBAAmB;IAEH;IADpB,IAAI,GAAG,OAAO,CAAC;IACf,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAkB;QAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,kDAAkD,MAAM,EAAE,EAAE;YAClF,OAAO,EAAE,EAAE,sBAAsB,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC/E,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YACrE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAED,kEAAkE;AAElE,MAAM,oBAAoB;IAEJ;IAAwB;IAD5C,IAAI,GAAG,QAAQ,CAAC;IAChB,YAAoB,MAAc,EAAU,EAAU;QAAlC,WAAM,GAAN,MAAM,CAAQ;QAAU,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAE1D,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAkB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC9D,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;YACpB,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YACjB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAED,kEAAkE;AAElE,MAAM,oBAAoB;IAEJ;IADpB,IAAI,GAAG,QAAQ,CAAC;IAChB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAkB;QAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,+BAA+B,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO,EAAE,IAAI,CAAC,MAAM;gBACpB,KAAK;gBACL,WAAW,EAAE,UAAU;gBACvB,YAAY,EAAE,OAAO;aACtB,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAChE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAWD;;;;;;;;;;;;;;;GAeG;AACH,SAAS,qBAAqB,CAAC,MAAqB;IAClD,iDAAiD;IACjD,6EAA6E;IAC7E,sEAAsE;IACtE,sDAAsD;IACtD,2EAA2E;IAC3E,2DAA2D;IAC3D,wEAAwE;IACxE,kDAAkD;IAClD,MAAM,aAAa,GAAG,UAAU,CAAS,iBAAiB,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,UAAU,CAAS,sBAAsB,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,UAAU,CAAS,uBAAuB,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,UAAU,CAAS,uBAAuB,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,UAAU,CAAS,kBAAkB,CAAC,CAAC;IAE7D,mEAAmE;IACnE,oEAAoE;IACpE,qEAAqE;IACrE,gEAAgE;IAChE,IAAI,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC1F,QAAQ,aAAa,EAAE,CAAC;YACtB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;gBACtD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;gBAC7D,MAAM,EAAE,GAAG,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBACzD,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM,EAAE,QAAQ,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,OAAO;gBACV,OAAO,IAAI,mBAAmB,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YACpD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,GAAG,aAAa,IAAI,eAAe,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACrB,OAAO,IAAI,oBAAoB,CAAC,WAAW,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,KAAK,QAAQ;gBACX,OAAO,IAAI,oBAAoB,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,iEAAiE;IACjE,IAAI,UAAU;QAAE,OAAO,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,WAAW;QAAE,OAAO,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;QACjC,OAAO,IAAI,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtE,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AACnD,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kEAAkE;AAElE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,YAA2B;IACxD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAErD,MAAM,KAAK,GAAU,EAAE,CAAC;IAExB,iDAAiD;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,uCAAuC,QAAQ,CAAC,IAAI,yJAAyJ;YAC1N,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;gBAChD,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC,CAAC;aACnG,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAA8C,EAAE,EAAE;gBACrF,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACzB,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBACtF,CAAC;oBACD,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,mBAAmB,EAAE,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,IAAI,CAAC;QACT,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,mKAAmK;QAChL,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;YAC9C,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC,CAAC;SAChG,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAA2C,EAAE,EAAE;YAClF,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;gBAC3C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACvD,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,sBAAsB,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,SAAiB;IACrD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,OAAO,EAAE;YACP,YAAY,EAAE,2CAA2C;YACzD,QAAQ,EAAE,4CAA4C;SACvD;QACD,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAE1D,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,IAAI,GAAG,IAAI;SACZ,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;SACxC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAE5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gEAAgE,EAAE,IAAI,CAAC,CAAC;IAC5F,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEpC,IAAI,GAAG,IAAI;SACR,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE3B,IAAI,GAAG,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -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/audit.ts"],"names":[],"mappings":"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"}