@adea-ai/ui 0.140.0 → 0.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/composites/appearance-editor/appearance-editor.js +2 -2
- package/dist/components/composites/appearance-editor/appearance-editor.js.map +1 -1
- package/dist/components/composites/catalog-browser/catalog-browser-group.js +1 -1
- package/dist/components/composites/chain-of-thought/chain-of-thought.d.ts +56 -0
- package/dist/components/composites/chain-of-thought/chain-of-thought.d.ts.map +1 -0
- package/dist/components/composites/chain-of-thought/chain-of-thought.js +117 -0
- package/dist/components/composites/chain-of-thought/chain-of-thought.js.map +1 -0
- package/dist/components/composites/chain-of-thought/index.d.ts +2 -0
- package/dist/components/composites/chain-of-thought/index.d.ts.map +1 -0
- package/dist/components/composites/chain-of-thought/index.js +2 -0
- package/dist/components/composites/chat/chat.d.ts +67 -0
- package/dist/components/composites/chat/chat.d.ts.map +1 -0
- package/dist/components/composites/chat/chat.js +179 -0
- package/dist/components/composites/chat/chat.js.map +1 -0
- package/dist/components/composites/chat/index.d.ts +2 -0
- package/dist/components/composites/chat/index.d.ts.map +1 -0
- package/dist/components/composites/chat/index.js +2 -0
- package/dist/components/composites/checkpoint/checkpoint-model.d.ts +34 -0
- package/dist/components/composites/checkpoint/checkpoint-model.d.ts.map +1 -0
- package/dist/components/composites/checkpoint/checkpoint-model.js +48 -0
- package/dist/components/composites/checkpoint/checkpoint-model.js.map +1 -0
- package/dist/components/composites/checkpoint/checkpoint.d.ts +48 -0
- package/dist/components/composites/checkpoint/checkpoint.d.ts.map +1 -0
- package/dist/components/composites/checkpoint/checkpoint.js +160 -0
- package/dist/components/composites/checkpoint/checkpoint.js.map +1 -0
- package/dist/components/composites/checkpoint/index.d.ts +3 -0
- package/dist/components/composites/checkpoint/index.d.ts.map +1 -0
- package/dist/components/composites/checkpoint/index.js +3 -0
- package/dist/components/composites/confirmation/confirmation-model.d.ts +45 -0
- package/dist/components/composites/confirmation/confirmation-model.d.ts.map +1 -0
- package/dist/components/composites/confirmation/confirmation-model.js +51 -0
- package/dist/components/composites/confirmation/confirmation-model.js.map +1 -0
- package/dist/components/composites/confirmation/confirmation.d.ts +72 -0
- package/dist/components/composites/confirmation/confirmation.d.ts.map +1 -0
- package/dist/components/composites/confirmation/confirmation.js +300 -0
- package/dist/components/composites/confirmation/confirmation.js.map +1 -0
- package/dist/components/composites/confirmation/index.d.ts +3 -0
- package/dist/components/composites/confirmation/index.d.ts.map +1 -0
- package/dist/components/composites/confirmation/index.js +3 -0
- package/dist/components/composites/context/context-model.d.ts +69 -0
- package/dist/components/composites/context/context-model.d.ts.map +1 -0
- package/dist/components/composites/context/context-model.js +122 -0
- package/dist/components/composites/context/context-model.js.map +1 -0
- package/dist/components/composites/context/context.d.ts +38 -0
- package/dist/components/composites/context/context.d.ts.map +1 -0
- package/dist/components/composites/context/context.js +234 -0
- package/dist/components/composites/context/context.js.map +1 -0
- package/dist/components/composites/context/index.d.ts +3 -0
- package/dist/components/composites/context/index.d.ts.map +1 -0
- package/dist/components/composites/context/index.js +3 -0
- package/dist/components/composites/file-tree/build-file-tree.d.ts +138 -0
- package/dist/components/composites/file-tree/build-file-tree.d.ts.map +1 -0
- package/dist/components/composites/file-tree/build-file-tree.js +325 -0
- package/dist/components/composites/file-tree/build-file-tree.js.map +1 -0
- package/dist/components/composites/file-tree/file-tree.d.ts +74 -0
- package/dist/components/composites/file-tree/file-tree.d.ts.map +1 -0
- package/dist/components/composites/file-tree/file-tree.js +389 -0
- package/dist/components/composites/file-tree/file-tree.js.map +1 -0
- package/dist/components/composites/file-tree/index.d.ts +3 -0
- package/dist/components/composites/file-tree/index.d.ts.map +1 -0
- package/dist/components/composites/file-tree/index.js +3 -0
- package/dist/components/composites/inline-citation/citation.d.ts +37 -0
- package/dist/components/composites/inline-citation/citation.d.ts.map +1 -0
- package/dist/components/composites/inline-citation/citation.js +52 -0
- package/dist/components/composites/inline-citation/citation.js.map +1 -0
- package/dist/components/composites/inline-citation/index.d.ts +3 -0
- package/dist/components/composites/inline-citation/index.d.ts.map +1 -0
- package/dist/components/composites/inline-citation/index.js +3 -0
- package/dist/components/composites/inline-citation/inline-citation.d.ts +64 -0
- package/dist/components/composites/inline-citation/inline-citation.d.ts.map +1 -0
- package/dist/components/composites/inline-citation/inline-citation.js +272 -0
- package/dist/components/composites/inline-citation/inline-citation.js.map +1 -0
- package/dist/components/composites/message-scroller/index.d.ts +3 -0
- package/dist/components/composites/message-scroller/index.d.ts.map +1 -0
- package/dist/components/composites/message-scroller/index.js +3 -0
- package/dist/components/composites/message-scroller/message-scroller.d.ts +55 -0
- package/dist/components/composites/message-scroller/message-scroller.d.ts.map +1 -0
- package/dist/components/composites/message-scroller/message-scroller.js +201 -0
- package/dist/components/composites/message-scroller/message-scroller.js.map +1 -0
- package/dist/components/composites/message-scroller/scroll-anchor.d.ts +66 -0
- package/dist/components/composites/message-scroller/scroll-anchor.d.ts.map +1 -0
- package/dist/components/composites/message-scroller/scroll-anchor.js +122 -0
- package/dist/components/composites/message-scroller/scroll-anchor.js.map +1 -0
- package/dist/components/composites/model-selector/index.d.ts +3 -0
- package/dist/components/composites/model-selector/index.d.ts.map +1 -0
- package/dist/components/composites/model-selector/index.js +3 -0
- package/dist/components/composites/model-selector/model-selector.d.ts +55 -0
- package/dist/components/composites/model-selector/model-selector.d.ts.map +1 -0
- package/dist/components/composites/model-selector/model-selector.js +490 -0
- package/dist/components/composites/model-selector/model-selector.js.map +1 -0
- package/dist/components/composites/model-selector/models.d.ts +51 -0
- package/dist/components/composites/model-selector/models.d.ts.map +1 -0
- package/dist/components/composites/model-selector/models.js +71 -0
- package/dist/components/composites/model-selector/models.js.map +1 -0
- package/dist/components/composites/plan/index.d.ts +2 -0
- package/dist/components/composites/plan/index.d.ts.map +1 -0
- package/dist/components/composites/plan/index.js +2 -0
- package/dist/components/composites/plan/plan.d.ts +61 -0
- package/dist/components/composites/plan/plan.d.ts.map +1 -0
- package/dist/components/composites/plan/plan.js +130 -0
- package/dist/components/composites/plan/plan.js.map +1 -0
- package/dist/components/composites/queue/index.d.ts +2 -0
- package/dist/components/composites/queue/index.d.ts.map +1 -0
- package/dist/components/composites/queue/index.js +2 -0
- package/dist/components/composites/queue/queue.d.ts +77 -0
- package/dist/components/composites/queue/queue.d.ts.map +1 -0
- package/dist/components/composites/queue/queue.js +271 -0
- package/dist/components/composites/queue/queue.js.map +1 -0
- package/dist/components/composites/reasoning/index.d.ts +2 -0
- package/dist/components/composites/reasoning/index.d.ts.map +1 -0
- package/dist/components/composites/reasoning/index.js +2 -0
- package/dist/components/composites/reasoning/reasoning.d.ts +62 -0
- package/dist/components/composites/reasoning/reasoning.d.ts.map +1 -0
- package/dist/components/composites/reasoning/reasoning.js +156 -0
- package/dist/components/composites/reasoning/reasoning.js.map +1 -0
- package/dist/components/composites/sources/index.d.ts +3 -0
- package/dist/components/composites/sources/index.d.ts.map +1 -0
- package/dist/components/composites/sources/index.js +3 -0
- package/dist/components/composites/sources/source.d.ts +46 -0
- package/dist/components/composites/sources/source.d.ts.map +1 -0
- package/dist/components/composites/sources/source.js +74 -0
- package/dist/components/composites/sources/source.js.map +1 -0
- package/dist/components/composites/sources/sources.d.ts +45 -0
- package/dist/components/composites/sources/sources.d.ts.map +1 -0
- package/dist/components/composites/sources/sources.js +175 -0
- package/dist/components/composites/sources/sources.js.map +1 -0
- package/dist/components/composites/stack-trace/index.d.ts +3 -0
- package/dist/components/composites/stack-trace/index.d.ts.map +1 -0
- package/dist/components/composites/stack-trace/index.js +3 -0
- package/dist/components/composites/stack-trace/parse-stack-trace.d.ts +118 -0
- package/dist/components/composites/stack-trace/parse-stack-trace.d.ts.map +1 -0
- package/dist/components/composites/stack-trace/parse-stack-trace.js +376 -0
- package/dist/components/composites/stack-trace/parse-stack-trace.js.map +1 -0
- package/dist/components/composites/stack-trace/stack-trace.d.ts +63 -0
- package/dist/components/composites/stack-trace/stack-trace.d.ts.map +1 -0
- package/dist/components/composites/stack-trace/stack-trace.js +491 -0
- package/dist/components/composites/stack-trace/stack-trace.js.map +1 -0
- package/dist/components/composites/subagent/index.d.ts +2 -0
- package/dist/components/composites/subagent/index.d.ts.map +1 -0
- package/dist/components/composites/subagent/index.js +2 -0
- package/dist/components/composites/subagent/subagent.d.ts +55 -0
- package/dist/components/composites/subagent/subagent.d.ts.map +1 -0
- package/dist/components/composites/subagent/subagent.js +138 -0
- package/dist/components/composites/subagent/subagent.js.map +1 -0
- package/dist/components/composites/suggestion/index.d.ts +2 -0
- package/dist/components/composites/suggestion/index.d.ts.map +1 -0
- package/dist/components/composites/suggestion/index.js +2 -0
- package/dist/components/composites/suggestion/suggestion.d.ts +37 -0
- package/dist/components/composites/suggestion/suggestion.d.ts.map +1 -0
- package/dist/components/composites/suggestion/suggestion.js +100 -0
- package/dist/components/composites/suggestion/suggestion.js.map +1 -0
- package/dist/components/composites/task/index.d.ts +2 -0
- package/dist/components/composites/task/index.d.ts.map +1 -0
- package/dist/components/composites/task/index.js +2 -0
- package/dist/components/composites/task/task.d.ts +96 -0
- package/dist/components/composites/task/task.d.ts.map +1 -0
- package/dist/components/composites/task/task.js +311 -0
- package/dist/components/composites/task/task.js.map +1 -0
- package/dist/components/composites/terminal/ansi.d.ts +101 -0
- package/dist/components/composites/terminal/ansi.d.ts.map +1 -0
- package/dist/components/composites/terminal/ansi.js +544 -0
- package/dist/components/composites/terminal/ansi.js.map +1 -0
- package/dist/components/composites/terminal/index.d.ts +4 -0
- package/dist/components/composites/terminal/index.d.ts.map +1 -0
- package/dist/components/composites/terminal/index.js +4 -0
- package/dist/components/composites/terminal/terminal-model.d.ts +63 -0
- package/dist/components/composites/terminal/terminal-model.d.ts.map +1 -0
- package/dist/components/composites/terminal/terminal-model.js +69 -0
- package/dist/components/composites/terminal/terminal-model.js.map +1 -0
- package/dist/components/composites/terminal/terminal.d.ts +88 -0
- package/dist/components/composites/terminal/terminal.d.ts.map +1 -0
- package/dist/components/composites/terminal/terminal.js +500 -0
- package/dist/components/composites/terminal/terminal.js.map +1 -0
- package/dist/components/composites/test-results/index.d.ts +3 -0
- package/dist/components/composites/test-results/index.d.ts.map +1 -0
- package/dist/components/composites/test-results/index.js +3 -0
- package/dist/components/composites/test-results/test-results-model.d.ts +154 -0
- package/dist/components/composites/test-results/test-results-model.d.ts.map +1 -0
- package/dist/components/composites/test-results/test-results-model.js +252 -0
- package/dist/components/composites/test-results/test-results-model.js.map +1 -0
- package/dist/components/composites/test-results/test-results.d.ts +60 -0
- package/dist/components/composites/test-results/test-results.d.ts.map +1 -0
- package/dist/components/composites/test-results/test-results.js +631 -0
- package/dist/components/composites/test-results/test-results.js.map +1 -0
- package/dist/components/composites/tool/format-tool-value.d.ts +37 -0
- package/dist/components/composites/tool/format-tool-value.d.ts.map +1 -0
- package/dist/components/composites/tool/format-tool-value.js +135 -0
- package/dist/components/composites/tool/format-tool-value.js.map +1 -0
- package/dist/components/composites/tool/index.d.ts +3 -0
- package/dist/components/composites/tool/index.d.ts.map +1 -0
- package/dist/components/composites/tool/index.js +3 -0
- package/dist/components/composites/tool/tool.d.ts +69 -0
- package/dist/components/composites/tool/tool.d.ts.map +1 -0
- package/dist/components/composites/tool/tool.js +214 -0
- package/dist/components/composites/tool/tool.js.map +1 -0
- package/dist/components/composites/update-dialog/update-dialog.js +1 -1
- package/dist/components/conversation/conversation-surface.d.ts +7 -0
- package/dist/components/conversation/conversation-surface.d.ts.map +1 -1
- package/dist/components/conversation/conversation-surface.js +2 -0
- package/dist/components/conversation/conversation-surface.js.map +1 -1
- package/dist/components/conversation/scroll-follow-core.d.ts +24 -0
- package/dist/components/conversation/scroll-follow-core.d.ts.map +1 -1
- package/dist/components/conversation/scroll-follow-core.js +23 -1
- package/dist/components/conversation/scroll-follow-core.js.map +1 -1
- package/dist/components/conversation/scroll-follow.d.ts +3 -0
- package/dist/components/conversation/scroll-follow.d.ts.map +1 -1
- package/dist/components/conversation/scroll-follow.js +80 -1
- package/dist/components/conversation/scroll-follow.js.map +1 -1
- package/dist/components/ui/attachment/attachment.d.ts +58 -0
- package/dist/components/ui/attachment/attachment.d.ts.map +1 -0
- package/dist/components/ui/attachment/attachment.js +279 -0
- package/dist/components/ui/attachment/attachment.js.map +1 -0
- package/dist/components/ui/attachment/index.d.ts +2 -0
- package/dist/components/ui/attachment/index.d.ts.map +1 -0
- package/dist/components/ui/attachment/index.js +2 -0
- package/dist/components/ui/badge/badge.d.ts +1 -1
- package/dist/components/ui/bubble/bubble.d.ts +33 -0
- package/dist/components/ui/bubble/bubble.d.ts.map +1 -0
- package/dist/components/ui/bubble/bubble.js +95 -0
- package/dist/components/ui/bubble/bubble.js.map +1 -0
- package/dist/components/ui/bubble/index.d.ts +2 -0
- package/dist/components/ui/bubble/index.d.ts.map +1 -0
- package/dist/components/ui/bubble/index.js +2 -0
- package/dist/components/ui/button/button.d.ts +1 -1
- package/dist/components/ui/code-block/code-block.d.ts +56 -3
- package/dist/components/ui/code-block/code-block.d.ts.map +1 -1
- package/dist/components/ui/code-block/code-block.js +231 -50
- package/dist/components/ui/code-block/code-block.js.map +1 -1
- package/dist/components/ui/code-block/index.d.ts +1 -1
- package/dist/components/ui/code-block/index.d.ts.map +1 -1
- package/dist/components/ui/code-block/index.js +2 -2
- package/dist/components/ui/field/number-field.d.ts +21 -4
- package/dist/components/ui/field/number-field.d.ts.map +1 -1
- package/dist/components/ui/field/number-field.js +22 -11
- package/dist/components/ui/field/number-field.js.map +1 -1
- package/dist/components/ui/marker/index.d.ts +2 -0
- package/dist/components/ui/marker/index.d.ts.map +1 -0
- package/dist/components/ui/marker/index.js +2 -0
- package/dist/components/ui/marker/marker.d.ts +35 -0
- package/dist/components/ui/marker/marker.d.ts.map +1 -0
- package/dist/components/ui/marker/marker.js +123 -0
- package/dist/components/ui/marker/marker.js.map +1 -0
- package/dist/components/ui/message/cite-ranges.d.ts +42 -0
- package/dist/components/ui/message/cite-ranges.d.ts.map +1 -0
- package/dist/components/ui/message/cite-ranges.js +105 -0
- package/dist/components/ui/message/cite-ranges.js.map +1 -0
- package/dist/components/ui/message/index.d.ts +4 -0
- package/dist/components/ui/message/index.d.ts.map +1 -0
- package/dist/components/ui/message/index.js +4 -0
- package/dist/components/ui/message/message.d.ts +95 -0
- package/dist/components/ui/message/message.d.ts.map +1 -0
- package/dist/components/ui/message/message.js +443 -0
- package/dist/components/ui/message/message.js.map +1 -0
- package/dist/components/ui/message/parse-message-text.d.ts +93 -0
- package/dist/components/ui/message/parse-message-text.d.ts.map +1 -0
- package/dist/components/ui/message/parse-message-text.js +365 -0
- package/dist/components/ui/message/parse-message-text.js.map +1 -0
- package/dist/components/ui/questionnaire/index.d.ts +2 -0
- package/dist/components/ui/questionnaire/index.d.ts.map +1 -0
- package/dist/components/ui/questionnaire/index.js +2 -0
- package/dist/components/ui/questionnaire/questionnaire.d.ts +83 -0
- package/dist/components/ui/questionnaire/questionnaire.d.ts.map +1 -0
- package/dist/components/ui/questionnaire/questionnaire.js +470 -0
- package/dist/components/ui/questionnaire/questionnaire.js.map +1 -0
- package/dist/components/ui/status-chip/status-chip.d.ts +1 -1
- package/dist/components/ui/switch/switch.js +11 -11
- package/dist/components/ui/switch/switch.js.map +1 -1
- package/dist/components/ui/trace/index.d.ts +2 -0
- package/dist/components/ui/trace/index.d.ts.map +1 -0
- package/dist/components/ui/trace/index.js +2 -0
- package/dist/components/ui/trace/trace.d.ts +72 -0
- package/dist/components/ui/trace/trace.d.ts.map +1 -0
- package/dist/components/ui/trace/trace.js +340 -0
- package/dist/components/ui/trace/trace.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -5
- package/dist/r/attachment.json +25 -0
- package/dist/r/bubble.json +22 -0
- package/dist/r/chain-of-thought.json +26 -0
- package/dist/r/chat.json +24 -0
- package/dist/r/checkpoint.json +35 -0
- package/dist/r/confirmation.json +34 -0
- package/dist/r/context.json +33 -0
- package/dist/r/file-tree.json +32 -0
- package/dist/r/inline-citation.json +35 -0
- package/dist/r/marker.json +22 -0
- package/dist/r/message-scroller.json +31 -0
- package/dist/r/message.json +33 -0
- package/dist/r/model-selector.json +34 -0
- package/dist/r/plan.json +26 -0
- package/dist/r/questionnaire.json +28 -0
- package/dist/r/queue.json +26 -0
- package/dist/r/reasoning.json +26 -0
- package/dist/r/registry.json +811 -52
- package/dist/r/sources.json +32 -0
- package/dist/r/src/components/composites/chain-of-thought/chain-of-thought.tsx +141 -0
- package/dist/r/src/components/composites/chain-of-thought/index.ts +11 -0
- package/dist/r/src/components/composites/chat/chat.tsx +190 -0
- package/dist/r/src/components/composites/chat/index.ts +11 -0
- package/dist/r/src/components/composites/checkpoint/checkpoint-model.ts +71 -0
- package/dist/r/src/components/composites/checkpoint/checkpoint.tsx +214 -0
- package/dist/r/src/components/composites/checkpoint/index.ts +8 -0
- package/dist/r/src/components/composites/confirmation/confirmation-model.ts +83 -0
- package/dist/r/src/components/composites/confirmation/confirmation.tsx +311 -0
- package/dist/r/src/components/composites/confirmation/index.ts +9 -0
- package/dist/r/src/components/composites/context/context-model.ts +168 -0
- package/dist/r/src/components/composites/context/context.tsx +187 -0
- package/dist/r/src/components/composites/context/index.ts +18 -0
- package/dist/r/src/components/composites/file-tree/build-file-tree.ts +456 -0
- package/dist/r/src/components/composites/file-tree/file-tree.tsx +405 -0
- package/dist/r/src/components/composites/file-tree/index.ts +25 -0
- package/dist/r/src/components/composites/inline-citation/citation.ts +78 -0
- package/dist/r/src/components/composites/inline-citation/index.ts +9 -0
- package/dist/r/src/components/composites/inline-citation/inline-citation.tsx +285 -0
- package/dist/r/src/components/composites/message-scroller/index.ts +2 -0
- package/dist/r/src/components/composites/message-scroller/message-scroller.tsx +301 -0
- package/dist/r/src/components/composites/message-scroller/scroll-anchor.ts +170 -0
- package/dist/r/src/components/composites/model-selector/index.ts +14 -0
- package/dist/r/src/components/composites/model-selector/model-selector.tsx +420 -0
- package/dist/r/src/components/composites/model-selector/models.ts +103 -0
- package/dist/r/src/components/composites/plan/index.ts +1 -0
- package/dist/r/src/components/composites/plan/plan.tsx +155 -0
- package/dist/r/src/components/composites/queue/index.ts +10 -0
- package/dist/r/src/components/composites/queue/queue.tsx +264 -0
- package/dist/r/src/components/composites/reasoning/index.ts +1 -0
- package/dist/r/src/components/composites/reasoning/reasoning.tsx +176 -0
- package/dist/r/src/components/composites/sources/index.ts +11 -0
- package/dist/r/src/components/composites/sources/source.ts +116 -0
- package/dist/r/src/components/composites/sources/sources.tsx +163 -0
- package/dist/r/src/components/composites/stack-trace/index.ts +19 -0
- package/dist/r/src/components/composites/stack-trace/parse-stack-trace.ts +507 -0
- package/dist/r/src/components/composites/stack-trace/stack-trace.tsx +395 -0
- package/dist/r/src/components/composites/subagent/index.ts +1 -0
- package/dist/r/src/components/composites/subagent/subagent.tsx +159 -0
- package/dist/r/src/components/composites/suggestion/index.ts +1 -0
- package/dist/r/src/components/composites/suggestion/suggestion.tsx +140 -0
- package/dist/r/src/components/composites/task/index.ts +14 -0
- package/dist/r/src/components/composites/task/task.tsx +317 -0
- package/dist/r/src/components/composites/terminal/ansi.ts +674 -0
- package/dist/r/src/components/composites/terminal/index.ts +20 -0
- package/dist/r/src/components/composites/terminal/terminal-model.ts +111 -0
- package/dist/r/src/components/composites/terminal/terminal.tsx +574 -0
- package/dist/r/src/components/composites/test-results/index.ts +20 -0
- package/dist/r/src/components/composites/test-results/test-results-model.ts +368 -0
- package/dist/r/src/components/composites/test-results/test-results.tsx +586 -0
- package/dist/r/src/components/composites/tool/format-tool-value.ts +221 -0
- package/dist/r/src/components/composites/tool/index.ts +2 -0
- package/dist/r/src/components/composites/tool/tool.tsx +228 -0
- package/dist/r/src/components/conversation/conversation-surface.tsx +9 -0
- package/dist/r/src/components/conversation/scroll-follow-core.ts +31 -0
- package/dist/r/src/components/conversation/scroll-follow.ts +92 -0
- package/dist/r/src/components/ui/attachment/attachment.tsx +282 -0
- package/dist/r/src/components/ui/attachment/index.ts +10 -0
- package/dist/r/src/components/ui/bubble/bubble.tsx +86 -0
- package/dist/r/src/components/ui/bubble/index.ts +1 -0
- package/dist/r/src/components/ui/code-block/code-block.tsx +256 -26
- package/dist/r/src/components/ui/code-block/index.ts +9 -1
- package/dist/r/src/components/ui/field/number-field.tsx +51 -14
- package/dist/r/src/components/ui/marker/index.ts +1 -0
- package/dist/r/src/components/ui/marker/marker.tsx +90 -0
- package/dist/r/src/components/ui/message/cite-ranges.ts +144 -0
- package/dist/r/src/components/ui/message/index.ts +23 -0
- package/dist/r/src/components/ui/message/message.tsx +434 -0
- package/dist/r/src/components/ui/message/parse-message-text.ts +450 -0
- package/dist/r/src/components/ui/questionnaire/index.ts +10 -0
- package/dist/r/src/components/ui/questionnaire/questionnaire.tsx +446 -0
- package/dist/r/src/components/ui/trace/index.ts +9 -0
- package/dist/r/src/components/ui/trace/trace.tsx +334 -0
- package/dist/r/src/styles/base.css +34 -0
- package/dist/r/stack-trace.json +32 -0
- package/dist/r/subagent.json +27 -0
- package/dist/r/suggestion.json +24 -0
- package/dist/r/task.json +28 -0
- package/dist/r/terminal.json +35 -0
- package/dist/r/test-results.json +33 -0
- package/dist/r/tool.json +31 -0
- package/dist/r/trace.json +25 -0
- package/package.json +6 -3
- package/registry.json +811 -52
- package/src/components/composites/chain-of-thought/chain-of-thought.tsx +141 -0
- package/src/components/composites/chain-of-thought/index.ts +11 -0
- package/src/components/composites/chat/chat.tsx +190 -0
- package/src/components/composites/chat/index.ts +11 -0
- package/src/components/composites/checkpoint/checkpoint-model.ts +71 -0
- package/src/components/composites/checkpoint/checkpoint.tsx +214 -0
- package/src/components/composites/checkpoint/index.ts +8 -0
- package/src/components/composites/confirmation/confirmation-model.ts +83 -0
- package/src/components/composites/confirmation/confirmation.tsx +311 -0
- package/src/components/composites/confirmation/index.ts +9 -0
- package/src/components/composites/context/context-model.ts +168 -0
- package/src/components/composites/context/context.tsx +187 -0
- package/src/components/composites/context/index.ts +18 -0
- package/src/components/composites/file-tree/build-file-tree.ts +456 -0
- package/src/components/composites/file-tree/file-tree.tsx +405 -0
- package/src/components/composites/file-tree/index.ts +25 -0
- package/src/components/composites/inline-citation/citation.ts +78 -0
- package/src/components/composites/inline-citation/index.ts +9 -0
- package/src/components/composites/inline-citation/inline-citation.tsx +285 -0
- package/src/components/composites/message-scroller/index.ts +2 -0
- package/src/components/composites/message-scroller/message-scroller.tsx +301 -0
- package/src/components/composites/message-scroller/scroll-anchor.ts +170 -0
- package/src/components/composites/model-selector/index.ts +14 -0
- package/src/components/composites/model-selector/model-selector.tsx +420 -0
- package/src/components/composites/model-selector/models.ts +103 -0
- package/src/components/composites/plan/index.ts +1 -0
- package/src/components/composites/plan/plan.tsx +155 -0
- package/src/components/composites/queue/index.ts +10 -0
- package/src/components/composites/queue/queue.tsx +264 -0
- package/src/components/composites/reasoning/index.ts +1 -0
- package/src/components/composites/reasoning/reasoning.tsx +176 -0
- package/src/components/composites/sources/index.ts +11 -0
- package/src/components/composites/sources/source.ts +116 -0
- package/src/components/composites/sources/sources.tsx +163 -0
- package/src/components/composites/stack-trace/index.ts +19 -0
- package/src/components/composites/stack-trace/parse-stack-trace.ts +507 -0
- package/src/components/composites/stack-trace/stack-trace.tsx +395 -0
- package/src/components/composites/subagent/index.ts +1 -0
- package/src/components/composites/subagent/subagent.tsx +159 -0
- package/src/components/composites/suggestion/index.ts +1 -0
- package/src/components/composites/suggestion/suggestion.tsx +140 -0
- package/src/components/composites/task/index.ts +14 -0
- package/src/components/composites/task/task.tsx +317 -0
- package/src/components/composites/terminal/ansi.ts +674 -0
- package/src/components/composites/terminal/index.ts +20 -0
- package/src/components/composites/terminal/terminal-model.ts +111 -0
- package/src/components/composites/terminal/terminal.tsx +574 -0
- package/src/components/composites/test-results/index.ts +20 -0
- package/src/components/composites/test-results/test-results-model.ts +368 -0
- package/src/components/composites/test-results/test-results.tsx +586 -0
- package/src/components/composites/tool/format-tool-value.ts +221 -0
- package/src/components/composites/tool/index.ts +2 -0
- package/src/components/composites/tool/tool.tsx +228 -0
- package/src/components/conversation/conversation-surface.tsx +9 -0
- package/src/components/conversation/scroll-follow-core.ts +31 -0
- package/src/components/conversation/scroll-follow.ts +92 -0
- package/src/components/ui/attachment/attachment.tsx +282 -0
- package/src/components/ui/attachment/index.ts +10 -0
- package/src/components/ui/bubble/bubble.tsx +86 -0
- package/src/components/ui/bubble/index.ts +1 -0
- package/src/components/ui/code-block/code-block.tsx +256 -26
- package/src/components/ui/code-block/index.ts +9 -1
- package/src/components/ui/field/number-field.tsx +51 -14
- package/src/components/ui/marker/index.ts +1 -0
- package/src/components/ui/marker/marker.tsx +90 -0
- package/src/components/ui/message/cite-ranges.ts +144 -0
- package/src/components/ui/message/index.ts +23 -0
- package/src/components/ui/message/message.tsx +434 -0
- package/src/components/ui/message/parse-message-text.ts +450 -0
- package/src/components/ui/questionnaire/index.ts +10 -0
- package/src/components/ui/questionnaire/questionnaire.tsx +446 -0
- package/src/components/ui/trace/index.ts +9 -0
- package/src/components/ui/trace/trace.tsx +334 -0
- package/src/index.ts +26 -0
- package/src/styles/base.css +34 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","names":[],"sources":["../../../../src/components/composites/model-selector/models.ts"],"sourcesContent":["import { boundText } from '../sources/source'\n\n/**\n * An effort level a model supports: just its id (`'high'`), or an id with the\n * words to show. A bare id is labelled by capitalising it, which is right for\n * `low` / `medium` / `high` and wrong for anything else — pass a label then.\n */\nexport type ModelEffort = string | Readonly<{ id: string; label?: string; description?: string }>\n\nexport type EffortOption = Readonly<{ id: string; label: string; description?: string }>\n\n/**\n * A model the person may pick. `efforts` lists the effort levels *this* model\n * advertises; a model without it has no effort control, because showing one would\n * claim the model can be told how hard to think. `disabledReason` is the host's\n * authority speaking (plan, quota, region): the model stays in the list, disabled,\n * with the reason beside it.\n */\nexport type ModelOption = Readonly<{\n /** Unique within the list. */\n id: string\n label: string\n provider: string\n description?: string\n disabledReason?: string\n efforts?: readonly ModelEffort[]\n}>\n\nconst LABEL_LIMIT = 60\nconst DESCRIPTION_LIMIT = 160\n\nfunction titleCase(id: string): string {\n const clean = boundText(id, LABEL_LIMIT)\n return clean.charAt(0).toUpperCase() + clean.slice(1)\n}\n\n/** Efforts as options: blanks dropped, duplicate ids kept once (first wins), text bounded. */\nexport function normalizeEfforts(efforts: readonly ModelEffort[] | undefined): EffortOption[] {\n const seen = new Set<string>()\n const out: EffortOption[] = []\n for (const effort of efforts ?? []) {\n const id = typeof effort === 'string' ? effort : effort.id\n if (id.trim() === '' || seen.has(id)) continue\n seen.add(id)\n if (typeof effort === 'string') {\n out.push({ id, label: titleCase(id) })\n } else {\n out.push({\n id,\n label: (effort.label ? boundText(effort.label, LABEL_LIMIT) : '') || titleCase(id),\n description: effort.description\n ? boundText(effort.description, DESCRIPTION_LIMIT)\n : undefined,\n })\n }\n }\n return out\n}\n\nexport function findModel(\n models: readonly ModelOption[],\n id: string | undefined\n): ModelOption | undefined {\n return id === undefined ? undefined : models.find((model) => model.id === id)\n}\n\n/** The selected effort, only if the selected model actually offers it. */\nexport function resolveEffort(\n model: ModelOption | undefined,\n effort: string | undefined\n): EffortOption | undefined {\n if (!model || effort === undefined) return undefined\n return normalizeEfforts(model.efforts).find((option) => option.id === effort)\n}\n\nexport type ModelGroup = Readonly<{ provider: string; models: readonly ModelOption[] }>\n\n/** Group by provider, in the order providers first appear, so the host controls ranking. */\nexport function groupModels(models: readonly ModelOption[]): ModelGroup[] {\n const groups = new Map<string, ModelOption[]>()\n for (const model of models) {\n const provider = boundText(model.provider, LABEL_LIMIT) || 'Other'\n const bucket = groups.get(provider)\n if (bucket) bucket.push(model)\n else groups.set(provider, [model])\n }\n return [...groups].map(([provider, list]) => ({ provider, models: list }))\n}\n\n/** Past this many models the list gets a search box; a short list is quicker to read. */\nexport const MODEL_SEARCH_THRESHOLD = 7\n\nexport function needsSearch(count: number, threshold = MODEL_SEARCH_THRESHOLD): boolean {\n return count > threshold\n}\n\n/**\n * What the search matches against: everything a person might type to find a model\n * — its name, its provider, its id, and its description.\n */\nexport function modelSearchValue(model: ModelOption): string {\n return [model.label, model.provider, model.id, model.description ?? ''].join(' ')\n}\n"],"mappings":";;AA4BA,IAAM,cAAc;AACpB,IAAM,oBAAoB;AAE1B,SAAS,UAAU,IAAoB;CACrC,MAAM,QAAQ,UAAU,IAAI,WAAW;CACvC,OAAO,MAAM,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,MAAM,MAAM,CAAC;AACtD;;AAGA,SAAgB,iBAAiB,SAA6D;CAC5F,MAAM,uBAAO,IAAI,IAAY;CAC7B,MAAM,MAAsB,CAAC;CAC7B,KAAK,MAAM,UAAU,WAAW,CAAC,GAAG;EAClC,MAAM,KAAK,OAAO,WAAW,WAAW,SAAS,OAAO;EACxD,IAAI,GAAG,KAAK,MAAM,MAAM,KAAK,IAAI,EAAE,GAAG;EACtC,KAAK,IAAI,EAAE;EACX,IAAI,OAAO,WAAW,UACpB,IAAI,KAAK;GAAE;GAAI,OAAO,UAAU,EAAE;EAAE,CAAC;OAErC,IAAI,KAAK;GACP;GACA,QAAQ,OAAO,QAAQ,UAAU,OAAO,OAAO,WAAW,IAAI,OAAO,UAAU,EAAE;GACjF,aAAa,OAAO,cAChB,UAAU,OAAO,aAAa,iBAAiB,IAC/C,KAAA;EACN,CAAC;CAEL;CACA,OAAO;AACT;AAEA,SAAgB,UACd,QACA,IACyB;CACzB,OAAO,OAAO,KAAA,IAAY,KAAA,IAAY,OAAO,MAAM,UAAU,MAAM,OAAO,EAAE;AAC9E;;AAGA,SAAgB,cACd,OACA,QAC0B;CAC1B,IAAI,CAAC,SAAS,WAAW,KAAA,GAAW,OAAO,KAAA;CAC3C,OAAO,iBAAiB,MAAM,OAAO,CAAC,CAAC,MAAM,WAAW,OAAO,OAAO,MAAM;AAC9E;;AAKA,SAAgB,YAAY,QAA8C;CACxE,MAAM,yBAAS,IAAI,IAA2B;CAC9C,KAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,WAAW,UAAU,MAAM,UAAU,WAAW,KAAK;EAC3D,MAAM,SAAS,OAAO,IAAI,QAAQ;EAClC,IAAI,QAAQ,OAAO,KAAK,KAAK;OACxB,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;CACnC;CACA,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW;EAAE;EAAU,QAAQ;CAAK,EAAE;AAC3E;;AAGA,IAAa,yBAAyB;AAEtC,SAAgB,YAAY,OAAe,YAAA,GAA6C;CACtF,OAAO,QAAQ;AACjB;;;;;AAMA,SAAgB,iBAAiB,OAA4B;CAC3D,OAAO;EAAC,MAAM;EAAO,MAAM;EAAU,MAAM;EAAI,MAAM,eAAe;CAAE,CAAC,CAAC,KAAK,GAAG;AAClF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/plan/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type JSX } from 'solid-js';
|
|
2
|
+
import { type TraceLineProps } from '../../ui/trace';
|
|
3
|
+
import { type TaskItemStatus } from '../task';
|
|
4
|
+
/**
|
|
5
|
+
* Plan.
|
|
6
|
+
*
|
|
7
|
+
* What the agent intends to do, as a `TraceLine` that opens onto the steps: a
|
|
8
|
+
* title, an optional description, the steps with their status, how far along
|
|
9
|
+
* they are, and — when the host supplies them — the actions the reader can take
|
|
10
|
+
* (approve, edit, run). Reach for `Task` when the list is a unit of work that is
|
|
11
|
+
* already under way and not a proposal, for `Queue` when it is the agent's
|
|
12
|
+
* running todo list, and for `ChainOfThought` when the steps describe how an
|
|
13
|
+
* answer was reached rather than what will be done.
|
|
14
|
+
*
|
|
15
|
+
* ## It opens by default
|
|
16
|
+
*
|
|
17
|
+
* Unlike a tool call, the plan is the thing being decided or followed, so it
|
|
18
|
+
* starts open (`defaultOpen={false}` folds it). A plan with no steps, no
|
|
19
|
+
* description and no actions is a plain line.
|
|
20
|
+
*
|
|
21
|
+
* ## Progress is derived, in words
|
|
22
|
+
*
|
|
23
|
+
* "2 of 5 steps done" and the bar come from the steps' own `status` and appear
|
|
24
|
+
* only when at least one step has one; a step with no status counts toward the
|
|
25
|
+
* total and not toward "done" (the host did not say it was finished). The bar is
|
|
26
|
+
* the shared `Progress`, which publishes the same phrase to assistive
|
|
27
|
+
* technology, so the number is never only a length.
|
|
28
|
+
*
|
|
29
|
+
* ## Streaming
|
|
30
|
+
*
|
|
31
|
+
* While `streaming` the plan is still being written, so its length is not known
|
|
32
|
+
* and no progress is claimed: the title shimmers, the line says "Drafting", and
|
|
33
|
+
* a caret trails the last step. Finished steps keep their DOM while the last one
|
|
34
|
+
* grows (rows are kept by position).
|
|
35
|
+
*
|
|
36
|
+
* ## The host owns authority
|
|
37
|
+
*
|
|
38
|
+
* `actions` is a slot. The plan neither enables nor disables what is in it, and
|
|
39
|
+
* with no `actions` there are no controls — a plan the reader may not approve
|
|
40
|
+
* simply has no Approve button.
|
|
41
|
+
*
|
|
42
|
+
* A `Plan` is a line: place it inside a `Trace`.
|
|
43
|
+
*/
|
|
44
|
+
export type PlanStepStatus = TaskItemStatus;
|
|
45
|
+
export type PlanStep = Readonly<{
|
|
46
|
+
id?: string;
|
|
47
|
+
label: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
status?: PlanStepStatus;
|
|
50
|
+
}>;
|
|
51
|
+
export type PlanProps = Omit<TraceLineProps, 'description' | 'href' | 'onSelect' | 'selectHaspopup' | 'children' | 'status' | 'statusLabel'> & {
|
|
52
|
+
steps: readonly PlanStep[];
|
|
53
|
+
/** What the plan is for, above the steps. */
|
|
54
|
+
description?: JSX.Element;
|
|
55
|
+
/** True while the plan is still being generated. */
|
|
56
|
+
streaming?: boolean;
|
|
57
|
+
/** Controls for the reader: approve, edit, run. Absent means there are none. */
|
|
58
|
+
actions?: JSX.Element;
|
|
59
|
+
};
|
|
60
|
+
export declare function Plan(props: PlanProps): JSX.Element;
|
|
61
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/plan/plan.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AAExE,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAA;AAKhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB,CAAC,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,IAAI,CAC1B,cAAc,EACd,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAC/F,GAAG;IACF,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC1B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACzB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,eA6EpC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Progress } from "../../ui/progress/progress.js";
|
|
2
|
+
import { TraceDetail, TraceLine } from "../../ui/trace/trace.js";
|
|
3
|
+
import { TaskItemList, TaskItemRow, taskProgress, taskProgressLabel } from "../task/task.js";
|
|
4
|
+
import { createComponent, insert, memo, mergeProps, template } from "solid-js/web";
|
|
5
|
+
import { ListTodo } from "lucide-solid";
|
|
6
|
+
import { Index, Show, createMemo, splitProps } from "solid-js";
|
|
7
|
+
//#region src/components/composites/plan/plan.tsx
|
|
8
|
+
var _tmpl$ = /*#__PURE__*/ template(`<div class="text-sm text-muted-foreground">`);
|
|
9
|
+
var _tmpl$2 = /*#__PURE__*/ template(`<span class=streaming-caret aria-hidden=true>`);
|
|
10
|
+
var _tmpl$3 = /*#__PURE__*/ template(`<div data-slot=plan-actions class="flex flex-wrap items-center gap-2 pt-1">`);
|
|
11
|
+
var deferred = (render) => render;
|
|
12
|
+
function Plan(props) {
|
|
13
|
+
const [local, rest] = splitProps(props, [
|
|
14
|
+
"steps",
|
|
15
|
+
"description",
|
|
16
|
+
"streaming",
|
|
17
|
+
"actions",
|
|
18
|
+
"icon",
|
|
19
|
+
"meta",
|
|
20
|
+
"defaultOpen"
|
|
21
|
+
]);
|
|
22
|
+
const progress = createMemo(() => local.streaming ? void 0 : taskProgress(local.steps));
|
|
23
|
+
const meta = () => {
|
|
24
|
+
if (local.meta !== void 0) return local.meta;
|
|
25
|
+
if (local.streaming) return "Drafting";
|
|
26
|
+
const value = progress();
|
|
27
|
+
return value ? taskProgressLabel(value) : void 0;
|
|
28
|
+
};
|
|
29
|
+
const hasDetail = () => local.steps.length > 0 || local.description !== void 0 || local.actions !== void 0 || local.streaming === true;
|
|
30
|
+
const detail = () => createComponent(TraceDetail, {
|
|
31
|
+
"class": "flex flex-col gap-2",
|
|
32
|
+
get children() {
|
|
33
|
+
return [
|
|
34
|
+
createComponent(Show, {
|
|
35
|
+
get when() {
|
|
36
|
+
return local.description;
|
|
37
|
+
},
|
|
38
|
+
get children() {
|
|
39
|
+
var _el$ = _tmpl$();
|
|
40
|
+
insert(_el$, () => local.description);
|
|
41
|
+
return _el$;
|
|
42
|
+
}
|
|
43
|
+
}),
|
|
44
|
+
createComponent(Show, {
|
|
45
|
+
get when() {
|
|
46
|
+
return progress();
|
|
47
|
+
},
|
|
48
|
+
children: (value) => createComponent(Progress, {
|
|
49
|
+
get value() {
|
|
50
|
+
return value().done;
|
|
51
|
+
},
|
|
52
|
+
minValue: 0,
|
|
53
|
+
get maxValue() {
|
|
54
|
+
return Math.max(1, value().total);
|
|
55
|
+
},
|
|
56
|
+
"aria-label": "Plan progress",
|
|
57
|
+
getValueLabel: ({ value: done, max }) => `${done} of ${max} ${max === 1 ? "step" : "steps"} done`
|
|
58
|
+
})
|
|
59
|
+
}),
|
|
60
|
+
createComponent(Show, {
|
|
61
|
+
get when() {
|
|
62
|
+
return local.steps.length > 0;
|
|
63
|
+
},
|
|
64
|
+
get children() {
|
|
65
|
+
return createComponent(TaskItemList, {
|
|
66
|
+
label: "Plan steps",
|
|
67
|
+
get children() {
|
|
68
|
+
return createComponent(Index, {
|
|
69
|
+
get each() {
|
|
70
|
+
return local.steps;
|
|
71
|
+
},
|
|
72
|
+
children: (step) => createComponent(TaskItemRow, {
|
|
73
|
+
get text() {
|
|
74
|
+
return step().label;
|
|
75
|
+
},
|
|
76
|
+
get description() {
|
|
77
|
+
return step().description;
|
|
78
|
+
},
|
|
79
|
+
get status() {
|
|
80
|
+
return step().status;
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}),
|
|
88
|
+
createComponent(Show, {
|
|
89
|
+
get when() {
|
|
90
|
+
return local.streaming;
|
|
91
|
+
},
|
|
92
|
+
get children() {
|
|
93
|
+
return _tmpl$2();
|
|
94
|
+
}
|
|
95
|
+
}),
|
|
96
|
+
createComponent(Show, {
|
|
97
|
+
get when() {
|
|
98
|
+
return local.actions;
|
|
99
|
+
},
|
|
100
|
+
get children() {
|
|
101
|
+
var _el$3 = _tmpl$3();
|
|
102
|
+
insert(_el$3, () => local.actions);
|
|
103
|
+
return _el$3;
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return createComponent(TraceLine, mergeProps({
|
|
110
|
+
get icon() {
|
|
111
|
+
return local.icon ?? createComponent(ListTodo, {});
|
|
112
|
+
},
|
|
113
|
+
get status() {
|
|
114
|
+
return local.streaming ? "running" : void 0;
|
|
115
|
+
},
|
|
116
|
+
statusLabel: "Generating",
|
|
117
|
+
get meta() {
|
|
118
|
+
return meta();
|
|
119
|
+
},
|
|
120
|
+
get defaultOpen() {
|
|
121
|
+
return local.defaultOpen ?? true;
|
|
122
|
+
}
|
|
123
|
+
}, rest, { get children() {
|
|
124
|
+
return memo(() => !!hasDetail())() ? deferred(detail) : void 0;
|
|
125
|
+
} }));
|
|
126
|
+
}
|
|
127
|
+
//#endregion
|
|
128
|
+
export { Plan };
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","names":["ListTodo","createMemo","Index","Show","splitProps","JSX","Progress","TraceDetail","TraceLine","TraceLineProps","TaskItemList","TaskItemRow","taskProgress","taskProgressLabel","TaskItemStatus","deferred","render","Element","PlanStepStatus","PlanStep","Readonly","id","label","description","status","PlanProps","Omit","steps","streaming","actions","Plan","props","local","rest","progress","undefined","meta","value","hasDetail","length","detail","_$createComponent","children","when","_el$","_tmpl$","_$insert","done","minValue","maxValue","Math","max","total","getValueLabel","each","step","text","_tmpl$2","_el$3","_tmpl$3","_$mergeProps","icon","statusLabel","defaultOpen","_$memo","_$createComponent","_$mergeProps","_$memo"],"sources":["../../../../src/components/composites/plan/plan.tsx"],"sourcesContent":["import { ListTodo } from 'lucide-solid'\nimport { createMemo, Index, Show, splitProps, type JSX } from 'solid-js'\nimport { Progress } from '../../ui/progress'\nimport { TraceDetail, TraceLine, type TraceLineProps } from '../../ui/trace'\nimport {\n TaskItemList,\n TaskItemRow,\n taskProgress,\n taskProgressLabel,\n type TaskItemStatus,\n} from '../task'\n\n// A function child runs once, when the content mounts (see `deferred` in `tool.tsx`).\nconst deferred = (render: () => JSX.Element) => render as unknown as JSX.Element\n\n/**\n * Plan.\n *\n * What the agent intends to do, as a `TraceLine` that opens onto the steps: a\n * title, an optional description, the steps with their status, how far along\n * they are, and — when the host supplies them — the actions the reader can take\n * (approve, edit, run). Reach for `Task` when the list is a unit of work that is\n * already under way and not a proposal, for `Queue` when it is the agent's\n * running todo list, and for `ChainOfThought` when the steps describe how an\n * answer was reached rather than what will be done.\n *\n * ## It opens by default\n *\n * Unlike a tool call, the plan is the thing being decided or followed, so it\n * starts open (`defaultOpen={false}` folds it). A plan with no steps, no\n * description and no actions is a plain line.\n *\n * ## Progress is derived, in words\n *\n * \"2 of 5 steps done\" and the bar come from the steps' own `status` and appear\n * only when at least one step has one; a step with no status counts toward the\n * total and not toward \"done\" (the host did not say it was finished). The bar is\n * the shared `Progress`, which publishes the same phrase to assistive\n * technology, so the number is never only a length.\n *\n * ## Streaming\n *\n * While `streaming` the plan is still being written, so its length is not known\n * and no progress is claimed: the title shimmers, the line says \"Drafting\", and\n * a caret trails the last step. Finished steps keep their DOM while the last one\n * grows (rows are kept by position).\n *\n * ## The host owns authority\n *\n * `actions` is a slot. The plan neither enables nor disables what is in it, and\n * with no `actions` there are no controls — a plan the reader may not approve\n * simply has no Approve button.\n *\n * A `Plan` is a line: place it inside a `Trace`.\n */\nexport type PlanStepStatus = TaskItemStatus\n\nexport type PlanStep = Readonly<{\n id?: string\n label: string\n description?: string\n status?: PlanStepStatus\n}>\n\nexport type PlanProps = Omit<\n TraceLineProps,\n 'description' | 'href' | 'onSelect' | 'selectHaspopup' | 'children' | 'status' | 'statusLabel'\n> & {\n steps: readonly PlanStep[]\n /** What the plan is for, above the steps. */\n description?: JSX.Element\n /** True while the plan is still being generated. */\n streaming?: boolean\n /** Controls for the reader: approve, edit, run. Absent means there are none. */\n actions?: JSX.Element\n}\n\nexport function Plan(props: PlanProps) {\n const [local, rest] = splitProps(props, [\n 'steps',\n 'description',\n 'streaming',\n 'actions',\n 'icon',\n 'meta',\n 'defaultOpen',\n ])\n const progress = createMemo(() => (local.streaming ? undefined : taskProgress(local.steps)))\n const meta = () => {\n if (local.meta !== undefined) return local.meta\n if (local.streaming) return 'Drafting'\n const value = progress()\n return value ? taskProgressLabel(value) : undefined\n }\n const hasDetail = () =>\n local.steps.length > 0 ||\n local.description !== undefined ||\n local.actions !== undefined ||\n local.streaming === true\n\n const detail = () => (\n <TraceDetail class=\"flex flex-col gap-2\">\n <Show when={local.description}>\n <div class=\"text-sm text-muted-foreground\">{local.description}</div>\n </Show>\n <Show when={progress()}>\n {(value) => (\n <Progress\n value={value().done}\n minValue={0}\n maxValue={Math.max(1, value().total)}\n aria-label=\"Plan progress\"\n getValueLabel={({ value: done, max }) =>\n `${done} of ${max} ${max === 1 ? 'step' : 'steps'} done`\n }\n />\n )}\n </Show>\n <Show when={local.steps.length > 0}>\n <TaskItemList label=\"Plan steps\">\n <Index each={local.steps}>\n {(step) => (\n <TaskItemRow\n text={step().label}\n description={step().description}\n status={step().status}\n />\n )}\n </Index>\n </TaskItemList>\n </Show>\n <Show when={local.streaming}>\n <span class=\"streaming-caret\" aria-hidden=\"true\" />\n </Show>\n <Show when={local.actions}>\n <div data-slot=\"plan-actions\" class=\"flex flex-wrap items-center gap-2 pt-1\">\n {local.actions}\n </div>\n </Show>\n </TraceDetail>\n )\n\n return (\n <TraceLine\n icon={local.icon ?? <ListTodo />}\n status={local.streaming ? 'running' : undefined}\n statusLabel=\"Generating\"\n meta={meta()}\n defaultOpen={local.defaultOpen ?? true}\n {...rest}\n >\n {hasDetail() ? deferred(detail) : undefined}\n </TraceLine>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type ComponentProps, type JSX } from 'solid-js';
|
|
2
|
+
import { Trace } from '../../ui/trace';
|
|
3
|
+
/**
|
|
4
|
+
* Queue.
|
|
5
|
+
*
|
|
6
|
+
* The agent's todo list, split the way a reader asks about it: what is still to
|
|
7
|
+
* do, and what is already done. Two collapsible sections with their counts,
|
|
8
|
+
* "Pending" open and "Completed" folded — the finished work is the record, the
|
|
9
|
+
* pending work is the question. Reach for `Plan` when the list is a proposal
|
|
10
|
+
* awaiting a decision, for `Task` when it is one piece of work with files
|
|
11
|
+
* attached, and for `QueueFollowUps` (below) when the things waiting are
|
|
12
|
+
* *messages from the person*, not work the agent set itself.
|
|
13
|
+
*
|
|
14
|
+
* ## Sorting is the host's statement, not ours
|
|
15
|
+
*
|
|
16
|
+
* An item is in the Completed section only if its `status` is `complete`.
|
|
17
|
+
* Everything else — `pending`, `active`, or no status at all — is still to do,
|
|
18
|
+
* which is what "not marked done" means; the mark shown matches (an item with
|
|
19
|
+
* no status gets the pending mark, because it is in the Pending section). An
|
|
20
|
+
* empty section is not drawn: "Completed (0)" is noise, and a list with nothing
|
|
21
|
+
* in either section renders nothing, or the `empty` content if the host gave
|
|
22
|
+
* some, rather than a heading over a void.
|
|
23
|
+
*
|
|
24
|
+
* ## Bounded
|
|
25
|
+
*
|
|
26
|
+
* Each section scrolls inside a capped, keyboard-focusable region, and rows are
|
|
27
|
+
* kept by position, so a list of two hundred items does not push the answer out
|
|
28
|
+
* of view and a status change updates a row instead of recreating it. Item text
|
|
29
|
+
* wraps to three lines and is clamped (see `Task`).
|
|
30
|
+
*
|
|
31
|
+
* A `Queue` is a block (its own `Trace`) and can sit between other parts of a
|
|
32
|
+
* turn.
|
|
33
|
+
*/
|
|
34
|
+
export type QueueItemStatus = 'pending' | 'active' | 'complete';
|
|
35
|
+
export type QueueItem = Readonly<{
|
|
36
|
+
id?: string;
|
|
37
|
+
text: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
status?: QueueItemStatus;
|
|
40
|
+
}>;
|
|
41
|
+
/** Split a todo list into the two sections. Order is preserved within each. */
|
|
42
|
+
export declare function partitionQueue(items: readonly QueueItem[]): Readonly<{
|
|
43
|
+
pending: readonly QueueItem[];
|
|
44
|
+
completed: readonly QueueItem[];
|
|
45
|
+
}>;
|
|
46
|
+
export type QueueProps = Omit<ComponentProps<typeof Trace>, 'children'> & {
|
|
47
|
+
items: readonly QueueItem[];
|
|
48
|
+
pendingLabel?: string;
|
|
49
|
+
completedLabel?: string;
|
|
50
|
+
/** Shown when there is nothing in either section. Omit to draw nothing. */
|
|
51
|
+
empty?: JSX.Element;
|
|
52
|
+
/** Open the Completed section initially. */
|
|
53
|
+
defaultCompletedOpen?: boolean;
|
|
54
|
+
};
|
|
55
|
+
export declare function Queue(props: QueueProps): JSX.Element;
|
|
56
|
+
export type QueueFollowUp = Readonly<{
|
|
57
|
+
id?: string;
|
|
58
|
+
text: string;
|
|
59
|
+
/** Removes it from the queue. Omit it and the row has no remove control. */
|
|
60
|
+
onRemove?: () => void;
|
|
61
|
+
}>;
|
|
62
|
+
export type QueueFollowUpsProps = Omit<ComponentProps<typeof Trace>, 'children'> & {
|
|
63
|
+
items: readonly QueueFollowUp[];
|
|
64
|
+
/** The section's title. */
|
|
65
|
+
title?: string;
|
|
66
|
+
defaultOpen?: boolean;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Follow-up messages the person sent that have not been delivered yet. They are
|
|
70
|
+
* the person's words, so they are shown as sent (wrapped, clamped to three
|
|
71
|
+
* lines) rather than as work. The remove control exists per message only when
|
|
72
|
+
* that message carries `onRemove`: whether it may still be withdrawn is the
|
|
73
|
+
* runtime's to say, and a message past recall simply has no button. With no
|
|
74
|
+
* messages the component draws nothing.
|
|
75
|
+
*/
|
|
76
|
+
export declare function QueueFollowUps(props: QueueFollowUpsProps): JSX.Element;
|
|
77
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/queue/queue.tsx"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,GAAG,EACT,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,KAAK,EAAa,MAAM,gBAAgB,CAAA;AAMjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE/D,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB,CAAC,CAAA;AAEF,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,QAAQ,CAAC;IACpE,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;IAC7B,SAAS,EAAE,SAAS,SAAS,EAAE,CAAA;CAChC,CAAC,CAKD;AAgBD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IACxE,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,eAyEtC;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,CAAC,CAAA;AAuDF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IACjF,KAAK,EAAE,SAAS,aAAa,EAAE,CAAA;IAC/B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,eAqBxD"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { Button } from "../../ui/button/button.js";
|
|
2
|
+
import { Trace, TraceLine } from "../../ui/trace/trace.js";
|
|
3
|
+
import { TaskItemList, TaskItemRow } from "../task/task.js";
|
|
4
|
+
import { createComponent, effect, insert, mergeProps, setAttribute, template } from "solid-js/web";
|
|
5
|
+
import { CornerDownRight, ListChecks, ListTodo, MessageSquarePlus, X } from "lucide-solid";
|
|
6
|
+
import { Index, Show, createMemo, onCleanup, splitProps } from "solid-js";
|
|
7
|
+
//#region src/components/composites/queue/queue.tsx
|
|
8
|
+
var _tmpl$ = /*#__PURE__*/ template(`<span aria-hidden=true>`);
|
|
9
|
+
var _tmpl$2 = /*#__PURE__*/ template(`<span class=sr-only>`);
|
|
10
|
+
var _tmpl$3 = /*#__PURE__*/ template(`<li data-slot=queue-follow-up class="flex min-w-0 items-start gap-2 rounded-md px-1.5 py-0.5"><p class="m-0 line-clamp-3 min-w-0 flex-1 text-sm [overflow-wrap:anywhere] whitespace-pre-wrap text-foreground">`);
|
|
11
|
+
var deferred = (render) => render;
|
|
12
|
+
/** Split a todo list into the two sections. Order is preserved within each. */
|
|
13
|
+
function partitionQueue(items) {
|
|
14
|
+
return {
|
|
15
|
+
pending: items.filter((item) => item.status !== "complete"),
|
|
16
|
+
completed: items.filter((item) => item.status === "complete")
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function itemCount(count) {
|
|
20
|
+
return `${count} ${count === 1 ? "item" : "items"}`;
|
|
21
|
+
}
|
|
22
|
+
/** The count, shown as a number and spoken as a phrase. */
|
|
23
|
+
function Count(props) {
|
|
24
|
+
return [(() => {
|
|
25
|
+
var _el$ = _tmpl$();
|
|
26
|
+
insert(_el$, () => props.count);
|
|
27
|
+
return _el$;
|
|
28
|
+
})(), (() => {
|
|
29
|
+
var _el$2 = _tmpl$2();
|
|
30
|
+
insert(_el$2, () => props.noun ?? itemCount(props.count));
|
|
31
|
+
return _el$2;
|
|
32
|
+
})()];
|
|
33
|
+
}
|
|
34
|
+
function Queue(props) {
|
|
35
|
+
const [local, rest] = splitProps(props, [
|
|
36
|
+
"items",
|
|
37
|
+
"pendingLabel",
|
|
38
|
+
"completedLabel",
|
|
39
|
+
"empty",
|
|
40
|
+
"defaultCompletedOpen"
|
|
41
|
+
]);
|
|
42
|
+
const sections = createMemo(() => partitionQueue(local.items));
|
|
43
|
+
const pending = () => sections().pending;
|
|
44
|
+
const completed = () => sections().completed;
|
|
45
|
+
const pendingLabel = () => local.pendingLabel ?? "Pending";
|
|
46
|
+
const completedLabel = () => local.completedLabel ?? "Completed";
|
|
47
|
+
return createComponent(Show, {
|
|
48
|
+
get when() {
|
|
49
|
+
return local.items.length > 0;
|
|
50
|
+
},
|
|
51
|
+
get fallback() {
|
|
52
|
+
return createComponent(Show, {
|
|
53
|
+
get when() {
|
|
54
|
+
return local.empty;
|
|
55
|
+
},
|
|
56
|
+
get children() {
|
|
57
|
+
return createComponent(Trace, mergeProps({ "aria-label": "Queue" }, rest, { get children() {
|
|
58
|
+
return createComponent(TraceLine, { get title() {
|
|
59
|
+
return local.empty;
|
|
60
|
+
} });
|
|
61
|
+
} }));
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
get children() {
|
|
66
|
+
return createComponent(Trace, mergeProps({ "aria-label": "Queue" }, rest, { get children() {
|
|
67
|
+
return [createComponent(Show, {
|
|
68
|
+
get when() {
|
|
69
|
+
return pending().length > 0;
|
|
70
|
+
},
|
|
71
|
+
get children() {
|
|
72
|
+
return createComponent(TraceLine, {
|
|
73
|
+
get icon() {
|
|
74
|
+
return createComponent(ListTodo, {});
|
|
75
|
+
},
|
|
76
|
+
get title() {
|
|
77
|
+
return pendingLabel();
|
|
78
|
+
},
|
|
79
|
+
get meta() {
|
|
80
|
+
return createComponent(Count, { get count() {
|
|
81
|
+
return pending().length;
|
|
82
|
+
} });
|
|
83
|
+
},
|
|
84
|
+
defaultOpen: true,
|
|
85
|
+
get children() {
|
|
86
|
+
return deferred(() => createComponent(TaskItemList, {
|
|
87
|
+
get label() {
|
|
88
|
+
return pendingLabel();
|
|
89
|
+
},
|
|
90
|
+
get children() {
|
|
91
|
+
return createComponent(Index, {
|
|
92
|
+
get each() {
|
|
93
|
+
return pending();
|
|
94
|
+
},
|
|
95
|
+
children: (item) => createComponent(TaskItemRow, {
|
|
96
|
+
get text() {
|
|
97
|
+
return item().text;
|
|
98
|
+
},
|
|
99
|
+
get description() {
|
|
100
|
+
return item().description;
|
|
101
|
+
},
|
|
102
|
+
get status() {
|
|
103
|
+
return item().status ?? "pending";
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}), createComponent(Show, {
|
|
113
|
+
get when() {
|
|
114
|
+
return completed().length > 0;
|
|
115
|
+
},
|
|
116
|
+
get children() {
|
|
117
|
+
return createComponent(TraceLine, {
|
|
118
|
+
get icon() {
|
|
119
|
+
return createComponent(ListChecks, {});
|
|
120
|
+
},
|
|
121
|
+
get title() {
|
|
122
|
+
return completedLabel();
|
|
123
|
+
},
|
|
124
|
+
get meta() {
|
|
125
|
+
return createComponent(Count, { get count() {
|
|
126
|
+
return completed().length;
|
|
127
|
+
} });
|
|
128
|
+
},
|
|
129
|
+
get defaultOpen() {
|
|
130
|
+
return local.defaultCompletedOpen ?? false;
|
|
131
|
+
},
|
|
132
|
+
get children() {
|
|
133
|
+
return deferred(() => createComponent(TaskItemList, {
|
|
134
|
+
get label() {
|
|
135
|
+
return completedLabel();
|
|
136
|
+
},
|
|
137
|
+
get children() {
|
|
138
|
+
return createComponent(Index, {
|
|
139
|
+
get each() {
|
|
140
|
+
return completed();
|
|
141
|
+
},
|
|
142
|
+
children: (item) => createComponent(TaskItemRow, {
|
|
143
|
+
get text() {
|
|
144
|
+
return item().text;
|
|
145
|
+
},
|
|
146
|
+
get description() {
|
|
147
|
+
return item().description;
|
|
148
|
+
},
|
|
149
|
+
status: "complete"
|
|
150
|
+
})
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
})];
|
|
158
|
+
} }));
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
var REMOVE_LABEL_CHARS = 60;
|
|
163
|
+
function FollowUpRow(props) {
|
|
164
|
+
let remove;
|
|
165
|
+
onCleanup(() => {
|
|
166
|
+
if (!remove || document.activeElement !== remove) return;
|
|
167
|
+
const buttons = remove.closest("ul")?.querySelectorAll("button[data-slot=\"queue-follow-up-remove\"]");
|
|
168
|
+
Array.from(buttons ?? []).filter((button) => button !== remove).at(-1)?.focus();
|
|
169
|
+
});
|
|
170
|
+
const text = () => props.item.text.length > 1e3 ? `${props.item.text.slice(0, 1e3)}…` : props.item.text;
|
|
171
|
+
const label = () => props.item.text.length > REMOVE_LABEL_CHARS ? `${props.item.text.slice(0, REMOVE_LABEL_CHARS)}…` : props.item.text;
|
|
172
|
+
return (() => {
|
|
173
|
+
var _el$3 = _tmpl$3(), _el$4 = _el$3.firstChild;
|
|
174
|
+
insert(_el$3, createComponent(CornerDownRight, {
|
|
175
|
+
"aria-hidden": "true",
|
|
176
|
+
"class": "mt-0.5 size-3.5 shrink-0 text-muted-foreground"
|
|
177
|
+
}), _el$4);
|
|
178
|
+
insert(_el$4, text);
|
|
179
|
+
insert(_el$3, createComponent(Show, {
|
|
180
|
+
get when() {
|
|
181
|
+
return props.item.onRemove;
|
|
182
|
+
},
|
|
183
|
+
children: (onRemove) => createComponent(Button, {
|
|
184
|
+
ref: (element) => remove = element,
|
|
185
|
+
"data-slot": "queue-follow-up-remove",
|
|
186
|
+
type: "button",
|
|
187
|
+
variant: "ghost",
|
|
188
|
+
size: "icon-2xs",
|
|
189
|
+
"class": "shrink-0",
|
|
190
|
+
get ["aria-label"]() {
|
|
191
|
+
return `Remove queued message: ${label()}`;
|
|
192
|
+
},
|
|
193
|
+
onClick: () => onRemove()(),
|
|
194
|
+
get children() {
|
|
195
|
+
return createComponent(X, { "aria-hidden": "true" });
|
|
196
|
+
}
|
|
197
|
+
})
|
|
198
|
+
}), null);
|
|
199
|
+
effect(() => setAttribute(_el$4, "title", text()));
|
|
200
|
+
return _el$3;
|
|
201
|
+
})();
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Follow-up messages the person sent that have not been delivered yet. They are
|
|
205
|
+
* the person's words, so they are shown as sent (wrapped, clamped to three
|
|
206
|
+
* lines) rather than as work. The remove control exists per message only when
|
|
207
|
+
* that message carries `onRemove`: whether it may still be withdrawn is the
|
|
208
|
+
* runtime's to say, and a message past recall simply has no button. With no
|
|
209
|
+
* messages the component draws nothing.
|
|
210
|
+
*/
|
|
211
|
+
function QueueFollowUps(props) {
|
|
212
|
+
const [local, rest] = splitProps(props, [
|
|
213
|
+
"items",
|
|
214
|
+
"title",
|
|
215
|
+
"defaultOpen"
|
|
216
|
+
]);
|
|
217
|
+
const title = () => local.title ?? "Queued follow-ups";
|
|
218
|
+
return createComponent(Show, {
|
|
219
|
+
get when() {
|
|
220
|
+
return local.items.length > 0;
|
|
221
|
+
},
|
|
222
|
+
get children() {
|
|
223
|
+
return createComponent(Trace, mergeProps({ get ["aria-label"]() {
|
|
224
|
+
return title();
|
|
225
|
+
} }, rest, { get children() {
|
|
226
|
+
return createComponent(TraceLine, {
|
|
227
|
+
get icon() {
|
|
228
|
+
return createComponent(MessageSquarePlus, {});
|
|
229
|
+
},
|
|
230
|
+
get title() {
|
|
231
|
+
return title();
|
|
232
|
+
},
|
|
233
|
+
get meta() {
|
|
234
|
+
return createComponent(Count, {
|
|
235
|
+
get count() {
|
|
236
|
+
return local.items.length;
|
|
237
|
+
},
|
|
238
|
+
get noun() {
|
|
239
|
+
return `${local.items.length} waiting`;
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
get defaultOpen() {
|
|
244
|
+
return local.defaultOpen ?? true;
|
|
245
|
+
},
|
|
246
|
+
get children() {
|
|
247
|
+
return deferred(() => createComponent(TaskItemList, {
|
|
248
|
+
get label() {
|
|
249
|
+
return title();
|
|
250
|
+
},
|
|
251
|
+
get children() {
|
|
252
|
+
return createComponent(Index, {
|
|
253
|
+
get each() {
|
|
254
|
+
return local.items;
|
|
255
|
+
},
|
|
256
|
+
children: (item) => createComponent(FollowUpRow, { get item() {
|
|
257
|
+
return item();
|
|
258
|
+
} })
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
} }));
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
//#endregion
|
|
269
|
+
export { Queue, QueueFollowUps, partitionQueue };
|
|
270
|
+
|
|
271
|
+
//# sourceMappingURL=queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","names":["CornerDownRight","ListChecks","ListTodo","MessageSquarePlus","X","createMemo","Index","onCleanup","Show","splitProps","ComponentProps","JSX","Button","Trace","TraceLine","TaskItemList","TaskItemRow","deferred","render","Element","QueueItemStatus","QueueItem","Readonly","id","text","description","status","partitionQueue","items","pending","completed","filter","item","itemCount","count","Count","props","noun","_el$","_tmpl$","_$insert","_el$2","_tmpl$2","QueueProps","Omit","pendingLabel","completedLabel","empty","defaultCompletedOpen","Queue","local","rest","sections","_$createComponent","when","length","fallback","children","_$mergeProps","title","icon","meta","defaultOpen","label","each","QueueFollowUp","onRemove","REMOVE_LABEL_CHARS","FollowUpRow","remove","HTMLButtonElement","document","activeElement","buttons","closest","querySelectorAll","previous","Array","from","button","at","focus","slice","_el$3","_tmpl$3","_el$4","firstChild","ref","element","type","variant","size","aria-label","onClick","_$effect","_$setAttribute","QueueFollowUpsProps","QueueFollowUps","_$createComponent","_$mergeProps","_$setAttribute"],"sources":["../../../../src/components/composites/queue/queue.tsx"],"sourcesContent":["import { CornerDownRight, ListChecks, ListTodo, MessageSquarePlus, X } from 'lucide-solid'\nimport {\n createMemo,\n Index,\n onCleanup,\n Show,\n splitProps,\n type ComponentProps,\n type JSX,\n} from 'solid-js'\nimport { Button } from '../../ui/button'\nimport { Trace, TraceLine } from '../../ui/trace'\nimport { TaskItemList, TaskItemRow } from '../task'\n\n// A function child runs once, when the content mounts (see `deferred` in `tool.tsx`).\nconst deferred = (render: () => JSX.Element) => render as unknown as JSX.Element\n\n/**\n * Queue.\n *\n * The agent's todo list, split the way a reader asks about it: what is still to\n * do, and what is already done. Two collapsible sections with their counts,\n * \"Pending\" open and \"Completed\" folded — the finished work is the record, the\n * pending work is the question. Reach for `Plan` when the list is a proposal\n * awaiting a decision, for `Task` when it is one piece of work with files\n * attached, and for `QueueFollowUps` (below) when the things waiting are\n * *messages from the person*, not work the agent set itself.\n *\n * ## Sorting is the host's statement, not ours\n *\n * An item is in the Completed section only if its `status` is `complete`.\n * Everything else — `pending`, `active`, or no status at all — is still to do,\n * which is what \"not marked done\" means; the mark shown matches (an item with\n * no status gets the pending mark, because it is in the Pending section). An\n * empty section is not drawn: \"Completed (0)\" is noise, and a list with nothing\n * in either section renders nothing, or the `empty` content if the host gave\n * some, rather than a heading over a void.\n *\n * ## Bounded\n *\n * Each section scrolls inside a capped, keyboard-focusable region, and rows are\n * kept by position, so a list of two hundred items does not push the answer out\n * of view and a status change updates a row instead of recreating it. Item text\n * wraps to three lines and is clamped (see `Task`).\n *\n * A `Queue` is a block (its own `Trace`) and can sit between other parts of a\n * turn.\n */\nexport type QueueItemStatus = 'pending' | 'active' | 'complete'\n\nexport type QueueItem = Readonly<{\n id?: string\n text: string\n description?: string\n status?: QueueItemStatus\n}>\n\n/** Split a todo list into the two sections. Order is preserved within each. */\nexport function partitionQueue(items: readonly QueueItem[]): Readonly<{\n pending: readonly QueueItem[]\n completed: readonly QueueItem[]\n}> {\n return {\n pending: items.filter((item) => item.status !== 'complete'),\n completed: items.filter((item) => item.status === 'complete'),\n }\n}\n\nfunction itemCount(count: number): string {\n return `${count} ${count === 1 ? 'item' : 'items'}`\n}\n\n/** The count, shown as a number and spoken as a phrase. */\nfunction Count(props: { count: number; noun?: string }) {\n return (\n <>\n <span aria-hidden=\"true\">{props.count}</span>\n <span class=\"sr-only\">{props.noun ?? itemCount(props.count)}</span>\n </>\n )\n}\n\nexport type QueueProps = Omit<ComponentProps<typeof Trace>, 'children'> & {\n items: readonly QueueItem[]\n pendingLabel?: string\n completedLabel?: string\n /** Shown when there is nothing in either section. Omit to draw nothing. */\n empty?: JSX.Element\n /** Open the Completed section initially. */\n defaultCompletedOpen?: boolean\n}\n\nexport function Queue(props: QueueProps) {\n const [local, rest] = splitProps(props, [\n 'items',\n 'pendingLabel',\n 'completedLabel',\n 'empty',\n 'defaultCompletedOpen',\n ])\n const sections = createMemo(() => partitionQueue(local.items))\n const pending = () => sections().pending\n const completed = () => sections().completed\n const pendingLabel = () => local.pendingLabel ?? 'Pending'\n const completedLabel = () => local.completedLabel ?? 'Completed'\n\n return (\n <Show\n when={local.items.length > 0}\n fallback={\n <Show when={local.empty}>\n <Trace aria-label=\"Queue\" {...rest}>\n <TraceLine title={local.empty} />\n </Trace>\n </Show>\n }\n >\n <Trace aria-label=\"Queue\" {...rest}>\n <Show when={pending().length > 0}>\n <TraceLine\n icon={<ListTodo />}\n title={pendingLabel()}\n meta={<Count count={pending().length} />}\n defaultOpen\n >\n {deferred(() => (\n <TaskItemList label={pendingLabel()}>\n <Index each={pending()}>\n {(item) => (\n <TaskItemRow\n text={item().text}\n description={item().description}\n status={item().status ?? 'pending'}\n />\n )}\n </Index>\n </TaskItemList>\n ))}\n </TraceLine>\n </Show>\n <Show when={completed().length > 0}>\n <TraceLine\n icon={<ListChecks />}\n title={completedLabel()}\n meta={<Count count={completed().length} />}\n defaultOpen={local.defaultCompletedOpen ?? false}\n >\n {deferred(() => (\n <TaskItemList label={completedLabel()}>\n <Index each={completed()}>\n {(item) => (\n <TaskItemRow\n text={item().text}\n description={item().description}\n status=\"complete\"\n />\n )}\n </Index>\n </TaskItemList>\n ))}\n </TraceLine>\n </Show>\n </Trace>\n </Show>\n )\n}\n\nexport type QueueFollowUp = Readonly<{\n id?: string\n text: string\n /** Removes it from the queue. Omit it and the row has no remove control. */\n onRemove?: () => void\n}>\n\nconst REMOVE_LABEL_CHARS = 60\n\nfunction FollowUpRow(props: { item: QueueFollowUp }) {\n let remove: HTMLButtonElement | undefined\n\n // Rows are kept by position, so removing a middle row leaves the focused\n // button where it is (now on the next message). Only the last row is ever\n // disposed under focus; hand focus to the one before it rather than to `body`.\n onCleanup(() => {\n if (!remove || document.activeElement !== remove) return\n const buttons = remove\n .closest('ul')\n ?.querySelectorAll<HTMLButtonElement>('button[data-slot=\"queue-follow-up-remove\"]')\n const previous = Array.from(buttons ?? []).filter((button) => button !== remove)\n previous.at(-1)?.focus()\n })\n\n const text = () =>\n props.item.text.length > 1_000 ? `${props.item.text.slice(0, 1_000)}…` : props.item.text\n const label = () =>\n props.item.text.length > REMOVE_LABEL_CHARS\n ? `${props.item.text.slice(0, REMOVE_LABEL_CHARS)}…`\n : props.item.text\n\n return (\n <li data-slot=\"queue-follow-up\" class=\"flex min-w-0 items-start gap-2 rounded-md px-1.5 py-0.5\">\n <CornerDownRight aria-hidden=\"true\" class=\"mt-0.5 size-3.5 shrink-0 text-muted-foreground\" />\n <p\n title={text()}\n class=\"m-0 line-clamp-3 min-w-0 flex-1 text-sm [overflow-wrap:anywhere] whitespace-pre-wrap text-foreground\"\n >\n {text()}\n </p>\n <Show when={props.item.onRemove}>\n {(onRemove) => (\n <Button\n ref={(element) => (remove = element)}\n data-slot=\"queue-follow-up-remove\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-2xs\"\n class=\"shrink-0\"\n aria-label={`Remove queued message: ${label()}`}\n onClick={() => onRemove()()}\n >\n <X aria-hidden=\"true\" />\n </Button>\n )}\n </Show>\n </li>\n )\n}\n\nexport type QueueFollowUpsProps = Omit<ComponentProps<typeof Trace>, 'children'> & {\n items: readonly QueueFollowUp[]\n /** The section's title. */\n title?: string\n defaultOpen?: boolean\n}\n\n/**\n * Follow-up messages the person sent that have not been delivered yet. They are\n * the person's words, so they are shown as sent (wrapped, clamped to three\n * lines) rather than as work. The remove control exists per message only when\n * that message carries `onRemove`: whether it may still be withdrawn is the\n * runtime's to say, and a message past recall simply has no button. With no\n * messages the component draws nothing.\n */\nexport function QueueFollowUps(props: QueueFollowUpsProps) {\n const [local, rest] = splitProps(props, ['items', 'title', 'defaultOpen'])\n const title = () => local.title ?? 'Queued follow-ups'\n return (\n <Show when={local.items.length > 0}>\n <Trace aria-label={title()} {...rest}>\n <TraceLine\n icon={<MessageSquarePlus />}\n title={title()}\n meta={<Count count={local.items.length} noun={`${local.items.length} waiting`} />}\n defaultOpen={local.defaultOpen ?? true}\n >\n {deferred(() => (\n <TaskItemList label={title()}>\n <Index each={local.items}>{(item) => <FollowUpRow item={item()} />}</Index>\n </TaskItemList>\n ))}\n </TraceLine>\n </Trace>\n </Show>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/reasoning/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA"}
|