@posthog/wizard 2.76.1 → 2.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +30 -15
  2. package/dist/README.md +16 -15
  3. package/dist/{add-mcp-server-to-clients-4yHaRvOo.js → add-mcp-server-to-clients-JMv8LP-O.js} +429 -114
  4. package/dist/add-mcp-server-to-clients-JMv8LP-O.js.map +1 -0
  5. package/dist/agent-bCZ3i3fh.js +3085 -0
  6. package/dist/agent-bCZ3i3fh.js.map +1 -0
  7. package/dist/{agent-interface-DPaPdIjS.js → agent-interface-BAOIHuXS.js} +452 -377
  8. package/dist/agent-interface-BAOIHuXS.js.map +1 -0
  9. package/dist/{agent-prompt-loader-BlhabNM2.js → agent-prompt-loader-7Pd4CfZO.js} +24 -8
  10. package/dist/agent-prompt-loader-7Pd4CfZO.js.map +1 -0
  11. package/dist/analytics-BcV-WCM4.js +2 -0
  12. package/dist/{analytics-DSVyjIVF.js → analytics-CHCZ_qUR.js} +10 -6
  13. package/dist/analytics-CHCZ_qUR.js.map +1 -0
  14. package/dist/{api-Ci0dZWLR.js → api-Diy_2fp8.js} +4 -17
  15. package/dist/api-Diy_2fp8.js.map +1 -0
  16. package/dist/bin.js +410 -68
  17. package/dist/bin.js.map +1 -1
  18. package/dist/{bounded-fs-FbZJ_vJ_.js → bounded-fs-Bx9zTe6m.js} +4 -4
  19. package/dist/bounded-fs-Bx9zTe6m.js.map +1 -0
  20. package/dist/check-screens.tsx +1 -1
  21. package/dist/{ci-install-CEVCqahf.js → ci-install-CDdQYsPe.js} +6 -5
  22. package/dist/ci-install-CDdQYsPe.js.map +1 -0
  23. package/dist/constants-jFI2SaE1.js +260 -0
  24. package/dist/constants-jFI2SaE1.js.map +1 -0
  25. package/dist/debug-Ch4BDOtD.js +171 -0
  26. package/dist/debug-Ch4BDOtD.js.map +1 -0
  27. package/dist/{debug-C6KWXbQi.js → debug-M2gV2iDq.js} +1 -1
  28. package/dist/{defaults-DulzMJpN.js → defaults-C6J7yL4O.js} +26 -3
  29. package/dist/defaults-C6J7yL4O.js.map +1 -0
  30. package/dist/endpoints-DCVbM06L.js +108 -0
  31. package/dist/endpoints-DCVbM06L.js.map +1 -0
  32. package/dist/{env-api-key-DwmkB3fm.js → env-api-key-Qx8NnYHm.js} +3 -3
  33. package/dist/env-api-key-Qx8NnYHm.js.map +1 -0
  34. package/dist/{environment-1wA7uwAS.js → environment-B07Bmxae.js} +6 -6
  35. package/dist/environment-B07Bmxae.js.map +1 -0
  36. package/dist/{errors--OqLxmWR.js → errors-CQ9kttJD.js} +30 -35
  37. package/dist/errors-CQ9kttJD.js.map +1 -0
  38. package/dist/{file-C3HGL1IM.js → file-BcLTjU16.js} +2 -2
  39. package/dist/{file-C3HGL1IM.js.map → file-BcLTjU16.js.map} +1 -1
  40. package/dist/{file-watcher-D8s0b-VT.js → file-watcher-DWc_bTs6.js} +2 -2
  41. package/dist/{file-watcher-D8s0b-VT.js.map → file-watcher-DWc_bTs6.js.map} +1 -1
  42. package/dist/{gateway-session-OqzCMpZ9.js → gateway-CjoShdLa.js} +175 -20
  43. package/dist/gateway-CjoShdLa.js.map +1 -0
  44. package/dist/generate-version.cjs +1 -1
  45. package/dist/{headless-ui-DRGWDg9Z.js → headless-ui-BFFmYC4v.js} +13 -2
  46. package/dist/headless-ui-BFFmYC4v.js.map +1 -0
  47. package/dist/{interactive-B6OlvhSf.js → interactive-D6zV7brJ.js} +2 -2
  48. package/dist/{interactive-B6OlvhSf.js.map → interactive-D6zV7brJ.js.map} +1 -1
  49. package/dist/{local-dev-DPZiIPCK.js → local-dev-McsurOC-.js} +2 -2
  50. package/dist/local-dev-McsurOC-.js.map +1 -0
  51. package/dist/logging-ui-_TwoMNbG.js +226 -0
  52. package/dist/logging-ui-_TwoMNbG.js.map +1 -0
  53. package/dist/mcp-DAgaoGk5.js +97 -0
  54. package/dist/mcp-DAgaoGk5.js.map +1 -0
  55. package/dist/{mcp-prompt-streaming-E1d8DJcX.js → mcp-prompt-streaming-I2U_X7BC.js} +7 -6
  56. package/dist/mcp-prompt-streaming-I2U_X7BC.js.map +1 -0
  57. package/dist/{mint-failure-C82j0RMC.js → mint-failure-D4nd2XmZ.js} +134 -48
  58. package/dist/mint-failure-D4nd2XmZ.js.map +1 -0
  59. package/dist/models-DDdBJKwT.js +83 -0
  60. package/dist/models-DDdBJKwT.js.map +1 -0
  61. package/dist/{non-interactive-DGT2H_n4.js → non-interactive-Dzow7YKY.js} +3 -3
  62. package/dist/non-interactive-Dzow7YKY.js.map +1 -0
  63. package/dist/oauth-session-DJ8h6GFa.js +74 -0
  64. package/dist/oauth-session-DJ8h6GFa.js.map +1 -0
  65. package/dist/{orchestrator-tools-BBBNV1z5.js → orchestrator-tools-szcdscwn.js} +5 -5
  66. package/dist/orchestrator-tools-szcdscwn.js.map +1 -0
  67. package/dist/{package-json-xt3eeyBI.js → package-json-DY70kkNp.js} +2 -2
  68. package/dist/package-json-DY70kkNp.js.map +1 -0
  69. package/dist/{pi-fG5fT50Y.js → pi-D3h5Ok0i.js} +329 -65
  70. package/dist/pi-D3h5Ok0i.js.map +1 -0
  71. package/dist/{playground-UFSHP-Yn.js → playground-5AB4WgNF.js} +18 -10
  72. package/dist/playground-5AB4WgNF.js.map +1 -0
  73. package/dist/{posthog-O9kKcnda.js → posthog-DNn574nW.js} +8 -3
  74. package/dist/posthog-DNn574nW.js.map +1 -0
  75. package/dist/{provisioning-B-tzjG4r.js → provisioning-B8uSqRZk.js} +6 -5
  76. package/dist/provisioning-B8uSqRZk.js.map +1 -0
  77. package/dist/{queue-tools-7Oso-fpt.js → queue-tools-9OOVx5TE.js} +11 -86
  78. package/dist/queue-tools-9OOVx5TE.js.map +1 -0
  79. package/dist/{registry-D1L5e-WQ.js → registry-8YG-kuXk.js} +265 -6
  80. package/dist/registry-8YG-kuXk.js.map +1 -0
  81. package/dist/run-agent-legacy-d7rWlzQR.js +3739 -0
  82. package/dist/run-agent-legacy-d7rWlzQR.js.map +1 -0
  83. package/dist/{security-n3-xdINN.js → security-Cg_4a7vB.js} +6 -6
  84. package/dist/security-Cg_4a7vB.js.map +1 -0
  85. package/dist/{setup-utils-Bj0gejEf.js → setup-utils-CmTCTPkX.js} +46 -18
  86. package/dist/setup-utils-CmTCTPkX.js.map +1 -0
  87. package/dist/smoke-test.sh +1 -1
  88. package/dist/{start-tui-BowrTPXm.js → start-tui-CB2PZs1x.js} +42 -48
  89. package/dist/start-tui-CB2PZs1x.js.map +1 -0
  90. package/dist/{steps-CpNTGu9N.js → steps-BZcXRJNY.js} +7 -7
  91. package/dist/{steps-CpNTGu9N.js.map → steps-BZcXRJNY.js.map} +1 -1
  92. package/dist/{store-CVkJKlny.js → store-UN7c-ASf.js} +18 -55
  93. package/dist/store-UN7c-ASf.js.map +1 -0
  94. package/dist/{subagent-SxmvfDfp.js → subagent-BofIDK-O.js} +8 -3
  95. package/dist/subagent-BofIDK-O.js.map +1 -0
  96. package/dist/{task-nF7Ry8ff.js → task-r9t1UhQP.js} +124 -36
  97. package/dist/task-r9t1UhQP.js.map +1 -0
  98. package/dist/{task-stream-C9BLiAhz.js → task-stream-CMUilu54.js} +45 -15
  99. package/dist/task-stream-CMUilu54.js.map +1 -0
  100. package/dist/{tasks-BEEVIBcT.js → tasks-Bbv_lOBG.js} +17 -13
  101. package/dist/tasks-Bbv_lOBG.js.map +1 -0
  102. package/dist/{telemetry-PD7bhcda.js → telemetry-D6ruCtnv.js} +5 -5
  103. package/dist/telemetry-D6ruCtnv.js.map +1 -0
  104. package/dist/{terminal-NhNl-BIA.js → terminal-DrGyci_a.js} +63 -94
  105. package/dist/terminal-DrGyci_a.js.map +1 -0
  106. package/dist/{tools-BBdpgcIf.js → tools-Dyfh9aCD.js} +11 -11
  107. package/dist/tools-Dyfh9aCD.js.map +1 -0
  108. package/dist/ui-BBVuTM1v.js +15 -0
  109. package/dist/ui-BBVuTM1v.js.map +1 -0
  110. package/dist/version-aXxpgRKx.js +6 -0
  111. package/dist/version-aXxpgRKx.js.map +1 -0
  112. package/dist/warlock-smoke-test.ts +2 -2
  113. package/dist/{wizard-abort-hqHF-9xD.js → wizard-abort-BBkiUxfS.js} +23 -20
  114. package/dist/wizard-abort-BBkiUxfS.js.map +1 -0
  115. package/dist/wizard-abort-BU4aLyvh.js +3 -0
  116. package/dist/{wizard-session-FSJCkTcP.js → wizard-session-2w4Ru-Wz.js} +12 -16
  117. package/dist/wizard-session-2w4Ru-Wz.js.map +1 -0
  118. package/dist/wizard-session-DGaUHOF3.js +2 -0
  119. package/dist/wizard-ui-DoyOZxK8.js +16 -0
  120. package/dist/wizard-ui-DoyOZxK8.js.map +1 -0
  121. package/dist/{yara-hooks-BaPKsm-B.js → yara-hooks-DCeMDd1o.js} +19 -68
  122. package/dist/yara-hooks-DCeMDd1o.js.map +1 -0
  123. package/dist/yara-hooks-DSGuCU9A.js +2 -0
  124. package/package.json +8 -1
  125. package/dist/add-mcp-server-to-clients-4yHaRvOo.js.map +0 -1
  126. package/dist/agent-interface-DPaPdIjS.js.map +0 -1
  127. package/dist/agent-prompt-loader-BlhabNM2.js.map +0 -1
  128. package/dist/agent-runner-JFwQQj2k.js +0 -6100
  129. package/dist/agent-runner-JFwQQj2k.js.map +0 -1
  130. package/dist/analytics-CcHoyhE_.js +0 -2
  131. package/dist/analytics-DSVyjIVF.js.map +0 -1
  132. package/dist/api-Ci0dZWLR.js.map +0 -1
  133. package/dist/bounded-fs-FbZJ_vJ_.js.map +0 -1
  134. package/dist/ci-install-CEVCqahf.js.map +0 -1
  135. package/dist/debug-DWYDVp0B.js +0 -750
  136. package/dist/debug-DWYDVp0B.js.map +0 -1
  137. package/dist/defaults-DulzMJpN.js.map +0 -1
  138. package/dist/env-api-key-DwmkB3fm.js.map +0 -1
  139. package/dist/environment-1wA7uwAS.js.map +0 -1
  140. package/dist/errors--OqLxmWR.js.map +0 -1
  141. package/dist/gateway-session-OqzCMpZ9.js.map +0 -1
  142. package/dist/gateway-session-s1xr8b48.js +0 -2
  143. package/dist/headless-ui-DRGWDg9Z.js.map +0 -1
  144. package/dist/local-dev-DPZiIPCK.js.map +0 -1
  145. package/dist/mcp-BprhJJ2c.js +0 -64
  146. package/dist/mcp-BprhJJ2c.js.map +0 -1
  147. package/dist/mcp-prompt-streaming-E1d8DJcX.js.map +0 -1
  148. package/dist/mint-failure-C82j0RMC.js.map +0 -1
  149. package/dist/non-interactive-DGT2H_n4.js.map +0 -1
  150. package/dist/orchestrator-tools-BBBNV1z5.js.map +0 -1
  151. package/dist/package-json-xt3eeyBI.js.map +0 -1
  152. package/dist/package-manager-DU3aVif4.js +0 -290
  153. package/dist/package-manager-DU3aVif4.js.map +0 -1
  154. package/dist/pi-fG5fT50Y.js.map +0 -1
  155. package/dist/playground-UFSHP-Yn.js.map +0 -1
  156. package/dist/posthog-O9kKcnda.js.map +0 -1
  157. package/dist/provisioning-B-tzjG4r.js.map +0 -1
  158. package/dist/queue-tools-7Oso-fpt.js.map +0 -1
  159. package/dist/registry-D1L5e-WQ.js.map +0 -1
  160. package/dist/security-n3-xdINN.js.map +0 -1
  161. package/dist/setup-utils-Bj0gejEf.js.map +0 -1
  162. package/dist/start-tui-BowrTPXm.js.map +0 -1
  163. package/dist/store-CVkJKlny.js.map +0 -1
  164. package/dist/subagent-SxmvfDfp.js.map +0 -1
  165. package/dist/task-nF7Ry8ff.js.map +0 -1
  166. package/dist/task-stream-C9BLiAhz.js.map +0 -1
  167. package/dist/tasks-BEEVIBcT.js.map +0 -1
  168. package/dist/telemetry-PD7bhcda.js.map +0 -1
  169. package/dist/terminal-NhNl-BIA.js.map +0 -1
  170. package/dist/tools-BBdpgcIf.js.map +0 -1
  171. package/dist/wizard-abort-D3YA1hXX.js +0 -2
  172. package/dist/wizard-abort-hqHF-9xD.js.map +0 -1
  173. package/dist/wizard-session-CYvyYnti.js +0 -2
  174. package/dist/wizard-session-FSJCkTcP.js.map +0 -1
  175. package/dist/yara-hooks-BaPKsm-B.js.map +0 -1
  176. package/dist/yara-hooks-CwfQuEl3.js +0 -2
@@ -1,7 +1,7 @@
1
- import "./debug-DWYDVp0B.js";
2
- import { n as analytics } from "./analytics-DSVyjIVF.js";
1
+ import "./debug-Ch4BDOtD.js";
2
+ import { n as analytics } from "./analytics-CHCZ_qUR.js";
3
3
  import opn from "opn";
4
- //#region src/utils/links.ts
4
+ //#region src/shared/utils/links.ts
5
5
  /**
6
6
  * Outbound links: UTM tagging and tracked opens.
7
7
  *
@@ -54,7 +54,7 @@ function openTrackedLink(url, content, opts) {
54
54
  opn(finalUrl, { wait: false }).catch(() => {});
55
55
  }
56
56
  //#endregion
57
- //#region src/telemetry.ts
57
+ //#region src/shared/utils/telemetry.ts
58
58
  function withProgress(step, callback) {
59
59
  updateProgress(step);
60
60
  return callback();
@@ -65,4 +65,4 @@ function updateProgress(step) {
65
65
  //#endregion
66
66
  export { withUtm as i, openTrackedLink as n, setEntryCommand as r, withProgress as t };
67
67
 
68
- //# sourceMappingURL=telemetry-PD7bhcda.js.map
68
+ //# sourceMappingURL=telemetry-D6ruCtnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-D6ruCtnv.js","names":[],"sources":["../src/shared/utils/links.ts","../src/shared/utils/telemetry.ts"],"sourcesContent":["/**\n * Outbound links: UTM tagging and tracked opens.\n *\n * Every URL the wizard sends a user to — auto-opened or printed in the TUI —\n * carries `utm_source=wizard`, `utm_medium=cli`, `utm_content=<which link>`.\n * The command dimension rides on every wizard event as the `command` tag.\n * Opening a link also captures a wizard event.\n */\nimport opn from 'opn';\nimport { NODE_ENV } from '@env';\nimport { analytics } from './analytics';\n\n/**\n * Record the CLI command this run was started with (e.g. `integrate`,\n * `slack`, `mcp-add`). Set once at dispatch; tagged onto every wizard\n * event so wizard-side events segment by command.\n */\nexport function setEntryCommand(command: string): void {\n analytics.setTag('command', command);\n}\n\n/**\n * Tag a URL with the wizard's UTM params. `content` names the specific link\n * (e.g. `oauth-signup`, `slack-connect-setup`). URLs that already carry a\n * utm_source — or don't parse — are returned untouched.\n */\nexport function withUtm(url: string, content: string): string {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n return url;\n }\n if (parsed.searchParams.has('utm_source')) return url;\n parsed.searchParams.set('utm_source', 'wizard');\n parsed.searchParams.set('utm_medium', 'cli');\n parsed.searchParams.set('utm_content', content);\n return parsed.toString();\n}\n\n/**\n * Open a URL in the user's browser, UTM-tagged (pass `skipUtm` for\n * destinations that aren't PostHog properties or are already final), and\n * capture the interaction. `auto` marks opens the wizard initiated itself,\n * as opposed to a user picking a link on screen. opn throws in headless\n * environments — the URL is always also printed on screen, so the failure\n * is swallowed.\n */\nexport function openTrackedLink(\n url: string,\n content: string,\n opts?: { auto?: boolean; skipUtm?: boolean },\n): void {\n const finalUrl = opts?.skipUtm ? url : withUtm(url, content);\n analytics.wizardCapture('link opened', {\n content,\n url: finalUrl,\n auto: opts?.auto ?? false,\n });\n if (NODE_ENV !== 'test') {\n opn(finalUrl, { wait: false }).catch(() => {\n // No browser available — the printed URL is the fallback.\n });\n }\n}\n","import { analytics } from './analytics';\n\nexport function withProgress<T>(step: string, callback: () => T): T {\n updateProgress(step);\n return callback();\n}\n\nexport function updateProgress(step: string) {\n analytics.setTag('progress', step);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAiBA,SAAgB,gBAAgB,SAAuB;AACrD,WAAU,OAAO,WAAW,QAAQ;;;;;;;AAQtC,SAAgB,QAAQ,KAAa,SAAyB;CAC5D,IAAI;AACJ,KAAI;AACF,WAAS,IAAI,IAAI,IAAI;SACf;AACN,SAAO;;AAET,KAAI,OAAO,aAAa,IAAI,aAAa,CAAE,QAAO;AAClD,QAAO,aAAa,IAAI,cAAc,SAAS;AAC/C,QAAO,aAAa,IAAI,cAAc,MAAM;AAC5C,QAAO,aAAa,IAAI,eAAe,QAAQ;AAC/C,QAAO,OAAO,UAAU;;;;;;;;;;AAW1B,SAAgB,gBACd,KACA,SACA,MACM;CACN,MAAM,WAAW,MAAM,UAAU,MAAM,QAAQ,KAAK,QAAQ;AAC5D,WAAU,cAAc,eAAe;EACrC;EACA,KAAK;EACL,MAAM,MAAM,QAAQ;EACrB,CAAC;AAEA,KAAI,UAAU,EAAE,MAAM,OAAO,CAAC,CAAC,YAAY,GAEzC;;;;AC5DN,SAAgB,aAAgB,MAAc,UAAsB;AAClE,gBAAe,KAAK;AACpB,QAAO,UAAU;;AAGnB,SAAgB,eAAe,MAAc;AAC3C,WAAU,OAAO,YAAY,KAAK"}
@@ -1,16 +1,18 @@
1
- import { W as POSTHOG_APP_URL, g as SERVICE_LABELS, mt as getSkillsBaseUrl, pt as WIZARD_USER_AGENT, s as logToFile } from "./debug-DWYDVp0B.js";
2
- import "./wizard-session-FSJCkTcP.js";
3
- import { n as analytics } from "./analytics-DSVyjIVF.js";
4
- import { i as withUtm, n as openTrackedLink } from "./telemetry-PD7bhcda.js";
5
- import { t as getOrAskForProjectData } from "./setup-utils-Bj0gejEf.js";
6
- import { a as fetchSlackConnected, o as fetchUserData } from "./api-Ci0dZWLR.js";
7
- import { G as fetchSkillMenu } from "./agent-interface-DPaPdIjS.js";
8
- import { a as formatCostUsd, o as formatTokenCount } from "./agent-runner-JFwQQj2k.js";
9
- import { y as AUDIT_SEVERITY_STYLE } from "./yara-hooks-BaPKsm-B.js";
10
- import { $ as wordWrap, H as getKindMeta, Q as computeVisibleRange, Z as TextBlock, et as isClearBlock, it as Icons, nt as isObjectBlock, o as Program, rt as Colors, tt as isLinesBlock } from "./mint-failure-C82j0RMC.js";
1
+ import { s as logToFile } from "./debug-Ch4BDOtD.js";
2
+ import { $ as getSkillsBaseUrl, D as POSTHOG_APP_URL, Q as WIZARD_USER_AGENT } from "./constants-jFI2SaE1.js";
3
+ import "./wizard-session-2w4Ru-Wz.js";
4
+ import { n as analytics } from "./analytics-CHCZ_qUR.js";
5
+ import { i as withUtm, n as openTrackedLink } from "./telemetry-D6ruCtnv.js";
6
+ import { t as getOrAskForProjectData } from "./setup-utils-CmTCTPkX.js";
7
+ import { n as SERVICE_LABELS } from "./logging-ui-_TwoMNbG.js";
8
+ import { a as fetchSlackConnected, o as fetchUserData } from "./api-Diy_2fp8.js";
9
+ import { i as AUDIT_SEVERITY_STYLE } from "./run-agent-legacy-d7rWlzQR.js";
10
+ import { et as fetchSkillMenu } from "./agent-interface-BAOIHuXS.js";
11
+ import { a as formatCostUsd, o as formatTokenCount } from "./agent-bCZ3i3fh.js";
12
+ import { $ as wordWrap, H as getKindMeta, Q as computeVisibleRange, Z as TextBlock, et as isClearBlock, it as Icons, nt as isObjectBlock, o as Program, rt as Colors, tt as isLinesBlock } from "./mint-failure-D4nd2XmZ.js";
11
13
  import { a as useStdoutDimensions, i as useKeyboardHintsContext, n as useKeyBindings, o as ConfirmButton, r as KeyboardHintsProvider, s as PromptLabel, t as PickerMenu } from "./bin.js";
12
- import { r as totalTokenCount } from "./store-CVkJKlny.js";
13
- import { c as namesWithStatus, n as AVAILABLE_FEATURES, o as isAllFeaturesSelected, s as isOk, t as ALL_FEATURE_VALUES, u as summarizeFailure } from "./defaults-DulzMJpN.js";
14
+ import { r as totalTokenCount } from "./store-UN7c-ASf.js";
15
+ import { c as isOk, f as summarizeFailure, l as namesWithStatus, n as AVAILABLE_FEATURES, o as isAllFeaturesSelected, t as ALL_FEATURE_VALUES } from "./defaults-C6J7yL4O.js";
14
16
  import opn from "opn";
15
17
  import * as fs$1 from "fs";
16
18
  import axios from "axios";
@@ -86,8 +88,8 @@ const ProgressList = ({ items, title }) => {
86
88
  }), /* @__PURE__ */ jsx(Text, { children: " " })] }),
87
89
  visible.length === 0 && /* @__PURE__ */ jsx(LoadingBox, { message: "Analyzing project..." }),
88
90
  visible.map((item, i) => {
89
- const icon = item.status === "completed" ? Icons.squareFilled : item.status === "in_progress" ? Icons.triangleRight : Icons.squareOpen;
90
- const color = item.status === "completed" ? Colors.success : item.status === "in_progress" ? Colors.primary : Colors.muted;
91
+ const icon = item.status === "failed" ? Icons.warning : item.status === "completed" ? Icons.squareFilled : item.status === "in_progress" ? Icons.triangleRight : Icons.squareOpen;
92
+ const color = item.status === "failed" ? Colors.error : item.status === "completed" ? Colors.success : item.status === "in_progress" ? Colors.primary : Colors.muted;
91
93
  const label = item.status === "in_progress" && item.activeForm ? item.activeForm : item.label;
92
94
  return /* @__PURE__ */ jsxs(Text, {
93
95
  wrap: "truncate",
@@ -1640,7 +1642,6 @@ const LearnCard = ({ store, blocks, onComplete }) => {
1640
1642
  /**
1641
1643
  * TipsCard — Shows PostHog tips during the agent run.
1642
1644
  * Reactively shows/hides tips based on discovered features.
1643
- * Supports toggling additional features via key bindings.
1644
1645
  */
1645
1646
  /**
1646
1647
  * The default deck — generic PostHog onboarding tips, shown for any
@@ -1672,25 +1673,9 @@ const DEFAULT_TIPS = [
1672
1673
  description: "Add Stripe as a data source while you wait:",
1673
1674
  url: "https://app.posthog.com/data-warehouse/new-source?kind=Stripe",
1674
1675
  visible: (store) => store.session.discoveredFeatures.includes("stripe")
1675
- },
1676
- {
1677
- id: "llm",
1678
- title: "PostHog can also help you track your LLM costs",
1679
- description: "",
1680
- visible: (store) => store.session.discoveredFeatures.includes("llm"),
1681
- toggle: {
1682
- key: "l",
1683
- feature: "llm",
1684
- enabledLabel: "AI observability setup queued next",
1685
- prompt: "We detected LLM dependencies in your project.",
1686
- isEnabled: (store) => store.session.llmOptIn
1687
- }
1688
1676
  }
1689
1677
  ];
1690
1678
  const TipsCard = ({ store, tips = DEFAULT_TIPS }) => {
1691
- useInput((input) => {
1692
- for (const tip of tips) if (tip.toggle && input.toLowerCase() === tip.toggle.key && (!tip.visible || tip.visible(store)) && !tip.toggle.isEnabled(store)) store.enableFeature(tip.toggle.feature);
1693
- });
1694
1679
  return /* @__PURE__ */ jsxs(Box, {
1695
1680
  flexDirection: "column",
1696
1681
  paddingX: 1,
@@ -1710,28 +1695,7 @@ const TipsCard = ({ store, tips = DEFAULT_TIPS }) => {
1710
1695
  }), /* @__PURE__ */ jsx(Text, {
1711
1696
  bold: true,
1712
1697
  children: tip.title
1713
- })] }), tip.toggle ? tip.toggle.isEnabled(store) ? /* @__PURE__ */ jsxs(Text, {
1714
- color: Colors.success,
1715
- children: [
1716
- Icons.check,
1717
- " ",
1718
- tip.toggle.enabledLabel
1719
- ]
1720
- }) : /* @__PURE__ */ jsxs(Text, {
1721
- dimColor: true,
1722
- children: [
1723
- tip.toggle.prompt,
1724
- " Press",
1725
- " ",
1726
- /* @__PURE__ */ jsx(Text, {
1727
- bold: true,
1728
- color: Colors.accent,
1729
- children: tip.toggle.key.toUpperCase()
1730
- }),
1731
- " ",
1732
- "to enable."
1733
- ]
1734
- }) : /* @__PURE__ */ jsxs(Text, {
1698
+ })] }), /* @__PURE__ */ jsxs(Text, {
1735
1699
  dimColor: true,
1736
1700
  children: [tip.description, tip.url && /* @__PURE__ */ jsxs(Fragment$1, { children: [" ", /* @__PURE__ */ jsx(Text, {
1737
1701
  color: "cyan",
@@ -2045,7 +2009,7 @@ const CrateStack = ({ width, height }) => {
2045
2009
  if (ch === " ") return /* @__PURE__ */ jsx(Text, { children: " " }, x);
2046
2010
  const isFalling = state.falling && y === state.falling.y && Math.abs(x - state.falling.x) < crateW;
2047
2011
  return /* @__PURE__ */ jsx(Text, {
2048
- bold: isFalling,
2012
+ bold: !!isFalling,
2049
2013
  color: isFalling ? VISUALIZER_PALETTE.head : VISUALIZER_PALETTE.mid,
2050
2014
  children: ch
2051
2015
  }, x);
@@ -3002,9 +2966,13 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
3002
2966
  })
3003
2967
  }), /* @__PURE__ */ jsx(ConnectorContinue, { onContinue: () => void doInstall(selectedClientNames, []) })]
3004
2968
  }),
3005
- phase === "working" && /* @__PURE__ */ jsxs(Text, {
3006
- dimColor: true,
3007
- children: [isRemove ? "Removing" : "Installing", " MCP server..."]
2969
+ phase === "working" && /* @__PURE__ */ jsxs(Box, {
2970
+ flexDirection: "row",
2971
+ gap: 1,
2972
+ children: [/* @__PURE__ */ jsxs(Text, {
2973
+ dimColor: true,
2974
+ children: [isRemove ? "Removing" : "Installing", " MCP server..."]
2975
+ }), /* @__PURE__ */ jsx(Spinner, {})]
3008
2976
  }),
3009
2977
  phase === "done" && /* @__PURE__ */ jsxs(Box, {
3010
2978
  flexDirection: "column",
@@ -5809,6 +5777,12 @@ const Legend = () => /* @__PURE__ */ jsxs(Text, { children: [
5809
5777
  })
5810
5778
  ] });
5811
5779
  //#endregion
5780
+ //#region src/shared/utils/count-noun.ts
5781
+ /** `1 error`, `2 errors`, `0 errors`. Zero stays plural. */
5782
+ function countNoun(n, noun, plural = `${noun}s`) {
5783
+ return `${n} ${n === 1 ? noun : plural}`;
5784
+ }
5785
+ //#endregion
5812
5786
  //#region src/ui/tui/screens/audit/AuditChecksViewer/Header.tsx
5813
5787
  function statusCounts(checks) {
5814
5788
  const out = {
@@ -5847,24 +5821,16 @@ const Header = ({ layout }) => /* @__PURE__ */ jsxs(Box, { children: [
5847
5821
  })
5848
5822
  })
5849
5823
  ] });
5850
- const Summary = ({ total, counts }) => /* @__PURE__ */ jsxs(Text, {
5824
+ const Summary = ({ total, counts }) => /* @__PURE__ */ jsx(Text, {
5851
5825
  dimColor: true,
5852
5826
  children: [
5853
- total,
5854
- " total · ",
5855
- counts.pending,
5856
- " pending · ",
5857
- counts.error,
5858
- " errors ·",
5859
- " ",
5860
- counts.warning,
5861
- " warnings · ",
5862
- counts.suggestion,
5863
- " suggestions · ",
5864
- counts.pass,
5865
- " ",
5866
- "passes"
5867
- ]
5827
+ `${total} total`,
5828
+ `${counts.pending} pending`,
5829
+ countNoun(counts.error, "error"),
5830
+ countNoun(counts.warning, "warning"),
5831
+ countNoun(counts.suggestion, "suggestion"),
5832
+ countNoun(counts.pass, "pass", "passes")
5833
+ ].join(" · ")
5868
5834
  });
5869
5835
  //#endregion
5870
5836
  //#region src/ui/tui/screens/audit/AuditChecksViewer/Footer.tsx
@@ -6319,7 +6285,7 @@ const ReportVisual = () => /* @__PURE__ */ jsxs(VisualBox, { children: [
6319
6285
  const WriteReportSlide = {
6320
6286
  area: "Write report",
6321
6287
  intro: [
6322
- "Now we write an audit report at ./posthog-audit-report.md. that summarizes our findings.",
6288
+ "Now we write an audit report at ./posthog-audit-report.md that summarizes our findings.",
6323
6289
  "The report leads with a summary, then a prioritized list of fixes with file:line citations, then every check we ran grouped by area so nothing is hidden.",
6324
6290
  "We will upload the report into a PostHog notebook in the next step."
6325
6291
  ],
@@ -6740,37 +6706,28 @@ const OutroScreen = ({ store }) => {
6740
6706
  })
6741
6707
  ] })
6742
6708
  }),
6743
- outroData.nextSteps && outroData.nextSteps.items.length > 0 && /* @__PURE__ */ jsxs(Box, {
6744
- flexDirection: "column",
6709
+ outroData.notebookUrl && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Box, {
6745
6710
  marginTop: 1,
6746
- children: [/* @__PURE__ */ jsx(Text, {
6747
- color: "cyan",
6748
- bold: true,
6749
- children: outroData.nextSteps.heading
6750
- }), outroData.nextSteps.items.map((item, i) => /* @__PURE__ */ jsxs(Box, {
6751
- flexDirection: "row",
6752
- children: [/* @__PURE__ */ jsx(Text, { children: "• " }), /* @__PURE__ */ jsx(LinkText, { text: item })]
6753
- }, i))]
6754
- }),
6755
- outroData.dashboardUrl && /* @__PURE__ */ jsx(Box, {
6711
+ children: /* @__PURE__ */ jsx(Text, { children: "The wizard has set up PostHog in your codebase and written a full report of what it instrumented. Read the notebook for more details!" })
6712
+ }), /* @__PURE__ */ jsx(Box, {
6756
6713
  marginTop: 1,
6757
6714
  children: /* @__PURE__ */ jsxs(Text, { children: [
6758
- "Dashboard:",
6715
+ "Notebook:",
6759
6716
  " ",
6760
6717
  /* @__PURE__ */ jsx(Text, {
6761
6718
  color: "cyan",
6762
- children: withUtm(outroData.dashboardUrl, "outro-dashboard")
6719
+ children: withUtm(outroData.notebookUrl, "outro-notebook")
6763
6720
  })
6764
6721
  ] })
6765
- }),
6766
- outroData.notebookUrl && /* @__PURE__ */ jsx(Box, {
6722
+ })] }),
6723
+ outroData.dashboardUrl && /* @__PURE__ */ jsx(Box, {
6767
6724
  marginTop: 1,
6768
6725
  children: /* @__PURE__ */ jsxs(Text, { children: [
6769
- "Notebook:",
6726
+ "Dashboard:",
6770
6727
  " ",
6771
6728
  /* @__PURE__ */ jsx(Text, {
6772
6729
  color: "cyan",
6773
- children: withUtm(outroData.notebookUrl, "outro-notebook")
6730
+ children: withUtm(outroData.dashboardUrl, "outro-dashboard")
6774
6731
  })
6775
6732
  ] })
6776
6733
  }),
@@ -6839,6 +6796,18 @@ const OutroScreen = ({ store }) => {
6839
6796
  children: withUtm(outroData.continueUrl, "outro-continue")
6840
6797
  })
6841
6798
  ] }) }),
6799
+ outroData.nextSteps && outroData.nextSteps.items.length > 0 && /* @__PURE__ */ jsxs(Box, {
6800
+ flexDirection: "column",
6801
+ marginTop: 1,
6802
+ children: [/* @__PURE__ */ jsx(Text, {
6803
+ color: "cyan",
6804
+ bold: true,
6805
+ children: outroData.nextSteps.heading
6806
+ }), outroData.nextSteps.items.map((item, i) => /* @__PURE__ */ jsxs(Box, {
6807
+ flexDirection: "row",
6808
+ children: [/* @__PURE__ */ jsx(Text, { children: "• " }), /* @__PURE__ */ jsx(LinkText, { text: item })]
6809
+ }, i))]
6810
+ }),
6842
6811
  /* @__PURE__ */ jsx(Box, {
6843
6812
  marginTop: 1,
6844
6813
  children: /* @__PURE__ */ jsx(Text, {
@@ -7222,6 +7191,6 @@ function releaseTerminal() {
7222
7191
  process.stdout.write(RESET_ATTRS + LEAVE_ALT_SCREEN);
7223
7192
  }
7224
7193
  //#endregion
7225
- export { ViewportTooSmall as A, SplitView as B, VisualizerTab as C, HNViewer as D, ContentSequencer as E, ModalOverlay as F, ConfirmationInput as I, GroupedPickerMenu as L, LogViewer as M, LinkText as N, TabContainer as O, extractUrls as P, ProgressList as R, ServiceHealthList as S, LearnCard as T, CardLayout as V, TAILORED_ROLES as _, useSkillEntry as a, SEVERITY_LABEL as b, SlackConnectScreen as c, AuditChecksViewer as d, seedDemoEvents as f, probeProjectData as g, assembleProfile as h, SkillSourceInfo as i, EventPlanViewer as j, ScreenContainer as k, AUDIT_AREA_SLIDES as l, McpSuggestedPromptsScreen as m, releaseTerminal as n, OutroScreen as o, seededProfile as p, AiOptInRequiredScreen as r, useDismissOnAnyKey as s, enterDarkTerminal as t, VisualBox as u, McpScreen as v, TipsCard as w, SEVERITY_ORDER as x, IssueTable as y, LoadingBox as z };
7194
+ export { ScreenContainer as A, LoadingBox as B, ServiceHealthList as C, ContentSequencer as D, LearnCard as E, extractUrls as F, CardLayout as H, ModalOverlay as I, ConfirmationInput as L, EventPlanViewer as M, LogViewer as N, HNViewer as O, LinkText as P, GroupedPickerMenu as R, SEVERITY_ORDER as S, TipsCard as T, SplitView as V, probeProjectData as _, useSkillEntry as a, IssueTable as b, SlackConnectScreen as c, AuditChecksViewer as d, countNoun as f, assembleProfile as g, McpSuggestedPromptsScreen as h, SkillSourceInfo as i, ViewportTooSmall as j, TabContainer as k, AUDIT_AREA_SLIDES as l, seededProfile as m, releaseTerminal as n, OutroScreen as o, seedDemoEvents as p, AiOptInRequiredScreen as r, useDismissOnAnyKey as s, enterDarkTerminal as t, VisualBox as u, TAILORED_ROLES as v, VisualizerTab as w, SEVERITY_LABEL as x, McpScreen as y, ProgressList as z };
7226
7195
 
7227
- //# sourceMappingURL=terminal-NhNl-BIA.js.map
7196
+ //# sourceMappingURL=terminal-DrGyci_a.js.map