@padua/cli 1.13.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +121 -6
  2. package/dist/commands/doctor/index.d.ts.map +1 -1
  3. package/dist/commands/doctor/index.js +85 -0
  4. package/dist/commands/doctor/index.js.map +1 -1
  5. package/dist/commands/doctor/mcp-checks.d.ts +36 -0
  6. package/dist/commands/doctor/mcp-checks.d.ts.map +1 -0
  7. package/dist/commands/doctor/mcp-checks.js +235 -0
  8. package/dist/commands/doctor/mcp-checks.js.map +1 -0
  9. package/dist/commands/doctor/mcp-service-checks.d.ts +35 -0
  10. package/dist/commands/doctor/mcp-service-checks.d.ts.map +1 -0
  11. package/dist/commands/doctor/mcp-service-checks.js +146 -0
  12. package/dist/commands/doctor/mcp-service-checks.js.map +1 -0
  13. package/dist/commands/doctor/types.d.ts +4 -1
  14. package/dist/commands/doctor/types.d.ts.map +1 -1
  15. package/dist/commands/doctor/types.js +1 -0
  16. package/dist/commands/doctor/types.js.map +1 -1
  17. package/dist/commands/login/index.d.ts +1 -1
  18. package/dist/commands/login/index.d.ts.map +1 -1
  19. package/dist/commands/login/index.js +44 -185
  20. package/dist/commands/login/index.js.map +1 -1
  21. package/dist/commands/login/mcp-steps.d.ts +38 -0
  22. package/dist/commands/login/mcp-steps.d.ts.map +1 -0
  23. package/dist/commands/login/mcp-steps.js +176 -0
  24. package/dist/commands/login/mcp-steps.js.map +1 -0
  25. package/dist/commands/login/orchestrator.d.ts +9 -0
  26. package/dist/commands/login/orchestrator.d.ts.map +1 -0
  27. package/dist/commands/login/orchestrator.js +251 -0
  28. package/dist/commands/login/orchestrator.js.map +1 -0
  29. package/dist/commands/login/types.d.ts +11 -0
  30. package/dist/commands/login/types.d.ts.map +1 -1
  31. package/dist/commands/login/types.js.map +1 -1
  32. package/dist/commands/status/aws-checks.d.ts +14 -0
  33. package/dist/commands/status/aws-checks.d.ts.map +1 -0
  34. package/dist/commands/status/aws-checks.js +145 -0
  35. package/dist/commands/status/aws-checks.js.map +1 -0
  36. package/dist/commands/status/checks.d.ts +9 -25
  37. package/dist/commands/status/checks.d.ts.map +1 -1
  38. package/dist/commands/status/checks.js +52 -254
  39. package/dist/commands/status/checks.js.map +1 -1
  40. package/dist/commands/status/index.d.ts.map +1 -1
  41. package/dist/commands/status/index.js +53 -1
  42. package/dist/commands/status/index.js.map +1 -1
  43. package/dist/commands/status/mcp-checks.d.ts +35 -0
  44. package/dist/commands/status/mcp-checks.d.ts.map +1 -0
  45. package/dist/commands/status/mcp-checks.js +175 -0
  46. package/dist/commands/status/mcp-checks.js.map +1 -0
  47. package/dist/commands/status/types.d.ts +34 -0
  48. package/dist/commands/status/types.d.ts.map +1 -1
  49. package/dist/mcp/config/index.d.ts +4 -0
  50. package/dist/mcp/config/index.d.ts.map +1 -0
  51. package/dist/mcp/config/index.js +14 -0
  52. package/dist/mcp/config/index.js.map +1 -0
  53. package/dist/mcp/config/loaders.d.ts +45 -0
  54. package/dist/mcp/config/loaders.d.ts.map +1 -0
  55. package/dist/mcp/config/loaders.js +149 -0
  56. package/dist/mcp/config/loaders.js.map +1 -0
  57. package/dist/mcp/config/types.d.ts +234 -0
  58. package/dist/mcp/config/types.d.ts.map +1 -0
  59. package/dist/mcp/config/types.js +45 -0
  60. package/dist/mcp/config/types.js.map +1 -0
  61. package/dist/mcp/daemon/entry-logic.d.ts +28 -0
  62. package/dist/mcp/daemon/entry-logic.d.ts.map +1 -0
  63. package/dist/mcp/daemon/entry-logic.js +82 -0
  64. package/dist/mcp/daemon/entry-logic.js.map +1 -0
  65. package/dist/mcp/daemon/entry.d.ts +8 -0
  66. package/dist/mcp/daemon/entry.d.ts.map +1 -0
  67. package/dist/mcp/daemon/entry.js +34 -0
  68. package/dist/mcp/daemon/entry.js.map +1 -0
  69. package/dist/mcp/daemon/fork.d.ts +21 -0
  70. package/dist/mcp/daemon/fork.d.ts.map +1 -0
  71. package/dist/mcp/daemon/fork.js +188 -0
  72. package/dist/mcp/daemon/fork.js.map +1 -0
  73. package/dist/mcp/daemon/health.d.ts +8 -0
  74. package/dist/mcp/daemon/health.d.ts.map +1 -0
  75. package/dist/mcp/daemon/health.js +50 -0
  76. package/dist/mcp/daemon/health.js.map +1 -0
  77. package/dist/mcp/daemon/index.d.ts +6 -0
  78. package/dist/mcp/daemon/index.d.ts.map +1 -0
  79. package/dist/mcp/daemon/index.js +22 -0
  80. package/dist/mcp/daemon/index.js.map +1 -0
  81. package/dist/mcp/daemon/types.d.ts +63 -0
  82. package/dist/mcp/daemon/types.d.ts.map +1 -0
  83. package/dist/mcp/daemon/types.js +18 -0
  84. package/dist/mcp/daemon/types.js.map +1 -0
  85. package/dist/mcp/errors/index.d.ts +3 -0
  86. package/dist/mcp/errors/index.d.ts.map +1 -0
  87. package/dist/mcp/errors/index.js +13 -0
  88. package/dist/mcp/errors/index.js.map +1 -0
  89. package/dist/mcp/errors/types.d.ts +83 -0
  90. package/dist/mcp/errors/types.d.ts.map +1 -0
  91. package/dist/mcp/errors/types.js +148 -0
  92. package/dist/mcp/errors/types.js.map +1 -0
  93. package/dist/mcp/providers/atlassian/auth.d.ts +34 -0
  94. package/dist/mcp/providers/atlassian/auth.d.ts.map +1 -0
  95. package/dist/mcp/providers/atlassian/auth.js +107 -0
  96. package/dist/mcp/providers/atlassian/auth.js.map +1 -0
  97. package/dist/mcp/providers/atlassian/client.d.ts +15 -0
  98. package/dist/mcp/providers/atlassian/client.d.ts.map +1 -0
  99. package/dist/mcp/providers/atlassian/client.js +38 -0
  100. package/dist/mcp/providers/atlassian/client.js.map +1 -0
  101. package/dist/mcp/providers/atlassian/index.d.ts +6 -0
  102. package/dist/mcp/providers/atlassian/index.d.ts.map +1 -0
  103. package/dist/mcp/providers/atlassian/index.js +11 -0
  104. package/dist/mcp/providers/atlassian/index.js.map +1 -0
  105. package/dist/mcp/providers/atlassian/markdown-to-adf/index.d.ts +17 -0
  106. package/dist/mcp/providers/atlassian/markdown-to-adf/index.d.ts.map +1 -0
  107. package/dist/mcp/providers/atlassian/markdown-to-adf/index.js +29 -0
  108. package/dist/mcp/providers/atlassian/markdown-to-adf/index.js.map +1 -0
  109. package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.d.ts +43 -0
  110. package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.d.ts.map +1 -0
  111. package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.js +101 -0
  112. package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.js.map +1 -0
  113. package/dist/mcp/providers/atlassian/markdown-to-adf/parser.d.ts +14 -0
  114. package/dist/mcp/providers/atlassian/markdown-to-adf/parser.d.ts.map +1 -0
  115. package/dist/mcp/providers/atlassian/markdown-to-adf/parser.js +250 -0
  116. package/dist/mcp/providers/atlassian/markdown-to-adf/parser.js.map +1 -0
  117. package/dist/mcp/providers/atlassian/provider.d.ts +38 -0
  118. package/dist/mcp/providers/atlassian/provider.d.ts.map +1 -0
  119. package/dist/mcp/providers/atlassian/provider.js +101 -0
  120. package/dist/mcp/providers/atlassian/provider.js.map +1 -0
  121. package/dist/mcp/providers/atlassian/resources.d.ts +4 -0
  122. package/dist/mcp/providers/atlassian/resources.d.ts.map +1 -0
  123. package/dist/mcp/providers/atlassian/resources.js +67 -0
  124. package/dist/mcp/providers/atlassian/resources.js.map +1 -0
  125. package/dist/mcp/providers/atlassian/tools/confluence.d.ts +4 -0
  126. package/dist/mcp/providers/atlassian/tools/confluence.d.ts.map +1 -0
  127. package/dist/mcp/providers/atlassian/tools/confluence.js +169 -0
  128. package/dist/mcp/providers/atlassian/tools/confluence.js.map +1 -0
  129. package/dist/mcp/providers/atlassian/tools/jira.d.ts +4 -0
  130. package/dist/mcp/providers/atlassian/tools/jira.d.ts.map +1 -0
  131. package/dist/mcp/providers/atlassian/tools/jira.js +274 -0
  132. package/dist/mcp/providers/atlassian/tools/jira.js.map +1 -0
  133. package/dist/mcp/providers/gitlab/auth.d.ts +10 -0
  134. package/dist/mcp/providers/gitlab/auth.d.ts.map +1 -0
  135. package/dist/mcp/providers/gitlab/auth.js +23 -0
  136. package/dist/mcp/providers/gitlab/auth.js.map +1 -0
  137. package/dist/mcp/providers/gitlab/client.d.ts +23 -0
  138. package/dist/mcp/providers/gitlab/client.d.ts.map +1 -0
  139. package/dist/mcp/providers/gitlab/client.js +17 -0
  140. package/dist/mcp/providers/gitlab/client.js.map +1 -0
  141. package/dist/mcp/providers/gitlab/index.d.ts +5 -0
  142. package/dist/mcp/providers/gitlab/index.d.ts.map +1 -0
  143. package/dist/mcp/providers/gitlab/index.js +10 -0
  144. package/dist/mcp/providers/gitlab/index.js.map +1 -0
  145. package/dist/mcp/providers/gitlab/provider.d.ts +25 -0
  146. package/dist/mcp/providers/gitlab/provider.d.ts.map +1 -0
  147. package/dist/mcp/providers/gitlab/provider.js +48 -0
  148. package/dist/mcp/providers/gitlab/provider.js.map +1 -0
  149. package/dist/mcp/providers/gitlab/resources.d.ts +11 -0
  150. package/dist/mcp/providers/gitlab/resources.d.ts.map +1 -0
  151. package/dist/mcp/providers/gitlab/resources.js +54 -0
  152. package/dist/mcp/providers/gitlab/resources.js.map +1 -0
  153. package/dist/mcp/providers/gitlab/tools/issues.d.ts +4 -0
  154. package/dist/mcp/providers/gitlab/tools/issues.d.ts.map +1 -0
  155. package/dist/mcp/providers/gitlab/tools/issues.js +120 -0
  156. package/dist/mcp/providers/gitlab/tools/issues.js.map +1 -0
  157. package/dist/mcp/providers/gitlab/tools/merge-requests.d.ts +11 -0
  158. package/dist/mcp/providers/gitlab/tools/merge-requests.d.ts.map +1 -0
  159. package/dist/mcp/providers/gitlab/tools/merge-requests.js +282 -0
  160. package/dist/mcp/providers/gitlab/tools/merge-requests.js.map +1 -0
  161. package/dist/mcp/providers/gitlab/tools/pipelines.d.ts +10 -0
  162. package/dist/mcp/providers/gitlab/tools/pipelines.d.ts.map +1 -0
  163. package/dist/mcp/providers/gitlab/tools/pipelines.js +173 -0
  164. package/dist/mcp/providers/gitlab/tools/pipelines.js.map +1 -0
  165. package/dist/mcp/providers/gitlab/tools/repository.d.ts +4 -0
  166. package/dist/mcp/providers/gitlab/tools/repository.d.ts.map +1 -0
  167. package/dist/mcp/providers/gitlab/tools/repository.js +191 -0
  168. package/dist/mcp/providers/gitlab/tools/repository.js.map +1 -0
  169. package/dist/mcp/providers/index.d.ts +4 -0
  170. package/dist/mcp/providers/index.d.ts.map +1 -0
  171. package/dist/mcp/providers/index.js +6 -0
  172. package/dist/mcp/providers/index.js.map +1 -0
  173. package/dist/mcp/providers/registry.d.ts +90 -0
  174. package/dist/mcp/providers/registry.d.ts.map +1 -0
  175. package/dist/mcp/providers/registry.js +128 -0
  176. package/dist/mcp/providers/registry.js.map +1 -0
  177. package/dist/mcp/providers/tool-helpers.d.ts +14 -0
  178. package/dist/mcp/providers/tool-helpers.d.ts.map +1 -0
  179. package/dist/mcp/providers/tool-helpers.js +12 -0
  180. package/dist/mcp/providers/tool-helpers.js.map +1 -0
  181. package/dist/mcp/providers/types.d.ts +80 -0
  182. package/dist/mcp/providers/types.d.ts.map +1 -0
  183. package/dist/mcp/providers/types.js +13 -0
  184. package/dist/mcp/providers/types.js.map +1 -0
  185. package/dist/mcp/server/auth.d.ts +8 -0
  186. package/dist/mcp/server/auth.d.ts.map +1 -0
  187. package/dist/mcp/server/auth.js +36 -0
  188. package/dist/mcp/server/auth.js.map +1 -0
  189. package/dist/mcp/server/health.d.ts +24 -0
  190. package/dist/mcp/server/health.d.ts.map +1 -0
  191. package/dist/mcp/server/health.js +37 -0
  192. package/dist/mcp/server/health.js.map +1 -0
  193. package/dist/mcp/server/index.d.ts +11 -0
  194. package/dist/mcp/server/index.d.ts.map +1 -0
  195. package/dist/mcp/server/index.js +27 -0
  196. package/dist/mcp/server/index.js.map +1 -0
  197. package/dist/mcp/server/logging.d.ts +46 -0
  198. package/dist/mcp/server/logging.d.ts.map +1 -0
  199. package/dist/mcp/server/logging.js +109 -0
  200. package/dist/mcp/server/logging.js.map +1 -0
  201. package/dist/mcp/server/ratelimit.d.ts +3 -0
  202. package/dist/mcp/server/ratelimit.d.ts.map +1 -0
  203. package/dist/mcp/server/ratelimit.js +70 -0
  204. package/dist/mcp/server/ratelimit.js.map +1 -0
  205. package/dist/mcp/server/routes.d.ts +3 -0
  206. package/dist/mcp/server/routes.d.ts.map +1 -0
  207. package/dist/mcp/server/routes.js +8 -0
  208. package/dist/mcp/server/routes.js.map +1 -0
  209. package/dist/mcp/server/server.d.ts +21 -0
  210. package/dist/mcp/server/server.d.ts.map +1 -0
  211. package/dist/mcp/server/server.js +114 -0
  212. package/dist/mcp/server/server.js.map +1 -0
  213. package/dist/mcp/server/validation.d.ts +22 -0
  214. package/dist/mcp/server/validation.d.ts.map +1 -0
  215. package/dist/mcp/server/validation.js +32 -0
  216. package/dist/mcp/server/validation.js.map +1 -0
  217. package/dist/mcp/store/encrypt.d.ts +22 -0
  218. package/dist/mcp/store/encrypt.d.ts.map +1 -0
  219. package/dist/mcp/store/encrypt.js +66 -0
  220. package/dist/mcp/store/encrypt.js.map +1 -0
  221. package/dist/mcp/store/index.d.ts +12 -0
  222. package/dist/mcp/store/index.d.ts.map +1 -0
  223. package/dist/mcp/store/index.js +16 -0
  224. package/dist/mcp/store/index.js.map +1 -0
  225. package/dist/mcp/store/migrate.d.ts +70 -0
  226. package/dist/mcp/store/migrate.d.ts.map +1 -0
  227. package/dist/mcp/store/migrate.js +211 -0
  228. package/dist/mcp/store/migrate.js.map +1 -0
  229. package/dist/mcp/store/null-token-store.d.ts +22 -0
  230. package/dist/mcp/store/null-token-store.d.ts.map +1 -0
  231. package/dist/mcp/store/null-token-store.js +40 -0
  232. package/dist/mcp/store/null-token-store.js.map +1 -0
  233. package/dist/mcp/store/sqlite.d.ts +27 -0
  234. package/dist/mcp/store/sqlite.d.ts.map +1 -0
  235. package/dist/mcp/store/sqlite.js +100 -0
  236. package/dist/mcp/store/sqlite.js.map +1 -0
  237. package/dist/mcp/store/types.d.ts +183 -0
  238. package/dist/mcp/store/types.d.ts.map +1 -0
  239. package/dist/mcp/store/types.js +13 -0
  240. package/dist/mcp/store/types.js.map +1 -0
  241. package/dist/mcp/token/http-client.d.ts +3 -0
  242. package/dist/mcp/token/http-client.d.ts.map +1 -0
  243. package/dist/mcp/token/http-client.js +186 -0
  244. package/dist/mcp/token/http-client.js.map +1 -0
  245. package/dist/mcp/token/index.d.ts +5 -0
  246. package/dist/mcp/token/index.d.ts.map +1 -0
  247. package/dist/mcp/token/index.js +15 -0
  248. package/dist/mcp/token/index.js.map +1 -0
  249. package/dist/mcp/token/manager.d.ts +54 -0
  250. package/dist/mcp/token/manager.d.ts.map +1 -0
  251. package/dist/mcp/token/manager.js +194 -0
  252. package/dist/mcp/token/manager.js.map +1 -0
  253. package/dist/mcp/token/null-token-manager.d.ts +19 -0
  254. package/dist/mcp/token/null-token-manager.d.ts.map +1 -0
  255. package/dist/mcp/token/null-token-manager.js +50 -0
  256. package/dist/mcp/token/null-token-manager.js.map +1 -0
  257. package/dist/mcp/token/oauth.d.ts +44 -0
  258. package/dist/mcp/token/oauth.d.ts.map +1 -0
  259. package/dist/mcp/token/oauth.js +257 -0
  260. package/dist/mcp/token/oauth.js.map +1 -0
  261. package/dist/mcp/token/types.d.ts +81 -0
  262. package/dist/mcp/token/types.d.ts.map +1 -0
  263. package/dist/mcp/token/types.js +6 -0
  264. package/dist/mcp/token/types.js.map +1 -0
  265. package/package.json +10 -3
@@ -44,11 +44,15 @@ async function handleStatus(options) {
44
44
  ecr: (0, types_1.hasEcrConfig)(config)
45
45
  ? await (0, checks_1.checkECRStatus)(config.ecr)
46
46
  : null,
47
+ gitlab: await (0, checks_1.checkGitLabToken)(),
48
+ atlassian: await (0, checks_1.checkAtlassianToken)(),
49
+ mcpServer: await (0, checks_1.checkMcpServer)(),
47
50
  };
48
51
  // Determine if all services are healthy
49
52
  const allHealthy = result.sso.authenticated
50
53
  && (result.codeartifact === null || result.codeartifact.authenticated)
51
- && (result.ecr === null || result.ecr.authenticated);
54
+ && (result.ecr === null || result.ecr.authenticated)
55
+ && result.mcpServer.running;
52
56
  // In quiet mode, only output if there are issues
53
57
  if (options.quiet && allHealthy) {
54
58
  process.exit(0);
@@ -142,6 +146,54 @@ function displayStatus(result, profile, options) {
142
146
  }
143
147
  }
144
148
  }
149
+ // GitLab Token Status
150
+ console.log('');
151
+ console.log(bold('GitLab'));
152
+ if (result.gitlab.authenticated) {
153
+ console.log(` Status: ${success('Authenticated')}`);
154
+ if (result.gitlab.expiresIn) {
155
+ console.log(` Expires: ${cyan(`in ${result.gitlab.expiresIn}`)}`);
156
+ }
157
+ }
158
+ else {
159
+ console.log(` Status: ${error('Not authenticated')}`);
160
+ if (result.gitlab.error) {
161
+ console.log(` Error: ${dim(result.gitlab.error)}`);
162
+ }
163
+ }
164
+ // Atlassian Token Status
165
+ console.log('');
166
+ console.log(bold('Atlassian'));
167
+ if (result.atlassian.authenticated) {
168
+ console.log(` Status: ${success('Authenticated')}`);
169
+ if (result.atlassian.expiresIn) {
170
+ console.log(` Expires: ${cyan(`in ${result.atlassian.expiresIn}`)}`);
171
+ }
172
+ }
173
+ else {
174
+ console.log(` Status: ${error('Not authenticated')}`);
175
+ if (result.atlassian.error) {
176
+ console.log(` Error: ${dim(result.atlassian.error)}`);
177
+ }
178
+ }
179
+ // MCP Server Status
180
+ console.log('');
181
+ console.log(bold('MCP Server'));
182
+ if (result.mcpServer.running) {
183
+ console.log(` Status: ${success('Running')}`);
184
+ if (result.mcpServer.url) {
185
+ console.log(` URL: ${cyan(result.mcpServer.url)}`);
186
+ }
187
+ if (result.mcpServer.health) {
188
+ console.log(` Health: ${result.mcpServer.health === 'ok' ? success(result.mcpServer.health) : error(result.mcpServer.health)}`);
189
+ }
190
+ }
191
+ else {
192
+ console.log(` Status: ${error('Not running')}`);
193
+ if (result.mcpServer.error) {
194
+ console.log(` Error: ${dim(result.mcpServer.error)}`);
195
+ }
196
+ }
145
197
  console.log('');
146
198
  }
147
199
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Status checks for MCP-related services: GitLab token, Atlassian token,
3
+ * and the MCP background daemon.
4
+ *
5
+ * All functions accept an optional TokenStore injection so tests can drive
6
+ * them with NullTokenStore without touching disk or network.
7
+ */
8
+ import type { TokenStore } from '../../mcp/store/types';
9
+ import type { ProviderTokenStatus, McpServerStatus } from './types';
10
+ /**
11
+ * Format a Unix seconds timestamp as a human-readable time-until-expiry string.
12
+ *
13
+ * Returns "Xh Ym" when the remainder exceeds one hour, "Ym" otherwise.
14
+ * Returns "expired" when the timestamp is in the past or at the present moment.
15
+ */
16
+ export declare function formatExpiresIn(expiresAtSec: number): string;
17
+ /**
18
+ * Check GitLab OAuth token status.
19
+ *
20
+ * When a store is supplied (tests), it is used directly. Otherwise the
21
+ * on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
22
+ */
23
+ export declare function checkGitLabToken(store?: TokenStore): Promise<ProviderTokenStatus>;
24
+ /**
25
+ * Check Atlassian OAuth token status.
26
+ *
27
+ * When a store is supplied (tests), it is used directly. Otherwise the
28
+ * on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
29
+ */
30
+ export declare function checkAtlassianToken(store?: TokenStore): Promise<ProviderTokenStatus>;
31
+ /**
32
+ * Check whether the MCP background daemon is running and healthy.
33
+ */
34
+ export declare function checkMcpServer(): Promise<McpServerStatus>;
35
+ //# sourceMappingURL=mcp-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/status/mcp-checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,uBAAuB,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAMpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAY5D;AAkED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAGvF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAG1F;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAkB/D"}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ /**
3
+ * Status checks for MCP-related services: GitLab token, Atlassian token,
4
+ * and the MCP background daemon.
5
+ *
6
+ * All functions accept an optional TokenStore injection so tests can drive
7
+ * them with NullTokenStore without touching disk or network.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.formatExpiresIn = formatExpiresIn;
44
+ exports.checkGitLabToken = checkGitLabToken;
45
+ exports.checkAtlassianToken = checkAtlassianToken;
46
+ exports.checkMcpServer = checkMcpServer;
47
+ const fs = __importStar(require("fs"));
48
+ const path = __importStar(require("path"));
49
+ const os = __importStar(require("os"));
50
+ const fork_1 = require("../../mcp/daemon/fork");
51
+ const health_1 = require("../../mcp/daemon/health");
52
+ // ---------------------------------------------------------------------------
53
+ // formatExpiresIn
54
+ // ---------------------------------------------------------------------------
55
+ /**
56
+ * Format a Unix seconds timestamp as a human-readable time-until-expiry string.
57
+ *
58
+ * Returns "Xh Ym" when the remainder exceeds one hour, "Ym" otherwise.
59
+ * Returns "expired" when the timestamp is in the past or at the present moment.
60
+ */
61
+ function formatExpiresIn(expiresAtSec) {
62
+ const diffMs = expiresAtSec * 1000 - Date.now();
63
+ if (diffMs <= 0)
64
+ return 'expired';
65
+ // Ceil to avoid rounding down partial minutes (e.g. 59.9s → 1m not 0m)
66
+ const totalMinutes = Math.ceil(diffMs / 60000);
67
+ const hours = Math.floor(totalMinutes / 60);
68
+ const minutes = totalMinutes % 60;
69
+ if (hours > 0)
70
+ return `${hours}h ${minutes}m`;
71
+ return `${totalMinutes}m`;
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // Internal helpers
75
+ // ---------------------------------------------------------------------------
76
+ function evaluateToken(token) {
77
+ const nowSec = Math.floor(Date.now() / 1000);
78
+ if (token.expiresAt <= nowSec) {
79
+ return { authenticated: false, error: 'Token expired' };
80
+ }
81
+ return {
82
+ authenticated: true,
83
+ expiresAt: token.expiresAt,
84
+ expiresIn: formatExpiresIn(token.expiresAt),
85
+ };
86
+ }
87
+ function readTokenFromStore(store, service) {
88
+ try {
89
+ const token = store.get(service);
90
+ if (!token)
91
+ return { authenticated: false };
92
+ return evaluateToken(token);
93
+ }
94
+ catch {
95
+ return { authenticated: false, error: 'Unable to check token store' };
96
+ }
97
+ }
98
+ /**
99
+ * Open the on-disk SQLite store and read a token.
100
+ * Requires PADUA_MCP_ENCRYPTION_KEY env var to be set.
101
+ * Returns not-authenticated gracefully when the store is unavailable.
102
+ */
103
+ function readTokenFromDisk(service) {
104
+ try {
105
+ const hexKey = process.env['PADUA_DB_ENCRYPTION_KEY'];
106
+ if (!hexKey)
107
+ return { authenticated: false, error: 'Unable to check token store' };
108
+ const dbPath = path.join(os.homedir(), '.padua', 'tokens.db');
109
+ if (!fs.existsSync(dbPath))
110
+ return { authenticated: false };
111
+ // Dynamic require avoids pulling better-sqlite3 into the common import path.
112
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
113
+ const { SqliteTokenStore } = require('../../mcp/store/sqlite');
114
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
115
+ const { createEncryptor } = require('../../mcp/store/encrypt');
116
+ const encryptor = createEncryptor(hexKey);
117
+ const store = SqliteTokenStore.create(dbPath, encryptor);
118
+ try {
119
+ return readTokenFromStore(store, service);
120
+ }
121
+ finally {
122
+ store.close();
123
+ }
124
+ }
125
+ catch {
126
+ return { authenticated: false, error: 'Unable to check token store' };
127
+ }
128
+ }
129
+ // ---------------------------------------------------------------------------
130
+ // Public API
131
+ // ---------------------------------------------------------------------------
132
+ /**
133
+ * Check GitLab OAuth token status.
134
+ *
135
+ * When a store is supplied (tests), it is used directly. Otherwise the
136
+ * on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
137
+ */
138
+ async function checkGitLabToken(store) {
139
+ if (store)
140
+ return readTokenFromStore(store, 'gitlab');
141
+ return readTokenFromDisk('gitlab');
142
+ }
143
+ /**
144
+ * Check Atlassian OAuth token status.
145
+ *
146
+ * When a store is supplied (tests), it is used directly. Otherwise the
147
+ * on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
148
+ */
149
+ async function checkAtlassianToken(store) {
150
+ if (store)
151
+ return readTokenFromStore(store, 'atlassian');
152
+ return readTokenFromDisk('atlassian');
153
+ }
154
+ /**
155
+ * Check whether the MCP background daemon is running and healthy.
156
+ */
157
+ async function checkMcpServer() {
158
+ try {
159
+ const daemon = (0, fork_1.readExistingDaemon)();
160
+ if (!daemon || !(0, fork_1.isProcessAlive)(daemon.pid)) {
161
+ return { running: false };
162
+ }
163
+ const health = await (0, health_1.checkHealth)(daemon.port);
164
+ return {
165
+ running: true,
166
+ url: `http://127.0.0.1:${daemon.port}/mcp`,
167
+ pid: daemon.pid,
168
+ health: health.status,
169
+ };
170
+ }
171
+ catch (err) {
172
+ return { running: false, error: err.message };
173
+ }
174
+ }
175
+ //# sourceMappingURL=mcp-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-checks.js","sourceRoot":"","sources":["../../../src/commands/status/mcp-checks.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,34 @@ export interface ECRStatus extends ServiceStatus {
54
54
  /** Registry URL if configured */
55
55
  registry?: string;
56
56
  }
57
+ /**
58
+ * GitLab or Atlassian OAuth token status
59
+ */
60
+ export interface ProviderTokenStatus {
61
+ /** Whether a valid, non-expired token is present */
62
+ authenticated: boolean;
63
+ /** Token expiry as Unix timestamp in seconds */
64
+ expiresAt?: number;
65
+ /** Human-readable expiry string, e.g. "1h 40m" or "52m" */
66
+ expiresIn?: string;
67
+ /** Error message when the check itself failed */
68
+ error?: string;
69
+ }
70
+ /**
71
+ * MCP background server status
72
+ */
73
+ export interface McpServerStatus {
74
+ /** Whether the daemon process is running and reachable */
75
+ running: boolean;
76
+ /** Full MCP endpoint URL, e.g. "http://127.0.0.1:8919/mcp" */
77
+ url?: string;
78
+ /** Daemon PID */
79
+ pid?: number;
80
+ /** Health check result from the /health endpoint */
81
+ health?: 'ok' | 'degraded' | 'error';
82
+ /** Error message when the check itself failed */
83
+ error?: string;
84
+ }
57
85
  /**
58
86
  * Complete status result for all services
59
87
  */
@@ -64,6 +92,12 @@ export interface StatusResult {
64
92
  codeartifact: CodeArtifactStatus | null;
65
93
  /** ECR authentication status (null if not configured) */
66
94
  ecr: ECRStatus | null;
95
+ /** GitLab OAuth token status */
96
+ gitlab: ProviderTokenStatus;
97
+ /** Atlassian OAuth token status */
98
+ atlassian: ProviderTokenStatus;
99
+ /** MCP background server status */
100
+ mcpServer: McpServerStatus;
67
101
  }
68
102
  /**
69
103
  * Command-line options for `padua status`
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/status/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,GAAG,EAAE,SAAS,CAAC;IACf,kEAAkE;IAClE,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/status/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,aAAa,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,CAAC,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC;IACrC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,GAAG,EAAE,SAAS,CAAC;IACf,kEAAkE;IAClE,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,gCAAgC;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,mCAAmC;IACnC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,mCAAmC;IACnC,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,4 @@
1
+ export { McpLocalConfigSchema, GitLabProviderConfigSchema, AtlassianProviderConfigSchema, McpProvidersConfigSchema, } from './types';
2
+ export type { McpLocalConfig, GitLabProviderConfig, AtlassianProviderConfig, McpProvidersConfig, } from './types';
3
+ export { getDefaultMcpConfig, loadMcpConfig, loadProvidersConfig, downloadProvidersConfig, } from './loaders';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadProvidersConfig = exports.loadProvidersConfig = exports.loadMcpConfig = exports.getDefaultMcpConfig = exports.McpProvidersConfigSchema = exports.AtlassianProviderConfigSchema = exports.GitLabProviderConfigSchema = exports.McpLocalConfigSchema = void 0;
4
+ var types_1 = require("./types");
5
+ Object.defineProperty(exports, "McpLocalConfigSchema", { enumerable: true, get: function () { return types_1.McpLocalConfigSchema; } });
6
+ Object.defineProperty(exports, "GitLabProviderConfigSchema", { enumerable: true, get: function () { return types_1.GitLabProviderConfigSchema; } });
7
+ Object.defineProperty(exports, "AtlassianProviderConfigSchema", { enumerable: true, get: function () { return types_1.AtlassianProviderConfigSchema; } });
8
+ Object.defineProperty(exports, "McpProvidersConfigSchema", { enumerable: true, get: function () { return types_1.McpProvidersConfigSchema; } });
9
+ var loaders_1 = require("./loaders");
10
+ Object.defineProperty(exports, "getDefaultMcpConfig", { enumerable: true, get: function () { return loaders_1.getDefaultMcpConfig; } });
11
+ Object.defineProperty(exports, "loadMcpConfig", { enumerable: true, get: function () { return loaders_1.loadMcpConfig; } });
12
+ Object.defineProperty(exports, "loadProvidersConfig", { enumerable: true, get: function () { return loaders_1.loadProvidersConfig; } });
13
+ Object.defineProperty(exports, "downloadProvidersConfig", { enumerable: true, get: function () { return loaders_1.downloadProvidersConfig; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/config/index.ts"],"names":[],"mappings":";;;AAAA,iCAKiB;AAJf,6GAAA,oBAAoB,OAAA;AACpB,mHAAA,0BAA0B,OAAA;AAC1B,sHAAA,6BAA6B,OAAA;AAC7B,iHAAA,wBAAwB,OAAA;AAU1B,qCAKmB;AAJjB,8GAAA,mBAAmB,OAAA;AACnB,wGAAA,aAAa,OAAA;AACb,8GAAA,mBAAmB,OAAA;AACnB,kHAAA,uBAAuB,OAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * MCP config loader functions.
3
+ *
4
+ * Reads padua.config.json (mcp key) and mcp-providers.json,
5
+ * validates with Zod schemas from types.ts, and returns typed defaults.
6
+ */
7
+ import { McpLocalConfig, McpProvidersConfig } from './types';
8
+ /**
9
+ * Returns a fresh McpLocalConfig object containing all default values.
10
+ * All fields are populated so callers can rely on the result being complete.
11
+ */
12
+ export declare function getDefaultMcpConfig(): McpLocalConfig;
13
+ /**
14
+ * Reads the `mcp` key from `~/.padua/padua.config.json` (or `configPath`) and
15
+ * returns a validated McpLocalConfig merged over the defaults.
16
+ *
17
+ * Returns defaults when:
18
+ * - The file does not exist.
19
+ * - The file exists but has no `mcp` key.
20
+ *
21
+ * Throws ValidationError (code INVALID_CONFIG) when:
22
+ * - The `mcp` key is present but fails Zod validation.
23
+ * - The file contains invalid JSON.
24
+ */
25
+ export declare function loadMcpConfig(configPath?: string): McpLocalConfig;
26
+ /**
27
+ * Reads `~/.padua/mcp-providers.json` (or `configPath`) and returns a validated
28
+ * McpProvidersConfig.
29
+ *
30
+ * Returns null when the file does not exist (not an error condition — the user
31
+ * simply has not downloaded the provider config yet).
32
+ *
33
+ * Throws ValidationError (code INVALID_CONFIG) when:
34
+ * - The file exists but fails Zod validation.
35
+ * - The file contains invalid JSON.
36
+ */
37
+ export declare function loadProvidersConfig(configPath?: string): McpProvidersConfig | null;
38
+ /**
39
+ * Downloads the provider config from S3 using the active SSO profile and writes
40
+ * it to `~/.padua/mcp-providers.json` with permissions 0o600.
41
+ *
42
+ * Throws an Error when the aws CLI exits with a non-zero status code.
43
+ */
44
+ export declare function downloadProvidersConfig(profile: string): Promise<void>;
45
+ //# sourceMappingURL=loaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaders.d.ts","sourceRoot":"","sources":["../../../src/mcp/config/loaders.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EACL,cAAc,EACd,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAgBjB;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAWpD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAmBjE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAkBlF;AAMD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5E"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ /**
3
+ * MCP config loader functions.
4
+ *
5
+ * Reads padua.config.json (mcp key) and mcp-providers.json,
6
+ * validates with Zod schemas from types.ts, and returns typed defaults.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getDefaultMcpConfig = getDefaultMcpConfig;
10
+ exports.loadMcpConfig = loadMcpConfig;
11
+ exports.loadProvidersConfig = loadProvidersConfig;
12
+ exports.downloadProvidersConfig = downloadProvidersConfig;
13
+ const child_process_1 = require("child_process");
14
+ const fs_1 = require("fs");
15
+ const os_1 = require("os");
16
+ const path_1 = require("path");
17
+ const types_1 = require("./types");
18
+ const errors_1 = require("../errors");
19
+ // ---------------------------------------------------------------------------
20
+ // Path constants
21
+ // ---------------------------------------------------------------------------
22
+ const PADUA_DIR = (0, path_1.join)((0, os_1.homedir)(), '.padua');
23
+ const LOCAL_CONFIG_PATH = (0, path_1.join)(PADUA_DIR, 'padua.config.json');
24
+ const PROVIDERS_CONFIG_PATH = (0, path_1.join)(PADUA_DIR, 'mcp-providers.json');
25
+ const S3_PROVIDERS_URI = 's3://paduafg-developers/mcp-config.json';
26
+ // ---------------------------------------------------------------------------
27
+ // Defaults
28
+ // ---------------------------------------------------------------------------
29
+ /**
30
+ * Returns a fresh McpLocalConfig object containing all default values.
31
+ * All fields are populated so callers can rely on the result being complete.
32
+ */
33
+ function getDefaultMcpConfig() {
34
+ return {
35
+ port: 8919,
36
+ store: {
37
+ path: (0, path_1.join)(PADUA_DIR, 'tokens.db'),
38
+ encryptionKeySource: 'keychain',
39
+ },
40
+ logging: {
41
+ level: 'info',
42
+ },
43
+ };
44
+ }
45
+ // ---------------------------------------------------------------------------
46
+ // loadMcpConfig
47
+ // ---------------------------------------------------------------------------
48
+ /**
49
+ * Reads the `mcp` key from `~/.padua/padua.config.json` (or `configPath`) and
50
+ * returns a validated McpLocalConfig merged over the defaults.
51
+ *
52
+ * Returns defaults when:
53
+ * - The file does not exist.
54
+ * - The file exists but has no `mcp` key.
55
+ *
56
+ * Throws ValidationError (code INVALID_CONFIG) when:
57
+ * - The `mcp` key is present but fails Zod validation.
58
+ * - The file contains invalid JSON.
59
+ */
60
+ function loadMcpConfig(configPath) {
61
+ const filePath = configPath ?? LOCAL_CONFIG_PATH;
62
+ if (!(0, fs_1.existsSync)(filePath)) {
63
+ return getDefaultMcpConfig();
64
+ }
65
+ const raw = parseJsonFile(filePath);
66
+ const mcpRaw = raw.mcp ?? {};
67
+ const result = types_1.McpLocalConfigSchema.safeParse(mcpRaw);
68
+ if (!result.success) {
69
+ throw new errors_1.ValidationError(`Invalid mcp config: ${result.error.message}`, errors_1.ErrorCodes.INVALID_CONFIG);
70
+ }
71
+ return mergeWithDefaults(result.data);
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // loadProvidersConfig
75
+ // ---------------------------------------------------------------------------
76
+ /**
77
+ * Reads `~/.padua/mcp-providers.json` (or `configPath`) and returns a validated
78
+ * McpProvidersConfig.
79
+ *
80
+ * Returns null when the file does not exist (not an error condition — the user
81
+ * simply has not downloaded the provider config yet).
82
+ *
83
+ * Throws ValidationError (code INVALID_CONFIG) when:
84
+ * - The file exists but fails Zod validation.
85
+ * - The file contains invalid JSON.
86
+ */
87
+ function loadProvidersConfig(configPath) {
88
+ const filePath = configPath ?? PROVIDERS_CONFIG_PATH;
89
+ if (!(0, fs_1.existsSync)(filePath)) {
90
+ return null;
91
+ }
92
+ const raw = parseJsonFile(filePath);
93
+ const result = types_1.McpProvidersConfigSchema.safeParse(raw);
94
+ if (!result.success) {
95
+ throw new errors_1.ValidationError(`Invalid mcp-providers.json: ${result.error.message}`, errors_1.ErrorCodes.INVALID_CONFIG);
96
+ }
97
+ return result.data;
98
+ }
99
+ // ---------------------------------------------------------------------------
100
+ // downloadProvidersConfig
101
+ // ---------------------------------------------------------------------------
102
+ /**
103
+ * Downloads the provider config from S3 using the active SSO profile and writes
104
+ * it to `~/.padua/mcp-providers.json` with permissions 0o600.
105
+ *
106
+ * Throws an Error when the aws CLI exits with a non-zero status code.
107
+ */
108
+ async function downloadProvidersConfig(profile) {
109
+ const result = (0, child_process_1.spawnSync)('aws', ['s3', 'cp', S3_PROVIDERS_URI, PROVIDERS_CONFIG_PATH, '--profile', profile], { stdio: 'pipe' });
110
+ if (result.status !== 0) {
111
+ const stderr = result.stderr?.toString() ?? '';
112
+ throw new Error(`Failed to download mcp-providers.json: ${stderr}`);
113
+ }
114
+ (0, fs_1.chmodSync)(PROVIDERS_CONFIG_PATH, 0o600);
115
+ }
116
+ // ---------------------------------------------------------------------------
117
+ // Internal helpers
118
+ // ---------------------------------------------------------------------------
119
+ /**
120
+ * Reads and parses a JSON file. Throws an Error with a clear message when
121
+ * the file content is not valid JSON (SyntaxError from JSON.parse).
122
+ */
123
+ function parseJsonFile(filePath) {
124
+ const content = (0, fs_1.readFileSync)(filePath, 'utf8');
125
+ try {
126
+ return JSON.parse(content);
127
+ }
128
+ catch (err) {
129
+ throw new errors_1.ValidationError(`Failed to parse JSON at ${filePath}: ${err.message}`, errors_1.ErrorCodes.INVALID_CONFIG);
130
+ }
131
+ }
132
+ /**
133
+ * Merges user-supplied McpLocalConfig values over the defaults.
134
+ * Only top-level keys present in `userConfig` overwrite defaults; nested objects
135
+ * are merged shallowly so the user can override a single sub-field.
136
+ */
137
+ function mergeWithDefaults(userConfig) {
138
+ const defaults = getDefaultMcpConfig();
139
+ return {
140
+ port: userConfig.port ?? defaults.port,
141
+ store: userConfig.store
142
+ ? { ...defaults.store, ...userConfig.store }
143
+ : defaults.store,
144
+ logging: userConfig.logging
145
+ ? { ...defaults.logging, ...userConfig.logging }
146
+ : defaults.logging,
147
+ };
148
+ }
149
+ //# sourceMappingURL=loaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../../src/mcp/config/loaders.ts"],"names":[],"mappings":"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"}