@flanksource/clicky-ui 0.3.34 → 0.3.36
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/README.md +4 -0
- package/dist/ai.cjs +4 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +4 -0
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.d.ts +1 -1
- package/dist/comments/CommentProvider.d.ts +1 -1
- package/dist/comments/CommentThread.d.ts +1 -1
- package/dist/comments/CommentThreadList.d.ts +1 -1
- package/dist/comments/MentionTextarea.d.ts +1 -1
- package/dist/comments/comment-context.d.ts +4 -4
- package/dist/comments/comment-fixtures.d.ts +1 -1
- package/dist/comments/comment-types.d.ts +1 -1
- package/dist/components/AccordionList.d.ts +1 -1
- package/dist/components/ComboboxControl.d.ts +1 -1
- package/dist/components/ComboboxMenu.d.ts +2 -2
- package/dist/components/ComboboxTags.cjs +41 -11
- package/dist/components/ComboboxTags.cjs.map +1 -1
- package/dist/components/ComboboxTags.d.ts +6 -0
- package/dist/components/ComboboxTags.d.ts.map +1 -1
- package/dist/components/ComboboxTags.js +41 -11
- package/dist/components/ComboboxTags.js.map +1 -1
- package/dist/components/DateField.d.ts +3 -3
- package/dist/components/DatePicker.d.ts +3 -3
- package/dist/components/DateTimePicker.d.ts +3 -3
- package/dist/components/ErrorWrapper.d.ts +2 -2
- package/dist/components/Field.d.ts +1 -1
- package/dist/components/FilterBar.d.ts +1 -1
- package/dist/components/FormLookupProvider.d.ts +1 -1
- package/dist/components/FormatOptionsDropdown.d.ts +1 -1
- package/dist/components/IconButton.d.ts +3 -3
- package/dist/components/InputField.d.ts +2 -2
- package/dist/components/ItemActions.d.ts +1 -1
- package/dist/components/JsonSchemaForm.cjs +17 -36
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +17 -36
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/ListMenu.d.ts +1 -1
- package/dist/components/MultiSelect.d.ts +1 -1
- package/dist/components/SearchInput.d.ts +1 -1
- package/dist/components/SegmentedControl.d.ts +1 -1
- package/dist/components/SplitButton.d.ts +1 -1
- package/dist/components/Switch.d.ts +1 -1
- package/dist/components/TreePickerField.cjs +11 -2
- package/dist/components/TreePickerField.cjs.map +1 -1
- package/dist/components/TreePickerField.d.ts +13 -4
- package/dist/components/TreePickerField.d.ts.map +1 -1
- package/dist/components/TreePickerField.js +11 -2
- package/dist/components/TreePickerField.js.map +1 -1
- package/dist/components/UnitStepControls.d.ts +1 -1
- package/dist/components/button.d.ts +3 -3
- package/dist/components/combobox-types.d.ts +1 -1
- package/dist/components/density-switcher.d.ts +1 -1
- package/dist/components/filter-bar-context.d.ts +1 -1
- package/dist/components/filter-bar-field-utils.d.ts +2 -2
- package/dist/components/form-lookup-context.d.ts +1 -1
- package/dist/components/icon-menu-picker.d.ts +1 -1
- package/dist/components/json-schema-form-accordion-array.cjs +44 -21
- package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
- package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-accordion-array.js +47 -24
- package/dist/components/json-schema-form-accordion-array.js.map +1 -1
- package/dist/components/json-schema-form-array.cjs +53 -30
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +54 -31
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-cards-array.cjs +32 -22
- package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
- package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-cards-array.js +33 -23
- package/dist/components/json-schema-form-cards-array.js.map +1 -1
- package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +44 -0
- package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts.map +1 -0
- package/dist/components/json-schema-form-discriminator.d.ts +1 -1
- package/dist/components/json-schema-form-errors.cjs +5 -1
- package/dist/components/json-schema-form-errors.cjs.map +1 -1
- package/dist/components/json-schema-form-errors.d.ts +2 -1
- package/dist/components/json-schema-form-errors.d.ts.map +1 -1
- package/dist/components/json-schema-form-errors.js +6 -2
- package/dist/components/json-schema-form-errors.js.map +1 -1
- package/dist/components/json-schema-form-extensions.d.ts +1 -1
- package/dist/components/json-schema-form-filter-input.cjs +50 -0
- package/dist/components/json-schema-form-filter-input.cjs.map +1 -0
- package/dist/components/json-schema-form-filter-input.d.ts +5 -0
- package/dist/components/json-schema-form-filter-input.d.ts.map +1 -0
- package/dist/components/json-schema-form-filter-input.js +50 -0
- package/dist/components/json-schema-form-filter-input.js.map +1 -0
- package/dist/components/json-schema-form-filter.cjs +49 -0
- package/dist/components/json-schema-form-filter.cjs.map +1 -0
- package/dist/components/json-schema-form-filter.d.ts +8 -0
- package/dist/components/json-schema-form-filter.d.ts.map +1 -0
- package/dist/components/json-schema-form-filter.js +49 -0
- package/dist/components/json-schema-form-filter.js.map +1 -0
- package/dist/components/json-schema-form-layout.cjs +84 -17
- package/dist/components/json-schema-form-layout.cjs.map +1 -1
- package/dist/components/json-schema-form-layout.d.ts +1 -1
- package/dist/components/json-schema-form-layout.d.ts.map +1 -1
- package/dist/components/json-schema-form-layout.js +84 -17
- package/dist/components/json-schema-form-layout.js.map +1 -1
- package/dist/components/json-schema-form-list-array.cjs +16 -5
- package/dist/components/json-schema-form-list-array.cjs.map +1 -1
- package/dist/components/json-schema-form-list-array.d.ts +2 -1
- package/dist/components/json-schema-form-list-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-list-array.js +16 -5
- package/dist/components/json-schema-form-list-array.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +239 -85
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts +2 -2
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +241 -87
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-preferences.cjs +1 -1
- package/dist/components/json-schema-form-preferences.cjs.map +1 -1
- package/dist/components/json-schema-form-preferences.d.ts +1 -1
- package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
- package/dist/components/json-schema-form-preferences.js +1 -1
- package/dist/components/json-schema-form-preferences.js.map +1 -1
- package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +14 -0
- package/dist/components/json-schema-form-properties-errors.fixtures.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties-size.cjs +19 -0
- package/dist/components/json-schema-form-properties-size.cjs.map +1 -0
- package/dist/components/json-schema-form-properties-size.d.ts +4 -0
- package/dist/components/json-schema-form-properties-size.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties-size.js +19 -0
- package/dist/components/json-schema-form-properties-size.js.map +1 -0
- package/dist/components/json-schema-form-properties.cjs +305 -0
- package/dist/components/json-schema-form-properties.cjs.map +1 -0
- package/dist/components/json-schema-form-properties.d.ts +20 -0
- package/dist/components/json-schema-form-properties.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties.fixtures.d.ts +157 -0
- package/dist/components/json-schema-form-properties.fixtures.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties.js +305 -0
- package/dist/components/json-schema-form-properties.js.map +1 -0
- package/dist/components/json-schema-form-property-actions-context.cjs +6 -0
- package/dist/components/json-schema-form-property-actions-context.cjs.map +1 -0
- package/dist/components/json-schema-form-property-actions-context.d.ts +2 -0
- package/dist/components/json-schema-form-property-actions-context.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-actions-context.js +6 -0
- package/dist/components/json-schema-form-property-actions-context.js.map +1 -0
- package/dist/components/json-schema-form-property-collection.cjs +31 -0
- package/dist/components/json-schema-form-property-collection.cjs.map +1 -0
- package/dist/components/json-schema-form-property-collection.d.ts +6 -0
- package/dist/components/json-schema-form-property-collection.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-collection.js +31 -0
- package/dist/components/json-schema-form-property-collection.js.map +1 -0
- package/dist/components/json-schema-form-property-draft.cjs +45 -0
- package/dist/components/json-schema-form-property-draft.cjs.map +1 -0
- package/dist/components/json-schema-form-property-draft.d.ts +8 -0
- package/dist/components/json-schema-form-property-draft.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-draft.js +45 -0
- package/dist/components/json-schema-form-property-draft.js.map +1 -0
- package/dist/components/json-schema-form-property-preview.cjs +68 -0
- package/dist/components/json-schema-form-property-preview.cjs.map +1 -0
- package/dist/components/json-schema-form-property-preview.d.ts +7 -0
- package/dist/components/json-schema-form-property-preview.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-preview.js +68 -0
- package/dist/components/json-schema-form-property-preview.js.map +1 -0
- package/dist/components/json-schema-form-property-selection.cjs +89 -0
- package/dist/components/json-schema-form-property-selection.cjs.map +1 -0
- package/dist/components/json-schema-form-property-selection.d.ts +6 -0
- package/dist/components/json-schema-form-property-selection.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-selection.js +89 -0
- package/dist/components/json-schema-form-property-selection.js.map +1 -0
- package/dist/components/json-schema-form-render.cjs +41 -4
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +42 -5
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +2 -0
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +2 -0
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-runtime-types.d.ts +222 -0
- package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -0
- package/dist/components/json-schema-form-table-array.cjs +82 -51
- package/dist/components/json-schema-form-table-array.cjs.map +1 -1
- package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-table-array.js +84 -53
- package/dist/components/json-schema-form-table-array.js.map +1 -1
- package/dist/components/json-schema-form-template-menu.d.ts +1 -1
- package/dist/components/json-schema-form-template.d.ts +1 -1
- package/dist/components/json-schema-form-types.d.ts +7 -179
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +10 -9
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +11 -1
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +10 -9
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/loading.d.ts +4 -4
- package/dist/components/mdx-editor-callout.d.ts +1 -1
- package/dist/components/mdx-editor-options.d.ts +1 -1
- package/dist/components/select.d.ts +3 -3
- package/dist/components/theme-switcher.d.ts +1 -1
- package/dist/components/use-list-menu-selection.d.ts +1 -1
- package/dist/components/useComboboxLayout.d.ts +1 -1
- package/dist/components/workload-picker-utils.d.ts +1 -1
- package/dist/data/Avatar.d.ts +1 -1
- package/dist/data/AvatarBadge.d.ts +1 -1
- package/dist/data/Badge.d.ts +1 -1
- package/dist/data/Callout.d.ts +1 -1
- package/dist/data/DataTable.cjs +575 -435
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +21 -13
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.d.ts +1 -1
- package/dist/data/DataTable.js +575 -435
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/ExecutionTree.d.ts +1 -1
- package/dist/data/FilterPill.d.ts +1 -1
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts +1 -1
- package/dist/data/FixtureEditor/types.d.ts +1 -1
- package/dist/data/Gauge.d.ts +1 -1
- package/dist/data/GaugeHoverCard.d.ts +1 -1
- package/dist/data/Icon.d.ts +1 -1
- package/dist/data/KeyValueList.d.ts +1 -1
- package/dist/data/MarkdownEditor.d.ts +1 -1
- package/dist/data/MatrixTable.d.ts +1 -1
- package/dist/data/ObjectGraph.d.ts +1 -1
- package/dist/data/ProgressBars.d.ts +1 -1
- package/dist/data/Properties.cjs +86 -35
- package/dist/data/Properties.cjs.map +1 -1
- package/dist/data/Properties.d.ts +2 -2
- package/dist/data/Properties.d.ts.map +1 -1
- package/dist/data/Properties.js +87 -36
- package/dist/data/Properties.js.map +1 -1
- package/dist/data/RadialGauge.d.ts +1 -1
- package/dist/data/SchemaViewer.d.ts +1 -1
- package/dist/data/SortableHeader.d.ts +1 -1
- package/dist/data/StatStrip.d.ts +1 -1
- package/dist/data/StatusBreakdown.d.ts +1 -1
- package/dist/data/TabButton.d.ts +1 -1
- package/dist/data/TaskHeaderExtras.cjs +35 -0
- package/dist/data/TaskHeaderExtras.cjs.map +1 -0
- package/dist/data/TaskHeaderExtras.d.ts +27 -0
- package/dist/data/TaskHeaderExtras.d.ts.map +1 -0
- package/dist/data/TaskHeaderExtras.js +35 -0
- package/dist/data/TaskHeaderExtras.js.map +1 -0
- package/dist/data/TaskManager.cjs +27 -23
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts +13 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +27 -23
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +17 -34
- package/dist/data/TaskManagerButton.cjs.map +1 -1
- package/dist/data/TaskManagerButton.d.ts.map +1 -1
- package/dist/data/TaskManagerButton.js +18 -35
- package/dist/data/TaskManagerButton.js.map +1 -1
- package/dist/data/TaskProcessDetails.cjs +7 -25
- package/dist/data/TaskProcessDetails.cjs.map +1 -1
- package/dist/data/TaskProcessDetails.d.ts +2 -1
- package/dist/data/TaskProcessDetails.d.ts.map +1 -1
- package/dist/data/TaskProcessDetails.js +7 -25
- package/dist/data/TaskProcessDetails.js.map +1 -1
- package/dist/data/TaskProcessMetadata.cjs +50 -0
- package/dist/data/TaskProcessMetadata.cjs.map +1 -0
- package/dist/data/TaskProcessMetadata.d.ts +20 -0
- package/dist/data/TaskProcessMetadata.d.ts.map +1 -0
- package/dist/data/TaskProcessMetadata.js +50 -0
- package/dist/data/TaskProcessMetadata.js.map +1 -0
- package/dist/data/TaskProgress.cjs +41 -41
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +15 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +41 -41
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskResourceReadings.cjs +42 -0
- package/dist/data/TaskResourceReadings.cjs.map +1 -0
- package/dist/data/TaskResourceReadings.d.ts +6 -0
- package/dist/data/TaskResourceReadings.d.ts.map +1 -0
- package/dist/data/TaskResourceReadings.js +42 -0
- package/dist/data/TaskResourceReadings.js.map +1 -0
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +36 -1
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/TaskStreamTabs.cjs +78 -0
- package/dist/data/TaskStreamTabs.cjs.map +1 -0
- package/dist/data/TaskStreamTabs.d.ts +35 -0
- package/dist/data/TaskStreamTabs.d.ts.map +1 -0
- package/dist/data/TaskStreamTabs.js +78 -0
- package/dist/data/TaskStreamTabs.js.map +1 -0
- package/dist/data/Timeline.d.ts +1 -1
- package/dist/data/Tree.d.ts +1 -1
- package/dist/data/TreeGroupHeader.d.ts +1 -1
- package/dist/data/TreeNode.d.ts +1 -1
- package/dist/data/Version.d.ts +3 -3
- package/dist/data/ai/ChatWindow.cjs +22 -12
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +22 -12
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
- package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.types.d.ts +1 -1
- package/dist/data/ai/ChatWindowManager.cjs +2 -0
- package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
- package/dist/data/ai/ChatWindowManager.d.ts +1 -1
- package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowManager.js +2 -0
- package/dist/data/ai/ChatWindowManager.js.map +1 -1
- package/dist/data/ai/PolicyTree.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +4 -0
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/SessionChatComposer.d.ts +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.cjs +9 -0
- package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.approvals-model.d.ts +17 -0
- package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.approvals-model.js +9 -0
- package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.cjs +143 -0
- package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.d.ts +13 -0
- package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.js +143 -0
- package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +21 -8
- package/dist/data/ai/SessionInspector.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.d.ts +6 -2
- package/dist/data/ai/SessionInspector.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
- package/dist/data/ai/SessionInspector.js +21 -8
- package/dist/data/ai/SessionInspector.js.map +1 -1
- package/dist/data/ai/SessionInspector.panel-parts.cjs +34 -0
- package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panel-parts.d.ts +19 -0
- package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panel-parts.js +34 -0
- package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
- package/dist/data/ai/SessionInspector.panel-values.cjs +18 -0
- package/dist/data/ai/SessionInspector.panel-values.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panel-values.d.ts +13 -0
- package/dist/data/ai/SessionInspector.panel-values.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panel-values.js +18 -0
- package/dist/data/ai/SessionInspector.panel-values.js.map +1 -0
- package/dist/data/ai/SessionInspector.panels.cjs +41 -99
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
- package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.panels.js +13 -71
- package/dist/data/ai/SessionInspector.panels.js.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
- package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/chat-window-context.cjs +1 -0
- package/dist/data/ai/chat-window-context.cjs.map +1 -1
- package/dist/data/ai/chat-window-context.d.ts +13 -5
- package/dist/data/ai/chat-window-context.d.ts.map +1 -1
- package/dist/data/ai/chat-window-context.js +1 -0
- package/dist/data/ai/chat-window-context.js.map +1 -1
- package/dist/data/ai/index.d.ts +3 -1
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/use-session-scroll.d.ts +1 -1
- package/dist/data/cache-browser/adapter.d.ts +1 -1
- package/dist/data/cells/CellFilterActions.d.ts +1 -1
- package/dist/data/cells/EntityCell.d.ts +1 -1
- package/dist/data/cells/tag-utils.d.ts +1 -1
- package/dist/data/chat/Chat.cjs +42 -46
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +16 -5
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +43 -47
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts +1 -1
- package/dist/data/chat/PromptInput.cjs +13 -0
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +8 -2
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +14 -1
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
- package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
- package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
- package/dist/data/chat/tool-render/adapter.d.ts +1 -1
- package/dist/data/chat/tool-render/context.d.ts +1 -1
- package/dist/data/chat/tool-render/defaults.d.ts +1 -1
- package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
- package/dist/data/chat/tool-render/summary.d.ts +1 -1
- package/dist/data/chat/types.d.ts +1 -1
- package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
- package/dist/data/data-table-server-filters.d.ts +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
- package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
- package/dist/data/git/GitChangeList.d.ts +1 -1
- package/dist/data/icon-fallback.d.ts +1 -1
- package/dist/data/properties-context.cjs +6 -0
- package/dist/data/properties-context.cjs.map +1 -0
- package/dist/data/properties-context.d.ts +7 -0
- package/dist/data/properties-context.d.ts.map +1 -0
- package/dist/data/properties-context.js +6 -0
- package/dist/data/properties-context.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +7 -3
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +7 -3
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/task-copy.cjs +1 -1
- package/dist/data/task-copy.cjs.map +1 -1
- package/dist/data/task-copy.js +1 -1
- package/dist/data/task-copy.js.map +1 -1
- package/dist/data/task-metadata.cjs +36 -0
- package/dist/data/task-metadata.cjs.map +1 -0
- package/dist/data/task-metadata.d.ts +39 -0
- package/dist/data/task-metadata.d.ts.map +1 -0
- package/dist/data/task-metadata.js +36 -0
- package/dist/data/task-metadata.js.map +1 -0
- package/dist/data/task-resource-summary.cjs +30 -0
- package/dist/data/task-resource-summary.cjs.map +1 -0
- package/dist/data/task-resource-summary.d.ts +15 -0
- package/dist/data/task-resource-summary.d.ts.map +1 -0
- package/dist/data/task-resource-summary.js +30 -0
- package/dist/data/task-resource-summary.js.map +1 -0
- package/dist/data/task-status.cjs +8 -2
- package/dist/data/task-status.cjs.map +1 -1
- package/dist/data/task-status.d.ts +3 -0
- package/dist/data/task-status.d.ts.map +1 -1
- package/dist/data/task-status.js +8 -2
- package/dist/data/task-status.js.map +1 -1
- package/dist/data/task-streams.cjs +39 -0
- package/dist/data/task-streams.cjs.map +1 -0
- package/dist/data/task-streams.d.ts +60 -0
- package/dist/data/task-streams.d.ts.map +1 -0
- package/dist/data/task-streams.js +39 -0
- package/dist/data/task-streams.js.map +1 -0
- package/dist/data/task-work-progress.cjs +24 -0
- package/dist/data/task-work-progress.cjs.map +1 -0
- package/dist/data/task-work-progress.d.ts +21 -0
- package/dist/data/task-work-progress.d.ts.map +1 -0
- package/dist/data/task-work-progress.js +24 -0
- package/dist/data/task-work-progress.js.map +1 -0
- package/dist/data/test-runner/TestRunner.d.ts +1 -1
- package/dist/data/test-runner/adapter.d.ts +1 -1
- package/dist/data/test-runner/context.d.ts +1 -1
- package/dist/data/use-data-table-virtual.cjs +73 -0
- package/dist/data/use-data-table-virtual.cjs.map +1 -0
- package/dist/data/use-data-table-virtual.d.ts +40 -0
- package/dist/data/use-data-table-virtual.d.ts.map +1 -0
- package/dist/data/use-data-table-virtual.js +73 -0
- package/dist/data/use-data-table-virtual.js.map +1 -0
- package/dist/data/verification/VerificationResults.d.ts +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +14 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +6 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +14 -0
- package/dist/data.js.map +1 -1
- package/dist/expressions/lang/attributes.cjs +56 -0
- package/dist/expressions/lang/attributes.cjs.map +1 -0
- package/dist/expressions/lang/attributes.d.ts +22 -0
- package/dist/expressions/lang/attributes.d.ts.map +1 -0
- package/dist/expressions/lang/attributes.js +56 -0
- package/dist/expressions/lang/attributes.js.map +1 -0
- package/dist/expressions/lang/completion.cjs +164 -0
- package/dist/expressions/lang/completion.cjs.map +1 -0
- package/dist/expressions/lang/completion.d.ts +29 -0
- package/dist/expressions/lang/completion.d.ts.map +1 -0
- package/dist/expressions/lang/completion.js +164 -0
- package/dist/expressions/lang/completion.js.map +1 -0
- package/dist/expressions/lang/environment.cjs +115 -0
- package/dist/expressions/lang/environment.cjs.map +1 -0
- package/dist/expressions/lang/environment.d.ts +54 -0
- package/dist/expressions/lang/environment.d.ts.map +1 -0
- package/dist/expressions/lang/environment.js +115 -0
- package/dist/expressions/lang/environment.js.map +1 -0
- package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
- package/dist/expressions/lang/generated/index.cjs +18 -0
- package/dist/expressions/lang/generated/index.cjs.map +1 -0
- package/dist/expressions/lang/generated/index.d.ts +9 -0
- package/dist/expressions/lang/generated/index.d.ts.map +1 -0
- package/dist/expressions/lang/generated/index.js +18 -0
- package/dist/expressions/lang/generated/index.js.map +1 -0
- package/dist/expressions/lang/generated/languages.json.cjs +18 -0
- package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
- package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
- package/dist/expressions/lang/generated/languages.json.js +18 -0
- package/dist/expressions/lang/generated/languages.json.js.map +1 -0
- package/dist/expressions/lang/generated/spec.json.cjs +12 -0
- package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
- package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
- package/dist/expressions/lang/generated/spec.json.js +12 -0
- package/dist/expressions/lang/generated/spec.json.js.map +1 -0
- package/dist/expressions/lang/hover.cjs +106 -0
- package/dist/expressions/lang/hover.cjs.map +1 -0
- package/dist/expressions/lang/hover.d.ts +54 -0
- package/dist/expressions/lang/hover.d.ts.map +1 -0
- package/dist/expressions/lang/hover.js +106 -0
- package/dist/expressions/lang/hover.js.map +1 -0
- package/dist/expressions/lang/index.cjs +87 -0
- package/dist/expressions/lang/index.cjs.map +1 -0
- package/dist/expressions/lang/index.d.ts +65 -0
- package/dist/expressions/lang/index.d.ts.map +1 -0
- package/dist/expressions/lang/index.js +90 -0
- package/dist/expressions/lang/index.js.map +1 -0
- package/dist/expressions/lang/merge.cjs +52 -0
- package/dist/expressions/lang/merge.cjs.map +1 -0
- package/dist/expressions/lang/merge.d.ts +12 -0
- package/dist/expressions/lang/merge.d.ts.map +1 -0
- package/dist/expressions/lang/merge.js +52 -0
- package/dist/expressions/lang/merge.js.map +1 -0
- package/dist/expressions/lang/prefix.cjs +91 -0
- package/dist/expressions/lang/prefix.cjs.map +1 -0
- package/dist/expressions/lang/prefix.d.ts +36 -0
- package/dist/expressions/lang/prefix.d.ts.map +1 -0
- package/dist/expressions/lang/prefix.js +91 -0
- package/dist/expressions/lang/prefix.js.map +1 -0
- package/dist/expressions/lang/spec.d.ts +13 -0
- package/dist/expressions/lang/spec.d.ts.map +1 -0
- package/dist/expressions/lang/theme.cjs +97 -0
- package/dist/expressions/lang/theme.cjs.map +1 -0
- package/dist/expressions/lang/theme.d.ts +6 -0
- package/dist/expressions/lang/theme.d.ts.map +1 -0
- package/dist/expressions/lang/theme.js +97 -0
- package/dist/expressions/lang/theme.js.map +1 -0
- package/dist/expressions/lang/types.d.ts +81 -0
- package/dist/expressions/lang/types.d.ts.map +1 -0
- package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
- package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
- package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
- package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
- package/dist/expressions/playground/ExpressionPlayground.js +291 -0
- package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
- package/dist/expressions/playground/RunControls.cjs +51 -0
- package/dist/expressions/playground/RunControls.cjs.map +1 -0
- package/dist/expressions/playground/RunControls.d.ts +7 -0
- package/dist/expressions/playground/RunControls.d.ts.map +1 -0
- package/dist/expressions/playground/RunControls.js +51 -0
- package/dist/expressions/playground/RunControls.js.map +1 -0
- package/dist/expressions/playground/VerticalSplit.cjs +109 -0
- package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
- package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
- package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
- package/dist/expressions/playground/VerticalSplit.js +109 -0
- package/dist/expressions/playground/VerticalSplit.js.map +1 -0
- package/dist/expressions/playground/api.cjs +49 -0
- package/dist/expressions/playground/api.cjs.map +1 -0
- package/dist/expressions/playground/api.d.ts +53 -0
- package/dist/expressions/playground/api.d.ts.map +1 -0
- package/dist/expressions/playground/api.js +49 -0
- package/dist/expressions/playground/api.js.map +1 -0
- package/dist/expressions/playground/languages.cjs +88 -0
- package/dist/expressions/playground/languages.cjs.map +1 -0
- package/dist/expressions/playground/languages.d.ts +43 -0
- package/dist/expressions/playground/languages.d.ts.map +1 -0
- package/dist/expressions/playground/languages.js +88 -0
- package/dist/expressions/playground/languages.js.map +1 -0
- package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
- package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
- package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/GraphPanel.js +72 -0
- package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
- package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
- package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
- package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/ResultPanel.js +82 -0
- package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
- package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
- package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
- package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/SpecPanel.js +76 -0
- package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
- package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
- package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
- package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/TokensPanel.js +72 -0
- package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
- package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
- package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
- package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
- package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
- package/dist/expressions/playground/panels/graphNodes.js +35 -0
- package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
- package/dist/expressions/playground/runAction.cjs +12 -0
- package/dist/expressions/playground/runAction.cjs.map +1 -0
- package/dist/expressions/playground/runAction.d.ts +15 -0
- package/dist/expressions/playground/runAction.d.ts.map +1 -0
- package/dist/expressions/playground/runAction.js +12 -0
- package/dist/expressions/playground/runAction.js.map +1 -0
- package/dist/expressions/playground/runShortcut.cjs +9 -0
- package/dist/expressions/playground/runShortcut.cjs.map +1 -0
- package/dist/expressions/playground/runShortcut.d.ts +2 -0
- package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
- package/dist/expressions/playground/runShortcut.js +9 -0
- package/dist/expressions/playground/runShortcut.js.map +1 -0
- package/dist/expressions/playground/useEditorTheme.cjs +40 -0
- package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
- package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
- package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
- package/dist/expressions/playground/useEditorTheme.js +23 -0
- package/dist/expressions/playground/useEditorTheme.js.map +1 -0
- package/dist/expressions/playground/useEvaluator.cjs +72 -0
- package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
- package/dist/expressions/playground/useEvaluator.d.ts +25 -0
- package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
- package/dist/expressions/playground/useEvaluator.js +72 -0
- package/dist/expressions/playground/useEvaluator.js.map +1 -0
- package/dist/expressions/playground/useParsedInput.cjs +22 -0
- package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
- package/dist/expressions/playground/useParsedInput.d.ts +20 -0
- package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
- package/dist/expressions/playground/useParsedInput.js +22 -0
- package/dist/expressions/playground/useParsedInput.js.map +1 -0
- package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
- package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
- package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
- package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
- package/dist/expressions/playground/verticalSplitModel.js +11 -0
- package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
- package/dist/expressions/playground.cjs +18 -0
- package/dist/expressions/playground.cjs.map +1 -0
- package/dist/expressions/playground.d.ts +18 -0
- package/dist/expressions/playground.d.ts.map +1 -0
- package/dist/expressions/playground.js +18 -0
- package/dist/expressions/playground.js.map +1 -0
- package/dist/expressions.cjs +28 -0
- package/dist/expressions.cjs.map +1 -0
- package/dist/expressions.d.ts +10 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +28 -0
- package/dist/expressions.js.map +1 -0
- package/dist/hooks/density-provider.d.ts +1 -1
- package/dist/hooks/theme-provider.d.ts +1 -1
- package/dist/hooks/use-density.d.ts +1 -1
- package/dist/hooks/use-resource-clock.cjs +14 -0
- package/dist/hooks/use-resource-clock.cjs.map +1 -0
- package/dist/hooks/use-resource-clock.d.ts +2 -0
- package/dist/hooks/use-resource-clock.d.ts.map +1 -0
- package/dist/hooks/use-resource-clock.js +14 -0
- package/dist/hooks/use-resource-clock.js.map +1 -0
- package/dist/hooks/use-task-run.cjs +25 -18
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +26 -19
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/hooks/use-theme.d.ts +1 -1
- package/dist/icons/registry.d.ts +1 -1
- package/dist/icons/types.d.ts +1 -1
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.d.ts +1 -1
- package/dist/layout/AppShell.nav.drag.d.ts +1 -1
- package/dist/layout/AppSidebar.d.ts +1 -1
- package/dist/layout/Panel.d.ts +1 -1
- package/dist/layout/PanelFrame.d.ts +1 -1
- package/dist/layout/Section.d.ts +1 -1
- package/dist/layout/SplitPane.d.ts +1 -1
- package/dist/layout/Tabs.d.ts +1 -1
- package/dist/layout/Workspace.d.ts +1 -1
- package/dist/layout/Workspace.model.d.ts +1 -1
- package/dist/lib/combobox-values.d.ts +1 -1
- package/dist/monaco/MonacoEditor.cjs +3 -3
- package/dist/monaco/MonacoEditor.cjs.map +1 -1
- package/dist/monaco/MonacoEditor.js +2 -2
- package/dist/monaco/MonacoEditor.js.map +1 -1
- package/dist/monaco/types.d.ts +1 -1
- package/dist/monaco/use-monaco-worker.d.ts +1 -1
- package/dist/overlay/CellActions.d.ts +1 -1
- package/dist/overlay/CommandPalette.d.ts +2 -2
- package/dist/overlay/CommandPalette.model.d.ts +1 -1
- package/dist/overlay/CommandPaletteList.d.ts +1 -1
- package/dist/overlay/DropdownMenu.d.ts +1 -1
- package/dist/overlay/HoverCard.d.ts +1 -1
- package/dist/overlay/Modal.d.ts +2 -2
- package/dist/overlay/Toast.d.ts +1 -1
- package/dist/overlay/TourCard.d.ts +1 -1
- package/dist/overlay/TourProvider.d.ts +1 -1
- package/dist/overlay/dropdownMenuContext.d.ts +1 -1
- package/dist/overlay/toast-context.d.ts +2 -2
- package/dist/overlay/tour-context.d.ts +1 -1
- package/dist/overlay/tour-types.d.ts +1 -1
- package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
- package/dist/profiles/editor/profileBuilder.d.ts +1 -1
- package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
- package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
- package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
- package/dist/profiles/fields/profileFieldState.d.ts +1 -1
- package/dist/profiles/query/jsonPathSample.d.ts +1 -1
- package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
- package/dist/profiles/query/prometheusResults.d.ts +2 -2
- package/dist/rpc/EndpointList.d.ts +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +1 -1
- package/dist/rpc/OperationCatalog.d.ts +1 -1
- package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
- package/dist/rpc/OperationEntityPage.d.ts +1 -1
- package/dist/rpc/OperationResultView.d.ts +1 -1
- package/dist/rpc/RouterProvider.d.ts +1 -1
- package/dist/rpc/SchemaActionForm.d.ts +1 -1
- package/dist/rpc/formMetadata.d.ts +1 -1
- package/dist/rpc/router.d.ts +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
- package/dist/styles.css +1 -1
- package/package.json +21 -2
package/dist/data/ai/index.d.ts
CHANGED
|
@@ -34,13 +34,15 @@ export { SessionContextMeter } from './SessionViewer.header';
|
|
|
34
34
|
export { serializeContext, parseContextPrefix, makeContextId, type ChatContextItem, type ContextTypeConfig, type ContextTypeStyle, } from './context';
|
|
35
35
|
export { SessionViewer, type SessionViewerProps, type SessionPendingTool, type SessionToolDecision, type SessionEntry, type SessionEvent, type SessionInput, type SessionThemeOverride, } from './SessionViewer';
|
|
36
36
|
export { SessionInspector, type SessionInspectorProps, type SessionInspectorTab, } from './SessionInspector';
|
|
37
|
+
export { SessionApprovalsPanel } from './SessionInspector.approvals';
|
|
38
|
+
export { pendingApprovalRequests, type ApprovalResolveAction, type ApprovalResolveHandler, } from './SessionInspector.approvals-model';
|
|
37
39
|
export { SessionChatComposer, type SessionChatCapabilities, type SessionChatComposerProps, type SessionChatQueuedMessage, } from './SessionChatComposer';
|
|
38
40
|
export type { SessionCollectionInput, SessionCollectionItem, SessionCollectionSummary, SessionInspectorInput, } from './SessionInspector.collection';
|
|
39
41
|
export { compactTokens, costTotal, formatCost, tokenTotal, } from './session-cost';
|
|
40
42
|
export { AGENT_RUNTIME_ICONS, APPROVAL_ICONS, EFFORT_ICONS, PERMISSION_MODE_ICONS, WORKFLOW_PHASES, effortIcon, type AgentActionMeta, type AgentRuntime, type ApprovalState, type EffortLevel, type WorkflowPhase, } from './agent-action-icons';
|
|
41
43
|
export { SESSION_TONES, sessionTone, type SessionToneClasses, } from './session-tones';
|
|
42
44
|
export { getSessionMetadata, getSessionAction, normalizeSession, normalizeMessages, splitMcpTool, summarizeSession, type SessionActionMeta, type SessionEventKind, type SessionMetadataSummary, type SessionToolUse, type SessionMessage, type SessionContent, type SessionTone, } from './SessionViewer.model';
|
|
43
|
-
export { type SessionUIMessage, type SessionUIPart, type SessionProvenance, type SessionAgent, type SessionApproval, type SessionApprovalStats, type SessionBudget, type SessionCapabilities, type SessionChangedFiles, type SessionCost, type SessionContext, type SessionDenial, type SessionGitState, type SessionHealth, type SessionLiveProcess, type SessionMetadataEvent, type SessionPlan, type SessionPlanEvent, type SessionTurn, type SessionUsage, type UnifiedSessionInput, } from './SessionViewer.unified';
|
|
45
|
+
export { type SessionUIMessage, type SessionUIPart, type SessionProvenance, type SessionAgent, type SessionApproval, type SessionApprovalRequest, type SessionApprovalStats, type SessionBudget, type SessionCapabilities, type SessionChangedFiles, type SessionCost, type SessionContext, type SessionDenial, type SessionGitState, type SessionHealth, type SessionLiveProcess, type SessionMetadataEvent, type SessionPlan, type SessionPlanEvent, type SessionTurn, type SessionUsage, type UnifiedSessionInput, } from './SessionViewer.unified';
|
|
44
46
|
export { CLAUDE_COMPLETE_SESSION, CLAUDE_SESSION_EXAMPLE, CODEX_COMPLETE_SESSION, CODEX_SESSION_EXAMPLE, COMPLETE_EXAMPLE_SESSIONS, EXAMPLE_SESSIONS, } from './examples/sessions';
|
|
45
47
|
export { questionsFromToolInput, summarizeToolInput, toolDiff, toolInputParams, type DiffSegment, type SessionQuestion, type SessionQuestionOption, type ToolDiff, type ToolParam, } from './SessionViewer.input';
|
|
46
48
|
export { CATEGORY_ICONS, CATEGORY_LABELS, classifyCommand, classifyToolCategory, collectSessionFilters, eventCategory, isEventVisible, type SessionCategory, type SessionFilters, type SessionVisibility, } from './session-categories';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/ai/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/ai/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RefObject } from '
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
2
|
/** The last `visibleCount` of `items`, plus where the window starts and whether
|
|
3
3
|
* older items remain above it. */
|
|
4
4
|
export declare function windowSlice<T>(items: readonly T[], visibleCount: number): {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MouseEvent, ReactNode } from '
|
|
1
|
+
import { MouseEvent, ReactNode } from 'react';
|
|
2
2
|
import { StaticIconComponent } from '../Icon';
|
|
3
3
|
import { BadgeTone } from '../Badge';
|
|
4
4
|
export type EntityCellSize = "sm" | "md";
|
|
@@ -39,7 +39,7 @@ export type TagActionsContextValue = {
|
|
|
39
39
|
/** Toggle exclude for this token (off → exclude → off). */
|
|
40
40
|
toggleExclude: (token: string) => void;
|
|
41
41
|
};
|
|
42
|
-
export declare const TagActionsContext: import('
|
|
42
|
+
export declare const TagActionsContext: import('react').Context<TagActionsContextValue>;
|
|
43
43
|
export declare function useTagActions(): TagActionsContextValue;
|
|
44
44
|
/**
|
|
45
45
|
* Builds a TagActionsContextValue from a flat record-of-modes (the same
|
package/dist/data/chat/Chat.cjs
CHANGED
|
@@ -18,6 +18,8 @@ const registry = require("./tool-render/registry.cjs");
|
|
|
18
18
|
const context = require("./tool-render/context.cjs");
|
|
19
19
|
const ChatRuntimeToolbar = require("./ChatRuntimeToolbar.cjs");
|
|
20
20
|
const usageSnapshot = require("./usage-snapshot.cjs");
|
|
21
|
+
let _draftId = 0;
|
|
22
|
+
const nextDraftId = () => ++_draftId;
|
|
21
23
|
function Chat({
|
|
22
24
|
api = "/api/chat",
|
|
23
25
|
models: modelsProp,
|
|
@@ -38,6 +40,8 @@ function Chat({
|
|
|
38
40
|
onReasoningEffortChange,
|
|
39
41
|
onUsage,
|
|
40
42
|
suggestions,
|
|
43
|
+
proposedPrompts,
|
|
44
|
+
onProposedPromptsConsumed,
|
|
41
45
|
enableAttachments = false,
|
|
42
46
|
attachmentsApi = "/api/attachments",
|
|
43
47
|
attachmentUpload: attachmentUpload$1,
|
|
@@ -54,7 +58,7 @@ function Chat({
|
|
|
54
58
|
transport,
|
|
55
59
|
initialMessages,
|
|
56
60
|
initialPrompt,
|
|
57
|
-
|
|
61
|
+
onInitialPromptConsumed,
|
|
58
62
|
placeholder,
|
|
59
63
|
emptyState,
|
|
60
64
|
className
|
|
@@ -72,11 +76,11 @@ function Chat({
|
|
|
72
76
|
);
|
|
73
77
|
const [usage, setUsage] = react.useState(null);
|
|
74
78
|
const [approvalError, setApprovalError] = react.useState();
|
|
75
|
-
const [hydratedSessionId, setHydratedSessionId] = react.useState(
|
|
76
|
-
null
|
|
77
|
-
);
|
|
78
79
|
const lastDefaultModel = react.useRef(defaultModel);
|
|
79
|
-
const
|
|
80
|
+
const [draft, setDraft] = react.useState(null);
|
|
81
|
+
const seededInitialPromptId = react.useRef(null);
|
|
82
|
+
const hadProposals = react.useRef(false);
|
|
83
|
+
if (proposedPrompts == null ? void 0 : proposedPrompts.length) hadProposals.current = true;
|
|
80
84
|
const activeThreadRef = react.useRef(threadId);
|
|
81
85
|
const onMessageCountChangeRef = react.useRef(onMessageCountChange);
|
|
82
86
|
const onSessionHydratedRef = react.useRef(onSessionHydrated);
|
|
@@ -175,7 +179,6 @@ function Chat({
|
|
|
175
179
|
react.useEffect(() => {
|
|
176
180
|
if (!sessionsApi || !threadId) return;
|
|
177
181
|
let cancelled = false;
|
|
178
|
-
setHydratedSessionId(null);
|
|
179
182
|
setApprovalError(void 0);
|
|
180
183
|
hydratedUsageRef.current = null;
|
|
181
184
|
setUsage(null);
|
|
@@ -192,7 +195,6 @@ function Chat({
|
|
|
192
195
|
hydratedUsageRef.current = snapshot;
|
|
193
196
|
setUsage(snapshot);
|
|
194
197
|
setMessagesRef.current(session.messages);
|
|
195
|
-
setHydratedSessionId(session.id);
|
|
196
198
|
(_a = onSessionHydratedRef.current) == null ? void 0 : _a.call(onSessionHydratedRef, session);
|
|
197
199
|
}).catch((cause) => {
|
|
198
200
|
if (cancelled) return;
|
|
@@ -212,23 +214,14 @@ function Chat({
|
|
|
212
214
|
);
|
|
213
215
|
}, [messages]);
|
|
214
216
|
react.useEffect(() => {
|
|
215
|
-
if (!initialPrompt
|
|
216
|
-
if (
|
|
217
|
-
if (sentInitialPromptId.current === initialPrompt.id) return;
|
|
217
|
+
if (!initialPrompt) return;
|
|
218
|
+
if (seededInitialPromptId.current === initialPrompt.id) return;
|
|
218
219
|
const text = initialPrompt.text.trim();
|
|
219
220
|
if (!text) return;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}, [
|
|
224
|
-
hydratedSessionId,
|
|
225
|
-
initialPrompt,
|
|
226
|
-
onInitialPromptSent,
|
|
227
|
-
sendMessage,
|
|
228
|
-
sessionsApi,
|
|
229
|
-
status,
|
|
230
|
-
threadId
|
|
231
|
-
]);
|
|
221
|
+
seededInitialPromptId.current = initialPrompt.id;
|
|
222
|
+
setDraft({ id: nextDraftId(), text });
|
|
223
|
+
onInitialPromptConsumed == null ? void 0 : onInitialPromptConsumed();
|
|
224
|
+
}, [initialPrompt, onInitialPromptConsumed]);
|
|
232
225
|
const onUsageRef = react.useRef(onUsage);
|
|
233
226
|
onUsageRef.current = onUsage;
|
|
234
227
|
react.useEffect(() => {
|
|
@@ -310,16 +303,12 @@ function Chat({
|
|
|
310
303
|
onRuntimeChange: handleRuntimeChange
|
|
311
304
|
}
|
|
312
305
|
);
|
|
313
|
-
const empty = messages.length === 0 &&
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
onSelect: (text) => void sendMessage({ text })
|
|
320
|
-
}
|
|
321
|
-
)
|
|
322
|
-
] }) : void 0;
|
|
306
|
+
const empty = messages.length === 0 && emptyState ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-center gap-4", children: emptyState }) : void 0;
|
|
307
|
+
const chips = (proposedPrompts == null ? void 0 : proposedPrompts.length) ? proposedPrompts : messages.length === 0 && !hadProposals.current ? suggestions : void 0;
|
|
308
|
+
const pickSuggestion = (text) => {
|
|
309
|
+
setDraft({ id: nextDraftId(), text });
|
|
310
|
+
onProposedPromptsConsumed == null ? void 0 : onProposedPromptsConsumed();
|
|
311
|
+
};
|
|
323
312
|
return /* @__PURE__ */ jsxRuntime.jsx(context.ToolRenderRegistryProvider, { value: toolRegistry, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex h-full flex-col", className), children: [
|
|
324
313
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
325
314
|
Conversation.Conversation,
|
|
@@ -339,20 +328,27 @@ function Chat({
|
|
|
339
328
|
...renderToolResult ? { renderToolResult } : {}
|
|
340
329
|
}
|
|
341
330
|
),
|
|
342
|
-
/* @__PURE__ */ jsxRuntime.
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
331
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 p-4 pt-0", children: [
|
|
332
|
+
chips && chips.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Suggestion.Suggestions, { suggestions: chips, onSelect: pickSuggestion }),
|
|
333
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
334
|
+
PromptInput.PromptInput,
|
|
335
|
+
{
|
|
336
|
+
status,
|
|
337
|
+
onStop: () => void stop(),
|
|
338
|
+
placeholder,
|
|
339
|
+
enableAttachments,
|
|
340
|
+
attachmentUpload: resolvedAttachmentUpload,
|
|
341
|
+
...(selectedModel == null ? void 0 : selectedModel.inputMediaTypes) ? { acceptedMediaTypes: selectedModel.inputMediaTypes } : {},
|
|
342
|
+
...attachmentLimits ? { attachmentLimits } : {},
|
|
343
|
+
draft,
|
|
344
|
+
toolbar,
|
|
345
|
+
onSubmit: (text, files) => {
|
|
346
|
+
onProposedPromptsConsumed == null ? void 0 : onProposedPromptsConsumed();
|
|
347
|
+
void sendMessage({ text, files });
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
)
|
|
351
|
+
] })
|
|
356
352
|
] }) });
|
|
357
353
|
}
|
|
358
354
|
exports.Chat = Chat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.cjs","sources":["../../../src/data/chat/Chat.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChat } from \"@ai-sdk/react\";\nimport { DefaultChatTransport, type ChatTransport, type UIMessage } from \"ai\";\nimport { cn } from \"../../lib/utils\";\nimport { Conversation } from \"./Conversation\";\nimport { PromptInput } from \"./PromptInput\";\nimport { Suggestions } from \"./Suggestion\";\nimport { DEFAULT_REASONING_EFFORTS } from \"./effort-icons\";\nimport { defaultChatModelId } from \"./models\";\nimport {\n getChatSession,\n postToolApproval,\n type CaptainChatSession,\n} from \"./approval\";\nimport { isForkSeedMessage } from \"./fork-seed\";\nimport {\n hasStructuredRuntime,\n resolveChatRuntime,\n selectedChatModel,\n} from \"./Chat.runtime\";\nimport {\n createAttachmentUploadAdapter,\n type AttachmentLimits,\n type AttachmentUploadAdapter,\n} from \"./attachment-upload\";\nimport { toToolRenderRegistry } from \"./tool-render/registry\";\nimport { ToolRenderRegistryProvider } from \"./tool-render/context\";\nimport { ChatRuntimeToolbar } from \"./ChatRuntimeToolbar\";\nimport type { SpecRuntimeFamily } from \"../runtime/runtime-mode\";\nimport type {\n ToolRenderAdapter,\n ToolRenderRegistry,\n} from \"./tool-render/adapter\";\nimport type {\n ChatBudgetConfig,\n ChatModel,\n ChatMessageMetadata,\n ChatModelRuntime,\n ChatUsageSummary,\n ClaudePermissionMode,\n Suggestion,\n ToolMeta,\n ToolResultRenderer,\n} from \"./types\";\nimport {\n usageSnapshotFromMetadata,\n usageSnapshotFromSession,\n} from \"./usage-snapshot\";\n\n/** Assistant messages carry token usage + cost the backend rode on the finish\n * part's `messageMetadata`. */\ntype ChatUIMessage = UIMessage<ChatMessageMetadata>;\n\nexport type ChatProps = {\n /** Endpoint that speaks the AI SDK v6 UI Message Stream protocol.\n * Ignored when `transport` is supplied. Defaults to \"/api/chat\". */\n api?: string;\n /** Model menu. When omitted and `modelsApi` is set, it is fetched. */\n models?: ChatModel[];\n /** Endpoint returning the model menu (ModelInfo[]). Defaults to\n * \"/api/chat/models\". Set to null to disable fetching. */\n modelsApi?: string | null;\n /** Initially selected model id; otherwise the first configured model. */\n defaultModel?: string;\n /** Controlled selected model id. */\n model?: string;\n /** Initially selected structured runtime. */\n defaultRuntime?: ChatModelRuntime;\n /** Controlled structured runtime. */\n runtime?: ChatModelRuntime;\n /** Runtime families and their host availability. */\n runtimeFamilies?: SpecRuntimeFamily[];\n /** Reasoning-effort options for capable models. */\n reasoningEfforts?: string[];\n /** Initially selected reasoning effort (\"\" = none). */\n defaultReasoningEffort?: string;\n /** Controlled selected reasoning effort (\"\" = none). */\n reasoningEffort?: string;\n /** Sampling temperature forwarded to the backend when set. */\n temperature?: number;\n /** Per-request budget forwarded to the backend when set. */\n budget?: ChatBudgetConfig;\n /** Claude Agent SDK permission mode forwarded to the backend when set. */\n permissionMode?: ClaudePermissionMode;\n /** Notified when the user changes the model. */\n onModelChange?: (id: string) => void;\n /** Notified when the user changes any runtime field. */\n onRuntimeChange?: (runtime: ChatModelRuntime) => void;\n /** Notified when the user changes reasoning effort. */\n onReasoningEffortChange?: (effort: string) => void;\n /** Notified when the user changes Claude permission mode. */\n onPermissionModeChange?: (mode: ClaudePermissionMode) => void;\n /** Notified after each assistant turn with a usage snapshot (tokens used out\n * of the model's context window + cumulative cost), for a usage gauge. */\n onUsage?: (usage: ChatUsageSummary) => void;\n /** Suggested prompts shown on the empty state. */\n suggestions?: Suggestion[];\n /** Enables file/image attachments. */\n enableAttachments?: boolean;\n /** Upload endpoint used before an attachment is added to a chat message. */\n attachmentsApi?: string;\n /** Custom durable upload adapter; overrides attachmentsApi. */\n attachmentUpload?: AttachmentUploadAdapter;\n attachmentLimits?: AttachmentLimits;\n /** Captain thread id used as the AI SDK chat id and forwarded in the body. */\n threadId?: string;\n /** Canonical Captain session endpoint used to hydrate messages and resolve\n * approvals. The session and approval ids are appended to this URL. */\n sessionsApi?: string | null;\n /** Prevents changing model/backend for an existing Captain session. Effort\n * and other per-turn generation settings remain editable. */\n runtimeLocked?: boolean;\n /** Reports the number of real (non-fork-seed) persisted/UI messages. */\n onMessageCountChange?: (count: number) => void;\n /** Reports the authoritative Captain session after detail hydration. */\n onSessionHydrated?: (session: CaptainChatSession) => void;\n /** Optional host renderer for recognized completed tool outputs. Takes\n * priority over `toolRenderers` on the output surface. */\n renderToolResult?: ToolResultRenderer;\n /** Tool catalog, used to resolve each call's input/output JSON Schema so\n * params and results render with real labels instead of raw JSON. */\n tools?: ToolMeta[];\n /** Domain tool renderers. Host adapters are matched before the built-in\n * heuristics, which stay as the floor. */\n toolRenderers?: ToolRenderAdapter[] | ToolRenderRegistry;\n /** Extra fields merged into every request body. */\n body?: Record<string, unknown>;\n /** Pre-built transport (e.g. a mock for stories/tests). */\n transport?: ChatTransport<UIMessage>;\n /** Initial messages to seed the conversation. */\n initialMessages?: UIMessage[];\n /** Prompt to send automatically once. A new `id` sends even when text repeats. */\n initialPrompt?: { id: number; text: string } | null;\n /** Called after `initialPrompt` has been handed to the chat transport. */\n onInitialPromptSent?: () => void;\n placeholder?: string;\n emptyState?: React.ReactNode;\n className?: string;\n};\n\n/** Self-contained AI chat over a v6-compatible `/api/chat`: a streaming\n * conversation with model/effort selectors, suggestions, attachments,\n * per-message copy/regenerate, and human-in-the-loop tool approvals. The\n * backend owns model selection and tool execution; the selected model,\n * effort, permission mode and thread id are forwarded in the request body. */\nexport function Chat({\n api = \"/api/chat\",\n models: modelsProp,\n modelsApi = \"/api/chat/models\",\n defaultModel,\n model: controlledModel,\n defaultRuntime,\n runtime: controlledRuntime,\n runtimeFamilies,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n defaultReasoningEffort,\n reasoningEffort: controlledEffort,\n temperature,\n budget,\n permissionMode,\n onModelChange,\n onRuntimeChange,\n onReasoningEffortChange,\n onUsage,\n suggestions,\n enableAttachments = false,\n attachmentsApi = \"/api/attachments\",\n attachmentUpload,\n attachmentLimits,\n threadId,\n sessionsApi = null,\n runtimeLocked = false,\n onMessageCountChange,\n onSessionHydrated,\n renderToolResult,\n tools,\n toolRenderers,\n body,\n transport,\n initialMessages,\n initialPrompt,\n onInitialPromptSent,\n placeholder,\n emptyState,\n className,\n}: ChatProps) {\n const [models, setModels] = useState<ChatModel[]>(modelsProp ?? []);\n const [internalRuntime, setInternalRuntime] = useState<ChatModelRuntime>(\n () =>\n controlledRuntime ??\n resolveChatRuntime({\n models: modelsProp ?? [],\n current: defaultRuntime,\n preferredModel:\n controlledModel ??\n (defaultRuntime\n ? undefined\n : (defaultModel ?? defaultChatModelId(modelsProp ?? []))),\n effort: controlledEffort ?? defaultReasoningEffort,\n temperature,\n reasoningEfforts,\n }),\n );\n const [usage, setUsage] = useState<ChatUsageSummary | null>(null);\n const [approvalError, setApprovalError] = useState<Error | undefined>();\n const [hydratedSessionId, setHydratedSessionId] = useState<string | null>(\n null,\n );\n const lastDefaultModel = useRef(defaultModel);\n const sentInitialPromptId = useRef<number | null>(null);\n const activeThreadRef = useRef(threadId);\n const onMessageCountChangeRef = useRef(onMessageCountChange);\n const onSessionHydratedRef = useRef(onSessionHydrated);\n activeThreadRef.current = threadId;\n onMessageCountChangeRef.current = onMessageCountChange;\n onSessionHydratedRef.current = onSessionHydrated;\n const runtime = controlledRuntime ?? internalRuntime;\n\n // Provided once here; <ToolCall> reads it from context, so no tool-render\n // props thread through Conversation/Message.\n const toolRegistry = useMemo(\n () => toToolRenderRegistry(toolRenderers, tools ? { tools } : {}),\n [toolRenderers, tools],\n );\n\n useEffect(() => {\n if (!modelsProp) return;\n setModels(modelsProp);\n }, [modelsProp]);\n\n // Fetch the model menu unless one was supplied or fetching is disabled.\n useEffect(() => {\n if (modelsProp || !modelsApi) return;\n let cancelled = false;\n fetch(modelsApi)\n .then((r) =>\n r.ok ? r.json() : Promise.reject(new Error(`models ${r.status}`)),\n )\n .then((data: ChatModel[]) => {\n if (cancelled) return;\n setModels(data);\n })\n .catch((err) =>\n console.warn(\"clicky-ui: failed to load chat models\", err),\n );\n return () => {\n cancelled = true;\n };\n }, [modelsProp, modelsApi]);\n\n useEffect(() => {\n if (controlledRuntime !== undefined) return;\n const defaultChanged =\n Boolean(defaultModel) && defaultModel !== lastDefaultModel.current;\n lastDefaultModel.current = defaultModel;\n setInternalRuntime((current) =>\n resolveChatRuntime({\n models,\n current,\n preferredModel:\n controlledModel ??\n (defaultChanged\n ? defaultModel\n : (selectedChatModel(models, current)?.id ??\n defaultModel ??\n defaultChatModelId(models))),\n effort: controlledEffort,\n temperature,\n reasoningEfforts,\n }),\n );\n }, [\n controlledEffort,\n controlledModel,\n controlledRuntime,\n defaultModel,\n models,\n reasoningEfforts,\n temperature,\n ]);\n\n const selectedModel = selectedChatModel(models, runtime);\n const structuredRuntime = hasStructuredRuntime(runtime, selectedModel);\n const resolvedAttachmentUpload = useMemo(\n () =>\n attachmentUpload ??\n createAttachmentUploadAdapter({ endpoint: attachmentsApi }),\n [attachmentUpload, attachmentsApi],\n );\n\n // A function body keeps the transport stable while always sending the latest\n // model/effort/runtime selections.\n const bodyRef = useRef<Record<string, unknown>>({});\n bodyRef.current = {\n ...body,\n ...(structuredRuntime\n ? { runtime }\n : {\n ...(runtime.model ? { model: runtime.model } : {}),\n ...(runtime.effort ? { reasoningEffort: runtime.effort } : {}),\n ...(runtime.temperature !== undefined\n ? { temperature: runtime.temperature }\n : {}),\n }),\n ...(budget && (budget.cost !== undefined || budget.maxTokens !== undefined)\n ? { budget }\n : {}),\n ...(permissionMode ? { permissionMode } : {}),\n ...(threadId ? { threadId } : {}),\n };\n\n const resolvedTransport = useMemo<ChatTransport<UIMessage>>(\n () =>\n transport ??\n new DefaultChatTransport({ api, body: () => bodyRef.current }),\n [transport, api],\n );\n\n const {\n messages,\n setMessages,\n sendMessage,\n regenerate,\n status,\n error,\n clearError,\n stop,\n } = useChat<ChatUIMessage>({\n transport: resolvedTransport,\n ...(threadId ? { id: threadId } : {}),\n ...(initialMessages\n ? { messages: initialMessages as ChatUIMessage[] }\n : {}),\n });\n const setMessagesRef = useRef(setMessages);\n setMessagesRef.current = setMessages;\n const hydratedUsageRef = useRef<ChatUsageSummary | null>(null);\n\n useEffect(() => {\n if (!sessionsApi || !threadId) return;\n let cancelled = false;\n setHydratedSessionId(null);\n setApprovalError(undefined);\n hydratedUsageRef.current = null;\n setUsage(null);\n setMessagesRef.current([]);\n void getChatSession(sessionsApi, threadId)\n .then((session) => {\n if (cancelled) return;\n if (session.id !== threadId) {\n throw new Error(\n `Captain chat session response ID \"${session.id}\" does not match requested session \"${threadId}\".`,\n );\n }\n const snapshot = usageSnapshotFromSession(session);\n hydratedUsageRef.current = snapshot;\n setUsage(snapshot);\n setMessagesRef.current(session.messages as ChatUIMessage[]);\n setHydratedSessionId(session.id);\n onSessionHydratedRef.current?.(session);\n })\n .catch((cause) => {\n if (cancelled) return;\n setApprovalError(\n cause instanceof Error ? cause : new Error(String(cause)),\n );\n });\n return () => {\n cancelled = true;\n };\n }, [sessionsApi, threadId]);\n\n useEffect(() => {\n onMessageCountChangeRef.current?.(\n messages.filter((message) => !isForkSeedMessage(message)).length,\n );\n }, [messages]);\n\n useEffect(() => {\n if (!initialPrompt || status !== \"ready\") return;\n if (sessionsApi && threadId && hydratedSessionId !== threadId) return;\n if (sentInitialPromptId.current === initialPrompt.id) return;\n const text = initialPrompt.text.trim();\n if (!text) return;\n sentInitialPromptId.current = initialPrompt.id;\n void sendMessage({ text });\n onInitialPromptSent?.();\n }, [\n hydratedSessionId,\n initialPrompt,\n onInitialPromptSent,\n sendMessage,\n sessionsApi,\n status,\n threadId,\n ]);\n\n // Surface a usage snapshot after each settled assistant turn. The backend\n // rides usage/cost on the finish part's messageMetadata; we read it off the\n // last assistant message and resolve maxTokens from the selected model.\n const onUsageRef = useRef(onUsage);\n onUsageRef.current = onUsage;\n useEffect(() => {\n if (status !== \"ready\") return;\n const last = [...messages].reverse().find((m) => m.role === \"assistant\");\n const meta = last?.metadata;\n if (!meta) {\n setUsage(hydratedUsageRef.current);\n if (hydratedUsageRef.current) {\n onUsageRef.current?.(hydratedUsageRef.current);\n }\n return;\n }\n const settledModel = meta.model\n ? selectedChatModel(models, { id: meta.model, model: meta.model })\n : undefined;\n const snapshot = usageSnapshotFromMetadata(meta, {\n contextWindow: settledModel?.contextWindow,\n modelLabel: settledModel?.label,\n messageCount: messages.length,\n });\n hydratedUsageRef.current = snapshot;\n setUsage(snapshot);\n onUsageRef.current?.(snapshot);\n }, [messages, models, status]);\n\n const handleRuntimeChange = (next: ChatModelRuntime) => {\n if (controlledRuntime === undefined) setInternalRuntime(next);\n onRuntimeChange?.(next);\n const nextModel = selectedChatModel(models, next);\n const currentModelId = selectedModel?.id ?? runtime.id ?? runtime.model ?? \"\";\n const nextModelId = nextModel?.id ?? next.id ?? next.model ?? \"\";\n if (nextModelId !== currentModelId) {\n onModelChange?.(nextModelId);\n }\n if ((next.effort ?? \"\") !== (runtime.effort ?? \"\")) {\n onReasoningEffortChange?.(next.effort ?? \"\");\n }\n };\n\n const resolveToolApproval = async (\n id: string,\n approved: boolean,\n reason?: string,\n ) => {\n const approvalThreadId = threadId;\n setApprovalError(undefined);\n try {\n if (!sessionsApi) {\n throw new Error(\n \"A Captain sessions API is required to resolve tool approvals.\",\n );\n }\n const session = await postToolApproval({\n sessionsApi,\n sessionId: approvalThreadId ?? \"\",\n approvalId: id,\n approved,\n ...(reason ? { reason } : {}),\n });\n if (activeThreadRef.current !== approvalThreadId) return;\n if (session.id !== approvalThreadId) {\n throw new Error(\n `Captain chat session response ID \"${session.id}\" does not match active session \"${approvalThreadId ?? \"\"}\".`,\n );\n }\n setMessages(session.messages as ChatUIMessage[]);\n } catch (cause) {\n if (activeThreadRef.current !== approvalThreadId) return;\n setApprovalError(\n cause instanceof Error ? cause : new Error(String(cause)),\n );\n }\n };\n\n const toolbar = (\n <ChatRuntimeToolbar\n models={models}\n runtime={runtime}\n runtimeFamilies={runtimeFamilies}\n reasoningEfforts={reasoningEfforts}\n selectedModel={selectedModel}\n usage={usage}\n threadId={threadId}\n locked={runtimeLocked}\n onRuntimeChange={handleRuntimeChange}\n />\n );\n\n const empty =\n messages.length === 0 && (emptyState || suggestions?.length) ? (\n <div className=\"flex flex-col items-center gap-4\">\n {emptyState}\n {suggestions && suggestions.length > 0 && (\n <Suggestions\n suggestions={suggestions}\n onSelect={(text) => void sendMessage({ text })}\n />\n )}\n </div>\n ) : undefined;\n\n return (\n <ToolRenderRegistryProvider value={toolRegistry}>\n <div className={cn(\"flex h-full flex-col\", className)}>\n <Conversation\n messages={messages}\n status={status}\n error={approvalError ?? error}\n onClearError={() => {\n setApprovalError(undefined);\n clearError();\n }}\n {...(threadId ? { sessionId: threadId } : {})}\n {...(selectedModel?.id\n ? { model: selectedModel.id }\n : runtime.model\n ? { model: runtime.model }\n : {})}\n emptyState={empty}\n onRegenerate={(messageId) => void regenerate({ messageId })}\n onApprove={(id, approved, reason) =>\n void resolveToolApproval(id, approved, reason)\n }\n {...(renderToolResult ? { renderToolResult } : {})}\n />\n <div className=\"p-4 pt-0\">\n <PromptInput\n status={status}\n onStop={() => void stop()}\n placeholder={placeholder}\n enableAttachments={enableAttachments}\n attachmentUpload={resolvedAttachmentUpload}\n {...(selectedModel?.inputMediaTypes\n ? { acceptedMediaTypes: selectedModel.inputMediaTypes }\n : {})}\n {...(attachmentLimits ? { attachmentLimits } : {})}\n toolbar={toolbar}\n onSubmit={(text, files) => void sendMessage({ text, files })}\n />\n </div>\n </div>\n </ToolRenderRegistryProvider>\n );\n}\n"],"names":["DEFAULT_REASONING_EFFORTS","attachmentUpload","models","useState","resolveChatRuntime","defaultChatModelId","useRef","useMemo","toToolRenderRegistry","useEffect","selectedChatModel","hasStructuredRuntime","createAttachmentUploadAdapter","DefaultChatTransport","useChat","getChatSession","usageSnapshotFromSession","isForkSeedMessage","usageSnapshotFromMetadata","postToolApproval","jsx","ChatRuntimeToolbar","jsxs","Suggestions","ToolRenderRegistryProvider","cn","Conversation","PromptInput"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chat.cjs","sources":["../../../src/data/chat/Chat.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChat } from \"@ai-sdk/react\";\nimport { DefaultChatTransport, type ChatTransport, type UIMessage } from \"ai\";\nimport { cn } from \"../../lib/utils\";\nimport { Conversation } from \"./Conversation\";\nimport { PromptInput } from \"./PromptInput\";\nimport { Suggestions } from \"./Suggestion\";\nimport { DEFAULT_REASONING_EFFORTS } from \"./effort-icons\";\nimport { defaultChatModelId } from \"./models\";\nimport {\n getChatSession,\n postToolApproval,\n type CaptainChatSession,\n} from \"./approval\";\nimport { isForkSeedMessage } from \"./fork-seed\";\nimport {\n hasStructuredRuntime,\n resolveChatRuntime,\n selectedChatModel,\n} from \"./Chat.runtime\";\nimport {\n createAttachmentUploadAdapter,\n type AttachmentLimits,\n type AttachmentUploadAdapter,\n} from \"./attachment-upload\";\nimport { toToolRenderRegistry } from \"./tool-render/registry\";\nimport { ToolRenderRegistryProvider } from \"./tool-render/context\";\nimport { ChatRuntimeToolbar } from \"./ChatRuntimeToolbar\";\nimport type { SpecRuntimeFamily } from \"../runtime/runtime-mode\";\nimport type {\n ToolRenderAdapter,\n ToolRenderRegistry,\n} from \"./tool-render/adapter\";\nimport type {\n ChatBudgetConfig,\n ChatModel,\n ChatMessageMetadata,\n ChatModelRuntime,\n ChatUsageSummary,\n ClaudePermissionMode,\n Suggestion,\n ToolMeta,\n ToolResultRenderer,\n} from \"./types\";\nimport {\n usageSnapshotFromMetadata,\n usageSnapshotFromSession,\n} from \"./usage-snapshot\";\n\n/** Assistant messages carry token usage + cost the backend rode on the finish\n * part's `messageMetadata`. */\ntype ChatUIMessage = UIMessage<ChatMessageMetadata>;\n\n// Composer seeds are keyed by a monotonic id so re-seeding the same text works.\n// Minted here rather than reusing a caller's `initialPrompt.id` so a host's id\n// space can never collide with one a suggestion pick produced.\nlet _draftId = 0;\nconst nextDraftId = () => ++_draftId;\n\nexport type ChatProps = {\n /** Endpoint that speaks the AI SDK v6 UI Message Stream protocol.\n * Ignored when `transport` is supplied. Defaults to \"/api/chat\". */\n api?: string;\n /** Model menu. When omitted and `modelsApi` is set, it is fetched. */\n models?: ChatModel[];\n /** Endpoint returning the model menu (ModelInfo[]). Defaults to\n * \"/api/chat/models\". Set to null to disable fetching. */\n modelsApi?: string | null;\n /** Initially selected model id; otherwise the first configured model. */\n defaultModel?: string;\n /** Controlled selected model id. */\n model?: string;\n /** Initially selected structured runtime. */\n defaultRuntime?: ChatModelRuntime;\n /** Controlled structured runtime. */\n runtime?: ChatModelRuntime;\n /** Runtime families and their host availability. */\n runtimeFamilies?: SpecRuntimeFamily[];\n /** Reasoning-effort options for capable models. */\n reasoningEfforts?: string[];\n /** Initially selected reasoning effort (\"\" = none). */\n defaultReasoningEffort?: string;\n /** Controlled selected reasoning effort (\"\" = none). */\n reasoningEffort?: string;\n /** Sampling temperature forwarded to the backend when set. */\n temperature?: number;\n /** Per-request budget forwarded to the backend when set. */\n budget?: ChatBudgetConfig;\n /** Claude Agent SDK permission mode forwarded to the backend when set. */\n permissionMode?: ClaudePermissionMode;\n /** Notified when the user changes the model. */\n onModelChange?: (id: string) => void;\n /** Notified when the user changes any runtime field. */\n onRuntimeChange?: (runtime: ChatModelRuntime) => void;\n /** Notified when the user changes reasoning effort. */\n onReasoningEffortChange?: (effort: string) => void;\n /** Notified when the user changes Claude permission mode. */\n onPermissionModeChange?: (mode: ClaudePermissionMode) => void;\n /** Notified after each assistant turn with a usage snapshot (tokens used out\n * of the model's context window + cumulative cost), for a usage gauge. */\n onUsage?: (usage: ChatUsageSummary) => void;\n /** Suggested prompts offered while the conversation is still empty. */\n suggestions?: Suggestion[];\n /** Prompts proposed for this particular open — e.g. the opener a host's \"Ask\n * AI\" button rendered for the thing being asked about. Shown in place of\n * `suggestions`, and unlike them they stay offered once the conversation has\n * started, because a host may propose them into a chat that is already\n * running. Cleared through `onProposedPromptsConsumed`. */\n proposedPrompts?: Suggestion[] | null;\n /** Called once the proposed prompts have been acted on — one was picked, or\n * the user sent a message of their own. */\n onProposedPromptsConsumed?: () => void;\n /** Enables file/image attachments. */\n enableAttachments?: boolean;\n /** Upload endpoint used before an attachment is added to a chat message. */\n attachmentsApi?: string;\n /** Custom durable upload adapter; overrides attachmentsApi. */\n attachmentUpload?: AttachmentUploadAdapter;\n attachmentLimits?: AttachmentLimits;\n /** Captain thread id used as the AI SDK chat id and forwarded in the body. */\n threadId?: string;\n /** Canonical Captain session endpoint used to hydrate messages and resolve\n * approvals. The session and approval ids are appended to this URL. */\n sessionsApi?: string | null;\n /** Prevents changing model/backend for an existing Captain session. Effort\n * and other per-turn generation settings remain editable. */\n runtimeLocked?: boolean;\n /** Reports the number of real (non-fork-seed) persisted/UI messages. */\n onMessageCountChange?: (count: number) => void;\n /** Reports the authoritative Captain session after detail hydration. */\n onSessionHydrated?: (session: CaptainChatSession) => void;\n /** Optional host renderer for recognized completed tool outputs. Takes\n * priority over `toolRenderers` on the output surface. */\n renderToolResult?: ToolResultRenderer;\n /** Tool catalog, used to resolve each call's input/output JSON Schema so\n * params and results render with real labels instead of raw JSON. */\n tools?: ToolMeta[];\n /** Domain tool renderers. Host adapters are matched before the built-in\n * heuristics, which stay as the floor. */\n toolRenderers?: ToolRenderAdapter[] | ToolRenderRegistry;\n /** Extra fields merged into every request body. */\n body?: Record<string, unknown>;\n /** Pre-built transport (e.g. a mock for stories/tests). */\n transport?: ChatTransport<UIMessage>;\n /** Initial messages to seed the conversation. */\n initialMessages?: UIMessage[];\n /** Prompt to prefill the composer with once. It is never submitted on the\n * user's behalf — they read it, edit it if they want, and press send. A new\n * `id` re-seeds even when the text repeats. */\n initialPrompt?: { id: number; text: string } | null;\n /** Called after `initialPrompt` has been placed in the composer. */\n onInitialPromptConsumed?: () => void;\n placeholder?: string;\n emptyState?: React.ReactNode;\n className?: string;\n};\n\n/** Self-contained AI chat over a v6-compatible `/api/chat`: a streaming\n * conversation with model/effort selectors, suggestions, attachments,\n * per-message copy/regenerate, and human-in-the-loop tool approvals. The\n * backend owns model selection and tool execution; the selected model,\n * effort, permission mode and thread id are forwarded in the request body. */\nexport function Chat({\n api = \"/api/chat\",\n models: modelsProp,\n modelsApi = \"/api/chat/models\",\n defaultModel,\n model: controlledModel,\n defaultRuntime,\n runtime: controlledRuntime,\n runtimeFamilies,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n defaultReasoningEffort,\n reasoningEffort: controlledEffort,\n temperature,\n budget,\n permissionMode,\n onModelChange,\n onRuntimeChange,\n onReasoningEffortChange,\n onUsage,\n suggestions,\n proposedPrompts,\n onProposedPromptsConsumed,\n enableAttachments = false,\n attachmentsApi = \"/api/attachments\",\n attachmentUpload,\n attachmentLimits,\n threadId,\n sessionsApi = null,\n runtimeLocked = false,\n onMessageCountChange,\n onSessionHydrated,\n renderToolResult,\n tools,\n toolRenderers,\n body,\n transport,\n initialMessages,\n initialPrompt,\n onInitialPromptConsumed,\n placeholder,\n emptyState,\n className,\n}: ChatProps) {\n const [models, setModels] = useState<ChatModel[]>(modelsProp ?? []);\n const [internalRuntime, setInternalRuntime] = useState<ChatModelRuntime>(\n () =>\n controlledRuntime ??\n resolveChatRuntime({\n models: modelsProp ?? [],\n current: defaultRuntime,\n preferredModel:\n controlledModel ??\n (defaultRuntime\n ? undefined\n : (defaultModel ?? defaultChatModelId(modelsProp ?? []))),\n effort: controlledEffort ?? defaultReasoningEffort,\n temperature,\n reasoningEfforts,\n }),\n );\n const [usage, setUsage] = useState<ChatUsageSummary | null>(null);\n const [approvalError, setApprovalError] = useState<Error | undefined>();\n const lastDefaultModel = useRef(defaultModel);\n const [draft, setDraft] = useState<{ id: number; text: string } | null>(null);\n const seededInitialPromptId = useRef<number | null>(null);\n const hadProposals = useRef(false);\n if (proposedPrompts?.length) hadProposals.current = true;\n const activeThreadRef = useRef(threadId);\n const onMessageCountChangeRef = useRef(onMessageCountChange);\n const onSessionHydratedRef = useRef(onSessionHydrated);\n activeThreadRef.current = threadId;\n onMessageCountChangeRef.current = onMessageCountChange;\n onSessionHydratedRef.current = onSessionHydrated;\n const runtime = controlledRuntime ?? internalRuntime;\n\n // Provided once here; <ToolCall> reads it from context, so no tool-render\n // props thread through Conversation/Message.\n const toolRegistry = useMemo(\n () => toToolRenderRegistry(toolRenderers, tools ? { tools } : {}),\n [toolRenderers, tools],\n );\n\n useEffect(() => {\n if (!modelsProp) return;\n setModels(modelsProp);\n }, [modelsProp]);\n\n // Fetch the model menu unless one was supplied or fetching is disabled.\n useEffect(() => {\n if (modelsProp || !modelsApi) return;\n let cancelled = false;\n fetch(modelsApi)\n .then((r) =>\n r.ok ? r.json() : Promise.reject(new Error(`models ${r.status}`)),\n )\n .then((data: ChatModel[]) => {\n if (cancelled) return;\n setModels(data);\n })\n .catch((err) =>\n console.warn(\"clicky-ui: failed to load chat models\", err),\n );\n return () => {\n cancelled = true;\n };\n }, [modelsProp, modelsApi]);\n\n useEffect(() => {\n if (controlledRuntime !== undefined) return;\n const defaultChanged =\n Boolean(defaultModel) && defaultModel !== lastDefaultModel.current;\n lastDefaultModel.current = defaultModel;\n setInternalRuntime((current) =>\n resolveChatRuntime({\n models,\n current,\n preferredModel:\n controlledModel ??\n (defaultChanged\n ? defaultModel\n : (selectedChatModel(models, current)?.id ??\n defaultModel ??\n defaultChatModelId(models))),\n effort: controlledEffort,\n temperature,\n reasoningEfforts,\n }),\n );\n }, [\n controlledEffort,\n controlledModel,\n controlledRuntime,\n defaultModel,\n models,\n reasoningEfforts,\n temperature,\n ]);\n\n const selectedModel = selectedChatModel(models, runtime);\n const structuredRuntime = hasStructuredRuntime(runtime, selectedModel);\n const resolvedAttachmentUpload = useMemo(\n () =>\n attachmentUpload ??\n createAttachmentUploadAdapter({ endpoint: attachmentsApi }),\n [attachmentUpload, attachmentsApi],\n );\n\n // A function body keeps the transport stable while always sending the latest\n // model/effort/runtime selections.\n const bodyRef = useRef<Record<string, unknown>>({});\n bodyRef.current = {\n ...body,\n ...(structuredRuntime\n ? { runtime }\n : {\n ...(runtime.model ? { model: runtime.model } : {}),\n ...(runtime.effort ? { reasoningEffort: runtime.effort } : {}),\n ...(runtime.temperature !== undefined\n ? { temperature: runtime.temperature }\n : {}),\n }),\n ...(budget && (budget.cost !== undefined || budget.maxTokens !== undefined)\n ? { budget }\n : {}),\n ...(permissionMode ? { permissionMode } : {}),\n ...(threadId ? { threadId } : {}),\n };\n\n const resolvedTransport = useMemo<ChatTransport<UIMessage>>(\n () =>\n transport ??\n new DefaultChatTransport({ api, body: () => bodyRef.current }),\n [transport, api],\n );\n\n const {\n messages,\n setMessages,\n sendMessage,\n regenerate,\n status,\n error,\n clearError,\n stop,\n } = useChat<ChatUIMessage>({\n transport: resolvedTransport,\n ...(threadId ? { id: threadId } : {}),\n ...(initialMessages\n ? { messages: initialMessages as ChatUIMessage[] }\n : {}),\n });\n const setMessagesRef = useRef(setMessages);\n setMessagesRef.current = setMessages;\n const hydratedUsageRef = useRef<ChatUsageSummary | null>(null);\n\n useEffect(() => {\n if (!sessionsApi || !threadId) return;\n let cancelled = false;\n setApprovalError(undefined);\n hydratedUsageRef.current = null;\n setUsage(null);\n setMessagesRef.current([]);\n void getChatSession(sessionsApi, threadId)\n .then((session) => {\n if (cancelled) return;\n if (session.id !== threadId) {\n throw new Error(\n `Captain chat session response ID \"${session.id}\" does not match requested session \"${threadId}\".`,\n );\n }\n const snapshot = usageSnapshotFromSession(session);\n hydratedUsageRef.current = snapshot;\n setUsage(snapshot);\n setMessagesRef.current(session.messages as ChatUIMessage[]);\n onSessionHydratedRef.current?.(session);\n })\n .catch((cause) => {\n if (cancelled) return;\n setApprovalError(\n cause instanceof Error ? cause : new Error(String(cause)),\n );\n });\n return () => {\n cancelled = true;\n };\n }, [sessionsApi, threadId]);\n\n useEffect(() => {\n onMessageCountChangeRef.current?.(\n messages.filter((message) => !isForkSeedMessage(message)).length,\n );\n }, [messages]);\n\n // An initial prompt is a draft, not a turn: it lands in the composer and\n // waits for the user to send it. Unlike a send it needs no live transport and\n // no hydrated session, so it seeds immediately.\n useEffect(() => {\n if (!initialPrompt) return;\n if (seededInitialPromptId.current === initialPrompt.id) return;\n const text = initialPrompt.text.trim();\n if (!text) return;\n seededInitialPromptId.current = initialPrompt.id;\n setDraft({ id: nextDraftId(), text });\n onInitialPromptConsumed?.();\n }, [initialPrompt, onInitialPromptConsumed]);\n\n // Surface a usage snapshot after each settled assistant turn. The backend\n // rides usage/cost on the finish part's messageMetadata; we read it off the\n // last assistant message and resolve maxTokens from the selected model.\n const onUsageRef = useRef(onUsage);\n onUsageRef.current = onUsage;\n useEffect(() => {\n if (status !== \"ready\") return;\n const last = [...messages].reverse().find((m) => m.role === \"assistant\");\n const meta = last?.metadata;\n if (!meta) {\n setUsage(hydratedUsageRef.current);\n if (hydratedUsageRef.current) {\n onUsageRef.current?.(hydratedUsageRef.current);\n }\n return;\n }\n const settledModel = meta.model\n ? selectedChatModel(models, { id: meta.model, model: meta.model })\n : undefined;\n const snapshot = usageSnapshotFromMetadata(meta, {\n contextWindow: settledModel?.contextWindow,\n modelLabel: settledModel?.label,\n messageCount: messages.length,\n });\n hydratedUsageRef.current = snapshot;\n setUsage(snapshot);\n onUsageRef.current?.(snapshot);\n }, [messages, models, status]);\n\n const handleRuntimeChange = (next: ChatModelRuntime) => {\n if (controlledRuntime === undefined) setInternalRuntime(next);\n onRuntimeChange?.(next);\n const nextModel = selectedChatModel(models, next);\n const currentModelId = selectedModel?.id ?? runtime.id ?? runtime.model ?? \"\";\n const nextModelId = nextModel?.id ?? next.id ?? next.model ?? \"\";\n if (nextModelId !== currentModelId) {\n onModelChange?.(nextModelId);\n }\n if ((next.effort ?? \"\") !== (runtime.effort ?? \"\")) {\n onReasoningEffortChange?.(next.effort ?? \"\");\n }\n };\n\n const resolveToolApproval = async (\n id: string,\n approved: boolean,\n reason?: string,\n ) => {\n const approvalThreadId = threadId;\n setApprovalError(undefined);\n try {\n if (!sessionsApi) {\n throw new Error(\n \"A Captain sessions API is required to resolve tool approvals.\",\n );\n }\n const session = await postToolApproval({\n sessionsApi,\n sessionId: approvalThreadId ?? \"\",\n approvalId: id,\n approved,\n ...(reason ? { reason } : {}),\n });\n if (activeThreadRef.current !== approvalThreadId) return;\n if (session.id !== approvalThreadId) {\n throw new Error(\n `Captain chat session response ID \"${session.id}\" does not match active session \"${approvalThreadId ?? \"\"}\".`,\n );\n }\n setMessages(session.messages as ChatUIMessage[]);\n } catch (cause) {\n if (activeThreadRef.current !== approvalThreadId) return;\n setApprovalError(\n cause instanceof Error ? cause : new Error(String(cause)),\n );\n }\n };\n\n const toolbar = (\n <ChatRuntimeToolbar\n models={models}\n runtime={runtime}\n runtimeFamilies={runtimeFamilies}\n reasoningEfforts={reasoningEfforts}\n selectedModel={selectedModel}\n usage={usage}\n threadId={threadId}\n locked={runtimeLocked}\n onRuntimeChange={handleRuntimeChange}\n />\n );\n\n const empty =\n messages.length === 0 && emptyState ? (\n <div className=\"flex flex-col items-center gap-4\">{emptyState}</div>\n ) : undefined;\n\n // Prompts proposed for this open outrank the static suggestions and survive a\n // running conversation — a host can propose into a chat that already has one.\n // The static list is an empty-state affordance and retires once a turn exists;\n // it also never comes back after proposals were consumed, because falling back\n // to the application's generic prompts under a chat opened about one cell\n // reads as an unrelated non-sequitur.\n const chips = proposedPrompts?.length\n ? proposedPrompts\n : messages.length === 0 && !hadProposals.current\n ? suggestions\n : undefined;\n\n const pickSuggestion = (text: string) => {\n setDraft({ id: nextDraftId(), text });\n onProposedPromptsConsumed?.();\n };\n\n return (\n <ToolRenderRegistryProvider value={toolRegistry}>\n <div className={cn(\"flex h-full flex-col\", className)}>\n <Conversation\n messages={messages}\n status={status}\n error={approvalError ?? error}\n onClearError={() => {\n setApprovalError(undefined);\n clearError();\n }}\n {...(threadId ? { sessionId: threadId } : {})}\n {...(selectedModel?.id\n ? { model: selectedModel.id }\n : runtime.model\n ? { model: runtime.model }\n : {})}\n emptyState={empty}\n onRegenerate={(messageId) => void regenerate({ messageId })}\n onApprove={(id, approved, reason) =>\n void resolveToolApproval(id, approved, reason)\n }\n {...(renderToolResult ? { renderToolResult } : {})}\n />\n <div className=\"flex flex-col gap-2 p-4 pt-0\">\n {chips && chips.length > 0 && (\n <Suggestions suggestions={chips} onSelect={pickSuggestion} />\n )}\n <PromptInput\n status={status}\n onStop={() => void stop()}\n placeholder={placeholder}\n enableAttachments={enableAttachments}\n attachmentUpload={resolvedAttachmentUpload}\n {...(selectedModel?.inputMediaTypes\n ? { acceptedMediaTypes: selectedModel.inputMediaTypes }\n : {})}\n {...(attachmentLimits ? { attachmentLimits } : {})}\n draft={draft}\n toolbar={toolbar}\n onSubmit={(text, files) => {\n onProposedPromptsConsumed?.();\n void sendMessage({ text, files });\n }}\n />\n </div>\n </div>\n </ToolRenderRegistryProvider>\n );\n}\n"],"names":["DEFAULT_REASONING_EFFORTS","attachmentUpload","models","useState","resolveChatRuntime","defaultChatModelId","useRef","useMemo","toToolRenderRegistry","useEffect","selectedChatModel","hasStructuredRuntime","createAttachmentUploadAdapter","DefaultChatTransport","useChat","getChatSession","usageSnapshotFromSession","isForkSeedMessage","usageSnapshotFromMetadata","postToolApproval","jsx","ChatRuntimeToolbar","ToolRenderRegistryProvider","jsxs","cn","Conversation","Suggestions","PromptInput"],"mappings":"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"}
|
package/dist/data/chat/Chat.d.ts
CHANGED
|
@@ -46,8 +46,17 @@ export type ChatProps = {
|
|
|
46
46
|
/** Notified after each assistant turn with a usage snapshot (tokens used out
|
|
47
47
|
* of the model's context window + cumulative cost), for a usage gauge. */
|
|
48
48
|
onUsage?: (usage: ChatUsageSummary) => void;
|
|
49
|
-
/** Suggested prompts
|
|
49
|
+
/** Suggested prompts offered while the conversation is still empty. */
|
|
50
50
|
suggestions?: Suggestion[];
|
|
51
|
+
/** Prompts proposed for this particular open — e.g. the opener a host's "Ask
|
|
52
|
+
* AI" button rendered for the thing being asked about. Shown in place of
|
|
53
|
+
* `suggestions`, and unlike them they stay offered once the conversation has
|
|
54
|
+
* started, because a host may propose them into a chat that is already
|
|
55
|
+
* running. Cleared through `onProposedPromptsConsumed`. */
|
|
56
|
+
proposedPrompts?: Suggestion[] | null;
|
|
57
|
+
/** Called once the proposed prompts have been acted on — one was picked, or
|
|
58
|
+
* the user sent a message of their own. */
|
|
59
|
+
onProposedPromptsConsumed?: () => void;
|
|
51
60
|
/** Enables file/image attachments. */
|
|
52
61
|
enableAttachments?: boolean;
|
|
53
62
|
/** Upload endpoint used before an attachment is added to a chat message. */
|
|
@@ -82,13 +91,15 @@ export type ChatProps = {
|
|
|
82
91
|
transport?: ChatTransport<UIMessage>;
|
|
83
92
|
/** Initial messages to seed the conversation. */
|
|
84
93
|
initialMessages?: UIMessage[];
|
|
85
|
-
/** Prompt to
|
|
94
|
+
/** Prompt to prefill the composer with once. It is never submitted on the
|
|
95
|
+
* user's behalf — they read it, edit it if they want, and press send. A new
|
|
96
|
+
* `id` re-seeds even when the text repeats. */
|
|
86
97
|
initialPrompt?: {
|
|
87
98
|
id: number;
|
|
88
99
|
text: string;
|
|
89
100
|
} | null;
|
|
90
|
-
/** Called after `initialPrompt` has been
|
|
91
|
-
|
|
101
|
+
/** Called after `initialPrompt` has been placed in the composer. */
|
|
102
|
+
onInitialPromptConsumed?: () => void;
|
|
92
103
|
placeholder?: string;
|
|
93
104
|
emptyState?: React.ReactNode;
|
|
94
105
|
className?: string;
|
|
@@ -98,5 +109,5 @@ export type ChatProps = {
|
|
|
98
109
|
* per-message copy/regenerate, and human-in-the-loop tool approvals. The
|
|
99
110
|
* backend owns model selection and tool execution; the selected model,
|
|
100
111
|
* effort, permission mode and thread id are forwarded in the request body. */
|
|
101
|
-
export declare function Chat({ api, models: modelsProp, modelsApi, defaultModel, model: controlledModel, defaultRuntime, runtime: controlledRuntime, runtimeFamilies, reasoningEfforts, defaultReasoningEffort, reasoningEffort: controlledEffort, temperature, budget, permissionMode, onModelChange, onRuntimeChange, onReasoningEffortChange, onUsage, suggestions, enableAttachments, attachmentsApi, attachmentUpload, attachmentLimits, threadId, sessionsApi, runtimeLocked, onMessageCountChange, onSessionHydrated, renderToolResult, tools, toolRenderers, body, transport, initialMessages, initialPrompt,
|
|
112
|
+
export declare function Chat({ api, models: modelsProp, modelsApi, defaultModel, model: controlledModel, defaultRuntime, runtime: controlledRuntime, runtimeFamilies, reasoningEfforts, defaultReasoningEffort, reasoningEffort: controlledEffort, temperature, budget, permissionMode, onModelChange, onRuntimeChange, onReasoningEffortChange, onUsage, suggestions, proposedPrompts, onProposedPromptsConsumed, enableAttachments, attachmentsApi, attachmentUpload, attachmentLimits, threadId, sessionsApi, runtimeLocked, onMessageCountChange, onSessionHydrated, renderToolResult, tools, toolRenderers, body, transport, initialMessages, initialPrompt, onInitialPromptConsumed, placeholder, emptyState, className, }: ChatProps): import("react").JSX.Element;
|
|
102
113
|
//# sourceMappingURL=Chat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/data/chat/Chat.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;AAO9E,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EAET,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,QAAQ,EACR,kBAAkB,EACnB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/data/chat/Chat.tsx"],"names":[],"mappings":"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"}
|
package/dist/data/chat/Chat.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useRef, useMemo, useEffect } from "react";
|
|
3
3
|
import { useChat } from "@ai-sdk/react";
|
|
4
4
|
import { DefaultChatTransport } from "ai";
|
|
@@ -16,6 +16,8 @@ import { toToolRenderRegistry } from "./tool-render/registry.js";
|
|
|
16
16
|
import { ToolRenderRegistryProvider } from "./tool-render/context.js";
|
|
17
17
|
import { ChatRuntimeToolbar } from "./ChatRuntimeToolbar.js";
|
|
18
18
|
import { usageSnapshotFromSession, usageSnapshotFromMetadata } from "./usage-snapshot.js";
|
|
19
|
+
let _draftId = 0;
|
|
20
|
+
const nextDraftId = () => ++_draftId;
|
|
19
21
|
function Chat({
|
|
20
22
|
api = "/api/chat",
|
|
21
23
|
models: modelsProp,
|
|
@@ -36,6 +38,8 @@ function Chat({
|
|
|
36
38
|
onReasoningEffortChange,
|
|
37
39
|
onUsage,
|
|
38
40
|
suggestions,
|
|
41
|
+
proposedPrompts,
|
|
42
|
+
onProposedPromptsConsumed,
|
|
39
43
|
enableAttachments = false,
|
|
40
44
|
attachmentsApi = "/api/attachments",
|
|
41
45
|
attachmentUpload,
|
|
@@ -52,7 +56,7 @@ function Chat({
|
|
|
52
56
|
transport,
|
|
53
57
|
initialMessages,
|
|
54
58
|
initialPrompt,
|
|
55
|
-
|
|
59
|
+
onInitialPromptConsumed,
|
|
56
60
|
placeholder,
|
|
57
61
|
emptyState,
|
|
58
62
|
className
|
|
@@ -70,11 +74,11 @@ function Chat({
|
|
|
70
74
|
);
|
|
71
75
|
const [usage, setUsage] = useState(null);
|
|
72
76
|
const [approvalError, setApprovalError] = useState();
|
|
73
|
-
const [hydratedSessionId, setHydratedSessionId] = useState(
|
|
74
|
-
null
|
|
75
|
-
);
|
|
76
77
|
const lastDefaultModel = useRef(defaultModel);
|
|
77
|
-
const
|
|
78
|
+
const [draft, setDraft] = useState(null);
|
|
79
|
+
const seededInitialPromptId = useRef(null);
|
|
80
|
+
const hadProposals = useRef(false);
|
|
81
|
+
if (proposedPrompts == null ? void 0 : proposedPrompts.length) hadProposals.current = true;
|
|
78
82
|
const activeThreadRef = useRef(threadId);
|
|
79
83
|
const onMessageCountChangeRef = useRef(onMessageCountChange);
|
|
80
84
|
const onSessionHydratedRef = useRef(onSessionHydrated);
|
|
@@ -173,7 +177,6 @@ function Chat({
|
|
|
173
177
|
useEffect(() => {
|
|
174
178
|
if (!sessionsApi || !threadId) return;
|
|
175
179
|
let cancelled = false;
|
|
176
|
-
setHydratedSessionId(null);
|
|
177
180
|
setApprovalError(void 0);
|
|
178
181
|
hydratedUsageRef.current = null;
|
|
179
182
|
setUsage(null);
|
|
@@ -190,7 +193,6 @@ function Chat({
|
|
|
190
193
|
hydratedUsageRef.current = snapshot;
|
|
191
194
|
setUsage(snapshot);
|
|
192
195
|
setMessagesRef.current(session.messages);
|
|
193
|
-
setHydratedSessionId(session.id);
|
|
194
196
|
(_a = onSessionHydratedRef.current) == null ? void 0 : _a.call(onSessionHydratedRef, session);
|
|
195
197
|
}).catch((cause) => {
|
|
196
198
|
if (cancelled) return;
|
|
@@ -210,23 +212,14 @@ function Chat({
|
|
|
210
212
|
);
|
|
211
213
|
}, [messages]);
|
|
212
214
|
useEffect(() => {
|
|
213
|
-
if (!initialPrompt
|
|
214
|
-
if (
|
|
215
|
-
if (sentInitialPromptId.current === initialPrompt.id) return;
|
|
215
|
+
if (!initialPrompt) return;
|
|
216
|
+
if (seededInitialPromptId.current === initialPrompt.id) return;
|
|
216
217
|
const text = initialPrompt.text.trim();
|
|
217
218
|
if (!text) return;
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}, [
|
|
222
|
-
hydratedSessionId,
|
|
223
|
-
initialPrompt,
|
|
224
|
-
onInitialPromptSent,
|
|
225
|
-
sendMessage,
|
|
226
|
-
sessionsApi,
|
|
227
|
-
status,
|
|
228
|
-
threadId
|
|
229
|
-
]);
|
|
219
|
+
seededInitialPromptId.current = initialPrompt.id;
|
|
220
|
+
setDraft({ id: nextDraftId(), text });
|
|
221
|
+
onInitialPromptConsumed == null ? void 0 : onInitialPromptConsumed();
|
|
222
|
+
}, [initialPrompt, onInitialPromptConsumed]);
|
|
230
223
|
const onUsageRef = useRef(onUsage);
|
|
231
224
|
onUsageRef.current = onUsage;
|
|
232
225
|
useEffect(() => {
|
|
@@ -308,16 +301,12 @@ function Chat({
|
|
|
308
301
|
onRuntimeChange: handleRuntimeChange
|
|
309
302
|
}
|
|
310
303
|
);
|
|
311
|
-
const empty = messages.length === 0 &&
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
onSelect: (text) => void sendMessage({ text })
|
|
318
|
-
}
|
|
319
|
-
)
|
|
320
|
-
] }) : void 0;
|
|
304
|
+
const empty = messages.length === 0 && emptyState ? /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center gap-4", children: emptyState }) : void 0;
|
|
305
|
+
const chips = (proposedPrompts == null ? void 0 : proposedPrompts.length) ? proposedPrompts : messages.length === 0 && !hadProposals.current ? suggestions : void 0;
|
|
306
|
+
const pickSuggestion = (text) => {
|
|
307
|
+
setDraft({ id: nextDraftId(), text });
|
|
308
|
+
onProposedPromptsConsumed == null ? void 0 : onProposedPromptsConsumed();
|
|
309
|
+
};
|
|
321
310
|
return /* @__PURE__ */ jsx(ToolRenderRegistryProvider, { value: toolRegistry, children: /* @__PURE__ */ jsxs("div", { className: cn("flex h-full flex-col", className), children: [
|
|
322
311
|
/* @__PURE__ */ jsx(
|
|
323
312
|
Conversation,
|
|
@@ -337,20 +326,27 @@ function Chat({
|
|
|
337
326
|
...renderToolResult ? { renderToolResult } : {}
|
|
338
327
|
}
|
|
339
328
|
),
|
|
340
|
-
/* @__PURE__ */
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
329
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 p-4 pt-0", children: [
|
|
330
|
+
chips && chips.length > 0 && /* @__PURE__ */ jsx(Suggestions, { suggestions: chips, onSelect: pickSuggestion }),
|
|
331
|
+
/* @__PURE__ */ jsx(
|
|
332
|
+
PromptInput,
|
|
333
|
+
{
|
|
334
|
+
status,
|
|
335
|
+
onStop: () => void stop(),
|
|
336
|
+
placeholder,
|
|
337
|
+
enableAttachments,
|
|
338
|
+
attachmentUpload: resolvedAttachmentUpload,
|
|
339
|
+
...(selectedModel == null ? void 0 : selectedModel.inputMediaTypes) ? { acceptedMediaTypes: selectedModel.inputMediaTypes } : {},
|
|
340
|
+
...attachmentLimits ? { attachmentLimits } : {},
|
|
341
|
+
draft,
|
|
342
|
+
toolbar,
|
|
343
|
+
onSubmit: (text, files) => {
|
|
344
|
+
onProposedPromptsConsumed == null ? void 0 : onProposedPromptsConsumed();
|
|
345
|
+
void sendMessage({ text, files });
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
)
|
|
349
|
+
] })
|
|
354
350
|
] }) });
|
|
355
351
|
}
|
|
356
352
|
export {
|