nastechai-desktop 18.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc +11 -0
- package/DESIGN.md +167 -0
- package/README.md +141 -0
- package/assets/icon.icns +0 -0
- package/assets/icon.ico +0 -0
- package/assets/icon.png +0 -0
- package/components.json +21 -0
- package/electron/backend-env.cjs +112 -0
- package/electron/backend-env.test.cjs +111 -0
- package/electron/backend-probes.cjs +106 -0
- package/electron/backend-probes.test.cjs +82 -0
- package/electron/backend-ready.cjs +66 -0
- package/electron/bootstrap-platform.cjs +91 -0
- package/electron/bootstrap-platform.test.cjs +111 -0
- package/electron/bootstrap-runner.cjs +720 -0
- package/electron/bootstrap-runner.test.cjs +138 -0
- package/electron/connection-config.cjs +254 -0
- package/electron/connection-config.test.cjs +329 -0
- package/electron/dashboard-token.cjs +99 -0
- package/electron/dashboard-token.test.cjs +142 -0
- package/electron/desktop-uninstall.cjs +232 -0
- package/electron/desktop-uninstall.test.cjs +246 -0
- package/electron/entitlements.mac.inherit.plist +14 -0
- package/electron/entitlements.mac.plist +14 -0
- package/electron/fs-read-dir.cjs +109 -0
- package/electron/fs-read-dir.test.cjs +364 -0
- package/electron/gateway-ws-probe.cjs +188 -0
- package/electron/gateway-ws-probe.test.cjs +122 -0
- package/electron/git-root.cjs +54 -0
- package/electron/git-root.test.cjs +40 -0
- package/electron/git-worktrees.cjs +174 -0
- package/electron/hardening.cjs +184 -0
- package/electron/hardening.test.cjs +116 -0
- package/electron/main.cjs +5762 -0
- package/electron/oauth-net-request.cjs +20 -0
- package/electron/oauth-net-request.test.cjs +34 -0
- package/electron/preload.cjs +135 -0
- package/electron/session-windows.cjs +99 -0
- package/electron/session-windows.test.cjs +177 -0
- package/electron/update-remote.cjs +56 -0
- package/electron/update-remote.test.cjs +78 -0
- package/electron/vscode-marketplace.cjs +331 -0
- package/electron/vscode-marketplace.test.cjs +113 -0
- package/electron/windows-child-process.test.cjs +57 -0
- package/electron/windows-user-env.cjs +76 -0
- package/electron/windows-user-env.test.cjs +90 -0
- package/electron/workspace-cwd.cjs +38 -0
- package/electron/workspace-cwd.test.cjs +45 -0
- package/eslint.config.mjs +122 -0
- package/index.html +17 -0
- package/package.json +254 -0
- package/pr-assets/session-source-folders.png +0 -0
- package/preview-demo.html +65 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/ds-assets/filler-bg0.jpg +0 -0
- package/public/nastech-frames/nastech-frame-0.png +0 -0
- package/public/nastech-frames/nastech-frame-1.png +0 -0
- package/public/nastech-frames/nastech-frame-2.png +0 -0
- package/public/nastech-frames/nastech-frame-3.png +0 -0
- package/public/nastech-frames/nastech-frame-4.png +0 -0
- package/public/nastech-frames/nastech-frame-5.png +0 -0
- package/public/nastech-frames/nastech-frame-6.png +0 -0
- package/public/nastech-frames/nastech-frame-7.png +0 -0
- package/public/nastech-girl.jpg +0 -0
- package/public/nastech-sprite.png +0 -0
- package/public/nastech.png +0 -0
- package/scripts/after-pack.cjs +41 -0
- package/scripts/assert-dist-built.cjs +70 -0
- package/scripts/assert-dist-built.test.cjs +84 -0
- package/scripts/assert-root-install.cjs +13 -0
- package/scripts/before-build.cjs +11 -0
- package/scripts/before-pack.cjs +78 -0
- package/scripts/before-pack.test.cjs +53 -0
- package/scripts/click-session.mjs +51 -0
- package/scripts/dev-no-hmr.mjs +22 -0
- package/scripts/diag-jump.mjs +115 -0
- package/scripts/diag-scroll-reset.mjs +229 -0
- package/scripts/eval.mjs +21 -0
- package/scripts/leak-typing.mjs +222 -0
- package/scripts/measure-jump.mjs +108 -0
- package/scripts/measure-latency.mjs +184 -0
- package/scripts/measure-real-stream.mjs +252 -0
- package/scripts/measure-submit.mjs +179 -0
- package/scripts/measure-synthetic-stream.mjs +322 -0
- package/scripts/notarize-artifact.cjs +77 -0
- package/scripts/notarize.cjs +100 -0
- package/scripts/patch-electron-builder-mac-binary.cjs +59 -0
- package/scripts/probe-renderer.mjs +38 -0
- package/scripts/probe-thread.mjs +40 -0
- package/scripts/profile-long-stream.mjs +191 -0
- package/scripts/profile-real-stream.mjs +137 -0
- package/scripts/profile-synth-stream.mjs +103 -0
- package/scripts/profile-typing-lag.md +381 -0
- package/scripts/profile-typing.mjs +260 -0
- package/scripts/reload-renderer.mjs +25 -0
- package/scripts/reload.mjs +36 -0
- package/scripts/set-exe-identity.cjs +94 -0
- package/scripts/stage-native-deps.cjs +159 -0
- package/scripts/test-desktop.mjs +425 -0
- package/scripts/write-build-stamp.cjs +126 -0
- package/src/app/agents/index.tsx +398 -0
- package/src/app/artifacts/index.test.ts +62 -0
- package/src/app/artifacts/index.tsx +906 -0
- package/src/app/chat/chat-drop-overlay.tsx +48 -0
- package/src/app/chat/chat-swap-overlay.tsx +47 -0
- package/src/app/chat/composer/attachments.tsx +114 -0
- package/src/app/chat/composer/completion-drawer.tsx +63 -0
- package/src/app/chat/composer/context-menu.tsx +172 -0
- package/src/app/chat/composer/controls.tsx +289 -0
- package/src/app/chat/composer/drop-affordance.ts +2 -0
- package/src/app/chat/composer/enter-submit-dom-race.test.tsx +218 -0
- package/src/app/chat/composer/focus.ts +134 -0
- package/src/app/chat/composer/help-hint.tsx +59 -0
- package/src/app/chat/composer/hooks/use-at-completions.ts +141 -0
- package/src/app/chat/composer/hooks/use-live-completion-adapter.ts +119 -0
- package/src/app/chat/composer/hooks/use-mic-recorder.ts +291 -0
- package/src/app/chat/composer/hooks/use-slash-completions.ts +114 -0
- package/src/app/chat/composer/hooks/use-voice-conversation.ts +390 -0
- package/src/app/chat/composer/hooks/use-voice-recorder.ts +116 -0
- package/src/app/chat/composer/ime-composition-dom-repro.test.tsx +108 -0
- package/src/app/chat/composer/index.tsx +1611 -0
- package/src/app/chat/composer/inline-refs.ts +138 -0
- package/src/app/chat/composer/model-pill.tsx +86 -0
- package/src/app/chat/composer/queue-panel.tsx +130 -0
- package/src/app/chat/composer/rich-editor.test.ts +18 -0
- package/src/app/chat/composer/rich-editor.ts +165 -0
- package/src/app/chat/composer/skin-slash-popover.tsx +61 -0
- package/src/app/chat/composer/slash-nav-dom-repro.test.tsx +186 -0
- package/src/app/chat/composer/status-stack/index.tsx +202 -0
- package/src/app/chat/composer/status-stack/status-row.tsx +155 -0
- package/src/app/chat/composer/text-utils.test.ts +77 -0
- package/src/app/chat/composer/text-utils.ts +107 -0
- package/src/app/chat/composer/trigger-popover.test.tsx +42 -0
- package/src/app/chat/composer/trigger-popover.tsx +116 -0
- package/src/app/chat/composer/types.ts +64 -0
- package/src/app/chat/composer/url-dialog.tsx +82 -0
- package/src/app/chat/composer/voice-activity.tsx +252 -0
- package/src/app/chat/hooks/use-composer-actions.test.ts +57 -0
- package/src/app/chat/hooks/use-composer-actions.ts +525 -0
- package/src/app/chat/hooks/use-file-drop-zone.ts +118 -0
- package/src/app/chat/index.tsx +390 -0
- package/src/app/chat/perf-probe.tsx +269 -0
- package/src/app/chat/right-rail/index.ts +1 -0
- package/src/app/chat/right-rail/preview-console-state.ts +82 -0
- package/src/app/chat/right-rail/preview-console.tsx +290 -0
- package/src/app/chat/right-rail/preview-file.tsx +559 -0
- package/src/app/chat/right-rail/preview-pane.test.tsx +43 -0
- package/src/app/chat/right-rail/preview-pane.tsx +657 -0
- package/src/app/chat/right-rail/preview.tsx +171 -0
- package/src/app/chat/scroll-to-bottom-button.test.tsx +67 -0
- package/src/app/chat/scroll-to-bottom-button.tsx +74 -0
- package/src/app/chat/sidebar/cron-jobs-section.tsx +325 -0
- package/src/app/chat/sidebar/index.tsx +1219 -0
- package/src/app/chat/sidebar/load-more-row.tsx +30 -0
- package/src/app/chat/sidebar/order.test.ts +21 -0
- package/src/app/chat/sidebar/order.ts +17 -0
- package/src/app/chat/sidebar/profile-switcher.tsx +516 -0
- package/src/app/chat/sidebar/session-actions-menu.tsx +264 -0
- package/src/app/chat/sidebar/session-row.tsx +257 -0
- package/src/app/chat/sidebar/virtual-session-list.tsx +154 -0
- package/src/app/chat/sidebar/workspace-groups.test.ts +149 -0
- package/src/app/chat/sidebar/workspace-groups.ts +326 -0
- package/src/app/chat/thread-loading.test.ts +34 -0
- package/src/app/chat/thread-loading.ts +26 -0
- package/src/app/command-center/index.tsx +654 -0
- package/src/app/command-palette/index.tsx +513 -0
- package/src/app/command-palette/marketplace-theme-page.tsx +157 -0
- package/src/app/cron/index.tsx +942 -0
- package/src/app/cron/job-state.ts +29 -0
- package/src/app/desktop-controller.tsx +938 -0
- package/src/app/floating-hud.ts +22 -0
- package/src/app/gateway/hooks/use-gateway-boot.test.tsx +265 -0
- package/src/app/gateway/hooks/use-gateway-boot.ts +387 -0
- package/src/app/gateway/hooks/use-gateway-request.ts +138 -0
- package/src/app/hooks/use-keybinds.ts +186 -0
- package/src/app/hooks/use-refresh-hotkey.ts +45 -0
- package/src/app/hooks/use-route-enum-param.ts +38 -0
- package/src/app/index.tsx +1 -0
- package/src/app/layout-constants.ts +13 -0
- package/src/app/messaging/index.tsx +648 -0
- package/src/app/messaging/platform-icon.tsx +93 -0
- package/src/app/model-picker-overlay.tsx +42 -0
- package/src/app/model-visibility-overlay.tsx +31 -0
- package/src/app/overlays/overlay-chrome.tsx +66 -0
- package/src/app/overlays/overlay-search-input.tsx +33 -0
- package/src/app/overlays/overlay-split-layout.tsx +130 -0
- package/src/app/overlays/overlay-view.tsx +91 -0
- package/src/app/page-search-shell.tsx +75 -0
- package/src/app/profiles/create-profile-dialog.tsx +154 -0
- package/src/app/profiles/delete-profile-dialog.tsx +65 -0
- package/src/app/profiles/index.tsx +671 -0
- package/src/app/profiles/rename-profile-dialog.tsx +125 -0
- package/src/app/right-sidebar/files/dnd-manager.ts +27 -0
- package/src/app/right-sidebar/files/ipc.test.ts +100 -0
- package/src/app/right-sidebar/files/ipc.ts +161 -0
- package/src/app/right-sidebar/files/remote-picker.tsx +177 -0
- package/src/app/right-sidebar/files/tree.tsx +224 -0
- package/src/app/right-sidebar/files/use-project-tree.test.ts +190 -0
- package/src/app/right-sidebar/files/use-project-tree.ts +268 -0
- package/src/app/right-sidebar/index.test.tsx +75 -0
- package/src/app/right-sidebar/index.tsx +395 -0
- package/src/app/right-sidebar/store.ts +15 -0
- package/src/app/right-sidebar/terminal/buffer.ts +65 -0
- package/src/app/right-sidebar/terminal/index.tsx +98 -0
- package/src/app/right-sidebar/terminal/persistent.tsx +122 -0
- package/src/app/right-sidebar/terminal/selection.ts +75 -0
- package/src/app/right-sidebar/terminal/use-terminal-session.ts +504 -0
- package/src/app/routes.ts +88 -0
- package/src/app/session/hooks/use-context-suggestions.ts +58 -0
- package/src/app/session/hooks/use-cwd-actions.ts +109 -0
- package/src/app/session/hooks/use-message-stream.ts +957 -0
- package/src/app/session/hooks/use-model-controls.test.tsx +198 -0
- package/src/app/session/hooks/use-model-controls.ts +106 -0
- package/src/app/session/hooks/use-nastech-config.ts +74 -0
- package/src/app/session/hooks/use-preview-routing.test.tsx +168 -0
- package/src/app/session/hooks/use-preview-routing.ts +223 -0
- package/src/app/session/hooks/use-prompt-actions.test.tsx +316 -0
- package/src/app/session/hooks/use-prompt-actions.ts +1030 -0
- package/src/app/session/hooks/use-route-resume.test.tsx +136 -0
- package/src/app/session/hooks/use-route-resume.ts +115 -0
- package/src/app/session/hooks/use-session-actions.test.tsx +119 -0
- package/src/app/session/hooks/use-session-actions.ts +885 -0
- package/src/app/session/hooks/use-session-state-cache.test.tsx +118 -0
- package/src/app/session/hooks/use-session-state-cache.ts +191 -0
- package/src/app/session-picker-overlay.tsx +32 -0
- package/src/app/session-switcher.tsx +107 -0
- package/src/app/settings/about-settings.tsx +173 -0
- package/src/app/settings/appearance-settings.tsx +162 -0
- package/src/app/settings/config-settings.tsx +384 -0
- package/src/app/settings/constants.ts +545 -0
- package/src/app/settings/credential-key-ui.tsx +373 -0
- package/src/app/settings/env-credentials.tsx +198 -0
- package/src/app/settings/env-var-actions-menu.tsx +136 -0
- package/src/app/settings/field-copy.ts +56 -0
- package/src/app/settings/gateway-settings.tsx +620 -0
- package/src/app/settings/helpers.test.ts +138 -0
- package/src/app/settings/helpers.ts +151 -0
- package/src/app/settings/index.tsx +237 -0
- package/src/app/settings/keys-settings.tsx +96 -0
- package/src/app/settings/mcp-settings.tsx +271 -0
- package/src/app/settings/model-settings.test.tsx +157 -0
- package/src/app/settings/model-settings.tsx +559 -0
- package/src/app/settings/notifications-settings.tsx +150 -0
- package/src/app/settings/primitives.tsx +115 -0
- package/src/app/settings/providers-settings.test.tsx +100 -0
- package/src/app/settings/providers-settings.tsx +258 -0
- package/src/app/settings/sessions-settings.tsx +276 -0
- package/src/app/settings/toolset-config-panel.test.tsx +289 -0
- package/src/app/settings/toolset-config-panel.tsx +449 -0
- package/src/app/settings/types.ts +42 -0
- package/src/app/settings/uninstall-section.tsx +185 -0
- package/src/app/settings/use-deep-link-highlight.ts +60 -0
- package/src/app/shell/app-shell.tsx +167 -0
- package/src/app/shell/gateway-menu-panel.tsx +150 -0
- package/src/app/shell/hooks/use-overlay-routing.ts +71 -0
- package/src/app/shell/hooks/use-status-snapshot.ts +57 -0
- package/src/app/shell/hooks/use-statusbar-items.tsx +403 -0
- package/src/app/shell/keybind-panel.tsx +220 -0
- package/src/app/shell/model-edit-submenu.test.tsx +84 -0
- package/src/app/shell/model-edit-submenu.tsx +245 -0
- package/src/app/shell/model-menu-panel.tsx +295 -0
- package/src/app/shell/sidebar-label.tsx +22 -0
- package/src/app/shell/statusbar-controls.tsx +185 -0
- package/src/app/shell/titlebar-controls.tsx +244 -0
- package/src/app/shell/titlebar.test.ts +26 -0
- package/src/app/shell/titlebar.ts +45 -0
- package/src/app/shell/use-group-registry.ts +39 -0
- package/src/app/skills/index.test.tsx +103 -0
- package/src/app/skills/index.tsx +371 -0
- package/src/app/types.ts +99 -0
- package/src/app/updates-overlay.tsx +369 -0
- package/src/components/Backdrop.tsx +114 -0
- package/src/components/assistant-ui/ansi-text.tsx +34 -0
- package/src/components/assistant-ui/clarify-tool.tsx +281 -0
- package/src/components/assistant-ui/directive-text.test.ts +39 -0
- package/src/components/assistant-ui/directive-text.tsx +389 -0
- package/src/components/assistant-ui/markdown-text.test.ts +204 -0
- package/src/components/assistant-ui/markdown-text.tsx +497 -0
- package/src/components/assistant-ui/message-render-boundary.test.tsx +80 -0
- package/src/components/assistant-ui/message-render-boundary.tsx +48 -0
- package/src/components/assistant-ui/streaming.test.tsx +739 -0
- package/src/components/assistant-ui/thread-list.tsx +307 -0
- package/src/components/assistant-ui/thread-virtualizer.tsx +512 -0
- package/src/components/assistant-ui/thread.tsx +1474 -0
- package/src/components/assistant-ui/todo-tool.tsx +109 -0
- package/src/components/assistant-ui/tool-approval-group.test.tsx +158 -0
- package/src/components/assistant-ui/tool-approval.test.tsx +81 -0
- package/src/components/assistant-ui/tool-approval.tsx +209 -0
- package/src/components/assistant-ui/tool-fallback-model.test.ts +66 -0
- package/src/components/assistant-ui/tool-fallback-model.ts +1368 -0
- package/src/components/assistant-ui/tool-fallback.tsx +466 -0
- package/src/components/assistant-ui/tooltip-icon-button.tsx +33 -0
- package/src/components/assistant-ui/user-message-edit.test.tsx +141 -0
- package/src/components/assistant-ui/user-message-text.tsx +150 -0
- package/src/components/boot-failure-overlay.tsx +246 -0
- package/src/components/boot-failure-reauth.test.ts +100 -0
- package/src/components/boot-failure-reauth.ts +81 -0
- package/src/components/brand-mark.tsx +19 -0
- package/src/components/chat/activity-timer-text.tsx +24 -0
- package/src/components/chat/activity-timer.test.tsx +43 -0
- package/src/components/chat/activity-timer.ts +64 -0
- package/src/components/chat/code-card.tsx +78 -0
- package/src/components/chat/compact-markdown.tsx +113 -0
- package/src/components/chat/composer-dock.ts +31 -0
- package/src/components/chat/diff-lines.tsx +54 -0
- package/src/components/chat/disclosure-row.tsx +63 -0
- package/src/components/chat/generated-image-context.tsx +19 -0
- package/src/components/chat/generated-image-result.tsx +174 -0
- package/src/components/chat/image-generation-placeholder.tsx +279 -0
- package/src/components/chat/intro-copy.jsonl +75 -0
- package/src/components/chat/intro.tsx +182 -0
- package/src/components/chat/preview-attachment.tsx +125 -0
- package/src/components/chat/shiki-highlighter.tsx +107 -0
- package/src/components/chat/status-row.tsx +70 -0
- package/src/components/chat/status-section.tsx +42 -0
- package/src/components/chat/terminal-output.tsx +50 -0
- package/src/components/chat/zoomable-image.tsx +177 -0
- package/src/components/desktop-install-overlay.tsx +595 -0
- package/src/components/desktop-onboarding-overlay.test.tsx +100 -0
- package/src/components/desktop-onboarding-overlay.tsx +1286 -0
- package/src/components/error-boundary.tsx +77 -0
- package/src/components/gateway-connecting-overlay.test.tsx +143 -0
- package/src/components/gateway-connecting-overlay.tsx +183 -0
- package/src/components/haptics-provider.tsx +19 -0
- package/src/components/language-switcher.test.tsx +53 -0
- package/src/components/language-switcher.tsx +175 -0
- package/src/components/model-picker.tsx +340 -0
- package/src/components/model-visibility-dialog.tsx +155 -0
- package/src/components/notifications.tsx +196 -0
- package/src/components/page-loader.tsx +34 -0
- package/src/components/pane-shell/context.ts +14 -0
- package/src/components/pane-shell/index.ts +4 -0
- package/src/components/pane-shell/pane-shell.test.tsx +333 -0
- package/src/components/pane-shell/pane-shell.tsx +330 -0
- package/src/components/prompt-overlays.tsx +234 -0
- package/src/components/session-picker.tsx +108 -0
- package/src/components/status-dot.tsx +26 -0
- package/src/components/ui/action-status.tsx +25 -0
- package/src/components/ui/alert.tsx +53 -0
- package/src/components/ui/badge.tsx +35 -0
- package/src/components/ui/braille-spinner.tsx +61 -0
- package/src/components/ui/button.tsx +81 -0
- package/src/components/ui/checkbox.tsx +27 -0
- package/src/components/ui/codicon.tsx +20 -0
- package/src/components/ui/command.tsx +111 -0
- package/src/components/ui/confirm-dialog.tsx +109 -0
- package/src/components/ui/context-menu.tsx +141 -0
- package/src/components/ui/control.ts +25 -0
- package/src/components/ui/copy-button.test.tsx +36 -0
- package/src/components/ui/copy-button.tsx +229 -0
- package/src/components/ui/dialog.tsx +152 -0
- package/src/components/ui/disclosure-caret.tsx +20 -0
- package/src/components/ui/dropdown-menu.tsx +291 -0
- package/src/components/ui/error-state.tsx +50 -0
- package/src/components/ui/fade-text.tsx +110 -0
- package/src/components/ui/glyph-spinner.tsx +63 -0
- package/src/components/ui/input.tsx +22 -0
- package/src/components/ui/kbd.tsx +37 -0
- package/src/components/ui/loader.tsx +558 -0
- package/src/components/ui/log-view.tsx +17 -0
- package/src/components/ui/pagination.tsx +114 -0
- package/src/components/ui/popover.tsx +44 -0
- package/src/components/ui/scroll-area.tsx +43 -0
- package/src/components/ui/search-field.tsx +80 -0
- package/src/components/ui/segmented-control.tsx +51 -0
- package/src/components/ui/select.tsx +92 -0
- package/src/components/ui/separator.tsx +26 -0
- package/src/components/ui/sheet.tsx +116 -0
- package/src/components/ui/sidebar.tsx +674 -0
- package/src/components/ui/skeleton.tsx +7 -0
- package/src/components/ui/switch.tsx +49 -0
- package/src/components/ui/tabs.tsx +36 -0
- package/src/components/ui/text-tab.tsx +43 -0
- package/src/components/ui/textarea.tsx +11 -0
- package/src/components/ui/tool-icon.tsx +65 -0
- package/src/components/ui/tooltip.tsx +69 -0
- package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Italic.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
- package/src/global.d.ts +457 -0
- package/src/hooks/use-image-download.ts +85 -0
- package/src/hooks/use-media-query.ts +24 -0
- package/src/hooks/use-mobile.ts +3 -0
- package/src/hooks/use-resize-observer.ts +38 -0
- package/src/hooks/use-worktree-info.ts +68 -0
- package/src/i18n/catalog.ts +12 -0
- package/src/i18n/context.test.tsx +232 -0
- package/src/i18n/context.tsx +183 -0
- package/src/i18n/define-locale.ts +41 -0
- package/src/i18n/en.ts +1779 -0
- package/src/i18n/index.ts +20 -0
- package/src/i18n/ja.ts +1890 -0
- package/src/i18n/languages.test.ts +43 -0
- package/src/i18n/languages.ts +86 -0
- package/src/i18n/runtime.test.ts +75 -0
- package/src/i18n/runtime.ts +53 -0
- package/src/i18n/types.ts +1452 -0
- package/src/i18n/zh-hant.ts +1849 -0
- package/src/i18n/zh.ts +1923 -0
- package/src/lib/ansi.test.ts +123 -0
- package/src/lib/ansi.ts +175 -0
- package/src/lib/chat-messages.test.ts +708 -0
- package/src/lib/chat-messages.ts +885 -0
- package/src/lib/chat-runtime.test.ts +18 -0
- package/src/lib/chat-runtime.ts +335 -0
- package/src/lib/clipboard.ts +28 -0
- package/src/lib/commit-changelog.test.ts +114 -0
- package/src/lib/commit-changelog.ts +177 -0
- package/src/lib/completion-sound.ts +519 -0
- package/src/lib/desktop-fs.test.ts +116 -0
- package/src/lib/desktop-fs.ts +113 -0
- package/src/lib/desktop-slash-commands.test.ts +126 -0
- package/src/lib/desktop-slash-commands.ts +286 -0
- package/src/lib/embedded-images.test.ts +35 -0
- package/src/lib/embedded-images.ts +60 -0
- package/src/lib/external-link.test.tsx +168 -0
- package/src/lib/external-link.tsx +303 -0
- package/src/lib/gateway-events.test.ts +27 -0
- package/src/lib/gateway-events.ts +49 -0
- package/src/lib/gateway-ws-url.test.ts +78 -0
- package/src/lib/gateway-ws-url.ts +91 -0
- package/src/lib/generated-images.test.ts +97 -0
- package/src/lib/generated-images.ts +116 -0
- package/src/lib/haptics.ts +129 -0
- package/src/lib/icons.ts +203 -0
- package/src/lib/incremental-external-store-runtime.ts +188 -0
- package/src/lib/katex-memo.ts +260 -0
- package/src/lib/keybinds/actions.ts +125 -0
- package/src/lib/keybinds/combo.test.ts +86 -0
- package/src/lib/keybinds/combo.ts +169 -0
- package/src/lib/local-preview.ts +126 -0
- package/src/lib/markdown-code.test.ts +23 -0
- package/src/lib/markdown-code.ts +195 -0
- package/src/lib/markdown-preprocess.ts +386 -0
- package/src/lib/media.remote.test.ts +58 -0
- package/src/lib/media.ts +111 -0
- package/src/lib/model-status-label.test.ts +31 -0
- package/src/lib/model-status-label.ts +103 -0
- package/src/lib/mutable-ref.ts +6 -0
- package/src/lib/preview-targets.test.ts +27 -0
- package/src/lib/preview-targets.ts +63 -0
- package/src/lib/profile-color.ts +58 -0
- package/src/lib/provider-setup-errors.test.ts +26 -0
- package/src/lib/provider-setup-errors.ts +12 -0
- package/src/lib/query-client.ts +13 -0
- package/src/lib/remend-tail.test.ts +105 -0
- package/src/lib/remend-tail.ts +108 -0
- package/src/lib/runtime-readiness.test.ts +65 -0
- package/src/lib/runtime-readiness.ts +147 -0
- package/src/lib/session-export.ts +57 -0
- package/src/lib/session-search.test.ts +58 -0
- package/src/lib/session-search.ts +19 -0
- package/src/lib/session-source.ts +62 -0
- package/src/lib/speech-text.ts +35 -0
- package/src/lib/statusbar.ts +91 -0
- package/src/lib/storage.test.ts +25 -0
- package/src/lib/storage.ts +107 -0
- package/src/lib/todos.test.ts +35 -0
- package/src/lib/todos.ts +51 -0
- package/src/lib/tool-result-summary.test.ts +106 -0
- package/src/lib/tool-result-summary.ts +467 -0
- package/src/lib/update-copy.test.ts +38 -0
- package/src/lib/update-copy.ts +44 -0
- package/src/lib/use-enter-animation.ts +100 -0
- package/src/lib/utils.ts +6 -0
- package/src/lib/voice-playback.ts +128 -0
- package/src/lib/yolo-session.ts +26 -0
- package/src/main.tsx +43 -0
- package/src/nastech.test.ts +49 -0
- package/src/nastech.ts +718 -0
- package/src/store/activity.ts +100 -0
- package/src/store/boot.ts +91 -0
- package/src/store/clarify.test.ts +81 -0
- package/src/store/clarify.ts +69 -0
- package/src/store/command-palette.ts +20 -0
- package/src/store/compaction.test.ts +53 -0
- package/src/store/compaction.ts +38 -0
- package/src/store/completion-sound.ts +32 -0
- package/src/store/composer-input-history.test.ts +147 -0
- package/src/store/composer-input-history.ts +158 -0
- package/src/store/composer-queue.test.ts +148 -0
- package/src/store/composer-queue.ts +239 -0
- package/src/store/composer-status.test.ts +99 -0
- package/src/store/composer-status.ts +277 -0
- package/src/store/composer.test.ts +106 -0
- package/src/store/composer.ts +184 -0
- package/src/store/cron.ts +19 -0
- package/src/store/gateway.ts +290 -0
- package/src/store/haptics.ts +17 -0
- package/src/store/keybinds.ts +139 -0
- package/src/store/layout.ts +176 -0
- package/src/store/model-presets.test.ts +51 -0
- package/src/store/model-presets.ts +86 -0
- package/src/store/model-visibility.test.ts +37 -0
- package/src/store/model-visibility.ts +108 -0
- package/src/store/native-notifications.test.ts +192 -0
- package/src/store/native-notifications.ts +203 -0
- package/src/store/notifications.ts +165 -0
- package/src/store/onboarding.test.ts +372 -0
- package/src/store/onboarding.ts +866 -0
- package/src/store/panes.test.ts +146 -0
- package/src/store/panes.ts +145 -0
- package/src/store/preview.test.ts +135 -0
- package/src/store/preview.ts +466 -0
- package/src/store/profile.test.ts +89 -0
- package/src/store/profile.ts +365 -0
- package/src/store/prompts.test.ts +121 -0
- package/src/store/prompts.ts +115 -0
- package/src/store/session-switcher.test.ts +115 -0
- package/src/store/session-switcher.ts +128 -0
- package/src/store/session-sync.ts +25 -0
- package/src/store/session.test.ts +131 -0
- package/src/store/session.ts +255 -0
- package/src/store/subagents.test.ts +111 -0
- package/src/store/subagents.ts +260 -0
- package/src/store/thread-scroll.ts +46 -0
- package/src/store/todos.test.ts +47 -0
- package/src/store/todos.ts +64 -0
- package/src/store/tool-diffs.ts +23 -0
- package/src/store/tool-dismiss.ts +45 -0
- package/src/store/tool-view.ts +91 -0
- package/src/store/translucency.ts +38 -0
- package/src/store/updates.test.ts +77 -0
- package/src/store/updates.ts +315 -0
- package/src/store/voice-playback.ts +24 -0
- package/src/store/windows.test.ts +143 -0
- package/src/store/windows.ts +77 -0
- package/src/styles.css +1235 -0
- package/src/themes/color.ts +142 -0
- package/src/themes/context.tsx +339 -0
- package/src/themes/index.ts +3 -0
- package/src/themes/install.test.ts +119 -0
- package/src/themes/install.ts +95 -0
- package/src/themes/presets.test.ts +33 -0
- package/src/themes/presets.ts +293 -0
- package/src/themes/profile-theme.test.ts +41 -0
- package/src/themes/types.ts +66 -0
- package/src/themes/use-skin-command.ts +60 -0
- package/src/themes/user-themes.test.ts +63 -0
- package/src/themes/user-themes.ts +122 -0
- package/src/themes/vscode.test.ts +171 -0
- package/src/themes/vscode.ts +343 -0
- package/src/types/nastech.ts +646 -0
- package/src/vite-env.d.ts +1 -0
- package/tsconfig.json +25 -0
- package/vite.config.ts +56 -0
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
export interface ConfigFieldSchema {
|
|
2
|
+
category?: string
|
|
3
|
+
description?: string
|
|
4
|
+
options?: unknown[]
|
|
5
|
+
type?: 'boolean' | 'list' | 'number' | 'select' | 'string' | 'text'
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ConfigSchemaResponse {
|
|
9
|
+
category_order?: string[]
|
|
10
|
+
fields: Record<string, ConfigFieldSchema>
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface AudioTranscriptionResponse {
|
|
14
|
+
ok: boolean
|
|
15
|
+
provider?: string
|
|
16
|
+
transcript: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface AudioSpeakResponse {
|
|
20
|
+
ok: boolean
|
|
21
|
+
data_url: string
|
|
22
|
+
mime_type: string
|
|
23
|
+
provider?: string
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface ElevenLabsVoice {
|
|
27
|
+
label: string
|
|
28
|
+
name: string
|
|
29
|
+
voice_id: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface ElevenLabsVoicesResponse {
|
|
33
|
+
available: boolean
|
|
34
|
+
voices: ElevenLabsVoice[]
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface OAuthProviderStatus {
|
|
38
|
+
error?: string
|
|
39
|
+
expires_at?: null | string
|
|
40
|
+
has_refresh_token?: boolean
|
|
41
|
+
last_refresh?: null | string
|
|
42
|
+
logged_in: boolean
|
|
43
|
+
source?: null | string
|
|
44
|
+
source_label?: null | string
|
|
45
|
+
token_preview?: null | string
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface OAuthProvider {
|
|
49
|
+
cli_command: string
|
|
50
|
+
docs_url: string
|
|
51
|
+
flow: 'device_code' | 'external' | 'loopback' | 'pkce'
|
|
52
|
+
id: string
|
|
53
|
+
name: string
|
|
54
|
+
status: OAuthProviderStatus
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface OAuthProvidersResponse {
|
|
58
|
+
providers: OAuthProvider[]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type OAuthStartResponse =
|
|
62
|
+
| {
|
|
63
|
+
auth_url: string
|
|
64
|
+
expires_in: number
|
|
65
|
+
flow: 'pkce'
|
|
66
|
+
session_id: string
|
|
67
|
+
}
|
|
68
|
+
| {
|
|
69
|
+
expires_in: number
|
|
70
|
+
flow: 'device_code'
|
|
71
|
+
poll_interval: number
|
|
72
|
+
session_id: string
|
|
73
|
+
user_code: string
|
|
74
|
+
verification_url: string
|
|
75
|
+
}
|
|
76
|
+
| {
|
|
77
|
+
auth_url: string
|
|
78
|
+
expires_in: number
|
|
79
|
+
flow: 'loopback'
|
|
80
|
+
session_id: string
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface OAuthSubmitResponse {
|
|
84
|
+
message?: string
|
|
85
|
+
ok: boolean
|
|
86
|
+
status: 'approved' | 'error'
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface OAuthPollResponse {
|
|
90
|
+
error_message?: null | string
|
|
91
|
+
expires_at?: null | number
|
|
92
|
+
session_id: string
|
|
93
|
+
status: 'approved' | 'denied' | 'error' | 'expired' | 'pending'
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface EnvVarInfo {
|
|
97
|
+
advanced: boolean
|
|
98
|
+
category: string
|
|
99
|
+
// True when this var is a messaging-platform credential owned by a card on
|
|
100
|
+
// the dedicated Messaging page. The Keys page hides these to avoid
|
|
101
|
+
// duplicating the richer channel-configuration UI.
|
|
102
|
+
channel_managed?: boolean
|
|
103
|
+
description: string
|
|
104
|
+
is_password: boolean
|
|
105
|
+
is_set: boolean
|
|
106
|
+
redacted_value: null | string
|
|
107
|
+
tools: string[]
|
|
108
|
+
url: null | string
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface MessagingEnvVarInfo {
|
|
112
|
+
advanced: boolean
|
|
113
|
+
description: string
|
|
114
|
+
is_password: boolean
|
|
115
|
+
is_set: boolean
|
|
116
|
+
key: string
|
|
117
|
+
prompt: string
|
|
118
|
+
redacted_value: null | string
|
|
119
|
+
required: boolean
|
|
120
|
+
url: null | string
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface MessagingHomeChannel {
|
|
124
|
+
chat_id: string
|
|
125
|
+
name: string
|
|
126
|
+
platform: string
|
|
127
|
+
thread_id?: string
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export interface MessagingPlatformInfo {
|
|
131
|
+
configured: boolean
|
|
132
|
+
description: string
|
|
133
|
+
docs_url: string
|
|
134
|
+
enabled: boolean
|
|
135
|
+
env_vars: MessagingEnvVarInfo[]
|
|
136
|
+
error_code?: null | string
|
|
137
|
+
error_message?: null | string
|
|
138
|
+
gateway_running: boolean
|
|
139
|
+
home_channel?: MessagingHomeChannel | null
|
|
140
|
+
id: string
|
|
141
|
+
name: string
|
|
142
|
+
state?: null | string
|
|
143
|
+
updated_at?: null | string
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface MessagingPlatformsResponse {
|
|
147
|
+
platforms: MessagingPlatformInfo[]
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export interface MessagingPlatformUpdate {
|
|
151
|
+
clear_env?: string[]
|
|
152
|
+
enabled?: boolean
|
|
153
|
+
env?: Record<string, string>
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface MessagingPlatformTestResponse {
|
|
157
|
+
message: string
|
|
158
|
+
ok: boolean
|
|
159
|
+
state?: null | string
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface GatewayReadyPayload {
|
|
163
|
+
skin?: unknown
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface NasTechConfig {
|
|
167
|
+
agent?: {
|
|
168
|
+
reasoning_effort?: string
|
|
169
|
+
personalities?: Record<string, unknown>
|
|
170
|
+
service_tier?: string
|
|
171
|
+
}
|
|
172
|
+
display?: {
|
|
173
|
+
personality?: string
|
|
174
|
+
skin?: string
|
|
175
|
+
}
|
|
176
|
+
terminal?: {
|
|
177
|
+
cwd?: string
|
|
178
|
+
}
|
|
179
|
+
stt?: {
|
|
180
|
+
enabled?: boolean
|
|
181
|
+
}
|
|
182
|
+
voice?: {
|
|
183
|
+
max_recording_seconds?: number
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export type NasTechConfigRecord = Record<string, unknown>
|
|
188
|
+
|
|
189
|
+
export interface ModelInfoResponse {
|
|
190
|
+
auto_context_length?: number
|
|
191
|
+
capabilities?: Record<string, unknown>
|
|
192
|
+
config_context_length?: number
|
|
193
|
+
effective_context_length?: number
|
|
194
|
+
model: string
|
|
195
|
+
provider: string
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface ModelPricing {
|
|
199
|
+
/** Formatted $/Mtok input price, e.g. "$3.00", or "free", or "" if unknown. */
|
|
200
|
+
input: string
|
|
201
|
+
/** Formatted $/Mtok output price. */
|
|
202
|
+
output: string
|
|
203
|
+
/** Formatted $/Mtok cached-input price, or null when the model has none. */
|
|
204
|
+
cache: string | null
|
|
205
|
+
/** True when the model costs nothing (free tier eligible). */
|
|
206
|
+
free: boolean
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export interface ModelOptionProvider {
|
|
210
|
+
is_current?: boolean
|
|
211
|
+
models?: string[]
|
|
212
|
+
name: string
|
|
213
|
+
slug: string
|
|
214
|
+
total_models?: number
|
|
215
|
+
warning?: string
|
|
216
|
+
/** True when the provider has usable credentials. False for canonical
|
|
217
|
+
* providers surfaced by `include_unconfigured` that the user hasn't set up
|
|
218
|
+
* yet — render these with a setup affordance instead of hiding them. */
|
|
219
|
+
authenticated?: boolean
|
|
220
|
+
/** Auth flow for an unconfigured provider: "api_key" can be activated inline
|
|
221
|
+
* by pasting `key_env`; anything else (oauth_*, external, aws_sdk, …) needs
|
|
222
|
+
* the `nastech model` CLI / onboarding OAuth flow. */
|
|
223
|
+
auth_type?: string
|
|
224
|
+
/** Env var to paste an API key into, for unconfigured `api_key` providers. */
|
|
225
|
+
key_env?: string
|
|
226
|
+
/** True for providers defined via the user's `providers:` config block. */
|
|
227
|
+
is_user_defined?: boolean
|
|
228
|
+
/** Per-model pricing keyed by model id (present when the picker requested
|
|
229
|
+
* pricing and the provider supports live pricing). */
|
|
230
|
+
pricing?: Record<string, ModelPricing>
|
|
231
|
+
/** NasTech Portal only: whether the current account is on the free tier. */
|
|
232
|
+
free_tier?: boolean
|
|
233
|
+
/** NasTech Portal only: paid models a free-tier user cannot select (shown disabled). */
|
|
234
|
+
unavailable_models?: string[]
|
|
235
|
+
/** Per-model option support, keyed by model id (present when the picker
|
|
236
|
+
* requested capabilities). Lets the UI gate fast/reasoning controls. */
|
|
237
|
+
capabilities?: Record<string, ModelCapabilities>
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export interface ModelCapabilities {
|
|
241
|
+
fast: boolean
|
|
242
|
+
reasoning: boolean
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export interface ModelOptionsResponse {
|
|
246
|
+
model?: string
|
|
247
|
+
provider?: string
|
|
248
|
+
providers?: ModelOptionProvider[]
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export interface PaginatedSessions {
|
|
252
|
+
limit: number
|
|
253
|
+
offset: number
|
|
254
|
+
sessions: SessionInfo[]
|
|
255
|
+
total: number
|
|
256
|
+
/** Listable conversation count per profile (children excluded), keyed by
|
|
257
|
+
* profile name. Lets the sidebar scope its "Load more" footer to the active
|
|
258
|
+
* profile instead of the global total. Present only on
|
|
259
|
+
* `/api/profiles/sessions`. */
|
|
260
|
+
profile_totals?: Record<string, number>
|
|
261
|
+
/** Per-profile read failures from the cross-profile aggregator (e.g. a locked
|
|
262
|
+
* or corrupt state.db). Present only on `/api/profiles/sessions`. */
|
|
263
|
+
errors?: Array<{ profile: string; error: string }>
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface RpcEvent<T = unknown> {
|
|
267
|
+
payload?: T
|
|
268
|
+
session_id?: string
|
|
269
|
+
type: string
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export interface SessionCreateResponse {
|
|
273
|
+
info?: SessionRuntimeInfo
|
|
274
|
+
message_count?: number
|
|
275
|
+
messages?: SessionMessage[]
|
|
276
|
+
session_id: string
|
|
277
|
+
stored_session_id?: string
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export interface SessionInfo {
|
|
281
|
+
archived?: boolean
|
|
282
|
+
cwd?: null | string
|
|
283
|
+
ended_at: null | number
|
|
284
|
+
id: string
|
|
285
|
+
/** Original root id of a compression chain, when this entry is a projected
|
|
286
|
+
* continuation tip. Stable across compressions — used as the durable id for
|
|
287
|
+
* pins so a pinned conversation survives auto-compression. */
|
|
288
|
+
_lineage_root_id?: null | string
|
|
289
|
+
input_tokens: number
|
|
290
|
+
is_active: boolean
|
|
291
|
+
last_active: number
|
|
292
|
+
message_count: number
|
|
293
|
+
model: null | string
|
|
294
|
+
output_tokens: number
|
|
295
|
+
preview: null | string
|
|
296
|
+
source: null | string
|
|
297
|
+
started_at: number
|
|
298
|
+
title: null | string
|
|
299
|
+
tool_call_count: number
|
|
300
|
+
/** Owning profile name, set by the cross-profile aggregator
|
|
301
|
+
* (`/api/profiles/sessions`). Absent on legacy single-profile responses,
|
|
302
|
+
* which the UI treats as the default profile. */
|
|
303
|
+
profile?: string
|
|
304
|
+
/** True when {@link profile} is the default profile. */
|
|
305
|
+
is_default_profile?: boolean
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export interface SessionMessage {
|
|
309
|
+
codex_reasoning_items?: unknown
|
|
310
|
+
content: unknown
|
|
311
|
+
context?: unknown
|
|
312
|
+
name?: string
|
|
313
|
+
reasoning?: null | string
|
|
314
|
+
reasoning_content?: null | string
|
|
315
|
+
reasoning_details?: unknown
|
|
316
|
+
role: 'assistant' | 'system' | 'tool' | 'user'
|
|
317
|
+
text?: unknown
|
|
318
|
+
timestamp?: number
|
|
319
|
+
tool_call_id?: null | string
|
|
320
|
+
tool_calls?: unknown
|
|
321
|
+
tool_name?: string
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export interface SessionMessagesResponse {
|
|
325
|
+
messages: SessionMessage[]
|
|
326
|
+
session_id: string
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
export interface SessionResumeResponse {
|
|
330
|
+
info?: SessionRuntimeInfo
|
|
331
|
+
message_count: number
|
|
332
|
+
messages: SessionMessage[]
|
|
333
|
+
resumed: string
|
|
334
|
+
session_id: string
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
export interface SessionRuntimeInfo {
|
|
338
|
+
branch?: string
|
|
339
|
+
config_warning?: string
|
|
340
|
+
credential_warning?: string
|
|
341
|
+
cwd?: string
|
|
342
|
+
desktop_contract?: number
|
|
343
|
+
fast?: boolean
|
|
344
|
+
model?: string
|
|
345
|
+
personality?: string
|
|
346
|
+
provider?: string
|
|
347
|
+
reasoning_effort?: string
|
|
348
|
+
running?: boolean
|
|
349
|
+
service_tier?: string
|
|
350
|
+
skills?: Record<string, string[]> | string[]
|
|
351
|
+
tools?: Record<string, string[]>
|
|
352
|
+
usage?: Partial<UsageStats>
|
|
353
|
+
version?: string
|
|
354
|
+
yolo?: boolean
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
export interface UsageStats {
|
|
358
|
+
calls: number
|
|
359
|
+
context_max?: number
|
|
360
|
+
context_percent?: number
|
|
361
|
+
context_used?: number
|
|
362
|
+
cost_usd?: number
|
|
363
|
+
input: number
|
|
364
|
+
output: number
|
|
365
|
+
total: number
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
export interface AnalyticsDailyEntry {
|
|
369
|
+
actual_cost: number
|
|
370
|
+
api_calls: number
|
|
371
|
+
cache_read_tokens: number
|
|
372
|
+
day: string
|
|
373
|
+
estimated_cost: number
|
|
374
|
+
input_tokens: number
|
|
375
|
+
output_tokens: number
|
|
376
|
+
reasoning_tokens: number
|
|
377
|
+
sessions: number
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
export interface AnalyticsModelEntry {
|
|
381
|
+
api_calls: number
|
|
382
|
+
estimated_cost: number
|
|
383
|
+
input_tokens: number
|
|
384
|
+
model: string
|
|
385
|
+
output_tokens: number
|
|
386
|
+
sessions: number
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
export interface AnalyticsResponse {
|
|
390
|
+
by_model: AnalyticsModelEntry[]
|
|
391
|
+
daily: AnalyticsDailyEntry[]
|
|
392
|
+
period_days: number
|
|
393
|
+
skills: {
|
|
394
|
+
summary: AnalyticsSkillsSummary
|
|
395
|
+
top_skills: AnalyticsSkillEntry[]
|
|
396
|
+
}
|
|
397
|
+
totals: AnalyticsTotals
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export interface AnalyticsSkillEntry {
|
|
401
|
+
last_used_at: null | number
|
|
402
|
+
manage_count: number
|
|
403
|
+
percentage: number
|
|
404
|
+
skill: string
|
|
405
|
+
total_count: number
|
|
406
|
+
view_count: number
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
export interface AnalyticsSkillsSummary {
|
|
410
|
+
distinct_skills_used: number
|
|
411
|
+
total_skill_actions: number
|
|
412
|
+
total_skill_edits: number
|
|
413
|
+
total_skill_loads: number
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
export interface AnalyticsTotals {
|
|
417
|
+
total_actual_cost: number
|
|
418
|
+
total_api_calls: null | number
|
|
419
|
+
total_cache_read: null | number
|
|
420
|
+
total_estimated_cost: number
|
|
421
|
+
total_input: null | number
|
|
422
|
+
total_output: null | number
|
|
423
|
+
total_reasoning: null | number
|
|
424
|
+
total_sessions: number
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
export interface CronJob {
|
|
428
|
+
deliver?: null | string
|
|
429
|
+
enabled: boolean
|
|
430
|
+
id: string
|
|
431
|
+
last_error?: null | string
|
|
432
|
+
last_run_at?: null | string
|
|
433
|
+
name?: null | string
|
|
434
|
+
next_run_at?: null | string
|
|
435
|
+
prompt?: null | string
|
|
436
|
+
schedule?: CronJobSchedule
|
|
437
|
+
schedule_display?: null | string
|
|
438
|
+
script?: null | string
|
|
439
|
+
state?: null | string
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
export interface CronJobCreatePayload {
|
|
443
|
+
deliver?: string
|
|
444
|
+
name?: string
|
|
445
|
+
prompt: string
|
|
446
|
+
schedule: string
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
export interface CronJobSchedule {
|
|
450
|
+
display?: string
|
|
451
|
+
expr?: string
|
|
452
|
+
kind?: string
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
export interface CronJobUpdates {
|
|
456
|
+
deliver?: string
|
|
457
|
+
enabled?: boolean
|
|
458
|
+
name?: string
|
|
459
|
+
prompt?: string
|
|
460
|
+
schedule?: string
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
export interface ProfileCreatePayload {
|
|
464
|
+
clone_all?: boolean
|
|
465
|
+
clone_from?: string
|
|
466
|
+
clone_from_default?: boolean
|
|
467
|
+
name: string
|
|
468
|
+
no_skills?: boolean
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
export interface ProfileInfo {
|
|
472
|
+
has_env: boolean
|
|
473
|
+
is_default: boolean
|
|
474
|
+
model: null | string
|
|
475
|
+
name: string
|
|
476
|
+
path: string
|
|
477
|
+
provider: null | string
|
|
478
|
+
skill_count: number
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
export interface ProfileSetupCommand {
|
|
482
|
+
command: string
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
export interface ProfileSoul {
|
|
486
|
+
content: string
|
|
487
|
+
exists: boolean
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
export interface ProfilesResponse {
|
|
491
|
+
profiles: ProfileInfo[]
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
export interface SkillInfo {
|
|
495
|
+
category: string
|
|
496
|
+
description: string
|
|
497
|
+
enabled: boolean
|
|
498
|
+
name: string
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
export interface ToolsetInfo {
|
|
502
|
+
configured: boolean
|
|
503
|
+
description: string
|
|
504
|
+
enabled: boolean
|
|
505
|
+
label: string
|
|
506
|
+
name: string
|
|
507
|
+
tools: string[]
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
export interface ToolEnvVar {
|
|
511
|
+
key: string
|
|
512
|
+
prompt: string
|
|
513
|
+
url: string | null
|
|
514
|
+
default: string | null
|
|
515
|
+
is_set: boolean
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
export interface ToolProvider {
|
|
519
|
+
name: string
|
|
520
|
+
badge: string
|
|
521
|
+
tag: string
|
|
522
|
+
env_vars: ToolEnvVar[]
|
|
523
|
+
post_setup: string | null
|
|
524
|
+
requires_nastech_auth: boolean
|
|
525
|
+
/** True when this is the provider currently written to config (mirrors the
|
|
526
|
+
* CLI `nastech tools` active-provider detection). */
|
|
527
|
+
is_active: boolean
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
export interface ToolsetConfig {
|
|
531
|
+
name: string
|
|
532
|
+
has_category: boolean
|
|
533
|
+
providers: ToolProvider[]
|
|
534
|
+
/** Name of the currently active provider, or null if none is configured. */
|
|
535
|
+
active_provider: string | null
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
export interface SessionSearchResult {
|
|
539
|
+
/** Lineage root of the matched conversation. Stable across compression and
|
|
540
|
+
* used as the durable pin id; falls back to session_id when absent. */
|
|
541
|
+
lineage_root?: string | null
|
|
542
|
+
model: string | null
|
|
543
|
+
role: string | null
|
|
544
|
+
/** Live compression tip of the matched conversation — resume by this id. */
|
|
545
|
+
session_id: string
|
|
546
|
+
session_started: number | null
|
|
547
|
+
snippet: string
|
|
548
|
+
source: string | null
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
export interface SessionSearchResponse {
|
|
552
|
+
results: SessionSearchResult[]
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
export interface LogsResponse {
|
|
556
|
+
file: string
|
|
557
|
+
lines: string[]
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
export interface PlatformStatus {
|
|
561
|
+
error_code?: string
|
|
562
|
+
error_message?: string
|
|
563
|
+
state: string
|
|
564
|
+
updated_at: string
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
export interface StatusResponse {
|
|
568
|
+
active_sessions: number
|
|
569
|
+
config_path: string
|
|
570
|
+
config_version: number
|
|
571
|
+
env_path: string
|
|
572
|
+
gateway_exit_reason: string | null
|
|
573
|
+
gateway_health_url: string | null
|
|
574
|
+
gateway_pid: number | null
|
|
575
|
+
gateway_platforms: Record<string, PlatformStatus>
|
|
576
|
+
gateway_running: boolean
|
|
577
|
+
gateway_state: string | null
|
|
578
|
+
gateway_updated_at: string | null
|
|
579
|
+
nastech_home: string
|
|
580
|
+
latest_config_version: number
|
|
581
|
+
release_date: string
|
|
582
|
+
version: string
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export interface ActionResponse {
|
|
586
|
+
name: string
|
|
587
|
+
ok: boolean
|
|
588
|
+
pid: number
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
export interface ActionStatusResponse {
|
|
592
|
+
exit_code: number | null
|
|
593
|
+
lines: string[]
|
|
594
|
+
name: string
|
|
595
|
+
pid: number | null
|
|
596
|
+
running: boolean
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
export interface AuxiliaryTaskAssignment {
|
|
600
|
+
base_url: string
|
|
601
|
+
model: string
|
|
602
|
+
provider: string
|
|
603
|
+
task: string
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
export interface AuxiliaryModelsResponse {
|
|
607
|
+
main: { model: string; provider: string }
|
|
608
|
+
tasks: AuxiliaryTaskAssignment[]
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
export interface ModelAssignmentRequest {
|
|
612
|
+
/** OpenAI-compatible endpoint URL. Only honored for custom/local providers
|
|
613
|
+
* on the main slot — wires a self-hosted endpoint into runtime resolution. */
|
|
614
|
+
base_url?: string
|
|
615
|
+
model: string
|
|
616
|
+
provider: string
|
|
617
|
+
scope: 'main' | 'auxiliary'
|
|
618
|
+
task?: string
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/** An auxiliary task still pinned to a provider that differs from the
|
|
622
|
+
* newly-selected main provider after a main-model switch. */
|
|
623
|
+
export interface StaleAuxAssignment {
|
|
624
|
+
task: string
|
|
625
|
+
provider: string
|
|
626
|
+
model: string
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
export interface ModelAssignmentResponse {
|
|
630
|
+
/** Persisted endpoint URL for custom/local providers (echoed back). */
|
|
631
|
+
base_url?: string
|
|
632
|
+
/** Toolset keys auto-routed through the NasTech Tool Gateway as a result of
|
|
633
|
+
* switching the main provider to NasTech. Empty unless provider === 'nastech'
|
|
634
|
+
* and the user is a paid subscriber with unconfigured tools. */
|
|
635
|
+
gateway_tools?: string[]
|
|
636
|
+
model?: string
|
|
637
|
+
ok: boolean
|
|
638
|
+
provider?: string
|
|
639
|
+
reset?: boolean
|
|
640
|
+
scope?: string
|
|
641
|
+
/** Auxiliary slots still pinned to a different provider than the new main.
|
|
642
|
+
* Switching main never clears aux pins; this lets the UI warn the user
|
|
643
|
+
* their helper tasks aren't following the switch. Only set on scope:'main'. */
|
|
644
|
+
stale_aux?: StaleAuxAssignment[]
|
|
645
|
+
tasks?: string[]
|
|
646
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"lib": ["DOM", "DOM.Iterable", "ES2023"],
|
|
6
|
+
"allowJs": false,
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"allowSyntheticDefaultImports": true,
|
|
10
|
+
"strict": true,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
"module": "ESNext",
|
|
13
|
+
"moduleResolution": "Bundler",
|
|
14
|
+
"resolveJsonModule": true,
|
|
15
|
+
"isolatedModules": true,
|
|
16
|
+
"noEmit": true,
|
|
17
|
+
"jsx": "react-jsx",
|
|
18
|
+
"paths": {
|
|
19
|
+
"@/*": ["./src/*"],
|
|
20
|
+
"@NASTECH/shared": ["../shared/src/index.ts"]
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"include": ["src", "../shared/src"],
|
|
24
|
+
"references": []
|
|
25
|
+
}
|