sunpeak 0.19.4 → 0.19.12

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 (61) hide show
  1. package/README.md +6 -4
  2. package/bin/commands/dev.mjs +1 -1
  3. package/bin/commands/inspect.mjs +1 -1
  4. package/bin/commands/new.mjs +92 -10
  5. package/bin/commands/start.mjs +3 -1
  6. package/bin/commands/test-init.mjs +548 -76
  7. package/bin/commands/test.mjs +401 -4
  8. package/bin/lib/eval/eval-providers.mjs +34 -0
  9. package/bin/lib/eval/eval-reporter.mjs +105 -0
  10. package/bin/lib/eval/eval-runner.mjs +362 -0
  11. package/bin/lib/eval/eval-types.d.mts +168 -0
  12. package/bin/lib/eval/eval-vitest-plugin.mjs +147 -0
  13. package/bin/lib/eval/model-registry.mjs +73 -0
  14. package/bin/lib/inspect/inspect-config.mjs +1 -1
  15. package/bin/lib/sandbox-server.mjs +5 -2
  16. package/bin/lib/test/test-config.mjs +1 -1
  17. package/bin/sunpeak.js +1 -0
  18. package/dist/chatgpt/index.cjs +1 -1
  19. package/dist/chatgpt/index.js +1 -1
  20. package/dist/claude/index.cjs +1 -1
  21. package/dist/claude/index.js +1 -1
  22. package/dist/host/chatgpt/index.cjs +1 -1
  23. package/dist/host/chatgpt/index.js +1 -1
  24. package/dist/index.cjs +2 -2
  25. package/dist/index.js +2 -2
  26. package/dist/inspector/index.cjs +1 -1
  27. package/dist/inspector/index.js +1 -1
  28. package/dist/{inspector-Bp9jrHIu.js → inspector-D5DckQuU.js} +19 -19
  29. package/dist/{inspector-Bp9jrHIu.js.map → inspector-D5DckQuU.js.map} +1 -1
  30. package/dist/{inspector-Cvq3yjNL.cjs → inspector-jY9O18z9.cjs} +19 -19
  31. package/dist/{inspector-Cvq3yjNL.cjs.map → inspector-jY9O18z9.cjs.map} +1 -1
  32. package/dist/mcp/index.cjs +2 -2
  33. package/dist/mcp/index.cjs.map +1 -1
  34. package/dist/mcp/index.js +2 -2
  35. package/dist/mcp/index.js.map +1 -1
  36. package/dist/{use-app-Ck5kR1Sf.js → use-app-Bfargfa3.js} +2 -2
  37. package/dist/{use-app-Ck5kR1Sf.js.map → use-app-Bfargfa3.js.map} +1 -1
  38. package/dist/{use-app-DHYiev3D.cjs → use-app-CbsBEmwv.cjs} +2 -2
  39. package/dist/{use-app-DHYiev3D.cjs.map → use-app-CbsBEmwv.cjs.map} +1 -1
  40. package/package.json +32 -2
  41. package/template/README.md +17 -7
  42. package/template/_gitignore +2 -0
  43. package/template/dist/albums/albums.html +1 -1
  44. package/template/dist/albums/albums.json +1 -1
  45. package/template/dist/carousel/carousel.html +1 -1
  46. package/template/dist/carousel/carousel.json +1 -1
  47. package/template/dist/map/map.html +1 -1
  48. package/template/dist/map/map.json +1 -1
  49. package/template/dist/review/review.html +1 -1
  50. package/template/dist/review/review.json +1 -1
  51. package/template/node_modules/.bin/vitest +2 -2
  52. package/template/node_modules/.vite/deps/_metadata.json +3 -3
  53. package/template/node_modules/.vite-mcp/deps/_metadata.json +20 -20
  54. package/template/node_modules/.vite-mcp/deps/vitest.js +7 -7
  55. package/template/node_modules/.vite-mcp/deps/vitest.js.map +1 -1
  56. package/template/tests/evals/_env.example +5 -0
  57. package/template/tests/evals/albums.eval.ts +31 -0
  58. package/template/tests/evals/carousel.eval.ts +16 -0
  59. package/template/tests/evals/eval.config.ts +26 -0
  60. package/template/tests/evals/map.eval.ts +16 -0
  61. package/template/tests/evals/review.eval.ts +53 -0
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Model registry — maps model ID strings to AI SDK provider instances.
3
+ *
4
+ * Provider packages are dynamically imported so users only need to install
5
+ * the providers they actually use.
6
+ */
7
+
8
+ /**
9
+ * @typedef {{ modelId: string, providerPackage: string }} ModelMapping
10
+ */
11
+
12
+ /**
13
+ * Detect which provider package a model ID belongs to.
14
+ * @param {string} modelId
15
+ * @returns {string} Provider package name
16
+ */
17
+ function getProviderPackage(modelId) {
18
+ if (/^(gpt-|o[134]-|o[134]$|chatgpt-)/.test(modelId)) return '@ai-sdk/openai';
19
+ if (/^claude-/.test(modelId)) return '@ai-sdk/anthropic';
20
+ if (/^(gemini-|models\/gemini-)/.test(modelId)) return '@ai-sdk/google';
21
+ throw new Error(
22
+ `Unknown model: "${modelId}". Expected a recognized prefix (gpt-, claude-, gemini-, o1-, o3-, o4-).`
23
+ );
24
+ }
25
+
26
+ /**
27
+ * Resolve a model ID string to an AI SDK LanguageModel instance.
28
+ * @param {string} modelId - e.g., 'gpt-4o', 'claude-sonnet-4-20250514', 'gemini-2.0-flash'
29
+ * @returns {Promise<import('ai').LanguageModel>}
30
+ */
31
+ export async function resolveModel(modelId) {
32
+ const pkg = getProviderPackage(modelId);
33
+
34
+ let provider;
35
+ try {
36
+ provider = await import(pkg);
37
+ } catch {
38
+ throw new Error(
39
+ `Provider package "${pkg}" is not installed. Install it to use ${modelId}:\n\n pnpm add -D ${pkg}\n`
40
+ );
41
+ }
42
+
43
+ // Each provider package exports a default function or named function
44
+ // that creates model instances: openai('gpt-4o'), anthropic('claude-...'), google('gemini-...')
45
+ if (pkg === '@ai-sdk/openai') {
46
+ const { openai } = provider;
47
+ return openai(modelId);
48
+ }
49
+ if (pkg === '@ai-sdk/anthropic') {
50
+ const { anthropic } = provider;
51
+ return anthropic(modelId);
52
+ }
53
+ if (pkg === '@ai-sdk/google') {
54
+ const { google } = provider;
55
+ return google(modelId);
56
+ }
57
+
58
+ throw new Error(`No provider factory found for ${pkg}`);
59
+ }
60
+
61
+ /**
62
+ * Check that the `ai` core package is installed.
63
+ * @returns {Promise<void>}
64
+ */
65
+ export async function checkAiSdkInstalled() {
66
+ try {
67
+ await import('ai');
68
+ } catch {
69
+ throw new Error(
70
+ 'The "ai" package is not installed. Install it to use evals:\n\n pnpm add -D ai\n'
71
+ );
72
+ }
73
+ }
@@ -49,7 +49,7 @@ export function defineInspectConfig(options) {
49
49
  const serverArg = server.includes(' ') ? `"${server}"` : server;
50
50
  const command = [
51
51
  `SUNPEAK_SANDBOX_PORT=${sandboxPort}`,
52
- 'npx sunpeak inspect',
52
+ 'sunpeak inspect',
53
53
  `--server ${serverArg}`,
54
54
  ...(simulationsDir ? [`--simulations ${simulationsDir}`] : []),
55
55
  `--port ${port}`,
@@ -65,12 +65,15 @@ export async function startSandboxServer({ preferredPort = 24680 } = {}) {
65
65
  } else if (
66
66
  err.code === 'HPE_INVALID_METHOD' &&
67
67
  err.rawPacket instanceof Buffer &&
68
- err.rawPacket[0] === 0x16
68
+ err.rawPacket[0] >= 0x14 &&
69
+ err.rawPacket[0] <= 0x18
69
70
  ) {
70
71
  console.error(
71
72
  'Received HTTPS request on sandbox server (port ' + port + '). ' +
72
73
  'If you\'re using ngrok, make sure the upstream is http:// (not https://). ' +
73
- 'Example: ngrok http 8000'
74
+ 'Example: ngrok http 8000\n' +
75
+ 'If this only happens in Safari, use Chrome for `sunpeak dev` instead. ' +
76
+ 'Safari is not compatible with the dev server. Production deploys (`sunpeak start`) work in all browsers.'
74
77
  );
75
78
  } else {
76
79
  console.error('Sandbox server client error', err);
@@ -103,7 +103,7 @@ function buildInspectCommand({ server, port, sandboxPort, simulationsDir }) {
103
103
  }
104
104
  }
105
105
 
106
- parts.push('npx sunpeak inspect');
106
+ parts.push('sunpeak inspect');
107
107
 
108
108
  if (server.url) {
109
109
  parts.push(`--server ${server.url}`);
package/bin/sunpeak.js CHANGED
@@ -115,6 +115,7 @@ Testing (works with any MCP server):
115
115
  init Scaffold test infrastructure into a project
116
116
  --unit Run unit tests (vitest)
117
117
  --live Run live tests against real hosts
118
+ --eval Run evals against LLM models
118
119
 
119
120
  App framework (for sunpeak projects):
120
121
  sunpeak new [name] [resources] Create a new project
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../chunk-9hOWP6kD.cjs");
3
- const require_inspector = require("../inspector-Cvq3yjNL.cjs");
3
+ const require_inspector = require("../inspector-jY9O18z9.cjs");
4
4
  const require_inspector_url = require("../inspector-url-C3LTKgXt.cjs");
5
5
  const require_discovery = require("../discovery-Clu4uHp1.cjs");
6
6
  //#region src/chatgpt/index.ts
@@ -1,5 +1,5 @@
1
1
  import { r as __exportAll } from "../chunk-D6g4UhsZ.js";
2
- import { _ as McpAppHost, d as ThemeProvider, f as useThemeContext, g as extractResourceCSP, h as IframeResource, n as resolveServerToolResult, t as Inspector, v as SCREEN_WIDTHS } from "../inspector-Bp9jrHIu.js";
2
+ import { _ as McpAppHost, d as ThemeProvider, f as useThemeContext, g as extractResourceCSP, h as IframeResource, n as resolveServerToolResult, t as Inspector, v as SCREEN_WIDTHS } from "../inspector-D5DckQuU.js";
3
3
  import { t as createInspectorUrl } from "../inspector-url-CyQcuBI9.js";
4
4
  import { c as toPascalCase, i as findResourceKey, n as extractSimulationKey, r as findResourceDirs, s as getComponentName, t as extractResourceKey } from "../discovery-Cgoegt62.js";
5
5
  //#region src/chatgpt/index.ts
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../chunk-9hOWP6kD.cjs");
3
- const require_inspector = require("../inspector-Cvq3yjNL.cjs");
3
+ const require_inspector = require("../inspector-jY9O18z9.cjs");
4
4
  exports.Inspector = require_inspector.Inspector;
@@ -1,2 +1,2 @@
1
- import { t as Inspector } from "../inspector-Bp9jrHIu.js";
1
+ import { t as Inspector } from "../inspector-D5DckQuU.js";
2
2
  export { Inspector };
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-9hOWP6kD.cjs");
3
- const require_use_app = require("../../use-app-DHYiev3D.cjs");
3
+ const require_use_app = require("../../use-app-CbsBEmwv.cjs");
4
4
  let react = require("react");
5
5
  //#region src/host/chatgpt/openai-types.ts
6
6
  /**
@@ -1,4 +1,4 @@
1
- import { t as useApp } from "../../use-app-Ck5kR1Sf.js";
1
+ import { t as useApp } from "../../use-app-Bfargfa3.js";
2
2
  import { useCallback } from "react";
3
3
  //#region src/host/chatgpt/openai-types.ts
4
4
  /**
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-9hOWP6kD.cjs");
3
3
  const require_protocol = require("./protocol-C8pFDmcy.cjs");
4
- const require_use_app = require("./use-app-DHYiev3D.cjs");
5
- const require_inspector = require("./inspector-Cvq3yjNL.cjs");
4
+ const require_use_app = require("./use-app-CbsBEmwv.cjs");
5
+ const require_inspector = require("./inspector-jY9O18z9.cjs");
6
6
  const require_host_index = require("./host/index.cjs");
7
7
  const require_inspector_index = require("./inspector/index.cjs");
8
8
  const require_chatgpt_index = require("./chatgpt/index.cjs");
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { C as EmbeddedResourceSchema, D as ImplementationSchema, J as RequestIdSchema, Y as ResourceLinkSchema, _ as ContentBlockSchema, ct as array, dt as number, et as ToolSchema, ft as object, gt as unknown, h as CallToolResultSchema, ht as union, lt as boolean, mt as string, pt as record, st as _undefined, ut as literal } from "./protocol-CRqiPTLT.js";
2
- import { $ as u, A as W, B as h, C as P, D as T, E as S, F as c, G as n, H as jQ, I as d, J as q, K as o, L as e, M as _, N as _Q, O as TQ, P as a, Q as t, R as g, S as OQ, T as R, U as k, V as j, W as l, X as r, Y as qQ, Z as s, _ as M, a as B, at as z, b as NQ, c as E, d as FQ, et as v, f as GQ, g as LQ, h as K, i as AQ, it as y, j as WQ, k as U, l as EQ, m as I, n as AppProvider, nt as wQ, o as BQ, ot as zQ, p as H, q as p, r as A, rt as x, s as CX, t as useApp, tt as w, u as F, v as MX, w as PQ, x as O, y as N, z as gQ } from "./use-app-Ck5kR1Sf.js";
3
- import { S as DEFAULT_STYLE_VARIABLES } from "./inspector-Bp9jrHIu.js";
2
+ import { $ as u, A as W, B as h, C as P, D as T, E as S, F as c, G as n, H as jQ, I as d, J as q, K as o, L as e, M as _, N as _Q, O as TQ, P as a, Q as t, R as g, S as OQ, T as R, U as k, V as j, W as l, X as r, Y as qQ, Z as s, _ as M, a as B, at as z, b as NQ, c as E, d as FQ, et as v, f as GQ, g as LQ, h as K, i as AQ, it as y, j as WQ, k as U, l as EQ, m as I, n as AppProvider, nt as wQ, o as BQ, ot as zQ, p as H, q as p, r as A, rt as x, s as CX, t as useApp, tt as w, u as F, v as MX, w as PQ, x as O, y as N, z as gQ } from "./use-app-Bfargfa3.js";
3
+ import { S as DEFAULT_STYLE_VARIABLES } from "./inspector-D5DckQuU.js";
4
4
  import { detectHost, isChatGPT, isClaude } from "./host/index.js";
5
5
  import { t as inspector_exports } from "./inspector/index.js";
6
6
  import { t as chatgpt_exports } from "./chatgpt/index.js";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../chunk-9hOWP6kD.cjs");
3
- const require_inspector = require("../inspector-Cvq3yjNL.cjs");
3
+ const require_inspector = require("../inspector-jY9O18z9.cjs");
4
4
  const require_inspector_url = require("../inspector-url-C3LTKgXt.cjs");
5
5
  const require_discovery = require("../discovery-Clu4uHp1.cjs");
6
6
  //#region src/inspector/index.ts
@@ -1,5 +1,5 @@
1
1
  import { r as __exportAll } from "../chunk-D6g4UhsZ.js";
2
- import { _ as McpAppHost, a as SidebarControl, b as getRegisteredHosts, c as SidebarTextarea, d as ThemeProvider, f as useThemeContext, g as extractResourceCSP, h as IframeResource, i as SidebarCollapsibleControl, l as SidebarToggle, m as useInspectorState, n as resolveServerToolResult, o as SidebarInput, p as useMcpConnection, r as SidebarCheckbox, s as SidebarSelect, t as Inspector, u as SimpleSidebar, v as SCREEN_WIDTHS, x as registerHostShell, y as getHostShell } from "../inspector-Bp9jrHIu.js";
2
+ import { _ as McpAppHost, a as SidebarControl, b as getRegisteredHosts, c as SidebarTextarea, d as ThemeProvider, f as useThemeContext, g as extractResourceCSP, h as IframeResource, i as SidebarCollapsibleControl, l as SidebarToggle, m as useInspectorState, n as resolveServerToolResult, o as SidebarInput, p as useMcpConnection, r as SidebarCheckbox, s as SidebarSelect, t as Inspector, u as SimpleSidebar, v as SCREEN_WIDTHS, x as registerHostShell, y as getHostShell } from "../inspector-D5DckQuU.js";
3
3
  import { t as createInspectorUrl } from "../inspector-url-CyQcuBI9.js";
4
4
  import { c as toPascalCase, i as findResourceKey, n as extractSimulationKey, r as findResourceDirs, s as getComponentName, t as extractResourceKey } from "../discovery-Cgoegt62.js";
5
5
  //#region src/inspector/index.ts
@@ -3995,7 +3995,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
3995
3995
  onChange: setProdResources,
3996
3996
  label: "Prod Resources",
3997
3997
  tooltip: "Load resources from dist/ builds instead of HMR",
3998
- docsPath: "api-reference/cli/dev#prod-tools-and-prod-resources-flags"
3998
+ docsPath: "app-framework/cli/dev#prod-tools-and-prod-resources-flags"
3999
3999
  }),
4000
4000
  hasTools && /* @__PURE__ */ jsxs("div", {
4001
4001
  className: "grid grid-cols-2 gap-2",
@@ -4003,7 +4003,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4003
4003
  children: [/* @__PURE__ */ jsx(SidebarControl, {
4004
4004
  label: "Tool",
4005
4005
  tooltip: "Tool to inspect",
4006
- docsPath: "api-reference/cli/dev",
4006
+ docsPath: "app-framework/cli/dev",
4007
4007
  "data-testid": "tool-selector",
4008
4008
  children: /* @__PURE__ */ jsx(SidebarSelect, {
4009
4009
  value: selectedToolName,
@@ -4017,7 +4017,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4017
4017
  })
4018
4018
  }), /* @__PURE__ */ jsx(SidebarControl, {
4019
4019
  label: selectedToolInfo && selectedToolInfo.fixtureSimNames.length > 0 ? "Simulation" : /* @__PURE__ */ jsx("a", {
4020
- href: `${DOCS_BASE_URL}/api-reference/simulations/simulation`,
4020
+ href: `${DOCS_BASE_URL}/testing/simulations`,
4021
4021
  target: "_blank",
4022
4022
  rel: "noopener noreferrer",
4023
4023
  className: "no-underline transition-colors",
@@ -4031,7 +4031,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4031
4031
  children: "Simulation"
4032
4032
  }),
4033
4033
  tooltip: selectedToolInfo && selectedToolInfo.fixtureSimNames.length > 0 ? "Test fixture with mock data" : "Create simulations for faster testing",
4034
- docsPath: "api-reference/simulations/simulation",
4034
+ docsPath: "testing/simulations",
4035
4035
  "data-testid": "simulation-selector",
4036
4036
  children: /* @__PURE__ */ jsx(SidebarSelect, {
4037
4037
  value: activeSimulationName ?? "__none__",
@@ -4051,7 +4051,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4051
4051
  children: [registeredHosts.length > 1 && /* @__PURE__ */ jsx(SidebarControl, {
4052
4052
  label: "Host",
4053
4053
  tooltip: "Host runtime to simulate",
4054
- docsPath: "api-reference/functions/host-detection",
4054
+ docsPath: "app-framework/functions/host-detection",
4055
4055
  children: /* @__PURE__ */ jsx(SidebarSelect, {
4056
4056
  value: state.activeHost,
4057
4057
  onChange: (value) => state.setActiveHost(value),
@@ -4063,7 +4063,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4063
4063
  }), /* @__PURE__ */ jsx(SidebarControl, {
4064
4064
  label: "Width",
4065
4065
  tooltip: "Chat width",
4066
- docsPath: "api-reference/simulations/inspector",
4066
+ docsPath: "testing/inspector",
4067
4067
  children: /* @__PURE__ */ jsx(SidebarSelect, {
4068
4068
  value: state.screenWidth,
4069
4069
  onChange: (value) => state.setScreenWidth(value),
@@ -4092,7 +4092,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4092
4092
  label: "Host Context",
4093
4093
  defaultCollapsed: false,
4094
4094
  tooltip: "Host-provided environment",
4095
- docsPath: "api-reference/hooks/use-host-context",
4095
+ docsPath: "app-framework/hooks/use-host-context",
4096
4096
  children: /* @__PURE__ */ jsxs("div", {
4097
4097
  className: "space-y-1",
4098
4098
  children: [
@@ -4101,7 +4101,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4101
4101
  children: [/* @__PURE__ */ jsx(SidebarControl, {
4102
4102
  label: "Theme",
4103
4103
  tooltip: "Host color theme",
4104
- docsPath: "api-reference/hooks/use-theme",
4104
+ docsPath: "app-framework/hooks/use-theme",
4105
4105
  children: /* @__PURE__ */ jsx(SidebarToggle, {
4106
4106
  value: state.theme,
4107
4107
  onChange: (value) => state.setTheme(value),
@@ -4116,7 +4116,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4116
4116
  }), /* @__PURE__ */ jsx(SidebarControl, {
4117
4117
  label: "Locale",
4118
4118
  tooltip: "BCP 47 language tag",
4119
- docsPath: "api-reference/hooks/use-locale",
4119
+ docsPath: "app-framework/hooks/use-locale",
4120
4120
  children: /* @__PURE__ */ jsx(SidebarInput, {
4121
4121
  applyOnBlur: true,
4122
4122
  value: state.locale,
@@ -4128,7 +4128,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4128
4128
  /* @__PURE__ */ jsx(SidebarControl, {
4129
4129
  label: "Display Mode",
4130
4130
  tooltip: "Host resource rendering paradigm",
4131
- docsPath: "api-reference/hooks/use-display-mode",
4131
+ docsPath: "app-framework/hooks/use-display-mode",
4132
4132
  children: /* @__PURE__ */ jsx(SidebarToggle, {
4133
4133
  value: state.displayMode,
4134
4134
  onChange: (value) => state.setDisplayMode(value),
@@ -4155,7 +4155,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4155
4155
  children: /* @__PURE__ */ jsx(SidebarControl, {
4156
4156
  label: "Platform",
4157
4157
  tooltip: "End user device platform",
4158
- docsPath: "api-reference/hooks/use-platform",
4158
+ docsPath: "app-framework/hooks/use-platform",
4159
4159
  children: /* @__PURE__ */ jsx(SidebarSelect, {
4160
4160
  value: state.platform,
4161
4161
  onChange: (value) => {
@@ -4193,7 +4193,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4193
4193
  children: /* @__PURE__ */ jsx(SidebarControl, {
4194
4194
  label: "Capabilities",
4195
4195
  tooltip: "End user device capabilities",
4196
- docsPath: "api-reference/hooks/use-device-capabilities",
4196
+ docsPath: "app-framework/hooks/use-device-capabilities",
4197
4197
  children: /* @__PURE__ */ jsxs("div", {
4198
4198
  className: "flex gap-2",
4199
4199
  children: [/* @__PURE__ */ jsx(SidebarCheckbox, {
@@ -4212,7 +4212,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4212
4212
  /* @__PURE__ */ jsx(SidebarControl, {
4213
4213
  label: "Time Zone",
4214
4214
  tooltip: "End user IANA time zone",
4215
- docsPath: "api-reference/hooks/use-time-zone",
4215
+ docsPath: "app-framework/hooks/use-time-zone",
4216
4216
  children: /* @__PURE__ */ jsx(SidebarInput, {
4217
4217
  applyOnBlur: true,
4218
4218
  value: state.timeZone,
@@ -4223,7 +4223,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4223
4223
  /* @__PURE__ */ jsx(SidebarControl, {
4224
4224
  label: "Container Dimensions",
4225
4225
  tooltip: "Host-enforced size constraints (px)",
4226
- docsPath: "api-reference/hooks/use-viewport",
4226
+ docsPath: "app-framework/hooks/use-viewport",
4227
4227
  children: /* @__PURE__ */ jsxs("div", {
4228
4228
  className: "grid grid-cols-4 gap-1",
4229
4229
  children: [
@@ -4273,7 +4273,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4273
4273
  /* @__PURE__ */ jsx(SidebarControl, {
4274
4274
  label: "Safe Area Insets",
4275
4275
  tooltip: "Device safe area padding (px)",
4276
- docsPath: "api-reference/hooks/use-safe-area",
4276
+ docsPath: "app-framework/hooks/use-safe-area",
4277
4277
  children: /* @__PURE__ */ jsxs("div", {
4278
4278
  className: "grid grid-cols-4 gap-1",
4279
4279
  children: [
@@ -4355,7 +4355,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4355
4355
  label: "App Context",
4356
4356
  defaultCollapsed: true,
4357
4357
  tooltip: "App-provided context shared with the model",
4358
- docsPath: "api-reference/hooks/use-app-state",
4358
+ docsPath: "app-framework/hooks/use-app-state",
4359
4359
  children: /* @__PURE__ */ jsx(SidebarTextarea, {
4360
4360
  value: state.modelContextJson,
4361
4361
  onChange: (json) => state.validateJSON(json, state.setModelContextJson, state.setModelContextError),
@@ -4371,7 +4371,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4371
4371
  label: "Tool Input (JSON)",
4372
4372
  defaultCollapsed: false,
4373
4373
  tooltip: "Arguments passed to the tool",
4374
- docsPath: "api-reference/hooks/use-tool-data",
4374
+ docsPath: "app-framework/hooks/use-tool-data",
4375
4375
  children: /* @__PURE__ */ jsx(SidebarTextarea, {
4376
4376
  value: state.toolInputJson,
4377
4377
  onChange: (json) => state.validateJSON(json, state.setToolInputJson, state.setToolInputError),
@@ -4385,7 +4385,7 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4385
4385
  label: "Tool Result (JSON)",
4386
4386
  defaultCollapsed: false,
4387
4387
  tooltip: "Structured content returned by the tool",
4388
- docsPath: "api-reference/hooks/use-tool-data",
4388
+ docsPath: "app-framework/hooks/use-tool-data",
4389
4389
  "data-testid": "tool-result-section",
4390
4390
  children: /* @__PURE__ */ jsx(SidebarTextarea, {
4391
4391
  value: state.toolResultJson,
@@ -4416,4 +4416,4 @@ function Inspector({ children, simulations: initialSimulations = {}, appName = "
4416
4416
  //#endregion
4417
4417
  export { DEFAULT_STYLE_VARIABLES as S, McpAppHost as _, SidebarControl as a, getRegisteredHosts as b, SidebarTextarea as c, ThemeProvider as d, useThemeContext as f, extractResourceCSP as g, IframeResource as h, SidebarCollapsibleControl as i, SidebarToggle as l, useInspectorState as m, resolveServerToolResult as n, SidebarInput as o, useMcpConnection as p, SidebarCheckbox as r, SidebarSelect as s, Inspector as t, SimpleSidebar as u, SCREEN_WIDTHS as v, registerHostShell as x, getHostShell as y };
4418
4418
 
4419
- //# sourceMappingURL=inspector-Bp9jrHIu.js.map
4419
+ //# sourceMappingURL=inspector-D5DckQuU.js.map