@posthog/wizard 2.10.4 → 2.11.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 (81) hide show
  1. package/dist/{McpScreen-LqnNwEfV.js → McpScreen-DvUncZBi.js} +153 -23
  2. package/dist/McpScreen-DvUncZBi.js.map +1 -0
  3. package/dist/{add-mcp-server-to-clients-lfUH2pdU.js → add-mcp-server-to-clients-Br1hDRiB.js} +157 -125
  4. package/dist/add-mcp-server-to-clients-Br1hDRiB.js.map +1 -0
  5. package/dist/{agent-runner-DHtcWn15.js → agent-runner-fWYFO4H0.js} +11 -9
  6. package/dist/agent-runner-fWYFO4H0.js.map +1 -0
  7. package/dist/{agent-skill-BVjJqol6.js → agent-skill-DJOzDaQV.js} +1 -1
  8. package/dist/{agent-skill-BVjJqol6.js.map → agent-skill-DJOzDaQV.js.map} +1 -1
  9. package/dist/analytics-CfAUlt6-.js +2 -0
  10. package/dist/{analytics-Cm6i5_gc.js → analytics-D3rY3TaN.js} +7 -4
  11. package/dist/analytics-D3rY3TaN.js.map +1 -0
  12. package/dist/bin.js +234 -41
  13. package/dist/bin.js.map +1 -1
  14. package/dist/{debug-CIyf0ZGx.js → debug-D-0xueVl.js} +1 -1
  15. package/dist/{debug-CyJ_3dTP.js → debug-gWEjmYVV.js} +4 -2
  16. package/dist/{debug-CyJ_3dTP.js.map → debug-gWEjmYVV.js.map} +1 -1
  17. package/dist/{defaults-DoVkE0gW.js → defaults-CPH6eWhN.js} +8 -8
  18. package/dist/defaults-CPH6eWhN.js.map +1 -0
  19. package/dist/{detection-gcQwPKPu.js → detection-B7GNzve-.js} +103 -19
  20. package/dist/detection-B7GNzve-.js.map +1 -0
  21. package/dist/{env-api-key-K8TdTDII.js → env-api-key-DU8uIEvo.js} +1 -1
  22. package/dist/{env-api-key-K8TdTDII.js.map → env-api-key-DU8uIEvo.js.map} +1 -1
  23. package/dist/file-DhSBlq-x.js +16 -0
  24. package/dist/file-DhSBlq-x.js.map +1 -0
  25. package/dist/{file-utils-BWneZy6p.js → file-utils-Dy9JncCo.js} +1 -1
  26. package/dist/{file-utils-BWneZy6p.js.map → file-utils-Dy9JncCo.js.map} +1 -1
  27. package/dist/package-json-BzVey4Bd.js +2 -0
  28. package/dist/{package-json-Ctq6LSl8.js → package-json-F_7oktsp.js} +1 -1
  29. package/dist/{package-json-Ctq6LSl8.js.map → package-json-F_7oktsp.js.map} +1 -1
  30. package/dist/{package-manager-CwU26DwX.js → package-manager-D3Lo6nXf.js} +2 -2
  31. package/dist/{package-manager-CwU26DwX.js.map → package-manager-D3Lo6nXf.js.map} +1 -1
  32. package/dist/paths-BL-x2rFy.js +16 -0
  33. package/dist/paths-BL-x2rFy.js.map +1 -0
  34. package/dist/posthog-ByrpqEjN.js +11 -0
  35. package/dist/posthog-ByrpqEjN.js.map +1 -0
  36. package/dist/{posthog-integration-HBDZrREG.js → posthog-integration-D4SRhJIQ.js} +10 -9
  37. package/dist/posthog-integration-D4SRhJIQ.js.map +1 -0
  38. package/dist/{readiness-Cep84RsR.js → readiness-gQvQNCeL.js} +10 -10
  39. package/dist/readiness-gQvQNCeL.js.map +1 -0
  40. package/dist/{registry-BIV1wRpo.js → registry-DaPKstG3.js} +6 -6
  41. package/dist/{registry-BIV1wRpo.js.map → registry-DaPKstG3.js.map} +1 -1
  42. package/dist/{router-CXjdWNh2.js → router-SgzmfLGi.js} +3 -2
  43. package/dist/router-SgzmfLGi.js.map +1 -0
  44. package/dist/setup-utils-_ONxN-TT.js +2 -0
  45. package/dist/{setup-utils-CHojnr4N.js → setup-utils-y4s-3uKT.js} +13 -7
  46. package/dist/setup-utils-y4s-3uKT.js.map +1 -0
  47. package/dist/{start-playground-D1iLBvqF.js → start-playground-g1TxpCZ5.js} +84 -7
  48. package/dist/start-playground-g1TxpCZ5.js.map +1 -0
  49. package/dist/{start-tui-DkT_H5zx.js → start-tui-CQef69NR.js} +305 -23
  50. package/dist/start-tui-CQef69NR.js.map +1 -0
  51. package/dist/{steps-zpqG7W08.js → steps-D1zKDqAo.js} +6 -6
  52. package/dist/{steps-zpqG7W08.js.map → steps-D1zKDqAo.js.map} +1 -1
  53. package/dist/task-stream-DX_jKDQu.js +61 -0
  54. package/dist/task-stream-DX_jKDQu.js.map +1 -0
  55. package/dist/{telemetry-CPoSyK0a.js → telemetry-CyUUSAYy.js} +2 -2
  56. package/dist/{telemetry-CPoSyK0a.js.map → telemetry-CyUUSAYy.js.map} +1 -1
  57. package/dist/{wizard-abort-DKctLd33.js → wizard-abort-Buodno3f.js} +3 -3
  58. package/dist/{wizard-abort-DKctLd33.js.map → wizard-abort-Buodno3f.js.map} +1 -1
  59. package/dist/{wizard-abort-BcEPhAxY.js → wizard-abort-DZmO_sIZ.js} +1 -1
  60. package/dist/wizard-session-COhklXAF.js +2 -0
  61. package/dist/{wizard-session-Db6R023m.js → wizard-session-D5bggSsu.js} +1 -1
  62. package/dist/{wizard-session-Db6R023m.js.map → wizard-session-D5bggSsu.js.map} +1 -1
  63. package/dist/wizard-ui-BExOjdjA.js +14 -0
  64. package/dist/wizard-ui-BExOjdjA.js.map +1 -0
  65. package/npm-shrinkwrap.json +2 -2
  66. package/package.json +1 -1
  67. package/dist/McpScreen-LqnNwEfV.js.map +0 -1
  68. package/dist/add-mcp-server-to-clients-lfUH2pdU.js.map +0 -1
  69. package/dist/agent-runner-DHtcWn15.js.map +0 -1
  70. package/dist/analytics-Cm6i5_gc.js.map +0 -1
  71. package/dist/analytics-CviQ_A9M.js +0 -2
  72. package/dist/defaults-DoVkE0gW.js.map +0 -1
  73. package/dist/detection-gcQwPKPu.js.map +0 -1
  74. package/dist/package-json-BQgl5C3Z.js +0 -2
  75. package/dist/posthog-integration-HBDZrREG.js.map +0 -1
  76. package/dist/readiness-Cep84RsR.js.map +0 -1
  77. package/dist/router-CXjdWNh2.js.map +0 -1
  78. package/dist/setup-utils-CHojnr4N.js.map +0 -1
  79. package/dist/start-playground-D1iLBvqF.js.map +0 -1
  80. package/dist/start-tui-DkT_H5zx.js.map +0 -1
  81. package/dist/wizard-session-y7nf6aKH.js +0 -2
@@ -1,8 +1,10 @@
1
- import { n as analytics, r as sessionProperties } from "./analytics-Cm6i5_gc.js";
2
- import { r as buildSession } from "./wizard-session-Db6R023m.js";
3
- import { t as SERVICE_LABELS } from "./readiness-Cep84RsR.js";
4
- import { n as AVAILABLE_FEATURES, t as ALL_FEATURE_VALUES } from "./defaults-DoVkE0gW.js";
5
- import { i as WORKFLOW_STEPS, t as WizardRouter } from "./router-CXjdWNh2.js";
1
+ import { n as analytics, r as sessionProperties } from "./analytics-D3rY3TaN.js";
2
+ import { n as isTaskStatus } from "./wizard-ui-BExOjdjA.js";
3
+ import { r as buildSession } from "./wizard-session-D5bggSsu.js";
4
+ import { t as SERVICE_LABELS } from "./readiness-gQvQNCeL.js";
5
+ import { n as getKindMeta } from "./bin.js";
6
+ import { n as AVAILABLE_FEATURES, t as ALL_FEATURE_VALUES } from "./defaults-CPH6eWhN.js";
7
+ import { i as WORKFLOW_STEPS, t as WizardRouter } from "./router-SgzmfLGi.js";
6
8
  import * as fs$1 from "fs";
7
9
  import { Box, Text, measureElement, useInput, useStdout } from "ink";
8
10
  import { Component, createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
@@ -33,6 +35,7 @@ var WizardStore = class {
33
35
  $learnCardBlockIdx = atom(0);
34
36
  $learnCardComplete = atom(false);
35
37
  $version = atom(0);
38
+ _onTasksChanged = null;
36
39
  /** Last screen seen — used to detect screen transitions for analytics. */
37
40
  _lastScreen = null;
38
41
  /** Hooks run when transitioning onto a screen. */
@@ -414,16 +417,24 @@ var WizardStore = class {
414
417
  this.emitChange();
415
418
  }
416
419
  syncTodos(todos) {
417
- const incoming = todos.map((t) => ({
418
- label: t.content,
419
- activeForm: t.activeForm,
420
- status: t.status || "pending",
421
- done: t.status === "completed"
422
- }));
420
+ const incoming = todos.map((t) => {
421
+ const status = isTaskStatus(t.status) ? t.status : "pending";
422
+ return {
423
+ label: t.content,
424
+ activeForm: t.activeForm,
425
+ status,
426
+ done: status === "completed"
427
+ };
428
+ });
423
429
  const incomingLabels = new Set(incoming.map((t) => t.label));
424
430
  const retained = this.$tasks.get().filter((t) => t.done && !incomingLabels.has(t.label));
425
431
  this.$tasks.set([...retained, ...incoming]);
426
432
  this.emitChange();
433
+ this._onTasksChanged?.();
434
+ }
435
+ /** Register a listener for task state changes (e.g. task stream push). */
436
+ set onTasksChanged(fn) {
437
+ this._onTasksChanged = fn;
427
438
  }
428
439
  subscribe(callback) {
429
440
  return this.$version.listen(() => callback());
@@ -3185,6 +3196,120 @@ const ServiceHealthList = ({ health, filterKeys, showHealthy = true }) => {
3185
3196
  });
3186
3197
  };
3187
3198
  //#endregion
3199
+ //#region src/ui/tui/screens/doctor/IssueTable.tsx
3200
+ const SEVERITY_ORDER = [
3201
+ "critical",
3202
+ "warning",
3203
+ "info"
3204
+ ];
3205
+ const SEVERITY_COLOR = {
3206
+ critical: Colors.error,
3207
+ warning: Colors.accent,
3208
+ info: Colors.primary
3209
+ };
3210
+ const SEVERITY_LABEL = {
3211
+ critical: "Critical",
3212
+ warning: "Warning",
3213
+ info: "Info"
3214
+ };
3215
+ const ICON_COL = 2;
3216
+ const ROW_GAP = 2;
3217
+ const NARROW_TERM_THRESHOLD = 90;
3218
+ const MAX_DOCS_WIDTH = 50;
3219
+ const MIN_DOCS_WIDTH = 20;
3220
+ function computeDocsWidth(termCols) {
3221
+ if (termCols < NARROW_TERM_THRESHOLD) return 0;
3222
+ const inner = termCols - 12;
3223
+ return Math.min(MAX_DOCS_WIDTH, Math.max(MIN_DOCS_WIDTH, Math.floor(inner * .45)));
3224
+ }
3225
+ const IssueTable = ({ issues }) => {
3226
+ const [termCols] = useStdoutDimensions();
3227
+ const docsWidth = computeDocsWidth(termCols);
3228
+ const grouped = {};
3229
+ for (const issue of issues) (grouped[issue.severity] ??= []).push(issue);
3230
+ return /* @__PURE__ */ jsx(Box, {
3231
+ flexDirection: "column",
3232
+ children: SEVERITY_ORDER.map((sev) => {
3233
+ const list = grouped[sev];
3234
+ if (!list || list.length === 0) return null;
3235
+ return /* @__PURE__ */ jsxs(Box, {
3236
+ flexDirection: "column",
3237
+ marginTop: 1,
3238
+ children: [/* @__PURE__ */ jsxs(Text, {
3239
+ bold: true,
3240
+ color: SEVERITY_COLOR[sev],
3241
+ children: [
3242
+ SEVERITY_LABEL[sev],
3243
+ " (",
3244
+ list.length,
3245
+ ")"
3246
+ ]
3247
+ }), list.map((issue) => /* @__PURE__ */ jsx(IssueRow, {
3248
+ issue,
3249
+ docsWidth
3250
+ }, issue.id))]
3251
+ }, sev);
3252
+ })
3253
+ });
3254
+ };
3255
+ const IssueRow = ({ issue, docsWidth }) => {
3256
+ const meta = getKindMeta(issue.kind);
3257
+ const sevColor = SEVERITY_COLOR[issue.severity];
3258
+ if (docsWidth === 0) return /* @__PURE__ */ jsxs(Box, {
3259
+ flexDirection: "column",
3260
+ children: [/* @__PURE__ */ jsxs(Box, { children: [/* @__PURE__ */ jsx(Box, {
3261
+ width: ICON_COL,
3262
+ children: /* @__PURE__ */ jsx(Text, {
3263
+ color: sevColor,
3264
+ children: Icons.squareFilled
3265
+ })
3266
+ }), /* @__PURE__ */ jsx(Box, {
3267
+ flexGrow: 1,
3268
+ flexShrink: 1,
3269
+ overflow: "hidden",
3270
+ children: /* @__PURE__ */ jsx(Text, {
3271
+ wrap: "truncate",
3272
+ children: meta.title
3273
+ })
3274
+ })] }), /* @__PURE__ */ jsx(Box, {
3275
+ paddingLeft: ICON_COL,
3276
+ children: /* @__PURE__ */ jsx(Text, {
3277
+ color: Colors.primary,
3278
+ wrap: "truncate",
3279
+ children: meta.docsUrl
3280
+ })
3281
+ })]
3282
+ });
3283
+ return /* @__PURE__ */ jsxs(Box, { children: [
3284
+ /* @__PURE__ */ jsx(Box, {
3285
+ width: ICON_COL,
3286
+ children: /* @__PURE__ */ jsx(Text, {
3287
+ color: sevColor,
3288
+ children: Icons.squareFilled
3289
+ })
3290
+ }),
3291
+ /* @__PURE__ */ jsx(Box, {
3292
+ flexGrow: 1,
3293
+ flexShrink: 1,
3294
+ overflow: "hidden",
3295
+ marginRight: ROW_GAP,
3296
+ children: /* @__PURE__ */ jsx(Text, {
3297
+ wrap: "truncate",
3298
+ children: meta.title
3299
+ })
3300
+ }),
3301
+ /* @__PURE__ */ jsx(Box, {
3302
+ width: docsWidth,
3303
+ flexShrink: 0,
3304
+ children: /* @__PURE__ */ jsx(Text, {
3305
+ color: Colors.primary,
3306
+ wrap: "truncate",
3307
+ children: meta.docsUrl
3308
+ })
3309
+ })
3310
+ ] });
3311
+ };
3312
+ //#endregion
3188
3313
  //#region src/ui/tui/screens/McpScreen.tsx
3189
3314
  /**
3190
3315
  * McpScreen — MCP server install/remove flow.
@@ -3209,6 +3334,7 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
3209
3334
  const [clients, setClients] = useState([]);
3210
3335
  const [selectedClientNames, setSelectedClientNames] = useState([]);
3211
3336
  const [resultClients, setResultClients] = useState([]);
3337
+ const [pluginClients, setPluginClients] = useState([]);
3212
3338
  useEffect(() => {
3213
3339
  (async () => {
3214
3340
  try {
@@ -3241,16 +3367,19 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
3241
3367
  };
3242
3368
  const doInstall = async (names, features) => {
3243
3369
  setPhase("working");
3244
- let result = [];
3370
+ let mcpResult = [];
3371
+ let pluginResult = [];
3245
3372
  try {
3246
- result = await installer.install(names, features, store.session.apiKey);
3247
- setResultClients(result);
3248
- } catch {
3249
- setResultClients([]);
3250
- }
3373
+ mcpResult = await installer.install(names, features, store.session.apiKey);
3374
+ } catch {}
3375
+ try {
3376
+ pluginResult = await installer.installPlugins(names);
3377
+ } catch {}
3378
+ setResultClients(mcpResult);
3379
+ setPluginClients(pluginResult);
3251
3380
  setPhase("done");
3252
- const outcome = result.length > 0 ? "installed" : "failed";
3253
- setTimeout(() => markDone(store, outcome, result), 2e3);
3381
+ const outcome = mcpResult.length > 0 ? "installed" : "failed";
3382
+ setTimeout(() => markDone(store, outcome, mcpResult), 2e3);
3254
3383
  };
3255
3384
  const doRemove = async () => {
3256
3385
  setPhase("working");
@@ -3294,8 +3423,8 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
3294
3423
  }), /* @__PURE__ */ jsx(Box, {
3295
3424
  marginTop: 1,
3296
3425
  children: /* @__PURE__ */ jsx(ConfirmationInput, {
3297
- message: isRemove ? "Remove the PostHog MCP server from your editor?" : "Install the PostHog MCP server to your editor?",
3298
- confirmLabel: isRemove ? "Remove MCP" : "Install MCP",
3426
+ message: `${isRemove ? "Remove" : "Install"} the PostHog MCP server${clients.some((c) => c.supportsPlugin) ? " and plugin" : ""}?`,
3427
+ confirmLabel: isRemove ? "Remove" : "Install",
3299
3428
  cancelLabel: "No thanks",
3300
3429
  onConfirm: handleConfirm,
3301
3430
  onCancel: handleSkip
@@ -3332,6 +3461,7 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
3332
3461
  children: [
3333
3462
  "✔",
3334
3463
  " MCP server",
3464
+ !isRemove && pluginClients.length > 0 ? " and plugin" : "",
3335
3465
  " ",
3336
3466
  isRemove ? "removed from" : "installed for",
3337
3467
  ":"
@@ -3351,6 +3481,6 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
3351
3481
  });
3352
3482
  };
3353
3483
  //#endregion
3354
- export { SplitView as _, HNViewer as a, Icons as b, EventPlanViewer as c, ConfirmationInput as d, GroupedPickerMenu as f, LoadingBox as g, ProgressList as h, LearnCard as i, LogViewer as l, PickerMenu as m, ServiceHealthList as n, TabContainer as o, useStdoutDimensions as p, TipsCard as r, ScreenContainer as s, McpScreen as t, ModalOverlay as u, CardLayout as v, WizardStore as x, Colors as y };
3484
+ export { Icons as C, Colors as S, PickerMenu as _, ServiceHealthList as a, SplitView as b, HNViewer as c, EventPlanViewer as d, LogViewer as f, useStdoutDimensions as g, GroupedPickerMenu as h, SEVERITY_ORDER as i, TabContainer as l, ConfirmationInput as m, IssueTable as n, TipsCard as o, ModalOverlay as p, SEVERITY_LABEL as r, LearnCard as s, McpScreen as t, ScreenContainer as u, ProgressList as v, WizardStore as w, CardLayout as x, LoadingBox as y };
3355
3485
 
3356
- //# sourceMappingURL=McpScreen-LqnNwEfV.js.map
3486
+ //# sourceMappingURL=McpScreen-DvUncZBi.js.map