@burtson-labs/agent-ui 1.0.11

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 (144) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +45 -0
  3. package/dist/components/AgentConsole.d.ts +11 -0
  4. package/dist/components/AgentConsole.d.ts.map +1 -0
  5. package/dist/components/AgentConsole.js +139 -0
  6. package/dist/components/AgentConsole.js.map +1 -0
  7. package/dist/components/AgentSummaryCard.d.ts +9 -0
  8. package/dist/components/AgentSummaryCard.d.ts.map +1 -0
  9. package/dist/components/AgentSummaryCard.js +96 -0
  10. package/dist/components/AgentSummaryCard.js.map +1 -0
  11. package/dist/components/ChatComposer.d.ts +134 -0
  12. package/dist/components/ChatComposer.d.ts.map +1 -0
  13. package/dist/components/ChatComposer.js +411 -0
  14. package/dist/components/ChatComposer.js.map +1 -0
  15. package/dist/components/ChatConversation.d.ts +28 -0
  16. package/dist/components/ChatConversation.d.ts.map +1 -0
  17. package/dist/components/ChatConversation.js +82 -0
  18. package/dist/components/ChatConversation.js.map +1 -0
  19. package/dist/components/ChatMessage.d.ts +38 -0
  20. package/dist/components/ChatMessage.d.ts.map +1 -0
  21. package/dist/components/ChatMessage.js +208 -0
  22. package/dist/components/ChatMessage.js.map +1 -0
  23. package/dist/components/DiffBlock.d.ts +7 -0
  24. package/dist/components/DiffBlock.d.ts.map +1 -0
  25. package/dist/components/DiffBlock.js +58 -0
  26. package/dist/components/DiffBlock.js.map +1 -0
  27. package/dist/components/DiffReview/DiffBlock.d.ts +7 -0
  28. package/dist/components/DiffReview/DiffBlock.d.ts.map +1 -0
  29. package/dist/components/DiffReview/DiffBlock.js +13 -0
  30. package/dist/components/DiffReview/DiffBlock.js.map +1 -0
  31. package/dist/components/DiffReview/DiffFileGroup.d.ts +14 -0
  32. package/dist/components/DiffReview/DiffFileGroup.d.ts.map +1 -0
  33. package/dist/components/DiffReview/DiffFileGroup.js +44 -0
  34. package/dist/components/DiffReview/DiffFileGroup.js.map +1 -0
  35. package/dist/components/DiffReview/DiffReviewPanel.d.ts +16 -0
  36. package/dist/components/DiffReview/DiffReviewPanel.d.ts.map +1 -0
  37. package/dist/components/DiffReview/DiffReviewPanel.js +25 -0
  38. package/dist/components/DiffReview/DiffReviewPanel.js.map +1 -0
  39. package/dist/components/DiffReview/index.d.ts +3 -0
  40. package/dist/components/DiffReview/index.d.ts.map +1 -0
  41. package/dist/components/DiffReview/index.js +19 -0
  42. package/dist/components/DiffReview/index.js.map +1 -0
  43. package/dist/components/DiffReviewCard.d.ts +10 -0
  44. package/dist/components/DiffReviewCard.d.ts.map +1 -0
  45. package/dist/components/DiffReviewCard.js +36 -0
  46. package/dist/components/DiffReviewCard.js.map +1 -0
  47. package/dist/components/DiffStream.d.ts +12 -0
  48. package/dist/components/DiffStream.d.ts.map +1 -0
  49. package/dist/components/DiffStream.js +43 -0
  50. package/dist/components/DiffStream.js.map +1 -0
  51. package/dist/components/MarkdownMessage.d.ts +17 -0
  52. package/dist/components/MarkdownMessage.d.ts.map +1 -0
  53. package/dist/components/MarkdownMessage.js +158 -0
  54. package/dist/components/MarkdownMessage.js.map +1 -0
  55. package/dist/components/PermissionCard.d.ts +64 -0
  56. package/dist/components/PermissionCard.d.ts.map +1 -0
  57. package/dist/components/PermissionCard.js +156 -0
  58. package/dist/components/PermissionCard.js.map +1 -0
  59. package/dist/components/PlanActivity.d.ts +20 -0
  60. package/dist/components/PlanActivity.d.ts.map +1 -0
  61. package/dist/components/PlanActivity.js +186 -0
  62. package/dist/components/PlanActivity.js.map +1 -0
  63. package/dist/components/PlanTree.d.ts +13 -0
  64. package/dist/components/PlanTree.d.ts.map +1 -0
  65. package/dist/components/PlanTree.js +70 -0
  66. package/dist/components/PlanTree.js.map +1 -0
  67. package/dist/components/TaskList.d.ts +9 -0
  68. package/dist/components/TaskList.d.ts.map +1 -0
  69. package/dist/components/TaskList.js +26 -0
  70. package/dist/components/TaskList.js.map +1 -0
  71. package/dist/components/TelemetryPanel.d.ts +9 -0
  72. package/dist/components/TelemetryPanel.d.ts.map +1 -0
  73. package/dist/components/TelemetryPanel.js +54 -0
  74. package/dist/components/TelemetryPanel.js.map +1 -0
  75. package/dist/components/index.d.ts +15 -0
  76. package/dist/components/index.d.ts.map +1 -0
  77. package/dist/components/index.js +31 -0
  78. package/dist/components/index.js.map +1 -0
  79. package/dist/context/BanditContext.d.ts +14 -0
  80. package/dist/context/BanditContext.d.ts.map +1 -0
  81. package/dist/context/BanditContext.js +18 -0
  82. package/dist/context/BanditContext.js.map +1 -0
  83. package/dist/context/index.d.ts +2 -0
  84. package/dist/context/index.d.ts.map +1 -0
  85. package/dist/context/index.js +18 -0
  86. package/dist/context/index.js.map +1 -0
  87. package/dist/hooks/index.d.ts +3 -0
  88. package/dist/hooks/index.d.ts.map +1 -0
  89. package/dist/hooks/index.js +19 -0
  90. package/dist/hooks/index.js.map +1 -0
  91. package/dist/hooks/useAgentEvents.d.ts +13 -0
  92. package/dist/hooks/useAgentEvents.d.ts.map +1 -0
  93. package/dist/hooks/useAgentEvents.js +54 -0
  94. package/dist/hooks/useAgentEvents.js.map +1 -0
  95. package/dist/hooks/useTelemetry.d.ts +4 -0
  96. package/dist/hooks/useTelemetry.d.ts.map +1 -0
  97. package/dist/hooks/useTelemetry.js +198 -0
  98. package/dist/hooks/useTelemetry.js.map +1 -0
  99. package/dist/index.d.ts +12 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +29 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/theme/BanditThemeProvider.d.ts +26 -0
  104. package/dist/theme/BanditThemeProvider.d.ts.map +1 -0
  105. package/dist/theme/BanditThemeProvider.js +138 -0
  106. package/dist/theme/BanditThemeProvider.js.map +1 -0
  107. package/dist/theme/catppuccin-mocha.json +23 -0
  108. package/dist/theme/charcoal.json +23 -0
  109. package/dist/theme/dark.json +23 -0
  110. package/dist/theme/dracula.json +23 -0
  111. package/dist/theme/index.d.ts +5 -0
  112. package/dist/theme/index.d.ts.map +1 -0
  113. package/dist/theme/index.js +21 -0
  114. package/dist/theme/index.js.map +1 -0
  115. package/dist/theme/light.json +23 -0
  116. package/dist/theme/midnight.json +23 -0
  117. package/dist/theme/nord.json +23 -0
  118. package/dist/theme/onyx.json +23 -0
  119. package/dist/theme/sepia.json +23 -0
  120. package/dist/theme/solarized-dark.json +23 -0
  121. package/dist/theme/solarized-light.json +23 -0
  122. package/dist/theme/theme-base.d.ts +37 -0
  123. package/dist/theme/theme-base.d.ts.map +1 -0
  124. package/dist/theme/theme-base.js +141 -0
  125. package/dist/theme/theme-base.js.map +1 -0
  126. package/dist/theme/theme-registry.d.ts +22 -0
  127. package/dist/theme/theme-registry.d.ts.map +1 -0
  128. package/dist/theme/theme-registry.js +52 -0
  129. package/dist/theme/theme-registry.js.map +1 -0
  130. package/dist/theme/tokyo-night.json +23 -0
  131. package/dist/theme/vscode-theme.d.ts +3 -0
  132. package/dist/theme/vscode-theme.d.ts.map +1 -0
  133. package/dist/theme/vscode-theme.js +128 -0
  134. package/dist/theme/vscode-theme.js.map +1 -0
  135. package/dist/types/ui-schema.d.ts +114 -0
  136. package/dist/types/ui-schema.d.ts.map +1 -0
  137. package/dist/types/ui-schema.js +3 -0
  138. package/dist/types/ui-schema.js.map +1 -0
  139. package/dist/utils/classNames.d.ts +2 -0
  140. package/dist/utils/classNames.d.ts.map +1 -0
  141. package/dist/utils/classNames.js +8 -0
  142. package/dist/utils/classNames.js.map +1 -0
  143. package/package.json +55 -0
  144. package/styles/agent-ui.css +3844 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetryPanel = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const classNames_1 = require("../utils/classNames");
6
+ const formatDuration = (value) => {
7
+ if (typeof value !== "number" || Number.isNaN(value)) {
8
+ return "—";
9
+ }
10
+ if (value < 1000) {
11
+ return `${value.toFixed(0)} ms`;
12
+ }
13
+ const seconds = value / 1000;
14
+ if (seconds < 60) {
15
+ return `${seconds.toFixed(1)} s`;
16
+ }
17
+ const minutes = Math.floor(seconds / 60);
18
+ const rem = Math.round(seconds % 60);
19
+ return `${minutes}m ${rem}s`;
20
+ };
21
+ const METRIC_STYLE = {
22
+ display: "flex",
23
+ flexDirection: "column",
24
+ gap: "0.25rem",
25
+ minWidth: 0
26
+ };
27
+ const formatIntent = (intent) => {
28
+ if (!intent) {
29
+ return "Detected goal";
30
+ }
31
+ switch (intent) {
32
+ case "fix":
33
+ return "Bug fix";
34
+ case "refactor":
35
+ return "Refactor";
36
+ case "feature":
37
+ return "Feature work";
38
+ case "analyze":
39
+ return "Investigation";
40
+ case "doc":
41
+ return "Documentation";
42
+ case "style":
43
+ return "Styling";
44
+ default:
45
+ return intent;
46
+ }
47
+ };
48
+ const TelemetryPanel = ({ telemetry, title = "Telemetry", className }) => {
49
+ const tokens = telemetry.tokens ?? { input: 0, output: 0, total: 0 };
50
+ const totalSteps = telemetry.totalSteps ?? telemetry.completedSteps + telemetry.failedSteps;
51
+ return ((0, jsx_runtime_1.jsxs)("section", { className: (0, classNames_1.classNames)("agent-ui-panel agent-ui-telemetry", className), children: [(0, jsx_runtime_1.jsxs)("header", { className: "agent-ui-panel__header", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { className: "agent-ui-panel__eyebrow", children: title }), (0, jsx_runtime_1.jsx)("h3", { className: "agent-ui-panel__title", children: telemetry.model ?? telemetry.provider ?? "Unidentified Provider" })] }), (0, jsx_runtime_1.jsxs)("span", { className: "agent-ui-panel__meta", children: [telemetry.completedSteps, " / ", totalSteps, " steps"] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "agent-ui-telemetry__grid", children: [(0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Input Tokens" }), (0, jsx_runtime_1.jsx)("strong", { children: tokens.input.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Output Tokens" }), (0, jsx_runtime_1.jsx)("strong", { children: tokens.output.toLocaleString() })] }), (0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Total Tokens" }), (0, jsx_runtime_1.jsx)("strong", { children: tokens.total.toLocaleString() })] }), typeof tokens.cache === "number" && ((0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Cache Hits" }), (0, jsx_runtime_1.jsx)("strong", { children: tokens.cache.toLocaleString() })] })), (0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Latency" }), (0, jsx_runtime_1.jsx)("strong", { children: formatDuration(telemetry.latencyMs) })] }), (0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Steps" }), (0, jsx_runtime_1.jsxs)("strong", { children: [telemetry.completedSteps, (0, jsx_runtime_1.jsxs)("span", { style: { fontSize: "0.85rem", color: "var(--agent-ui-text-dim)" }, children: [" / ", totalSteps] })] })] }), telemetry.averageStepDurationMs !== undefined && ((0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Avg Step Duration" }), (0, jsx_runtime_1.jsx)("strong", { children: formatDuration(telemetry.averageStepDurationMs) })] })), telemetry.goalInsight && ((0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Intent" }), (0, jsx_runtime_1.jsx)("strong", { children: formatIntent(telemetry.goalInsight.intent) }), telemetry.goalInsight.files?.length ? ((0, jsx_runtime_1.jsx)("span", { style: { fontSize: "0.8rem", color: "var(--agent-ui-text-dim)" }, children: (telemetry.goalInsight.files ?? []).slice(0, 2).join(", ") })) : null] })), telemetry.taskProgress && ((0, jsx_runtime_1.jsxs)("article", { className: "agent-ui-metric", style: METRIC_STYLE, children: [(0, jsx_runtime_1.jsx)("label", { children: "Tasks Complete" }), (0, jsx_runtime_1.jsxs)("strong", { children: [telemetry.taskProgress.completed, (0, jsx_runtime_1.jsxs)("span", { style: { fontSize: "0.85rem", color: "var(--agent-ui-text-dim)" }, children: [" / ", telemetry.taskProgress.total] })] })] }))] })] }));
52
+ };
53
+ exports.TelemetryPanel = TelemetryPanel;
54
+ //# sourceMappingURL=TelemetryPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryPanel.js","sourceRoot":"","sources":["../../src/components/TelemetryPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export * from "./AgentConsole";
2
+ export * from "./AgentSummaryCard";
3
+ export * from "./ChatComposer";
4
+ export * from "./ChatConversation";
5
+ export * from "./MarkdownMessage";
6
+ export * from "./PermissionCard";
7
+ export * from "./DiffBlock";
8
+ export * from "./DiffReview";
9
+ export * from "./DiffReviewCard";
10
+ export * from "./DiffStream";
11
+ export * from "./PlanTree";
12
+ export * from "./TelemetryPanel";
13
+ export * from "./PlanActivity";
14
+ export * from "./TaskList";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./AgentConsole"), exports);
18
+ __exportStar(require("./AgentSummaryCard"), exports);
19
+ __exportStar(require("./ChatComposer"), exports);
20
+ __exportStar(require("./ChatConversation"), exports);
21
+ __exportStar(require("./MarkdownMessage"), exports);
22
+ __exportStar(require("./PermissionCard"), exports);
23
+ __exportStar(require("./DiffBlock"), exports);
24
+ __exportStar(require("./DiffReview"), exports);
25
+ __exportStar(require("./DiffReviewCard"), exports);
26
+ __exportStar(require("./DiffStream"), exports);
27
+ __exportStar(require("./PlanTree"), exports);
28
+ __exportStar(require("./TelemetryPanel"), exports);
29
+ __exportStar(require("./PlanActivity"), exports);
30
+ __exportStar(require("./TaskList"), exports);
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,oDAAkC;AAClC,mDAAiC;AACjC,8CAA4B;AAC5B,+CAA6B;AAC7B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B;AAC3B,mDAAiC;AACjC,iDAA+B;AAC/B,6CAA2B"}
@@ -0,0 +1,14 @@
1
+ import type { JSX, ReactNode } from "react";
2
+ export type BanditRuntimeContext = "web" | "vscode";
3
+ export interface BanditContextValue {
4
+ context: BanditRuntimeContext;
5
+ }
6
+ export declare const useBanditContext: () => BanditContextValue;
7
+ export interface BanditContextProviderProps {
8
+ context?: BanditRuntimeContext;
9
+ children: ReactNode;
10
+ }
11
+ export declare const BanditContextProvider: ({ context, children }: BanditContextProviderProps) => JSX.Element;
12
+ export type BanditProviderProps = BanditContextProviderProps;
13
+ export declare const BanditProvider: ({ context, children }: BanditProviderProps) => JSX.Element;
14
+ //# sourceMappingURL=BanditContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BanditContext.d.ts","sourceRoot":"","sources":["../../src/context/BanditContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAID,eAAO,MAAM,gBAAgB,QAAO,kBAA+C,CAAC;AAEpF,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,qBAAqB,GAAI,uBAGnC,0BAA0B,KAAG,GAAG,CAAC,OAEnC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAE7D,eAAO,MAAM,cAAc,GAAI,uBAA+B,mBAAmB,KAAG,GAAG,CAAC,OAMvF,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BanditProvider = exports.BanditContextProvider = exports.useBanditContext = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const theme_1 = require("../theme");
7
+ const BanditContext = (0, react_1.createContext)({ context: "web" });
8
+ const useBanditContext = () => (0, react_1.useContext)(BanditContext);
9
+ exports.useBanditContext = useBanditContext;
10
+ const BanditContextProvider = ({ context = "web", children }) => {
11
+ return (0, jsx_runtime_1.jsx)(BanditContext.Provider, { value: { context }, children: children });
12
+ };
13
+ exports.BanditContextProvider = BanditContextProvider;
14
+ const BanditProvider = ({ context = "web", children }) => {
15
+ return ((0, jsx_runtime_1.jsx)(exports.BanditContextProvider, { context: context, children: (0, jsx_runtime_1.jsx)(theme_1.BanditThemeProvider, { children: children }) }));
16
+ };
17
+ exports.BanditProvider = BanditProvider;
18
+ //# sourceMappingURL=BanditContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BanditContext.js","sourceRoot":"","sources":["../../src/context/BanditContext.tsx"],"names":[],"mappings":";;;;AAAA,iCAAkD;AAElD,oCAA+C;AAQ/C,MAAM,aAAa,GAAG,IAAA,qBAAa,EAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAErE,MAAM,gBAAgB,GAAG,GAAuB,EAAE,CAAC,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC;AAAvE,QAAA,gBAAgB,oBAAuD;AAO7E,MAAM,qBAAqB,GAAG,CAAC,EACpC,OAAO,GAAG,KAAK,EACf,QAAQ,EACmB,EAAe,EAAE;IAC5C,OAAO,uBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,YAAG,QAAQ,GAA0B,CAAC;AACzF,CAAC,CAAC;AALW,QAAA,qBAAqB,yBAKhC;AAIK,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAuB,EAAe,EAAE;IAChG,OAAO,CACL,uBAAC,6BAAqB,IAAC,OAAO,EAAE,OAAO,YACrC,uBAAC,2BAAmB,cAAE,QAAQ,GAAuB,GAC/B,CACzB,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB"}
@@ -0,0 +1,2 @@
1
+ export * from "./BanditContext";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./BanditContext"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -0,0 +1,3 @@
1
+ export * from "./useAgentEvents";
2
+ export * from "./useTelemetry";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useAgentEvents"), exports);
18
+ __exportStar(require("./useTelemetry"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,iDAA+B"}
@@ -0,0 +1,13 @@
1
+ import type { AgentEvent } from "@burtson-labs/agent-core";
2
+ import type { AgentEventSource, AgentUIEventType } from "../types/ui-schema";
3
+ export interface UseAgentEventsOptions {
4
+ eventTypes?: AgentUIEventType[];
5
+ limit?: number;
6
+ initialEvents?: AgentEvent[];
7
+ }
8
+ export interface UseAgentEventsResult {
9
+ events: AgentEvent[];
10
+ clear: () => void;
11
+ }
12
+ export declare const useAgentEvents: (source: AgentEventSource | null | undefined, options?: UseAgentEventsOptions) => UseAgentEventsResult;
13
+ //# sourceMappingURL=useAgentEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentEvents.d.ts","sourceRoot":"","sources":["../../src/hooks/useAgentEvents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgB7E,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,GACzB,QAAQ,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC3C,UAAS,qBAA0B,KAClC,oBA6CF,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAgentEvents = void 0;
4
+ const react_1 = require("react");
5
+ const DEFAULT_EVENT_TYPES = [
6
+ "plan:start",
7
+ "plan:chunk",
8
+ "plan:complete",
9
+ "step:start",
10
+ "step:complete",
11
+ "diff:apply",
12
+ "log",
13
+ "telemetry",
14
+ "context:updated",
15
+ "report:chunk",
16
+ "report:complete"
17
+ ];
18
+ const useAgentEvents = (source, options = {}) => {
19
+ const { initialEvents = [], limit = 200 } = options;
20
+ const [events, setEvents] = (0, react_1.useState)(initialEvents);
21
+ const bufferRef = (0, react_1.useRef)(initialEvents);
22
+ const limitRef = (0, react_1.useRef)(limit);
23
+ (0, react_1.useEffect)(() => {
24
+ limitRef.current = limit;
25
+ }, [limit]);
26
+ const eventTypeList = (0, react_1.useMemo)(() => (options.eventTypes?.length ? [...options.eventTypes] : DEFAULT_EVENT_TYPES), [options.eventTypes ? options.eventTypes.join("|") : "default"]);
27
+ const subscriptionKey = eventTypeList.join("|");
28
+ (0, react_1.useEffect)(() => {
29
+ if (!source) {
30
+ bufferRef.current = initialEvents;
31
+ setEvents(initialEvents);
32
+ return;
33
+ }
34
+ const handleEvent = (event) => {
35
+ bufferRef.current = [...bufferRef.current, event].slice(-limitRef.current);
36
+ setEvents(bufferRef.current);
37
+ };
38
+ for (const type of eventTypeList) {
39
+ source.on(type, handleEvent);
40
+ }
41
+ return () => {
42
+ for (const type of eventTypeList) {
43
+ source.off(type, handleEvent);
44
+ }
45
+ };
46
+ }, [source, subscriptionKey, initialEvents, eventTypeList]);
47
+ const clear = () => {
48
+ bufferRef.current = [];
49
+ setEvents([]);
50
+ };
51
+ return { events, clear };
52
+ };
53
+ exports.useAgentEvents = useAgentEvents;
54
+ //# sourceMappingURL=useAgentEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentEvents.js","sourceRoot":"","sources":["../../src/hooks/useAgentEvents.ts"],"names":[],"mappings":";;;AAAA,iCAA6D;AAI7D,MAAM,mBAAmB,GAAuB;IAC9C,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,KAAK;IACL,WAAW;IACX,iBAAiB;IACjB,cAAc;IACd,iBAAiB;CAClB,CAAC;AAaK,MAAM,cAAc,GAAG,CAC5B,MAA2C,EAC3C,UAAiC,EAAE,EACb,EAAE;IACxB,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IACpD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAe,aAAa,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAA,cAAM,EAAe,aAAa,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAE/B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,aAAa,GAAG,IAAA,eAAO,EAC3B,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAClF,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAChE,CAAC;IACF,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,OAAO,GAAG,aAAa,CAAC;YAClC,SAAS,CAAC,aAAa,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAQ,EAAE;YAC9C,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3E,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,GAAG,EAAE;YACV,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC;AAhDW,QAAA,cAAc,kBAgDzB"}
@@ -0,0 +1,4 @@
1
+ import type { AgentEvent } from "@burtson-labs/agent-core";
2
+ import type { TelemetrySnapshot } from "../types/ui-schema";
3
+ export declare const useTelemetry: (events?: AgentEvent[]) => TelemetrySnapshot;
4
+ //# sourceMappingURL=useTelemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetry.d.ts","sourceRoot":"","sources":["../../src/hooks/useTelemetry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAIV,iBAAiB,EAGlB,MAAM,oBAAoB,CAAC;AAkH5B,eAAO,MAAM,YAAY,GAAI,SAAQ,UAAU,EAAO,KAAG,iBA+JxD,CAAC"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useTelemetry = void 0;
4
+ const react_1 = require("react");
5
+ const DEFAULT_TOKEN_USAGE = {
6
+ input: 0,
7
+ output: 0,
8
+ total: 0
9
+ };
10
+ const coerceNumber = (value) => {
11
+ if (typeof value === "number" && Number.isFinite(value)) {
12
+ return value;
13
+ }
14
+ if (typeof value === "string") {
15
+ const parsed = Number(value);
16
+ if (Number.isFinite(parsed)) {
17
+ return parsed;
18
+ }
19
+ }
20
+ return 0;
21
+ };
22
+ const asRecord = (value) => typeof value === "object" && value !== null ? value : undefined;
23
+ const readNumber = (...values) => {
24
+ for (const value of values) {
25
+ const numberValue = coerceNumber(value);
26
+ if (numberValue !== 0 || value === 0 || value === "0") {
27
+ return numberValue;
28
+ }
29
+ }
30
+ return undefined;
31
+ };
32
+ const readString = (...values) => {
33
+ for (const value of values) {
34
+ if (typeof value === "string") {
35
+ const trimmed = value.trim();
36
+ if (trimmed.length > 0) {
37
+ return trimmed;
38
+ }
39
+ }
40
+ }
41
+ return undefined;
42
+ };
43
+ const extractTokenSample = (payload) => {
44
+ const rawTokens = payload.tokens;
45
+ const tokens = asRecord(rawTokens);
46
+ const metadata = asRecord(payload.metadata);
47
+ const metadataTokens = asRecord(metadata?.tokens);
48
+ const directTokenTotal = readNumber(rawTokens, metadata?.tokenTotal, metadata?.tokensTotal);
49
+ const input = readNumber(tokens?.input, tokens?.inputTokens, payload.input, payload.inputTokens, metadata?.input, metadata?.inputTokens, metadataTokens?.input, metadataTokens?.inputTokens);
50
+ const output = readNumber(tokens?.output, tokens?.outputTokens, payload.output, payload.outputTokens, metadata?.output, metadata?.outputTokens, metadataTokens?.output, metadataTokens?.outputTokens);
51
+ const total = readNumber(directTokenTotal, tokens?.total, tokens?.totalTokens, payload.total, payload.totalTokens, metadata?.total, metadata?.totalTokens, metadataTokens?.total, metadataTokens?.totalTokens);
52
+ const cache = readNumber(tokens?.cache, payload.cache, metadata?.cache, metadataTokens?.cache);
53
+ if (input === undefined && output === undefined && total === undefined && cache === undefined) {
54
+ return undefined;
55
+ }
56
+ return { input, output, total, cache };
57
+ };
58
+ const extractPlanStepCount = (event) => {
59
+ if (event.type !== "plan:start" && event.type !== "plan:complete") {
60
+ return undefined;
61
+ }
62
+ const payload = asRecord(event.payload);
63
+ const payloadPlan = asRecord(payload?.plan);
64
+ const steps = Array.isArray(payloadPlan?.steps)
65
+ ? payloadPlan.steps
66
+ : Array.isArray(payload?.steps)
67
+ ? payload.steps
68
+ : undefined;
69
+ return Array.isArray(steps) ? steps.length : undefined;
70
+ };
71
+ const useTelemetry = (events = []) => {
72
+ return (0, react_1.useMemo)(() => {
73
+ const telemetryEvents = events.filter((event) => event.type === "telemetry");
74
+ let goalInsight;
75
+ let taskProgress;
76
+ let resolvedProvider;
77
+ let resolvedModel;
78
+ const tokens = telemetryEvents.reduce((acc, event) => {
79
+ const payload = asRecord(event.payload);
80
+ if (!payload) {
81
+ return acc;
82
+ }
83
+ const tokenSample = extractTokenSample(payload);
84
+ if (tokenSample) {
85
+ if (tokenSample.input !== undefined) {
86
+ acc.input += tokenSample.input;
87
+ }
88
+ if (tokenSample.output !== undefined) {
89
+ acc.output += tokenSample.output;
90
+ }
91
+ if (tokenSample.total !== undefined) {
92
+ acc.total += tokenSample.total;
93
+ }
94
+ else if (tokenSample.input !== undefined || tokenSample.output !== undefined) {
95
+ acc.total += (tokenSample.input ?? 0) + (tokenSample.output ?? 0);
96
+ }
97
+ if (tokenSample.cache !== undefined) {
98
+ acc.cache = (acc.cache ?? 0) + tokenSample.cache;
99
+ }
100
+ }
101
+ const metadata = asRecord(payload.metadata);
102
+ resolvedProvider = readString(payload.provider, payload.providerName, metadata?.provider, metadata?.providerName, metadata?.providerLabel, metadata?.providerKind) ?? resolvedProvider;
103
+ resolvedModel = readString(payload.model, payload.modelName, metadata?.model, metadata?.modelName, metadata?.modelId) ?? resolvedModel;
104
+ const kind = readString(payload.kind, metadata?.kind);
105
+ if (kind === "goal-inference" || (!kind && (metadata?.goal || payload.goal))) {
106
+ const goalData = asRecord(metadata?.goal ?? payload.goal);
107
+ if (goalData) {
108
+ const files = Array.isArray(goalData.files)
109
+ ? goalData.files.filter((file) => typeof file === "string")
110
+ : undefined;
111
+ goalInsight = {
112
+ id: typeof goalData.id === "string" ? goalData.id : undefined,
113
+ title: typeof goalData.title === "string" ? goalData.title : undefined,
114
+ intent: typeof goalData.intent === "string" ? goalData.intent : undefined,
115
+ rationale: typeof goalData.rationale === "string" ? goalData.rationale : undefined,
116
+ files
117
+ };
118
+ }
119
+ }
120
+ if (kind === "task-progress" || (!kind && (metadata?.progress || payload.progress))) {
121
+ const progressData = asRecord(metadata?.progress ?? payload.progress);
122
+ if (progressData) {
123
+ const completed = coerceNumber(progressData.completed);
124
+ const total = coerceNumber(progressData.total);
125
+ taskProgress = {
126
+ goalId: typeof progressData.goalId === "string" ? progressData.goalId : undefined,
127
+ completed,
128
+ total
129
+ };
130
+ }
131
+ }
132
+ return acc;
133
+ }, { ...DEFAULT_TOKEN_USAGE });
134
+ const lastTelemetryPayload = [...telemetryEvents]
135
+ .reverse()
136
+ .map((event) => asRecord(event.payload))
137
+ .find((payload) => Boolean(payload));
138
+ const summaryDurationMs = [...events]
139
+ .reverse()
140
+ .find((event) => event.type === "summary")
141
+ ?.payload;
142
+ const startedAt = events.find((event) => event.type === "plan:start")?.timestamp ??
143
+ events.at(0)?.timestamp;
144
+ const lastEventAt = events.at(-1)?.timestamp;
145
+ const stepDurations = [];
146
+ let completedSteps = 0;
147
+ let failedSteps = 0;
148
+ let planStepCount = 0;
149
+ for (const event of events) {
150
+ const maybePlanStepCount = extractPlanStepCount(event);
151
+ if (typeof maybePlanStepCount === "number" && Number.isFinite(maybePlanStepCount)) {
152
+ planStepCount = Math.max(planStepCount, maybePlanStepCount);
153
+ }
154
+ if (event.type !== "step:complete") {
155
+ continue;
156
+ }
157
+ const payload = event.payload;
158
+ const status = payload?.result?.status;
159
+ if (status === "failed") {
160
+ failedSteps += 1;
161
+ }
162
+ else {
163
+ completedSteps += 1;
164
+ }
165
+ const duration = payload?.result?.metadata?.durationMs;
166
+ if (typeof duration === "number" && Number.isFinite(duration)) {
167
+ stepDurations.push(duration);
168
+ }
169
+ }
170
+ const averageStepDurationMs = stepDurations.length > 0
171
+ ? stepDurations.reduce((sum, value) => sum + value, 0) / stepDurations.length
172
+ : undefined;
173
+ completedSteps = Math.max(completedSteps, coerceNumber(taskProgress?.completed));
174
+ const totalSteps = Math.max(completedSteps + failedSteps, coerceNumber(taskProgress?.total), planStepCount);
175
+ return {
176
+ totalEvents: events.length,
177
+ tokens,
178
+ latencyMs: lastTelemetryPayload?.latencyMs ??
179
+ (typeof lastTelemetryPayload?.durationMs === "number"
180
+ ? (lastTelemetryPayload.durationMs ?? undefined)
181
+ : undefined) ??
182
+ (typeof summaryDurationMs?.durationMs === "number" ? summaryDurationMs.durationMs : undefined) ??
183
+ (startedAt && lastEventAt ? lastEventAt - startedAt : undefined),
184
+ model: resolvedModel ?? lastTelemetryPayload?.model,
185
+ provider: resolvedProvider ?? lastTelemetryPayload?.provider,
186
+ startedAt,
187
+ lastEventAt,
188
+ completedSteps,
189
+ failedSteps,
190
+ totalSteps,
191
+ averageStepDurationMs,
192
+ goalInsight,
193
+ taskProgress
194
+ };
195
+ }, [events]);
196
+ };
197
+ exports.useTelemetry = useTelemetry;
198
+ //# sourceMappingURL=useTelemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetry.js","sourceRoot":"","sources":["../../src/hooks/useTelemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AgentAskResult } from "@burtson-labs/agent-core";
2
+ export * from "./components";
3
+ export * from "./hooks";
4
+ export * from "./context";
5
+ export * from "./theme";
6
+ export * from "./types/ui-schema";
7
+ export interface TimelineEntry {
8
+ label: string;
9
+ value: string;
10
+ }
11
+ export declare const buildTimeline: (result: AgentAskResult) => TimelineEntry[];
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,cAAc,KAAG,aAAa,EAInE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.buildTimeline = void 0;
18
+ __exportStar(require("./components"), exports);
19
+ __exportStar(require("./hooks"), exports);
20
+ __exportStar(require("./context"), exports);
21
+ __exportStar(require("./theme"), exports);
22
+ __exportStar(require("./types/ui-schema"), exports);
23
+ const buildTimeline = (result) => [
24
+ { label: "Prompt", value: result.prompt },
25
+ { label: "Response", value: result.response },
26
+ { label: "Duration", value: `${result.durationMs}ms` }
27
+ ];
28
+ exports.buildTimeline = buildTimeline;
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,+CAA6B;AAC7B,0CAAwB;AACxB,4CAA0B;AAC1B,0CAAwB;AACxB,oDAAkC;AAO3B,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAmB,EAAE,CAAC;IACxE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;IACzC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;IAC7C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE;CACvD,CAAC;AAJW,QAAA,aAAa,iBAIxB"}
@@ -0,0 +1,26 @@
1
+ import type { JSX, ReactNode } from "react";
2
+ import { type BanditTheme } from "./theme-base";
3
+ import { type RegisteredThemeId } from "./theme-registry";
4
+ export type ThemePreference = "auto" | RegisteredThemeId;
5
+ interface ThemeOption {
6
+ id: ThemePreference;
7
+ label: string;
8
+ }
9
+ interface ThemeContextValue {
10
+ theme: BanditTheme;
11
+ appearance: BanditTheme["appearance"];
12
+ preference: ThemePreference;
13
+ setPreference: (preference: ThemePreference) => void;
14
+ cyclePreference: () => void;
15
+ options: readonly ThemeOption[];
16
+ resolvedId: string;
17
+ manualTheme: RegisteredThemeId;
18
+ ideTheme: BanditTheme | null;
19
+ isAuto: boolean;
20
+ }
21
+ export declare const BanditThemeProvider: ({ children }: {
22
+ children: ReactNode;
23
+ }) => JSX.Element;
24
+ export declare const useBanditTheme: () => ThemeContextValue;
25
+ export {};
26
+ //# sourceMappingURL=BanditThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BanditThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/BanditThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAgC,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAEzD,UAAU,WAAW;IACnB,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB;AA6DD,eAAO,MAAM,mBAAmB,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,KAAG,GAAG,CAAC,OAkF/E,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,iBAMjC,CAAC"}