@mastra/playground-ui 53.0.0-alpha.8 → 53.0.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.
- package/dist/{code-DRGJVroV.js → code-D4Vw_fYq.js} +22 -16
- package/dist/code-D4Vw_fYq.js.map +1 -0
- package/dist/{code-BJMC6T9D.cjs → code-DhrdtZce.cjs} +22 -15
- package/dist/code-DhrdtZce.cjs.map +1 -0
- package/dist/{code-block-CBJhDEeB.js → code-block-DeksY23p.js} +2 -2
- package/dist/{code-block-CBJhDEeB.js.map → code-block-DeksY23p.js.map} +1 -1
- package/dist/{code-block-fmv8bHoT.cjs → code-block-DgHrBuR8.cjs} +2 -2
- package/dist/{code-block-fmv8bHoT.cjs.map → code-block-DgHrBuR8.cjs.map} +1 -1
- package/dist/{code-diff-C-EHXZyK.cjs → code-diff-CHZ3P1ky.cjs} +51 -43
- package/dist/code-diff-CHZ3P1ky.cjs.map +1 -0
- package/dist/{code-diff-BB4sqHpq.js → code-diff-CIRbnIfl.js} +52 -44
- package/dist/code-diff-CIRbnIfl.js.map +1 -0
- package/dist/{combobox-BQrlN0eB.cjs → combobox-JNWmgC13.cjs} +8 -3
- package/dist/combobox-JNWmgC13.cjs.map +1 -0
- package/dist/{combobox-DeeAlYti.js → combobox-nxjXzRWu.js} +8 -3
- package/dist/combobox-nxjXzRWu.js.map +1 -0
- package/dist/{command-DWFd0d4c.js → command-Be-KrIAX.js} +2 -2
- package/dist/{command-DWFd0d4c.js.map → command-Be-KrIAX.js.map} +1 -1
- package/dist/{command-CUev1UxH.cjs → command-DsTBCmQq.cjs} +2 -2
- package/dist/{command-CUev1UxH.cjs.map → command-DsTBCmQq.cjs.map} +1 -1
- package/dist/components/ChatShell.cjs.js +20 -1
- package/dist/components/ChatShell.cjs.js.map +1 -1
- package/dist/components/ChatShell.es.js +20 -1
- package/dist/components/ChatShell.es.js.map +1 -1
- package/dist/components/Code.cjs.js +3 -1
- package/dist/components/Code.cjs.js.map +1 -1
- package/dist/components/Code.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeDiff.cjs.js +1 -1
- package/dist/components/CodeDiff.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +2 -1
- package/dist/components/CodeEditor.cjs.js.map +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +2 -2
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +2 -2
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/Dialog.cjs.js +181 -2
- package/dist/components/Dialog.cjs.js.map +1 -1
- package/dist/components/Dialog.es.js +183 -1
- package/dist/components/Dialog.es.js.map +1 -1
- package/dist/components/HorizontalBars.cjs.js +1 -1
- package/dist/components/HorizontalBars.es.js +1 -1
- package/dist/components/IntegrationDialog.cjs.js +105 -0
- package/dist/components/IntegrationDialog.cjs.js.map +1 -0
- package/dist/components/IntegrationDialog.d.ts +2 -0
- package/dist/components/IntegrationDialog.es.js +101 -0
- package/dist/components/IntegrationDialog.es.js.map +1 -0
- package/dist/components/LogsDataList.cjs.js +0 -1
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +0 -1
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MainHeader.cjs.js +1 -1
- package/dist/components/MainHeader.cjs.js.map +1 -1
- package/dist/components/MainHeader.es.js +1 -1
- package/dist/components/MainHeader.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +1 -1
- package/dist/components/ThreadRail.cjs.js +19 -0
- package/dist/components/ThreadRail.cjs.js.map +1 -1
- package/dist/components/ThreadRail.es.js +19 -1
- package/dist/components/ThreadRail.es.js.map +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +165 -0
- package/dist/components/ai/tool-call.cjs.js.map +1 -1
- package/dist/components/ai/tool-call.es.js +159 -3
- package/dist/components/ai/tool-call.es.js.map +1 -1
- package/dist/{data-code-section-Dn9smaz4.cjs → data-code-section-B_lg_J_0.cjs} +34 -5
- package/dist/data-code-section-B_lg_J_0.cjs.map +1 -0
- package/dist/{data-code-section-DN2yPgEz.js → data-code-section-Cm_W_XhO.js} +36 -7
- package/dist/data-code-section-Cm_W_XhO.js.map +1 -0
- package/dist/{data-panel-DEatwExN.cjs → data-panel-Cv9j_IGQ.cjs} +2 -2
- package/dist/{data-panel-DEatwExN.cjs.map → data-panel-Cv9j_IGQ.cjs.map} +1 -1
- package/dist/{data-panel-2Da0Utgy.js → data-panel-DXxeSnL1.js} +2 -2
- package/dist/{data-panel-2Da0Utgy.js.map → data-panel-DXxeSnL1.js.map} +1 -1
- package/dist/dialog-CZMPDVUj.js +259 -0
- package/dist/dialog-CZMPDVUj.js.map +1 -0
- package/dist/dialog-D-7Hkb3j.cjs +293 -0
- package/dist/dialog-D-7Hkb3j.cjs.map +1 -0
- package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +61 -105
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +62 -106
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +62 -0
- package/dist/domains/traces/components/span-summary-description.cjs.js.map +1 -0
- package/dist/domains/traces/components/span-summary-description.d.ts +2 -0
- package/dist/domains/traces/components/span-summary-description.es.js +58 -0
- package/dist/domains/traces/components/span-summary-description.es.js.map +1 -0
- package/dist/domains/traces/components/timeline-expand-col.cjs.js +1 -1
- package/dist/domains/traces/components/timeline-expand-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-expand-col.es.js +1 -1
- package/dist/domains/traces/components/timeline-expand-col.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js +1 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.es.js +1 -1
- package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +1 -1
- package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.es.js +1 -1
- package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -5
- package/dist/domains/traces/components/traces-toolbar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-toolbar.es.js +1 -5
- package/dist/domains/traces/components/traces-toolbar.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-branch.cjs.js +2 -6
- package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-branch.es.js +2 -6
- package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +4 -1
- package/dist/domains/traces/hooks/use-download-trace-json.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.es.js +4 -1
- package/dist/domains/traces/hooks/use-download-trace-json.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +11 -18
- package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +13 -20
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js +10 -7
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.es.js +10 -7
- package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +5 -5
- package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-filters.es.js +5 -5
- package/dist/domains/traces/trace-filters.es.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.cjs.js +6 -0
- package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.es.js +6 -1
- package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +0 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +0 -1
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
- package/dist/{highlight-CSJjjoqh.js → highlight-BmpoELR4.js} +6 -2
- package/dist/{highlight-CSJjjoqh.js.map → highlight-BmpoELR4.js.map} +1 -1
- package/dist/{highlight-CEt2vhD8.cjs → highlight-DK1dn-Fh.cjs} +6 -1
- package/dist/{highlight-CEt2vhD8.cjs.map → highlight-DK1dn-Fh.cjs.map} +1 -1
- package/dist/{horizontal-bars-DZ5J4TKv.js → horizontal-bars-CyP-B-BX.js} +37 -4
- package/dist/horizontal-bars-CyP-B-BX.js.map +1 -0
- package/dist/{horizontal-bars-CE1O-Y6G.cjs → horizontal-bars-Dgq3PYsg.cjs} +37 -4
- package/dist/horizontal-bars-Dgq3PYsg.cjs.map +1 -0
- package/dist/{markdown-renderer-DiJBbnYG.js → markdown-renderer-CaFpZTFS.js} +2 -2
- package/dist/{markdown-renderer-DiJBbnYG.js.map → markdown-renderer-CaFpZTFS.js.map} +1 -1
- package/dist/{markdown-renderer-DGIzNAQY.cjs → markdown-renderer-GVtZLunG.cjs} +2 -2
- package/dist/{markdown-renderer-DGIzNAQY.cjs.map → markdown-renderer-GVtZLunG.cjs.map} +1 -1
- package/dist/src/domains/traces/components/span-summary-description.d.ts +10 -0
- package/dist/src/domains/traces/components/traces-toolbar.d.ts +1 -5
- package/dist/src/domains/traces/hooks/index.d.ts +1 -1
- package/dist/src/domains/traces/hooks/use-trace-filter-persistence.d.ts +5 -18
- package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +3 -1
- package/dist/src/domains/traces/trace-filters.d.ts +4 -3
- package/dist/src/domains/traces/utils/span-utils.d.ts +2 -0
- package/dist/src/ds/components/ChatShell/chat-shell.d.ts +19 -2
- package/dist/src/ds/components/ChatShell/index.d.ts +3 -2
- package/dist/src/ds/components/Code/index.d.ts +1 -0
- package/dist/src/ds/components/Code/use-highlight.d.ts +10 -0
- package/dist/src/ds/components/CodeDiff/code-diff.stories.d.ts +2 -0
- package/dist/src/ds/components/CodeEditor/highlight.d.ts +1 -0
- package/dist/src/ds/components/CodeEditor/index.d.ts +1 -1
- package/dist/src/ds/components/Combobox/combobox.d.ts +3 -1
- package/dist/src/ds/components/DataCodeSection/data-code-section.d.ts +9 -1
- package/dist/src/ds/components/DataCodeSection/index.d.ts +1 -1
- package/dist/src/ds/components/Dialog/dialog-action.d.ts +9 -0
- package/dist/src/ds/components/Dialog/dialog-context.d.ts +16 -0
- package/dist/src/ds/components/Dialog/dialog-new-variant.stories.d.ts +64 -0
- package/dist/src/ds/components/Dialog/dialog.d.ts +15 -6
- package/dist/src/ds/components/Dialog/index.d.ts +2 -0
- package/dist/src/ds/components/HorizontalBars/horizontal-bars.stories.d.ts +2 -0
- package/dist/src/ds/components/IntegrationDialog/__fixtures__/integrations-catalog.d.ts +2 -0
- package/dist/src/ds/components/IntegrationDialog/index.d.ts +2 -0
- package/dist/src/ds/components/IntegrationDialog/integration-dialog.d.ts +28 -0
- package/dist/src/ds/components/IntegrationDialog/integration-dialog.stories.d.ts +24 -0
- package/dist/src/ds/components/ThreadRail/index.d.ts +1 -0
- package/dist/src/ds/components/ThreadRail/turn-groups.d.ts +19 -0
- package/dist/src/ds/components/ai/tool-call/ansi.d.ts +2 -0
- package/dist/src/ds/components/ai/tool-call/group-consecutive.d.ts +17 -0
- package/dist/src/ds/components/ai/tool-call/index.d.ts +4 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-edit.d.ts +4 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-group.d.ts +14 -0
- package/dist/src/ds/components/ai/tool-call/tool-call.d.ts +4 -0
- package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +10 -0
- package/dist/style.css +149 -3
- package/package.json +8 -8
- package/dist/code-BJMC6T9D.cjs.map +0 -1
- package/dist/code-DRGJVroV.js.map +0 -1
- package/dist/code-diff-BB4sqHpq.js.map +0 -1
- package/dist/code-diff-C-EHXZyK.cjs.map +0 -1
- package/dist/combobox-BQrlN0eB.cjs.map +0 -1
- package/dist/combobox-DeeAlYti.js.map +0 -1
- package/dist/data-code-section-DN2yPgEz.js.map +0 -1
- package/dist/data-code-section-Dn9smaz4.cjs.map +0 -1
- package/dist/dialog-CESxLg8S.js +0 -76
- package/dist/dialog-CESxLg8S.js.map +0 -1
- package/dist/dialog-K0q0KOOW.cjs +0 -107
- package/dist/dialog-K0q0KOOW.cjs.map +0 -1
- package/dist/horizontal-bars-CE1O-Y6G.cjs.map +0 -1
- package/dist/horizontal-bars-DZ5J4TKv.js.map +0 -1
|
@@ -14,4 +14,4 @@ export { useServiceNames } from './use-service-names';
|
|
|
14
14
|
export { useTraceSpanNavigation } from './use-trace-span-navigation';
|
|
15
15
|
export { useTraceListNavigation } from './use-trace-list-navigation';
|
|
16
16
|
export { useTraceUrlState, type UseTraceUrlStateResult, type UseTraceUrlStateOptions, type SetURLSearchParamsLike, } from './use-trace-url-state';
|
|
17
|
-
export { useTraceFilterPersistence, type
|
|
17
|
+
export { useTraceFilterPersistence, type TraceFilterPersistenceOptions } from './use-trace-filter-persistence';
|
|
@@ -2,30 +2,17 @@ import { SetURLSearchParamsLike } from './use-trace-url-state';
|
|
|
2
2
|
export interface TraceFilterPersistenceOptions {
|
|
3
3
|
/** Override the localStorage key. Default: traces filters storage. */
|
|
4
4
|
storageKey?: string;
|
|
5
|
-
/** Toast text overrides; pass `false` to suppress the toast entirely. */
|
|
6
|
-
messages?: {
|
|
7
|
-
saved?: string | false;
|
|
8
|
-
cleared?: string | false;
|
|
9
|
-
};
|
|
10
5
|
/** Skip the once-on-mount hydration from localStorage. Default: false (hydration runs). */
|
|
11
6
|
skipHydration?: boolean;
|
|
12
7
|
}
|
|
13
|
-
export interface UseTraceFilterPersistenceResult {
|
|
14
|
-
/** True when localStorage has a previously saved filter set. */
|
|
15
|
-
hasSavedFilters: boolean;
|
|
16
|
-
/** Persist the current URL filter params to localStorage. */
|
|
17
|
-
handleSave: () => void;
|
|
18
|
-
/** Forget the saved filter set. */
|
|
19
|
-
handleRemoveSaved: () => void;
|
|
20
|
-
}
|
|
21
8
|
/**
|
|
22
9
|
* Owns the localStorage save/restore lifecycle for trace filters:
|
|
23
|
-
* - tracks `hasSavedFilters`
|
|
24
|
-
* - exposes `handleSave` / `handleRemoveSaved` (with toast feedback)
|
|
25
10
|
* - hydrates the URL from saved filters once on mount, but only if the URL is filter-clean
|
|
26
11
|
* (so a shared link / direct nav with explicit filters wins over the saved set)
|
|
12
|
+
* - returns a `setSearchParams` wrapper that persists the resulting params as part of the
|
|
13
|
+
* update itself; only relative date presets are kept (see `saveTraceFiltersToStorage`).
|
|
14
|
+
* Route every filter mutation through the returned setter (e.g. hand it to `useTraceUrlState`).
|
|
27
15
|
*
|
|
28
|
-
* Pass `storageKey` to scope persistence (e.g. per-
|
|
29
|
-
* to suppress the toast.
|
|
16
|
+
* Pass `storageKey` to scope persistence (e.g. per-entity).
|
|
30
17
|
*/
|
|
31
|
-
export declare function useTraceFilterPersistence(searchParams: URLSearchParams, setSearchParams: SetURLSearchParamsLike, options?: TraceFilterPersistenceOptions):
|
|
18
|
+
export declare function useTraceFilterPersistence(searchParams: URLSearchParams, setSearchParams: SetURLSearchParamsLike, options?: TraceFilterPersistenceOptions): SetURLSearchParamsLike;
|
|
@@ -207,7 +207,9 @@ export declare const traceSpansQueryOptions: (client: MastraClient, traceId: str
|
|
|
207
207
|
* these spans -- `input`, `output` and `attributes` included -- so the
|
|
208
208
|
* projection would only hide content the reader is looking at.
|
|
209
209
|
*/
|
|
210
|
-
export declare function useTraceSpans(traceId: string | null | undefined
|
|
210
|
+
export declare function useTraceSpans(traceId: string | null | undefined, { passive }?: {
|
|
211
|
+
passive?: boolean;
|
|
212
|
+
}): UseQueryResult<{
|
|
211
213
|
traceId: string;
|
|
212
214
|
spans: SearchableSpan[];
|
|
213
215
|
} | null>;
|
|
@@ -79,9 +79,10 @@ export declare const TRACE_PROPERTY_FILTER_PARAM_BY_FIELD: {
|
|
|
79
79
|
export declare const TRACE_PROPERTY_FILTER_FIELD_IDS: Array<keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD>;
|
|
80
80
|
export declare const TRACE_STATUS_VALUES: Set<TraceStatusFilter>;
|
|
81
81
|
export declare const DEFAULT_TRACE_FILTERS_STORAGE_KEY = "mastra:traces:saved-filters";
|
|
82
|
-
/** Serialize the filter-related URL params (date + rootEntityType +
|
|
83
|
-
* generic filterX set) to localStorage so the user can restore them on next
|
|
84
|
-
* visit.
|
|
82
|
+
/** Serialize the filter-related URL params (relative date preset + rootEntityType +
|
|
83
|
+
* status + generic filterX set) to localStorage so the user can restore them on next
|
|
84
|
+
* visit. A `custom` absolute range is never saved: it would be stale by the next visit.
|
|
85
|
+
* An empty set clears the key. Throws no errors — storage being unavailable is fine. */
|
|
85
86
|
export declare function saveTraceFiltersToStorage(params: URLSearchParams, storageKey?: string): void;
|
|
86
87
|
/** Forget any previously saved filter set. Called from the "Remove filters"
|
|
87
88
|
* action so the next plain sidebar nav lands on an empty page. */
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SpanRecord } from '@mastra/core/storage';
|
|
2
2
|
export declare function formatSpanDuration(startedAt: Date | string | null | undefined, endedAt: Date | string | null | undefined): string | undefined;
|
|
3
3
|
export declare function formatSpanDurationExact(startedAt: Date | string | null | undefined, endedAt: Date | string | null | undefined): string | undefined;
|
|
4
|
+
/** `X.XXX s`, matching the timeline timing column. */
|
|
5
|
+
export declare function formatSpanDurationSeconds(startedAt: Date | string | null | undefined, endedAt: Date | string | null | undefined): string | undefined;
|
|
4
6
|
export declare function formatSpanTimestamp(value: Date | string | null | undefined): string | undefined;
|
|
5
7
|
export declare function formatSpanTimestampExact(value: Date | string | null | undefined): string | undefined;
|
|
6
8
|
export declare function formatSpanPanelTimestamp(value: Date | string | null | undefined): string | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentPropsWithoutRef } from 'react';
|
|
1
|
+
import { ComponentProps, ComponentPropsWithoutRef } from 'react';
|
|
2
2
|
import { MessageScrollerButtonProps, MessageScrollerContentProps, MessageScrollerProviderProps, MessageScrollerViewportProps } from '../MessageScroller';
|
|
3
3
|
export type ChatShellProps = ComponentPropsWithoutRef<'div'> & {
|
|
4
4
|
scroller?: Omit<MessageScrollerProviderProps, 'children'>;
|
|
@@ -29,7 +29,24 @@ export declare function ChatShellViewport({ className, children, ...props }: Mes
|
|
|
29
29
|
/** Scrolling content. The air above the composer belongs to the dock's fade band. */
|
|
30
30
|
export declare function ChatShellContent({ className, ...props }: MessageScrollerContentProps): import("react").JSX.Element;
|
|
31
31
|
/** The shared reading column. Every chat region must go through it. */
|
|
32
|
-
export declare function ChatShellColumn({ className, ...props }:
|
|
32
|
+
export declare function ChatShellColumn({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
33
|
+
export interface ChatShellTurnProps extends ComponentPropsWithoutRef<'div'> {
|
|
34
|
+
/** Opened by a user message: the turn reserves room and releases it through a slow drift. */
|
|
35
|
+
opensTurn?: boolean;
|
|
36
|
+
/** Holds the reply's share of the screen open under the live turn while the run answers. */
|
|
37
|
+
holdsRoom?: boolean;
|
|
38
|
+
/** Restored mid-run: the room is already due, so it opens with no transition. */
|
|
39
|
+
restored?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* One user turn and the reply under it. The room is the answer's share of the
|
|
43
|
+
* screen: the scroller parks the sent message exactly one room above the end of
|
|
44
|
+
* the box, so wherever the composer ends the message rests with this much space
|
|
45
|
+
* under it, and the scroller has nothing to follow until the answer outgrows it.
|
|
46
|
+
* A full screen parked the message against the very top; 70 leaves it breathing.
|
|
47
|
+
* Opening must outrun the scroller's trip; closing is the conversation settling.
|
|
48
|
+
*/
|
|
49
|
+
export declare function ChatShellTurn({ opensTurn, holdsRoom, restored, className, ...props }: ChatShellTurnProps): import("react").JSX.Element;
|
|
33
50
|
/**
|
|
34
51
|
* Composer region, sticky but left in flow: its own height reserves the room the
|
|
35
52
|
* transcript scrolls behind, so nothing measures it and a composer growing under
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ChatShellBar, ChatShellColumn, ChatShellContent, ChatShellDock, ChatShellRoot, ChatShellScrollButton, ChatShellStage, ChatShellViewport } from './chat-shell';
|
|
2
|
-
export type { ChatShellProps } from './chat-shell';
|
|
1
|
+
import { ChatShellBar, ChatShellColumn, ChatShellContent, ChatShellDock, ChatShellRoot, ChatShellScrollButton, ChatShellStage, ChatShellTurn, ChatShellViewport } from './chat-shell';
|
|
2
|
+
export type { ChatShellProps, ChatShellTurnProps } from './chat-shell';
|
|
3
3
|
export declare const ChatShell: typeof ChatShellRoot & {
|
|
4
4
|
Bar: typeof ChatShellBar;
|
|
5
5
|
Column: typeof ChatShellColumn;
|
|
@@ -7,5 +7,6 @@ export declare const ChatShell: typeof ChatShellRoot & {
|
|
|
7
7
|
Dock: typeof ChatShellDock;
|
|
8
8
|
ScrollButton: typeof ChatShellScrollButton;
|
|
9
9
|
Stage: typeof ChatShellStage;
|
|
10
|
+
Turn: typeof ChatShellTurn;
|
|
10
11
|
Viewport: typeof ChatShellViewport;
|
|
11
12
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
import { ThemedToken } from 'shiki/core';
|
|
3
|
+
export interface Highlighted {
|
|
4
|
+
code: string;
|
|
5
|
+
lang: string;
|
|
6
|
+
tokens: ThemedToken[][];
|
|
7
|
+
}
|
|
8
|
+
/** Tokens land a pass behind the code, so the value may still describe the previous code. */
|
|
9
|
+
export declare function useHighlight(code: string, lang: string | undefined): Highlighted | null;
|
|
10
|
+
export declare function tokenStyle(token: ThemedToken): CSSProperties | undefined;
|
|
@@ -4,6 +4,8 @@ declare const meta: Meta<typeof CodeDiff>;
|
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof CodeDiff>;
|
|
6
6
|
export declare const Default: Story;
|
|
7
|
+
/** Removed key (toolMocks), added key (requestContext), changed values. */
|
|
8
|
+
export declare const AddedRemovedChanged: Story;
|
|
7
9
|
export declare const Identical: Story;
|
|
8
10
|
export declare const CompletelyDifferent: Story;
|
|
9
11
|
export declare const LargeDocument: Story;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from './code-editor';
|
|
2
2
|
export { codeLanguages } from './code-languages';
|
|
3
|
-
export { highlight } from './highlight';
|
|
3
|
+
export { highlight, languageForPath } from './highlight';
|
|
4
4
|
export { variableHighlight, VARIABLE_PATTERN } from './variable-highlight-extension';
|
|
5
5
|
export { createVariableAutocomplete } from './variable-autocomplete-extension';
|
|
6
6
|
export { flattenSchemaToVariables, type VariableCompletion } from './schema-to-variables';
|
|
@@ -11,7 +11,7 @@ export type ComboboxOption = {
|
|
|
11
11
|
};
|
|
12
12
|
type ComboboxSharedProps = {
|
|
13
13
|
options: ComboboxOption[];
|
|
14
|
-
placeholder?:
|
|
14
|
+
placeholder?: React.ReactNode;
|
|
15
15
|
searchPlaceholder?: string;
|
|
16
16
|
emptyText?: string;
|
|
17
17
|
className?: string;
|
|
@@ -23,6 +23,8 @@ type ComboboxSharedProps = {
|
|
|
23
23
|
container?: HTMLElement | ShadowRoot | null | React.RefObject<HTMLElement | ShadowRoot | null>;
|
|
24
24
|
error?: string;
|
|
25
25
|
allowCustomValue?: boolean;
|
|
26
|
+
/** Called with the search input text as it changes (and with `''` after a single-mode selection resets it). */
|
|
27
|
+
onInputValueChange?: (value: string) => void;
|
|
26
28
|
};
|
|
27
29
|
export type ComboboxSingleProps = ComboboxSharedProps & {
|
|
28
30
|
multiple?: false;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export interface DataCodeSectionDiff {
|
|
2
|
+
/** The other document to compare against. */
|
|
3
|
+
against: string;
|
|
4
|
+
/** `a` = this document is the "before" (changes in red), `b` = "after" (changes in green). */
|
|
5
|
+
side: 'a' | 'b';
|
|
6
|
+
}
|
|
1
7
|
export interface DataCodeSectionProps {
|
|
2
8
|
title: React.ReactNode;
|
|
3
9
|
dialogTitle?: React.ReactNode;
|
|
@@ -5,5 +11,7 @@ export interface DataCodeSectionProps {
|
|
|
5
11
|
codeStr?: string;
|
|
6
12
|
simplified?: boolean;
|
|
7
13
|
className?: string;
|
|
14
|
+
/** Highlight lines that differ from another document. */
|
|
15
|
+
diff?: DataCodeSectionDiff;
|
|
8
16
|
}
|
|
9
|
-
export declare function DataCodeSection({ codeStr, title, dialogTitle, icon, simplified, className, }: DataCodeSectionProps): import("react").JSX.Element | null;
|
|
17
|
+
export declare function DataCodeSection({ codeStr, title, dialogTitle, icon, simplified, className, diff, }: DataCodeSectionProps): import("react").JSX.Element | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { DataCodeSection, type DataCodeSectionProps } from './data-code-section';
|
|
1
|
+
export { DataCodeSection, type DataCodeSectionProps, type DataCodeSectionDiff } from './data-code-section';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
import { Button, TextButtonSize } from '../Button';
|
|
3
|
+
export type DialogActionProps = Omit<ComponentProps<typeof Button>, 'onClick' | 'variant' | 'as' | 'type' | 'size'> & {
|
|
4
|
+
size?: TextButtonSize;
|
|
5
|
+
onConfirm: () => void;
|
|
6
|
+
confirmation?: 'click' | 'hold';
|
|
7
|
+
holdSeconds?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const DialogAction: import('react').ForwardRefExoticComponent<Omit<DialogActionProps, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type DialogVariant = 'default' | 'new';
|
|
2
|
+
export type DialogIntent = 'default' | 'destructive';
|
|
3
|
+
export type DialogContextValue = {
|
|
4
|
+
variant: DialogVariant;
|
|
5
|
+
intent: DialogIntent;
|
|
6
|
+
pending: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const DialogContext: import('react').Context<DialogContextValue>;
|
|
9
|
+
export declare function useDialogContext(): DialogContextValue;
|
|
10
|
+
export declare const dialogActionSizeClasses: {
|
|
11
|
+
readonly xs: "min-h-form-xs leading-ui-xs";
|
|
12
|
+
readonly sm: "min-h-form-sm leading-ui-sm";
|
|
13
|
+
readonly md: "min-h-form-md leading-ui-md";
|
|
14
|
+
readonly lg: "min-h-form-default leading-ui-md";
|
|
15
|
+
};
|
|
16
|
+
export declare const dialogActionLayoutClasses = "h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full";
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { TextButtonSize } from '../Button';
|
|
3
|
+
declare function ConfirmationExample({ holdSeconds, buttonSize, intent, confirmation, title, description, actionLabel, cancelLabel, failFirst, longBody, }: {
|
|
4
|
+
holdSeconds?: number;
|
|
5
|
+
buttonSize?: TextButtonSize;
|
|
6
|
+
intent?: 'default' | 'destructive';
|
|
7
|
+
confirmation?: 'click' | 'hold';
|
|
8
|
+
title?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
actionLabel?: string;
|
|
11
|
+
cancelLabel?: string;
|
|
12
|
+
failFirst?: boolean;
|
|
13
|
+
longBody?: boolean;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
15
|
+
declare const meta: {
|
|
16
|
+
title: string;
|
|
17
|
+
component: typeof ConfirmationExample;
|
|
18
|
+
parameters: {
|
|
19
|
+
layout: string;
|
|
20
|
+
docs: {
|
|
21
|
+
description: {
|
|
22
|
+
component: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
argTypes: {
|
|
27
|
+
holdSeconds: {
|
|
28
|
+
control: {
|
|
29
|
+
type: "number";
|
|
30
|
+
min: number;
|
|
31
|
+
step: number;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
buttonSize: {
|
|
35
|
+
control: "inline-radio";
|
|
36
|
+
options: string[];
|
|
37
|
+
};
|
|
38
|
+
intent: {
|
|
39
|
+
control: "inline-radio";
|
|
40
|
+
options: string[];
|
|
41
|
+
};
|
|
42
|
+
confirmation: {
|
|
43
|
+
control: "inline-radio";
|
|
44
|
+
options: string[];
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
args: {
|
|
48
|
+
holdSeconds: number;
|
|
49
|
+
buttonSize: "md";
|
|
50
|
+
intent: "default";
|
|
51
|
+
confirmation: "click";
|
|
52
|
+
failFirst: false;
|
|
53
|
+
longBody: false;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export default meta;
|
|
57
|
+
type Story = StoryObj<typeof meta>;
|
|
58
|
+
export declare const Default: Story;
|
|
59
|
+
export declare const Destructive: Story;
|
|
60
|
+
export declare const PressAndHold: Story;
|
|
61
|
+
export declare const LongTitleAndLabels: Story;
|
|
62
|
+
export declare const ScrollingBody: Story;
|
|
63
|
+
export declare const ErrorAndRetry: Story;
|
|
64
|
+
export declare const WithForm: Story;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';
|
|
2
|
+
import { DialogAction } from './dialog-action';
|
|
3
|
+
import { DialogIntent, DialogVariant } from './dialog-context';
|
|
4
|
+
import { TextButtonSize } from '../Button';
|
|
2
5
|
import * as React from 'react';
|
|
3
|
-
|
|
6
|
+
export type DialogProps = DialogPrimitive.Root.Props & {
|
|
7
|
+
variant?: DialogVariant;
|
|
8
|
+
intent?: DialogIntent;
|
|
9
|
+
pending?: boolean;
|
|
10
|
+
};
|
|
11
|
+
declare function Dialog({ variant, intent, pending, onOpenChange, ...props }: DialogProps): React.JSX.Element;
|
|
4
12
|
type DialogTriggerProps = DialogPrimitive.Trigger.Props & {
|
|
5
13
|
/** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */
|
|
6
14
|
asChild?: boolean;
|
|
@@ -30,10 +38,7 @@ declare const DialogFooter: {
|
|
|
30
38
|
({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
31
39
|
displayName: string;
|
|
32
40
|
};
|
|
33
|
-
declare const DialogBody:
|
|
34
|
-
({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
35
|
-
displayName: string;
|
|
36
|
-
};
|
|
41
|
+
declare const DialogBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
37
42
|
type DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {
|
|
38
43
|
className?: string;
|
|
39
44
|
};
|
|
@@ -42,4 +47,8 @@ type DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className
|
|
|
42
47
|
className?: string;
|
|
43
48
|
};
|
|
44
49
|
declare const DialogDescription: React.ForwardRefExoticComponent<Omit<DialogDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
45
|
-
|
|
50
|
+
type DialogCancelProps = DialogPrimitive.Close.Props & {
|
|
51
|
+
size?: TextButtonSize;
|
|
52
|
+
};
|
|
53
|
+
declare const DialogCancel: React.ForwardRefExoticComponent<Omit<DialogCancelProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
54
|
+
export { Dialog, DialogPortal, DialogOverlay, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogFooter, DialogBody, DialogTitle, DialogDescription, DialogCancel, DialogAction, };
|
|
@@ -5,3 +5,5 @@ export default meta;
|
|
|
5
5
|
type Story = StoryObj<typeof HorizontalBars>;
|
|
6
6
|
export declare const Default: Story;
|
|
7
7
|
export declare const Stacked: Story;
|
|
8
|
+
/** Bright fills (yellow, orange, red) render at full opacity in dark mode; the label must stay readable on them. */
|
|
9
|
+
export declare const BrightSegments: Story;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { DialogProps } from '../Dialog';
|
|
3
|
+
export type IntegrationDialogItem = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
logo?: ReactNode;
|
|
7
|
+
badge?: string;
|
|
8
|
+
meta?: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type IntegrationDialogProps = Omit<DialogProps, 'variant' | 'intent' | 'children'> & {
|
|
12
|
+
title: ReactNode;
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
items: IntegrationDialogItem[];
|
|
15
|
+
onSelect: (item: IntegrationDialogItem) => void;
|
|
16
|
+
searchPlaceholder?: string;
|
|
17
|
+
searchLabel?: string;
|
|
18
|
+
emptyMessage?: ReactNode;
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
};
|
|
22
|
+
declare function IntegrationDialog({ title, description, items, onSelect, searchPlaceholder, searchLabel, emptyMessage, children, className, ...props }: IntegrationDialogProps): import("react").JSX.Element;
|
|
23
|
+
declare namespace IntegrationDialog {
|
|
24
|
+
var Trigger: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").DialogTrigger.Props<unknown> & {
|
|
25
|
+
asChild?: boolean;
|
|
26
|
+
}, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
27
|
+
}
|
|
28
|
+
export { IntegrationDialog };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { IntegrationDialogItem } from './integration-dialog';
|
|
3
|
+
declare function Example({ items }: {
|
|
4
|
+
items?: IntegrationDialogItem[];
|
|
5
|
+
}): import("react").JSX.Element;
|
|
6
|
+
declare const meta: {
|
|
7
|
+
title: string;
|
|
8
|
+
component: typeof Example;
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: string;
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export default meta;
|
|
19
|
+
type Story = StoryObj<typeof meta>;
|
|
20
|
+
export declare const Default: Story;
|
|
21
|
+
export declare const FewItems: Story;
|
|
22
|
+
export declare const NoLogos: Story;
|
|
23
|
+
export declare const DisabledItem: Story;
|
|
24
|
+
export declare const Empty: Story;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** A user's turn and everything the run produced under it. */
|
|
2
|
+
export interface TurnGroup<T> {
|
|
3
|
+
key: string;
|
|
4
|
+
entries: T[];
|
|
5
|
+
/** Opened by a user message, so it reserves room and anchors the scroll. */
|
|
6
|
+
opensTurn: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface TurnRules<T> {
|
|
9
|
+
key: (entry: T) => string;
|
|
10
|
+
opensTurn: (entry: T) => boolean;
|
|
11
|
+
/** A marker that belongs above the turn it introduces but arrives after the previous one, so it moves down. */
|
|
12
|
+
introduces?: (entry: T) => boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Cuts a timeline where the reader's attention moves: a user message starts a turn,
|
|
16
|
+
* and everything the run answers with belongs to it. Entries before the first opener
|
|
17
|
+
* form a turn of their own that opens nothing.
|
|
18
|
+
*/
|
|
19
|
+
export declare function groupTurns<T>(entries: T[], { key, opensTurn, introduces }: TurnRules<T>): TurnGroup<T>[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ConsecutiveGroups<T> {
|
|
2
|
+
/** Each run, keyed by its first member. */
|
|
3
|
+
byFirstKey: Map<string, T[]>;
|
|
4
|
+
/** The members after the first, which draw nothing of their own. */
|
|
5
|
+
memberKeys: Set<string>;
|
|
6
|
+
}
|
|
7
|
+
export interface ConsecutiveRules<T, U extends T> {
|
|
8
|
+
key: (item: U) => string;
|
|
9
|
+
/** Whether an item extends the run; anything else ends it. */
|
|
10
|
+
joins: (item: T) => item is U;
|
|
11
|
+
/** Runs shorter than this stay individual rows. */
|
|
12
|
+
min?: number;
|
|
13
|
+
}
|
|
14
|
+
/** Consecutive tool calls this long fold into one group row. */
|
|
15
|
+
export declare const TOOL_GROUP_MIN = 3;
|
|
16
|
+
/** Cuts a list into runs of joining items, keeping only the runs long enough to fold. */
|
|
17
|
+
export declare function groupConsecutive<T, U extends T>(items: readonly T[], { key, joins, min }: ConsecutiveRules<T, U>): ConsecutiveGroups<U>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ToolCallStatus } from './tool-call';
|
|
3
|
+
export interface ToolCallGroupStep {
|
|
4
|
+
toolName: string;
|
|
5
|
+
args: unknown;
|
|
6
|
+
status: ToolCallStatus;
|
|
7
|
+
}
|
|
8
|
+
export interface ToolCallGroupProps {
|
|
9
|
+
steps: ToolCallGroupStep[];
|
|
10
|
+
/** Rendered ahead of the icon, e.g. the time the first step began. */
|
|
11
|
+
leading?: ReactNode;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export declare function ToolCallGroup({ steps, leading, children }: ToolCallGroupProps): import("react").JSX.Element;
|
|
@@ -38,4 +38,8 @@ export interface ToolCallMonoProps extends ComponentProps<'pre'> {
|
|
|
38
38
|
}
|
|
39
39
|
/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */
|
|
40
40
|
export declare const ToolCallMono: ({ copyText, className, children, ...props }: ToolCallMonoProps) => import("react").JSX.Element;
|
|
41
|
+
/** A shell command as the body shows it: `$` in the margin, the copy takes the command alone. */
|
|
42
|
+
export declare const ToolCallCommand: ({ command }: {
|
|
43
|
+
command: string;
|
|
44
|
+
}) => import("react").JSX.Element;
|
|
41
45
|
export type { ToolCallStatus };
|
|
@@ -10,3 +10,13 @@ export interface ToolPresentation {
|
|
|
10
10
|
/** Tool arguments and results as the mono body shows them: strings verbatim, the rest pretty JSON. */
|
|
11
11
|
export declare function stringifyToolValue(value: unknown): string;
|
|
12
12
|
export declare function presentTool(toolName: string, args: unknown): ToolPresentation;
|
|
13
|
+
export type ToolEdit = {
|
|
14
|
+
path?: string;
|
|
15
|
+
} & ({
|
|
16
|
+
oldText: string;
|
|
17
|
+
newText: string;
|
|
18
|
+
} | {
|
|
19
|
+
content: string;
|
|
20
|
+
});
|
|
21
|
+
export declare function toolEdit(toolName: string, args: unknown): ToolEdit | undefined;
|
|
22
|
+
export declare function isTaskTool(toolName: string): boolean;
|