@a5c-ai/agent-mux-webui 0.4.10-staging.7a8768ec
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 +60 -0
- package/dist/assets/index-DfHuDOVv.js +84 -0
- package/dist/assets/index-DfHuDOVv.js.map +1 -0
- package/dist/assets/index-zUqQIz-I.css +1 -0
- package/dist/favicon.svg +5 -0
- package/dist/index.html +44 -0
- package/dist-types/src/App.d.ts +1 -0
- package/dist-types/src/App.d.ts.map +1 -0
- package/dist-types/src/kanban/app/actions/approve-breakpoint.d.ts +5 -0
- package/dist-types/src/kanban/app/actions/approve-breakpoint.d.ts.map +1 -0
- package/dist-types/src/kanban/components/agent-mux/gateway-provider.d.ts +1 -0
- package/dist-types/src/kanban/components/agent-mux/gateway-provider.d.ts.map +1 -0
- package/dist-types/src/kanban/components/agent-mux/gateway-snapshot.d.ts +13 -0
- package/dist-types/src/kanban/components/agent-mux/gateway-snapshot.d.ts.map +1 -0
- package/dist-types/src/kanban/components/agent-mux/require-gateway-auth.d.ts +5 -0
- package/dist-types/src/kanban/components/agent-mux/require-gateway-auth.d.ts.map +1 -0
- package/dist-types/src/kanban/components/automations/automations-page.d.ts +1 -0
- package/dist-types/src/kanban/components/automations/automations-page.d.ts.map +1 -0
- package/dist-types/src/kanban/components/breakpoint/breakpoint-approval.d.ts +7 -0
- package/dist-types/src/kanban/components/breakpoint/breakpoint-approval.d.ts.map +1 -0
- package/dist-types/src/kanban/components/breakpoint/breakpoint-panel.d.ts +7 -0
- package/dist-types/src/kanban/components/breakpoint/breakpoint-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/breakpoint/file-preview.d.ts +8 -0
- package/dist-types/src/kanban/components/breakpoint/file-preview.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/babysitter-overlay-panel.d.ts +1 -0
- package/dist-types/src/kanban/components/dashboard/babysitter-overlay-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/backlog-overview.d.ts +12 -0
- package/dist-types/src/kanban/components/dashboard/backlog-overview.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/breakpoint-banner.d.ts +6 -0
- package/dist-types/src/kanban/components/dashboard/breakpoint-banner.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/catch-up-banner.d.ts +19 -0
- package/dist-types/src/kanban/components/dashboard/catch-up-banner.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/executive-summary-banner.d.ts +17 -0
- package/dist-types/src/kanban/components/dashboard/executive-summary-banner.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/global-search.d.ts +1 -0
- package/dist-types/src/kanban/components/dashboard/global-search.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/kpi-grid.d.ts +8 -0
- package/dist-types/src/kanban/components/dashboard/kpi-grid.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/pagination-controls.d.ts +9 -0
- package/dist-types/src/kanban/components/dashboard/pagination-controls.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/project-accordion.d.ts +8 -0
- package/dist-types/src/kanban/components/dashboard/project-accordion.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/project-health-card.d.ts +9 -0
- package/dist-types/src/kanban/components/dashboard/project-health-card.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/project-list-view.d.ts +16 -0
- package/dist-types/src/kanban/components/dashboard/project-list-view.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/project-search-input.d.ts +8 -0
- package/dist-types/src/kanban/components/dashboard/project-search-input.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/project-section-header.d.ts +11 -0
- package/dist-types/src/kanban/components/dashboard/project-section-header.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/project-section.d.ts +11 -0
- package/dist-types/src/kanban/components/dashboard/project-section.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/run-card.d.ts +7 -0
- package/dist-types/src/kanban/components/dashboard/run-card.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/run-filter-bar.d.ts +10 -0
- package/dist-types/src/kanban/components/dashboard/run-filter-bar.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/run-list.d.ts +8 -0
- package/dist-types/src/kanban/components/dashboard/run-list.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/search-filter.d.ts +12 -0
- package/dist-types/src/kanban/components/dashboard/search-filter.d.ts.map +1 -0
- package/dist-types/src/kanban/components/dashboard/virtualized-run-list.d.ts +23 -0
- package/dist-types/src/kanban/components/dashboard/virtualized-run-list.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/agent-panel.d.ts +8 -0
- package/dist-types/src/kanban/components/details/agent-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/json-tree/categorize.d.ts +26 -0
- package/dist-types/src/kanban/components/details/json-tree/categorize.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/json-tree/index.d.ts +10 -0
- package/dist-types/src/kanban/components/details/json-tree/index.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/json-tree/json-node.d.ts +25 -0
- package/dist-types/src/kanban/components/details/json-tree/json-node.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/json-tree/smart-summary.d.ts +54 -0
- package/dist-types/src/kanban/components/details/json-tree/smart-summary.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/json-tree/tree-controls.d.ts +7 -0
- package/dist-types/src/kanban/components/details/json-tree/tree-controls.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/json-tree.d.ts +9 -0
- package/dist-types/src/kanban/components/details/json-tree.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/log-viewer.d.ts +4 -0
- package/dist-types/src/kanban/components/details/log-viewer.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/task-detail.d.ts +14 -0
- package/dist-types/src/kanban/components/details/task-detail.d.ts.map +1 -0
- package/dist-types/src/kanban/components/details/timing-panel.d.ts +9 -0
- package/dist-types/src/kanban/components/details/timing-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/events/event-item.d.ts +7 -0
- package/dist-types/src/kanban/components/events/event-item.d.ts.map +1 -0
- package/dist-types/src/kanban/components/events/event-stream.d.ts +7 -0
- package/dist-types/src/kanban/components/events/event-stream.d.ts.map +1 -0
- package/dist-types/src/kanban/components/notifications/notification-panel.d.ts +9 -0
- package/dist-types/src/kanban/components/notifications/notification-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/notifications/notification-provider.d.ts +19 -0
- package/dist-types/src/kanban/components/notifications/notification-provider.d.ts.map +1 -0
- package/dist-types/src/kanban/components/notifications/toast-stack.d.ts +7 -0
- package/dist-types/src/kanban/components/notifications/toast-stack.d.ts.map +1 -0
- package/dist-types/src/kanban/components/pipeline/parallel-group.d.ts +13 -0
- package/dist-types/src/kanban/components/pipeline/parallel-group.d.ts.map +1 -0
- package/dist-types/src/kanban/components/pipeline/pipeline-view.d.ts +9 -0
- package/dist-types/src/kanban/components/pipeline/pipeline-view.d.ts.map +1 -0
- package/dist-types/src/kanban/components/pipeline/step-card.d.ts +12 -0
- package/dist-types/src/kanban/components/pipeline/step-card.d.ts.map +1 -0
- package/dist-types/src/kanban/components/providers/event-stream-provider.d.ts +11 -0
- package/dist-types/src/kanban/components/providers/event-stream-provider.d.ts.map +1 -0
- package/dist-types/src/kanban/components/providers.d.ts +3 -0
- package/dist-types/src/kanban/components/providers.d.ts.map +1 -0
- package/dist-types/src/kanban/components/review/review-panel.d.ts +26 -0
- package/dist-types/src/kanban/components/review/review-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/runs/run-realtime-execution-panel.d.ts +4 -0
- package/dist-types/src/kanban/components/runs/run-realtime-execution-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/sessions/session-conversation-surface.d.ts +33 -0
- package/dist-types/src/kanban/components/sessions/session-conversation-surface.d.ts.map +1 -0
- package/dist-types/src/kanban/components/sessions/session-observability-panel.d.ts +12 -0
- package/dist-types/src/kanban/components/sessions/session-observability-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/sessions/session-workspace-shell.d.ts +27 -0
- package/dist-types/src/kanban/components/sessions/session-workspace-shell.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/app-footer.d.ts +1 -0
- package/dist-types/src/kanban/components/shared/app-footer.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/app-header-nav.d.ts +29 -0
- package/dist-types/src/kanban/components/shared/app-header-nav.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/app-header.d.ts +2 -0
- package/dist-types/src/kanban/components/shared/app-header.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/dialog-shell.d.ts +8 -0
- package/dist-types/src/kanban/components/shared/dialog-shell.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/dispatch-context-audit-panel.d.ts +7 -0
- package/dist-types/src/kanban/components/shared/dispatch-context-audit-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/empty-state.d.ts +8 -0
- package/dist-types/src/kanban/components/shared/empty-state.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/error-boundary.d.ts +18 -0
- package/dist-types/src/kanban/components/shared/error-boundary.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/execution-context-panel.d.ts +8 -0
- package/dist-types/src/kanban/components/shared/execution-context-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/friendly-id.d.ts +6 -0
- package/dist-types/src/kanban/components/shared/friendly-id.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/kbd.d.ts +4 -0
- package/dist-types/src/kanban/components/shared/kbd.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/kind-badge.d.ts +5 -0
- package/dist-types/src/kanban/components/shared/kind-badge.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/metrics-row.d.ts +6 -0
- package/dist-types/src/kanban/components/shared/metrics-row.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/outcome-banner.d.ts +6 -0
- package/dist-types/src/kanban/components/shared/outcome-banner.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/page-shell.d.ts +17 -0
- package/dist-types/src/kanban/components/shared/page-shell.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/progress-bar.d.ts +9 -0
- package/dist-types/src/kanban/components/shared/progress-bar.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/session-pill.d.ts +7 -0
- package/dist-types/src/kanban/components/shared/session-pill.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/settings-modal.d.ts +6 -0
- package/dist-types/src/kanban/components/shared/settings-modal.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/shortcuts-help.d.ts +8 -0
- package/dist-types/src/kanban/components/shared/shortcuts-help.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/status-badge.d.ts +9 -0
- package/dist-types/src/kanban/components/shared/status-badge.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/theme-provider.d.ts +10 -0
- package/dist-types/src/kanban/components/shared/theme-provider.d.ts.map +1 -0
- package/dist-types/src/kanban/components/shared/truncated-id.d.ts +7 -0
- package/dist-types/src/kanban/components/shared/truncated-id.d.ts.map +1 -0
- package/dist-types/src/kanban/components/task-tags/task-tag-autocomplete-textarea.d.ts +13 -0
- package/dist-types/src/kanban/components/task-tags/task-tag-autocomplete-textarea.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/accordion.d.ts +24 -0
- package/dist-types/src/kanban/components/ui/accordion.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/badge.d.ts +8 -0
- package/dist-types/src/kanban/components/ui/badge.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/button.d.ts +11 -0
- package/dist-types/src/kanban/components/ui/button.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/card.d.ts +3 -0
- package/dist-types/src/kanban/components/ui/card.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/scroll-area.d.ts +7 -0
- package/dist-types/src/kanban/components/ui/scroll-area.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/separator.d.ts +4 -0
- package/dist-types/src/kanban/components/ui/separator.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/tabs.d.ts +25 -0
- package/dist-types/src/kanban/components/ui/tabs.d.ts.map +1 -0
- package/dist-types/src/kanban/components/ui/tooltip.d.ts +18 -0
- package/dist-types/src/kanban/components/ui/tooltip.d.ts.map +1 -0
- package/dist-types/src/kanban/components/workspaces/workspace-detail-shell.d.ts +50 -0
- package/dist-types/src/kanban/components/workspaces/workspace-detail-shell.d.ts.map +1 -0
- package/dist-types/src/kanban/components/workspaces/workspace-details-sidebar.d.ts +37 -0
- package/dist-types/src/kanban/components/workspaces/workspace-details-sidebar.d.ts.map +1 -0
- package/dist-types/src/kanban/components/workspaces/workspace-provisioning-page.d.ts +7 -0
- package/dist-types/src/kanban/components/workspaces/workspace-provisioning-page.d.ts.map +1 -0
- package/dist-types/src/kanban/components/workspaces/workspace-runtime-panel.d.ts +12 -0
- package/dist-types/src/kanban/components/workspaces/workspace-runtime-panel.d.ts.map +1 -0
- package/dist-types/src/kanban/components/workspaces/workspaces-page.d.ts +27 -0
- package/dist-types/src/kanban/components/workspaces/workspaces-page.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-animated-number.d.ts +9 -0
- package/dist-types/src/kanban/hooks/use-animated-number.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-backlog.d.ts +192 -0
- package/dist-types/src/kanban/hooks/use-backlog.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-batched-updates.d.ts +34 -0
- package/dist-types/src/kanban/hooks/use-batched-updates.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-event-stream.d.ts +16 -0
- package/dist-types/src/kanban/hooks/use-event-stream.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-keyboard.d.ts +8 -0
- package/dist-types/src/kanban/hooks/use-keyboard.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-notifications.d.ts +20 -0
- package/dist-types/src/kanban/hooks/use-notifications.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-persisted-state.d.ts +10 -0
- package/dist-types/src/kanban/hooks/use-persisted-state.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-polling.d.ts +11 -0
- package/dist-types/src/kanban/hooks/use-polling.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-project-runs.d.ts +17 -0
- package/dist-types/src/kanban/hooks/use-project-runs.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-projects.d.ts +8 -0
- package/dist-types/src/kanban/hooks/use-projects.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-reviews.d.ts +111 -0
- package/dist-types/src/kanban/hooks/use-reviews.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-run-dashboard.d.ts +42 -0
- package/dist-types/src/kanban/hooks/use-run-dashboard.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-run-detail.d.ts +12 -0
- package/dist-types/src/kanban/hooks/use-run-detail.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-smart-polling.d.ts +15 -0
- package/dist-types/src/kanban/hooks/use-smart-polling.d.ts.map +1 -0
- package/dist-types/src/kanban/hooks/use-task-tags.d.ts +6 -0
- package/dist-types/src/kanban/hooks/use-task-tags.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/agent-mux-ui.d.ts +2 -0
- package/dist-types/src/kanban/lib/agent-mux-ui.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/babysitter-overlays.d.ts +74 -0
- package/dist-types/src/kanban/lib/babysitter-overlays.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/cn.d.ts +2 -0
- package/dist-types/src/kanban/lib/cn.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/config-loader.d.ts +29 -0
- package/dist-types/src/kanban/lib/config-loader.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/config.d.ts +3 -0
- package/dist-types/src/kanban/lib/config.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/dispatch-context-audit.d.ts +12 -0
- package/dist-types/src/kanban/lib/dispatch-context-audit.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/error-handler.d.ts +28 -0
- package/dist-types/src/kanban/lib/error-handler.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/fetcher.d.ts +70 -0
- package/dist-types/src/kanban/lib/fetcher.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/gateway-runtime-config.d.ts +24 -0
- package/dist-types/src/kanban/lib/gateway-runtime-config.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/global-registry.d.ts +71 -0
- package/dist-types/src/kanban/lib/global-registry.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/parser.d.ts +36 -0
- package/dist-types/src/kanban/lib/parser.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/path-resolver.d.ts +2 -0
- package/dist-types/src/kanban/lib/path-resolver.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/review-service.d.ts +63 -0
- package/dist-types/src/kanban/lib/review-service.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/run-cache.d.ts +36 -0
- package/dist-types/src/kanban/lib/run-cache.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/server-init.d.ts +26 -0
- package/dist-types/src/kanban/lib/server-init.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/services/automation-rule-service.d.ts +97 -0
- package/dist-types/src/kanban/lib/services/automation-rule-service.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/services/automation-webhook-service.d.ts +44 -0
- package/dist-types/src/kanban/lib/services/automation-webhook-service.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/services/backlog-query-service.d.ts +124 -0
- package/dist-types/src/kanban/lib/services/backlog-query-service.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/services/dispatch-context-label-service.d.ts +39 -0
- package/dist-types/src/kanban/lib/services/dispatch-context-label-service.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/services/kanban-storage.d.ts +36 -0
- package/dist-types/src/kanban/lib/services/kanban-storage.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/services/run-query-service.d.ts +79 -0
- package/dist-types/src/kanban/lib/services/run-query-service.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/services/task-tag-service.d.ts +39 -0
- package/dist-types/src/kanban/lib/services/task-tag-service.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/settings-section-storage.d.ts +13 -0
- package/dist-types/src/kanban/lib/settings-section-storage.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/source-discovery.d.ts +10 -0
- package/dist-types/src/kanban/lib/source-discovery.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/utils.d.ts +8 -0
- package/dist-types/src/kanban/lib/utils.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/watcher.d.ts +14 -0
- package/dist-types/src/kanban/lib/watcher.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/workspace-layout-state.d.ts +20 -0
- package/dist-types/src/kanban/lib/workspace-layout-state.d.ts.map +1 -0
- package/dist-types/src/kanban/lib/workspace-lifecycle.d.ts +67 -0
- package/dist-types/src/kanban/lib/workspace-lifecycle.d.ts.map +1 -0
- package/dist-types/src/kanban/routes/AutomationsPage.d.ts +1 -0
- package/dist-types/src/kanban/routes/AutomationsPage.d.ts.map +1 -0
- package/dist-types/src/kanban/routes/ProjectsPage.d.ts +1 -0
- package/dist-types/src/kanban/routes/ProjectsPage.d.ts.map +1 -0
- package/dist-types/src/kanban/routes/SettingsPage.d.ts +1 -0
- package/dist-types/src/kanban/routes/SettingsPage.d.ts.map +1 -0
- package/dist-types/src/kanban/test/fixtures.d.ts +99 -0
- package/dist-types/src/kanban/test/fixtures.d.ts.map +1 -0
- package/dist-types/src/kanban/test/setup.d.ts +1 -0
- package/dist-types/src/kanban/test/setup.d.ts.map +1 -0
- package/dist-types/src/kanban/test/test-utils.d.ts +8 -0
- package/dist-types/src/kanban/test/test-utils.d.ts.map +1 -0
- package/dist-types/src/kanban/types/breakpoint.d.ts +13 -0
- package/dist-types/src/kanban/types/breakpoint.d.ts.map +1 -0
- package/dist-types/src/kanban/types/index.d.ts +173 -0
- package/dist-types/src/kanban/types/index.d.ts.map +1 -0
- package/dist-types/src/kanban-shims/next-link.d.ts +5 -0
- package/dist-types/src/kanban-shims/next-link.d.ts.map +1 -0
- package/dist-types/src/kanban-shims/next-navigation.d.ts +11 -0
- package/dist-types/src/kanban-shims/next-navigation.d.ts.map +1 -0
- package/dist-types/src/main.d.ts +3 -0
- package/dist-types/src/main.d.ts.map +1 -0
- package/dist-types/src/pages/AgentsPage.d.ts +1 -0
- package/dist-types/src/pages/AgentsPage.d.ts.map +1 -0
- package/dist-types/src/pages/HomePage.d.ts +1 -0
- package/dist-types/src/pages/HomePage.d.ts.map +1 -0
- package/dist-types/src/pages/HookInboxPage.d.ts +1 -0
- package/dist-types/src/pages/HookInboxPage.d.ts.map +1 -0
- package/dist-types/src/pages/KanbanLayout.d.ts +1 -0
- package/dist-types/src/pages/KanbanLayout.d.ts.map +1 -0
- package/dist-types/src/pages/KanbanPages.d.ts +14 -0
- package/dist-types/src/pages/KanbanPages.d.ts.map +1 -0
- package/dist-types/src/pages/LoginPage.d.ts +1 -0
- package/dist-types/src/pages/LoginPage.d.ts.map +1 -0
- package/dist-types/src/pages/NewRunPage.d.ts +1 -0
- package/dist-types/src/pages/NewRunPage.d.ts.map +1 -0
- package/dist-types/src/pages/PairDevicePage.d.ts +1 -0
- package/dist-types/src/pages/PairDevicePage.d.ts.map +1 -0
- package/dist-types/src/pages/RunPage.d.ts +1 -0
- package/dist-types/src/pages/RunPage.d.ts.map +1 -0
- package/dist-types/src/pages/SessionDetailPage.d.ts +1 -0
- package/dist-types/src/pages/SessionDetailPage.d.ts.map +1 -0
- package/dist-types/src/pages/SessionsPage.d.ts +1 -0
- package/dist-types/src/pages/SessionsPage.d.ts.map +1 -0
- package/dist-types/src/pages/SettingsPage.d.ts +1 -0
- package/dist-types/src/pages/SettingsPage.d.ts.map +1 -0
- package/dist-types/src/pages/WorkspacesPage.d.ts +1 -0
- package/dist-types/src/pages/WorkspacesPage.d.ts.map +1 -0
- package/dist-types/src/providers/GatewayProvider.d.ts +17 -0
- package/dist-types/src/providers/GatewayProvider.d.ts.map +1 -0
- package/dist-types/src/providers/NotificationProvider.d.ts +4 -0
- package/dist-types/src/providers/NotificationProvider.d.ts.map +1 -0
- package/dist-types/src/providers/ThemeProvider.d.ts +10 -0
- package/dist-types/src/providers/ThemeProvider.d.ts.map +1 -0
- package/dist-types/src/router.d.ts +1 -0
- package/dist-types/src/router.d.ts.map +1 -0
- package/dist-types/src/shell/CommandPalette.d.ts +10 -0
- package/dist-types/src/shell/CommandPalette.d.ts.map +1 -0
- package/dist-types/src/shell/Sidebar.d.ts +1 -0
- package/dist-types/src/shell/Sidebar.d.ts.map +1 -0
- package/dist-types/src/shell/TopBar.d.ts +4 -0
- package/dist-types/src/shell/TopBar.d.ts.map +1 -0
- package/dist-types/src/shell/navigation.d.ts +14 -0
- package/dist-types/src/shell/navigation.d.ts.map +1 -0
- package/dist-types/src/web-only/clipboard.d.ts +1 -0
- package/dist-types/src/web-only/clipboard.d.ts.map +1 -0
- package/dist-types/src/web-only/desktop-notifications.d.ts +6 -0
- package/dist-types/src/web-only/desktop-notifications.d.ts.map +1 -0
- package/dist-types/src/web-only/keyboard.d.ts +3 -0
- package/dist-types/src/web-only/keyboard.d.ts.map +1 -0
- package/dist-types/tsconfig.tsbuildinfo +1 -0
- package/dist-types/vite.config.d.ts +2 -0
- package/dist-types/vite.config.d.ts.map +1 -0
- package/package.json +80 -0
- package/public/favicon.svg +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-mux-ui.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/agent-mux-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,MAAM,EACN,eAAe,EACf,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { KanbanBacklogSnapshot, KanbanBoardSnapshot, KanbanReviewDecision, KanbanReviewArtifact, KanbanWorkflowState } from "@a5c-ai/agent-mux-core/kanban";
|
|
2
|
+
import type { Run } from "@/types";
|
|
3
|
+
export type BabysitterOverlayStage = "dispatch" | "executing" | "review" | "recovery" | "done";
|
|
4
|
+
export interface BoardExecutionOverlay {
|
|
5
|
+
issueId: string;
|
|
6
|
+
issueKey: string;
|
|
7
|
+
issueTitle: string;
|
|
8
|
+
workflowState: KanbanWorkflowState;
|
|
9
|
+
stage: BabysitterOverlayStage;
|
|
10
|
+
stageLabel: string;
|
|
11
|
+
reviewDecision?: KanbanReviewDecision;
|
|
12
|
+
runIds: string[];
|
|
13
|
+
sessionIds: string[];
|
|
14
|
+
runCount: number;
|
|
15
|
+
activeRuns: number;
|
|
16
|
+
failedRuns: number;
|
|
17
|
+
completedRuns: number;
|
|
18
|
+
staleRuns: number;
|
|
19
|
+
retryCount: number;
|
|
20
|
+
pendingBreakpoints: number;
|
|
21
|
+
stuck: boolean;
|
|
22
|
+
primaryRunId?: string;
|
|
23
|
+
primarySessionId?: string;
|
|
24
|
+
updatedAt?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface RunHealthRecord {
|
|
27
|
+
runId: string;
|
|
28
|
+
processId: string;
|
|
29
|
+
projectName?: string;
|
|
30
|
+
sessionId?: string;
|
|
31
|
+
status: Run["status"];
|
|
32
|
+
retryCount: number;
|
|
33
|
+
stuck: boolean;
|
|
34
|
+
pendingBreakpoints: number;
|
|
35
|
+
severity: "healthy" | "attention" | "critical";
|
|
36
|
+
recoveryHref: string;
|
|
37
|
+
reviewHref?: string;
|
|
38
|
+
summary: string;
|
|
39
|
+
updatedAt: string;
|
|
40
|
+
}
|
|
41
|
+
export interface RunArtifactShortcut {
|
|
42
|
+
runId: string;
|
|
43
|
+
processId: string;
|
|
44
|
+
status: Run["status"];
|
|
45
|
+
sessionId?: string;
|
|
46
|
+
breakpointEffectId?: string;
|
|
47
|
+
errorEffectId?: string;
|
|
48
|
+
logTaskCount: number;
|
|
49
|
+
resultTaskCount: number;
|
|
50
|
+
pendingBreakpointCount: number;
|
|
51
|
+
failedTaskCount: number;
|
|
52
|
+
}
|
|
53
|
+
export interface SessionTimelineItem {
|
|
54
|
+
id: string;
|
|
55
|
+
runId: string;
|
|
56
|
+
kind: "run" | "user" | "assistant" | "thinking" | "tool" | "approval" | "error" | "complete";
|
|
57
|
+
label: string;
|
|
58
|
+
text: string;
|
|
59
|
+
href?: string;
|
|
60
|
+
}
|
|
61
|
+
interface SessionEventBuffer {
|
|
62
|
+
events: Array<Record<string, unknown>>;
|
|
63
|
+
}
|
|
64
|
+
export declare function buildBoardExecutionOverlays(input: {
|
|
65
|
+
snapshot?: KanbanBacklogSnapshot;
|
|
66
|
+
board?: KanbanBoardSnapshot;
|
|
67
|
+
runs: Run[];
|
|
68
|
+
reviewArtifacts?: readonly KanbanReviewArtifact[];
|
|
69
|
+
nowMs?: number;
|
|
70
|
+
}): BoardExecutionOverlay[];
|
|
71
|
+
export declare function buildRunHealthRecords(runs: Run[], nowMs?: number): RunHealthRecord[];
|
|
72
|
+
export declare function buildRunArtifactShortcuts(runs: Array<Record<string, unknown>>): RunArtifactShortcut[];
|
|
73
|
+
export declare function buildSessionTimeline(runs: Array<Record<string, unknown>>, eventBuffers: Record<string, SessionEventBuffer | undefined>): SessionTimelineItem[];
|
|
74
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"babysitter-overlays.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/babysitter-overlays.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IAC7F,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxC;AAiCD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,eAAe,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,EAAE,CA2F1B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,SAAa,GAAG,eAAe,EAAE,CA0ExF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,mBAAmB,EAAE,CAuCrG;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC,GAC3D,mBAAmB,EAAE,CAwJvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Return true when err represents a "file/directory not found" filesystem error. */
|
|
2
|
+
export declare function isNotFoundError(err: unknown): boolean;
|
|
3
|
+
export interface WatchSource {
|
|
4
|
+
path: string;
|
|
5
|
+
depth: number;
|
|
6
|
+
label?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface KanbanConfig {
|
|
9
|
+
sources: WatchSource[];
|
|
10
|
+
port: number;
|
|
11
|
+
pollInterval: number;
|
|
12
|
+
theme: "dark" | "light";
|
|
13
|
+
staleThresholdMs: number;
|
|
14
|
+
recentCompletionWindowMs: number;
|
|
15
|
+
retentionDays: number;
|
|
16
|
+
hiddenProjects: string[];
|
|
17
|
+
}
|
|
18
|
+
export type ObserverConfig = KanbanConfig;
|
|
19
|
+
export declare function invalidateConfigCache(): void;
|
|
20
|
+
export declare function writeConfig(data: {
|
|
21
|
+
sources: WatchSource[];
|
|
22
|
+
pollInterval?: number;
|
|
23
|
+
theme?: string;
|
|
24
|
+
staleThresholdMs?: number;
|
|
25
|
+
recentCompletionWindowMs?: number;
|
|
26
|
+
retentionDays?: number;
|
|
27
|
+
hiddenProjects?: string[];
|
|
28
|
+
}): Promise<void>;
|
|
29
|
+
export declare function getConfig(): Promise<KanbanConfig>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/config-loader.ts"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIrD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AA4C1C,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAGD,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhB;AA+DD,wBAAsB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CAwCvD"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { isNotFoundError, type WatchSource, type KanbanConfig, type ObserverConfig, invalidateConfigCache, writeConfig, getConfig, } from "./config-loader";
|
|
2
|
+
export { type DiscoveredRun, invalidateDiscoveryCache, discoverAllRunDirs, discoverAllRunsParentDirs, } from "./source-discovery";
|
|
3
|
+
export { findRunDir } from "./path-resolver";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,qBAAqB,EACrB,WAAW,EACX,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,aAAa,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { KanbanBacklogSnapshot, KanbanDispatchContextExecutionEnvelope } from "@a5c-ai/agent-mux-core/kanban";
|
|
2
|
+
export interface DispatchContextAuditRecord {
|
|
3
|
+
readonly issueId: string;
|
|
4
|
+
readonly issueKey: string;
|
|
5
|
+
readonly issueTitle: string;
|
|
6
|
+
readonly runIds: readonly string[];
|
|
7
|
+
readonly sessionIds: readonly string[];
|
|
8
|
+
readonly lastDispatchedAt?: string;
|
|
9
|
+
readonly executionContext: KanbanDispatchContextExecutionEnvelope;
|
|
10
|
+
}
|
|
11
|
+
export declare function findDispatchContextAuditsByRunId(snapshot: KanbanBacklogSnapshot | null | undefined, runId: string): DispatchContextAuditRecord[];
|
|
12
|
+
export declare function findDispatchContextAuditsBySessionId(snapshot: KanbanBacklogSnapshot | null | undefined, sessionId: string): DispatchContextAuditRecord[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-context-audit.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/dispatch-context-audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sCAAsC,EAEvC,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;CACnE;AA4BD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EAClD,KAAK,EAAE,MAAM,GACZ,0BAA0B,EAAE,CAW9B;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EAClD,SAAS,EAAE,MAAM,GAChB,0BAA0B,EAAE,CAW9B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized error handling utilities.
|
|
3
|
+
*
|
|
4
|
+
* - `AppError` – typed error with HTTP status and machine-readable code.
|
|
5
|
+
* - `normalizeError` – converts any thrown value (Error, string, object,
|
|
6
|
+
* undefined, etc.) into a consistent `{ message, code, status }` shape
|
|
7
|
+
* safe for API responses (never leaks stack traces).
|
|
8
|
+
*/
|
|
9
|
+
export declare class AppError extends Error {
|
|
10
|
+
readonly code: string;
|
|
11
|
+
readonly status: number;
|
|
12
|
+
constructor(message: string, code: string, status: number);
|
|
13
|
+
}
|
|
14
|
+
export interface NormalizedError {
|
|
15
|
+
message: string;
|
|
16
|
+
code: string;
|
|
17
|
+
status: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Convert any thrown value into a consistent error shape.
|
|
21
|
+
*
|
|
22
|
+
* - `AppError` → preserves code & status.
|
|
23
|
+
* - Standard `Error` → maps common system errors (ENOENT, EACCES, ENOTDIR)
|
|
24
|
+
* to appropriate HTTP status codes; defaults to 500.
|
|
25
|
+
* - `string` → wraps as 500 internal error.
|
|
26
|
+
* - Anything else (null, undefined, number, object) → generic 500.
|
|
27
|
+
*/
|
|
28
|
+
export declare function normalizeError(err: unknown): NormalizedError;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAS1D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAoC5D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Normalized error shape returned on failure. */
|
|
2
|
+
export interface FetchError {
|
|
3
|
+
/** HTTP status code, or 0 for network / timeout / abort errors. */
|
|
4
|
+
status: number;
|
|
5
|
+
/** Human-readable description of what went wrong. */
|
|
6
|
+
message: string;
|
|
7
|
+
/** Whether the request was (or could have been) retried. */
|
|
8
|
+
isRetryable: boolean;
|
|
9
|
+
/** Whether the request was cancelled via an AbortSignal. */
|
|
10
|
+
isAborted: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** Options accepted by {@link resilientFetch}. */
|
|
13
|
+
export interface FetchOptions {
|
|
14
|
+
/** Optional external AbortSignal (e.g. from a hook cleanup). */
|
|
15
|
+
signal?: AbortSignal;
|
|
16
|
+
/** Maximum number of retry attempts for retryable errors (default 2). */
|
|
17
|
+
retries?: number;
|
|
18
|
+
/** Base delay in ms for exponential backoff (default 1000). */
|
|
19
|
+
retryDelay?: number;
|
|
20
|
+
/** Request timeout in ms (default 10000). */
|
|
21
|
+
timeout?: number;
|
|
22
|
+
/** HTTP method (default "GET"). */
|
|
23
|
+
method?: string;
|
|
24
|
+
/** Additional request headers. */
|
|
25
|
+
headers?: Record<string, string>;
|
|
26
|
+
/** Request body (stringified JSON, form data, etc.). */
|
|
27
|
+
body?: string;
|
|
28
|
+
}
|
|
29
|
+
/** Discriminated union representing a successful or failed fetch. */
|
|
30
|
+
export type FetchResult<T> = {
|
|
31
|
+
ok: true;
|
|
32
|
+
data: T;
|
|
33
|
+
status: number;
|
|
34
|
+
} | {
|
|
35
|
+
ok: false;
|
|
36
|
+
error: FetchError;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Perform an HTTP fetch with built-in **retry**, **timeout**, **abort**,
|
|
40
|
+
* and **ETag** support. Returns a discriminated-union result so callers
|
|
41
|
+
* never need to catch exceptions.
|
|
42
|
+
*
|
|
43
|
+
* ETag behaviour:
|
|
44
|
+
* - On successful responses with an ETag header, the response data and ETag
|
|
45
|
+
* are cached. On subsequent requests to the same URL, an `If-None-Match`
|
|
46
|
+
* header is sent. If the server returns 304, the cached data is returned
|
|
47
|
+
* without re-parsing JSON, saving bandwidth and CPU.
|
|
48
|
+
*
|
|
49
|
+
* Retry behaviour:
|
|
50
|
+
* - Network errors and 5xx responses are retried up to `options.retries`
|
|
51
|
+
* times (default 2) with exponential backoff starting at
|
|
52
|
+
* `options.retryDelay` ms (default 1000).
|
|
53
|
+
* - 4xx (client) errors are **not** retried.
|
|
54
|
+
*
|
|
55
|
+
* Abort / timeout:
|
|
56
|
+
* - An internal AbortController enforces `options.timeout` (default 10 000 ms).
|
|
57
|
+
* - If `options.signal` is provided it is merged with the internal timeout
|
|
58
|
+
* signal; aborting either one cancels the in-flight request immediately.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const result = await resilientFetch<Run[]>("/api/runs");
|
|
63
|
+
* if (result.ok) {
|
|
64
|
+
* console.log(result.data);
|
|
65
|
+
* } else {
|
|
66
|
+
* console.error(result.error.message);
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function resilientFetch<T>(url: string, options?: FetchOptions): Promise<FetchResult<T>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/fetcher.ts"],"names":[],"mappings":"AAIA,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,WAAW,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAkIrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CA+LzB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const DEFAULT_LOCAL_GATEWAY_URL = "http://127.0.0.1:7878";
|
|
2
|
+
export declare const DEFAULT_BOOTSTRAP_LOGIN_PATH = "/api/v1/bootstrap/login";
|
|
3
|
+
export type GatewayAuthMode = "manual" | "bootstrap-admin";
|
|
4
|
+
export interface GatewayRuntimeConfig {
|
|
5
|
+
defaultGatewayUrl: string | null;
|
|
6
|
+
proxyGatewayUrl: string;
|
|
7
|
+
authMode: GatewayAuthMode;
|
|
8
|
+
bootstrapAdminUsername: string | null;
|
|
9
|
+
bootstrapLoginPath: string;
|
|
10
|
+
}
|
|
11
|
+
export interface PublicGatewayRuntimeConfig {
|
|
12
|
+
defaultGatewayUrl: string | null;
|
|
13
|
+
authMode: GatewayAuthMode;
|
|
14
|
+
bootstrapAdminUsername: string | null;
|
|
15
|
+
bootstrapLoginPath: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function sanitizeGatewayUrl(url: string): string;
|
|
18
|
+
export declare function normalizeGatewayUrl(url: string | null | undefined): string | null;
|
|
19
|
+
export declare function resolveGatewayAuthMode(value: string | null | undefined): GatewayAuthMode;
|
|
20
|
+
export declare function resolveGatewayRuntimeConfig(env?: NodeJS.ProcessEnv): GatewayRuntimeConfig;
|
|
21
|
+
export declare function toPublicGatewayRuntimeConfig(config: GatewayRuntimeConfig): PublicGatewayRuntimeConfig;
|
|
22
|
+
export declare function buildGatewayTargetUrl(baseUrl: string, pathname: string, search?: string): string;
|
|
23
|
+
export declare function gatewayProxyPath(pathname: string): string;
|
|
24
|
+
export declare function extractBootstrapToken(payload: unknown): string | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-runtime-config.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/gateway-runtime-config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAsBjF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,CAKxF;AAED,wBAAgB,2BAA2B,CACzC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,oBAAoB,CAwBtB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,oBAAoB,GAC3B,0BAA0B,CAO5B;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAK,GACV,MAAM,CAOR;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzD;AAyBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMrE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed GlobalRegistry — replaces raw `(globalThis as any).__key` casts with
|
|
3
|
+
* type-safe accessors that persist across HMR reloads.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* const cache = getGlobal('__kanban_run_cache__', () => new Map<string, CacheEntry>());
|
|
7
|
+
*
|
|
8
|
+
* The first call lazily initialises the value on `globalThis`; subsequent calls
|
|
9
|
+
* (including after HMR) return the existing instance.
|
|
10
|
+
*/
|
|
11
|
+
import type { EventEmitter } from "events";
|
|
12
|
+
import type { FSWatcher } from "fs";
|
|
13
|
+
/**
|
|
14
|
+
* Maps each globalThis key to its concrete runtime type.
|
|
15
|
+
*
|
|
16
|
+
* Every module that needs HMR-safe global state registers its key + type here
|
|
17
|
+
* so the accessor can enforce type safety without `any` casts.
|
|
18
|
+
*/
|
|
19
|
+
export interface GlobalRegistryMap {
|
|
20
|
+
/** run-cache.ts — Map of runDir to CacheEntry */
|
|
21
|
+
__kanban_run_cache__: Map<string, unknown>;
|
|
22
|
+
/** watcher.ts — shared EventEmitter for watcher change events */
|
|
23
|
+
__kanban_watcher_events__: EventEmitter;
|
|
24
|
+
/** watcher.ts — active FSWatcher instances + debounce timers */
|
|
25
|
+
__kanban_watchers__: {
|
|
26
|
+
activeWatchers: Map<string, FSWatcher>;
|
|
27
|
+
debounceTimers: Map<string, NodeJS.Timeout>;
|
|
28
|
+
rescanTimer: NodeJS.Timeout | null;
|
|
29
|
+
};
|
|
30
|
+
/** server-init.ts — shared EventEmitter for SSE server events */
|
|
31
|
+
__kanban_server_events__: EventEmitter;
|
|
32
|
+
/** server-init.ts — leading-edge debounce state for SSE broadcasts */
|
|
33
|
+
__kanban_sse_debounce__: {
|
|
34
|
+
pendingRunDirs: Set<string>;
|
|
35
|
+
timer: ReturnType<typeof setTimeout> | null;
|
|
36
|
+
windowOpen: boolean;
|
|
37
|
+
};
|
|
38
|
+
/** server-init.ts — initialization state (singleton guard) */
|
|
39
|
+
__kanban_init__: {
|
|
40
|
+
initialized: boolean;
|
|
41
|
+
initPromise: Promise<void> | null;
|
|
42
|
+
cleanup: (() => void) | null;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
declare global {
|
|
46
|
+
var __kanban_registry__: Partial<GlobalRegistryMap> | undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Return an HMR-safe global value, lazily initialising it via `factory` on
|
|
50
|
+
* first access.
|
|
51
|
+
*
|
|
52
|
+
* The value is stored on `globalThis.__kanban_registry__` under the given
|
|
53
|
+
* key so it survives hot-module reloads.
|
|
54
|
+
*
|
|
55
|
+
* @param key One of the keys declared in {@link GlobalRegistryMap}.
|
|
56
|
+
* @param factory Called once to create the initial value if it does not exist.
|
|
57
|
+
* @returns The (possibly pre-existing) value.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getGlobal<K extends keyof GlobalRegistryMap>(key: K, factory: () => GlobalRegistryMap[K]): GlobalRegistryMap[K];
|
|
60
|
+
/**
|
|
61
|
+
* Clear a single key from the global registry.
|
|
62
|
+
*
|
|
63
|
+
* Primarily useful during shutdown / test teardown.
|
|
64
|
+
*/
|
|
65
|
+
export declare function clearGlobal<K extends keyof GlobalRegistryMap>(key: K): void;
|
|
66
|
+
/**
|
|
67
|
+
* Clear the entire global registry.
|
|
68
|
+
*
|
|
69
|
+
* Primarily useful in tests.
|
|
70
|
+
*/
|
|
71
|
+
export declare function clearAllGlobals(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-registry.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/global-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAOpC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C,iEAAiE;IACjE,yBAAyB,EAAE,YAAY,CAAC;IAExC,gEAAgE;IAChE,mBAAmB,EAAE;QACnB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,WAAW,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;KACpC,CAAC;IAEF,iEAAiE;IACjE,wBAAwB,EAAE,YAAY,CAAC;IAEvC,sEAAsE;IACtE,uBAAuB,EAAE;QACvB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;QAC5C,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IAEF,8DAA8D;IAC9D,eAAe,EAAE;QACf,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9B,CAAC;CACH;AAMD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,mBAAmB,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;CACjE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACzD,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAClC,iBAAiB,CAAC,CAAC,CAAC,CAYtB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Run, JournalEvent, TaskDetail, RunDigest } from "@/types";
|
|
2
|
+
/** Result of an incremental journal parse. */
|
|
3
|
+
export interface IncrementalJournalResult {
|
|
4
|
+
events: JournalEvent[];
|
|
5
|
+
/** Number of JSON files in the journal directory after this parse. */
|
|
6
|
+
fileCount: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function parseJournalDir(journalPath: string): Promise<JournalEvent[]>;
|
|
9
|
+
/**
|
|
10
|
+
* Incrementally parse a journal directory.
|
|
11
|
+
*
|
|
12
|
+
* When `previousEvents` and `previousFileCount` are supplied the function
|
|
13
|
+
* skips files that were already parsed in a previous call. If the
|
|
14
|
+
* directory now has *fewer* files than `previousFileCount` (truncation /
|
|
15
|
+
* rotation) the journal is re-read from scratch.
|
|
16
|
+
*
|
|
17
|
+
* @param journalPath Path to the journal directory.
|
|
18
|
+
* @param previousEvents Events returned by a prior call (used as base for merge).
|
|
19
|
+
* @param previousFileCount Number of JSON files that existed during the prior call.
|
|
20
|
+
* @returns Merged events array (sorted by seq) and the current file count.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseJournalDirIncremental(journalPath: string, previousEvents?: JournalEvent[], previousFileCount?: number): Promise<IncrementalJournalResult>;
|
|
23
|
+
/** Options for incremental run parsing. */
|
|
24
|
+
export interface IncrementalRunOptions {
|
|
25
|
+
previousEvents?: JournalEvent[];
|
|
26
|
+
previousFileCount?: number;
|
|
27
|
+
}
|
|
28
|
+
/** Extended Run result that includes the journal file count for caching. */
|
|
29
|
+
export interface ParseRunResult extends Run {
|
|
30
|
+
/** Number of journal files parsed — used by the cache layer for incremental reads. */
|
|
31
|
+
_journalFileCount: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function parseRunDir(runPath: string, incremental?: IncrementalRunOptions): Promise<ParseRunResult>;
|
|
34
|
+
export declare function parseTaskDetail(runPath: string, effectId: string): Promise<TaskDetail | null>;
|
|
35
|
+
export declare function getRunDigest(runPath: string): Promise<RunDigest>;
|
|
36
|
+
export declare function getRunIds(runsPath: string): Promise<string[]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/parser.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,GAAG,EAEH,YAAY,EAEZ,UAAU,EAEV,SAAS,EAIV,MAAM,SAAS,CAAC;AA+FjB,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAGzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,YAAY,EAAE,EAC/B,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,wBAAwB,CAAC,CAmEnC;AAED,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAe,SAAQ,GAAG;IACzC,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,cAAc,CAAC,CA6NzB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAqG5B;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAmKtE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolver.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/path-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAgD,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKtG,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAS7E"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import { type KanbanCiGate, type KanbanIntegrationProvider, type KanbanMergeStatus, type KanbanPublishStatus, type KanbanPullRequestStatus, type KanbanReviewArtifact, type KanbanReviewCommentAnchor, type KanbanReviewFeedbackSource, type KanbanReviewDecision, type KanbanReviewStatus, type KanbanReviewSnapshot } from "@a5c-ai/agent-mux-core/kanban";
|
|
3
|
+
export interface ReviewServiceDeps {
|
|
4
|
+
readFile: typeof fs.readFile;
|
|
5
|
+
writeFile: typeof fs.writeFile;
|
|
6
|
+
mkdir: typeof fs.mkdir;
|
|
7
|
+
reviewFilePath: string;
|
|
8
|
+
now: () => string;
|
|
9
|
+
cwd: () => string;
|
|
10
|
+
}
|
|
11
|
+
export type ReviewActionInput = {
|
|
12
|
+
action: "submit-review";
|
|
13
|
+
artifactId: string;
|
|
14
|
+
decision: KanbanReviewDecision;
|
|
15
|
+
summary?: string;
|
|
16
|
+
executionTargetId?: string;
|
|
17
|
+
} | {
|
|
18
|
+
action: "approve";
|
|
19
|
+
artifactId: string;
|
|
20
|
+
} | {
|
|
21
|
+
action: "request-changes";
|
|
22
|
+
artifactId: string;
|
|
23
|
+
} | {
|
|
24
|
+
action: "add-comment";
|
|
25
|
+
artifactId: string;
|
|
26
|
+
body: string;
|
|
27
|
+
anchor: KanbanReviewCommentAnchor;
|
|
28
|
+
authorName?: string;
|
|
29
|
+
feedbackSource?: KanbanReviewFeedbackSource;
|
|
30
|
+
} | {
|
|
31
|
+
action: "create-pull-request";
|
|
32
|
+
artifactId: string;
|
|
33
|
+
provider?: KanbanIntegrationProvider;
|
|
34
|
+
title: string;
|
|
35
|
+
reviewers?: string;
|
|
36
|
+
branchName?: string;
|
|
37
|
+
baseBranch?: string;
|
|
38
|
+
url?: string;
|
|
39
|
+
} | {
|
|
40
|
+
action: "link-pull-request";
|
|
41
|
+
artifactId: string;
|
|
42
|
+
provider?: KanbanIntegrationProvider;
|
|
43
|
+
number: number;
|
|
44
|
+
title: string;
|
|
45
|
+
status?: KanbanPullRequestStatus;
|
|
46
|
+
reviewStatus?: KanbanReviewStatus;
|
|
47
|
+
mergeStatus?: KanbanMergeStatus;
|
|
48
|
+
publishStatus?: KanbanPublishStatus;
|
|
49
|
+
ciGates?: readonly KanbanCiGate[];
|
|
50
|
+
branchName?: string;
|
|
51
|
+
baseBranch?: string;
|
|
52
|
+
url?: string;
|
|
53
|
+
};
|
|
54
|
+
export declare class ReviewService {
|
|
55
|
+
private readonly deps;
|
|
56
|
+
constructor(overrides?: Partial<ReviewServiceDeps>);
|
|
57
|
+
private readArtifacts;
|
|
58
|
+
listReviews(filter?: {
|
|
59
|
+
targetType?: KanbanReviewArtifact["targetType"];
|
|
60
|
+
targetId?: string;
|
|
61
|
+
}): Promise<KanbanReviewSnapshot>;
|
|
62
|
+
applyAction(input: ReviewActionInput): Promise<KanbanReviewSnapshot>;
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-service.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/review-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAIzC,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAEzB,KAAK,yBAAyB,EAE9B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AASvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC;IAC7B,SAAS,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC;IAC/B,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,yBAAyB,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,0BAA0B,CAAC;CAC7C,GACD;IACE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACD;IACE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAuZN,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;gBAE7B,SAAS,GAAE,OAAO,CAAC,iBAAiB,CAAM;YAIxC,aAAa;IAqBrB,WAAW,CAAC,MAAM,GAAE;QACxB,UAAU,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAKhC,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAuL3E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { WatchSource } from "./config-loader";
|
|
2
|
+
import type { RunDigest, Run, ProjectSummary } from "@/types";
|
|
3
|
+
export interface CachedRunDigest extends RunDigest {
|
|
4
|
+
processId: string;
|
|
5
|
+
sourceLabel?: string;
|
|
6
|
+
projectName?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function getDigestCached(runDir: string, source: WatchSource, projectName: string): Promise<CachedRunDigest>;
|
|
9
|
+
export declare function getRunCached(runDir: string, source: WatchSource, projectName: string): Promise<Run>;
|
|
10
|
+
export declare function invalidateRun(runDir: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Force-invalidate all cached entries that have pending breakpoints.
|
|
13
|
+
*
|
|
14
|
+
* Design note: this intentionally checks only `pendingBreakpoints > 0` without
|
|
15
|
+
* also requiring `waitingKind === "breakpoint"`. The broader condition is safer
|
|
16
|
+
* because it ensures *any* entry that might represent a breakpoint — even one
|
|
17
|
+
* whose waitingKind was not yet set by the parser — is evicted and refetched.
|
|
18
|
+
* `getProjectSummaries()` applies the stricter `waitingKind === "breakpoint"`
|
|
19
|
+
* filter when *counting* breakpoints for display, so the worst case of a
|
|
20
|
+
* broader eviction here is an extra cache miss, not a false positive in the UI.
|
|
21
|
+
*/
|
|
22
|
+
export declare function forceRefreshBreakpointRuns(): void;
|
|
23
|
+
export declare function invalidateAll(): void;
|
|
24
|
+
export declare function getProjectSummaries(): ProjectSummary[];
|
|
25
|
+
export declare function requestDiscovery(): void;
|
|
26
|
+
export declare function discoverAndCacheAll(): Promise<void>;
|
|
27
|
+
export declare function getAllCachedDigests(): CachedRunDigest[];
|
|
28
|
+
export declare function getCacheStats(): {
|
|
29
|
+
size: number;
|
|
30
|
+
entries: {
|
|
31
|
+
runDir: string;
|
|
32
|
+
status: import("@/types").RunStatus;
|
|
33
|
+
cachedAt: number;
|
|
34
|
+
hasFullRun: boolean;
|
|
35
|
+
}[];
|
|
36
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-cache.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/run-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAa9D,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiFD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAmC1B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC,CAoDd;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAOjD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAgFtD;AAQD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDzD;AAID,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAOvD;AAGD,wBAAgB,aAAa;;;;;;;;EAW5B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import { type WatcherEvent } from "./watcher";
|
|
3
|
+
export declare const serverEvents: EventEmitter<[never]>;
|
|
4
|
+
export declare const SSE_DEBOUNCE_MS = 500;
|
|
5
|
+
export interface BatchedRunChangedEvent {
|
|
6
|
+
type: "run-changed";
|
|
7
|
+
runIds: string[];
|
|
8
|
+
runDirs: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function resetDebounceState(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Enqueue a run-changed event into the leading-edge debounce.
|
|
13
|
+
*
|
|
14
|
+
* Behaviour:
|
|
15
|
+
* 1. If no window is open, emit immediately (leading edge) and open window.
|
|
16
|
+
* 2. If window is already open, collect the runDir and reset the 500ms timer
|
|
17
|
+
* (trailing flush).
|
|
18
|
+
*/
|
|
19
|
+
export declare function enqueueRunChanged(event: WatcherEvent): void;
|
|
20
|
+
export declare function ensureInitialized(): Promise<void>;
|
|
21
|
+
export declare function shutdownServer(): Promise<void>;
|
|
22
|
+
export declare function getInitStatus(): {
|
|
23
|
+
initialized: boolean;
|
|
24
|
+
hasCleanup: boolean;
|
|
25
|
+
serverEventListeners: number;
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-init.d.ts","sourceRoot":"","sources":["../../../../src/kanban/lib/server-init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAS1E,eAAO,MAAM,YAAY,uBAAoB,CAAC;AAW9C,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAkBD,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAoBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA8B3D;AAiBD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmEvD;AAGD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBpD;AAGD,wBAAgB,aAAa;;;;EAO5B"}
|