@kabmo-labs/kabmo 0.0.0-stage → 0.0.1
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 +501 -2
- package/bunfig.toml +11 -0
- package/dist/client/index.html +85 -0
- package/dist/client/index.js +1644 -0
- package/dist/client/static/apple-touch-icon-bbhgf3mq.png +0 -0
- package/dist/client/static/icon-192x192-kz5bvz85.png +0 -0
- package/dist/client/static/icon-8h6v1jcy.svg +12 -0
- package/dist/client/static/js/index-4vyzz0z4.js +5233 -0
- package/dist/client/static/js/index-x9cehh1a.css +1 -0
- package/dist/client/static/manifest-42r8wcmg.webmanifest +91 -0
- package/extensions/kabmo-modes/commands.test.ts +209 -0
- package/extensions/kabmo-modes/commands.ts +247 -0
- package/extensions/kabmo-modes/goal.test.ts +239 -0
- package/extensions/kabmo-modes/goal.ts +335 -0
- package/extensions/kabmo-modes/index.ts +272 -0
- package/extensions/kabmo-modes/omp-modules.d.ts +27 -0
- package/extensions/kabmo-modes/parked.test.ts +112 -0
- package/extensions/kabmo-modes/parked.ts +161 -0
- package/extensions/kabmo-modes/plan.test.ts +283 -0
- package/extensions/kabmo-modes/plan.ts +292 -0
- package/extensions/kabmo-modes/prompts.test.ts +70 -0
- package/extensions/kabmo-modes/prompts.ts +167 -0
- package/extensions/kabmo-modes/protocol.test.ts +57 -0
- package/extensions/kabmo-modes/protocol.ts +97 -0
- package/extensions/kabmo-modes/registration.test.ts +26 -0
- package/extensions/kabmo-modes/session.ts +199 -0
- package/index.html +85 -0
- package/marketplace/marketplace.json +25 -0
- package/marketplace/plugins/command-runner/README.md +223 -0
- package/marketplace/plugins/command-runner/icon.svg +18 -0
- package/marketplace/plugins/command-runner/package.json +41 -0
- package/marketplace/plugins/command-runner/src/app.tsx +281 -0
- package/marketplace/plugins/command-runner/src/panel/Custom.test.tsx +324 -0
- package/marketplace/plugins/command-runner/src/panel/CustomForm.tsx +236 -0
- package/marketplace/plugins/command-runner/src/panel/Glyph.tsx +60 -0
- package/marketplace/plugins/command-runner/src/panel/Groups.test.tsx +316 -0
- package/marketplace/plugins/command-runner/src/panel/Groups.tsx +311 -0
- package/marketplace/plugins/command-runner/src/panel/Header.tsx +76 -0
- package/marketplace/plugins/command-runner/src/panel/Output.tsx +109 -0
- package/marketplace/plugins/command-runner/src/panel/Row.test.tsx +278 -0
- package/marketplace/plugins/command-runner/src/panel/Row.tsx +265 -0
- package/marketplace/plugins/command-runner/src/panel/format.ts +29 -0
- package/marketplace/plugins/command-runner/src/panel/index.tsx +165 -0
- package/marketplace/plugins/command-runner/src/panel/use-custom-dialog.ts +147 -0
- package/marketplace/plugins/command-runner/src/protocol.ts +242 -0
- package/marketplace/plugins/command-runner/src/server/custom.test.ts +223 -0
- package/marketplace/plugins/command-runner/src/server/custom.ts +260 -0
- package/marketplace/plugins/command-runner/src/server/detectors/detectors.test.ts +267 -0
- package/marketplace/plugins/command-runner/src/server/detectors/js.ts +38 -0
- package/marketplace/plugins/command-runner/src/server/detectors/jsonc.ts +78 -0
- package/marketplace/plugins/command-runner/src/server/detectors/make.ts +82 -0
- package/marketplace/plugins/command-runner/src/server/detectors/native.ts +153 -0
- package/marketplace/plugins/command-runner/src/server/detectors/python.ts +124 -0
- package/marketplace/plugins/command-runner/src/server/detectors/table.ts +62 -0
- package/marketplace/plugins/command-runner/src/server/detectors/types.ts +147 -0
- package/marketplace/plugins/command-runner/src/server/discovery.test.ts +344 -0
- package/marketplace/plugins/command-runner/src/server/kill.ts +23 -0
- package/marketplace/plugins/command-runner/src/server/package-manager.ts +80 -0
- package/marketplace/plugins/command-runner/src/server/resolve.test.ts +215 -0
- package/marketplace/plugins/command-runner/src/server/resolve.ts +165 -0
- package/marketplace/plugins/command-runner/src/server/ring.ts +74 -0
- package/marketplace/plugins/command-runner/src/server/run-store.ts +226 -0
- package/marketplace/plugins/command-runner/src/server/run-types.ts +57 -0
- package/marketplace/plugins/command-runner/src/server/runner.test.ts +335 -0
- package/marketplace/plugins/command-runner/src/server/runner.ts +179 -0
- package/marketplace/plugins/command-runner/src/server/scan.ts +300 -0
- package/marketplace/plugins/command-runner/src/server/sweeps.test.ts +137 -0
- package/marketplace/plugins/command-runner/src/server.ts +325 -0
- package/marketplace/plugins/command-runner/src/watch.test.ts +235 -0
- package/marketplace/plugins/command-runner/src/watch.ts +97 -0
- package/marketplace/plugins/command-runner/tsconfig.json +16 -0
- package/marketplace/plugins/session-info/README.md +23 -0
- package/marketplace/plugins/session-info/icon.svg +14 -0
- package/marketplace/plugins/session-info/package.json +41 -0
- package/marketplace/plugins/session-info/src/app.test.tsx +172 -0
- package/marketplace/plugins/session-info/src/app.tsx +174 -0
- package/marketplace/plugins/session-info/src/server.ts +118 -0
- package/marketplace/plugins/session-info/src/styles.css +48 -0
- package/marketplace/plugins/session-info/tsconfig.json +22 -0
- package/marketplace/plugins/stats/README.md +99 -0
- package/marketplace/plugins/stats/icon.svg +16 -0
- package/marketplace/plugins/stats/package.json +46 -0
- package/marketplace/plugins/stats/src/ProcessTable.tsx +237 -0
- package/marketplace/plugins/stats/src/RefreshButton.tsx +56 -0
- package/marketplace/plugins/stats/src/Sparkline.tsx +80 -0
- package/marketplace/plugins/stats/src/TotalsBar.test.tsx +139 -0
- package/marketplace/plugins/stats/src/TotalsBar.tsx +96 -0
- package/marketplace/plugins/stats/src/app.test.tsx +228 -0
- package/marketplace/plugins/stats/src/app.tsx +183 -0
- package/marketplace/plugins/stats/src/daemons.ts +157 -0
- package/marketplace/plugins/stats/src/format.test.ts +125 -0
- package/marketplace/plugins/stats/src/format.ts +53 -0
- package/marketplace/plugins/stats/src/groups.test.ts +153 -0
- package/marketplace/plugins/stats/src/groups.ts +204 -0
- package/marketplace/plugins/stats/src/labels.test.ts +188 -0
- package/marketplace/plugins/stats/src/labels.ts +219 -0
- package/marketplace/plugins/stats/src/proc/darwin.ts +268 -0
- package/marketplace/plugins/stats/src/proc/identity.ts +179 -0
- package/marketplace/plugins/stats/src/proc/index.ts +45 -0
- package/marketplace/plugins/stats/src/proc/linux.ts +186 -0
- package/marketplace/plugins/stats/src/proc/ps.ts +121 -0
- package/marketplace/plugins/stats/src/proc/types.ts +78 -0
- package/marketplace/plugins/stats/src/sampler.test.ts +200 -0
- package/marketplace/plugins/stats/src/sampler.ts +281 -0
- package/marketplace/plugins/stats/src/server.ts +252 -0
- package/marketplace/plugins/stats/src/sessions.test.ts +112 -0
- package/marketplace/plugins/stats/src/sessions.ts +189 -0
- package/marketplace/plugins/stats/src/snapshot.ts +121 -0
- package/marketplace/plugins/stats/tsconfig.json +16 -0
- package/package.json +103 -4
- package/public/apple-touch-icon.png +0 -0
- package/public/icon-192x192.png +0 -0
- package/public/icon-512x512.png +0 -0
- package/public/icon-maskable-512x512.png +0 -0
- package/public/icon.svg +12 -0
- package/public/manifest.webmanifest +91 -0
- package/public/sw.js +76 -0
- package/src/cli/kabmo.js +5 -0
- package/src/cli/lib/args.js +283 -0
- package/src/cli/lib/args.test.js +76 -0
- package/src/cli/lib/build.js +52 -0
- package/src/cli/lib/commands/logs.js +150 -0
- package/src/cli/lib/commands/plugin.js +285 -0
- package/src/cli/lib/commands/plugin.test.js +125 -0
- package/src/cli/lib/commands/restart.js +94 -0
- package/src/cli/lib/commands/serve.js +278 -0
- package/src/cli/lib/commands/serve.test.js +58 -0
- package/src/cli/lib/commands/status.js +130 -0
- package/src/cli/lib/commands/stop.js +95 -0
- package/src/cli/lib/commands/update.js +132 -0
- package/src/cli/lib/output.js +143 -0
- package/src/cli/lib/path-utils.js +99 -0
- package/src/cli/lib/path-utils.test.js +184 -0
- package/src/cli/lib/paths.js +40 -0
- package/src/cli/lib/process-lifecycle.js +148 -0
- package/src/cli/lib/process-lifecycle.test.js +156 -0
- package/src/cli/lib/restart-scope.js +93 -0
- package/src/cli/lib/restart-scope.test.js +119 -0
- package/src/cli/lib/runtime.js +279 -0
- package/src/cli/lib/serve-mode.js +20 -0
- package/src/cli/lib/serve-mode.test.js +29 -0
- package/src/cli/lib/stop-instance.js +120 -0
- package/src/cli/lib/stop-instance.test.js +206 -0
- package/src/cli/lib/stop-scope.js +23 -0
- package/src/cli/lib/stop-scope.test.js +41 -0
- package/src/cli/lib/ui-password.js +190 -0
- package/src/cli/main.js +81 -0
- package/src/client/App.tsx +140 -0
- package/src/client/bootstrap.d.ts +33 -0
- package/src/client/components/auth/login-screen/index.tsx +133 -0
- package/src/client/components/common/ComposerPicker.tsx +141 -0
- package/src/client/components/common/ComposerTextarea.tsx +178 -0
- package/src/client/components/common/CopyButton.tsx +97 -0
- package/src/client/components/common/FolderPicker.tsx +254 -0
- package/src/client/components/common/MarkdownRenderer.tsx +299 -0
- package/src/client/components/common/Modal.tsx +93 -0
- package/src/client/components/common/PWAInstallButton.tsx +113 -0
- package/src/client/components/common/ReloadPageButton.test.tsx +78 -0
- package/src/client/components/common/ReloadPageButton.tsx +30 -0
- package/src/client/components/common/SignOutButton.test.tsx +141 -0
- package/src/client/components/common/SignOutButton.tsx +94 -0
- package/src/client/components/common/StatCard.tsx +52 -0
- package/src/client/components/common/StreamStatusDot.tsx +27 -0
- package/src/client/components/common/SubagentStatusIcon.tsx +27 -0
- package/src/client/components/common/Toast.tsx +79 -0
- package/src/client/components/common/ToastStack.tsx +18 -0
- package/src/client/components/common/UpdateLog.tsx +55 -0
- package/src/client/components/common/ViewportSelector.tsx +206 -0
- package/src/client/components/common/brand-wordmark/index.test.tsx +93 -0
- package/src/client/components/common/brand-wordmark/index.tsx +35 -0
- package/src/client/components/common/code-editor/handler.test.ts +274 -0
- package/src/client/components/common/code-editor/handler.ts +175 -0
- package/src/client/components/common/code-editor/index.tsx +314 -0
- package/src/client/components/common/code-surface/index.tsx +348 -0
- package/src/client/components/common/code-surface/measure.ts +148 -0
- package/src/client/components/common/context-usage-button/Ring.tsx +73 -0
- package/src/client/components/common/context-usage-button/index.test.tsx +197 -0
- package/src/client/components/common/context-usage-button/index.tsx +159 -0
- package/src/client/components/common/diagram-viewer/index.tsx +258 -0
- package/src/client/components/common/diagram-viewer/read-block.ts +53 -0
- package/src/client/components/common/file-icon/brand-paths.ts +62 -0
- package/src/client/components/common/file-icon/index.tsx +166 -0
- package/src/client/components/common/header-controls/index.test.tsx +240 -0
- package/src/client/components/common/header-controls/index.tsx +118 -0
- package/src/client/components/common/header-panel-buttons/index.tsx +176 -0
- package/src/client/components/common/image-viewer/index.tsx +224 -0
- package/src/client/components/common/outline-kind-icon/index.tsx +86 -0
- package/src/client/components/common/provider-icon/glyphs.test.ts +94 -0
- package/src/client/components/common/provider-icon/glyphs.ts +118 -0
- package/src/client/components/common/provider-icon/index.plugin.test.ts +133 -0
- package/src/client/components/common/provider-icon/index.test.ts +107 -0
- package/src/client/components/common/provider-icon/index.tsx +104 -0
- package/src/client/components/common/provider-icon/resolve.test.ts +112 -0
- package/src/client/components/common/provider-icon/resolve.ts +94 -0
- package/src/client/components/common/session-actions-menu/index.tsx +220 -0
- package/src/client/components/common/session-delete-modal/index.tsx +128 -0
- package/src/client/components/common/session-state-provider/index.test.ts +142 -0
- package/src/client/components/common/session-state-provider/index.tsx +60 -0
- package/src/client/components/common/sort-menu/index.tsx +63 -0
- package/src/client/components/common/sort-menu/options.ts +24 -0
- package/src/client/components/common/subagent-list/index.tsx +165 -0
- package/src/client/components/common/todo-row/index.test.ts +91 -0
- package/src/client/components/common/todo-row/index.tsx +92 -0
- package/src/client/components/common/viewport.ts +23 -0
- package/src/client/components/common/workspace-options-menu/index.tsx +99 -0
- package/src/client/components/layout/PanelVisibilityMenu.tsx +114 -0
- package/src/client/components/layout/RightActivityBar.test.ts +272 -0
- package/src/client/components/layout/RightActivityBar.tsx +220 -0
- package/src/client/components/layout/desktop-layout/ResizeHandle.tsx +10 -0
- package/src/client/components/layout/desktop-layout/TopNavbar.tsx +167 -0
- package/src/client/components/layout/desktop-layout/WorkspacePanels.tsx +326 -0
- package/src/client/components/layout/desktop-layout/index.tsx +307 -0
- package/src/client/components/layout/desktop-layout/resizer/index.tsx +312 -0
- package/src/client/components/layout/desktop-layout/resizer/panel.test.ts +145 -0
- package/src/client/components/layout/desktop-layout/resizer/separator-drag.ts +140 -0
- package/src/client/components/layout/desktop-layout/resizer/utils.test.ts +33 -0
- package/src/client/components/layout/desktop-layout/resizer/utils.ts +34 -0
- package/src/client/components/layout/session-sidebar/CategoryItem.tsx +316 -0
- package/src/client/components/layout/session-sidebar/Footer.tsx +54 -0
- package/src/client/components/layout/session-sidebar/Header.test.ts +88 -0
- package/src/client/components/layout/session-sidebar/Header.tsx +57 -0
- package/src/client/components/layout/session-sidebar/Modals.tsx +15 -0
- package/src/client/components/layout/session-sidebar/OverflowMenu.test.ts +115 -0
- package/src/client/components/layout/session-sidebar/OverflowMenu.tsx +117 -0
- package/src/client/components/layout/session-sidebar/SessionItem.test.ts +106 -0
- package/src/client/components/layout/session-sidebar/SessionItem.tsx +213 -0
- package/src/client/components/layout/session-sidebar/SessionList.tsx +51 -0
- package/src/client/components/layout/session-sidebar/Skeleton.tsx +36 -0
- package/src/client/components/layout/session-sidebar/Toolbar.test.ts +132 -0
- package/src/client/components/layout/session-sidebar/Toolbar.tsx +273 -0
- package/src/client/components/layout/session-sidebar/about-modal/SocialLinks.tsx +59 -0
- package/src/client/components/layout/session-sidebar/about-modal/UpdateSection.tsx +179 -0
- package/src/client/components/layout/session-sidebar/about-modal/index.tsx +83 -0
- package/src/client/components/layout/session-sidebar/index.tsx +196 -0
- package/src/client/components/layout/session-sidebar/new-workspace-modal/CloneField.tsx +83 -0
- package/src/client/components/layout/session-sidebar/new-workspace-modal/DirectoryList.tsx +150 -0
- package/src/client/components/layout/session-sidebar/new-workspace-modal/LocationBar.tsx +101 -0
- package/src/client/components/layout/session-sidebar/new-workspace-modal/index.tsx +304 -0
- package/src/client/components/layout/session-sidebar/new-workspace-modal/use-browse.ts +81 -0
- package/src/client/components/layout/session-sidebar/scheduler-modal/TaskForm.tsx +216 -0
- package/src/client/components/layout/session-sidebar/scheduler-modal/TaskList.tsx +217 -0
- package/src/client/components/layout/session-sidebar/scheduler-modal/folders.ts +52 -0
- package/src/client/components/layout/session-sidebar/scheduler-modal/index.tsx +211 -0
- package/src/client/components/layout/update-popup/Actions.tsx +114 -0
- package/src/client/components/layout/update-popup/ReleaseNotes.tsx +77 -0
- package/src/client/components/layout/update-popup/index.tsx +131 -0
- package/src/client/components/mobile/LayoutWrapper.tsx +269 -0
- package/src/client/components/mobile/MainView.tsx +68 -0
- package/src/client/components/mobile/RightSidebar.tsx +154 -0
- package/src/client/components/mobile/SessionSidebar.tsx +223 -0
- package/src/client/components/mobile/mobile-main-view/Header.tsx +211 -0
- package/src/client/components/mobile/mobile-right-sidebar/FullDiff.tsx +84 -0
- package/src/client/components/mobile/mobile-right-sidebar/FullEditor.tsx +317 -0
- package/src/client/components/mobile/mobile-right-sidebar/Header.tsx +156 -0
- package/src/client/components/mobile/mobile-right-sidebar/OutlineButton.tsx +100 -0
- package/src/client/components/mobile/mobile-right-sidebar/StatusBar.tsx +90 -0
- package/src/client/components/mobile/mobile-session-sidebar/Footer.tsx +69 -0
- package/src/client/components/mobile/mobile-session-sidebar/Header.tsx +34 -0
- package/src/client/components/mobile/mobile-session-sidebar/Item.tsx +290 -0
- package/src/client/components/mobile/mobile-session-sidebar/List.tsx +55 -0
- package/src/client/components/mobile/mobile-session-sidebar/SessionRow.test.ts +122 -0
- package/src/client/components/mobile/mobile-session-sidebar/SessionRow.tsx +181 -0
- package/src/client/components/mobile/mobile-session-sidebar/Skeleton.tsx +36 -0
- package/src/client/components/mobile/mobile-session-sidebar/Toolbar.test.ts +133 -0
- package/src/client/components/mobile/mobile-session-sidebar/Toolbar.tsx +223 -0
- package/src/client/components/mobile/open-file-payload.test.ts +71 -0
- package/src/client/components/mobile/open-file-payload.ts +60 -0
- package/src/client/components/settings/LazyModal.tsx +46 -0
- package/src/client/components/settings/LoadingState.tsx +22 -0
- package/src/client/components/settings/Modal.tsx +342 -0
- package/src/client/components/settings/ProjectSelectorDropdown.tsx +148 -0
- package/src/client/components/settings/SettingsSidebarList.tsx +126 -0
- package/src/client/components/settings/Sidebar.test.tsx +118 -0
- package/src/client/components/settings/Sidebar.tsx +172 -0
- package/src/client/components/settings/categories/AgentSettings.tsx +101 -0
- package/src/client/components/settings/categories/AppearanceSettings.tsx +30 -0
- package/src/client/components/settings/categories/BehaviorSettings.tsx +73 -0
- package/src/client/components/settings/categories/ChatSettings.tsx +30 -0
- package/src/client/components/settings/categories/CommandSettings.tsx +136 -0
- package/src/client/components/settings/categories/McpSettings.tsx +159 -0
- package/src/client/components/settings/categories/NotificationSettings.tsx +97 -0
- package/src/client/components/settings/categories/OmpSettings.tsx +321 -0
- package/src/client/components/settings/categories/OtherSettings.tsx +16 -0
- package/src/client/components/settings/categories/PanelPluginSettings.tsx +25 -0
- package/src/client/components/settings/categories/PluginSettings.tsx +162 -0
- package/src/client/components/settings/categories/ProjectSettings.tsx +195 -0
- package/src/client/components/settings/categories/ProviderSettings.tsx +225 -0
- package/src/client/components/settings/categories/SkillCatalogSettings.tsx +289 -0
- package/src/client/components/settings/categories/SkillSettings.tsx +130 -0
- package/src/client/components/settings/categories/TokenUsageSettings.tsx +264 -0
- package/src/client/components/settings/categories/UsageSettings.tsx +109 -0
- package/src/client/components/settings/categories/agent-settings/DetailPane.tsx +333 -0
- package/src/client/components/settings/categories/agent-settings/SidebarList.tsx +42 -0
- package/src/client/components/settings/categories/appearance-settings/EditorFontSection.tsx +78 -0
- package/src/client/components/settings/categories/appearance-settings/ThemeCard.tsx +61 -0
- package/src/client/components/settings/categories/appearance-settings/ThemeGrid.tsx +80 -0
- package/src/client/components/settings/categories/behavior-settings/Editor.tsx +244 -0
- package/src/client/components/settings/categories/chat-settings/FollowUpSection.tsx +120 -0
- package/src/client/components/settings/categories/chat-settings/GoalSection.tsx +195 -0
- package/src/client/components/settings/categories/chat-settings/KeybindingsSection.tsx +107 -0
- package/src/client/components/settings/categories/chat-settings/TitleSection.tsx +99 -0
- package/src/client/components/settings/categories/command-settings/DetailPane.tsx +298 -0
- package/src/client/components/settings/categories/command-settings/SidebarList.tsx +44 -0
- package/src/client/components/settings/categories/mcp-settings/ConnectionTest.tsx +89 -0
- package/src/client/components/settings/categories/mcp-settings/DetailPane.tsx +311 -0
- package/src/client/components/settings/categories/mcp-settings/ImportModal.tsx +161 -0
- package/src/client/components/settings/categories/mcp-settings/SidebarList.tsx +120 -0
- package/src/client/components/settings/categories/omp-settings/ConfigTabs.tsx +254 -0
- package/src/client/components/settings/categories/omp-settings/ExtensionsPanel.tsx +61 -0
- package/src/client/components/settings/categories/omp-settings/RoleEditor.test.ts +94 -0
- package/src/client/components/settings/categories/omp-settings/RoleEditor.tsx +148 -0
- package/src/client/components/settings/categories/omp-settings/RowEditor.tsx +337 -0
- package/src/client/components/settings/categories/panel-plugins/AvailableList.tsx +108 -0
- package/src/client/components/settings/categories/panel-plugins/BuiltinList.tsx +95 -0
- package/src/client/components/settings/categories/panel-plugins/GitFreshness.test.tsx +232 -0
- package/src/client/components/settings/categories/panel-plugins/GitFreshness.tsx +81 -0
- package/src/client/components/settings/categories/panel-plugins/InstallForm.tsx +136 -0
- package/src/client/components/settings/categories/panel-plugins/InstalledList.tsx +221 -0
- package/src/client/components/settings/categories/panel-plugins/PluginMark.test.ts +142 -0
- package/src/client/components/settings/categories/panel-plugins/PluginMark.tsx +114 -0
- package/src/client/components/settings/categories/panel-plugins/ReadmeModal.tsx +87 -0
- package/src/client/components/settings/categories/panel-plugins/Section.tsx +184 -0
- package/src/client/components/settings/categories/panel-plugins/SyncBlockedNotice.tsx +82 -0
- package/src/client/components/settings/categories/panel-plugins/Toolbar.tsx +85 -0
- package/src/client/components/settings/categories/plugin-settings/DetailPane.tsx +285 -0
- package/src/client/components/settings/categories/plugin-settings/MarketplacePane.tsx +303 -0
- package/src/client/components/settings/categories/plugin-settings/SettingsSection.tsx +209 -0
- package/src/client/components/settings/categories/plugin-settings/SidebarList.tsx +250 -0
- package/src/client/components/settings/categories/plugin-settings/selection.ts +19 -0
- package/src/client/components/settings/categories/project-settings/AccentPalette.tsx +76 -0
- package/src/client/components/settings/categories/project-settings/DetailsForm.tsx +71 -0
- package/src/client/components/settings/categories/project-settings/DetailsHeader.tsx +38 -0
- package/src/client/components/settings/categories/project-settings/IconGrid.tsx +152 -0
- package/src/client/components/settings/categories/project-settings/ModelDropdown.tsx +95 -0
- package/src/client/components/settings/categories/project-settings/NameInput.tsx +26 -0
- package/src/client/components/settings/categories/project-settings/SidebarList.tsx +100 -0
- package/src/client/components/settings/categories/provider-settings/AddModelModal.tsx +322 -0
- package/src/client/components/settings/categories/provider-settings/AddProviderModal.tsx +334 -0
- package/src/client/components/settings/categories/provider-settings/AuthSection.tsx +195 -0
- package/src/client/components/settings/categories/provider-settings/DeleteProviderModal.tsx +133 -0
- package/src/client/components/settings/categories/provider-settings/DialectFields.tsx +136 -0
- package/src/client/components/settings/categories/provider-settings/EffortLadder.tsx +89 -0
- package/src/client/components/settings/categories/provider-settings/Header.tsx +22 -0
- package/src/client/components/settings/categories/provider-settings/LoginModal.tsx +224 -0
- package/src/client/components/settings/categories/provider-settings/LogoutProviderModal.tsx +184 -0
- package/src/client/components/settings/categories/provider-settings/ModelCapabilitiesModal.tsx +114 -0
- package/src/client/components/settings/categories/provider-settings/ModelConfigModal.tsx +155 -0
- package/src/client/components/settings/categories/provider-settings/ModelsList.tsx +221 -0
- package/src/client/components/settings/categories/provider-settings/PresetPicker.tsx +82 -0
- package/src/client/components/settings/categories/provider-settings/PriceFields.tsx +107 -0
- package/src/client/components/settings/categories/provider-settings/ReconnectModal.tsx +184 -0
- package/src/client/components/settings/categories/provider-settings/SidebarList.plugin.test.ts +93 -0
- package/src/client/components/settings/categories/provider-settings/SidebarList.tsx +133 -0
- package/src/client/components/settings/categories/skill-catalog/AddSourceModal.tsx +133 -0
- package/src/client/components/settings/categories/skill-settings/DetailPane.tsx +309 -0
- package/src/client/components/settings/categories/skill-settings/SidebarList.tsx +170 -0
- package/src/client/components/settings/categories/token-usage-settings/Breakdown.tsx +127 -0
- package/src/client/components/settings/categories/token-usage-settings/Chart.tsx +74 -0
- package/src/client/components/settings/categories/token-usage-settings/MetricsGrid.tsx +44 -0
- package/src/client/components/settings/categories/usage-settings/DeepSeekCard.tsx +66 -0
- package/src/client/components/settings/categories/usage-settings/KenariCard.tsx +68 -0
- package/src/client/components/settings/categories/usage-settings/LimitsSection.tsx +115 -0
- package/src/client/components/settings/categories/usage-settings/ProviderCard.tsx +45 -0
- package/src/client/components/settings/categories/usage-settings/ProviderDetail.tsx +46 -0
- package/src/client/components/settings/categories/usage-settings/QuotaSection.tsx +93 -0
- package/src/client/components/settings/categories/usage-settings/SavedResetsSection.tsx +158 -0
- package/src/client/components/settings/categories/usage-settings/SidebarList.tsx +89 -0
- package/src/client/components/settings/categories/usage-settings/UsageTable.tsx +66 -0
- package/src/client/components/settings/categories/usage-settings/format.ts +99 -0
- package/src/client/components/settings/categories/usage-settings/providers.ts +69 -0
- package/src/client/components/settings/categories/usage-settings/usage-and-picker.test.ts +330 -0
- package/src/client/components/settings/master-detail/index.tsx +68 -0
- package/src/client/components/workspace/browser-panel/ActivityToasts.tsx +46 -0
- package/src/client/components/workspace/browser-panel/AddressBar.tsx +75 -0
- package/src/client/components/workspace/browser-panel/Screencast.tsx +108 -0
- package/src/client/components/workspace/browser-panel/index.tsx +69 -0
- package/src/client/components/workspace/browser-toolbar/ZoomControls.tsx +48 -0
- package/src/client/components/workspace/browser-toolbar/index.tsx +150 -0
- package/src/client/components/workspace/btw-panel/AskCard.tsx +165 -0
- package/src/client/components/workspace/btw-panel/Messages.tsx +154 -0
- package/src/client/components/workspace/btw-panel/TopicMenu.tsx +106 -0
- package/src/client/components/workspace/btw-panel/index.tsx +163 -0
- package/src/client/components/workspace/chat-timeline/AiMessageFooter.plugin.test.ts +105 -0
- package/src/client/components/workspace/chat-timeline/AiMessageFooter.tsx +277 -0
- package/src/client/components/workspace/chat-timeline/AttachmentChips.tsx +119 -0
- package/src/client/components/workspace/chat-timeline/ChatOverlays.tsx +108 -0
- package/src/client/components/workspace/chat-timeline/ComposerDock.tsx +167 -0
- package/src/client/components/workspace/chat-timeline/EmptyWorkspacePrompt.tsx +261 -0
- package/src/client/components/workspace/chat-timeline/GeneratingIndicator.test.ts +156 -0
- package/src/client/components/workspace/chat-timeline/GeneratingIndicator.tsx +156 -0
- package/src/client/components/workspace/chat-timeline/GoalNotice.tsx +63 -0
- package/src/client/components/workspace/chat-timeline/MessageItem.tsx +289 -0
- package/src/client/components/workspace/chat-timeline/MessageList.test.ts +76 -0
- package/src/client/components/workspace/chat-timeline/MessageList.tsx +117 -0
- package/src/client/components/workspace/chat-timeline/MinimapShortcuts.test.ts +119 -0
- package/src/client/components/workspace/chat-timeline/MinimapShortcuts.tsx +96 -0
- package/src/client/components/workspace/chat-timeline/MobileTurnJump.tsx +104 -0
- package/src/client/components/workspace/chat-timeline/NewChatModal.tsx +124 -0
- package/src/client/components/workspace/chat-timeline/PluginMessageActions.test.ts +102 -0
- package/src/client/components/workspace/chat-timeline/PluginMessageActions.tsx +51 -0
- package/src/client/components/workspace/chat-timeline/QueueList.test.ts +82 -0
- package/src/client/components/workspace/chat-timeline/QueueList.tsx +86 -0
- package/src/client/components/workspace/chat-timeline/RunFooter.tsx +82 -0
- package/src/client/components/workspace/chat-timeline/SessionSkeleton.tsx +89 -0
- package/src/client/components/workspace/chat-timeline/SubagentControls.tsx +93 -0
- package/src/client/components/workspace/chat-timeline/SubagentView.tsx +181 -0
- package/src/client/components/workspace/chat-timeline/SystemNotice.test.ts +175 -0
- package/src/client/components/workspace/chat-timeline/SystemNotice.tsx +296 -0
- package/src/client/components/workspace/chat-timeline/TaskResultContent.tsx +176 -0
- package/src/client/components/workspace/chat-timeline/ThinkingSection.tsx +130 -0
- package/src/client/components/workspace/chat-timeline/TimelineBody.tsx +135 -0
- package/src/client/components/workspace/chat-timeline/ToolCallCard.plugin.test.ts +111 -0
- package/src/client/components/workspace/chat-timeline/ToolCallCard.tsx +194 -0
- package/src/client/components/workspace/chat-timeline/ToolCallingSection.test.ts +161 -0
- package/src/client/components/workspace/chat-timeline/ToolCallingSection.tsx +101 -0
- package/src/client/components/workspace/chat-timeline/UndoConfirmModal.tsx +90 -0
- package/src/client/components/workspace/chat-timeline/chat-input/AccessDropdown.tsx +53 -0
- package/src/client/components/workspace/chat-timeline/chat-input/AttachmentToolbar.tsx +121 -0
- package/src/client/components/workspace/chat-timeline/chat-input/DropOverlay.tsx +17 -0
- package/src/client/components/workspace/chat-timeline/chat-input/GoalBanner.test.ts +180 -0
- package/src/client/components/workspace/chat-timeline/chat-input/GoalBanner.tsx +236 -0
- package/src/client/components/workspace/chat-timeline/chat-input/GoalModal.tsx +320 -0
- package/src/client/components/workspace/chat-timeline/chat-input/GoalSurfaces.tsx +67 -0
- package/src/client/components/workspace/chat-timeline/chat-input/ModeToggles.test.ts +99 -0
- package/src/client/components/workspace/chat-timeline/chat-input/ModeToggles.tsx +102 -0
- package/src/client/components/workspace/chat-timeline/chat-input/PluginComposerSlots.test.ts +110 -0
- package/src/client/components/workspace/chat-timeline/chat-input/PluginComposerSlots.tsx +61 -0
- package/src/client/components/workspace/chat-timeline/chat-input/ThinkingLevelDropdown.tsx +49 -0
- package/src/client/components/workspace/chat-timeline/chat-input/Toolbar.test.ts +155 -0
- package/src/client/components/workspace/chat-timeline/chat-input/Toolbar.tsx +216 -0
- package/src/client/components/workspace/chat-timeline/chat-input/VoiceNotice.tsx +39 -0
- package/src/client/components/workspace/chat-timeline/chat-input/access-levels.ts +14 -0
- package/src/client/components/workspace/chat-timeline/chat-input/expansion.test.ts +86 -0
- package/src/client/components/workspace/chat-timeline/chat-input/expansion.ts +143 -0
- package/src/client/components/workspace/chat-timeline/chat-input/index.tsx +283 -0
- package/src/client/components/workspace/chat-timeline/chat-input/modes-props.ts +49 -0
- package/src/client/components/workspace/chat-timeline/chat-input/props.ts +100 -0
- package/src/client/components/workspace/chat-timeline/chat-input/selection.ts +57 -0
- package/src/client/components/workspace/chat-timeline/index.tsx +335 -0
- package/src/client/components/workspace/chat-timeline/plan-review/index.tsx +159 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/FrameControl.tsx +151 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/GroupedAsk.tsx +232 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/OptionRow.tsx +85 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/PluginPendingInteractions.test.ts +288 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/PluginPendingInteractions.tsx +186 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/QuestionBlock.tsx +162 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/QuestionCard.tsx +100 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/drafts.ts +113 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/index.test.ts +139 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/ask-panel/index.tsx +193 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/extension-dialog/Footer.tsx +97 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/extension-dialog/Header.tsx +52 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/extension-dialog/Lazy.tsx +24 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/extension-dialog/SelectBody.tsx +110 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/extension-dialog/index.tsx +338 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/hashline-patch/index.tsx +93 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/index.tsx +172 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/AstEdit.tsx +203 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Bash.tsx +279 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Checkpoint.tsx +49 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/ContextNotes.tsx +66 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Debug.tsx +91 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Edit.test.ts +177 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Edit.tsx +286 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Eval.tsx +184 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Github.tsx +91 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Goal.tsx +254 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/GoalRecord.tsx +122 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Lsp.tsx +276 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/ManageSkill.tsx +93 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Mcp.tsx +143 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Memory.tsx +93 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Proc.test.ts +241 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Proc.tsx +309 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Read.test.ts +229 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Read.tsx +342 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Resolve.tsx +96 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/SearchFs.tsx +132 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/SearchTool.tsx +318 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/SecurityScan.tsx +102 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/TaskResult.tsx +240 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Think.tsx +52 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Todo.test.ts +119 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Todo.tsx +110 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Wait.test.ts +276 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/Wait.tsx +328 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/panels/WebSearch.tsx +118 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/plugin-renderers.test.ts +73 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/plugin-renderers.ts +40 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/registry.test.ts +215 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/registry.ts +167 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ArtifactBody.test.ts +103 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ArtifactBody.tsx +132 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ArtifactChip.tsx +174 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/DiffView.test.ts +99 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/DiffView.tsx +162 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/EnvelopeHeader.tsx +59 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ExcerptCode.tsx +107 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/FallbackOutput.tsx +57 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/JsonCodeBlock.tsx +79 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/OutputWindow.tsx +62 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ToolCardShell.test.ts +148 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ToolCardShell.tsx +210 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ToolFactChips.tsx +117 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/ToolPanelHeader.tsx +63 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/card-header.test.ts +190 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/card-header.ts +160 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/card-helpers.tsx +175 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/read-line-meta.test.ts +102 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/read-line-meta.ts +95 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/tool-input.test.ts +55 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/tool-input.ts +18 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/truncate.test.ts +53 -0
- package/src/client/components/workspace/chat-timeline/tool-renderers/shared/truncate.ts +18 -0
- package/src/client/components/workspace/context-panel/CostBreakdownPopover.tsx +74 -0
- package/src/client/components/workspace/context-panel/LastMessageCard.tsx +34 -0
- package/src/client/components/workspace/context-panel/RawJsonViewer.tsx +94 -0
- package/src/client/components/workspace/context-panel/RawMessagesList.tsx +288 -0
- package/src/client/components/workspace/context-panel/StatsGrid.tsx +64 -0
- package/src/client/components/workspace/context-panel/TokenDistributionBar.tsx +62 -0
- package/src/client/components/workspace/context-panel/WindowCard.tsx +35 -0
- package/src/client/components/workspace/context-panel/index.tsx +170 -0
- package/src/client/components/workspace/context-panel/pure-helpers.test.ts +264 -0
- package/src/client/components/workspace/context-panel/raw-messages.ts +54 -0
- package/src/client/components/workspace/diff-panel/ConflictBanner.tsx +85 -0
- package/src/client/components/workspace/diff-panel/SplitView.tsx +209 -0
- package/src/client/components/workspace/diff-panel/Toolbar.tsx +281 -0
- package/src/client/components/workspace/diff-panel/UnifiedView.tsx +150 -0
- package/src/client/components/workspace/diff-panel/index.tsx +341 -0
- package/src/client/components/workspace/editor/Body.tsx +127 -0
- package/src/client/components/workspace/editor/CommandPalette.test.ts +242 -0
- package/src/client/components/workspace/editor/CommandPalette.tsx +138 -0
- package/src/client/components/workspace/editor/EditorDropOverlay.tsx +24 -0
- package/src/client/components/workspace/editor/FileDocument.tsx +150 -0
- package/src/client/components/workspace/editor/FilePane.tsx +228 -0
- package/src/client/components/workspace/editor/FindWidget.test.ts +262 -0
- package/src/client/components/workspace/editor/FindWidget.tsx +219 -0
- package/src/client/components/workspace/editor/SaveDeletedFileModal.tsx +80 -0
- package/src/client/components/workspace/editor/Tabs.test.ts +128 -0
- package/src/client/components/workspace/editor/Tabs.tsx +159 -0
- package/src/client/components/workspace/editor/Toolbar.tsx +239 -0
- package/src/client/components/workspace/editor/index.tsx +339 -0
- package/src/client/components/workspace/editor/plugin-file-view.test.ts +183 -0
- package/src/client/components/workspace/editor/plugin-file-view.tsx +159 -0
- package/src/client/components/workspace/editor/viewers/CsvGrid.tsx +33 -0
- package/src/client/components/workspace/editor/viewers/DataGrid.tsx +102 -0
- package/src/client/components/workspace/editor/viewers/DocxView.tsx +72 -0
- package/src/client/components/workspace/editor/viewers/ImageView.tsx +43 -0
- package/src/client/components/workspace/editor/viewers/PdfView.tsx +56 -0
- package/src/client/components/workspace/editor/viewers/SheetView.tsx +115 -0
- package/src/client/components/workspace/editor/viewers/SvgPreview.tsx +50 -0
- package/src/client/components/workspace/editor/viewers/ViewerError.tsx +32 -0
- package/src/client/components/workspace/editor/viewers/bytes.test.ts +239 -0
- package/src/client/components/workspace/editor/viewers/bytes.ts +114 -0
- package/src/client/components/workspace/editor/viewers/dispatch.tsx +130 -0
- package/src/client/components/workspace/editor/viewers/mammoth-browser.d.ts +36 -0
- package/src/client/components/workspace/editor/viewers/use-byte-document.test.ts +170 -0
- package/src/client/components/workspace/editor/viewers/use-byte-document.ts +73 -0
- package/src/client/components/workspace/editor/viewers/use-byte-url.test.ts +259 -0
- package/src/client/components/workspace/editor/viewers/use-byte-url.ts +118 -0
- package/src/client/components/workspace/editor/viewers/viewers.test.ts +233 -0
- package/src/client/components/workspace/file-explorer/ContextMenu.tsx +142 -0
- package/src/client/components/workspace/file-explorer/Modals.tsx +229 -0
- package/src/client/components/workspace/file-explorer/OutlineSection.test.tsx +218 -0
- package/src/client/components/workspace/file-explorer/OutlineSection.tsx +135 -0
- package/src/client/components/workspace/file-explorer/RootMenu.tsx +81 -0
- package/src/client/components/workspace/file-explorer/TreeItem.tsx +310 -0
- package/src/client/components/workspace/file-explorer/clipboard.test.ts +171 -0
- package/src/client/components/workspace/file-explorer/drag.test.ts +148 -0
- package/src/client/components/workspace/file-explorer/index.test.ts +130 -0
- package/src/client/components/workspace/file-explorer/index.tsx +336 -0
- package/src/client/components/workspace/file-explorer/root-menu.test.ts +79 -0
- package/src/client/components/workspace/git-panel/BranchToolbar.tsx +252 -0
- package/src/client/components/workspace/git-panel/ChangesList.tsx +217 -0
- package/src/client/components/workspace/git-panel/CommitBox.tsx +108 -0
- package/src/client/components/workspace/git-panel/ConflictItem.tsx +128 -0
- package/src/client/components/workspace/git-panel/FileItem.tsx +99 -0
- package/src/client/components/workspace/git-panel/Modals.tsx +97 -0
- package/src/client/components/workspace/git-panel/OperationBar.tsx +95 -0
- package/src/client/components/workspace/git-panel/PanelModals.tsx +110 -0
- package/src/client/components/workspace/git-panel/RepoHeader.tsx +68 -0
- package/src/client/components/workspace/git-panel/StashSection.test.tsx +243 -0
- package/src/client/components/workspace/git-panel/StashSection.tsx +246 -0
- package/src/client/components/workspace/git-panel/TreeItem.tsx +192 -0
- package/src/client/components/workspace/git-panel/TreeView.tsx +36 -0
- package/src/client/components/workspace/git-panel/branch-modal/BranchRow.tsx +164 -0
- package/src/client/components/workspace/git-panel/branch-modal/DeleteDialog.tsx +109 -0
- package/src/client/components/workspace/git-panel/branch-modal/RenameDialog.tsx +154 -0
- package/src/client/components/workspace/git-panel/branch-modal/index.tsx +229 -0
- package/src/client/components/workspace/git-panel/commit-modal/CommitActions.tsx +89 -0
- package/src/client/components/workspace/git-panel/commit-modal/CommitDiffViewer.tsx +285 -0
- package/src/client/components/workspace/git-panel/commit-modal/CommitRow.test.ts +128 -0
- package/src/client/components/workspace/git-panel/commit-modal/CommitRow.tsx +231 -0
- package/src/client/components/workspace/git-panel/commit-modal/GraphCanvas.tsx +167 -0
- package/src/client/components/workspace/git-panel/commit-modal/Header.tsx +144 -0
- package/src/client/components/workspace/git-panel/commit-modal/index.tsx +330 -0
- package/src/client/components/workspace/git-panel/confirm-request.test.ts +72 -0
- package/src/client/components/workspace/git-panel/confirm-request.ts +92 -0
- package/src/client/components/workspace/git-panel/index.test.ts +332 -0
- package/src/client/components/workspace/git-panel/index.tsx +342 -0
- package/src/client/components/workspace/model-dropdown/Footer.tsx +21 -0
- package/src/client/components/workspace/model-dropdown/Header.tsx +50 -0
- package/src/client/components/workspace/model-dropdown/Item.plugin.test.ts +90 -0
- package/src/client/components/workspace/model-dropdown/Item.tsx +127 -0
- package/src/client/components/workspace/model-dropdown/Panel.tsx +146 -0
- package/src/client/components/workspace/model-dropdown/Section.tsx +96 -0
- package/src/client/components/workspace/model-dropdown/Skeleton.tsx +39 -0
- package/src/client/components/workspace/model-dropdown/SpecsTooltip.tsx +91 -0
- package/src/client/components/workspace/model-dropdown/groups.ts +95 -0
- package/src/client/components/workspace/model-dropdown/index.tsx +290 -0
- package/src/client/components/workspace/model-dropdown/use-catalog.ts +135 -0
- package/src/client/components/workspace/panels/builtin.test.ts +79 -0
- package/src/client/components/workspace/panels/builtin.tsx +193 -0
- package/src/client/components/workspace/plan-panel/Nav.tsx +93 -0
- package/src/client/components/workspace/plan-panel/PageView.tsx +91 -0
- package/src/client/components/workspace/plan-panel/index.tsx +188 -0
- package/src/client/components/workspace/plugin-panel/Error.tsx +37 -0
- package/src/client/components/workspace/plugin-panel/RowScope.test.tsx +197 -0
- package/src/client/components/workspace/plugin-panel/resolve.tsx +263 -0
- package/src/client/components/workspace/repo-picker/Modal.test.tsx +260 -0
- package/src/client/components/workspace/repo-picker/Modal.tsx +238 -0
- package/src/client/components/workspace/repo-picker/Row.tsx +223 -0
- package/src/client/components/workspace/repo-picker/index.test.tsx +137 -0
- package/src/client/components/workspace/repo-picker/index.tsx +92 -0
- package/src/client/components/workspace/search-panel/Body.tsx +274 -0
- package/src/client/components/workspace/search-panel/Results.tsx +188 -0
- package/src/client/components/workspace/search-panel/Row.tsx +86 -0
- package/src/client/components/workspace/search-panel/index.tsx +132 -0
- package/src/client/components/workspace/terminal-panel/Header.test.ts +99 -0
- package/src/client/components/workspace/terminal-panel/Header.tsx +90 -0
- package/src/client/components/workspace/terminal-panel/KeyBar.tsx +194 -0
- package/src/client/components/workspace/terminal-panel/QuickActions.tsx +39 -0
- package/src/client/components/workspace/terminal-panel/RealtimeXtermView.tsx +168 -0
- package/src/client/components/workspace/terminal-panel/index.tsx +231 -0
- package/src/client/components/workspace/terminal-panel/mount.ts +322 -0
- package/src/client/components/workspace/todo-panel/PhaseGroup.tsx +76 -0
- package/src/client/components/workspace/todo-panel/index.tsx +169 -0
- package/src/client/components/workspace/usage-panel/ProviderSelect.tsx +213 -0
- package/src/client/components/workspace/usage-panel/index.tsx +124 -0
- package/src/client/components/workspace/usage-panel/report.test.ts +61 -0
- package/src/client/components/workspace/usage-panel/report.ts +36 -0
- package/src/client/components/workspace/user-browser-panel/AddressBar.tsx +134 -0
- package/src/client/components/workspace/user-browser-panel/Frame.tsx +72 -0
- package/src/client/components/workspace/user-browser-panel/index.tsx +87 -0
- package/src/client/components/workspace/wiki-panel/Nav.tsx +140 -0
- package/src/client/components/workspace/wiki-panel/PageView.tsx +126 -0
- package/src/client/components/workspace/wiki-panel/index.tsx +245 -0
- package/src/client/data/agent-data/builtin.ts +31 -0
- package/src/client/data/agent-data/index.ts +10 -0
- package/src/client/data/agent-data/orchestrator.ts +113 -0
- package/src/client/data/agent-data/specialist.ts +245 -0
- package/src/client/data/context-data/index.test.ts +120 -0
- package/src/client/data/context-data/index.ts +312 -0
- package/src/client/data/context-data/presets.ts +128 -0
- package/src/client/data/mock/chat.ts +236 -0
- package/src/client/data/mock/git-commits.ts +309 -0
- package/src/client/data/mock/subagents.ts +212 -0
- package/src/client/data/mock/token-usage.ts +129 -0
- package/src/client/data/models/catalog.ts +301 -0
- package/src/client/data/samples/dialogue-session.ts +285 -0
- package/src/client/data/samples/sample-subagents/scout-raw.ts +341 -0
- package/src/client/data/samples/sample-subagents/sleeper-raw.ts +294 -0
- package/src/client/data/samples/sample-tools/built-in-part1.ts +303 -0
- package/src/client/data/samples/sample-tools/built-in-part2.ts +200 -0
- package/src/client/data/samples/sample-tools/other.ts +162 -0
- package/src/client/data/samples/subagent-session.ts +99 -0
- package/src/client/data/samples/tools-session.ts +85 -0
- package/src/client/data/samples/virtual-devices-internal-url.ts +141 -0
- package/src/client/data/samples/virtual-devices-session.ts +336 -0
- package/src/client/data/settings/behavior.ts +12 -0
- package/src/client/data/settings/command.ts +148 -0
- package/src/client/data/settings/mcp.ts +28 -0
- package/src/client/data/settings/omp-schema.json +8380 -0
- package/src/client/data/settings/plugin.ts +127 -0
- package/src/client/data/settings/project.ts +58 -0
- package/src/client/data/settings/provider.ts +317 -0
- package/src/client/data/settings/skill.ts +340 -0
- package/src/client/data/theme/terminal.ts +163 -0
- package/src/client/hooks/browser/use-screencast.ts +178 -0
- package/src/client/hooks/browser/use-user-browser.ts +105 -0
- package/src/client/hooks/chat/btw/index.ts +238 -0
- package/src/client/hooks/chat/btw/intercept.test.ts +99 -0
- package/src/client/hooks/chat/btw/intercept.ts +46 -0
- package/src/client/hooks/chat/btw/mode.ts +209 -0
- package/src/client/hooks/chat/composer/attachments.test.ts +211 -0
- package/src/client/hooks/chat/composer/attachments.ts +198 -0
- package/src/client/hooks/chat/composer/auto-grow.test.ts +142 -0
- package/src/client/hooks/chat/composer/auto-grow.ts +51 -0
- package/src/client/hooks/chat/composer/browser-context.ts +40 -0
- package/src/client/hooks/chat/composer/drop-entries.test.ts +234 -0
- package/src/client/hooks/chat/composer/drop-entries.ts +204 -0
- package/src/client/hooks/chat/composer/drop-payload.test.ts +97 -0
- package/src/client/hooks/chat/composer/drop-payload.ts +130 -0
- package/src/client/hooks/chat/composer/drop-references.ts +106 -0
- package/src/client/hooks/chat/composer/file-drop.test.ts +194 -0
- package/src/client/hooks/chat/composer/file-drop.ts +226 -0
- package/src/client/hooks/chat/composer/file-reads.test.ts +211 -0
- package/src/client/hooks/chat/composer/file-reads.ts +238 -0
- package/src/client/hooks/chat/composer/index.ts +213 -0
- package/src/client/hooks/chat/composer/items.test.ts +327 -0
- package/src/client/hooks/chat/composer/items.ts +100 -0
- package/src/client/hooks/chat/composer/model-selection.ts +197 -0
- package/src/client/hooks/chat/composer/pipeline.test.ts +260 -0
- package/src/client/hooks/chat/composer/pipeline.ts +183 -0
- package/src/client/hooks/chat/composer/publish-state.ts +80 -0
- package/src/client/hooks/chat/composer/speech-to-text.ts +214 -0
- package/src/client/hooks/chat/composer/use-draft.ts +33 -0
- package/src/client/hooks/chat/composer/voice-input.ts +71 -0
- package/src/client/hooks/chat/context/telemetry.ts +66 -0
- package/src/client/hooks/chat/omp/index-probe.test.ts +164 -0
- package/src/client/hooks/chat/omp/index.ts +276 -0
- package/src/client/hooks/chat/omp/owner-redirect.test.ts +74 -0
- package/src/client/hooks/chat/omp/owner-redirect.ts +44 -0
- package/src/client/hooks/chat/omp/pending-rows.ts +103 -0
- package/src/client/hooks/chat/omp/pending-sessions.test.ts +314 -0
- package/src/client/hooks/chat/omp/pending-sessions.ts +296 -0
- package/src/client/hooks/chat/omp/prompt-send.test.ts +280 -0
- package/src/client/hooks/chat/omp/prompt-send.ts +187 -0
- package/src/client/hooks/chat/omp/run-switch.test.ts +69 -0
- package/src/client/hooks/chat/omp/run-switch.ts +52 -0
- package/src/client/hooks/chat/omp/session-list.test.ts +283 -0
- package/src/client/hooks/chat/omp/session-list.tsx +289 -0
- package/src/client/hooks/chat/omp/session-sidebar-controller.test.ts +234 -0
- package/src/client/hooks/chat/omp/session-sidebar-controller.ts +285 -0
- package/src/client/hooks/chat/omp/session-statuses.test.ts +277 -0
- package/src/client/hooks/chat/omp/session-statuses.ts +129 -0
- package/src/client/hooks/chat/omp/sidebar-overlay.ts +73 -0
- package/src/client/hooks/chat/omp/status.ts +12 -0
- package/src/client/hooks/chat/omp/stream-rpc.test.ts +188 -0
- package/src/client/hooks/chat/omp/stream.test.ts +223 -0
- package/src/client/hooks/chat/omp/stream.ts +149 -0
- package/src/client/hooks/chat/stream.ts +228 -0
- package/src/client/hooks/chat/subagent/index.ts +309 -0
- package/src/client/hooks/chat/timeline/access-mode.ts +41 -0
- package/src/client/hooks/chat/timeline/actions.test.ts +310 -0
- package/src/client/hooks/chat/timeline/actions.ts +335 -0
- package/src/client/hooks/chat/timeline/ask-frames-grouped.test.ts +76 -0
- package/src/client/hooks/chat/timeline/ask-frames.test.ts +151 -0
- package/src/client/hooks/chat/timeline/ask-frames.ts +172 -0
- package/src/client/hooks/chat/timeline/auto-scroll.ts +67 -0
- package/src/client/hooks/chat/timeline/composer-local-actions.test.ts +349 -0
- package/src/client/hooks/chat/timeline/composer-modes.ts +32 -0
- package/src/client/hooks/chat/timeline/deferred-model.test.ts +224 -0
- package/src/client/hooks/chat/timeline/deferred-model.ts +92 -0
- package/src/client/hooks/chat/timeline/extension-dialog.ts +59 -0
- package/src/client/hooks/chat/timeline/generating.test.ts +103 -0
- package/src/client/hooks/chat/timeline/generating.ts +106 -0
- package/src/client/hooks/chat/timeline/goal-command.ts +76 -0
- package/src/client/hooks/chat/timeline/index.ts +349 -0
- package/src/client/hooks/chat/timeline/mode-marker-spellings.test.ts +57 -0
- package/src/client/hooks/chat/timeline/mode-markers.ts +103 -0
- package/src/client/hooks/chat/timeline/modes.test.ts +311 -0
- package/src/client/hooks/chat/timeline/modes.ts +326 -0
- package/src/client/hooks/chat/timeline/new-chat.test.ts +196 -0
- package/src/client/hooks/chat/timeline/new-chat.ts +80 -0
- package/src/client/hooks/chat/timeline/plan-review.test.ts +47 -0
- package/src/client/hooks/chat/timeline/plan-review.ts +148 -0
- package/src/client/hooks/chat/timeline/plugin-commands.test.ts +116 -0
- package/src/client/hooks/chat/timeline/plugin-commands.ts +76 -0
- package/src/client/hooks/chat/timeline/prompt-text.test.ts +123 -0
- package/src/client/hooks/chat/timeline/prompt-text.ts +40 -0
- package/src/client/hooks/chat/timeline/queue-actions.ts +96 -0
- package/src/client/hooks/chat/timeline/queue-rewind.test.ts +271 -0
- package/src/client/hooks/chat/timeline/queue.ts +235 -0
- package/src/client/hooks/chat/timeline/rail-jump.test.ts +204 -0
- package/src/client/hooks/chat/timeline/rail-jump.ts +86 -0
- package/src/client/hooks/chat/timeline/rewind-actions.test.ts +233 -0
- package/src/client/hooks/chat/timeline/rewind-actions.ts +172 -0
- package/src/client/hooks/chat/timeline/rewind.ts +62 -0
- package/src/client/hooks/chat/timeline/scope.ts +55 -0
- package/src/client/hooks/chat/timeline/scroll.test.ts +320 -0
- package/src/client/hooks/chat/timeline/scroll.ts +226 -0
- package/src/client/hooks/chat/timeline/send-execute.test.ts +333 -0
- package/src/client/hooks/chat/timeline/send-helpers.ts +109 -0
- package/src/client/hooks/chat/timeline/send-steer.test.ts +231 -0
- package/src/client/hooks/chat/timeline/send.test.ts +231 -0
- package/src/client/hooks/chat/timeline/send.ts +310 -0
- package/src/client/hooks/chat/timeline/session-load.test.ts +323 -0
- package/src/client/hooks/chat/timeline/session-load.ts +317 -0
- package/src/client/hooks/chat/timeline/session-pagination.test.ts +167 -0
- package/src/client/hooks/chat/timeline/session-pagination.ts +317 -0
- package/src/client/hooks/chat/timeline/session-scope.test.ts +248 -0
- package/src/client/hooks/chat/timeline/session-title.ts +36 -0
- package/src/client/hooks/chat/timeline/subagent-view.ts +92 -0
- package/src/client/hooks/chat/timeline/timeline-mode-state.test.ts +306 -0
- package/src/client/hooks/chat/timeline/timeline-rail.test.ts +259 -0
- package/src/client/hooks/chat/timeline/tool-open.test.ts +141 -0
- package/src/client/hooks/chat/timeline/tool-open.ts +87 -0
- package/src/client/hooks/chat/timeline/tui-only-guard.ts +58 -0
- package/src/client/hooks/chat/timeline/undo-confirmation.ts +45 -0
- package/src/client/hooks/chat/timeline/user-turns.ts +182 -0
- package/src/client/hooks/editor/file-actions.ts +49 -0
- package/src/client/hooks/editor/find-harness.test-util.ts +170 -0
- package/src/client/hooks/editor/find-state.ts +68 -0
- package/src/client/hooks/editor/font.test.ts +344 -0
- package/src/client/hooks/editor/font.ts +53 -0
- package/src/client/hooks/editor/resolve-viewer.test.ts +142 -0
- package/src/client/hooks/editor/resolve-viewer.ts +80 -0
- package/src/client/hooks/editor/save-file.ts +88 -0
- package/src/client/hooks/editor/scroll-container.test.ts +102 -0
- package/src/client/hooks/editor/scroll-container.ts +26 -0
- package/src/client/hooks/editor/use-code-window.ts +100 -0
- package/src/client/hooks/editor/use-editor-document.ts +81 -0
- package/src/client/hooks/editor/use-editor-drop.test.ts +245 -0
- package/src/client/hooks/editor/use-editor-drop.ts +275 -0
- package/src/client/hooks/editor/use-editor-find-write.test.ts +170 -0
- package/src/client/hooks/editor/use-editor-find.test.ts +158 -0
- package/src/client/hooks/editor/use-editor-find.ts +307 -0
- package/src/client/hooks/editor/use-editor-history.test.ts +216 -0
- package/src/client/hooks/editor/use-editor-history.ts +134 -0
- package/src/client/hooks/editor/use-editor-outline-bridge.ts +73 -0
- package/src/client/hooks/editor/use-file-editor-writes.test.ts +118 -0
- package/src/client/hooks/editor/use-file-editor.test.ts +169 -0
- package/src/client/hooks/editor/use-file-editor.ts +331 -0
- package/src/client/hooks/editor/use-file-read.ts +197 -0
- package/src/client/hooks/editor/use-file-transfer.ts +113 -0
- package/src/client/hooks/editor/use-file-writes.ts +228 -0
- package/src/client/hooks/editor/use-line-jump.test.ts +204 -0
- package/src/client/hooks/editor/use-line-jump.ts +112 -0
- package/src/client/hooks/editor/use-line-reveal.ts +71 -0
- package/src/client/hooks/editor/use-occurrences.test.ts +236 -0
- package/src/client/hooks/editor/use-occurrences.ts +98 -0
- package/src/client/hooks/editor/use-outline-view.ts +47 -0
- package/src/client/hooks/editor/use-scroll-restore.test.ts +238 -0
- package/src/client/hooks/editor/use-scroll-restore.ts +209 -0
- package/src/client/hooks/editor/use-search-reveal.ts +74 -0
- package/src/client/hooks/models/use-model-names.ts +17 -0
- package/src/client/hooks/models/use-models-catalog.ts +45 -0
- package/src/client/hooks/models/use-provider-names.ts +18 -0
- package/src/client/hooks/settings/crud-list.test.ts +272 -0
- package/src/client/hooks/settings/crud-list.ts +187 -0
- package/src/client/hooks/settings/instruction-file.ts +91 -0
- package/src/client/hooks/settings/master-detail.ts +33 -0
- package/src/client/hooks/settings/plugins.ts +121 -0
- package/src/client/hooks/settings/providers/actions.ts +341 -0
- package/src/client/hooks/settings/providers/api.ts +69 -0
- package/src/client/hooks/settings/providers/index.ts +154 -0
- package/src/client/hooks/settings/providers/logout.ts +85 -0
- package/src/client/hooks/settings/providers/messages.ts +112 -0
- package/src/client/hooks/settings/reload-engine.ts +74 -0
- package/src/client/hooks/settings/restart-kabmo.test.ts +187 -0
- package/src/client/hooks/settings/restart-kabmo.ts +115 -0
- package/src/client/hooks/settings/settings-siblings.test.ts +168 -0
- package/src/client/hooks/settings/skill-catalog.ts +37 -0
- package/src/client/hooks/settings/use-kabmo-setting.ts +15 -0
- package/src/client/hooks/settings/useUsageReport.ts +45 -0
- package/src/client/hooks/settings/useUsageResets.ts +64 -0
- package/src/client/hooks/settings/workspace-roots.ts +99 -0
- package/src/client/hooks/ui/auth.test.ts +99 -0
- package/src/client/hooks/ui/auth.ts +274 -0
- package/src/client/hooks/ui/clipboard.ts +50 -0
- package/src/client/hooks/ui/copy-flag.ts +27 -0
- package/src/client/hooks/ui/inline-rename.ts +99 -0
- package/src/client/hooks/ui/input-required-alert.ts +43 -0
- package/src/client/hooks/ui/keyboard-inset.test.ts +46 -0
- package/src/client/hooks/ui/keyboard-inset.ts +120 -0
- package/src/client/hooks/ui/notification-sound.ts +173 -0
- package/src/client/hooks/ui/on-click-outside.ts +22 -0
- package/src/client/hooks/ui/open-file.ts +57 -0
- package/src/client/hooks/ui/output-reveal.ts +30 -0
- package/src/client/hooks/ui/realtime.test.ts +84 -0
- package/src/client/hooks/ui/realtime.ts +128 -0
- package/src/client/hooks/ui/show-more.ts +35 -0
- package/src/client/hooks/ui/syntax-ready.ts +30 -0
- package/src/client/hooks/ui/text-overflow.test.ts +152 -0
- package/src/client/hooks/ui/text-overflow.ts +78 -0
- package/src/client/hooks/ui/theme.ts +121 -0
- package/src/client/hooks/ui/toasts.ts +22 -0
- package/src/client/hooks/ui/touch-device.ts +46 -0
- package/src/client/hooks/ui/ui-alert.test.ts +235 -0
- package/src/client/hooks/ui/ui-environment.test.ts +172 -0
- package/src/client/hooks/ui/ui-feedback.test.ts +303 -0
- package/src/client/hooks/ui/ui-inline-rename.test.ts +305 -0
- package/src/client/hooks/ui/ui-listeners.test.ts +331 -0
- package/src/client/hooks/ui/ui-sounds.test.ts +254 -0
- package/src/client/hooks/ui/ui-syntax-ready.test.ts +73 -0
- package/src/client/hooks/ui/updates/changelog.ts +57 -0
- package/src/client/hooks/ui/updates/index.test.ts +218 -0
- package/src/client/hooks/ui/updates/index.ts +254 -0
- package/src/client/hooks/ui/updates/restart.test.ts +129 -0
- package/src/client/hooks/ui/updates/restart.ts +150 -0
- package/src/client/hooks/ui/window-chrome.ts +63 -0
- package/src/client/hooks/ui/window-event.ts +55 -0
- package/src/client/hooks/workspace/available-width.ts +33 -0
- package/src/client/hooks/workspace/commit-box.test.ts +203 -0
- package/src/client/hooks/workspace/commit-box.ts +129 -0
- package/src/client/hooks/workspace/commit-interactions.ts +153 -0
- package/src/client/hooks/workspace/commit-layer.test.ts +348 -0
- package/src/client/hooks/workspace/commit-pagination.ts +101 -0
- package/src/client/hooks/workspace/diff-file.ts +128 -0
- package/src/client/hooks/workspace/directives.ts +55 -0
- package/src/client/hooks/workspace/expanded-sessions.ts +62 -0
- package/src/client/hooks/workspace/file-clipboard.test.ts +247 -0
- package/src/client/hooks/workspace/file-clipboard.ts +192 -0
- package/src/client/hooks/workspace/file-create.ts +111 -0
- package/src/client/hooks/workspace/file-listing.ts +242 -0
- package/src/client/hooks/workspace/file-row-drag.ts +98 -0
- package/src/client/hooks/workspace/file-tabs.ts +233 -0
- package/src/client/hooks/workspace/file-tree-actions-clipboard.test.ts +106 -0
- package/src/client/hooks/workspace/file-tree-actions.test.ts +181 -0
- package/src/client/hooks/workspace/file-tree-actions.ts +246 -0
- package/src/client/hooks/workspace/git-actions.ts +56 -0
- package/src/client/hooks/workspace/git-panel-data.ts +162 -0
- package/src/client/hooks/workspace/git-status.test.ts +150 -0
- package/src/client/hooks/workspace/git-status.ts +48 -0
- package/src/client/hooks/workspace/git-tree.test.ts +73 -0
- package/src/client/hooks/workspace/git-tree.ts +146 -0
- package/src/client/hooks/workspace/list-slots.test.ts +86 -0
- package/src/client/hooks/workspace/list-slots.ts +59 -0
- package/src/client/hooks/workspace/missing-files.test.ts +179 -0
- package/src/client/hooks/workspace/missing-files.ts +132 -0
- package/src/client/hooks/workspace/new-workspace.ts +51 -0
- package/src/client/hooks/workspace/panel-order.ts +87 -0
- package/src/client/hooks/workspace/panel-registry.ts +329 -0
- package/src/client/hooks/workspace/panel-reorder.ts +119 -0
- package/src/client/hooks/workspace/panel-widths.test.ts +261 -0
- package/src/client/hooks/workspace/panel-widths.ts +51 -0
- package/src/client/hooks/workspace/renaming-sessions.ts +61 -0
- package/src/client/hooks/workspace/repo-details.ts +128 -0
- package/src/client/hooks/workspace/repo-scope/index.test.ts +213 -0
- package/src/client/hooks/workspace/repo-scope/index.ts +181 -0
- package/src/client/hooks/workspace/repo-scope/store.test.ts +158 -0
- package/src/client/hooks/workspace/repo-scope/store.ts +164 -0
- package/src/client/hooks/workspace/scheduled-tasks.ts +159 -0
- package/src/client/hooks/workspace/search-stream.test.ts +149 -0
- package/src/client/hooks/workspace/search-stream.ts +133 -0
- package/src/client/hooks/workspace/session-actions.test.ts +170 -0
- package/src/client/hooks/workspace/session-actions.ts +99 -0
- package/src/client/hooks/workspace/session-delete.ts +93 -0
- package/src/client/hooks/workspace/session-state/context.ts +15 -0
- package/src/client/hooks/workspace/session-state/index.ts +83 -0
- package/src/client/hooks/workspace/sidebar-width.ts +43 -0
- package/src/client/hooks/workspace/terminal/index.ts +186 -0
- package/src/client/hooks/workspace/terminal/socket.ts +227 -0
- package/src/client/hooks/workspace/wiki.ts +195 -0
- package/src/client/hooks/workspace/workspace-folder-actions.ts +125 -0
- package/src/client/lib/editor-document.ts +106 -0
- package/src/client/lib/launch/file-handlers.test.ts +255 -0
- package/src/client/lib/launch/file-handlers.ts +203 -0
- package/src/client/lib/launch/types.ts +67 -0
- package/src/client/lib/line-reveal.ts +61 -0
- package/src/client/lib/outline-stores.test.ts +94 -0
- package/src/client/lib/plugins/bootstrap.test.ts +258 -0
- package/src/client/lib/plugins/bootstrap.tsx +158 -0
- package/src/client/lib/plugins/composer-bridge.ts +107 -0
- package/src/client/lib/plugins/content-scripts-root.test.ts +158 -0
- package/src/client/lib/plugins/content-scripts.test.ts +331 -0
- package/src/client/lib/plugins/content-scripts.ts +252 -0
- package/src/client/lib/plugins/context.ts +68 -0
- package/src/client/lib/plugins/directives.test.tsx +239 -0
- package/src/client/lib/plugins/directives.tsx +139 -0
- package/src/client/lib/plugins/kit.test.ts +103 -0
- package/src/client/lib/plugins/kit.ts +160 -0
- package/src/client/lib/plugins/list-slots.test.ts +148 -0
- package/src/client/lib/plugins/list-slots.ts +166 -0
- package/src/client/lib/plugins/loader.ts +66 -0
- package/src/client/lib/plugins/repo-scope-service.test.ts +90 -0
- package/src/client/lib/plugins/repo-scope-service.ts +148 -0
- package/src/client/lib/plugins/runtime.ts +64 -0
- package/src/client/lib/plugins/sidebar-bridge.test.ts +200 -0
- package/src/client/lib/plugins/sidebar-bridge.ts +215 -0
- package/src/client/lib/plugins/slots.test.ts +177 -0
- package/src/client/lib/plugins/slots.ts +230 -0
- package/src/client/lib/plugins/stylesheets.test.ts +157 -0
- package/src/client/lib/plugins/stylesheets.ts +89 -0
- package/src/client/lib/plugins/topic.ts +55 -0
- package/src/client/lib/router/fetcher.ts +100 -0
- package/src/client/lib/router/search-params.ts +86 -0
- package/src/client/lib/scrollbar-activity.test.ts +165 -0
- package/src/client/lib/scrollbar-activity.ts +112 -0
- package/src/client/lib/search-reveal.ts +61 -0
- package/src/client/lib/signals.ts +72 -0
- package/src/client/lib/ui/with-chord.ts +21 -0
- package/src/client/main.tsx +78 -0
- package/src/client/stubs/elkjs.ts +42 -0
- package/src/client/tailwind.css +578 -0
- package/src/server/db.server.test.ts +153 -0
- package/src/server/db.server.ts +144 -0
- package/src/server/index.ts +329 -0
- package/src/server/lib/assets/conditional.server.test.ts +74 -0
- package/src/server/lib/assets/conditional.server.ts +54 -0
- package/src/server/lib/assets/dev-assets.server.test.ts +44 -0
- package/src/server/lib/assets/dev-assets.server.ts +128 -0
- package/src/server/lib/assets/font-css.server.test.ts +87 -0
- package/src/server/lib/assets/font-css.server.ts +113 -0
- package/src/server/lib/assets/font-faces.ts +69 -0
- package/src/server/lib/assets/fonts.server.ts +77 -0
- package/src/server/lib/auth/client-address.ts +55 -0
- package/src/server/lib/auth/config.ts +133 -0
- package/src/server/lib/auth/env-password.test.ts +112 -0
- package/src/server/lib/auth/env-password.ts +79 -0
- package/src/server/lib/auth/guard.test.ts +305 -0
- package/src/server/lib/auth/guard.ts +285 -0
- package/src/server/lib/auth/handover-guard.test.ts +100 -0
- package/src/server/lib/auth/rate-limit.test.ts +135 -0
- package/src/server/lib/auth/rate-limit.ts +143 -0
- package/src/server/lib/auth/token.test.ts +236 -0
- package/src/server/lib/auth/token.ts +220 -0
- package/src/server/lib/browser/runtime.test.ts +110 -0
- package/src/server/lib/browser/runtime.ts +160 -0
- package/src/server/lib/btw/child.server.test.ts +68 -0
- package/src/server/lib/btw/child.server.ts +42 -0
- package/src/server/lib/btw/frames.test.ts +59 -0
- package/src/server/lib/btw/frames.ts +50 -0
- package/src/server/lib/btw/lifecycle.server.test.ts +139 -0
- package/src/server/lib/btw/lifecycle.server.ts +264 -0
- package/src/server/lib/btw/prompt.ts +32 -0
- package/src/server/lib/btw/purge.server.ts +56 -0
- package/src/server/lib/btw/registry.server.test.ts +213 -0
- package/src/server/lib/btw/registry.server.ts +142 -0
- package/src/server/lib/btw/reply.ts +54 -0
- package/src/server/lib/btw/runtime.server.test.ts +128 -0
- package/src/server/lib/btw/runtime.server.ts +308 -0
- package/src/server/lib/btw/schema.server.test.ts +84 -0
- package/src/server/lib/btw/schema.server.ts +79 -0
- package/src/server/lib/btw/service.server.test.ts +199 -0
- package/src/server/lib/btw/service.server.ts +241 -0
- package/src/server/lib/btw/session-copy.server.ts +213 -0
- package/src/server/lib/btw/session-copy.test.ts +166 -0
- package/src/server/lib/btw/store.server.test.ts +301 -0
- package/src/server/lib/btw/store.server.ts +280 -0
- package/src/server/lib/bundler/build-errors.server.ts +141 -0
- package/src/server/lib/bundler/build-errors.test.ts +103 -0
- package/src/server/lib/bundler/css.test.ts +237 -0
- package/src/server/lib/bundler/css.ts +82 -0
- package/src/server/lib/bundler/dependencies.test.ts +149 -0
- package/src/server/lib/bundler/nested-at-rules.test.ts +100 -0
- package/src/server/lib/bundler/nested-at-rules.ts +146 -0
- package/src/server/lib/bundler/tsconfig-paths.test.ts +124 -0
- package/src/server/lib/chat/session-store.server.ts +61 -0
- package/src/server/lib/db/client.ts +76 -0
- package/src/server/lib/db/compact-chat-overlay.test.ts +128 -0
- package/src/server/lib/db/compact-chat-overlay.ts +90 -0
- package/src/server/lib/db/schema.test.ts +219 -0
- package/src/server/lib/db/schema.ts +122 -0
- package/src/server/lib/db/seed-terminal.test.ts +227 -0
- package/src/server/lib/db/seed.test.ts +226 -0
- package/src/server/lib/db/seed.ts +160 -0
- package/src/server/lib/db/settings-store.test.ts +65 -0
- package/src/server/lib/db/settings-store.ts +173 -0
- package/src/server/lib/db/workspace-sync.test.ts +274 -0
- package/src/server/lib/db/workspace-sync.ts +144 -0
- package/src/server/lib/dictation/language.server.test.ts +134 -0
- package/src/server/lib/dictation/language.server.ts +82 -0
- package/src/server/lib/dictation/omp-stt-worker.ts +243 -0
- package/src/server/lib/fs/atomic-write.ts +65 -0
- package/src/server/lib/fs/child-env.test.ts +66 -0
- package/src/server/lib/fs/child-env.ts +50 -0
- package/src/server/lib/fs/config-lock.ts +74 -0
- package/src/server/lib/fs/fs-path.test.ts +293 -0
- package/src/server/lib/fs/fs-write-git.test.ts +332 -0
- package/src/server/lib/fs/git-actions-branch.ts +148 -0
- package/src/server/lib/fs/git-actions-history.ts +74 -0
- package/src/server/lib/fs/git-actions-shared.ts +86 -0
- package/src/server/lib/fs/git-actions-worktree.ts +187 -0
- package/src/server/lib/fs/git-actions.ts +39 -0
- package/src/server/lib/fs/git-branch.ts +226 -0
- package/src/server/lib/fs/git-diff.test.ts +304 -0
- package/src/server/lib/fs/git-diff.ts +162 -0
- package/src/server/lib/fs/git-ignore.ts +105 -0
- package/src/server/lib/fs/git-index-lock.test.ts +232 -0
- package/src/server/lib/fs/git-log-parse.test.ts +155 -0
- package/src/server/lib/fs/git-log.test.ts +337 -0
- package/src/server/lib/fs/git-log.ts +335 -0
- package/src/server/lib/fs/git-merge-conflict.test.ts +123 -0
- package/src/server/lib/fs/git-merge.ts +210 -0
- package/src/server/lib/fs/git-porcelain-v2.ts +140 -0
- package/src/server/lib/fs/git-publish.test.ts +147 -0
- package/src/server/lib/fs/git-publish.ts +73 -0
- package/src/server/lib/fs/git-repo-details.test.ts +227 -0
- package/src/server/lib/fs/git-repo-details.ts +163 -0
- package/src/server/lib/fs/git-repos.test.ts +101 -0
- package/src/server/lib/fs/git-repos.ts +117 -0
- package/src/server/lib/fs/git-revert.ts +93 -0
- package/src/server/lib/fs/git-run.ts +219 -0
- package/src/server/lib/fs/git-stash.ts +159 -0
- package/src/server/lib/fs/git-state-verbs.test.ts +117 -0
- package/src/server/lib/fs/git-state.test.ts +171 -0
- package/src/server/lib/fs/git-state.ts +178 -0
- package/src/server/lib/fs/git-status-read.test.ts +141 -0
- package/src/server/lib/fs/git-status-read.ts +174 -0
- package/src/server/lib/fs/git-sync.test.ts +200 -0
- package/src/server/lib/fs/git-sync.ts +216 -0
- package/src/server/lib/fs/listing.ts +64 -0
- package/src/server/lib/fs/package-root.test.ts +99 -0
- package/src/server/lib/fs/package-root.ts +87 -0
- package/src/server/lib/fs/path-segment.test.ts +101 -0
- package/src/server/lib/fs/path-segment.ts +45 -0
- package/src/server/lib/fs/repo-scope.ts +14 -0
- package/src/server/lib/fs/reveal.ts +101 -0
- package/src/server/lib/fs/ripgrep.test.ts +208 -0
- package/src/server/lib/fs/ripgrep.ts +139 -0
- package/src/server/lib/fs/root.ts +156 -0
- package/src/server/lib/fs/shell.ts +131 -0
- package/src/server/lib/fs/transfer.test.ts +183 -0
- package/src/server/lib/fs/transfer.ts +143 -0
- package/src/server/lib/http/same-origin.ts +26 -0
- package/src/server/lib/lifecycle/argv-flags.ts +47 -0
- package/src/server/lib/lifecycle/bun.ts +20 -0
- package/src/server/lib/lifecycle/fd-pressure.test.ts +110 -0
- package/src/server/lib/lifecycle/fd-pressure.ts +240 -0
- package/src/server/lib/lifecycle/flock.test.ts +166 -0
- package/src/server/lib/lifecycle/flock.ts +199 -0
- package/src/server/lib/lifecycle/identity.test.ts +23 -0
- package/src/server/lib/lifecycle/identity.ts +86 -0
- package/src/server/lib/lifecycle/instance.test.ts +306 -0
- package/src/server/lib/lifecycle/instance.ts +131 -0
- package/src/server/lib/lifecycle/kill-tree.test.ts +196 -0
- package/src/server/lib/lifecycle/kill-tree.ts +114 -0
- package/src/server/lib/lifecycle/launch-mode.test.ts +51 -0
- package/src/server/lib/lifecycle/launch-mode.ts +66 -0
- package/src/server/lib/lifecycle/listener.ts +58 -0
- package/src/server/lib/lifecycle/occupant.ts +101 -0
- package/src/server/lib/lifecycle/paths.test.ts +97 -0
- package/src/server/lib/lifecycle/paths.ts +112 -0
- package/src/server/lib/lifecycle/port-guard.test.ts +288 -0
- package/src/server/lib/lifecycle/port-guard.ts +185 -0
- package/src/server/lib/lifecycle/probe.test.ts +279 -0
- package/src/server/lib/lifecycle/probe.ts +215 -0
- package/src/server/lib/lifecycle/proc/darwin.ts +305 -0
- package/src/server/lib/lifecycle/proc/index.ts +38 -0
- package/src/server/lib/lifecycle/proc/linux.ts +110 -0
- package/src/server/lib/lifecycle/proc/proc.test.ts +164 -0
- package/src/server/lib/lifecycle/proc/ps.ts +99 -0
- package/src/server/lib/lifecycle/proc/types.ts +58 -0
- package/src/server/lib/lifecycle/proc/win32.ts +64 -0
- package/src/server/lib/lifecycle/restart.test.ts +331 -0
- package/src/server/lib/lifecycle/restart.ts +190 -0
- package/src/server/lib/lifecycle/shell-route.ts +17 -0
- package/src/server/lib/lifecycle/tls.test.ts +98 -0
- package/src/server/lib/lifecycle/tls.ts +165 -0
- package/src/server/lib/models/detected-registry.server.ts +41 -0
- package/src/server/lib/models/preferences.server.ts +110 -0
- package/src/server/lib/models/provider-items.server.ts +96 -0
- package/src/server/lib/models/provider-listing.server.test.ts +283 -0
- package/src/server/lib/models/provider-listing.server.ts +279 -0
- package/src/server/lib/models/provider-registry.server.test.ts +173 -0
- package/src/server/lib/models/provider-registry.server.ts +257 -0
- package/src/server/lib/models/registry.server.test.ts +263 -0
- package/src/server/lib/models/registry.server.ts +206 -0
- package/src/server/lib/models/selected-context-limit.server.test.ts +162 -0
- package/src/server/lib/models/selected-context-limit.server.ts +52 -0
- package/src/server/lib/observer-ws.ts +150 -0
- package/src/server/lib/omp/config/agents.ts +162 -0
- package/src/server/lib/omp/config/behavior.ts +113 -0
- package/src/server/lib/omp/config/commands.test.ts +167 -0
- package/src/server/lib/omp/config/commands.ts +185 -0
- package/src/server/lib/omp/config/config-cli.test.ts +153 -0
- package/src/server/lib/omp/config/config-cli.ts +154 -0
- package/src/server/lib/omp/config/definitions.test.ts +349 -0
- package/src/server/lib/omp/config/disabled-providers.ts +117 -0
- package/src/server/lib/omp/config/discovery-roots.test.ts +119 -0
- package/src/server/lib/omp/config/discovery-roots.ts +194 -0
- package/src/server/lib/omp/config/document.test.ts +349 -0
- package/src/server/lib/omp/config/document.ts +128 -0
- package/src/server/lib/omp/config/extensions.ts +91 -0
- package/src/server/lib/omp/config/instructions.ts +81 -0
- package/src/server/lib/omp/config/mcp-and-cli.test.ts +318 -0
- package/src/server/lib/omp/config/mcp-test.ts +346 -0
- package/src/server/lib/omp/config/mcp.ts +205 -0
- package/src/server/lib/omp/config/model-overrides.ts +123 -0
- package/src/server/lib/omp/config/models-config.ts +103 -0
- package/src/server/lib/omp/config/models-validation.test.ts +137 -0
- package/src/server/lib/omp/config/models-validation.ts +268 -0
- package/src/server/lib/omp/config/omp-config-files.test.ts +300 -0
- package/src/server/lib/omp/config/path-scoped.ts +74 -0
- package/src/server/lib/omp/config/plugin-actions.ts +87 -0
- package/src/server/lib/omp/config/plugin-cli.ts +69 -0
- package/src/server/lib/omp/config/plugin-registry.test.ts +286 -0
- package/src/server/lib/omp/config/plugin-registry.ts +250 -0
- package/src/server/lib/omp/config/plugins.test.ts +289 -0
- package/src/server/lib/omp/config/plugins.ts +249 -0
- package/src/server/lib/omp/config/provider-seeds.test.ts +167 -0
- package/src/server/lib/omp/config/provider-seeds.ts +220 -0
- package/src/server/lib/omp/config/providers-write.test.ts +340 -0
- package/src/server/lib/omp/config/providers.ts +343 -0
- package/src/server/lib/omp/config/roles.ts +38 -0
- package/src/server/lib/omp/config/roots-watch.server.test.ts +214 -0
- package/src/server/lib/omp/config/roots-watch.server.ts +334 -0
- package/src/server/lib/omp/config/scope.test.ts +53 -0
- package/src/server/lib/omp/config/scope.ts +65 -0
- package/src/server/lib/omp/config/skills-catalog.ts +127 -0
- package/src/server/lib/omp/config/skills.test.ts +108 -0
- package/src/server/lib/omp/config/skills.ts +333 -0
- package/src/server/lib/omp/config/yaml.ts +48 -0
- package/src/server/lib/omp/core/auth-credentials.ts +132 -0
- package/src/server/lib/omp/core/cli.ts +70 -0
- package/src/server/lib/omp/core/host-resolution.test.ts +348 -0
- package/src/server/lib/omp/core/paths.test.ts +229 -0
- package/src/server/lib/omp/core/paths.ts +214 -0
- package/src/server/lib/omp/core/registry.test.ts +234 -0
- package/src/server/lib/omp/core/registry.ts +140 -0
- package/src/server/lib/omp/core/startup.ts +64 -0
- package/src/server/lib/omp/core/worktree.ts +107 -0
- package/src/server/lib/omp/extensions/locator.test.ts +67 -0
- package/src/server/lib/omp/extensions/locator.ts +98 -0
- package/src/server/lib/omp/mode/command-type.test.ts +41 -0
- package/src/server/lib/omp/mode/live-selection.test.ts +133 -0
- package/src/server/lib/omp/mode/live-selection.ts +90 -0
- package/src/server/lib/omp/mode/request.test.ts +73 -0
- package/src/server/lib/omp/mode/request.ts +94 -0
- package/src/server/lib/omp/rpc/agent-start-watchdog.ts +88 -0
- package/src/server/lib/omp/rpc/child-config.ts +48 -0
- package/src/server/lib/omp/rpc/constants.test.ts +229 -0
- package/src/server/lib/omp/rpc/constants.ts +299 -0
- package/src/server/lib/omp/rpc/destroy-stream-row.test.ts +110 -0
- package/src/server/lib/omp/rpc/errors.ts +42 -0
- package/src/server/lib/omp/rpc/event-fanout.ts +43 -0
- package/src/server/lib/omp/rpc/forked-resume.test.ts +119 -0
- package/src/server/lib/omp/rpc/frame-fold.test.ts +300 -0
- package/src/server/lib/omp/rpc/frame-fold.ts +321 -0
- package/src/server/lib/omp/rpc/idle-reaper.ts +59 -0
- package/src/server/lib/omp/rpc/lifecycle.test.ts +293 -0
- package/src/server/lib/omp/rpc/lines.ts +48 -0
- package/src/server/lib/omp/rpc/manager.ts +345 -0
- package/src/server/lib/omp/rpc/mode-mirror.test.ts +156 -0
- package/src/server/lib/omp/rpc/mode-mirror.ts +109 -0
- package/src/server/lib/omp/rpc/peer-proxy.server.test.ts +107 -0
- package/src/server/lib/omp/rpc/peer-proxy.server.ts +150 -0
- package/src/server/lib/omp/rpc/pending-ui-dialogs.ts +59 -0
- package/src/server/lib/omp/rpc/process-helpers.ts +70 -0
- package/src/server/lib/omp/rpc/process.ts +328 -0
- package/src/server/lib/omp/rpc/reload-plugins.ts +43 -0
- package/src/server/lib/omp/rpc/rpc-primitives.test.ts +339 -0
- package/src/server/lib/omp/rpc/rpc-timers.test.ts +302 -0
- package/src/server/lib/omp/rpc/run-model.ts +59 -0
- package/src/server/lib/omp/rpc/run-settle.server.ts +296 -0
- package/src/server/lib/omp/rpc/run-settle.test.ts +288 -0
- package/src/server/lib/omp/rpc/session-command-guards.ts +125 -0
- package/src/server/lib/omp/rpc/session-commands-dialog.test.ts +139 -0
- package/src/server/lib/omp/rpc/session-commands-harness.ts +86 -0
- package/src/server/lib/omp/rpc/session-commands.test.ts +293 -0
- package/src/server/lib/omp/rpc/session-commands.ts +293 -0
- package/src/server/lib/omp/rpc/session-registration.ts +58 -0
- package/src/server/lib/omp/rpc/session-registry.test.ts +234 -0
- package/src/server/lib/omp/rpc/session-registry.ts +349 -0
- package/src/server/lib/omp/rpc/spawn-provenance.ts +82 -0
- package/src/server/lib/omp/rpc/stream-reader.test.ts +124 -0
- package/src/server/lib/omp/rpc/subagent-liveness.test.ts +62 -0
- package/src/server/lib/omp/rpc/subagent-liveness.ts +101 -0
- package/src/server/lib/omp/rpc/terminal-settle.ts +97 -0
- package/src/server/lib/omp/rpc/utility.test.ts +261 -0
- package/src/server/lib/omp/rpc/utility.ts +300 -0
- package/src/server/lib/omp/rpc/web-state.ts +88 -0
- package/src/server/lib/omp/session/artifacts.server.test.ts +117 -0
- package/src/server/lib/omp/session/artifacts.server.ts +106 -0
- package/src/server/lib/omp/session/auto-title.server.test.ts +270 -0
- package/src/server/lib/omp/session/auto-title.server.ts +250 -0
- package/src/server/lib/omp/session/blobs.server.test.ts +129 -0
- package/src/server/lib/omp/session/blobs.server.ts +108 -0
- package/src/server/lib/omp/session/data-mock.ts +88 -0
- package/src/server/lib/omp/session/delete.server.ts +139 -0
- package/src/server/lib/omp/session/file-scan.ts +180 -0
- package/src/server/lib/omp/session/files.test.ts +147 -0
- package/src/server/lib/omp/session/files.ts +298 -0
- package/src/server/lib/omp/session/goal-auditor.server.ts +187 -0
- package/src/server/lib/omp/session/goal-auditor.test.ts +76 -0
- package/src/server/lib/omp/session/goal-driver.server.ts +230 -0
- package/src/server/lib/omp/session/goal-driver.test.ts +220 -0
- package/src/server/lib/omp/session/goal-settings.server.ts +48 -0
- package/src/server/lib/omp/session/goal-settings.test.ts +45 -0
- package/src/server/lib/omp/session/lease-flock.server.ts +117 -0
- package/src/server/lib/omp/session/lease-holder.server.ts +156 -0
- package/src/server/lib/omp/session/local-runs.server.ts +38 -0
- package/src/server/lib/omp/session/locator.ts +70 -0
- package/src/server/lib/omp/session/merge-stored-anchor.test.ts +85 -0
- package/src/server/lib/omp/session/merge-stored-notices.test.ts +81 -0
- package/src/server/lib/omp/session/merge-stored-overlay-rows.test.ts +106 -0
- package/src/server/lib/omp/session/merge-stored.test.ts +118 -0
- package/src/server/lib/omp/session/merge-stored.ts +307 -0
- package/src/server/lib/omp/session/messages.test.ts +182 -0
- package/src/server/lib/omp/session/messages.ts +288 -0
- package/src/server/lib/omp/session/modes.test.ts +146 -0
- package/src/server/lib/omp/session/modes.ts +164 -0
- package/src/server/lib/omp/session/ownership.server.test.ts +271 -0
- package/src/server/lib/omp/session/ownership.server.ts +156 -0
- package/src/server/lib/omp/session/plan-mode-env.test.ts +65 -0
- package/src/server/lib/omp/session/plans.test.ts +64 -0
- package/src/server/lib/omp/session/plans.ts +192 -0
- package/src/server/lib/omp/session/reader.ts +162 -0
- package/src/server/lib/omp/session/reload.server.test.ts +111 -0
- package/src/server/lib/omp/session/reload.server.ts +114 -0
- package/src/server/lib/omp/session/rename-with-ai.server.test.ts +137 -0
- package/src/server/lib/omp/session/rename-with-ai.server.ts +197 -0
- package/src/server/lib/omp/session/rewind-file.test.ts +212 -0
- package/src/server/lib/omp/session/rewind-file.ts +248 -0
- package/src/server/lib/omp/session/scan.ts +119 -0
- package/src/server/lib/omp/session/session-discovery.test.ts +248 -0
- package/src/server/lib/omp/session/session-reads.test.ts +297 -0
- package/src/server/lib/omp/session/sessions-watch.server.ts +115 -0
- package/src/server/lib/omp/session/sidebar-data.server.ts +270 -0
- package/src/server/lib/omp/session/standby.server.test.ts +109 -0
- package/src/server/lib/omp/session/standby.server.ts +122 -0
- package/src/server/lib/omp/session/subagent-presence.ts +108 -0
- package/src/server/lib/omp/session/telemetry/compute.ts +206 -0
- package/src/server/lib/omp/session/telemetry/format.ts +110 -0
- package/src/server/lib/omp/session/telemetry/index.ts +4 -0
- package/src/server/lib/omp/session/telemetry/scan.ts +103 -0
- package/src/server/lib/omp/session/telemetry-raw.ts +112 -0
- package/src/server/lib/omp/session/telemetry.test.ts +154 -0
- package/src/server/lib/omp/session/title-model-overlay.server.test.ts +152 -0
- package/src/server/lib/omp/session/title-model-overlay.server.ts +161 -0
- package/src/server/lib/omp/session/title-slot.ts +203 -0
- package/src/server/lib/omp/session/todos.ts +100 -0
- package/src/server/lib/omp/session/usage/aggregate-shaping.test.ts +149 -0
- package/src/server/lib/omp/session/usage/aggregate.test.ts +243 -0
- package/src/server/lib/omp/session/usage/aggregate.ts +330 -0
- package/src/server/lib/omp/session/usage/shaping.ts +130 -0
- package/src/server/lib/omp/subagent/history/fold.ts +196 -0
- package/src/server/lib/omp/subagent/history/index.ts +110 -0
- package/src/server/lib/omp/subagent/history/paths.ts +29 -0
- package/src/server/lib/omp/subagent/history/transcript.test.ts +87 -0
- package/src/server/lib/omp/subagent/history/transcript.ts +122 -0
- package/src/server/lib/panels/assets.server.ts +70 -0
- package/src/server/lib/panels/auto-update.server.test.ts +138 -0
- package/src/server/lib/panels/auto-update.server.ts +148 -0
- package/src/server/lib/panels/baseline.server.test.ts +104 -0
- package/src/server/lib/panels/baseline.server.ts +122 -0
- package/src/server/lib/panels/build-targets.server.ts +107 -0
- package/src/server/lib/panels/build.server.test.ts +289 -0
- package/src/server/lib/panels/build.server.ts +297 -0
- package/src/server/lib/panels/bundled-catalog.server.ts +54 -0
- package/src/server/lib/panels/catalog.server.test.ts +149 -0
- package/src/server/lib/panels/catalog.server.ts +142 -0
- package/src/server/lib/panels/compat.server.test.ts +122 -0
- package/src/server/lib/panels/compat.server.ts +79 -0
- package/src/server/lib/panels/files.server.test.ts +133 -0
- package/src/server/lib/panels/files.server.ts +112 -0
- package/src/server/lib/panels/git-clone.server.ts +140 -0
- package/src/server/lib/panels/git-status.server.ts +46 -0
- package/src/server/lib/panels/git-update.server.test.ts +218 -0
- package/src/server/lib/panels/git-update.server.ts +187 -0
- package/src/server/lib/panels/install.server.test.ts +284 -0
- package/src/server/lib/panels/install.server.ts +240 -0
- package/src/server/lib/panels/link.server.ts +106 -0
- package/src/server/lib/panels/local-edits.server.test.ts +127 -0
- package/src/server/lib/panels/local-edits.server.ts +126 -0
- package/src/server/lib/panels/manifest.test.ts +199 -0
- package/src/server/lib/panels/manifest.ts +248 -0
- package/src/server/lib/panels/registry-bundled.server.test.ts +99 -0
- package/src/server/lib/panels/registry.server.test.ts +315 -0
- package/src/server/lib/panels/registry.server.ts +331 -0
- package/src/server/lib/panels/remove.server.test.ts +112 -0
- package/src/server/lib/panels/seed.server.ts +71 -0
- package/src/server/lib/panels/shim.test.ts +160 -0
- package/src/server/lib/panels/shim.ts +139 -0
- package/src/server/lib/panels/state.server.test.ts +131 -0
- package/src/server/lib/panels/state.server.ts +172 -0
- package/src/server/lib/panels/sync.server.test.ts +308 -0
- package/src/server/lib/panels/sync.server.ts +212 -0
- package/src/server/lib/plugins/background.server.ts +99 -0
- package/src/server/lib/plugins/background.test.ts +89 -0
- package/src/server/lib/plugins/build-server.test.ts +85 -0
- package/src/server/lib/plugins/e2e.test.ts +134 -0
- package/src/server/lib/plugins/events.server.ts +88 -0
- package/src/server/lib/plugins/http.server.ts +112 -0
- package/src/server/lib/plugins/loader.server.ts +306 -0
- package/src/server/lib/plugins/log.server.ts +40 -0
- package/src/server/lib/plugins/platform.test.ts +293 -0
- package/src/server/lib/plugins/realtime.server.ts +66 -0
- package/src/server/lib/plugins/rpc.server.ts +180 -0
- package/src/server/lib/plugins/schema.server.ts +75 -0
- package/src/server/lib/plugins/settings.server.ts +172 -0
- package/src/server/lib/plugins/shutdown.test.ts +105 -0
- package/src/server/lib/plugins/storage.server.ts +118 -0
- package/src/server/lib/queue/delivery-dispatch.server.test.ts +180 -0
- package/src/server/lib/queue/delivery-harness.ts +115 -0
- package/src/server/lib/queue/delivery.server.test.ts +206 -0
- package/src/server/lib/queue/delivery.server.ts +258 -0
- package/src/server/lib/queue/schema-migration.server.ts +50 -0
- package/src/server/lib/queue/store.server.test.ts +272 -0
- package/src/server/lib/queue/store.server.ts +219 -0
- package/src/server/lib/realtime/hub.server.test.ts +285 -0
- package/src/server/lib/realtime/hub.server.ts +318 -0
- package/src/server/lib/realtime/hub.types.ts +122 -0
- package/src/server/lib/realtime/signals.server.ts +101 -0
- package/src/server/lib/realtime/topics/btw.server.ts +25 -0
- package/src/server/lib/realtime/topics/catalog.server.ts +126 -0
- package/src/server/lib/realtime/topics/global.server.test.ts +50 -0
- package/src/server/lib/realtime/topics/global.server.ts +52 -0
- package/src/server/lib/realtime/topics/peer-relay.server.test.ts +246 -0
- package/src/server/lib/realtime/topics/peer-relay.server.ts +84 -0
- package/src/server/lib/realtime/topics/plugin.server.ts +30 -0
- package/src/server/lib/realtime/topics/session-data.server.ts +98 -0
- package/src/server/lib/realtime/topics/session.server.ts +123 -0
- package/src/server/lib/realtime/topics/workspace.server.ts +106 -0
- package/src/server/lib/realtime/topics.server.test.ts +255 -0
- package/src/server/lib/realtime/topics.server.ts +261 -0
- package/src/server/lib/remix-compat.ts +29 -0
- package/src/server/lib/route-adapter.test.ts +322 -0
- package/src/server/lib/route-adapter.ts +144 -0
- package/src/server/lib/schedule/rows.server.ts +111 -0
- package/src/server/lib/schedule/runtime.server.test.ts +191 -0
- package/src/server/lib/schedule/runtime.server.ts +252 -0
- package/src/server/lib/schedule/schema.server.ts +60 -0
- package/src/server/lib/schedule/store.server.test.ts +231 -0
- package/src/server/lib/schedule/store.server.ts +254 -0
- package/src/server/lib/sse.ts +248 -0
- package/src/server/lib/terminal/foreground.test.ts +163 -0
- package/src/server/lib/terminal/foreground.ts +122 -0
- package/src/server/lib/terminal/history.test.ts +118 -0
- package/src/server/lib/terminal/history.ts +206 -0
- package/src/server/lib/terminal/liveness.server.ts +99 -0
- package/src/server/lib/terminal/runtime.server.ts +294 -0
- package/src/server/lib/terminal/session.server.ts +256 -0
- package/src/server/lib/terminal/shell.test.ts +129 -0
- package/src/server/lib/terminal/shell.ts +146 -0
- package/src/server/lib/terminal/spawn.test.ts +50 -0
- package/src/server/lib/terminal/spawn.ts +51 -0
- package/src/server/lib/terminal/store-liveness.test.ts +324 -0
- package/src/server/lib/terminal/store.ts +72 -0
- package/src/server/lib/tray/autostart.ts +238 -0
- package/src/server/lib/tray/config.ts +141 -0
- package/src/server/lib/tray/credential.test.ts +74 -0
- package/src/server/lib/tray/credential.ts +81 -0
- package/src/server/lib/tray/entry.ts +89 -0
- package/src/server/lib/tray/host/darwin.js +180 -0
- package/src/server/lib/tray/host/linux.js +187 -0
- package/src/server/lib/tray/host/win32.ps1 +109 -0
- package/src/server/lib/tray/hosts.ts +115 -0
- package/src/server/lib/tray/runtime.server.ts +132 -0
- package/src/server/lib/tray/tray.test.ts +225 -0
- package/src/server/lib/updates/apply.ts +85 -0
- package/src/server/lib/updates/changelog-file.ts +122 -0
- package/src/server/lib/updates/changelog.test.ts +213 -0
- package/src/server/lib/updates/changelog.ts +163 -0
- package/src/server/lib/updates/check.ts +71 -0
- package/src/server/lib/updates/install-method.ts +86 -0
- package/src/server/lib/updates/install.test.ts +135 -0
- package/src/server/lib/updates/install.ts +350 -0
- package/src/server/lib/updates/npm.test.ts +137 -0
- package/src/server/lib/updates/npm.ts +113 -0
- package/src/server/lib/updates/omp.test.ts +116 -0
- package/src/server/lib/updates/omp.ts +139 -0
- package/src/server/lib/updates/release-url.ts +25 -0
- package/src/server/lib/updates/single-flight.test.ts +61 -0
- package/src/server/lib/updates/single-flight.ts +68 -0
- package/src/server/lib/usage/deepseek.ts +58 -0
- package/src/server/lib/usage/kenari-accounts.test.ts +162 -0
- package/src/server/lib/usage/kenari.test.ts +258 -0
- package/src/server/lib/usage/kenari.ts +255 -0
- package/src/server/lib/usage/omp-usage.server.test.ts +126 -0
- package/src/server/lib/usage/omp-usage.server.ts +203 -0
- package/src/server/lib/usage/provider-key.test.ts +325 -0
- package/src/server/lib/usage/provider-key.ts +194 -0
- package/src/server/lib/usage/providers.server.test.ts +47 -0
- package/src/server/lib/usage/providers.server.ts +214 -0
- package/src/server/lib/usage/report.server.ts +156 -0
- package/src/server/lib/usage/reset.server.test.ts +175 -0
- package/src/server/lib/usage/reset.server.ts +206 -0
- package/src/server/lib/usage/vendor-balance.server.test.ts +104 -0
- package/src/server/lib/usage/vendor-balance.server.ts +284 -0
- package/src/server/lib/wiki/git.test.ts +240 -0
- package/src/server/lib/wiki/git.ts +79 -0
- package/src/server/lib/wiki/mirror-reads.test.ts +78 -0
- package/src/server/lib/wiki/mirror.server.ts +251 -0
- package/src/server/lib/wiki/payload.server.ts +141 -0
- package/src/server/lib/wiki/provider.server.ts +84 -0
- package/src/server/lib/wiki/remote.test.ts +84 -0
- package/src/server/lib/wiki/remote.ts +104 -0
- package/src/server/lib/workspace/register-folder.server.ts +78 -0
- package/src/server/mock.server.ts +27 -0
- package/src/server/plugins/compress.ts +79 -0
- package/src/server/plugins/shell.server.test.ts +98 -0
- package/src/server/plugins/shell.server.ts +168 -0
- package/src/server/plugins/ssr.ts +199 -0
- package/src/server/plugins/static.test.ts +60 -0
- package/src/server/plugins/static.ts +164 -0
- package/src/server/routes/agent/command.test.ts +87 -0
- package/src/server/routes/agent/command.ts +247 -0
- package/src/server/routes/agent/index.ts +10 -0
- package/src/server/routes/agent/new.ts +114 -0
- package/src/server/routes/agent/prewarm.ts +27 -0
- package/src/server/routes/auth/index.ts +14 -0
- package/src/server/routes/auth/login.ts +94 -0
- package/src/server/routes/auth/logout.ts +36 -0
- package/src/server/routes/auth/password.ts +102 -0
- package/src/server/routes/auth/revoke.test.ts +115 -0
- package/src/server/routes/auth/revoke.ts +73 -0
- package/src/server/routes/auth/routes.test.ts +322 -0
- package/src/server/routes/auth/state.ts +34 -0
- package/src/server/routes/browser/index.ts +6 -0
- package/src/server/routes/browser/stream.test.ts +107 -0
- package/src/server/routes/browser/stream.ts +217 -0
- package/src/server/routes/btw/index.ts +6 -0
- package/src/server/routes/btw/topics.ts +117 -0
- package/src/server/routes/chamber/index.ts +15 -0
- package/src/server/routes/chat/index.ts +14 -0
- package/src/server/routes/chat/rewind.ts +116 -0
- package/src/server/routes/chat/root.ts +78 -0
- package/src/server/routes/chat/session.ts +235 -0
- package/src/server/routes/chat/stream.test.ts +102 -0
- package/src/server/routes/chat/stream.ts +111 -0
- package/src/server/routes/chat/turns.ts +87 -0
- package/src/server/routes/console/index.ts +18 -0
- package/src/server/routes/console/restart.test.ts +98 -0
- package/src/server/routes/console/restart.ts +44 -0
- package/src/server/routes/dictation/ws.ts +116 -0
- package/src/server/routes/files/index.ts +10 -0
- package/src/server/routes/files/root.ts +29 -0
- package/src/server/routes/files/toggle.ts +20 -0
- package/src/server/routes/folders/clone.test.ts +167 -0
- package/src/server/routes/folders/clone.ts +132 -0
- package/src/server/routes/folders/create.ts +84 -0
- package/src/server/routes/folders/folder.ts +124 -0
- package/src/server/routes/folders/index.ts +22 -0
- package/src/server/routes/folders/mkdir.ts +97 -0
- package/src/server/routes/folders/routes.test.ts +185 -0
- package/src/server/routes/fs/action-create.test.ts +90 -0
- package/src/server/routes/fs/action-transfer.test.ts +159 -0
- package/src/server/routes/fs/action.test.ts +64 -0
- package/src/server/routes/fs/action.ts +175 -0
- package/src/server/routes/fs/exists.test.ts +76 -0
- package/src/server/routes/fs/exists.ts +53 -0
- package/src/server/routes/fs/git-action.test.ts +334 -0
- package/src/server/routes/fs/git-branch.test.ts +287 -0
- package/src/server/routes/fs/git-loader.test.ts +105 -0
- package/src/server/routes/fs/git-merge.test.ts +325 -0
- package/src/server/routes/fs/git-repo-details.test.ts +152 -0
- package/src/server/routes/fs/git-stash.test.ts +202 -0
- package/src/server/routes/fs/git.ts +188 -0
- package/src/server/routes/fs/index.ts +26 -0
- package/src/server/routes/fs/raw.test.ts +124 -0
- package/src/server/routes/fs/raw.ts +115 -0
- package/src/server/routes/fs/read.test.ts +146 -0
- package/src/server/routes/fs/read.ts +324 -0
- package/src/server/routes/fs/replace.ts +69 -0
- package/src/server/routes/fs/scope.test.ts +171 -0
- package/src/server/routes/fs/scope.ts +106 -0
- package/src/server/routes/fs/search.test.ts +210 -0
- package/src/server/routes/fs/search.ts +205 -0
- package/src/server/routes/fs/validate.ts +62 -0
- package/src/server/routes/health/index.ts +6 -0
- package/src/server/routes/health/probe.ts +59 -0
- package/src/server/routes/index.ts +60 -0
- package/src/server/routes/models/index.ts +8 -0
- package/src/server/routes/models/roles.ts +31 -0
- package/src/server/routes/models/root.ts +205 -0
- package/src/server/routes/omp/artifact.ts +42 -0
- package/src/server/routes/omp/blob.ts +54 -0
- package/src/server/routes/omp/extensions.ts +34 -0
- package/src/server/routes/omp/index.ts +27 -0
- package/src/server/routes/omp/login.ts +112 -0
- package/src/server/routes/omp/reload-engine.ts +39 -0
- package/src/server/routes/omp/routes.test.ts +133 -0
- package/src/server/routes/omp/state.ts +22 -0
- package/src/server/routes/panels/bindings.ts +23 -0
- package/src/server/routes/panels/build.ts +72 -0
- package/src/server/routes/panels/bundle.ts +71 -0
- package/src/server/routes/panels/css.test.ts +141 -0
- package/src/server/routes/panels/css.ts +89 -0
- package/src/server/routes/panels/icon.ts +64 -0
- package/src/server/routes/panels/install.ts +240 -0
- package/src/server/routes/panels/panel-routes.test-util.ts +126 -0
- package/src/server/routes/panels/readme.ts +69 -0
- package/src/server/routes/panels/registry.ts +27 -0
- package/src/server/routes/panels/routes.test.ts +290 -0
- package/src/server/routes/panels/server-half.test.ts +95 -0
- package/src/server/routes/plugins/bindings.ts +16 -0
- package/src/server/routes/plugins/http.ts +56 -0
- package/src/server/routes/plugins/routes.test.ts +254 -0
- package/src/server/routes/plugins/rpc.ts +65 -0
- package/src/server/routes/plugins/state.ts +36 -0
- package/src/server/routes/realtime/ws.ts +114 -0
- package/src/server/routes/schedule/bindings.ts +8 -0
- package/src/server/routes/schedule/body.ts +110 -0
- package/src/server/routes/schedule/index.ts +155 -0
- package/src/server/routes/schedule/runs.ts +23 -0
- package/src/server/routes/sessions/delete.test.ts +84 -0
- package/src/server/routes/sessions/delete.ts +83 -0
- package/src/server/routes/sessions/folder.ts +16 -0
- package/src/server/routes/sessions/index.ts +47 -0
- package/src/server/routes/sessions/list.ts +23 -0
- package/src/server/routes/sessions/queue.ts +134 -0
- package/src/server/routes/sessions/routes-queue.test.ts +237 -0
- package/src/server/routes/sessions/routes-read.test.ts +165 -0
- package/src/server/routes/sessions/routes.test.ts +316 -0
- package/src/server/routes/sessions/session.ts +291 -0
- package/src/server/routes/sessions/subagent-control.ts +75 -0
- package/src/server/routes/sessions/subagents.ts +82 -0
- package/src/server/routes/settings/agents.ts +128 -0
- package/src/server/routes/settings/behavior.ts +125 -0
- package/src/server/routes/settings/commands.ts +217 -0
- package/src/server/routes/settings/index.ts +39 -0
- package/src/server/routes/settings/mcp-test.ts +71 -0
- package/src/server/routes/settings/mcp.ts +261 -0
- package/src/server/routes/settings/model-override.ts +69 -0
- package/src/server/routes/settings/omp-config.ts +50 -0
- package/src/server/routes/settings/plugins.ts +218 -0
- package/src/server/routes/settings/projects.ts +89 -0
- package/src/server/routes/settings/provider-logout.test.ts +38 -0
- package/src/server/routes/settings/provider-logout.ts +104 -0
- package/src/server/routes/settings/provider-model.ts +107 -0
- package/src/server/routes/settings/provider-models.ts +190 -0
- package/src/server/routes/settings/providers.ts +182 -0
- package/src/server/routes/settings/root.ts +45 -0
- package/src/server/routes/settings/settings-config-routes.test.ts +271 -0
- package/src/server/routes/settings/settings-store-routes.test.ts +334 -0
- package/src/server/routes/settings/skills.ts +227 -0
- package/src/server/routes/settings/usage-reset.ts +60 -0
- package/src/server/routes/settings/usage.ts +36 -0
- package/src/server/routes/telemetry/context.ts +59 -0
- package/src/server/routes/telemetry/index.ts +10 -0
- package/src/server/routes/telemetry/raw-messages.ts +80 -0
- package/src/server/routes/telemetry/tokens.ts +166 -0
- package/src/server/routes/terminal/index.ts +6 -0
- package/src/server/routes/terminal/sessions.ts +24 -0
- package/src/server/routes/terminal/ws.ts +155 -0
- package/src/server/routes/updates/apply.ts +140 -0
- package/src/server/routes/updates/changelog.ts +32 -0
- package/src/server/routes/updates/check.ts +27 -0
- package/src/server/routes/updates/index.ts +10 -0
- package/src/server/routes/updates/routes.test.ts +269 -0
- package/src/server/routes/well-known/devtools.ts +9 -0
- package/src/server/routes/well-known/index.ts +6 -0
- package/src/server/routes/wiki/asset.ts +69 -0
- package/src/server/routes/wiki/index.ts +15 -0
- package/src/server/routes/wiki/page.ts +88 -0
- package/src/server/routes/wiki/repo.ts +30 -0
- package/src/shared/lib/auth/handover.test.ts +153 -0
- package/src/shared/lib/auth/handover.ts +102 -0
- package/src/shared/lib/auth/password.ts +72 -0
- package/src/shared/lib/browser/activity.ts +115 -0
- package/src/shared/lib/browser/browser-cdp.test.ts +350 -0
- package/src/shared/lib/browser/browser-helpers.test.ts +218 -0
- package/src/shared/lib/browser/browser-viewer.test.ts +312 -0
- package/src/shared/lib/browser/browser-watcher.test.ts +202 -0
- package/src/shared/lib/browser/cdp.ts +201 -0
- package/src/shared/lib/browser/connection.ts +81 -0
- package/src/shared/lib/browser/observer.ts +129 -0
- package/src/shared/lib/browser/page-context.ts +20 -0
- package/src/shared/lib/browser/targets.test.ts +45 -0
- package/src/shared/lib/browser/targets.ts +74 -0
- package/src/shared/lib/browser/url.ts +21 -0
- package/src/shared/lib/browser/util.ts +20 -0
- package/src/shared/lib/browser/viewer.ts +303 -0
- package/src/shared/lib/browser/watcher.ts +75 -0
- package/src/shared/lib/chat/ask-questions.test.ts +169 -0
- package/src/shared/lib/chat/ask-questions.ts +284 -0
- package/src/shared/lib/chat/attachments.test.ts +240 -0
- package/src/shared/lib/chat/attachments.ts +299 -0
- package/src/shared/lib/chat/btw/client.ts +83 -0
- package/src/shared/lib/chat/capitalize.ts +9 -0
- package/src/shared/lib/chat/chat-display.test.ts +284 -0
- package/src/shared/lib/chat/composer/client.test.ts +48 -0
- package/src/shared/lib/chat/composer/client.ts +233 -0
- package/src/shared/lib/chat/composer/commands.test.ts +307 -0
- package/src/shared/lib/chat/composer/commands.ts +290 -0
- package/src/shared/lib/chat/composer/composer.test.ts +195 -0
- package/src/shared/lib/chat/composer/draft.ts +39 -0
- package/src/shared/lib/chat/composer/filter.test.ts +178 -0
- package/src/shared/lib/chat/composer/filter.ts +76 -0
- package/src/shared/lib/chat/composer/keybindings.test.ts +74 -0
- package/src/shared/lib/chat/composer/keybindings.ts +55 -0
- package/src/shared/lib/chat/composer/owned-commands.test.ts +53 -0
- package/src/shared/lib/chat/composer/scope.test.ts +93 -0
- package/src/shared/lib/chat/composer/translate.test.ts +199 -0
- package/src/shared/lib/chat/composer/translate.ts +149 -0
- package/src/shared/lib/chat/composer/trigger.test.ts +276 -0
- package/src/shared/lib/chat/composer/trigger.ts +207 -0
- package/src/shared/lib/chat/composer/tui-only.test.ts +104 -0
- package/src/shared/lib/chat/composer/tui-only.ts +144 -0
- package/src/shared/lib/chat/context/usage.test.ts +73 -0
- package/src/shared/lib/chat/context/usage.ts +77 -0
- package/src/shared/lib/chat/detect-format.ts +38 -0
- package/src/shared/lib/chat/duration.ts +82 -0
- package/src/shared/lib/chat/excerpt.ts +115 -0
- package/src/shared/lib/chat/new-chat-seed.test.ts +51 -0
- package/src/shared/lib/chat/new-chat-seed.ts +36 -0
- package/src/shared/lib/chat/notice-row.test.ts +116 -0
- package/src/shared/lib/chat/notice-row.ts +79 -0
- package/src/shared/lib/chat/notice-text.ts +35 -0
- package/src/shared/lib/chat/omp/abort.ts +41 -0
- package/src/shared/lib/chat/omp/agent-events.test.ts +307 -0
- package/src/shared/lib/chat/omp/agent-events.ts +302 -0
- package/src/shared/lib/chat/omp/available-commands-cache.test.ts +67 -0
- package/src/shared/lib/chat/omp/command-output-ansi.test.ts +84 -0
- package/src/shared/lib/chat/omp/fold-deps.ts +70 -0
- package/src/shared/lib/chat/omp/fold.test.ts +245 -0
- package/src/shared/lib/chat/omp/mode-marker.test.ts +116 -0
- package/src/shared/lib/chat/omp/status.ts +42 -0
- package/src/shared/lib/chat/omp/subagent-frames.ts +51 -0
- package/src/shared/lib/chat/omp/terminal-messages.ts +47 -0
- package/src/shared/lib/chat/omp/tool-details.test.ts +134 -0
- package/src/shared/lib/chat/omp/tool-frames.test.ts +140 -0
- package/src/shared/lib/chat/omp/tool-frames.ts +107 -0
- package/src/shared/lib/chat/omp/tool-results.ts +180 -0
- package/src/shared/lib/chat/omp/transport-frames.test.ts +70 -0
- package/src/shared/lib/chat/omp/transport-frames.ts +95 -0
- package/src/shared/lib/chat/read-sse.ts +99 -0
- package/src/shared/lib/chat/stream-service.ts +197 -0
- package/src/shared/lib/chat/task-result-parser.ts +166 -0
- package/src/shared/lib/chat/text-file.ts +148 -0
- package/src/shared/lib/chat/timeline/command-output.ts +78 -0
- package/src/shared/lib/chat/timeline/omp-callbacks.test.ts +314 -0
- package/src/shared/lib/chat/timeline/omp-callbacks.ts +314 -0
- package/src/shared/lib/chat/timeline/provider-retry.test.ts +120 -0
- package/src/shared/lib/chat/timeline/provider-retry.ts +103 -0
- package/src/shared/lib/chat/timeline/run-footer.test.ts +158 -0
- package/src/shared/lib/chat/timeline/run-footer.ts +146 -0
- package/src/shared/lib/chat/timeline/run-signals.test.ts +87 -0
- package/src/shared/lib/chat/timeline/run-signals.ts +73 -0
- package/src/shared/lib/chat/timeline/steer-report.ts +35 -0
- package/src/shared/lib/chat/timeline/stream-callbacks.ts +202 -0
- package/src/shared/lib/chat/timeline/stream-coalescer.ts +66 -0
- package/src/shared/lib/chat/timeline/stream-raf.test.ts +104 -0
- package/src/shared/lib/chat/timeline/stream-raf.ts +59 -0
- package/src/shared/lib/chat/timeline/stream.test.ts +282 -0
- package/src/shared/lib/chat/timeline/tool-phrases.test.ts +185 -0
- package/src/shared/lib/chat/timeline/tool-phrases.ts +235 -0
- package/src/shared/lib/chat/timeline/tool-verbs.test.ts +229 -0
- package/src/shared/lib/chat/timeline/tool-verbs.ts +180 -0
- package/src/shared/lib/chat/timeline/turns.ts +37 -0
- package/src/shared/lib/chat/title-case.ts +293 -0
- package/src/shared/lib/chat/todo/nested-phase.ts +64 -0
- package/src/shared/lib/chat/todo/parser.test.ts +165 -0
- package/src/shared/lib/chat/todo/parser.ts +262 -0
- package/src/shared/lib/chat/todo/progress.test.ts +265 -0
- package/src/shared/lib/chat/todo/progress.ts +97 -0
- package/src/shared/lib/chat/todo/snapshot.test.ts +156 -0
- package/src/shared/lib/chat/todo/snapshot.ts +215 -0
- package/src/shared/lib/chat/tool/artifact-view.test.ts +66 -0
- package/src/shared/lib/chat/tool/artifact-view.ts +80 -0
- package/src/shared/lib/chat/tool/artifact.test.ts +74 -0
- package/src/shared/lib/chat/tool/artifact.ts +66 -0
- package/src/shared/lib/chat/tool/labels.ts +55 -0
- package/src/shared/lib/chat/tool/output-window.test.ts +69 -0
- package/src/shared/lib/chat/tool/output-window.ts +73 -0
- package/src/shared/lib/chat/tool/proc-facts.ts +93 -0
- package/src/shared/lib/chat/tool/summary-proc.test.ts +118 -0
- package/src/shared/lib/chat/tool/summary-wait.test.ts +92 -0
- package/src/shared/lib/chat/tool/summary.test.ts +329 -0
- package/src/shared/lib/chat/tool/summary.ts +349 -0
- package/src/shared/lib/chat/tool/wait-facts.ts +50 -0
- package/src/shared/lib/chat/tool-output.test.ts +206 -0
- package/src/shared/lib/chat/tool-output.ts +68 -0
- package/src/shared/lib/chat/tool-status.ts +20 -0
- package/src/shared/lib/chat/xml-envelope.test.ts +208 -0
- package/src/shared/lib/chat/xml-envelope.ts +151 -0
- package/src/shared/lib/chat/xml-tag.test.ts +257 -0
- package/src/shared/lib/chat/xml-tag.ts +221 -0
- package/src/shared/lib/code/ansi.ts +24 -0
- package/src/shared/lib/code/editor/commands.test.ts +155 -0
- package/src/shared/lib/code/editor/commands.ts +260 -0
- package/src/shared/lib/code/editor/edits.test.ts +100 -0
- package/src/shared/lib/code/editor/edits.ts +122 -0
- package/src/shared/lib/code/editor/find-status.test.ts +50 -0
- package/src/shared/lib/code/editor/find-status.ts +36 -0
- package/src/shared/lib/code/editor/find.test.ts +203 -0
- package/src/shared/lib/code/editor/find.ts +236 -0
- package/src/shared/lib/code/editor/history.test.ts +118 -0
- package/src/shared/lib/code/editor/history.ts +101 -0
- package/src/shared/lib/code/editor/keymap.test.ts +109 -0
- package/src/shared/lib/code/editor/keymap.ts +151 -0
- package/src/shared/lib/code/editor/layers.test.ts +77 -0
- package/src/shared/lib/code/editor/layers.ts +67 -0
- package/src/shared/lib/code/editor/line-edits.test.ts +131 -0
- package/src/shared/lib/code/editor/line-edits.ts +159 -0
- package/src/shared/lib/code/editor/lines.test.ts +81 -0
- package/src/shared/lib/code/editor/lines.ts +83 -0
- package/src/shared/lib/code/editor/marks.test.ts +86 -0
- package/src/shared/lib/code/editor/marks.ts +106 -0
- package/src/shared/lib/code/editor/occurrences.test.ts +117 -0
- package/src/shared/lib/code/editor/occurrences.ts +111 -0
- package/src/shared/lib/code/editor/palette.test.ts +91 -0
- package/src/shared/lib/code/editor/palette.ts +92 -0
- package/src/shared/lib/code/editor/reset-css.test.ts +35 -0
- package/src/shared/lib/code/editor/reset-css.ts +32 -0
- package/src/shared/lib/code/editor/text-commands.test.ts +178 -0
- package/src/shared/lib/code/editor/text-commands.ts +154 -0
- package/src/shared/lib/code/editor/typography.test.ts +93 -0
- package/src/shared/lib/code/editor/typography.ts +86 -0
- package/src/shared/lib/code/format.ts +17 -0
- package/src/shared/lib/code/highlight-cache.test.ts +121 -0
- package/src/shared/lib/code/highlight-cache.ts +99 -0
- package/src/shared/lib/code/highlighter-lazy.ts +106 -0
- package/src/shared/lib/code/highlighter.ts +132 -0
- package/src/shared/lib/code/language.ts +165 -0
- package/src/shared/lib/code/lazy-window.test.ts +161 -0
- package/src/shared/lib/code/lazy-window.ts +156 -0
- package/src/shared/lib/code/line-endings.test.ts +38 -0
- package/src/shared/lib/code/line-endings.ts +56 -0
- package/src/shared/lib/code/outline/document.ts +56 -0
- package/src/shared/lib/code/outline/extract.test.ts +246 -0
- package/src/shared/lib/code/outline/extract.ts +57 -0
- package/src/shared/lib/code/outline/languages.test.ts +246 -0
- package/src/shared/lib/code/outline/languages.ts +266 -0
- package/src/shared/lib/code/outline/rules.ts +285 -0
- package/src/shared/lib/code/outline/scan.ts +184 -0
- package/src/shared/lib/code/outline/spec.ts +24 -0
- package/src/shared/lib/code/outline/types.ts +87 -0
- package/src/shared/lib/code/outline/walk.ts +231 -0
- package/src/shared/lib/code/parser.ts +237 -0
- package/src/shared/lib/code/shiki-langs.ts +93 -0
- package/src/shared/lib/code/shiki-themes.ts +18 -0
- package/src/shared/lib/code/syntax-highlight.test.ts +340 -0
- package/src/shared/lib/code/syntax-highlight.ts +207 -0
- package/src/shared/lib/code/windowed-highlight.ts +114 -0
- package/src/shared/lib/db/transaction.server.ts +20 -0
- package/src/shared/lib/dictation/audio.ts +75 -0
- package/src/shared/lib/dictation/models.test.ts +95 -0
- package/src/shared/lib/dictation/models.ts +139 -0
- package/src/shared/lib/dictation/protocol.ts +110 -0
- package/src/shared/lib/fonts/NOTICE.md +44 -0
- package/src/shared/lib/fonts/nerd-symbols.css +55 -0
- package/src/shared/lib/fonts/nerd-symbols.test.ts +176 -0
- package/src/shared/lib/fonts/symbols-nerd-font-mono.woff2 +0 -0
- package/src/shared/lib/format/number.test.ts +127 -0
- package/src/shared/lib/format/number.ts +69 -0
- package/src/shared/lib/format/time.test.ts +113 -0
- package/src/shared/lib/format/time.ts +58 -0
- package/src/shared/lib/fs/browse.ts +45 -0
- package/src/shared/lib/fs/clipboard.test.ts +182 -0
- package/src/shared/lib/fs/clipboard.ts +182 -0
- package/src/shared/lib/fs/commit-count.test.ts +50 -0
- package/src/shared/lib/fs/commit-count.ts +34 -0
- package/src/shared/lib/fs/commit-page.ts +10 -0
- package/src/shared/lib/fs/commit-row.ts +65 -0
- package/src/shared/lib/fs/csv.ts +159 -0
- package/src/shared/lib/fs/diff-parser.test.ts +116 -0
- package/src/shared/lib/fs/diff-parser.ts +213 -0
- package/src/shared/lib/fs/document-kind.test.ts +189 -0
- package/src/shared/lib/fs/document-kind.ts +136 -0
- package/src/shared/lib/fs/excerpt-diff.test.ts +130 -0
- package/src/shared/lib/fs/excerpt-diff.ts +127 -0
- package/src/shared/lib/fs/file-kind-classify.test.ts +143 -0
- package/src/shared/lib/fs/file-kind.test.ts +256 -0
- package/src/shared/lib/fs/file-kind.ts +283 -0
- package/src/shared/lib/fs/file-tree.ts +31 -0
- package/src/shared/lib/fs/fs-helpers.test.ts +318 -0
- package/src/shared/lib/fs/git-graph.test.ts +211 -0
- package/src/shared/lib/fs/git-graph.ts +184 -0
- package/src/shared/lib/fs/git-status.test.ts +245 -0
- package/src/shared/lib/fs/git-status.ts +196 -0
- package/src/shared/lib/fs/git-unmerged.test.ts +123 -0
- package/src/shared/lib/fs/git-unmerged.ts +100 -0
- package/src/shared/lib/fs/paths.test.ts +90 -0
- package/src/shared/lib/fs/paths.ts +109 -0
- package/src/shared/lib/fs/repo-groups.ts +85 -0
- package/src/shared/lib/fs/repo-label.test.ts +118 -0
- package/src/shared/lib/fs/repo-label.ts +55 -0
- package/src/shared/lib/fs/search-list.test.ts +139 -0
- package/src/shared/lib/fs/search-list.ts +187 -0
- package/src/shared/lib/fs/search-row.test.ts +66 -0
- package/src/shared/lib/fs/search-row.ts +55 -0
- package/src/shared/lib/git/url.test.ts +69 -0
- package/src/shared/lib/git/url.ts +76 -0
- package/src/shared/lib/markdown/autolink.test.ts +32 -0
- package/src/shared/lib/markdown/autolink.ts +50 -0
- package/src/shared/lib/markdown/directives.ts +96 -0
- package/src/shared/lib/markdown/document-urls.test.ts +68 -0
- package/src/shared/lib/markdown/document-urls.ts +118 -0
- package/src/shared/lib/markdown/fira-code-fonts.css +51 -0
- package/src/shared/lib/markdown/katex-fonts.css +20 -0
- package/src/shared/lib/markdown/katex.ts +111 -0
- package/src/shared/lib/markdown/marked.ts +336 -0
- package/src/shared/lib/markdown/math.test.ts +178 -0
- package/src/shared/lib/markdown/mermaid.ts +169 -0
- package/src/shared/lib/markdown/sanitize.ts +191 -0
- package/src/shared/lib/markdown/table.test.ts +136 -0
- package/src/shared/lib/models/catalog.ts +255 -0
- package/src/shared/lib/models/client.ts +62 -0
- package/src/shared/lib/models/identity.ts +21 -0
- package/src/shared/lib/models/models-shared.test.ts +338 -0
- package/src/shared/lib/models/preferences.test.ts +131 -0
- package/src/shared/lib/models/preferences.ts +88 -0
- package/src/shared/lib/models/provider/cleanup.ts +20 -0
- package/src/shared/lib/models/provider/connection.ts +78 -0
- package/src/shared/lib/models/provider/dialect.test.ts +258 -0
- package/src/shared/lib/models/provider/dialect.ts +208 -0
- package/src/shared/lib/models/provider/glyph.test.ts +116 -0
- package/src/shared/lib/models/provider/glyph.ts +213 -0
- package/src/shared/lib/models/provider/label.ts +40 -0
- package/src/shared/lib/models/provider/models.test.ts +306 -0
- package/src/shared/lib/models/provider/models.ts +227 -0
- package/src/shared/lib/models/provider/presets.test.ts +198 -0
- package/src/shared/lib/models/provider/presets.ts +83 -0
- package/src/shared/lib/models/provider/provider-ui.test.ts +316 -0
- package/src/shared/lib/models/remote-list.ts +125 -0
- package/src/shared/lib/models/server-cache.ts +37 -0
- package/src/shared/lib/models/thinking-levels.test.ts +102 -0
- package/src/shared/lib/models/thinking-levels.ts +68 -0
- package/src/shared/lib/omp/config/access-mode.server.ts +27 -0
- package/src/shared/lib/omp/config/access-mode.ts +31 -0
- package/src/shared/lib/omp/config/schema-extras.ts +252 -0
- package/src/shared/lib/omp/config/schema-types.ts +49 -0
- package/src/shared/lib/omp/config/schema.test.ts +214 -0
- package/src/shared/lib/omp/config/schema.ts +81 -0
- package/src/shared/lib/omp/dialog-methods.ts +57 -0
- package/src/shared/lib/omp/mode/budget.ts +21 -0
- package/src/shared/lib/omp/mode/client-signal.ts +35 -0
- package/src/shared/lib/omp/mode/constants.ts +91 -0
- package/src/shared/lib/omp/mode/format.ts +36 -0
- package/src/shared/lib/omp/mode/markers.test.ts +111 -0
- package/src/shared/lib/omp/mode/markers.ts +105 -0
- package/src/shared/lib/omp/mode/notice.test.ts +107 -0
- package/src/shared/lib/omp/mode/notice.ts +135 -0
- package/src/shared/lib/omp/mode/status.ts +39 -0
- package/src/shared/lib/omp/mode/tables.test.ts +217 -0
- package/src/shared/lib/omp/mode/types.ts +190 -0
- package/src/shared/lib/omp/rpc/frame.test.ts +241 -0
- package/src/shared/lib/omp/rpc/frame.ts +151 -0
- package/src/shared/lib/omp/session/default-title.test.ts +79 -0
- package/src/shared/lib/omp/session/default-title.ts +83 -0
- package/src/shared/lib/omp/session/hashline-patch.test.ts +89 -0
- package/src/shared/lib/omp/session/hashline-patch.ts +134 -0
- package/src/shared/lib/omp/session/inlined-attachments.test.ts +82 -0
- package/src/shared/lib/omp/session/jsonl.test.ts +178 -0
- package/src/shared/lib/omp/session/jsonl.ts +182 -0
- package/src/shared/lib/omp/session/mapper.test.ts +299 -0
- package/src/shared/lib/omp/session/mapper.ts +175 -0
- package/src/shared/lib/omp/session/messages-map.test.ts +340 -0
- package/src/shared/lib/omp/session/messages-map.ts +259 -0
- package/src/shared/lib/omp/session/messages-parse.ts +73 -0
- package/src/shared/lib/omp/session/narration.test.ts +113 -0
- package/src/shared/lib/omp/session/operator-title.test.ts +99 -0
- package/src/shared/lib/omp/session/operator-title.ts +136 -0
- package/src/shared/lib/omp/session/parse-message-blocks-attachments.test.ts +156 -0
- package/src/shared/lib/omp/session/parse-message-blocks-toolcall.test.ts +106 -0
- package/src/shared/lib/omp/session/parse-message-blocks.test.ts +322 -0
- package/src/shared/lib/omp/session/parse-message-blocks.ts +328 -0
- package/src/shared/lib/omp/session/prewarm-misc.test.ts +326 -0
- package/src/shared/lib/omp/session/prewarm.ts +41 -0
- package/src/shared/lib/omp/session/proc.test.ts +256 -0
- package/src/shared/lib/omp/session/proc.ts +322 -0
- package/src/shared/lib/omp/session/schema-migrations.ts +35 -0
- package/src/shared/lib/omp/session/sidebar.test.ts +180 -0
- package/src/shared/lib/omp/session/sidebar.ts +77 -0
- package/src/shared/lib/omp/session/skill-bubble.test.ts +94 -0
- package/src/shared/lib/omp/session/stream-heal.server.test.ts +123 -0
- package/src/shared/lib/omp/session/stream-heal.server.ts +175 -0
- package/src/shared/lib/omp/session/stream-state.server.test.ts +106 -0
- package/src/shared/lib/omp/session/stream-state.server.ts +199 -0
- package/src/shared/lib/omp/session/telemetry-blocks.ts +60 -0
- package/src/shared/lib/omp/session/timestamps.ts +20 -0
- package/src/shared/lib/omp/session/tool-duration.test.ts +61 -0
- package/src/shared/lib/omp/session/tool-images.test.ts +95 -0
- package/src/shared/lib/omp/session/tool-images.ts +98 -0
- package/src/shared/lib/omp/session/turn-error.ts +40 -0
- package/src/shared/lib/omp/session/wait.test.ts +167 -0
- package/src/shared/lib/omp/session/wait.ts +267 -0
- package/src/shared/lib/omp/subagent/control.ts +46 -0
- package/src/shared/lib/omp/subagent/history/client.ts +76 -0
- package/src/shared/lib/omp/subagent/history/settlement.test.ts +344 -0
- package/src/shared/lib/omp/subagent/history/settlement.ts +113 -0
- package/src/shared/lib/omp/subagent/history/status.ts +40 -0
- package/src/shared/lib/omp/subagent/label.test.ts +94 -0
- package/src/shared/lib/omp/subagent/label.ts +84 -0
- package/src/shared/lib/omp/subagent/parse.test.ts +88 -0
- package/src/shared/lib/omp/subagent/parse.ts +301 -0
- package/src/shared/lib/omp/subagent/result-details.ts +53 -0
- package/src/shared/lib/omp/subagent/transcript-client.test.ts +100 -0
- package/src/shared/lib/omp/subagent/transcript-client.ts +194 -0
- package/src/shared/lib/panels/capabilities.test.ts +78 -0
- package/src/shared/lib/panels/capabilities.ts +40 -0
- package/src/shared/lib/panels/css-scope.test.ts +98 -0
- package/src/shared/lib/panels/css-scope.ts +171 -0
- package/src/shared/lib/panels/resolve-asset.test.ts +74 -0
- package/src/shared/lib/panels/resolve-asset.ts +45 -0
- package/src/shared/lib/plugins/protocol.ts +70 -0
- package/src/shared/lib/realtime/client.ts +328 -0
- package/src/shared/lib/realtime/connection.test.ts +301 -0
- package/src/shared/lib/realtime/connection.ts +314 -0
- package/src/shared/lib/realtime/protocol.ts +297 -0
- package/src/shared/lib/realtime/state.ts +174 -0
- package/src/shared/lib/schedule/parse.test.ts +187 -0
- package/src/shared/lib/schedule/parse.ts +303 -0
- package/src/shared/lib/settings/client.test.ts +72 -0
- package/src/shared/lib/settings/client.ts +129 -0
- package/src/shared/lib/settings/diff.test.ts +31 -0
- package/src/shared/lib/settings/diff.ts +37 -0
- package/src/shared/lib/settings/keys.ts +51 -0
- package/src/shared/lib/theme/catalog.test.ts +168 -0
- package/src/shared/lib/theme/catalog.ts +98 -0
- package/src/shared/lib/theme/chrome.test.ts +53 -0
- package/src/shared/lib/theme/chrome.ts +41 -0
- package/src/shared/lib/theme/color.test.ts +102 -0
- package/src/shared/lib/theme/color.ts +88 -0
- package/src/shared/lib/theme/css.ts +70 -0
- package/src/shared/lib/theme/palettes/dark.ts +313 -0
- package/src/shared/lib/theme/palettes/kabmo.ts +61 -0
- package/src/shared/lib/theme/palettes/light.ts +313 -0
- package/src/shared/lib/theme/theme.test.ts +199 -0
- package/src/shared/lib/ui/key-binding.test.ts +134 -0
- package/src/shared/lib/ui/key-binding.ts +143 -0
- package/src/shared/lib/updates/popup-state.test.ts +98 -0
- package/src/shared/lib/updates/popup-state.ts +67 -0
- package/src/shared/lib/updates/popup.test.ts +30 -0
- package/src/shared/lib/updates/progress.test.ts +54 -0
- package/src/shared/lib/updates/progress.ts +50 -0
- package/src/shared/lib/updates/semver.test.ts +147 -0
- package/src/shared/lib/updates/semver.ts +109 -0
- package/src/shared/lib/util/guards.test.ts +48 -0
- package/src/shared/lib/util/guards.ts +14 -0
- package/src/shared/lib/util/platform.test.ts +87 -0
- package/src/shared/lib/util/platform.ts +30 -0
- package/src/shared/lib/wiki/document-urls.test.ts +85 -0
- package/src/shared/lib/wiki/document-urls.ts +109 -0
- package/src/shared/lib/wiki/pages.test.ts +265 -0
- package/src/shared/lib/wiki/pages.ts +242 -0
- package/src/shared/lib/wiki/sidebar.test.ts +265 -0
- package/src/shared/lib/wiki/sidebar.ts +170 -0
- package/src/shared/lib/workspace/active-project.ts +42 -0
- package/src/shared/lib/workspace/file-tab-id.ts +29 -0
- package/src/shared/lib/workspace/keymap.test.ts +82 -0
- package/src/shared/lib/workspace/keymap.ts +30 -0
- package/src/shared/lib/workspace/panel-ids.test.ts +66 -0
- package/src/shared/lib/workspace/panel-ids.ts +59 -0
- package/src/shared/lib/workspace/panel-order.test.ts +133 -0
- package/src/shared/lib/workspace/panel-order.ts +127 -0
- package/src/shared/lib/workspace/panel-widths.test.ts +276 -0
- package/src/shared/lib/workspace/panel-widths.ts +329 -0
- package/src/shared/lib/workspace/project-icon.ts +29 -0
- package/src/shared/lib/workspace/project-settings-migration.ts +62 -0
- package/src/shared/lib/workspace/project-settings.test.ts +350 -0
- package/src/shared/lib/workspace/project-settings.ts +139 -0
- package/src/shared/lib/workspace/refresh-cadence.test.ts +117 -0
- package/src/shared/lib/workspace/refresh-cadence.ts +58 -0
- package/src/shared/lib/workspace/relative-time.ts +25 -0
- package/src/shared/lib/workspace/right-panels.ts +110 -0
- package/src/shared/lib/workspace/schema-migrations.ts +19 -0
- package/src/shared/lib/workspace/scroll-positions.test.ts +82 -0
- package/src/shared/lib/workspace/scroll-positions.ts +101 -0
- package/src/shared/lib/workspace/session-state/listeners.ts +70 -0
- package/src/shared/lib/workspace/session-state/store.test.ts +328 -0
- package/src/shared/lib/workspace/session-state/store.ts +330 -0
- package/src/shared/lib/workspace/session-visibility.test.ts +117 -0
- package/src/shared/lib/workspace/session-visibility.ts +76 -0
- package/src/shared/lib/workspace/sidebar-expanded.ts +23 -0
- package/src/shared/lib/workspace/sidebar-sort.test.ts +210 -0
- package/src/shared/lib/workspace/sidebar-sort.ts +140 -0
- package/src/shared/lib/workspace/sidebar-toolbar.test.ts +77 -0
- package/src/shared/lib/workspace/sidebar-toolbar.ts +100 -0
- package/src/shared/lib/workspace/sidebar-width.test.ts +111 -0
- package/src/shared/lib/workspace/sidebar-width.ts +106 -0
- package/src/shared/lib/workspace/terminal/keys.test.ts +189 -0
- package/src/shared/lib/workspace/terminal/keys.ts +225 -0
- package/src/shared/lib/workspace/terminal/protocol.test.ts +242 -0
- package/src/shared/lib/workspace/terminal/protocol.ts +222 -0
- package/src/shared/lib/workspace/workspace-modules.test.ts +300 -0
- package/src/shared/types/browser.ts +58 -0
- package/src/shared/types/btw.ts +123 -0
- package/src/shared/types/chat.ts +330 -0
- package/src/shared/types/context.ts +87 -0
- package/src/shared/types/fs.ts +77 -0
- package/src/shared/types/git.ts +169 -0
- package/src/shared/types/index.ts +31 -0
- package/src/shared/types/models.ts +101 -0
- package/src/shared/types/omp/agent.ts +223 -0
- package/src/shared/types/omp/instructions.ts +38 -0
- package/src/shared/types/omp/session.ts +156 -0
- package/src/shared/types/omp/subagent.ts +186 -0
- package/src/shared/types/panels.ts +334 -0
- package/src/shared/types/plan.ts +42 -0
- package/src/shared/types/realtime.ts +34 -0
- package/src/shared/types/schedule.ts +67 -0
- package/src/shared/types/settings/agent.ts +16 -0
- package/src/shared/types/settings/command.ts +38 -0
- package/src/shared/types/settings/mcp.ts +22 -0
- package/src/shared/types/settings/plugin.ts +107 -0
- package/src/shared/types/settings/project.ts +18 -0
- package/src/shared/types/settings/provider.ts +135 -0
- package/src/shared/types/settings/skill.ts +48 -0
- package/src/shared/types/settings/state.ts +81 -0
- package/src/shared/types/settings/usage.ts +237 -0
- package/src/shared/types/terminal.ts +12 -0
- package/src/shared/types/theme.ts +48 -0
- package/src/shared/types/todo.ts +108 -0
- package/src/shared/types/tokenUsage.ts +44 -0
- package/src/shared/types/updates.ts +99 -0
- package/src/shared/types/wiki.ts +132 -0
- package/src/shared/types/workspace.ts +69 -0
- package/src/test-support/executable-stub.ts +107 -0
- package/src/test-support/fake-git.ts +121 -0
- package/src/test-support/fake-omp-fork.ts +146 -0
- package/src/test-support/file-actions.test-util.ts +206 -0
- package/src/test-support/file-clipboard.test-util.ts +52 -0
- package/src/test-support/file-editor.test-util.ts +182 -0
- package/src/test-support/file-explorer.test-util.ts +317 -0
- package/src/test-support/isolated-db.ts +51 -0
- package/src/test-support/peer-harness.ts +205 -0
- package/src/test-support/platform.test.ts +48 -0
- package/src/test-support/platform.ts +51 -0
- package/src/test-support/pristine-globals.ts +124 -0
- package/src/test-support/realtime-server.ts +154 -0
- package/src/test-support/remove-dir.ts +78 -0
- package/tsconfig.json +67 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// ESM port of ompweb/bin/process-lifecycle.js.
|
|
2
|
+
// Semantics are preserved exactly: POSIX signals the whole process group
|
|
3
|
+
// (`process.kill(-pid, signal)`) with a `child.kill(signal)` fallback, while
|
|
4
|
+
// win32 shells out to `taskkill /pid <pid> /t [/f]`.
|
|
5
|
+
|
|
6
|
+
const forwardedSignals = ['SIGINT', 'SIGTERM'];
|
|
7
|
+
const shutdownTimeoutMs = 5_000;
|
|
8
|
+
|
|
9
|
+
// Time to wait for a terminated process tree to actually exit.
|
|
10
|
+
export const STOP_TIMEOUT_MS = 5_000;
|
|
11
|
+
|
|
12
|
+
// Signal numbers for the 128+N shell exit-code convention (os.constants.signals
|
|
13
|
+
// equivalent; only signals forwarded by this module are needed).
|
|
14
|
+
const SIGNAL_NUMBERS = { SIGINT: 2, SIGTERM: 15, SIGKILL: 9 };
|
|
15
|
+
|
|
16
|
+
function getSignalExitCode(signal) {
|
|
17
|
+
const signalNumber = signal ? SIGNAL_NUMBERS[signal] : undefined;
|
|
18
|
+
return typeof signalNumber === 'number' ? 128 + signalNumber : 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Whether `process.kill(-pid, …)` may be used on this PID.
|
|
23
|
+
*
|
|
24
|
+
* The negative form signals a process GROUP, and POSIX reserves `-1` for "every
|
|
25
|
+
* process this user may signal" — so a pid of 1 or 0 must never reach it. A
|
|
26
|
+
* stale instance record naming such a PID would otherwise turn `kabmo stop`
|
|
27
|
+
* into a signal to the whole session, which is a far worse outcome than a stop
|
|
28
|
+
* that fails. Kept as a named predicate so the rule is testable WITHOUT
|
|
29
|
+
* signalling anything.
|
|
30
|
+
*/
|
|
31
|
+
export function isGroupKillable(pid) {
|
|
32
|
+
return Number.isInteger(pid) && pid > 1;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* End a process (and, on Windows, its tree).
|
|
37
|
+
*
|
|
38
|
+
* `spawn` is injectable for the same reason `platform` is: the Windows branch
|
|
39
|
+
* runs `taskkill`, and the host this project is developed on has no such binary
|
|
40
|
+
* — so the branch's failure modes (a missing binary, a non-zero exit, a success)
|
|
41
|
+
* could not be exercised at all. Bun resolves a child's executable from the PATH
|
|
42
|
+
* snapshot taken at process start, so a stub placed on PATH afterwards is NOT
|
|
43
|
+
* found (verified), and the seam is the only way to reach those paths.
|
|
44
|
+
*/
|
|
45
|
+
export function killChildTree(child, force, platform = process.platform, gracefulSignal = 'SIGTERM', spawn = Bun.spawn) {
|
|
46
|
+
if (platform === 'win32' && child.pid) {
|
|
47
|
+
const fallback = () => {
|
|
48
|
+
try { child.kill(force ? 'SIGKILL' : 'SIGTERM'); } catch {}
|
|
49
|
+
};
|
|
50
|
+
// `taskkill` is the only way to end a whole tree on Windows, but spawning it
|
|
51
|
+
// can fail on its own: measured, `Bun.spawn` THROWS `Executable not found in
|
|
52
|
+
// $PATH: "taskkill"` when the binary is missing, and that throw escaped as an
|
|
53
|
+
// exception from a stop that was otherwise working — the caller's escalation
|
|
54
|
+
// never ran. The fallback is the single-PID kill, which on Windows is
|
|
55
|
+
// forceful either way (POSIX signals do not exist there, so Node maps it to
|
|
56
|
+
// TerminateProcess): a host without taskkill loses the tree kill, not the
|
|
57
|
+
// stop.
|
|
58
|
+
let reaper;
|
|
59
|
+
try {
|
|
60
|
+
reaper = spawn({
|
|
61
|
+
cmd: ['taskkill', '/pid', String(child.pid), '/t', ...(force ? ['/f'] : [])],
|
|
62
|
+
stdout: 'ignore',
|
|
63
|
+
stderr: 'ignore',
|
|
64
|
+
windowsHide: true,
|
|
65
|
+
});
|
|
66
|
+
} catch {
|
|
67
|
+
fallback();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
void reaper.exited.then((code) => {
|
|
71
|
+
if (code !== 0) fallback();
|
|
72
|
+
}, fallback);
|
|
73
|
+
reaper.unref?.();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const signal = force ? 'SIGKILL' : gracefulSignal;
|
|
78
|
+
if (platform !== 'win32' && isGroupKillable(child.pid)) {
|
|
79
|
+
try {
|
|
80
|
+
process.kill(-child.pid, signal);
|
|
81
|
+
return;
|
|
82
|
+
} catch {}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
try { child.kill(signal); } catch {}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function childHasExited(child) {
|
|
89
|
+
return (child.exitCode !== null && child.exitCode !== undefined)
|
|
90
|
+
|| (child.signalCode !== null && child.signalCode !== undefined);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function waitForChildExit(child, timeoutMs) {
|
|
94
|
+
if (childHasExited(child)) return Promise.resolve(true);
|
|
95
|
+
return new Promise((resolve) => {
|
|
96
|
+
const finish = (exited) => {
|
|
97
|
+
clearTimeout(timer);
|
|
98
|
+
resolve(exited);
|
|
99
|
+
};
|
|
100
|
+
const timer = setTimeout(() => finish(childHasExited(child)), timeoutMs);
|
|
101
|
+
timer.unref?.();
|
|
102
|
+
void child.exited.then(() => finish(true));
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export async function terminateChildProcess(child, timeoutMs = STOP_TIMEOUT_MS, platform = process.platform, spawn = Bun.spawn) {
|
|
107
|
+
if (childHasExited(child)) return true;
|
|
108
|
+
const exited = waitForChildExit(child, timeoutMs);
|
|
109
|
+
killChildTree(child, true, platform, 'SIGTERM', spawn);
|
|
110
|
+
return exited;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function wireChildProcessLifecycle(child, parentProcess = process, timeoutMs = shutdownTimeoutMs, handleChildExit) {
|
|
114
|
+
const signalHandlers = new Map();
|
|
115
|
+
let shutdownTimer;
|
|
116
|
+
let settled = false;
|
|
117
|
+
const platform = parentProcess.platform ?? process.platform;
|
|
118
|
+
|
|
119
|
+
const forceKill = () => killChildTree(child, true, platform);
|
|
120
|
+
|
|
121
|
+
for (const signal of forwardedSignals) {
|
|
122
|
+
const handler = () => {
|
|
123
|
+
if (shutdownTimer) {
|
|
124
|
+
forceKill();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
shutdownTimer = setTimeout(forceKill, timeoutMs);
|
|
129
|
+
shutdownTimer.unref?.();
|
|
130
|
+
killChildTree(child, false, platform, signal);
|
|
131
|
+
};
|
|
132
|
+
signalHandlers.set(signal, handler);
|
|
133
|
+
parentProcess.on(signal, handler);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
void child.exited.then((code) => {
|
|
137
|
+
if (settled) return;
|
|
138
|
+
settled = true;
|
|
139
|
+
if (shutdownTimer) clearTimeout(shutdownTimer);
|
|
140
|
+
|
|
141
|
+
for (const [forwardedSignal, handler] of signalHandlers) {
|
|
142
|
+
parentProcess.removeListener(forwardedSignal, handler);
|
|
143
|
+
}
|
|
144
|
+
if (handleChildExit?.({ code, signal: child.signalCode }) === true) return;
|
|
145
|
+
|
|
146
|
+
parentProcess.exit(code ?? getSignalExitCode(child.signalCode));
|
|
147
|
+
});
|
|
148
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Ending a process TREE, on both platforms' mechanisms.
|
|
8
|
+
*
|
|
9
|
+
* The Windows branch shells out to `taskkill /pid <pid> /t`, and that spawn can
|
|
10
|
+
* fail on its own: measured, `Bun.spawn` THROWS `Executable not found in $PATH`
|
|
11
|
+
* when the binary is missing, which escaped `killChildTree` as an exception from
|
|
12
|
+
* a stop that was otherwise working — the caller's escalation never ran and the
|
|
13
|
+
* tree survived. The fallback is the single-PID kill, so a host without
|
|
14
|
+
* `taskkill` loses the tree kill, not the stop.
|
|
15
|
+
*
|
|
16
|
+
* The Windows branch is reached from macOS through the `spawn` seam the function
|
|
17
|
+
* exposes (Bun resolves a child's executable from the PATH snapshot taken at
|
|
18
|
+
* process start, so a stub binary cannot be injected through PATH — verified).
|
|
19
|
+
* What the seam proves is the branch's own decisions: throw → fallback, non-zero
|
|
20
|
+
* exit → fallback, success → no double kill, and the escalation the caller sees.
|
|
21
|
+
* A real child is used wherever the real mechanism is the POSIX one.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { afterEach, describe, expect, test } from 'bun:test';
|
|
25
|
+
|
|
26
|
+
import { isGroupKillable, killChildTree, terminateChildProcess } from '@/cli/lib/process-lifecycle.js';
|
|
27
|
+
import { describePosix } from '@/test-support/platform';
|
|
28
|
+
|
|
29
|
+
const children = [];
|
|
30
|
+
|
|
31
|
+
afterEach(async () => {
|
|
32
|
+
for (const child of children.splice(0)) {
|
|
33
|
+
try { child.kill('SIGKILL'); } catch {}
|
|
34
|
+
await child.exited;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
function spawnSleep() {
|
|
39
|
+
const child = Bun.spawn(['/bin/sh', '-c', 'trap "" TERM; sleep 60'], { stdin: 'ignore', stdout: 'ignore', stderr: 'ignore' });
|
|
40
|
+
children.push(child);
|
|
41
|
+
return child;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** A process object that records what was signalled instead of doing it. */
|
|
45
|
+
function fakeChild(pid = 4242) {
|
|
46
|
+
const signals = [];
|
|
47
|
+
return { pid, signals, kill: (signal) => { signals.push(signal); } };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* A stand-in for `Bun.spawn` on the win32 branch. `exitCode` is what the fake
|
|
52
|
+
* `taskkill` reports; `throws` models the missing binary.
|
|
53
|
+
*/
|
|
54
|
+
function fakeSpawn({ exitCode = 0, throws = false } = {}) {
|
|
55
|
+
const calls = [];
|
|
56
|
+
const fn = (options) => {
|
|
57
|
+
calls.push(options);
|
|
58
|
+
if (throws) throw new Error('Executable not found in $PATH: "taskkill"');
|
|
59
|
+
return { exited: Promise.resolve(exitCode), unref: () => {} };
|
|
60
|
+
};
|
|
61
|
+
fn.calls = calls;
|
|
62
|
+
return fn;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
describe('isGroupKillable', () => {
|
|
66
|
+
// The guard exists because POSIX reserves `kill(-1)` for "every process this
|
|
67
|
+
// user may signal": a stale record naming PID 1 (or 0) would otherwise turn
|
|
68
|
+
// `kabmo stop` into a signal to the whole session — observed, and far
|
|
69
|
+
// worse than a stop that fails.
|
|
70
|
+
test('refuses the PIDs that make a group kill catastrophic', () => {
|
|
71
|
+
expect(isGroupKillable(0)).toBe(false);
|
|
72
|
+
expect(isGroupKillable(1)).toBe(false);
|
|
73
|
+
expect(isGroupKillable(-1)).toBe(false);
|
|
74
|
+
expect(isGroupKillable(Number.NaN)).toBe(false);
|
|
75
|
+
expect(isGroupKillable(undefined)).toBe(false);
|
|
76
|
+
expect(isGroupKillable('1')).toBe(false);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('allows a real process group leader', () => {
|
|
80
|
+
expect(isGroupKillable(2)).toBe(true);
|
|
81
|
+
expect(isGroupKillable(process.pid)).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('killChildTree on win32', () => {
|
|
86
|
+
test('runs taskkill with the tree and force flags', () => {
|
|
87
|
+
const spawn = fakeSpawn({ exitCode: 0 });
|
|
88
|
+
killChildTree(fakeChild(99), true, 'win32', 'SIGTERM', spawn);
|
|
89
|
+
|
|
90
|
+
expect(spawn.calls).toHaveLength(1);
|
|
91
|
+
expect(spawn.calls[0].cmd).toEqual(['taskkill', '/pid', '99', '/t', '/f']);
|
|
92
|
+
expect(spawn.calls[0].windowsHide).toBe(true);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
test('omits /f when not forced', () => {
|
|
96
|
+
const spawn = fakeSpawn({ exitCode: 0 });
|
|
97
|
+
killChildTree(fakeChild(99), false, 'win32', 'SIGTERM', spawn);
|
|
98
|
+
|
|
99
|
+
expect(spawn.calls[0].cmd).toEqual(['taskkill', '/pid', '99', '/t']);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
test('falls back to the single-PID kill when taskkill cannot be spawned', () => {
|
|
103
|
+
// The regression: before the fix this THREW out of a stop that was
|
|
104
|
+
// otherwise working, so the caller's escalation never ran.
|
|
105
|
+
const child = fakeChild();
|
|
106
|
+
expect(() => killChildTree(child, true, 'win32', 'SIGTERM', fakeSpawn({ throws: true }))).not.toThrow();
|
|
107
|
+
expect(child.signals).toEqual(['SIGKILL']);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
test('falls back when taskkill exits non-zero', async () => {
|
|
111
|
+
const child = fakeChild();
|
|
112
|
+
killChildTree(child, true, 'win32', 'SIGTERM', fakeSpawn({ exitCode: 1 }));
|
|
113
|
+
await Bun.sleep(20);
|
|
114
|
+
expect(child.signals).toEqual(['SIGKILL']);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
test('does not double-kill when taskkill succeeded', async () => {
|
|
118
|
+
const child = fakeChild();
|
|
119
|
+
killChildTree(child, true, 'win32', 'SIGTERM', fakeSpawn({ exitCode: 0 }));
|
|
120
|
+
await Bun.sleep(20);
|
|
121
|
+
expect(child.signals).toEqual([]);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
test('a reaper that rejects is treated as a failure', async () => {
|
|
125
|
+
const child = fakeChild();
|
|
126
|
+
const spawn = () => ({ exited: Promise.reject(new Error('boom')), unref: () => {} });
|
|
127
|
+
killChildTree(child, true, 'win32', 'SIGTERM', spawn);
|
|
128
|
+
await Bun.sleep(20);
|
|
129
|
+
expect(child.signals).toEqual(['SIGKILL']);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
describePosix('terminateChildProcess', () => {
|
|
134
|
+
test('ends a real child through the win32 fallback', async () => {
|
|
135
|
+
const child = spawnSleep();
|
|
136
|
+
|
|
137
|
+
expect(await terminateChildProcess(child, 3000, 'win32', fakeSpawn({ throws: true }))).toBe(true);
|
|
138
|
+
await child.exited;
|
|
139
|
+
expect(child.signalCode).toBe('SIGKILL');
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test('an already-exited child answers true without signalling', async () => {
|
|
143
|
+
const child = Bun.spawn(['/bin/sh', '-c', 'exit 0'], { stdin: 'ignore', stdout: 'ignore', stderr: 'ignore' });
|
|
144
|
+
children.push(child);
|
|
145
|
+
await child.exited;
|
|
146
|
+
|
|
147
|
+
expect(await terminateChildProcess(child, 100, 'win32', fakeSpawn({ throws: true }))).toBe(true);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
test('the posix branch signals the process group', async () => {
|
|
151
|
+
const child = spawnSleep();
|
|
152
|
+
expect(await terminateChildProcess(child, 3000, 'linux')).toBe(true);
|
|
153
|
+
await child.exited;
|
|
154
|
+
expect(child.signalCode).toBe('SIGKILL');
|
|
155
|
+
});
|
|
156
|
+
});
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// Restart scope for `kabmo update`.
|
|
2
|
+
//
|
|
3
|
+
// Kept separate from the command so the rule is testable without a live server,
|
|
4
|
+
// exactly as `stop-scope.js` is for `stop`. The rule is ownership: an update
|
|
5
|
+
// replaces this package on disk, so the only instance it may restart is one it
|
|
6
|
+
// started — and, crucially, the one it picks must be that instance rather than
|
|
7
|
+
// whichever answers first.
|
|
8
|
+
//
|
|
9
|
+
// The bug this exists to prevent: picking the LOWEST PORT instead of the owned
|
|
10
|
+
// one. `bun run dev` on 3000 beside the updated daemon on 3001 (a real layout
|
|
11
|
+
// on this machine) made `update` select the dev server, classify it `direct`,
|
|
12
|
+
// skip it, and leave the daemon serving the build that was just replaced.
|
|
13
|
+
|
|
14
|
+
import { isCliManaged } from '@/server/lib/lifecycle/launch-mode';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The instances an update restarts. `all` is the `--all` flag: every live
|
|
18
|
+
* instance is considered, and the caller still leaves the unmanaged ones alone.
|
|
19
|
+
*
|
|
20
|
+
* Without `--all`, every CLI-owned instance is a target, because every one of
|
|
21
|
+
* them is serving the build the update just replaced — the command's own
|
|
22
|
+
* contract is "the instances still serving the previous build (the ones the
|
|
23
|
+
* CLI started)", which is plural. `--all` widens the REPORT to the instances
|
|
24
|
+
* the CLI did not start; ownership, not the flag, decides what may be replaced.
|
|
25
|
+
*
|
|
26
|
+
* Only when nothing is owned does the first live instance fall through, so the
|
|
27
|
+
* unmanaged case is still reported rather than silently ignored.
|
|
28
|
+
*/
|
|
29
|
+
export function selectRestartTargets(instances, all) {
|
|
30
|
+
if (all) return instances;
|
|
31
|
+
const managed = instances.filter((entry) => isCliManaged(entry.launchMode));
|
|
32
|
+
return managed.length > 0 ? managed : instances.slice(0, 1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The `serve` options that bring a stopped instance back the way it was found.
|
|
37
|
+
*
|
|
38
|
+
* Every field here comes from the INSTANCE, never from the argv of the command
|
|
39
|
+
* that is restarting it. `kabmo restart` and `kabmo update` are their
|
|
40
|
+
* own invocations: their options describe the command, and spreading them into
|
|
41
|
+
* `serve` is what silently dropped `--tray` and `--tls` from the replacement.
|
|
42
|
+
* An instance started with `serve --startup` (whose login entry runs
|
|
43
|
+
* `serve --foreground --tray`) therefore came back after every update with no
|
|
44
|
+
* icon, and a TLS instance came back answering cleartext on the port its
|
|
45
|
+
* browser had bookmarked as https.
|
|
46
|
+
*
|
|
47
|
+
* `foreground` is always false: the replacement is the detached daemon the CLI
|
|
48
|
+
* serves, whatever the original launch mode was — a `foreground` instance was
|
|
49
|
+
* held open by its launcher (launchd), which is gone by the time a restart is
|
|
50
|
+
* spawned, so reproducing `--foreground` here would tie the replacement to a
|
|
51
|
+
* terminal nobody is watching.
|
|
52
|
+
*
|
|
53
|
+
* `--tray`/`--tls` are ADD-ONLY: an explicit flag on the restarting command
|
|
54
|
+
* turns one on, and its absence never turns one off. `restart` has no way to
|
|
55
|
+
* say "explicitly no tray" (the parser defaults both to false), so reading the
|
|
56
|
+
* absence as an instruction would strip the icon from the instance the user
|
|
57
|
+
* asked to restart — the bug this helper exists to fix. Removing one is
|
|
58
|
+
* `stop` followed by `serve` without the flag.
|
|
59
|
+
*/
|
|
60
|
+
export function restartServeOptions(instance, options = {}) {
|
|
61
|
+
return {
|
|
62
|
+
...options,
|
|
63
|
+
port: instance.port,
|
|
64
|
+
host: instance.host,
|
|
65
|
+
lan: instance.host === '0.0.0.0',
|
|
66
|
+
dev: instance.mode === 'dev',
|
|
67
|
+
prod: instance.mode === 'prod',
|
|
68
|
+
tray: instance.tray === true || options.tray === true,
|
|
69
|
+
tls: instance.tls === true || options.tls === true,
|
|
70
|
+
foreground: false,
|
|
71
|
+
all: false,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The warning a restart owes the user when it cannot carry the credential over.
|
|
77
|
+
*
|
|
78
|
+
* A self-restart hands the hashed credential to its replacement, so it keeps
|
|
79
|
+
* working. A MANUAL `kabmo restart` has nothing to hand over: the original
|
|
80
|
+
* server never stored the password (only an argon2 hash lived in its memory),
|
|
81
|
+
* so the replacement genuinely cannot require it. Before this, that restart
|
|
82
|
+
* came back with authentication silently DISABLED — measured: a run started with
|
|
83
|
+
* `--ui-password` answered `required: false` afterwards, i.e. an open console on
|
|
84
|
+
* a port the user had deliberately protected.
|
|
85
|
+
*
|
|
86
|
+
* `null` when there is nothing to say: an instance that ran without auth, or one
|
|
87
|
+
* whose replacement already received the payload.
|
|
88
|
+
*/
|
|
89
|
+
export function restartAuthWarning(instance, handoverPayload) {
|
|
90
|
+
if (instance.auth !== true || handoverPayload) return null;
|
|
91
|
+
return `The credential of the instance on port ${instance.port} cannot be recovered — it was never stored, so the replacement starts WITHOUT a password.`
|
|
92
|
+
+ ' Start it again with --ui-password to restore it.';
|
|
93
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { describe, expect, test } from 'bun:test';
|
|
7
|
+
|
|
8
|
+
import { restartAuthWarning, restartServeOptions, selectRestartTargets } from '@/cli/lib/restart-scope.js';
|
|
9
|
+
|
|
10
|
+
const devOn3000 = { port: 3000, pid: 11, launchMode: 'direct' };
|
|
11
|
+
const daemonOn3001 = { port: 3001, pid: 12, launchMode: 'daemon' };
|
|
12
|
+
const foregroundOn3002 = { port: 3002, pid: 13, launchMode: 'foreground' };
|
|
13
|
+
|
|
14
|
+
describe('selectRestartTargets', () => {
|
|
15
|
+
// The reported bug: the lowest port won, which was a `bun run dev` the update
|
|
16
|
+
// must not touch — so the daemon holding the replaced build was never
|
|
17
|
+
// restarted and kept serving it.
|
|
18
|
+
test('picks the CLI-owned instance over a lower-port unmanaged one', () => {
|
|
19
|
+
expect(selectRestartTargets([devOn3000, daemonOn3001], false)).toEqual([daemonOn3001]);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// With no owned instance there is still something to report, so the command
|
|
23
|
+
// says why it is skipping rather than claiming nothing is running.
|
|
24
|
+
test('falls back to the first live instance when none is owned', () => {
|
|
25
|
+
expect(selectRestartTargets([devOn3000], false)).toEqual([devOn3000]);
|
|
26
|
+
expect(selectRestartTargets([], false)).toEqual([]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('takes every owned instance, since each one serves the replaced build', () => {
|
|
30
|
+
expect(selectRestartTargets([daemonOn3001, foregroundOn3002], false)).toEqual([daemonOn3001, foregroundOn3002]);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('--all considers every instance, leaving the caller to skip the unmanaged', () => {
|
|
34
|
+
const all = [devOn3000, daemonOn3001, foregroundOn3002];
|
|
35
|
+
expect(selectRestartTargets(all, true)).toEqual(all);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('an unreadable launch mode is not owned', () => {
|
|
39
|
+
const unknown = { port: 4000, pid: 99, launchMode: undefined };
|
|
40
|
+
expect(selectRestartTargets([unknown, daemonOn3001], false)).toEqual([daemonOn3001]);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe('restartServeOptions', () => {
|
|
45
|
+
// The reported bug: a server started with `serve --startup` (whose login
|
|
46
|
+
// entry runs `serve --foreground --tray`) came back after an auto-update with
|
|
47
|
+
// NO tray icon. `restart` and `update` are separate invocations, so spreading
|
|
48
|
+
// their own options into `serve` silently dropped `--tray` (and `--tls`).
|
|
49
|
+
const trayInstance = { port: 3001, host: '0.0.0.0', mode: 'prod', launchMode: 'foreground', tray: true, tls: false };
|
|
50
|
+
|
|
51
|
+
test('reproduces the tray flag of the instance it replaces', () => {
|
|
52
|
+
expect(restartServeOptions(trayInstance).tray).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test('reproduces TLS, and a missing flag is false rather than inherited', () => {
|
|
56
|
+
expect(restartServeOptions({ ...trayInstance, tray: false, tls: true }).tls).toBe(true);
|
|
57
|
+
// An older record has no flags at all: the replacement must not claim them.
|
|
58
|
+
const legacy = { port: 3002, host: '127.0.0.1', mode: 'prod', launchMode: 'daemon' };
|
|
59
|
+
expect(restartServeOptions(legacy)).toMatchObject({ tray: false, tls: false });
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('the command line can add a flag but never remove one', () => {
|
|
63
|
+
// `restart --tray` is a real request to show an icon, so it is honoured.
|
|
64
|
+
// Its ABSENCE is not a request to hide one — the parser defaults the flag to
|
|
65
|
+
// false, so treating that as an instruction would strip the icon from the
|
|
66
|
+
// very instance the user asked to restart.
|
|
67
|
+
const plainDaemon = { port: 3003, host: '127.0.0.1', mode: 'prod', launchMode: 'daemon' };
|
|
68
|
+
expect(restartServeOptions(plainDaemon, { tray: true }).tray).toBe(true);
|
|
69
|
+
expect(restartServeOptions(trayInstance, { tray: false }).tray).toBe(true);
|
|
70
|
+
expect(restartServeOptions(plainDaemon, { tray: false }).tray).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test('the instance decides the address and the mode, not the command', () => {
|
|
74
|
+
// A restart of a different port must not be retargeted by the flag that
|
|
75
|
+
// scoped it, and a recorded prod instance stays prod.
|
|
76
|
+
const options = restartServeOptions({ ...trayInstance, tray: false }, { tray: true, tls: true, port: 9999 });
|
|
77
|
+
expect(options).toMatchObject({ port: 3001, host: '0.0.0.0', lan: true, prod: true });
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('the replacement is always the detached daemon', () => {
|
|
81
|
+
// A `foreground` instance was held open by launchd, which is gone by the
|
|
82
|
+
// time a restart is spawned; reproducing `--foreground` would tie the
|
|
83
|
+
// replacement to a terminal nobody is watching.
|
|
84
|
+
expect(restartServeOptions(trayInstance, { foreground: true, all: true }))
|
|
85
|
+
.toMatchObject({ foreground: false, all: false });
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
test('a dev instance asks for --dev and not --prod', () => {
|
|
89
|
+
const options = restartServeOptions({ ...trayInstance, mode: 'dev' });
|
|
90
|
+
expect(options.dev).toBe(true);
|
|
91
|
+
expect(options.prod).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
describe('restartAuthWarning', () => {
|
|
96
|
+
// A MANUAL restart cannot carry the credential: the original server never
|
|
97
|
+
// stored the password (only an argon2 hash lived in its memory). Before this
|
|
98
|
+
// warning, that restart came back with authentication silently DISABLED —
|
|
99
|
+
// measured: a run started with `--ui-password` answered `required: false`.
|
|
100
|
+
const authInstance = { port: 3001, host: '127.0.0.1', mode: 'prod', launchMode: 'daemon', auth: true };
|
|
101
|
+
|
|
102
|
+
test('names the port and says the replacement starts open', () => {
|
|
103
|
+
const warning = restartAuthWarning(authInstance, null);
|
|
104
|
+
expect(warning).toContain('port 3001');
|
|
105
|
+
expect(warning).toContain('WITHOUT a password');
|
|
106
|
+
expect(warning).toContain('--ui-password');
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
test('is silent when the replacement already received the credential', () => {
|
|
110
|
+
// The self-restart path hands the hashed credential over, so auth survives
|
|
111
|
+
// and there is nothing to warn about.
|
|
112
|
+
expect(restartAuthWarning(authInstance, '{"passwordHash":"h"}')).toBeNull();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test('is silent for an instance that ran without authentication', () => {
|
|
116
|
+
expect(restartAuthWarning({ ...authInstance, auth: false }, null)).toBeNull();
|
|
117
|
+
expect(restartAuthWarning({ port: 3002, host: '127.0.0.1' }, null)).toBeNull();
|
|
118
|
+
});
|
|
119
|
+
});
|