alpic 0.0.0-staging.2b7ec8b → 0.0.0-staging.2ba052d

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 +40 -0
  2. package/bin/run.js +5 -0
  3. package/dist/__tests__/alpic-command.test.d.ts +1 -0
  4. package/dist/__tests__/alpic-command.test.js +41 -0
  5. package/dist/__tests__/alpic-command.test.js.map +1 -0
  6. package/dist/__tests__/audit.e2e.test.d.ts +1 -0
  7. package/dist/__tests__/audit.e2e.test.js +561 -0
  8. package/dist/__tests__/audit.e2e.test.js.map +1 -0
  9. package/dist/__tests__/auth.e2e.test.js +33 -15
  10. package/dist/__tests__/auth.e2e.test.js.map +1 -1
  11. package/dist/__tests__/deploy-flags.e2e.test.js +153 -12
  12. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -1
  13. package/dist/__tests__/deploy.e2e.test.js +33 -17
  14. package/dist/__tests__/deploy.e2e.test.js.map +1 -1
  15. package/dist/__tests__/deployment-inspect.e2e.test.d.ts +1 -0
  16. package/dist/__tests__/deployment-inspect.e2e.test.js +119 -0
  17. package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -0
  18. package/dist/__tests__/deployment-list.e2e.test.d.ts +1 -0
  19. package/dist/__tests__/deployment-list.e2e.test.js +121 -0
  20. package/dist/__tests__/deployment-list.e2e.test.js.map +1 -0
  21. package/dist/__tests__/deployment-logs.e2e.test.d.ts +1 -0
  22. package/dist/__tests__/deployment-logs.e2e.test.js +262 -0
  23. package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -0
  24. package/dist/__tests__/environment-inspect.e2e.test.d.ts +1 -0
  25. package/dist/__tests__/environment-inspect.e2e.test.js +78 -0
  26. package/dist/__tests__/environment-inspect.e2e.test.js.map +1 -0
  27. package/dist/__tests__/environment-list.e2e.test.d.ts +1 -0
  28. package/dist/__tests__/environment-list.e2e.test.js +63 -0
  29. package/dist/__tests__/environment-list.e2e.test.js.map +1 -0
  30. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.d.ts +1 -0
  31. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +277 -0
  32. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -0
  33. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.d.ts +1 -0
  34. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +146 -0
  35. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -0
  36. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.d.ts +1 -0
  37. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +148 -0
  38. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -0
  39. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.d.ts +1 -0
  40. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +348 -0
  41. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -0
  42. package/dist/__tests__/environment-variable/environment-variable-validation.test.d.ts +1 -0
  43. package/dist/__tests__/environment-variable/environment-variable-validation.test.js +20 -0
  44. package/dist/__tests__/environment-variable/environment-variable-validation.test.js.map +1 -0
  45. package/dist/__tests__/fixtures/demo-project/index.js +1 -1
  46. package/dist/__tests__/fixtures/demo-project/index.js.map +1 -1
  47. package/dist/__tests__/git-flags.e2e.test.js +20 -13
  48. package/dist/__tests__/git-flags.e2e.test.js.map +1 -1
  49. package/dist/__tests__/git.e2e.test.js +14 -9
  50. package/dist/__tests__/git.e2e.test.js.map +1 -1
  51. package/dist/__tests__/link.e2e.test.d.ts +1 -0
  52. package/dist/__tests__/link.e2e.test.js +282 -0
  53. package/dist/__tests__/link.e2e.test.js.map +1 -0
  54. package/dist/__tests__/logs.e2e.test.d.ts +1 -0
  55. package/dist/__tests__/logs.e2e.test.js +230 -0
  56. package/dist/__tests__/logs.e2e.test.js.map +1 -0
  57. package/dist/__tests__/mock-server.d.ts +25 -0
  58. package/dist/__tests__/mock-server.js +386 -23
  59. package/dist/__tests__/mock-server.js.map +1 -1
  60. package/dist/__tests__/playground/playground-configure.e2e.test.d.ts +1 -0
  61. package/dist/__tests__/playground/playground-configure.e2e.test.js +135 -0
  62. package/dist/__tests__/playground/playground-configure.e2e.test.js.map +1 -0
  63. package/dist/__tests__/playground/playground-enable-disable.e2e.test.d.ts +1 -0
  64. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js +104 -0
  65. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js.map +1 -0
  66. package/dist/__tests__/playground/playground-example-prompt.e2e.test.d.ts +1 -0
  67. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js +282 -0
  68. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js.map +1 -0
  69. package/dist/__tests__/playground/playground-headers.e2e.test.d.ts +1 -0
  70. package/dist/__tests__/playground/playground-headers.e2e.test.js +324 -0
  71. package/dist/__tests__/playground/playground-headers.e2e.test.js.map +1 -0
  72. package/dist/__tests__/playground/playground-status.e2e.test.d.ts +1 -0
  73. package/dist/__tests__/playground/playground-status.e2e.test.js +88 -0
  74. package/dist/__tests__/playground/playground-status.e2e.test.js.map +1 -0
  75. package/dist/__tests__/project-inspect.e2e.test.d.ts +1 -0
  76. package/dist/__tests__/project-inspect.e2e.test.js +83 -0
  77. package/dist/__tests__/project-inspect.e2e.test.js.map +1 -0
  78. package/dist/__tests__/project-list.e2e.test.d.ts +1 -0
  79. package/dist/__tests__/project-list.e2e.test.js +95 -0
  80. package/dist/__tests__/project-list.e2e.test.js.map +1 -0
  81. package/dist/__tests__/publish.e2e.test.d.ts +1 -0
  82. package/dist/__tests__/publish.e2e.test.js +575 -0
  83. package/dist/__tests__/publish.e2e.test.js.map +1 -0
  84. package/dist/__tests__/team-inspect.e2e.test.d.ts +1 -0
  85. package/dist/__tests__/team-inspect.e2e.test.js +86 -0
  86. package/dist/__tests__/team-inspect.e2e.test.js.map +1 -0
  87. package/dist/__tests__/team-list.e2e.test.d.ts +1 -0
  88. package/dist/__tests__/team-list.e2e.test.js +58 -0
  89. package/dist/__tests__/team-list.e2e.test.js.map +1 -0
  90. package/dist/__tests__/tunnel.e2e.test.d.ts +1 -0
  91. package/dist/__tests__/tunnel.e2e.test.js +66 -0
  92. package/dist/__tests__/tunnel.e2e.test.js.map +1 -0
  93. package/dist/__tests__/utils.d.ts +9 -3
  94. package/dist/__tests__/utils.js +73 -25
  95. package/dist/__tests__/utils.js.map +1 -1
  96. package/dist/api.d.ts +1 -1
  97. package/dist/api.js +10 -3
  98. package/dist/api.js.map +1 -1
  99. package/dist/commands/audit.d.ts +13 -0
  100. package/dist/commands/audit.js +45 -0
  101. package/dist/commands/audit.js.map +1 -0
  102. package/dist/commands/deploy.d.ts +3 -4
  103. package/dist/commands/deploy.js +52 -38
  104. package/dist/commands/deploy.js.map +1 -1
  105. package/dist/commands/deployment/inspect.d.ts +11 -0
  106. package/dist/commands/deployment/inspect.js +91 -0
  107. package/dist/commands/deployment/inspect.js.map +1 -0
  108. package/dist/commands/deployment/list.d.ts +11 -0
  109. package/dist/commands/deployment/list.js +97 -0
  110. package/dist/commands/deployment/list.js.map +1 -0
  111. package/dist/commands/deployment/logs.d.ts +12 -0
  112. package/dist/commands/deployment/logs.js +50 -0
  113. package/dist/commands/deployment/logs.js.map +1 -0
  114. package/dist/commands/environment/inspect.d.ts +10 -0
  115. package/dist/commands/environment/inspect.js +94 -0
  116. package/dist/commands/environment/inspect.js.map +1 -0
  117. package/dist/commands/environment/list.d.ts +10 -0
  118. package/dist/commands/environment/list.js +79 -0
  119. package/dist/commands/environment/list.js.map +1 -0
  120. package/dist/commands/environment-variable/add.d.ts +13 -0
  121. package/dist/commands/environment-variable/add.js +43 -0
  122. package/dist/commands/environment-variable/add.js.map +1 -0
  123. package/dist/commands/environment-variable/list.d.ts +9 -0
  124. package/dist/commands/environment-variable/list.js +45 -0
  125. package/dist/commands/environment-variable/list.js.map +1 -0
  126. package/dist/commands/environment-variable/remove.d.ts +10 -0
  127. package/dist/commands/environment-variable/remove.js +29 -0
  128. package/dist/commands/environment-variable/remove.js.map +1 -0
  129. package/dist/commands/environment-variable/update.d.ts +12 -0
  130. package/dist/commands/environment-variable/update.js +37 -0
  131. package/dist/commands/environment-variable/update.js.map +1 -0
  132. package/dist/commands/git/connect.d.ts +0 -4
  133. package/dist/commands/git/connect.js +16 -30
  134. package/dist/commands/git/connect.js.map +1 -1
  135. package/dist/commands/git/disconnect.d.ts +0 -6
  136. package/dist/commands/git/disconnect.js +11 -32
  137. package/dist/commands/git/disconnect.js.map +1 -1
  138. package/dist/commands/git.js +2 -2
  139. package/dist/commands/git.js.map +1 -1
  140. package/dist/commands/link.d.ts +16 -0
  141. package/dist/commands/link.js +97 -0
  142. package/dist/commands/link.js.map +1 -0
  143. package/dist/commands/login.js +6 -24
  144. package/dist/commands/login.js.map +1 -1
  145. package/dist/commands/logs.d.ts +16 -0
  146. package/dist/commands/logs.js +96 -0
  147. package/dist/commands/logs.js.map +1 -0
  148. package/dist/commands/playground/configure.d.ts +12 -0
  149. package/dist/commands/playground/configure.js +39 -0
  150. package/dist/commands/playground/configure.js.map +1 -0
  151. package/dist/commands/playground/disable.d.ts +9 -0
  152. package/dist/commands/playground/disable.js +24 -0
  153. package/dist/commands/playground/disable.js.map +1 -0
  154. package/dist/commands/playground/enable.d.ts +9 -0
  155. package/dist/commands/playground/enable.js +24 -0
  156. package/dist/commands/playground/enable.js.map +1 -0
  157. package/dist/commands/playground/example-prompt/add.d.ts +12 -0
  158. package/dist/commands/playground/example-prompt/add.js +39 -0
  159. package/dist/commands/playground/example-prompt/add.js.map +1 -0
  160. package/dist/commands/playground/example-prompt/list.d.ts +9 -0
  161. package/dist/commands/playground/example-prompt/list.js +24 -0
  162. package/dist/commands/playground/example-prompt/list.js.map +1 -0
  163. package/dist/commands/playground/example-prompt/remove.d.ts +11 -0
  164. package/dist/commands/playground/example-prompt/remove.js +34 -0
  165. package/dist/commands/playground/example-prompt/remove.js.map +1 -0
  166. package/dist/commands/playground/headers/add.d.ts +14 -0
  167. package/dist/commands/playground/headers/add.js +49 -0
  168. package/dist/commands/playground/headers/add.js.map +1 -0
  169. package/dist/commands/playground/headers/list.d.ts +9 -0
  170. package/dist/commands/playground/headers/list.js +24 -0
  171. package/dist/commands/playground/headers/list.js.map +1 -0
  172. package/dist/commands/playground/headers/remove.d.ts +11 -0
  173. package/dist/commands/playground/headers/remove.js +34 -0
  174. package/dist/commands/playground/headers/remove.js.map +1 -0
  175. package/dist/commands/playground/status.d.ts +9 -0
  176. package/dist/commands/playground/status.js +24 -0
  177. package/dist/commands/playground/status.js.map +1 -0
  178. package/dist/commands/project/inspect.d.ts +10 -0
  179. package/dist/commands/project/inspect.js +97 -0
  180. package/dist/commands/project/inspect.js.map +1 -0
  181. package/dist/commands/project/list.d.ts +10 -0
  182. package/dist/commands/project/list.js +50 -0
  183. package/dist/commands/project/list.js.map +1 -0
  184. package/dist/commands/publish.d.ts +14 -0
  185. package/dist/commands/publish.js +47 -0
  186. package/dist/commands/publish.js.map +1 -0
  187. package/dist/commands/team/inspect.d.ts +10 -0
  188. package/dist/commands/team/inspect.js +97 -0
  189. package/dist/commands/team/inspect.js.map +1 -0
  190. package/dist/commands/team/list.d.ts +9 -0
  191. package/dist/commands/team/list.js +40 -0
  192. package/dist/commands/team/list.js.map +1 -0
  193. package/dist/commands/tunnel.d.ts +10 -0
  194. package/dist/commands/tunnel.js +132 -0
  195. package/dist/commands/tunnel.js.map +1 -0
  196. package/dist/commands/whoami.js +2 -14
  197. package/dist/commands/whoami.js.map +1 -1
  198. package/dist/lib/alpic-command.d.ts +7 -2
  199. package/dist/lib/alpic-command.js +14 -6
  200. package/dist/lib/alpic-command.js.map +1 -1
  201. package/dist/lib/archive.d.ts +3 -3
  202. package/dist/lib/archive.js +21 -19
  203. package/dist/lib/archive.js.map +1 -1
  204. package/dist/lib/audit.d.ts +16 -0
  205. package/dist/lib/audit.js +258 -0
  206. package/dist/lib/audit.js.map +1 -0
  207. package/dist/lib/auth/auth.d.ts +3 -0
  208. package/dist/lib/auth/auth.js +26 -3
  209. package/dist/lib/auth/auth.js.map +1 -1
  210. package/dist/lib/auth/oauth/client.d.ts +1 -1
  211. package/dist/lib/auth/oauth/client.js +7 -1
  212. package/dist/lib/auth/oauth/client.js.map +1 -1
  213. package/dist/lib/auth/oauth/server/index.d.ts +2 -1
  214. package/dist/lib/auth/oauth/server/index.js +36 -10
  215. package/dist/lib/auth/oauth/server/index.js.map +1 -1
  216. package/dist/lib/auth/whoami.d.ts +1 -28
  217. package/dist/lib/auth/whoami.js +29 -19
  218. package/dist/lib/auth/whoami.js.map +1 -1
  219. package/dist/lib/base-workflow.d.ts +1 -1
  220. package/dist/lib/base-workflow.js +1 -1
  221. package/dist/lib/base-workflow.js.map +1 -1
  222. package/dist/lib/config.d.ts +3 -2
  223. package/dist/lib/config.js +8 -7
  224. package/dist/lib/config.js.map +1 -1
  225. package/dist/lib/deployment.d.ts +69 -2
  226. package/dist/lib/deployment.js +113 -16
  227. package/dist/lib/deployment.js.map +1 -1
  228. package/dist/lib/environment-variable.d.ts +37 -0
  229. package/dist/lib/environment-variable.js +305 -0
  230. package/dist/lib/environment-variable.js.map +1 -0
  231. package/dist/lib/git.d.ts +5 -5
  232. package/dist/lib/git.js +10 -13
  233. package/dist/lib/git.js.map +1 -1
  234. package/dist/lib/global-store.d.ts +1 -1
  235. package/dist/lib/global-store.js +4 -3
  236. package/dist/lib/global-store.js.map +1 -1
  237. package/dist/lib/{project.d.ts → link.d.ts} +31 -14
  238. package/dist/lib/{project.js → link.js} +186 -98
  239. package/dist/lib/link.js.map +1 -0
  240. package/dist/lib/logs.d.ts +20 -0
  241. package/dist/lib/logs.js +87 -0
  242. package/dist/lib/logs.js.map +1 -0
  243. package/dist/lib/playground.d.ts +53 -0
  244. package/dist/lib/playground.js +288 -0
  245. package/dist/lib/playground.js.map +1 -0
  246. package/dist/lib/publish.d.ts +22 -0
  247. package/dist/lib/publish.js +201 -0
  248. package/dist/lib/publish.js.map +1 -0
  249. package/dist/lib/resolve.d.ts +6 -0
  250. package/dist/lib/resolve.js +26 -0
  251. package/dist/lib/resolve.js.map +1 -0
  252. package/dist/lib/table.d.ts +8 -0
  253. package/dist/lib/table.js +27 -0
  254. package/dist/lib/table.js.map +1 -0
  255. package/dist/lib/telemetry.js +1 -1
  256. package/dist/lib/telemetry.js.map +1 -1
  257. package/dist/lib/utils.d.ts +6 -0
  258. package/dist/lib/utils.js +54 -0
  259. package/dist/lib/utils.js.map +1 -0
  260. package/dist/lib/utils.test.d.ts +1 -0
  261. package/dist/lib/utils.test.js +27 -0
  262. package/dist/lib/utils.test.js.map +1 -0
  263. package/dist/types.d.ts +1 -0
  264. package/package.json +28 -21
  265. package/dist/lib/project.js.map +0 -1
@@ -0,0 +1,97 @@
1
+ import * as p from "@clack/prompts";
2
+ import { Flags } from "@oclif/core";
3
+ import chalk from "chalk";
4
+ import { api } from "../api.js";
5
+ import { AlpicCommand } from "../lib/alpic-command.js";
6
+ import { GitWorkflow, isGitRepository, listGithubRemotes } from "../lib/git.js";
7
+ import { LinkWorkflow, RUNTIMES } from "../lib/link.js";
8
+ export class Link extends AlpicCommand {
9
+ static description = "Link the current directory to an Alpic project";
10
+ static examples = [
11
+ "<%= config.bin %> link",
12
+ "<%= config.bin %> link --non-interactive --project-name my-app --runtime node24",
13
+ ];
14
+ static flags = {
15
+ "team-id": Flags.string({
16
+ description: "Team ID to use",
17
+ required: false,
18
+ }),
19
+ "project-id": Flags.string({
20
+ description: "Link to this existing project ID",
21
+ required: false,
22
+ }),
23
+ "environment-id": Flags.string({
24
+ description: "Use this environment ID",
25
+ required: false,
26
+ }),
27
+ "project-name": Flags.string({
28
+ description: "New project name",
29
+ required: false,
30
+ }),
31
+ runtime: Flags.string({
32
+ description: "New project runtime (node24, node22, python3.14, python3.13)",
33
+ required: false,
34
+ options: RUNTIMES,
35
+ }),
36
+ "root-dir": Flags.string({
37
+ description: "Path to the app root for builds and deployments",
38
+ required: false,
39
+ }),
40
+ };
41
+ async run() {
42
+ const { flags } = await this.parse(Link);
43
+ p.intro("Linking project to Alpic");
44
+ await this.ensureAuthenticated(flags);
45
+ const workflow = new LinkWorkflow({
46
+ "non-interactive": flags["non-interactive"],
47
+ teamId: flags["team-id"],
48
+ projectId: flags["project-id"],
49
+ environmentId: flags["environment-id"],
50
+ projectName: flags["project-name"],
51
+ runtime: flags.runtime,
52
+ rootDir: flags["root-dir"],
53
+ });
54
+ const linkedConfig = await workflow.runLinkFlow();
55
+ if (!linkedConfig) {
56
+ p.cancel("Linking cancelled.");
57
+ this.exit(0);
58
+ return;
59
+ }
60
+ if (!flags["non-interactive"] && isGitRepository()) {
61
+ await this.offerGithubRepositoryConnect(linkedConfig);
62
+ }
63
+ p.outro(`Linked to project "${linkedConfig.projectName}", environment "${linkedConfig.environmentName}".\nFuture deploys from this directory will target this project and environment.`);
64
+ }
65
+ async offerGithubRepositoryConnect(linkedConfig) {
66
+ const project = await api.projects.get.v1({ projectId: linkedConfig.projectId });
67
+ if (project.sourceRepository) {
68
+ p.log.info(`Project "${project.name}" is already connected to "${project.sourceRepository}".`);
69
+ return;
70
+ }
71
+ await this.promptAndConnectGithubRepository(linkedConfig.projectId);
72
+ }
73
+ async promptAndConnectGithubRepository(projectId) {
74
+ const remotes = listGithubRemotes();
75
+ if (remotes.length === 0) {
76
+ return;
77
+ }
78
+ const connectGit = await p.confirm({
79
+ message: chalk.bold("Connect this project to a GitHub repository?"),
80
+ initialValue: true,
81
+ });
82
+ if (p.isCancel(connectGit) || !connectGit) {
83
+ return;
84
+ }
85
+ const gitWorkflow = new GitWorkflow({ "non-interactive": false });
86
+ const selectedRepo = await gitWorkflow.selectRemoteSourceRepository(remotes);
87
+ const spin = p.spinner();
88
+ spin.start("Connecting GitHub repository...");
89
+ await api.projects.update.v1({
90
+ projectId,
91
+ sourceRepository: selectedRepo,
92
+ });
93
+ spin.stop(`Connected to ${selectedRepo}.`);
94
+ p.log.info("To automatically trigger deployments on every push,\nmake sure to install the Alpic GitHub App on this repository.");
95
+ }
96
+ }
97
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,21 @@
1
1
  import * as p from "@clack/prompts";
2
- import chalk from "chalk";
3
- import open from "open";
4
2
  import { AlpicCommand } from "../lib/alpic-command.js";
5
- import { oAuthClient } from "../lib/auth/oauth/client.js";
6
- import { getLoginPageUrl, listenToOAuthCallback } from "../lib/auth/oauth/server/index.js";
7
- import { getWhoamiInfo } from "../lib/auth/whoami.js";
8
- import { globalStore } from "../lib/global-store.js";
3
+ import { oauthLogin } from "../lib/auth/auth.js";
4
+ import { getOAuthClient } from "../lib/auth/oauth/client.js";
5
+ import { getWhoamiInfoMessage } from "../lib/auth/whoami.js";
9
6
  export class Login extends AlpicCommand {
10
7
  static description = "Log in to Alpic (opens browser, stores tokens)";
11
8
  static examples = ["<%= config.bin %> login"];
12
9
  async run() {
13
10
  await this.parse(Login);
14
11
  p.intro("Log in to Alpic");
15
- const token = await oAuthClient.getValidAccessToken();
12
+ const token = await getOAuthClient().getValidAccessToken();
16
13
  if (token) {
17
14
  p.outro("Already logged in.");
18
15
  return;
19
16
  }
20
- const { authorizeUrl, state, nonce, codeVerifier } = await oAuthClient.prepareOAuthConfig();
21
- p.log.message("Opening browser to log in…");
22
- await open(getLoginPageUrl());
23
- const storedToken = await listenToOAuthCallback({
24
- state,
25
- nonce,
26
- codeVerifier,
27
- authorizeUrl: authorizeUrl.toString(),
28
- });
29
- globalStore.saveCredentials(storedToken);
30
- const info = await getWhoamiInfo();
31
- if (!info) {
32
- p.cancel("Failed to get user information.");
33
- return;
34
- }
35
- const msg = `Authenticated as ${chalk.green(info.name)} (${chalk.cyan(info.email)})`;
36
- p.outro(msg);
17
+ await oauthLogin();
18
+ p.outro(await getWhoamiInfoMessage());
37
19
  }
38
20
  }
39
21
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,KAAM,SAAQ,YAAY;IACrC,MAAM,CAAU,WAAW,GAAG,gDAAgD,CAAC;IAE/E,MAAM,CAAU,QAAQ,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAExB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAE5F,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE9B,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC;YAC9C,KAAK;YACL,KAAK;YACL,YAAY;YACZ,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAC;QAEH,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,oBAAoB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACrF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACf,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,OAAO,KAAM,SAAQ,YAAY;IACrC,MAAM,CAAU,WAAW,GAAG,gDAAgD,CAAC;IAE/E,MAAM,CAAU,QAAQ,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAExB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC,mBAAmB,EAAE,CAAC;QAC3D,IAAI,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,UAAU,EAAE,CAAC;QAEnB,CAAC,CAAC,KAAK,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC;IACxC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { AlpicCommand } from "../lib/alpic-command.js";
2
+ export declare class Logs extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ since: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ until: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ limit: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ follow: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ level: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ "no-color": import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,96 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { api } from "../api.js";
3
+ import { AlpicCommand } from "../lib/alpic-command.js";
4
+ import { followEnvironmentLogs, parseLevel, printLog } from "../lib/logs.js";
5
+ import { resolveEnvironmentId } from "../lib/resolve.js";
6
+ export class Logs extends AlpicCommand {
7
+ static description = "Stream runtime logs for an environment";
8
+ static examples = [
9
+ "<%= config.bin %> logs --environment-id <environmentId>",
10
+ "<%= config.bin %> logs --environment-id <environmentId> --since 1h",
11
+ "<%= config.bin %> logs --environment-id <environmentId> --follow",
12
+ "<%= config.bin %> logs --environment-id <environmentId> --level ERROR --level WARNING",
13
+ "<%= config.bin %> logs --environment-id <environmentId> --search 'timeout' --limit 50",
14
+ "<%= config.bin %> logs --environment-id <environmentId> --no-color",
15
+ ];
16
+ static flags = {
17
+ "environment-id": Flags.string({
18
+ description: "The ID of the environment",
19
+ required: false,
20
+ }),
21
+ since: Flags.string({
22
+ description: "Show logs after this time (e.g. 1h, 30m, 2024-01-01T00:00:00Z)",
23
+ required: false,
24
+ }),
25
+ until: Flags.string({
26
+ description: "Show logs before this time (e.g. 1h, 30m, 2024-01-01T00:00:00Z). Cannot be used with --follow",
27
+ required: false,
28
+ }),
29
+ limit: Flags.integer({
30
+ char: "n",
31
+ description: "Maximum number of log entries to fetch. Cannot be used with --follow",
32
+ required: false,
33
+ min: 1,
34
+ max: 1000,
35
+ }),
36
+ follow: Flags.boolean({
37
+ char: "f",
38
+ description: "Poll for new logs continuously",
39
+ required: false,
40
+ default: false,
41
+ }),
42
+ level: Flags.string({
43
+ description: "Filter by log level (INFO, ERROR, WARNING, DEBUG)",
44
+ required: false,
45
+ multiple: true,
46
+ }),
47
+ search: Flags.string({
48
+ description: "Filter logs. Accepts a regex-style pattern or plain text",
49
+ required: false,
50
+ }),
51
+ "no-color": Flags.boolean({
52
+ description: "Disable colorized output and show log levels as text",
53
+ required: false,
54
+ default: false,
55
+ }),
56
+ };
57
+ async run() {
58
+ const { flags } = await this.parse(Logs);
59
+ await this.ensureAuthenticated(flags);
60
+ const environmentId = resolveEnvironmentId(flags);
61
+ const level = flags.level !== undefined ? parseLevel(flags.level) : undefined;
62
+ if (flags.follow && flags.until !== undefined) {
63
+ throw new Error("--until cannot be used with --follow");
64
+ }
65
+ if (flags.follow && flags.limit !== undefined) {
66
+ throw new Error("--limit cannot be used with --follow");
67
+ }
68
+ const options = {
69
+ environmentId,
70
+ since: flags.since ?? (flags.follow ? "10m" : undefined),
71
+ until: flags.until,
72
+ limit: flags.limit,
73
+ level,
74
+ search: flags.search,
75
+ };
76
+ const { logs, nextToken } = await api.environments.getLogs.v1(options);
77
+ const onLog = (log) => {
78
+ printLog(log, { noColor: flags["no-color"] });
79
+ };
80
+ for (const log of logs) {
81
+ onLog(log);
82
+ }
83
+ if (!flags.follow)
84
+ return;
85
+ await followEnvironmentLogs({
86
+ environmentId,
87
+ limit: flags.limit,
88
+ level,
89
+ search: flags.search,
90
+ nextToken,
91
+ initialLogs: logs,
92
+ onLog,
93
+ });
94
+ }
95
+ }
96
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,OAAO,IAAK,SAAQ,YAAY;IACpC,MAAM,CAAU,WAAW,GAAG,wCAAwC,CAAC;IAEvE,MAAM,CAAU,QAAQ,GAAG;QACzB,yDAAyD;QACzD,oEAAoE;QACpE,kEAAkE;QAClE,uFAAuF;QACvF,uFAAuF;QACvF,oEAAoE;KACrE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,gEAAgE;YAC7E,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,+FAA+F;YAC5G,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sEAAsE;YACnF,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,IAAI;SACV,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,0DAA0D;YACvE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9E,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG;YACd,aAAa;YACb,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;QAEF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAEvE,MAAM,KAAK,GAAG,CAAC,GAA0B,EAAE,EAAE;YAC3C,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAE1B,MAAM,qBAAqB,CAAC;YAC1B,aAAa;YACb,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS;YACT,WAAW,EAAE,IAAI;YACjB,KAAK;SACN,CAAC,CAAC;IACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { AlpicCommand } from "../../lib/alpic-command.js";
2
+ export default class PlaygroundConfigure extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,39 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../lib/alpic-command.js";
3
+ import { PlaygroundWorkflow } from "../../lib/playground.js";
4
+ import { resolveEnvironmentId } from "../../lib/resolve.js";
5
+ export default class PlaygroundConfigure extends AlpicCommand {
6
+ static description = "Set the playground server name and description";
7
+ static examples = [
8
+ "<%= config.bin %> playground configure",
9
+ '<%= config.bin %> playground configure --name "My Server" --description "A helpful MCP server"',
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ name: Flags.string({
17
+ description: "The server name (max 100 characters)",
18
+ required: false,
19
+ }),
20
+ description: Flags.string({
21
+ description: "The server description (max 500 characters)",
22
+ required: false,
23
+ }),
24
+ "non-interactive": Flags.boolean({
25
+ description: "Disable interactive prompts. Requires --name and --description.",
26
+ default: false,
27
+ }),
28
+ };
29
+ async run() {
30
+ const { flags } = await this.parse(PlaygroundConfigure);
31
+ await this.ensureAuthenticated(flags);
32
+ const environmentId = resolveEnvironmentId(flags);
33
+ await new PlaygroundWorkflow(flags).configure(environmentId, {
34
+ name: flags.name,
35
+ description: flags.description,
36
+ });
37
+ }
38
+ }
39
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/commands/playground/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,YAAY;IAC3D,MAAM,CAAU,WAAW,GAAG,gDAAgD,CAAC;IAE/E,MAAM,CAAU,QAAQ,GAAG;QACzB,wCAAwC;QACxC,gGAAgG;KACjG,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,iEAAiE;YAC9E,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE;YAC3D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC,CAAC;IACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { AlpicCommand } from "../../lib/alpic-command.js";
2
+ export default class PlaygroundDisable extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
@@ -0,0 +1,24 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../lib/alpic-command.js";
3
+ import { PlaygroundWorkflow } from "../../lib/playground.js";
4
+ import { resolveEnvironmentId } from "../../lib/resolve.js";
5
+ export default class PlaygroundDisable extends AlpicCommand {
6
+ static description = "Disable the playground for an environment";
7
+ static examples = [
8
+ "<%= config.bin %> playground disable",
9
+ "<%= config.bin %> playground disable --environment-id <environmentId>",
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ };
17
+ async run() {
18
+ const { flags } = await this.parse(PlaygroundDisable);
19
+ await this.ensureAuthenticated(flags);
20
+ const environmentId = resolveEnvironmentId(flags);
21
+ await new PlaygroundWorkflow(flags).disable(environmentId);
22
+ }
23
+ }
24
+ //# sourceMappingURL=disable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/commands/playground/disable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,YAAY;IACzD,MAAM,CAAU,WAAW,GAAG,2CAA2C,CAAC;IAE1E,MAAM,CAAU,QAAQ,GAAG;QACzB,sCAAsC;QACtC,uEAAuE;KACxE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { AlpicCommand } from "../../lib/alpic-command.js";
2
+ export default class PlaygroundEnable extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
@@ -0,0 +1,24 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../lib/alpic-command.js";
3
+ import { PlaygroundWorkflow } from "../../lib/playground.js";
4
+ import { resolveEnvironmentId } from "../../lib/resolve.js";
5
+ export default class PlaygroundEnable extends AlpicCommand {
6
+ static description = "Enable the playground for an environment";
7
+ static examples = [
8
+ "<%= config.bin %> playground enable",
9
+ "<%= config.bin %> playground enable --environment-id <environmentId>",
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ };
17
+ async run() {
18
+ const { flags } = await this.parse(PlaygroundEnable);
19
+ await this.ensureAuthenticated(flags);
20
+ const environmentId = resolveEnvironmentId(flags);
21
+ await new PlaygroundWorkflow(flags).enable(environmentId);
22
+ }
23
+ }
24
+ //# sourceMappingURL=enable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable.js","sourceRoot":"","sources":["../../../src/commands/playground/enable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,YAAY;IACxD,MAAM,CAAU,WAAW,GAAG,0CAA0C,CAAC;IAEzE,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,sEAAsE;KACvE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export default class PlaygroundExamplePromptAdd extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ title: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ prompt: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,39 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
3
+ import { PlaygroundWorkflow } from "../../../lib/playground.js";
4
+ import { resolveEnvironmentId } from "../../../lib/resolve.js";
5
+ export default class PlaygroundExamplePromptAdd extends AlpicCommand {
6
+ static description = "Add an example prompt to the playground (max 3)";
7
+ static examples = [
8
+ "<%= config.bin %> playground example-prompt add",
9
+ '<%= config.bin %> playground example-prompt add --title "Hello" --prompt "Say hello to the user"',
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ title: Flags.string({
17
+ description: "The example prompt title (max 100 characters)",
18
+ required: false,
19
+ }),
20
+ prompt: Flags.string({
21
+ description: "The example prompt text (max 500 characters)",
22
+ required: false,
23
+ }),
24
+ "non-interactive": Flags.boolean({
25
+ description: "Disable interactive prompts. Requires --title and --prompt.",
26
+ default: false,
27
+ }),
28
+ };
29
+ async run() {
30
+ const { flags } = await this.parse(PlaygroundExamplePromptAdd);
31
+ await this.ensureAuthenticated(flags);
32
+ const environmentId = resolveEnvironmentId(flags);
33
+ await new PlaygroundWorkflow(flags).addExamplePrompt(environmentId, {
34
+ title: flags.title,
35
+ prompt: flags.prompt,
36
+ });
37
+ }
38
+ }
39
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/commands/playground/example-prompt/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,YAAY;IAClE,MAAM,CAAU,WAAW,GAAG,iDAAiD,CAAC;IAEhF,MAAM,CAAU,QAAQ,GAAG;QACzB,iDAAiD;QACjD,kGAAkG;KACnG,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,6DAA6D;YAC1E,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE;YAClE,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export default class PlaygroundExamplePromptList extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
@@ -0,0 +1,24 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
3
+ import { PlaygroundWorkflow } from "../../../lib/playground.js";
4
+ import { resolveEnvironmentId } from "../../../lib/resolve.js";
5
+ export default class PlaygroundExamplePromptList extends AlpicCommand {
6
+ static description = "List playground example prompts for an environment";
7
+ static examples = [
8
+ "<%= config.bin %> playground example-prompt list",
9
+ "<%= config.bin %> playground example-prompt list --environment-id <environmentId>",
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ };
17
+ async run() {
18
+ const { flags } = await this.parse(PlaygroundExamplePromptList);
19
+ await this.ensureAuthenticated(flags);
20
+ const environmentId = resolveEnvironmentId(flags);
21
+ await new PlaygroundWorkflow(flags).listExamplePrompts(environmentId);
22
+ }
23
+ }
24
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/playground/example-prompt/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,2BAA4B,SAAQ,YAAY;IACnE,MAAM,CAAU,WAAW,GAAG,oDAAoD,CAAC;IAEnF,MAAM,CAAU,QAAQ,GAAG;QACzB,kDAAkD;QAClD,mFAAmF;KACpF,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export default class PlaygroundExamplePromptRemove extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ title: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ "non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,34 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
3
+ import { PlaygroundWorkflow } from "../../../lib/playground.js";
4
+ import { resolveEnvironmentId } from "../../../lib/resolve.js";
5
+ export default class PlaygroundExamplePromptRemove extends AlpicCommand {
6
+ static description = "Remove an example prompt from the playground";
7
+ static examples = [
8
+ "<%= config.bin %> playground example-prompt remove",
9
+ '<%= config.bin %> playground example-prompt remove --title "Hello"',
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ title: Flags.string({
17
+ description: "The title of the example prompt to remove",
18
+ required: false,
19
+ }),
20
+ "non-interactive": Flags.boolean({
21
+ description: "Disable interactive prompts. Requires --title.",
22
+ default: false,
23
+ }),
24
+ };
25
+ async run() {
26
+ const { flags } = await this.parse(PlaygroundExamplePromptRemove);
27
+ await this.ensureAuthenticated(flags);
28
+ const environmentId = resolveEnvironmentId(flags);
29
+ await new PlaygroundWorkflow(flags).removeExamplePrompt(environmentId, {
30
+ title: flags.title,
31
+ });
32
+ }
33
+ }
34
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/playground/example-prompt/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,YAAY;IACrE,MAAM,CAAU,WAAW,GAAG,8CAA8C,CAAC;IAE7E,MAAM,CAAU,QAAQ,GAAG;QACzB,oDAAoD;QACpD,oEAAoE;KACrE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,gDAAgD;YAC7D,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE;YACrE,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;IACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export default class PlaygroundHeadersAdd extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ required: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ secret: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ "non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }