@monkey-mini-app/dsh-mini-app 0.1.0 → 0.1.4
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 +59 -0
- package/assets/apps-list.png +0 -0
- package/assets/complex-demo-app.png +0 -0
- package/assets/demo-app.png +0 -0
- package/assets/home.png +0 -0
- package/assets/sidebar-mode.png +0 -0
- package/lib/client.js +2024 -783
- package/lib/index.d.ts +5 -2
- package/lib/index.js +29 -16
- package/package.json +12 -10
- package/skills/monkey-mini-app/SKILL.md +182 -106
- package/skills/monkey-mini-app/references/catalog.md +236 -99
- package/skills/monkey-mini-app/references/contracts/accordion.md +30 -0
- package/skills/monkey-mini-app/references/contracts/activity-feed.md +12 -2
- package/skills/monkey-mini-app/references/contracts/alert-dialog.md +38 -0
- package/skills/monkey-mini-app/references/contracts/alert.md +38 -0
- package/skills/monkey-mini-app/references/contracts/app-shell.md +2 -2
- package/skills/monkey-mini-app/references/contracts/aspect-ratio.md +25 -0
- package/skills/monkey-mini-app/references/contracts/attachment-gallery.md +12 -2
- package/skills/monkey-mini-app/references/contracts/attachment.md +35 -0
- package/skills/monkey-mini-app/references/contracts/autocomplete.md +12 -2
- package/skills/monkey-mini-app/references/contracts/avatar.md +24 -0
- package/skills/monkey-mini-app/references/contracts/badge.md +26 -0
- package/skills/monkey-mini-app/references/contracts/breadcrumb.md +33 -0
- package/skills/monkey-mini-app/references/contracts/bubble.md +30 -0
- package/skills/monkey-mini-app/references/contracts/button-group.md +36 -0
- package/skills/monkey-mini-app/references/contracts/button.md +26 -0
- package/skills/monkey-mini-app/references/contracts/calendar.md +20 -0
- package/skills/monkey-mini-app/references/contracts/card.md +41 -0
- package/skills/monkey-mini-app/references/contracts/cascader.md +12 -2
- package/skills/monkey-mini-app/references/contracts/chart.md +32 -0
- package/skills/monkey-mini-app/references/contracts/checkbox.md +19 -0
- package/skills/monkey-mini-app/references/contracts/code-block.md +20 -2
- package/skills/monkey-mini-app/references/contracts/code-editor.md +30 -4
- package/skills/monkey-mini-app/references/contracts/collapsible.md +21 -0
- package/skills/monkey-mini-app/references/contracts/color-picker.md +12 -2
- package/skills/monkey-mini-app/references/contracts/combobox.md +34 -0
- package/skills/monkey-mini-app/references/contracts/command.md +41 -0
- package/skills/monkey-mini-app/references/contracts/comment-thread.md +12 -2
- package/skills/monkey-mini-app/references/contracts/commit-graph.md +50 -0
- package/skills/monkey-mini-app/references/contracts/confirm-dialog.md +20 -2
- package/skills/monkey-mini-app/references/contracts/context-menu.md +41 -0
- package/skills/monkey-mini-app/references/contracts/copyable.md +12 -2
- package/skills/monkey-mini-app/references/contracts/currency-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/dashboard-shell.md +41 -0
- package/skills/monkey-mini-app/references/contracts/data-grid.md +13 -6
- package/skills/monkey-mini-app/references/contracts/date-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/date-range-picker.md +10 -2
- package/skills/monkey-mini-app/references/contracts/date-time-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/date-time-range-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/description-list.md +12 -2
- package/skills/monkey-mini-app/references/contracts/detail-panel.md +10 -2
- package/skills/monkey-mini-app/references/contracts/dialog.md +44 -0
- package/skills/monkey-mini-app/references/contracts/diff-viewer.md +21 -2
- package/skills/monkey-mini-app/references/contracts/donut-chart.md +14 -2
- package/skills/monkey-mini-app/references/contracts/drawer.md +29 -0
- package/skills/monkey-mini-app/references/contracts/dropdown-menu.md +49 -0
- package/skills/monkey-mini-app/references/contracts/duration-input.md +20 -2
- package/skills/monkey-mini-app/references/contracts/empty.md +40 -0
- package/skills/monkey-mini-app/references/contracts/env-badge.md +12 -2
- package/skills/monkey-mini-app/references/contracts/env-table.md +46 -0
- package/skills/monkey-mini-app/references/contracts/event-calendar.md +28 -20
- package/skills/monkey-mini-app/references/contracts/field.md +34 -0
- package/skills/monkey-mini-app/references/contracts/file-dropzone.md +20 -2
- package/skills/monkey-mini-app/references/contracts/file-tree.md +12 -2
- package/skills/monkey-mini-app/references/contracts/filter-bar.md +2 -2
- package/skills/monkey-mini-app/references/contracts/form-sheet.md +51 -0
- package/skills/monkey-mini-app/references/contracts/gantt.md +20 -2
- package/skills/monkey-mini-app/references/contracts/gauge.md +14 -2
- package/skills/monkey-mini-app/references/contracts/hover-card.md +21 -0
- package/skills/monkey-mini-app/references/contracts/input-group.md +24 -0
- package/skills/monkey-mini-app/references/contracts/input.md +33 -0
- package/skills/monkey-mini-app/references/contracts/item.md +36 -0
- package/skills/monkey-mini-app/references/contracts/jira-wiki.md +3 -4
- package/skills/monkey-mini-app/references/contracts/jql-input.md +15 -8
- package/skills/monkey-mini-app/references/contracts/json-viewer.md +20 -2
- package/skills/monkey-mini-app/references/contracts/kanban-issue-panel.md +12 -2
- package/skills/monkey-mini-app/references/contracts/kanban.md +10 -2
- package/skills/monkey-mini-app/references/contracts/kbd.md +20 -0
- package/skills/monkey-mini-app/references/contracts/label.md +33 -0
- package/skills/monkey-mini-app/references/contracts/list-detail.md +46 -0
- package/skills/monkey-mini-app/references/contracts/log-viewer.md +45 -4
- package/skills/monkey-mini-app/references/contracts/markdown-editor.md +20 -2
- package/skills/monkey-mini-app/references/contracts/markdown.md +12 -2
- package/skills/monkey-mini-app/references/contracts/marker.md +30 -0
- package/skills/monkey-mini-app/references/contracts/menubar.md +34 -0
- package/skills/monkey-mini-app/references/contracts/message-scroller.md +24 -0
- package/skills/monkey-mini-app/references/contracts/message.md +24 -0
- package/skills/monkey-mini-app/references/contracts/mini-calendar.md +20 -2
- package/skills/monkey-mini-app/references/contracts/native-select.md +21 -0
- package/skills/monkey-mini-app/references/contracts/navigation-menu.md +27 -0
- package/skills/monkey-mini-app/references/contracts/notification-center.md +12 -2
- package/skills/monkey-mini-app/references/contracts/number-field.md +20 -2
- package/skills/monkey-mini-app/references/contracts/page-header.md +2 -2
- package/skills/monkey-mini-app/references/contracts/pagination.md +33 -0
- package/skills/monkey-mini-app/references/contracts/password-field.md +12 -2
- package/skills/monkey-mini-app/references/contracts/phone-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/popover.md +32 -0
- package/skills/monkey-mini-app/references/contracts/progress-ring.md +14 -2
- package/skills/monkey-mini-app/references/contracts/progress.md +39 -0
- package/skills/monkey-mini-app/references/contracts/questionnaire.md +33 -0
- package/skills/monkey-mini-app/references/contracts/radar-chart.md +14 -2
- package/skills/monkey-mini-app/references/contracts/radio-group.md +20 -0
- package/skills/monkey-mini-app/references/contracts/rating.md +12 -2
- package/skills/monkey-mini-app/references/contracts/relative-date-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/request-inspector.md +12 -2
- package/skills/monkey-mini-app/references/contracts/resizable.md +29 -0
- package/skills/monkey-mini-app/references/contracts/reveal.md +31 -0
- package/skills/monkey-mini-app/references/contracts/rich-text-editor.md +14 -2
- package/skills/monkey-mini-app/references/contracts/run-timeline.md +20 -2
- package/skills/monkey-mini-app/references/contracts/scroll-area.md +20 -0
- package/skills/monkey-mini-app/references/contracts/scrollspy.md +20 -2
- package/skills/monkey-mini-app/references/contracts/search-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/select.md +36 -0
- package/skills/monkey-mini-app/references/contracts/separator.md +27 -0
- package/skills/monkey-mini-app/references/contracts/settings-split.md +53 -0
- package/skills/monkey-mini-app/references/contracts/severity-chip.md +12 -2
- package/skills/monkey-mini-app/references/contracts/sheet.md +34 -0
- package/skills/monkey-mini-app/references/contracts/sidebar.md +42 -0
- package/skills/monkey-mini-app/references/contracts/skeleton.md +33 -0
- package/skills/monkey-mini-app/references/contracts/slider-range.md +12 -2
- package/skills/monkey-mini-app/references/contracts/slider.md +25 -0
- package/skills/monkey-mini-app/references/contracts/sortable-list.md +20 -2
- package/skills/monkey-mini-app/references/contracts/sparkline.md +13 -2
- package/skills/monkey-mini-app/references/contracts/spinner.md +31 -0
- package/skills/monkey-mini-app/references/contracts/stacked-bar-chart.md +17 -2
- package/skills/monkey-mini-app/references/contracts/stat-card.md +2 -2
- package/skills/monkey-mini-app/references/contracts/status-badge.md +2 -2
- package/skills/monkey-mini-app/references/contracts/stepper-item.md +39 -0
- package/skills/monkey-mini-app/references/contracts/stepper.md +38 -11
- package/skills/monkey-mini-app/references/contracts/switch.md +25 -0
- package/skills/monkey-mini-app/references/contracts/table-page.md +41 -0
- package/skills/monkey-mini-app/references/contracts/table.md +42 -0
- package/skills/monkey-mini-app/references/contracts/tabs.md +31 -0
- package/skills/monkey-mini-app/references/contracts/tag-input.md +12 -2
- package/skills/monkey-mini-app/references/contracts/terminal.md +13 -2
- package/skills/monkey-mini-app/references/contracts/test-step-list.md +12 -2
- package/skills/monkey-mini-app/references/contracts/textarea.md +25 -0
- package/skills/monkey-mini-app/references/contracts/time-picker.md +18 -2
- package/skills/monkey-mini-app/references/contracts/time-range-picker.md +20 -2
- package/skills/monkey-mini-app/references/contracts/time-wheel.md +6 -2
- package/skills/monkey-mini-app/references/contracts/timeline.md +20 -2
- package/skills/monkey-mini-app/references/contracts/timezone-select.md +20 -2
- package/skills/monkey-mini-app/references/contracts/toast.md +39 -0
- package/skills/monkey-mini-app/references/contracts/toggle-group.md +28 -0
- package/skills/monkey-mini-app/references/contracts/toggle.md +26 -0
- package/skills/monkey-mini-app/references/contracts/tooltip.md +30 -0
- package/skills/monkey-mini-app/references/contracts/transfer.md +12 -2
- package/skills/monkey-mini-app/references/contracts/tree-view.md +20 -2
- package/skills/monkey-mini-app/references/contracts/trend-card.md +12 -2
- package/skills/monkey-mini-app/references/contracts/user-picker.md +12 -2
- package/skills/monkey-mini-app/references/contracts/wizard-shell.md +56 -0
- package/skills/monkey-mini-app/references/ctx.md +123 -53
- package/skills/monkey-mini-app/references/eval.md +115 -0
- package/skills/monkey-mini-app/references/examples/alert/alert-01.tsx +17 -0
- package/skills/monkey-mini-app/references/examples/aspect-ratio/aspect-ratio-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/attachment/attachment-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/breadcrumb/breadcrumb-01.tsx +31 -0
- package/skills/monkey-mini-app/references/examples/bubble/bubble-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/button-group/button-group-01.tsx +23 -0
- package/skills/monkey-mini-app/references/examples/card/card-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/charts-blocks.md +15 -0
- package/skills/monkey-mini-app/references/examples/code-block/code-block-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/code-editor/code-editor-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/command/command-01.tsx +30 -0
- package/skills/monkey-mini-app/references/examples/confirm-dialog/confirm-dialog-01.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/context-menu/context-menu-01.tsx +29 -0
- package/skills/monkey-mini-app/references/examples/dashboard-shell/dashboard-shell-01.tsx +78 -0
- package/skills/monkey-mini-app/references/examples/data-grid/data-grid-01.tsx +34 -0
- package/skills/monkey-mini-app/references/examples/data-grid/data-grid-02.tsx +88 -0
- package/skills/monkey-mini-app/references/examples/date-picker/date-picker-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/date-range-picker/date-range-picker-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/date-time-picker/date-time-picker-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/date-time-range-picker/date-time-range-picker-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/detail-panel/detail-panel-01.tsx +21 -0
- package/skills/monkey-mini-app/references/examples/dialog/dialog-01.tsx +30 -0
- package/skills/monkey-mini-app/references/examples/diff-viewer/diff-viewer-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/dropdown-menu/dropdown-menu-01.tsx +31 -0
- package/skills/monkey-mini-app/references/examples/duration-input/duration-input-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/editors.md +11 -0
- package/skills/monkey-mini-app/references/examples/empty/empty-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/event-calendar/event-calendar-01.tsx +53 -0
- package/skills/monkey-mini-app/references/examples/file-dropzone/file-dropzone-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/form-sheet/form-sheet-01.tsx +85 -0
- package/skills/monkey-mini-app/references/examples/forms.md +16 -0
- package/skills/monkey-mini-app/references/examples/gantt/gantt-01.tsx +29 -0
- package/skills/monkey-mini-app/references/examples/input/input-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/item/item-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/jql-input/jql-input-01.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/json-viewer/json-viewer-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/kanban/kanban-01.tsx +60 -0
- package/skills/monkey-mini-app/references/examples/label/label-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/list-detail/list-detail-01.tsx +117 -0
- package/skills/monkey-mini-app/references/examples/log-viewer/log-viewer-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/markdown-editor/markdown-editor-01.tsx +18 -0
- package/skills/monkey-mini-app/references/examples/marker/marker-01.tsx +16 -0
- package/skills/monkey-mini-app/references/examples/mini-calendar/mini-calendar-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-02.tsx +32 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-03.tsx +47 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-04.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-05.tsx +24 -0
- package/skills/monkey-mini-app/references/examples/misc-charts-blocks/misc-charts-blocks-06.tsx +89 -0
- package/skills/monkey-mini-app/references/examples/misc-editors/misc-editors-01.tsx +114 -0
- package/skills/monkey-mini-app/references/examples/misc-editors/misc-editors-02.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-02.tsx +37 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-03.tsx +42 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-04.tsx +25 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-05.tsx +27 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-06.tsx +33 -0
- package/skills/monkey-mini-app/references/examples/misc-forms/misc-forms-07.tsx +44 -0
- package/skills/monkey-mini-app/references/examples/misc-overlays/misc-overlays-01.tsx +43 -0
- package/skills/monkey-mini-app/references/examples/misc-overlays/misc-overlays-02.tsx +38 -0
- package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-01.tsx +21 -0
- package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-02.tsx +52 -0
- package/skills/monkey-mini-app/references/examples/misc-primitives/misc-primitives-03.tsx +44 -0
- package/skills/monkey-mini-app/references/examples/number-field/number-field-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/overlays.md +11 -0
- package/skills/monkey-mini-app/references/examples/pagination/pagination-01.tsx +51 -0
- package/skills/monkey-mini-app/references/examples/primitives.md +12 -0
- package/skills/monkey-mini-app/references/examples/progress/progress-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/relative-date-picker/relative-date-picker-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/rich-text-editor/rich-text-editor-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/run-timeline/run-timeline-01.tsx +17 -0
- package/skills/monkey-mini-app/references/examples/scrollspy/scrollspy-01.tsx +29 -0
- package/skills/monkey-mini-app/references/examples/separator/separator-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/settings-split/settings-split-01.tsx +84 -0
- package/skills/monkey-mini-app/references/examples/shared/jira-wiki-sample.ts +38 -0
- package/skills/monkey-mini-app/references/examples/skeleton/skeleton-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/slider/slider-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/sortable-list/sortable-list-01.tsx +18 -0
- package/skills/monkey-mini-app/references/examples/spinner/spinner-01.tsx +10 -0
- package/skills/monkey-mini-app/references/examples/stepper/stepper-01.tsx +41 -0
- package/skills/monkey-mini-app/references/examples/table/table-01.tsx +25 -0
- package/skills/monkey-mini-app/references/examples/table-page/table-page-01.tsx +103 -0
- package/skills/monkey-mini-app/references/examples/time-picker/time-picker-01.tsx +19 -0
- package/skills/monkey-mini-app/references/examples/time-range-picker/time-range-picker-01.tsx +14 -0
- package/skills/monkey-mini-app/references/examples/timeline/timeline-01.tsx +18 -0
- package/skills/monkey-mini-app/references/examples/timezone-select/timezone-select-01.tsx +15 -0
- package/skills/monkey-mini-app/references/examples/toggle/toggle-01.tsx +20 -0
- package/skills/monkey-mini-app/references/examples/toggle-group/toggle-group-01.tsx +22 -0
- package/skills/monkey-mini-app/references/examples/tree-view/tree-view-01.tsx +25 -0
- package/skills/monkey-mini-app/references/examples/wizard-shell/wizard-shell-01.tsx +58 -0
- package/skills/monkey-mini-app/references/history.md +23 -7
- package/skills/monkey-mini-app/references/icons.md +99 -69
- package/skills/monkey-mini-app/references/llm-json.md +39 -26
- package/skills/monkey-mini-app/references/loader.md +47 -20
- package/skills/monkey-mini-app/references/looks/aurora-bento.md +88 -0
- package/skills/monkey-mini-app/references/looks/desk-split.md +89 -0
- package/skills/monkey-mini-app/references/looks/editorial.md +78 -0
- package/skills/monkey-mini-app/references/looks/glass-island.md +90 -0
- package/skills/monkey-mini-app/references/looks/index.md +18 -0
- package/skills/monkey-mini-app/references/looks/signage.md +74 -0
- package/skills/monkey-mini-app/references/looks/tape.md +22 -0
- package/skills/monkey-mini-app/references/looks/terminal.md +88 -0
- package/skills/monkey-mini-app/references/looks/void.md +22 -0
- package/skills/monkey-mini-app/references/styling.md +189 -0
- package/skills/monkey-mini-app/references/test.md +12 -12
- package/skills/monkey-mini-app/references/theme.md +197 -0
- package/skills/monkey-mini-app/references/tools.md +12 -12
- package/skills/monkey-mini-app/references/troubleshoot.md +165 -12
- package/skills/monkey-mini-app/templates/README.md +33 -21
- package/skills/monkey-mini-app/templates/{jira → board}/main.api.ts +11 -11
- package/skills/monkey-mini-app/templates/board/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/board/theme.css +46 -0
- package/skills/monkey-mini-app/templates/board/ui.tsx +546 -0
- package/skills/monkey-mini-app/templates/chores/main.api.ts +35 -0
- package/skills/monkey-mini-app/templates/chores/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/chores/theme.css +46 -0
- package/skills/monkey-mini-app/templates/chores/ui.tsx +117 -0
- package/skills/monkey-mini-app/templates/minimal/main.api.ts +5 -5
- package/skills/monkey-mini-app/templates/minimal/manifest.json +1 -2
- package/skills/monkey-mini-app/templates/minimal/ui.tsx +17 -8
- package/skills/monkey-mini-app/templates/radar/api/scan.ts +79 -0
- package/skills/monkey-mini-app/templates/radar/main.api.ts +29 -0
- package/skills/monkey-mini-app/templates/radar/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/radar/shared/events.ts +25 -0
- package/skills/monkey-mini-app/templates/{insights/lib → radar/shared}/sample.ts +1 -1
- package/skills/monkey-mini-app/templates/radar/theme.css +47 -0
- package/skills/monkey-mini-app/templates/radar/ui/brief.tsx +31 -0
- package/skills/monkey-mini-app/templates/radar/ui.tsx +131 -0
- package/skills/monkey-mini-app/templates/runner/main.api.ts +91 -0
- package/skills/monkey-mini-app/templates/runner/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/runner/shared/events.ts +14 -0
- package/skills/monkey-mini-app/templates/runner/theme.css +46 -0
- package/skills/monkey-mini-app/templates/runner/ui.tsx +213 -0
- package/skills/monkey-mini-app/templates/sheets/main.api.ts +276 -0
- package/skills/monkey-mini-app/templates/sheets/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/sheets/theme.css +46 -0
- package/skills/monkey-mini-app/templates/sheets/ui.tsx +419 -0
- package/skills/monkey-mini-app/templates/{todo → today}/main.api.ts +8 -8
- package/skills/monkey-mini-app/templates/today/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/today/theme.css +45 -0
- package/skills/monkey-mini-app/templates/today/ui/item-row.tsx +25 -0
- package/skills/monkey-mini-app/templates/today/ui.tsx +406 -0
- package/skills/monkey-mini-app/templates/{monitor → watch}/main.api.ts +8 -8
- package/skills/monkey-mini-app/templates/watch/manifest.json +8 -0
- package/skills/monkey-mini-app/templates/watch/ui.tsx +187 -0
- package/skills/monkey-mini-app/tsconfig.json +31 -0
- package/skills/monkey-mini-app/types/cdn.d.ts +1 -0
- package/tsup.config.ts +1 -0
- package/skills/monkey-mini-app/templates/agentrun/main.api.ts +0 -78
- package/skills/monkey-mini-app/templates/agentrun/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/agentrun/ui.tsx +0 -125
- package/skills/monkey-mini-app/templates/insights/main.api.ts +0 -101
- package/skills/monkey-mini-app/templates/insights/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/insights/ui.tsx +0 -138
- package/skills/monkey-mini-app/templates/jira/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/jira/ui.tsx +0 -318
- package/skills/monkey-mini-app/templates/monitor/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/monitor/ui.tsx +0 -176
- package/skills/monkey-mini-app/templates/review/main.api.ts +0 -68
- package/skills/monkey-mini-app/templates/review/manifest.json +0 -9
- package/skills/monkey-mini-app/templates/review/ui.tsx +0 -159
- package/skills/monkey-mini-app/templates/todo/manifest.json +0 -8
- package/skills/monkey-mini-app/templates/todo/ui.tsx +0 -177
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from "react";
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
AppShell,
|
|
5
|
-
Badge,
|
|
6
|
-
Button,
|
|
7
|
-
Card,
|
|
8
|
-
CardContent,
|
|
9
|
-
CardDescription,
|
|
10
|
-
CardHeader,
|
|
11
|
-
CardTitle,
|
|
12
|
-
CodeEditor,
|
|
13
|
-
type ColumnDef,
|
|
14
|
-
DataGrid,
|
|
15
|
-
DiffViewer,
|
|
16
|
-
FilterBar,
|
|
17
|
-
Icon,
|
|
18
|
-
LogViewer,
|
|
19
|
-
PageHeader,
|
|
20
|
-
StatusBadge,
|
|
21
|
-
} from "@monkey-mini-app/ui";
|
|
22
|
-
import { useDashboardApi } from "@monkeyagent/host";
|
|
23
|
-
|
|
24
|
-
type LogLine = { level: string; text: string };
|
|
25
|
-
type TestCase = { id: string; name: string; status: "pass" | "fail" | "blocked"; duration: number };
|
|
26
|
-
|
|
27
|
-
function fmtTime(ts: number) {
|
|
28
|
-
if (!ts) return "尚未保存";
|
|
29
|
-
const d = new Date(ts);
|
|
30
|
-
const pad = (n: number) => (n < 10 ? "0" + n : String(n));
|
|
31
|
-
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export default function Ui() {
|
|
35
|
-
const { call } = useDashboardApi();
|
|
36
|
-
const [before, setBefore] = useState("");
|
|
37
|
-
const [after, setAfter] = useState("");
|
|
38
|
-
const [cases, setCases] = useState<TestCase[]>([]);
|
|
39
|
-
const [logs, setLogs] = useState<LogLine[]>([]);
|
|
40
|
-
const [savedAt, setSavedAt] = useState(0);
|
|
41
|
-
const [status, setStatus] = useState<"all" | TestCase["status"]>("all");
|
|
42
|
-
const [dirty, setDirty] = useState(false);
|
|
43
|
-
const [error, setError] = useState<string | null>(null);
|
|
44
|
-
|
|
45
|
-
const refresh = useCallback(async () => {
|
|
46
|
-
setError(null);
|
|
47
|
-
try {
|
|
48
|
-
const pack = (await call("get", {})) as { before: string; after: string; cases: TestCase[]; logs: LogLine[]; savedAt: number };
|
|
49
|
-
setBefore(pack?.before ?? "");
|
|
50
|
-
setAfter(pack?.after ?? "");
|
|
51
|
-
setCases(Array.isArray(pack?.cases) ? pack.cases : []);
|
|
52
|
-
setLogs(Array.isArray(pack?.logs) ? pack.logs : []);
|
|
53
|
-
setSavedAt(pack?.savedAt ?? 0);
|
|
54
|
-
setDirty(false);
|
|
55
|
-
} catch (e) {
|
|
56
|
-
setError(String((e as Error)?.message || e));
|
|
57
|
-
}
|
|
58
|
-
}, [call]);
|
|
59
|
-
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
void refresh();
|
|
62
|
-
}, [refresh]);
|
|
63
|
-
|
|
64
|
-
async function act(job: () => Promise<unknown>) {
|
|
65
|
-
setError(null);
|
|
66
|
-
try {
|
|
67
|
-
await job();
|
|
68
|
-
await refresh();
|
|
69
|
-
} catch (e) {
|
|
70
|
-
setError(String((e as Error)?.message || e));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const filtered = status === "all" ? cases : cases.filter((c) => c.status === status);
|
|
75
|
-
|
|
76
|
-
// ⭐ 关键:DataGrid 的列用 meta 声明排序/列搜索;StatusBadge 认小写状态
|
|
77
|
-
const columns: ColumnDef<TestCase>[] = [
|
|
78
|
-
{ accessorKey: "id", header: "ID", meta: { sort: true, search: "text" } },
|
|
79
|
-
{ accessorKey: "name", header: "用例", meta: { sort: true, search: "text" } },
|
|
80
|
-
{
|
|
81
|
-
accessorKey: "status",
|
|
82
|
-
header: "状态",
|
|
83
|
-
meta: { sort: true, search: "select" },
|
|
84
|
-
cell: ({ getValue }) => <StatusBadge status={String(getValue())} />,
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
accessorKey: "duration",
|
|
88
|
-
header: "耗时 (ms)",
|
|
89
|
-
meta: { sort: true, search: "number" },
|
|
90
|
-
cell: ({ getValue }) => String(getValue()),
|
|
91
|
-
},
|
|
92
|
-
];
|
|
93
|
-
|
|
94
|
-
return (
|
|
95
|
-
<AppShell header={<PageHeader title="修复基准" description="编辑 → diff → 用例表格,改完写回" />}>
|
|
96
|
-
<div className="flex h-full min-h-0 flex-col gap-3 overflow-y-auto">
|
|
97
|
-
{error && <p className="text-sm" style={{ color: "var(--destructive)" }}>{error}</p>}
|
|
98
|
-
|
|
99
|
-
<Card>
|
|
100
|
-
<CardHeader>
|
|
101
|
-
<CardTitle>编辑</CardTitle>
|
|
102
|
-
<CardDescription>修改后保存,diff 实时刷新 · {fmtTime(savedAt)}{dirty ? " · 未保存" : ""}</CardDescription>
|
|
103
|
-
</CardHeader>
|
|
104
|
-
<CardContent>
|
|
105
|
-
<CodeEditor value={after} onChange={(v) => { setAfter(v); setDirty(true); }} language="ts" height="240px" />
|
|
106
|
-
</CardContent>
|
|
107
|
-
</Card>
|
|
108
|
-
|
|
109
|
-
<Card>
|
|
110
|
-
<CardHeader>
|
|
111
|
-
<CardTitle>Diff 对比</CardTitle>
|
|
112
|
-
<CardDescription>before → after</CardDescription>
|
|
113
|
-
</CardHeader>
|
|
114
|
-
<CardContent>
|
|
115
|
-
{/* ⭐ 关键:DiffViewer 用 original/modified(不是老版的 oldText/newText) */}
|
|
116
|
-
<DiffViewer original={before} modified={after} mode="unified" fileName="fetchWithRetry.ts" />
|
|
117
|
-
</CardContent>
|
|
118
|
-
</Card>
|
|
119
|
-
|
|
120
|
-
<Card>
|
|
121
|
-
<CardHeader>
|
|
122
|
-
<CardTitle>用例结果</CardTitle>
|
|
123
|
-
<CardDescription>排序 / 列搜索 / 分页自带</CardDescription>
|
|
124
|
-
</CardHeader>
|
|
125
|
-
<CardContent>
|
|
126
|
-
<FilterBar>
|
|
127
|
-
{( ["all", "pass", "fail", "blocked"] as const ).map((s) => (
|
|
128
|
-
<Button key={s} size="sm" variant={status === s ? "default" : "outline"} onClick={() => setStatus(s)}>
|
|
129
|
-
{s === "all" ? "全部" : s}
|
|
130
|
-
</Button>
|
|
131
|
-
))}
|
|
132
|
-
<div className="ml-auto flex gap-2">
|
|
133
|
-
<Button size="sm" variant="outline" onClick={() => void act(() => call("reset", {}))}>
|
|
134
|
-
<Icon.RotateCcw size={16} strokeWidth={2} /> 重置
|
|
135
|
-
</Button>
|
|
136
|
-
<Button size="sm" onClick={() => void act(() => call("save", { after }))}>
|
|
137
|
-
<Icon.Save size={16} strokeWidth={2} /> 保存修复
|
|
138
|
-
</Button>
|
|
139
|
-
</div>
|
|
140
|
-
</FilterBar>
|
|
141
|
-
<div className="mt-3">
|
|
142
|
-
<DataGrid columns={columns} data={filtered} pageSize={8} />
|
|
143
|
-
</div>
|
|
144
|
-
</CardContent>
|
|
145
|
-
</Card>
|
|
146
|
-
|
|
147
|
-
<Card>
|
|
148
|
-
<CardHeader>
|
|
149
|
-
<CardTitle>日志</CardTitle>
|
|
150
|
-
<CardDescription>级别着色</CardDescription>
|
|
151
|
-
</CardHeader>
|
|
152
|
-
<CardContent>
|
|
153
|
-
<LogViewer lines={logs.map((l) => `[${l.level}] ${l.text}`)} />
|
|
154
|
-
</CardContent>
|
|
155
|
-
</Card>
|
|
156
|
-
</div>
|
|
157
|
-
</AppShell>
|
|
158
|
-
);
|
|
159
|
-
}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from "react";
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
AppShell,
|
|
5
|
-
Badge,
|
|
6
|
-
Button,
|
|
7
|
-
Card,
|
|
8
|
-
CardContent,
|
|
9
|
-
CardHeader,
|
|
10
|
-
CardTitle,
|
|
11
|
-
Checkbox,
|
|
12
|
-
Empty,
|
|
13
|
-
EmptyDescription,
|
|
14
|
-
EmptyHeader,
|
|
15
|
-
EmptyTitle,
|
|
16
|
-
FilterBar,
|
|
17
|
-
Icon,
|
|
18
|
-
Input,
|
|
19
|
-
PageHeader,
|
|
20
|
-
Table,
|
|
21
|
-
TableBody,
|
|
22
|
-
TableCell,
|
|
23
|
-
TableHead,
|
|
24
|
-
TableHeader,
|
|
25
|
-
TableRow,
|
|
26
|
-
} from "@monkey-mini-app/ui";
|
|
27
|
-
import { useDashboardApi } from "@monkeyagent/host";
|
|
28
|
-
|
|
29
|
-
type Filter = "all" | "active" | "done";
|
|
30
|
-
type TodoItem = { id: string; title: string; done: boolean; createdAt: number };
|
|
31
|
-
type Stats = { total: number; active: number; done: number };
|
|
32
|
-
|
|
33
|
-
const FILTERS: { id: Filter; label: string }[] = [
|
|
34
|
-
{ id: "all", label: "全部" },
|
|
35
|
-
{ id: "active", label: "进行中" },
|
|
36
|
-
{ id: "done", label: "已完成" },
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
export default function Ui() {
|
|
40
|
-
const { call } = useDashboardApi();
|
|
41
|
-
const [filter, setFilter] = useState<Filter>("all");
|
|
42
|
-
const [draft, setDraft] = useState("");
|
|
43
|
-
const [items, setItems] = useState<TodoItem[]>([]);
|
|
44
|
-
const [stats, setStats] = useState<Stats>({ total: 0, active: 0, done: 0 });
|
|
45
|
-
const [loading, setLoading] = useState(true);
|
|
46
|
-
const [error, setError] = useState<string | null>(null);
|
|
47
|
-
|
|
48
|
-
// ⭐ 关键:refresh 依赖 filter,filter 变就重拉;用 useCallback 避免无限循环
|
|
49
|
-
const refresh = useCallback(async () => {
|
|
50
|
-
setLoading(true);
|
|
51
|
-
setError(null);
|
|
52
|
-
try {
|
|
53
|
-
const pack = (await call("list", { filter })) as { items: TodoItem[]; stats: Stats };
|
|
54
|
-
setItems(Array.isArray(pack?.items) ? pack.items : []);
|
|
55
|
-
setStats(pack?.stats ?? { total: 0, active: 0, done: 0 });
|
|
56
|
-
} catch (e) {
|
|
57
|
-
setError(String((e as Error)?.message || e));
|
|
58
|
-
} finally {
|
|
59
|
-
setLoading(false);
|
|
60
|
-
}
|
|
61
|
-
}, [call, filter]);
|
|
62
|
-
|
|
63
|
-
useEffect(() => {
|
|
64
|
-
void refresh();
|
|
65
|
-
}, [refresh]);
|
|
66
|
-
|
|
67
|
-
async function act(job: () => Promise<unknown>) {
|
|
68
|
-
setError(null);
|
|
69
|
-
try {
|
|
70
|
-
await job();
|
|
71
|
-
await refresh();
|
|
72
|
-
} catch (e) {
|
|
73
|
-
setError(String((e as Error)?.message || e));
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
async function add() {
|
|
78
|
-
const title = draft.trim();
|
|
79
|
-
if (!title) return;
|
|
80
|
-
await act(async () => {
|
|
81
|
-
await call("add", { title });
|
|
82
|
-
setDraft("");
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return (
|
|
87
|
-
// ⭐ 关键:一屏固定 —— AppShell 定高,main 内部滚动,页面不整体滚。
|
|
88
|
-
// 让「内容不被裁成一条缝」+ 侧栏折叠/钉到右侧后仍撑满。
|
|
89
|
-
<AppShell header={<PageHeader title="待办" description="CRUD · 状态筛选 · 归档" />}>
|
|
90
|
-
<div className="flex h-full min-h-0 flex-col gap-3">
|
|
91
|
-
<FilterBar>
|
|
92
|
-
{FILTERS.map((f) => (
|
|
93
|
-
<Button key={f.id} size="sm" variant={filter === f.id ? "default" : "outline"} onClick={() => setFilter(f.id)}>
|
|
94
|
-
{f.label}
|
|
95
|
-
</Button>
|
|
96
|
-
))}
|
|
97
|
-
<div className="ml-auto flex items-center gap-2">
|
|
98
|
-
<Badge variant="secondary">{stats.active} 进行中</Badge>
|
|
99
|
-
<Badge variant="outline">{stats.done} 已完成</Badge>
|
|
100
|
-
<Button size="sm" variant="ghost" onClick={() => void act(() => call("archive", {}))}>
|
|
101
|
-
<Icon.Archive size={16} strokeWidth={2} /> 归档
|
|
102
|
-
</Button>
|
|
103
|
-
</div>
|
|
104
|
-
</FilterBar>
|
|
105
|
-
|
|
106
|
-
<Card className="min-h-0 flex-1 overflow-hidden">
|
|
107
|
-
<CardHeader>
|
|
108
|
-
<CardTitle>添加任务</CardTitle>
|
|
109
|
-
<div className="flex gap-2">
|
|
110
|
-
<Input
|
|
111
|
-
value={draft}
|
|
112
|
-
placeholder="要做什么?回车提交"
|
|
113
|
-
onChange={(e) => setDraft(e.target.value)}
|
|
114
|
-
onKeyDown={(e) => {
|
|
115
|
-
if (e.key === "Enter") void add();
|
|
116
|
-
}}
|
|
117
|
-
className="flex-1"
|
|
118
|
-
/>
|
|
119
|
-
<Button onClick={() => void add()} disabled={!draft.trim()}>
|
|
120
|
-
<Icon.Plus size={16} strokeWidth={2} /> 添加
|
|
121
|
-
</Button>
|
|
122
|
-
</div>
|
|
123
|
-
</CardHeader>
|
|
124
|
-
<CardContent className="flex flex-col min-h-0 flex-1 gap-2 overflow-y-auto">
|
|
125
|
-
{error && <p className="text-sm" style={{ color: "var(--destructive)" }}>{error}</p>}
|
|
126
|
-
{loading && !items.length ? <p className="text-sm text-muted-foreground">加载中…</p> : null}
|
|
127
|
-
{!loading && !items.length ? (
|
|
128
|
-
<Empty>
|
|
129
|
-
<EmptyHeader>
|
|
130
|
-
<EmptyTitle>还没有任务</EmptyTitle>
|
|
131
|
-
<EmptyDescription>上面加一条就开始。</EmptyDescription>
|
|
132
|
-
</EmptyHeader>
|
|
133
|
-
</Empty>
|
|
134
|
-
) : null}
|
|
135
|
-
{items.length ? (
|
|
136
|
-
<Table>
|
|
137
|
-
<TableHeader>
|
|
138
|
-
<TableRow>
|
|
139
|
-
<TableHead className="w-10"></TableHead>
|
|
140
|
-
<TableHead>标题</TableHead>
|
|
141
|
-
<TableHead className="w-20">状态</TableHead>
|
|
142
|
-
<TableHead className="w-20"></TableHead>
|
|
143
|
-
</TableRow>
|
|
144
|
-
</TableHeader>
|
|
145
|
-
<TableBody>
|
|
146
|
-
{items.map((item) => (
|
|
147
|
-
<TableRow key={item.id}>
|
|
148
|
-
<TableCell>
|
|
149
|
-
<Checkbox
|
|
150
|
-
checked={item.done}
|
|
151
|
-
onCheckedChange={() => void act(() => call("toggle", { id: item.id }))}
|
|
152
|
-
/>
|
|
153
|
-
</TableCell>
|
|
154
|
-
<TableCell
|
|
155
|
-
style={{ textDecoration: item.done ? "line-through" : "none", opacity: item.done ? 0.55 : 1 }}
|
|
156
|
-
>
|
|
157
|
-
{item.title}
|
|
158
|
-
</TableCell>
|
|
159
|
-
<TableCell>
|
|
160
|
-
<Badge variant={item.done ? "secondary" : "default"}>{item.done ? "已完成" : "进行中"}</Badge>
|
|
161
|
-
</TableCell>
|
|
162
|
-
<TableCell>
|
|
163
|
-
<Button size="sm" variant="ghost" onClick={() => void act(() => call("remove", { id: item.id }))}>
|
|
164
|
-
<Icon.Trash2 size={16} strokeWidth={2} />
|
|
165
|
-
</Button>
|
|
166
|
-
</TableCell>
|
|
167
|
-
</TableRow>
|
|
168
|
-
))}
|
|
169
|
-
</TableBody>
|
|
170
|
-
</Table>
|
|
171
|
-
) : null}
|
|
172
|
-
</CardContent>
|
|
173
|
-
</Card>
|
|
174
|
-
</div>
|
|
175
|
-
</AppShell>
|
|
176
|
-
);
|
|
177
|
-
}
|