@posthog/wizard 2.77.0 → 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 (173) hide show
  1. package/README.md +30 -15
  2. package/dist/{add-mcp-server-to-clients-BnRyE4pw.js → add-mcp-server-to-clients-JMv8LP-O.js} +6 -5
  3. package/dist/{add-mcp-server-to-clients-BnRyE4pw.js.map → add-mcp-server-to-clients-JMv8LP-O.js.map} +1 -1
  4. package/dist/agent-bCZ3i3fh.js +3085 -0
  5. package/dist/agent-bCZ3i3fh.js.map +1 -0
  6. package/dist/{agent-interface-Avtr_5M5.js → agent-interface-BAOIHuXS.js} +429 -378
  7. package/dist/agent-interface-BAOIHuXS.js.map +1 -0
  8. package/dist/{agent-prompt-loader-CHixNPgY.js → agent-prompt-loader-7Pd4CfZO.js} +6 -6
  9. package/dist/agent-prompt-loader-7Pd4CfZO.js.map +1 -0
  10. package/dist/analytics-BcV-WCM4.js +2 -0
  11. package/dist/{analytics-C67F2vee.js → analytics-CHCZ_qUR.js} +10 -6
  12. package/dist/analytics-CHCZ_qUR.js.map +1 -0
  13. package/dist/{api-Dj1yabTj.js → api-Diy_2fp8.js} +4 -17
  14. package/dist/api-Diy_2fp8.js.map +1 -0
  15. package/dist/bin.js +410 -68
  16. package/dist/bin.js.map +1 -1
  17. package/dist/{bounded-fs-CWRYuLAn.js → bounded-fs-Bx9zTe6m.js} +4 -4
  18. package/dist/bounded-fs-Bx9zTe6m.js.map +1 -0
  19. package/dist/check-screens.tsx +1 -1
  20. package/dist/{ci-install-CvXL5h13.js → ci-install-CDdQYsPe.js} +6 -5
  21. package/dist/ci-install-CDdQYsPe.js.map +1 -0
  22. package/dist/constants-jFI2SaE1.js +260 -0
  23. package/dist/constants-jFI2SaE1.js.map +1 -0
  24. package/dist/debug-Ch4BDOtD.js +171 -0
  25. package/dist/debug-Ch4BDOtD.js.map +1 -0
  26. package/dist/{debug-CziFS0cA.js → debug-M2gV2iDq.js} +1 -1
  27. package/dist/{defaults-4c4YwTmW.js → defaults-C6J7yL4O.js} +1 -1
  28. package/dist/{defaults-4c4YwTmW.js.map → defaults-C6J7yL4O.js.map} +1 -1
  29. package/dist/endpoints-DCVbM06L.js +108 -0
  30. package/dist/endpoints-DCVbM06L.js.map +1 -0
  31. package/dist/{env-api-key-BZ5wE3Y4.js → env-api-key-Qx8NnYHm.js} +3 -3
  32. package/dist/env-api-key-Qx8NnYHm.js.map +1 -0
  33. package/dist/{environment-BEvsey6i.js → environment-B07Bmxae.js} +6 -6
  34. package/dist/environment-B07Bmxae.js.map +1 -0
  35. package/dist/{errors-BoJvrdw8.js → errors-CQ9kttJD.js} +27 -34
  36. package/dist/errors-CQ9kttJD.js.map +1 -0
  37. package/dist/{file-BoD3REGB.js → file-BcLTjU16.js} +2 -2
  38. package/dist/{file-BoD3REGB.js.map → file-BcLTjU16.js.map} +1 -1
  39. package/dist/{file-watcher-BPFazvG_.js → file-watcher-DWc_bTs6.js} +2 -2
  40. package/dist/{file-watcher-BPFazvG_.js.map → file-watcher-DWc_bTs6.js.map} +1 -1
  41. package/dist/{gateway-session-xPFv6p5c.js → gateway-CjoShdLa.js} +175 -20
  42. package/dist/gateway-CjoShdLa.js.map +1 -0
  43. package/dist/generate-version.cjs +1 -1
  44. package/dist/{headless-ui-CsmQrDIl.js → headless-ui-BFFmYC4v.js} +13 -2
  45. package/dist/headless-ui-BFFmYC4v.js.map +1 -0
  46. package/dist/{interactive-Dej-sxvR.js → interactive-D6zV7brJ.js} +2 -2
  47. package/dist/{interactive-Dej-sxvR.js.map → interactive-D6zV7brJ.js.map} +1 -1
  48. package/dist/{local-dev-DPZiIPCK.js → local-dev-McsurOC-.js} +2 -2
  49. package/dist/local-dev-McsurOC-.js.map +1 -0
  50. package/dist/logging-ui-_TwoMNbG.js +226 -0
  51. package/dist/logging-ui-_TwoMNbG.js.map +1 -0
  52. package/dist/mcp-DAgaoGk5.js +97 -0
  53. package/dist/mcp-DAgaoGk5.js.map +1 -0
  54. package/dist/{mcp-prompt-streaming-BU_kuur_.js → mcp-prompt-streaming-I2U_X7BC.js} +7 -6
  55. package/dist/mcp-prompt-streaming-I2U_X7BC.js.map +1 -0
  56. package/dist/{mint-failure-BrleGqMd.js → mint-failure-D4nd2XmZ.js} +82 -25
  57. package/dist/mint-failure-D4nd2XmZ.js.map +1 -0
  58. package/dist/models-DDdBJKwT.js +83 -0
  59. package/dist/models-DDdBJKwT.js.map +1 -0
  60. package/dist/{non-interactive-DcOjH2fw.js → non-interactive-Dzow7YKY.js} +3 -3
  61. package/dist/non-interactive-Dzow7YKY.js.map +1 -0
  62. package/dist/oauth-session-DJ8h6GFa.js +74 -0
  63. package/dist/oauth-session-DJ8h6GFa.js.map +1 -0
  64. package/dist/{orchestrator-tools-DXwr8Sp3.js → orchestrator-tools-szcdscwn.js} +4 -4
  65. package/dist/orchestrator-tools-szcdscwn.js.map +1 -0
  66. package/dist/{package-json-xt3eeyBI.js → package-json-DY70kkNp.js} +2 -2
  67. package/dist/package-json-DY70kkNp.js.map +1 -0
  68. package/dist/{pi-mY8I2XkG.js → pi-D3h5Ok0i.js} +329 -65
  69. package/dist/pi-D3h5Ok0i.js.map +1 -0
  70. package/dist/{playground-CDUUKLkC.js → playground-5AB4WgNF.js} +11 -7
  71. package/dist/playground-5AB4WgNF.js.map +1 -0
  72. package/dist/{posthog-Hc_-9wrr.js → posthog-DNn574nW.js} +8 -3
  73. package/dist/posthog-DNn574nW.js.map +1 -0
  74. package/dist/{provisioning-xfdjhFtA.js → provisioning-B8uSqRZk.js} +6 -5
  75. package/dist/provisioning-B8uSqRZk.js.map +1 -0
  76. package/dist/{queue-tools-C8y_xZJi.js → queue-tools-9OOVx5TE.js} +7 -86
  77. package/dist/queue-tools-9OOVx5TE.js.map +1 -0
  78. package/dist/{registry-DTmREJ-f.js → registry-8YG-kuXk.js} +265 -6
  79. package/dist/registry-8YG-kuXk.js.map +1 -0
  80. package/dist/run-agent-legacy-d7rWlzQR.js +3739 -0
  81. package/dist/run-agent-legacy-d7rWlzQR.js.map +1 -0
  82. package/dist/{security-Dw2oFJjP.js → security-Cg_4a7vB.js} +6 -6
  83. package/dist/security-Cg_4a7vB.js.map +1 -0
  84. package/dist/{setup-utils-fjJTBhaB.js → setup-utils-CmTCTPkX.js} +46 -18
  85. package/dist/setup-utils-CmTCTPkX.js.map +1 -0
  86. package/dist/smoke-test.sh +1 -1
  87. package/dist/{start-tui-UNe2xQ0U.js → start-tui-CB2PZs1x.js} +38 -44
  88. package/dist/start-tui-CB2PZs1x.js.map +1 -0
  89. package/dist/{steps-C2yqOk_h.js → steps-BZcXRJNY.js} +7 -7
  90. package/dist/{steps-C2yqOk_h.js.map → steps-BZcXRJNY.js.map} +1 -1
  91. package/dist/{store-Bic4Cr3L.js → store-UN7c-ASf.js} +18 -28
  92. package/dist/store-UN7c-ASf.js.map +1 -0
  93. package/dist/{subagent-Dz41vV9j.js → subagent-BofIDK-O.js} +8 -3
  94. package/dist/subagent-BofIDK-O.js.map +1 -0
  95. package/dist/{task-5-fw_Vw3.js → task-r9t1UhQP.js} +124 -36
  96. package/dist/task-r9t1UhQP.js.map +1 -0
  97. package/dist/{task-stream-dVzl6b_q.js → task-stream-CMUilu54.js} +45 -15
  98. package/dist/task-stream-CMUilu54.js.map +1 -0
  99. package/dist/{tasks-D1c2z1aw.js → tasks-Bbv_lOBG.js} +17 -13
  100. package/dist/tasks-Bbv_lOBG.js.map +1 -0
  101. package/dist/{telemetry-BRnxBRWK.js → telemetry-D6ruCtnv.js} +5 -5
  102. package/dist/telemetry-D6ruCtnv.js.map +1 -0
  103. package/dist/{terminal-9bvRa4Qt.js → terminal-DrGyci_a.js} +39 -74
  104. package/dist/terminal-DrGyci_a.js.map +1 -0
  105. package/dist/{tools-Dp6i9k70.js → tools-Dyfh9aCD.js} +11 -11
  106. package/dist/tools-Dyfh9aCD.js.map +1 -0
  107. package/dist/ui-BBVuTM1v.js +15 -0
  108. package/dist/ui-BBVuTM1v.js.map +1 -0
  109. package/dist/version-aXxpgRKx.js +6 -0
  110. package/dist/version-aXxpgRKx.js.map +1 -0
  111. package/dist/warlock-smoke-test.ts +2 -2
  112. package/dist/{wizard-abort-lE6umflt.js → wizard-abort-BBkiUxfS.js} +23 -20
  113. package/dist/wizard-abort-BBkiUxfS.js.map +1 -0
  114. package/dist/wizard-abort-BU4aLyvh.js +3 -0
  115. package/dist/{wizard-session-FSJCkTcP.js → wizard-session-2w4Ru-Wz.js} +12 -16
  116. package/dist/wizard-session-2w4Ru-Wz.js.map +1 -0
  117. package/dist/wizard-session-DGaUHOF3.js +2 -0
  118. package/dist/wizard-ui-DoyOZxK8.js +16 -0
  119. package/dist/wizard-ui-DoyOZxK8.js.map +1 -0
  120. package/dist/{yara-hooks-BTNJ6MGW.js → yara-hooks-DCeMDd1o.js} +19 -68
  121. package/dist/yara-hooks-DCeMDd1o.js.map +1 -0
  122. package/dist/yara-hooks-DSGuCU9A.js +2 -0
  123. package/package.json +1 -1
  124. package/dist/agent-interface-Avtr_5M5.js.map +0 -1
  125. package/dist/agent-prompt-loader-CHixNPgY.js.map +0 -1
  126. package/dist/agent-runner-COOIUJCP.js +0 -6188
  127. package/dist/agent-runner-COOIUJCP.js.map +0 -1
  128. package/dist/analytics-C67F2vee.js.map +0 -1
  129. package/dist/analytics-CJA1uLlk.js +0 -2
  130. package/dist/api-Dj1yabTj.js.map +0 -1
  131. package/dist/bounded-fs-CWRYuLAn.js.map +0 -1
  132. package/dist/ci-install-CvXL5h13.js.map +0 -1
  133. package/dist/debug-B4kzIZPi.js +0 -754
  134. package/dist/debug-B4kzIZPi.js.map +0 -1
  135. package/dist/env-api-key-BZ5wE3Y4.js.map +0 -1
  136. package/dist/environment-BEvsey6i.js.map +0 -1
  137. package/dist/errors-BoJvrdw8.js.map +0 -1
  138. package/dist/gateway-session-C118uACz.js +0 -2
  139. package/dist/gateway-session-xPFv6p5c.js.map +0 -1
  140. package/dist/headless-ui-CsmQrDIl.js.map +0 -1
  141. package/dist/local-dev-DPZiIPCK.js.map +0 -1
  142. package/dist/mcp-Cbuw_xss.js +0 -64
  143. package/dist/mcp-Cbuw_xss.js.map +0 -1
  144. package/dist/mcp-prompt-streaming-BU_kuur_.js.map +0 -1
  145. package/dist/mint-failure-BrleGqMd.js.map +0 -1
  146. package/dist/non-interactive-DcOjH2fw.js.map +0 -1
  147. package/dist/orchestrator-tools-DXwr8Sp3.js.map +0 -1
  148. package/dist/package-json-xt3eeyBI.js.map +0 -1
  149. package/dist/package-manager-DR23m5Jg.js +0 -290
  150. package/dist/package-manager-DR23m5Jg.js.map +0 -1
  151. package/dist/pi-mY8I2XkG.js.map +0 -1
  152. package/dist/playground-CDUUKLkC.js.map +0 -1
  153. package/dist/posthog-Hc_-9wrr.js.map +0 -1
  154. package/dist/provisioning-xfdjhFtA.js.map +0 -1
  155. package/dist/queue-tools-C8y_xZJi.js.map +0 -1
  156. package/dist/registry-DTmREJ-f.js.map +0 -1
  157. package/dist/security-Dw2oFJjP.js.map +0 -1
  158. package/dist/setup-utils-fjJTBhaB.js.map +0 -1
  159. package/dist/start-tui-UNe2xQ0U.js.map +0 -1
  160. package/dist/store-Bic4Cr3L.js.map +0 -1
  161. package/dist/subagent-Dz41vV9j.js.map +0 -1
  162. package/dist/task-5-fw_Vw3.js.map +0 -1
  163. package/dist/task-stream-dVzl6b_q.js.map +0 -1
  164. package/dist/tasks-D1c2z1aw.js.map +0 -1
  165. package/dist/telemetry-BRnxBRWK.js.map +0 -1
  166. package/dist/terminal-9bvRa4Qt.js.map +0 -1
  167. package/dist/tools-Dp6i9k70.js.map +0 -1
  168. package/dist/wizard-abort-CAcInAxg.js +0 -2
  169. package/dist/wizard-abort-lE6umflt.js.map +0 -1
  170. package/dist/wizard-session-CYvyYnti.js +0 -2
  171. package/dist/wizard-session-FSJCkTcP.js.map +0 -1
  172. package/dist/yara-hooks-BTNJ6MGW.js.map +0 -1
  173. package/dist/yara-hooks-CFY4pGcW.js +0 -2
@@ -1,7 +1,7 @@
1
- import "./debug-B4kzIZPi.js";
2
- import { n as analytics } from "./analytics-C67F2vee.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-BRnxBRWK.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 { G as POSTHOG_APP_URL, g as SERVICE_LABELS, gt as getSkillsBaseUrl, ht as WIZARD_USER_AGENT, s as logToFile } from "./debug-B4kzIZPi.js";
2
- import "./wizard-session-FSJCkTcP.js";
3
- import { n as analytics } from "./analytics-C67F2vee.js";
4
- import { i as withUtm, n as openTrackedLink } from "./telemetry-BRnxBRWK.js";
5
- import { t as getOrAskForProjectData } from "./setup-utils-fjJTBhaB.js";
6
- import { a as fetchSlackConnected, o as fetchUserData } from "./api-Dj1yabTj.js";
7
- import { G as fetchSkillMenu } from "./agent-interface-Avtr_5M5.js";
8
- import { o as formatCostUsd, s as formatTokenCount } from "./agent-runner-COOIUJCP.js";
9
- import { y as AUDIT_SEVERITY_STYLE } from "./yara-hooks-BTNJ6MGW.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-BrleGqMd.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-Bic4Cr3L.js";
13
- import { c as isOk, f as summarizeFailure, l as namesWithStatus, n as AVAILABLE_FEATURES, o as isAllFeaturesSelected, t as ALL_FEATURE_VALUES } from "./defaults-4c4YwTmW.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",
@@ -5813,6 +5777,12 @@ const Legend = () => /* @__PURE__ */ jsxs(Text, { children: [
5813
5777
  })
5814
5778
  ] });
5815
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
5816
5786
  //#region src/ui/tui/screens/audit/AuditChecksViewer/Header.tsx
5817
5787
  function statusCounts(checks) {
5818
5788
  const out = {
@@ -5851,24 +5821,16 @@ const Header = ({ layout }) => /* @__PURE__ */ jsxs(Box, { children: [
5851
5821
  })
5852
5822
  })
5853
5823
  ] });
5854
- const Summary = ({ total, counts }) => /* @__PURE__ */ jsxs(Text, {
5824
+ const Summary = ({ total, counts }) => /* @__PURE__ */ jsx(Text, {
5855
5825
  dimColor: true,
5856
5826
  children: [
5857
- total,
5858
- " total · ",
5859
- counts.pending,
5860
- " pending · ",
5861
- counts.error,
5862
- " errors ·",
5863
- " ",
5864
- counts.warning,
5865
- " warnings · ",
5866
- counts.suggestion,
5867
- " suggestions · ",
5868
- counts.pass,
5869
- " ",
5870
- "passes"
5871
- ]
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(" · ")
5872
5834
  });
5873
5835
  //#endregion
5874
5836
  //#region src/ui/tui/screens/audit/AuditChecksViewer/Footer.tsx
@@ -6323,7 +6285,7 @@ const ReportVisual = () => /* @__PURE__ */ jsxs(VisualBox, { children: [
6323
6285
  const WriteReportSlide = {
6324
6286
  area: "Write report",
6325
6287
  intro: [
6326
- "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.",
6327
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.",
6328
6290
  "We will upload the report into a PostHog notebook in the next step."
6329
6291
  ],
@@ -6744,7 +6706,10 @@ const OutroScreen = ({ store }) => {
6744
6706
  })
6745
6707
  ] })
6746
6708
  }),
6747
- outroData.notebookUrl && /* @__PURE__ */ jsx(Box, {
6709
+ outroData.notebookUrl && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Box, {
6710
+ marginTop: 1,
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, {
6748
6713
  marginTop: 1,
6749
6714
  children: /* @__PURE__ */ jsxs(Text, { children: [
6750
6715
  "Notebook:",
@@ -6754,7 +6719,7 @@ const OutroScreen = ({ store }) => {
6754
6719
  children: withUtm(outroData.notebookUrl, "outro-notebook")
6755
6720
  })
6756
6721
  ] })
6757
- }),
6722
+ })] }),
6758
6723
  outroData.dashboardUrl && /* @__PURE__ */ jsx(Box, {
6759
6724
  marginTop: 1,
6760
6725
  children: /* @__PURE__ */ jsxs(Text, { children: [
@@ -7226,6 +7191,6 @@ function releaseTerminal() {
7226
7191
  process.stdout.write(RESET_ATTRS + LEAVE_ALT_SCREEN);
7227
7192
  }
7228
7193
  //#endregion
7229
- 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 };
7230
7195
 
7231
- //# sourceMappingURL=terminal-9bvRa4Qt.js.map
7196
+ //# sourceMappingURL=terminal-DrGyci_a.js.map