alpic 0.0.0-dev.gee3e167 → 0.0.0-dev.gee425da

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 (263) hide show
  1. package/README.md +18 -0
  2. package/bin/dev.js +0 -0
  3. package/bin/run.js +15 -1
  4. package/dist/__tests__/alpic-command.test.js +8 -4
  5. package/dist/__tests__/alpic-command.test.js.map +1 -1
  6. package/dist/__tests__/audit.e2e.test.js +17 -30
  7. package/dist/__tests__/audit.e2e.test.js.map +1 -1
  8. package/dist/__tests__/auth.e2e.test.js +9 -23
  9. package/dist/__tests__/auth.e2e.test.js.map +1 -1
  10. package/dist/__tests__/deploy-flags.e2e.test.js +6 -21
  11. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -1
  12. package/dist/__tests__/deploy.e2e.test.js +5 -21
  13. package/dist/__tests__/deploy.e2e.test.js.map +1 -1
  14. package/dist/__tests__/deployment-inspect.e2e.test.js +18 -31
  15. package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -1
  16. package/dist/__tests__/deployment-list.e2e.test.js +18 -31
  17. package/dist/__tests__/deployment-list.e2e.test.js.map +1 -1
  18. package/dist/__tests__/deployment-logs.e2e.test.js +15 -29
  19. package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -1
  20. package/dist/__tests__/environment-delete.e2e.test.d.ts +1 -0
  21. package/dist/__tests__/environment-delete.e2e.test.js +95 -0
  22. package/dist/__tests__/environment-delete.e2e.test.js.map +1 -0
  23. package/dist/__tests__/environment-list.e2e.test.js +6 -22
  24. package/dist/__tests__/environment-list.e2e.test.js.map +1 -1
  25. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +19 -31
  26. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -1
  27. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +19 -31
  28. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -1
  29. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +18 -31
  30. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -1
  31. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +18 -31
  32. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -1
  33. package/dist/__tests__/git-flags.e2e.test.js +6 -22
  34. package/dist/__tests__/git-flags.e2e.test.js.map +1 -1
  35. package/dist/__tests__/git.e2e.test.js +7 -22
  36. package/dist/__tests__/git.e2e.test.js.map +1 -1
  37. package/dist/__tests__/insights-category.e2e.test.d.ts +1 -0
  38. package/dist/__tests__/insights-category.e2e.test.js +247 -0
  39. package/dist/__tests__/insights-category.e2e.test.js.map +1 -0
  40. package/dist/__tests__/insights.e2e.test.d.ts +1 -0
  41. package/dist/__tests__/insights.e2e.test.js +193 -0
  42. package/dist/__tests__/insights.e2e.test.js.map +1 -0
  43. package/dist/__tests__/logs.e2e.test.js +21 -35
  44. package/dist/__tests__/logs.e2e.test.js.map +1 -1
  45. package/dist/__tests__/mock-api.d.ts +28 -1
  46. package/dist/__tests__/mock-api.js +385 -41
  47. package/dist/__tests__/mock-api.js.map +1 -1
  48. package/dist/__tests__/playground/playground-configure.e2e.test.js +18 -26
  49. package/dist/__tests__/playground/playground-configure.e2e.test.js.map +1 -1
  50. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js +18 -26
  51. package/dist/__tests__/playground/playground-enable-disable.e2e.test.js.map +1 -1
  52. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js +18 -26
  53. package/dist/__tests__/playground/playground-example-prompt.e2e.test.js.map +1 -1
  54. package/dist/__tests__/playground/playground-headers.e2e.test.js +18 -26
  55. package/dist/__tests__/playground/playground-headers.e2e.test.js.map +1 -1
  56. package/dist/__tests__/playground/playground-status.e2e.test.js +18 -26
  57. package/dist/__tests__/playground/playground-status.e2e.test.js.map +1 -1
  58. package/dist/__tests__/project-list.e2e.test.js +5 -21
  59. package/dist/__tests__/project-list.e2e.test.js.map +1 -1
  60. package/dist/__tests__/publish.e2e.test.js +6 -24
  61. package/dist/__tests__/publish.e2e.test.js.map +1 -1
  62. package/dist/__tests__/submission.e2e.test.d.ts +1 -0
  63. package/dist/__tests__/submission.e2e.test.js +173 -0
  64. package/dist/__tests__/submission.e2e.test.js.map +1 -0
  65. package/dist/__tests__/team-inspect.e2e.test.js +26 -1
  66. package/dist/__tests__/team-inspect.e2e.test.js.map +1 -1
  67. package/dist/__tests__/team-list.e2e.test.js +5 -21
  68. package/dist/__tests__/team-list.e2e.test.js.map +1 -1
  69. package/dist/__tests__/telemetry-destinations.e2e.test.d.ts +1 -0
  70. package/dist/__tests__/telemetry-destinations.e2e.test.js +105 -0
  71. package/dist/__tests__/telemetry-destinations.e2e.test.js.map +1 -0
  72. package/dist/__tests__/tunnel.e2e.test.js +114 -23
  73. package/dist/__tests__/tunnel.e2e.test.js.map +1 -1
  74. package/dist/__tests__/utils.d.ts +17 -6
  75. package/dist/__tests__/utils.js +49 -20
  76. package/dist/__tests__/utils.js.map +1 -1
  77. package/dist/api.d.ts +1 -1
  78. package/dist/api.js +2 -21
  79. package/dist/api.js.map +1 -1
  80. package/dist/commands/audit.js +3 -1
  81. package/dist/commands/audit.js.map +1 -1
  82. package/dist/commands/deploy.js +71 -54
  83. package/dist/commands/deploy.js.map +1 -1
  84. package/dist/commands/deployment/list.js +3 -3
  85. package/dist/commands/deployment/list.js.map +1 -1
  86. package/dist/commands/environment/delete.d.ts +13 -0
  87. package/dist/commands/environment/delete.js +45 -0
  88. package/dist/commands/environment/delete.js.map +1 -0
  89. package/dist/commands/environment/inspect.js +3 -3
  90. package/dist/commands/environment/inspect.js.map +1 -1
  91. package/dist/commands/environment/list.js +3 -3
  92. package/dist/commands/environment/list.js.map +1 -1
  93. package/dist/commands/git/connect.js +2 -2
  94. package/dist/commands/git/connect.js.map +1 -1
  95. package/dist/commands/git/disconnect.js +2 -2
  96. package/dist/commands/git/disconnect.js.map +1 -1
  97. package/dist/commands/insights/category/create.d.ts +17 -0
  98. package/dist/commands/insights/category/create.js +63 -0
  99. package/dist/commands/insights/category/create.js.map +1 -0
  100. package/dist/commands/insights/category/delete.d.ts +13 -0
  101. package/dist/commands/insights/category/delete.js +40 -0
  102. package/dist/commands/insights/category/delete.js.map +1 -0
  103. package/dist/commands/insights/category/link.d.ts +14 -0
  104. package/dist/commands/insights/category/link.js +36 -0
  105. package/dist/commands/insights/category/link.js.map +1 -0
  106. package/dist/commands/insights/category/list.d.ts +13 -0
  107. package/dist/commands/insights/category/list.js +46 -0
  108. package/dist/commands/insights/category/list.js.map +1 -0
  109. package/dist/commands/insights/category/unlink.d.ts +14 -0
  110. package/dist/commands/insights/category/unlink.js +36 -0
  111. package/dist/commands/insights/category/unlink.js.map +1 -0
  112. package/dist/commands/insights/category/update.d.ts +16 -0
  113. package/dist/commands/insights/category/update.js +45 -0
  114. package/dist/commands/insights/category/update.js.map +1 -0
  115. package/dist/commands/insights/feedback/list.d.ts +19 -0
  116. package/dist/commands/insights/feedback/list.js +73 -0
  117. package/dist/commands/insights/feedback/list.js.map +1 -0
  118. package/dist/commands/insights/intent/list.d.ts +22 -0
  119. package/dist/commands/insights/intent/list.js +89 -0
  120. package/dist/commands/insights/intent/list.js.map +1 -0
  121. package/dist/commands/link.js +4 -3
  122. package/dist/commands/link.js.map +1 -1
  123. package/dist/commands/login.js +7 -5
  124. package/dist/commands/login.js.map +1 -1
  125. package/dist/commands/logout.js +1 -1
  126. package/dist/commands/logout.js.map +1 -1
  127. package/dist/commands/logs.js +1 -9
  128. package/dist/commands/logs.js.map +1 -1
  129. package/dist/commands/project/inspect.js +3 -3
  130. package/dist/commands/project/inspect.js.map +1 -1
  131. package/dist/commands/project/list.js +3 -3
  132. package/dist/commands/project/list.js.map +1 -1
  133. package/dist/commands/submission/create.d.ts +15 -0
  134. package/dist/commands/submission/create.js +59 -0
  135. package/dist/commands/submission/create.js.map +1 -0
  136. package/dist/commands/submission/inspect.d.ts +10 -0
  137. package/dist/commands/submission/inspect.js +56 -0
  138. package/dist/commands/submission/inspect.js.map +1 -0
  139. package/dist/commands/submission/list.d.ts +13 -0
  140. package/dist/commands/submission/list.js +63 -0
  141. package/dist/commands/submission/list.js.map +1 -0
  142. package/dist/commands/submission/update.d.ts +12 -0
  143. package/dist/commands/submission/update.js +37 -0
  144. package/dist/commands/submission/update.js.map +1 -0
  145. package/dist/commands/team/inspect.js +25 -10
  146. package/dist/commands/team/inspect.js.map +1 -1
  147. package/dist/commands/team/list.js +3 -3
  148. package/dist/commands/team/list.js.map +1 -1
  149. package/dist/commands/telemetry/destinations/create.d.ts +19 -0
  150. package/dist/commands/telemetry/destinations/create.js +57 -0
  151. package/dist/commands/telemetry/destinations/create.js.map +1 -0
  152. package/dist/commands/telemetry/destinations/delete.d.ts +13 -0
  153. package/dist/commands/telemetry/destinations/delete.js +27 -0
  154. package/dist/commands/telemetry/destinations/delete.js.map +1 -0
  155. package/dist/commands/telemetry/destinations/list.d.ts +13 -0
  156. package/dist/commands/telemetry/destinations/list.js +48 -0
  157. package/dist/commands/telemetry/destinations/list.js.map +1 -0
  158. package/dist/commands/telemetry/destinations/update.d.ts +20 -0
  159. package/dist/commands/telemetry/destinations/update.js +62 -0
  160. package/dist/commands/telemetry/destinations/update.js.map +1 -0
  161. package/dist/commands/tunnel.js +30 -66
  162. package/dist/commands/tunnel.js.map +1 -1
  163. package/dist/commands/whoami.js +1 -1
  164. package/dist/commands/whoami.js.map +1 -1
  165. package/dist/lib/agent-mode.d.ts +8 -1
  166. package/dist/lib/agent-mode.js +25 -26
  167. package/dist/lib/agent-mode.js.map +1 -1
  168. package/dist/lib/alpic-command.d.ts +2 -1
  169. package/dist/lib/alpic-command.js +20 -8
  170. package/dist/lib/alpic-command.js.map +1 -1
  171. package/dist/lib/alpic-sdk.d.ts +2 -0
  172. package/dist/lib/alpic-sdk.js +8 -0
  173. package/dist/lib/alpic-sdk.js.map +1 -0
  174. package/dist/lib/audit.d.ts +1 -0
  175. package/dist/lib/audit.js +24 -15
  176. package/dist/lib/audit.js.map +1 -1
  177. package/dist/lib/base-workflow.d.ts +2 -1
  178. package/dist/lib/base-workflow.js +3 -3
  179. package/dist/lib/base-workflow.js.map +1 -1
  180. package/dist/lib/deployment.d.ts +0 -21
  181. package/dist/lib/deployment.js +20 -69
  182. package/dist/lib/deployment.js.map +1 -1
  183. package/dist/lib/environment-variable.js +14 -13
  184. package/dist/lib/environment-variable.js.map +1 -1
  185. package/dist/lib/insights.d.ts +19 -0
  186. package/dist/lib/insights.js +54 -0
  187. package/dist/lib/insights.js.map +1 -0
  188. package/dist/lib/link.d.ts +1 -2
  189. package/dist/lib/link.js +20 -75
  190. package/dist/lib/link.js.map +1 -1
  191. package/dist/lib/logs.js +4 -5
  192. package/dist/lib/logs.js.map +1 -1
  193. package/dist/lib/playground.js +25 -25
  194. package/dist/lib/playground.js.map +1 -1
  195. package/dist/lib/project-settings.d.ts +7 -0
  196. package/dist/lib/project-settings.js +140 -0
  197. package/dist/lib/project-settings.js.map +1 -0
  198. package/dist/lib/project-settings.test.d.ts +1 -0
  199. package/dist/lib/project-settings.test.js +56 -0
  200. package/dist/lib/project-settings.test.js.map +1 -0
  201. package/dist/lib/publish.js +3 -3
  202. package/dist/lib/publish.js.map +1 -1
  203. package/dist/lib/resolve.d.ts +7 -6
  204. package/dist/lib/resolve.js +27 -23
  205. package/dist/lib/resolve.js.map +1 -1
  206. package/dist/lib/submission.d.ts +13 -0
  207. package/dist/lib/submission.js +52 -0
  208. package/dist/lib/submission.js.map +1 -0
  209. package/dist/lib/telemetry-destinations.d.ts +9 -0
  210. package/dist/lib/telemetry-destinations.js +21 -0
  211. package/dist/lib/telemetry-destinations.js.map +1 -0
  212. package/dist/lib/telemetry-destinations.test.d.ts +1 -0
  213. package/dist/lib/telemetry-destinations.test.js +14 -0
  214. package/dist/lib/telemetry-destinations.test.js.map +1 -0
  215. package/dist/lib/telemetry.js +27 -17
  216. package/dist/lib/telemetry.js.map +1 -1
  217. package/dist/lib/utils.d.ts +9 -1
  218. package/dist/lib/utils.js +28 -2
  219. package/dist/lib/utils.js.map +1 -1
  220. package/dist/lib/utils.test.js +43 -5
  221. package/dist/lib/utils.test.js.map +1 -1
  222. package/dist/lib/whoami.js +17 -0
  223. package/dist/lib/whoami.js.map +1 -0
  224. package/dist/sentry.js +3 -6
  225. package/dist/sentry.js.map +1 -1
  226. package/package.json +29 -32
  227. package/dist/lib/archive.d.ts +0 -7
  228. package/dist/lib/archive.js +0 -57
  229. package/dist/lib/archive.js.map +0 -1
  230. package/dist/lib/auth/auth.d.ts +0 -5
  231. package/dist/lib/auth/auth.js +0 -50
  232. package/dist/lib/auth/auth.js.map +0 -1
  233. package/dist/lib/auth/oauth/client.d.ts +0 -28
  234. package/dist/lib/auth/oauth/client.js +0 -116
  235. package/dist/lib/auth/oauth/client.js.map +0 -1
  236. package/dist/lib/auth/oauth/constants.d.ts +0 -2
  237. package/dist/lib/auth/oauth/constants.js +0 -3
  238. package/dist/lib/auth/oauth/constants.js.map +0 -1
  239. package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
  240. package/dist/lib/auth/oauth/server/assets/authorize.html +0 -234
  241. package/dist/lib/auth/oauth/server/assets/callback.html +0 -88
  242. package/dist/lib/auth/oauth/server/index.d.ts +0 -9
  243. package/dist/lib/auth/oauth/server/index.js +0 -128
  244. package/dist/lib/auth/oauth/server/index.js.map +0 -1
  245. package/dist/lib/auth/whoami.js +0 -47
  246. package/dist/lib/auth/whoami.js.map +0 -1
  247. package/dist/lib/config.d.ts +0 -12
  248. package/dist/lib/config.js +0 -32
  249. package/dist/lib/config.js.map +0 -1
  250. package/dist/lib/global-store.d.ts +0 -28
  251. package/dist/lib/global-store.js +0 -76
  252. package/dist/lib/global-store.js.map +0 -1
  253. package/dist/lib/upload.d.ts +0 -1
  254. package/dist/lib/upload.js +0 -13
  255. package/dist/lib/upload.js.map +0 -1
  256. package/dist/lib/vendor/pipenet.d.ts +0 -1
  257. package/dist/lib/vendor/pipenet.js +0 -16877
  258. package/dist/lib/vendor/pipenet.js.LEGAL.txt +0 -17
  259. package/dist/lib/vendor/pipenet.js.map +0 -7
  260. package/dist/types.d.ts +0 -8
  261. package/dist/types.js +0 -2
  262. package/dist/types.js.map +0 -1
  263. /package/dist/lib/{auth/whoami.d.ts → whoami.d.ts} +0 -0
@@ -0,0 +1,36 @@
1
+ import { Flags } from "@oclif/core";
2
+ import chalk from "chalk";
3
+ import { api } from "../../../api.js";
4
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
5
+ import { categoryFlags, resolveIntentCategory } from "../../../lib/insights.js";
6
+ import { environmentFlags, projectFlags, resolveEnvironmentId } from "../../../lib/resolve.js";
7
+ import { plural } from "../../../lib/utils.js";
8
+ export class InsightsCategoryLink extends AlpicCommand {
9
+ static description = "Link an intent category to intents";
10
+ static examples = [
11
+ "<%= config.bin %> insights category link --intent-id <intentId>",
12
+ "<%= config.bin %> insights category link --category-id <categoryId> --intent-id <intentId> --intent-id <intentId>",
13
+ ];
14
+ static flags = {
15
+ ...environmentFlags,
16
+ ...projectFlags,
17
+ ...categoryFlags,
18
+ "intent-id": Flags.string({ description: "The ID of an intent to link", multiple: true, required: true }),
19
+ };
20
+ async run() {
21
+ const { flags } = await this.parse(InsightsCategoryLink);
22
+ await this.ensureAuthenticated(flags);
23
+ const environmentId = await resolveEnvironmentId(flags);
24
+ const category = await resolveIntentCategory(environmentId, flags, "link");
25
+ const intentIds = [...new Set(flags["intent-id"])];
26
+ const logger = this.logger();
27
+ logger.start("Linking intents...");
28
+ await api.intentCategories.link.v1({
29
+ environmentId,
30
+ categoryId: category.id,
31
+ intentIds,
32
+ });
33
+ logger.stop(`Linked ${plural(intentIds.length, "intent")} to ${chalk.cyan(category.name)}. ✅`);
34
+ }
35
+ }
36
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../src/commands/insights/category/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,MAAM,CAAU,WAAW,GAAG,oCAAoC,CAAC;IAEnE,MAAM,CAAU,QAAQ,GAAG;QACzB,iEAAiE;QACjE,mHAAmH;KACpH,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,gBAAgB;QACnB,GAAG,YAAY;QACf,GAAG,aAAa;QAChB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC1G,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAEnC,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,aAAa;YACb,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjG,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export declare class InsightsCategoryList extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ "project-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ "project-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ "environment-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,46 @@
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 { ERRORS_ONLY } from "../../../lib/agent-mode.js";
6
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
7
+ import { pluralCategories } from "../../../lib/insights.js";
8
+ import { environmentFlags, projectFlags, resolveEnvironmentId } from "../../../lib/resolve.js";
9
+ import { formatTable } from "../../../lib/table.js";
10
+ export class InsightsCategoryList extends AlpicCommand {
11
+ static description = "List intent categories for an environment";
12
+ static examples = [
13
+ "<%= config.bin %> insights category list",
14
+ "<%= config.bin %> insights category list --environment-id <environmentId>",
15
+ "<%= config.bin %> insights category list --json --non-interactive",
16
+ ];
17
+ static flags = {
18
+ ...environmentFlags,
19
+ ...projectFlags,
20
+ json: Flags.boolean({ description: "Print the unmodified API response as JSON", default: false }),
21
+ };
22
+ async run() {
23
+ const { flags } = await this.parse(InsightsCategoryList);
24
+ await this.ensureAuthenticated(flags);
25
+ const environmentId = await resolveEnvironmentId(flags, { silent: flags.json });
26
+ const logger = this.logger(flags.json ? ERRORS_ONLY : "all");
27
+ logger.start("Fetching categories...");
28
+ const categories = await api.intentCategories.list.v1({ environmentId });
29
+ logger.stop(`Found ${pluralCategories(categories.length)}`);
30
+ if (flags.json) {
31
+ this.log(JSON.stringify(categories));
32
+ return;
33
+ }
34
+ if (categories.length === 0) {
35
+ p.log.info("No intent categories found in this environment.");
36
+ return;
37
+ }
38
+ console.log(formatTable(categories, [
39
+ { key: "name", header: "name", format: (value) => chalk.bold(value) },
40
+ { key: "color", header: "color", format: (value) => chalk.gray(value) },
41
+ { key: "intentCount", header: "intents", format: (value) => chalk.gray(value) },
42
+ { key: "id", header: "id", format: (value) => chalk.gray(value) },
43
+ ]));
44
+ }
45
+ }
46
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/insights/category/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export declare class InsightsCategoryUnlink extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "intent-id": import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
7
+ "category-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ "project-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "project-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ "environment-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,36 @@
1
+ import { Flags } from "@oclif/core";
2
+ import chalk from "chalk";
3
+ import { api } from "../../../api.js";
4
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
5
+ import { categoryFlags, resolveIntentCategory } from "../../../lib/insights.js";
6
+ import { environmentFlags, projectFlags, resolveEnvironmentId } from "../../../lib/resolve.js";
7
+ import { plural } from "../../../lib/utils.js";
8
+ export class InsightsCategoryUnlink extends AlpicCommand {
9
+ static description = "Unlink an intent category from intents";
10
+ static examples = [
11
+ "<%= config.bin %> insights category unlink --intent-id <intentId>",
12
+ "<%= config.bin %> insights category unlink --category-id <categoryId> --intent-id <intentId> --intent-id <intentId>",
13
+ ];
14
+ static flags = {
15
+ ...environmentFlags,
16
+ ...projectFlags,
17
+ ...categoryFlags,
18
+ "intent-id": Flags.string({ description: "The ID of an intent to unlink", multiple: true, required: true }),
19
+ };
20
+ async run() {
21
+ const { flags } = await this.parse(InsightsCategoryUnlink);
22
+ await this.ensureAuthenticated(flags);
23
+ const environmentId = await resolveEnvironmentId(flags);
24
+ const category = await resolveIntentCategory(environmentId, flags, "unlink");
25
+ const intentIds = [...new Set(flags["intent-id"])];
26
+ const logger = this.logger();
27
+ logger.start("Unlinking intents...");
28
+ await api.intentCategories.unlink.v1({
29
+ environmentId,
30
+ categoryId: category.id,
31
+ intentIds,
32
+ });
33
+ logger.stop(`Unlinked ${plural(intentIds.length, "intent")} from ${chalk.cyan(category.name)}. ✅`);
34
+ }
35
+ }
36
+ //# sourceMappingURL=unlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink.js","sourceRoot":"","sources":["../../../../src/commands/insights/category/unlink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,MAAM,CAAU,WAAW,GAAG,wCAAwC,CAAC;IAEvE,MAAM,CAAU,QAAQ,GAAG;QACzB,mEAAmE;QACnE,qHAAqH;KACtH,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,gBAAgB;QACnB,GAAG,YAAY;QACf,GAAG,aAAa;QAChB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC5G,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE3D,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAErC,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,aAAa;YACb,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrG,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export declare class InsightsCategoryUpdate extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ color: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ "category-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ "project-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ "project-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ "environment-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,45 @@
1
+ import { INTENT_CATEGORY_COLORS } from "@alpic-ai/api";
2
+ import { Flags } from "@oclif/core";
3
+ import chalk from "chalk";
4
+ import { api } from "../../../api.js";
5
+ import { ERRORS_ONLY } from "../../../lib/agent-mode.js";
6
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
7
+ import { categoryFlags, parseIntentCategoryColor, resolveIntentCategory } from "../../../lib/insights.js";
8
+ import { environmentFlags, projectFlags, resolveEnvironmentId } from "../../../lib/resolve.js";
9
+ export class InsightsCategoryUpdate extends AlpicCommand {
10
+ static description = "Rename or recolor an intent category";
11
+ static examples = [
12
+ "<%= config.bin %> insights category update --name Scheduling",
13
+ "<%= config.bin %> insights category update --category-id <categoryId> --color green",
14
+ ];
15
+ static flags = {
16
+ ...environmentFlags,
17
+ ...projectFlags,
18
+ ...categoryFlags,
19
+ name: Flags.string({ description: "The new category name" }),
20
+ color: Flags.string({ description: "The new category color", options: [...INTENT_CATEGORY_COLORS] }),
21
+ json: Flags.boolean({ description: "Print the unmodified API response as JSON", default: false }),
22
+ };
23
+ async run() {
24
+ const { flags } = await this.parse(InsightsCategoryUpdate);
25
+ if (flags.name === undefined && flags.color === undefined) {
26
+ throw new Error("At least one of --name or --color must be provided.");
27
+ }
28
+ await this.ensureAuthenticated(flags);
29
+ const environmentId = await resolveEnvironmentId(flags, { silent: flags.json });
30
+ const category = await resolveIntentCategory(environmentId, flags, "update", { silent: flags.json });
31
+ const logger = this.logger(flags.json ? ERRORS_ONLY : "all");
32
+ logger.start("Updating category...");
33
+ const updated = await api.intentCategories.update.v1({
34
+ environmentId,
35
+ categoryId: category.id,
36
+ name: flags.name,
37
+ color: parseIntentCategoryColor(flags.color),
38
+ });
39
+ logger.stop(`Updated ${chalk.cyan(updated.name)} (${updated.color}). ✅`);
40
+ if (flags.json) {
41
+ this.log(JSON.stringify(updated));
42
+ }
43
+ }
44
+ }
45
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/insights/category/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,MAAM,CAAU,WAAW,GAAG,sCAAsC,CAAC;IAErE,MAAM,CAAU,QAAQ,GAAG;QACzB,8DAA8D;QAC9D,qFAAqF;KACtF,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,gBAAgB;QACnB,GAAG,YAAY;QACf,GAAG,aAAa;QAChB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,GAAG,sBAAsB,CAAC,EAAE,CAAC;QACpG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,2CAA2C,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAClG,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE3D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAErG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAErC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,aAAa;YACb,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC;SAC7C,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC;QAEzE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export declare class InsightsFeedbackList extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ since: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ until: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "client-id": import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
11
+ offset: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
12
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ "project-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ "project-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ "environment-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
@@ -0,0 +1,73 @@
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 { ERRORS_ONLY } from "../../../lib/agent-mode.js";
6
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
7
+ import { truncateInsightContent } from "../../../lib/insights.js";
8
+ import { environmentFlags, projectFlags, resolveEnvironmentId } from "../../../lib/resolve.js";
9
+ import { formatTable } from "../../../lib/table.js";
10
+ import { plural, validateTimeFlag } from "../../../lib/utils.js";
11
+ export class InsightsFeedbackList extends AlpicCommand {
12
+ static description = "List user feedback for an environment";
13
+ static examples = [
14
+ "<%= config.bin %> insights feedback list",
15
+ "<%= config.bin %> insights feedback list --environment-name production --project-name my-project",
16
+ "<%= config.bin %> insights feedback list --search timeout --client-id claude-desktop",
17
+ "<%= config.bin %> insights feedback list --json --non-interactive",
18
+ ];
19
+ static flags = {
20
+ ...environmentFlags,
21
+ ...projectFlags,
22
+ since: Flags.string({
23
+ description: "Show feedback after this time (relative duration or ISO 8601 date)",
24
+ default: "7d",
25
+ }),
26
+ until: Flags.string({ description: "Show feedback before this time (relative duration or ISO 8601 date)" }),
27
+ search: Flags.string({ description: "Search feedback content and source" }),
28
+ "client-id": Flags.string({ description: "Filter by stable MCP client ID", multiple: true }),
29
+ limit: Flags.integer({ description: "Maximum number of feedbacks to return", min: 1, max: 200, default: 50 }),
30
+ offset: Flags.integer({ description: "Number of feedbacks to skip", min: 0, default: 0 }),
31
+ json: Flags.boolean({ description: "Print the unmodified API response as JSON", default: false }),
32
+ };
33
+ async run() {
34
+ const { flags } = await this.parse(InsightsFeedbackList);
35
+ await this.ensureAuthenticated(flags);
36
+ const environmentId = await resolveEnvironmentId(flags, { silent: flags.json });
37
+ validateTimeFlag(flags.since, "since");
38
+ validateTimeFlag(flags.until, "until");
39
+ const logger = this.logger(flags.json ? ERRORS_ONLY : "all");
40
+ logger.start("Fetching feedback...");
41
+ const response = await api.feedbacks.list.v1({
42
+ environmentId,
43
+ since: flags.since,
44
+ until: flags.until,
45
+ search: flags.search,
46
+ clientIds: flags["client-id"],
47
+ limit: flags.limit,
48
+ offset: flags.offset,
49
+ });
50
+ logger.stop(`Found ${plural(response.totalCount, "feedback")}`);
51
+ if (flags.json) {
52
+ this.log(JSON.stringify(response));
53
+ return;
54
+ }
55
+ if (response.feedbacks.length === 0) {
56
+ p.log.info("No feedback found for this period.");
57
+ return;
58
+ }
59
+ const rows = response.feedbacks.map((feedback) => ({
60
+ date: feedback.createdAt.toISOString(),
61
+ source: feedback.source,
62
+ feedback: truncateInsightContent(feedback.content),
63
+ client: feedback.clientName ?? feedback.clientId ?? "-",
64
+ }));
65
+ console.log(formatTable(rows, [
66
+ { key: "date", header: "date", format: (value) => chalk.gray(value) },
67
+ { key: "source", header: "source", format: (value) => chalk.cyan(value) },
68
+ { key: "feedback", header: "feedback", format: (value) => chalk.bold(value) },
69
+ { key: "client", header: "client", format: (value) => chalk.gray(value) },
70
+ ]));
71
+ }
72
+ }
73
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/insights/feedback/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
2
+ export declare class InsightsIntentList extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ since: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ until: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ tool: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ "client-id": import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ "category-id": import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ sort: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
14
+ offset: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
15
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ "project-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ "project-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ "environment-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ };
21
+ run(): Promise<void>;
22
+ }
@@ -0,0 +1,89 @@
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 { ERRORS_ONLY } from "../../../lib/agent-mode.js";
6
+ import { AlpicCommand } from "../../../lib/alpic-command.js";
7
+ import { truncateInsightContent } from "../../../lib/insights.js";
8
+ import { environmentFlags, projectFlags, resolveEnvironmentId } from "../../../lib/resolve.js";
9
+ import { formatTable } from "../../../lib/table.js";
10
+ import { plural, validateTimeFlag } from "../../../lib/utils.js";
11
+ const parseSortDir = (sort) => {
12
+ if (sort === "asc" || sort === "desc") {
13
+ return sort;
14
+ }
15
+ throw new Error(`Invalid sort direction: ${sort}`);
16
+ };
17
+ export class InsightsIntentList extends AlpicCommand {
18
+ static description = "List grouped user intents for an environment";
19
+ static examples = [
20
+ "<%= config.bin %> insights intent list",
21
+ "<%= config.bin %> insights intent list --environment-id <environmentId> --since 24h",
22
+ "<%= config.bin %> insights intent list --tool search --client-id claude-desktop",
23
+ "<%= config.bin %> insights intent list --json --non-interactive",
24
+ ];
25
+ static flags = {
26
+ ...environmentFlags,
27
+ ...projectFlags,
28
+ since: Flags.string({
29
+ description: "Show intents after this time (relative duration or ISO 8601 date)",
30
+ default: "7d",
31
+ }),
32
+ until: Flags.string({ description: "Show intents before this time (relative duration or ISO 8601 date)" }),
33
+ search: Flags.string({ description: "Search intent messages, tools, and categories" }),
34
+ tool: Flags.string({ description: "Filter by tool name", multiple: true }),
35
+ "client-id": Flags.string({ description: "Filter by stable MCP client ID", multiple: true }),
36
+ "category-id": Flags.string({ description: "Filter by category ID", multiple: true }),
37
+ sort: Flags.string({ description: "Sort by date", options: ["asc", "desc"], default: "desc" }),
38
+ limit: Flags.integer({ description: "Maximum number of grouped intents to return", min: 1, max: 200, default: 50 }),
39
+ offset: Flags.integer({ description: "Number of grouped intents to skip", min: 0, default: 0 }),
40
+ json: Flags.boolean({ description: "Print the unmodified API response as JSON", default: false }),
41
+ };
42
+ async run() {
43
+ const { flags } = await this.parse(InsightsIntentList);
44
+ await this.ensureAuthenticated(flags);
45
+ const environmentId = await resolveEnvironmentId(flags, { silent: flags.json });
46
+ validateTimeFlag(flags.since, "since");
47
+ validateTimeFlag(flags.until, "until");
48
+ const logger = this.logger(flags.json ? ERRORS_ONLY : "all");
49
+ logger.start("Fetching intents...");
50
+ const response = await api.intents.list.v1({
51
+ environmentId,
52
+ since: flags.since,
53
+ until: flags.until,
54
+ search: flags.search,
55
+ tools: flags.tool,
56
+ clientIds: flags["client-id"],
57
+ categoryIds: flags["category-id"],
58
+ sortDir: parseSortDir(flags.sort),
59
+ limit: flags.limit,
60
+ offset: flags.offset,
61
+ });
62
+ logger.stop(`Found ${plural(response.totalCount, "intent")}`);
63
+ if (flags.json) {
64
+ this.log(JSON.stringify(response));
65
+ return;
66
+ }
67
+ if (response.intents.length === 0) {
68
+ p.log.info("No intents found for this period.");
69
+ return;
70
+ }
71
+ const rows = response.intents.map((intent) => ({
72
+ date: intent.createdAt.toISOString(),
73
+ intent: truncateInsightContent(intent.message),
74
+ occurrences: intent.occurrenceCount,
75
+ tool: intent.toolName,
76
+ client: intent.clientName ?? intent.clientId ?? "-",
77
+ categories: intent.categories.map(({ name }) => name).join(", ") || "-",
78
+ }));
79
+ console.log(formatTable(rows, [
80
+ { key: "date", header: "date", format: (value) => chalk.gray(value) },
81
+ { key: "intent", header: "intent", format: (value) => chalk.bold(value) },
82
+ { key: "occurrences", header: "occurrences", format: (value) => chalk.gray(value) },
83
+ { key: "tool", header: "tool", format: (value) => chalk.cyan(value) },
84
+ { key: "client", header: "client", format: (value) => chalk.gray(value) },
85
+ { key: "categories", header: "categories", format: (value) => chalk.gray(value) },
86
+ ]));
87
+ }
88
+ }
89
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/insights/intent/list.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,7 @@ export class Link extends AlpicCommand {
52
52
  projectId: flags["project-id"],
53
53
  environmentId: flags["environment-id"],
54
54
  projectName: flags["project-name"],
55
+ // biome-ignore lint/plugin/no-type-assertion: Oclif validates runtime flag values against the configured options.
55
56
  runtime: flags.runtime,
56
57
  rootDir: flags["root-dir"],
57
58
  envFile: flags["env-file"],
@@ -89,13 +90,13 @@ export class Link extends AlpicCommand {
89
90
  }
90
91
  const gitWorkflow = new GitWorkflow({ "non-interactive": false });
91
92
  const selectedRepo = await gitWorkflow.selectRemoteSourceRepository(remotes);
92
- const spin = this.spinner();
93
- spin.start("Connecting GitHub repository...");
93
+ const logger = this.logger();
94
+ logger.start("Connecting GitHub repository...");
94
95
  await api.projects.update.v1({
95
96
  projectId,
96
97
  sourceRepository: selectedRepo,
97
98
  });
98
- spin.stop(`Connected to ${selectedRepo}.`);
99
+ logger.stop(`Connected to ${selectedRepo}.`);
99
100
  await promptGithubAppInstallation(false);
100
101
  }
101
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,22 @@
1
1
  import * as p from "@clack/prompts";
2
+ import chalk from "chalk";
2
3
  import { AlpicCommand } from "../lib/alpic-command.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";
4
+ import { alpic } from "../lib/alpic-sdk.js";
5
+ import { getWhoamiInfoMessage } from "../lib/whoami.js";
6
6
  export class Login extends AlpicCommand {
7
7
  static description = "Log in to Alpic (opens browser, stores tokens)";
8
8
  static examples = ["<%= config.bin %> login"];
9
9
  async run() {
10
10
  await this.parse(Login);
11
11
  p.intro("Log in to Alpic");
12
- const token = await getOAuthClient().getValidAccessToken();
12
+ const token = await alpic.auth.getValidAccessToken();
13
13
  if (token) {
14
14
  p.outro("Already logged in.");
15
15
  return;
16
16
  }
17
- await oauthLogin();
17
+ await alpic.auth.login({
18
+ onLoginUrl: (url) => p.log.message(`Opening browser to log in…\n\nIf the browser does not open, copy this URL: ${chalk.cyan(url)}`),
19
+ });
18
20
  p.outro(await getWhoamiInfoMessage());
19
21
  }
20
22
  }
@@ -1 +1 @@
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"}
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;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,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,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,IAAI,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACrB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAClB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,8EAA8E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;SACjH,CAAC,CAAC;QAEH,CAAC,CAAC,KAAK,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC;IACxC,CAAC"}
@@ -1,6 +1,6 @@
1
+ import { globalStore } from "@alpic-ai/sdk";
1
2
  import * as p from "@clack/prompts";
2
3
  import { AlpicCommand } from "../lib/alpic-command.js";
3
- import { globalStore } from "../lib/global-store.js";
4
4
  export class Logout extends AlpicCommand {
5
5
  static description = "Log out from Alpic (removes stored OAuth credentials)";
6
6
  static examples = ["<%= config.bin %> logout"];
@@ -1 +1 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAU,WAAW,GAAG,uDAAuD,CAAC;IAEtF,MAAM,CAAU,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE9B,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;QAE7D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAE/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAEhD,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC"}
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAU,WAAW,GAAG,uDAAuD,CAAC;IAEtF,MAAM,CAAU,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE9B,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;QAE7D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAE/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAEhD,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC"}
@@ -3,15 +3,7 @@ import { api } from "../api.js";
3
3
  import { AlpicCommand } from "../lib/alpic-command.js";
4
4
  import { followEnvironmentLogs, parseLevel, printLog } from "../lib/logs.js";
5
5
  import { resolveEnvironmentId } from "../lib/resolve.js";
6
- import { isValidLogTimeInput } from "../lib/utils.js";
7
- function validateTimeFlag(value, flagName) {
8
- if (value === undefined) {
9
- return;
10
- }
11
- if (!isValidLogTimeInput(value)) {
12
- throw new Error(`Invalid --${flagName} value: "${value}". Use a relative duration (1h, 30m, 2d) or ISO 8601 date (2024-01-01T00:00:00Z).`);
13
- }
14
- }
6
+ import { validateTimeFlag } from "../lib/utils.js";
15
7
  export class Logs extends AlpicCommand {
16
8
  static description = "Stream runtime logs for an environment";
17
9
  static examples = [
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}