@agentprojectcontext/apx 1.24.0 → 1.27.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/package.json +42 -12
- package/skills/apx/SKILL.md +50 -119
- package/skills/apx-agency-agents/SKILL.md +141 -0
- package/skills/apx-agent/SKILL.md +100 -0
- package/skills/apx-mcp/SKILL.md +114 -0
- package/skills/apx-mcp-builder/SKILL.md +186 -0
- package/skills/apx-project/SKILL.md +100 -0
- package/skills/apx-routine/SKILL.md +138 -0
- package/skills/apx-runtime/SKILL.md +115 -0
- package/skills/apx-sessions/SKILL.md +281 -0
- package/skills/apx-skill-builder/SKILL.md +149 -0
- package/skills/apx-task/SKILL.md +95 -0
- package/skills/apx-telegram/SKILL.md +115 -0
- package/skills/apx-voice/SKILL.md +135 -0
- package/src/core/agent/constants.js +3 -0
- package/src/core/agent/ghost-guard.js +24 -0
- package/src/core/agent/index.js +35 -0
- package/src/core/agent/model-router.js +257 -0
- package/src/core/agent/prompt-builder.js +313 -0
- package/src/core/agent/prompts/channels/api.md +7 -0
- package/src/core/agent/prompts/channels/cli.md +6 -0
- package/src/core/agent/prompts/channels/code.md +20 -0
- package/src/core/agent/prompts/channels/deck.md +6 -0
- package/src/core/agent/prompts/channels/desktop.md +24 -0
- package/src/core/agent/prompts/channels/routine.md +9 -0
- package/src/core/agent/prompts/channels/telegram.md +9 -0
- package/src/core/agent/prompts/channels/terminal.md +16 -0
- package/src/core/agent/prompts/channels/web.md +7 -0
- package/src/core/agent/prompts/channels/web_sidebar.md +7 -0
- package/src/core/agent/prompts/modes/voice.md +4 -0
- package/src/core/agent/prompts/super-agent-base.md +42 -0
- package/src/core/agent/pseudo-tools.js +40 -0
- package/src/core/agent/retry.js +85 -0
- package/src/core/agent/run-agent.js +423 -0
- package/src/core/agent/self-memory.js +155 -0
- package/src/{daemon → core/agent}/tool-call-parser.js +83 -10
- package/src/core/agent/tools-overlap.js +66 -0
- package/src/core/apc-skill-sync.js +97 -0
- package/src/core/code-sessions-store.js +150 -0
- package/src/core/config.js +473 -11
- package/src/core/desktop/autostart.js +162 -0
- package/src/core/engines/_health.js +63 -0
- package/src/{daemon → core}/engines/anthropic.js +16 -0
- package/src/core/engines/gemini.js +168 -0
- package/src/core/engines/groq.js +8 -0
- package/src/{daemon → core}/engines/index.js +3 -1
- package/src/{daemon → core}/engines/mock.js +22 -0
- package/src/{daemon → core}/engines/ollama.js +35 -0
- package/src/core/engines/openai-compatible.js +145 -0
- package/src/core/engines/openai.js +8 -0
- package/src/core/engines/openrouter.js +8 -0
- package/src/core/git-baseline.js +147 -0
- package/src/core/identity.js +21 -0
- package/src/core/logging.js +1 -1
- package/src/core/mcp/index.js +14 -0
- package/src/{daemon/mcp-runner.js → core/mcp/runner.js} +18 -6
- package/src/core/mcp/sources.js +246 -0
- package/src/core/memory/active-threads.js +124 -0
- package/src/core/memory/broker.js +144 -0
- package/src/core/memory/compactor.js +186 -0
- package/src/core/memory/embed-engines/gemini.js +62 -0
- package/src/core/memory/embed-engines/index.js +148 -0
- package/src/core/memory/embed-engines/ollama.js +55 -0
- package/src/core/memory/embed-engines/openai.js +64 -0
- package/src/core/memory/embed-engines/tf.js +20 -0
- package/src/core/memory/embeddings.js +132 -0
- package/src/core/memory/index.js +161 -0
- package/src/core/memory/indexer.js +257 -0
- package/src/core/memory/store.js +231 -0
- package/src/core/messages-store.js +143 -25
- package/src/core/parser.js +78 -16
- package/src/core/scaffold.js +175 -79
- package/src/core/tasks-store.js +264 -0
- package/src/core/telegram-identity.js +126 -0
- package/src/core/tools/index.js +6 -0
- package/src/core/voice/engines/elevenlabs.js +96 -0
- package/src/core/voice/engines/gemini.js +148 -0
- package/src/core/voice/engines/index.js +144 -0
- package/src/core/voice/engines/mock.js +59 -0
- package/src/core/voice/engines/openai.js +82 -0
- package/src/core/voice/engines/piper.js +93 -0
- package/src/core/voice/index.js +3 -0
- package/src/core/voice/tts.js +89 -0
- package/src/{daemon → host/daemon}/apc-runtime-context.js +1 -1
- package/src/host/daemon/api/admin-config.js +159 -0
- package/src/host/daemon/api/admin.js +72 -0
- package/src/host/daemon/api/agents.js +284 -0
- package/src/host/daemon/api/artifacts.js +52 -0
- package/src/host/daemon/api/code.js +351 -0
- package/src/host/daemon/api/config.js +104 -0
- package/src/host/daemon/api/connections.js +42 -0
- package/src/host/daemon/api/conversations.js +161 -0
- package/src/host/daemon/api/deck.js +511 -0
- package/src/host/daemon/api/desktop.js +71 -0
- package/src/host/daemon/api/embeddings.js +65 -0
- package/src/host/daemon/api/engines.js +80 -0
- package/src/host/daemon/api/exec.js +193 -0
- package/src/host/daemon/api/health.js +10 -0
- package/src/host/daemon/api/identity.js +36 -0
- package/src/host/daemon/api/mcps.js +205 -0
- package/src/host/daemon/api/messages.js +83 -0
- package/src/host/daemon/api/pairing.js +194 -0
- package/src/host/daemon/api/plugins.js +19 -0
- package/src/host/daemon/api/projects.js +35 -0
- package/src/host/daemon/api/routines.js +84 -0
- package/src/host/daemon/api/run.js +55 -0
- package/src/host/daemon/api/runtimes.js +219 -0
- package/src/host/daemon/api/sessions-search.js +177 -0
- package/src/host/daemon/api/sessions.js +115 -0
- package/src/host/daemon/api/shared.js +217 -0
- package/src/host/daemon/api/super-agent.js +208 -0
- package/src/host/daemon/api/tasks.js +118 -0
- package/src/host/daemon/api/telegram.js +325 -0
- package/src/host/daemon/api/tools.js +21 -0
- package/src/host/daemon/api/top-level.js +131 -0
- package/src/host/daemon/api/transcribe.js +35 -0
- package/src/host/daemon/api/tts.js +44 -0
- package/src/host/daemon/api/voice.js +519 -0
- package/src/host/daemon/api/web.js +123 -0
- package/src/host/daemon/api.js +152 -0
- package/src/{daemon → host/daemon}/compact.js +1 -1
- package/src/{daemon → host/daemon}/db.js +19 -5
- package/src/{daemon/overlay-ws.js → host/daemon/desktop-ws.js} +7 -7
- package/src/host/daemon/engine-sessions.js +245 -0
- package/src/{daemon → host/daemon}/index.js +27 -10
- package/src/{daemon/plugins/overlay.js → host/daemon/plugins/desktop.js} +36 -28
- package/src/{daemon → host/daemon}/plugins/index.js +2 -2
- package/src/{daemon → host/daemon}/plugins/telegram.js +165 -33
- package/src/{daemon → host/daemon}/project-config.js +31 -7
- package/src/{daemon → host/daemon}/routines.js +27 -8
- package/src/{daemon → host/daemon}/skills-loader.js +4 -2
- package/src/{daemon → host/daemon}/smoke.js +9 -5
- package/src/{daemon → host/daemon}/super-agent-tools/helpers.js +1 -1
- package/src/host/daemon/super-agent-tools/index.js +157 -0
- package/src/{daemon → host/daemon}/super-agent-tools/registry-bridge.js +1 -1
- package/src/{daemon → host/daemon}/super-agent-tools/tools/add-project.js +2 -2
- package/src/{daemon → host/daemon}/super-agent-tools/tools/ask-questions.js +4 -0
- package/src/{daemon → host/daemon}/super-agent-tools/tools/call-agent.js +5 -2
- package/src/{daemon → host/daemon}/super-agent-tools/tools/call-runtime.js +117 -8
- package/src/host/daemon/super-agent-tools/tools/create-task.js +52 -0
- package/src/{daemon → host/daemon}/super-agent-tools/tools/import-agent.js +2 -3
- package/src/{daemon → host/daemon}/super-agent-tools/tools/list-agents.js +1 -1
- package/src/host/daemon/super-agent-tools/tools/list-tasks.js +52 -0
- package/src/{daemon → host/daemon}/super-agent-tools/tools/list-vault-agents.js +1 -1
- package/src/host/daemon/super-agent-tools/tools/read-self-memory.js +21 -0
- package/src/host/daemon/super-agent-tools/tools/remember.js +40 -0
- package/src/{daemon → host/daemon}/super-agent-tools/tools/search-messages.js +1 -1
- package/src/host/daemon/super-agent-tools/tools/search-sessions.js +134 -0
- package/src/{daemon → host/daemon}/super-agent-tools/tools/send-telegram.js +2 -2
- package/src/{daemon → host/daemon}/super-agent-tools/tools/set-identity.js +1 -1
- package/src/{daemon → host/daemon}/super-agent-tools/tools/set-permission-mode.js +1 -1
- package/src/{daemon → host/daemon}/super-agent-tools/tools/tail-messages.js +1 -1
- package/src/host/daemon/super-agent.js +129 -0
- package/src/host/daemon/token-store.js +118 -0
- package/src/host/daemon/tool-call-parser.js +2 -0
- package/src/{daemon → host/daemon}/transcription.js +1 -1
- package/src/{daemon → host/daemon}/wakeup.js +2 -2
- package/src/interfaces/cli/claude-permissions.js +33 -0
- package/src/{cli → interfaces/cli}/commands/agent.js +43 -8
- package/src/{cli → interfaces/cli}/commands/command.js +1 -1
- package/src/{cli → interfaces/cli}/commands/config.js +1 -1
- package/src/{cli → interfaces/cli}/commands/daemon.js +67 -0
- package/src/interfaces/cli/commands/desktop.js +335 -0
- package/src/interfaces/cli/commands/exec.js +92 -0
- package/src/{cli → interfaces/cli}/commands/identity.js +6 -63
- package/src/{cli → interfaces/cli}/commands/init.js +1 -1
- package/src/{cli → interfaces/cli}/commands/mcp.js +69 -10
- package/src/{cli → interfaces/cli}/commands/memory.js +2 -2
- package/src/interfaces/cli/commands/model.js +136 -0
- package/src/interfaces/cli/commands/pair.js +170 -0
- package/src/interfaces/cli/commands/project-config.js +131 -0
- package/src/{cli → interfaces/cli}/commands/project.js +1 -1
- package/src/{cli → interfaces/cli}/commands/search.js +1 -1
- package/src/interfaces/cli/commands/session.js +892 -0
- package/src/interfaces/cli/commands/sessions.js +997 -0
- package/src/{cli → interfaces/cli}/commands/setup.js +98 -4
- package/src/{cli → interfaces/cli}/commands/skills.js +117 -9
- package/src/{cli → interfaces/cli}/commands/status.js +9 -1
- package/src/{cli → interfaces/cli}/commands/sys.js +96 -17
- package/src/interfaces/cli/commands/task.js +179 -0
- package/src/interfaces/cli/commands/telegram.js +366 -0
- package/src/{cli → interfaces/cli}/commands/update.js +1 -1
- package/src/interfaces/cli/commands/voice.js +258 -0
- package/src/{cli → interfaces/cli}/http.js +6 -2
- package/src/{cli → interfaces/cli}/index.js +955 -63
- package/src/interfaces/cli/postinstall.js +34 -0
- package/src/interfaces/desktop/assets/app-icon-180.png +0 -0
- package/src/interfaces/desktop/assets/app-icon-32.png +0 -0
- package/src/interfaces/desktop/assets/app-icon.png +0 -0
- package/src/interfaces/desktop/assets/apx-logo.png +0 -0
- package/src/interfaces/desktop/assets/superagent.png +0 -0
- package/src/interfaces/desktop/assets/tray-icon.png +0 -0
- package/src/interfaces/desktop/index.html +18 -0
- package/src/interfaces/desktop/main.js +652 -0
- package/src/interfaces/desktop/preload.js +48 -0
- package/src/interfaces/desktop/renderer.js +1006 -0
- package/src/interfaces/desktop/style.css +400 -0
- package/src/{mcp → interfaces/mcp-server}/index.js +2 -2
- package/src/interfaces/tui/_shims/util-which.ts +53 -0
- package/src/{tui → interfaces/tui}/app.tsx +2 -2
- package/src/{tui → interfaces/tui}/component/prompt/index.tsx +4 -1
- package/src/{tui → interfaces/tui}/context/sdk-apx.tsx +84 -16
- package/src/interfaces/tui/context/sync-apx.tsx +398 -0
- package/src/interfaces/tui/routes/session/index.tsx +368 -0
- package/src/interfaces/tui/routes/session/message-actions.tsx +58 -0
- package/src/interfaces/tui/routes/session/sidebar-apx.tsx +114 -0
- package/src/{tui → interfaces/tui}/tsconfig.json +1 -0
- package/src/{tui → interfaces/tui}/util/clipboard.ts +1 -1
- package/src/interfaces/web/README.md +102 -0
- package/src/interfaces/web/coming-soon.html +65 -0
- package/src/interfaces/web/components.json +25 -0
- package/src/interfaces/web/dist/assets/index-BDUsA6L6.css +1 -0
- package/src/interfaces/web/dist/assets/index-CfWyjPBa.js +548 -0
- package/src/interfaces/web/dist/assets/index-CfWyjPBa.js.map +1 -0
- package/src/interfaces/web/dist/favicon/dark/android-chrome-192x192.png +0 -0
- package/src/interfaces/web/dist/favicon/dark/android-chrome-512x512.png +0 -0
- package/src/interfaces/web/dist/favicon/dark/apple-touch-icon.png +0 -0
- package/src/interfaces/web/dist/favicon/dark/favicon-16x16.png +0 -0
- package/src/interfaces/web/dist/favicon/dark/favicon-32x32.png +0 -0
- package/src/interfaces/web/dist/favicon/dark/favicon-48x48.png +0 -0
- package/src/interfaces/web/dist/favicon/dark/favicon.ico +0 -0
- package/src/interfaces/web/dist/favicon/dark/favicon.webp +0 -0
- package/src/interfaces/web/dist/favicon/dark/site.webmanifest +18 -0
- package/src/interfaces/web/dist/favicon/white/android-chrome-192x192.png +0 -0
- package/src/interfaces/web/dist/favicon/white/android-chrome-512x512.png +0 -0
- package/src/interfaces/web/dist/favicon/white/apple-touch-icon.png +0 -0
- package/src/interfaces/web/dist/favicon/white/favicon-16x16.png +0 -0
- package/src/interfaces/web/dist/favicon/white/favicon-32x32.png +0 -0
- package/src/interfaces/web/dist/favicon/white/favicon-48x48.png +0 -0
- package/src/interfaces/web/dist/favicon/white/favicon.ico +0 -0
- package/src/interfaces/web/dist/favicon/white/favicon.webp +0 -0
- package/src/interfaces/web/dist/favicon/white/site.webmanifest +18 -0
- package/src/interfaces/web/dist/index.html +27 -0
- package/src/interfaces/web/dist/logo/logo_dark.webp +0 -0
- package/src/interfaces/web/dist/logo/logo_only_dark.webp +0 -0
- package/src/interfaces/web/dist/logo/logo_only_white.webp +0 -0
- package/src/interfaces/web/dist/logo/logo_vertical_dark.webp +0 -0
- package/src/interfaces/web/dist/logo/logo_vertical_white.webp +0 -0
- package/src/interfaces/web/dist/logo/logo_white.webp +0 -0
- package/src/interfaces/web/dist/modules/superagent.png +0 -0
- package/src/interfaces/web/index.html +26 -0
- package/src/interfaces/web/package-lock.json +4253 -0
- package/src/interfaces/web/package.json +55 -0
- package/src/interfaces/web/playwright.config.ts +45 -0
- package/src/interfaces/web/pnpm-lock.yaml +2946 -0
- package/src/interfaces/web/public/favicon/dark/android-chrome-192x192.png +0 -0
- package/src/interfaces/web/public/favicon/dark/android-chrome-512x512.png +0 -0
- package/src/interfaces/web/public/favicon/dark/apple-touch-icon.png +0 -0
- package/src/interfaces/web/public/favicon/dark/favicon-16x16.png +0 -0
- package/src/interfaces/web/public/favicon/dark/favicon-32x32.png +0 -0
- package/src/interfaces/web/public/favicon/dark/favicon-48x48.png +0 -0
- package/src/interfaces/web/public/favicon/dark/favicon.ico +0 -0
- package/src/interfaces/web/public/favicon/dark/favicon.webp +0 -0
- package/src/interfaces/web/public/favicon/dark/site.webmanifest +18 -0
- package/src/interfaces/web/public/favicon/white/android-chrome-192x192.png +0 -0
- package/src/interfaces/web/public/favicon/white/android-chrome-512x512.png +0 -0
- package/src/interfaces/web/public/favicon/white/apple-touch-icon.png +0 -0
- package/src/interfaces/web/public/favicon/white/favicon-16x16.png +0 -0
- package/src/interfaces/web/public/favicon/white/favicon-32x32.png +0 -0
- package/src/interfaces/web/public/favicon/white/favicon-48x48.png +0 -0
- package/src/interfaces/web/public/favicon/white/favicon.ico +0 -0
- package/src/interfaces/web/public/favicon/white/favicon.webp +0 -0
- package/src/interfaces/web/public/favicon/white/site.webmanifest +18 -0
- package/src/interfaces/web/public/logo/logo_dark.webp +0 -0
- package/src/interfaces/web/public/logo/logo_only_dark.webp +0 -0
- package/src/interfaces/web/public/logo/logo_only_white.webp +0 -0
- package/src/interfaces/web/public/logo/logo_vertical_dark.webp +0 -0
- package/src/interfaces/web/public/logo/logo_vertical_white.webp +0 -0
- package/src/interfaces/web/public/logo/logo_white.webp +0 -0
- package/src/interfaces/web/public/modules/superagent.png +0 -0
- package/src/interfaces/web/src/App.tsx +199 -0
- package/src/interfaces/web/src/components/AddProjectDialog.tsx +121 -0
- package/src/interfaces/web/src/components/ModelCombobox.tsx +96 -0
- package/src/interfaces/web/src/components/RobyBubble.tsx +213 -0
- package/src/interfaces/web/src/components/Section.tsx +44 -0
- package/src/interfaces/web/src/components/TelegramChannelDialog.tsx +97 -0
- package/src/interfaces/web/src/components/TelegramSendDialog.tsx +48 -0
- package/src/interfaces/web/src/components/Toast.tsx +84 -0
- package/src/interfaces/web/src/components/UiSelect.tsx +74 -0
- package/src/interfaces/web/src/components/chat/Composer.tsx +43 -0
- package/src/interfaces/web/src/components/chat/ContextBar.tsx +111 -0
- package/src/interfaces/web/src/components/chat/MessageBubble.tsx +95 -0
- package/src/interfaces/web/src/components/chat/MessageList.tsx +35 -0
- package/src/interfaces/web/src/components/chat/ModelPicker.tsx +145 -0
- package/src/interfaces/web/src/components/chat/ToolCall.tsx +141 -0
- package/src/interfaces/web/src/components/code/CodeChangesTab.tsx +87 -0
- package/src/interfaces/web/src/components/code/CodeComposer.tsx +87 -0
- package/src/interfaces/web/src/components/code/CodeContextTab.tsx +83 -0
- package/src/interfaces/web/src/components/code/CodeProjectPicker.tsx +39 -0
- package/src/interfaces/web/src/components/code/CodeSessionList.tsx +97 -0
- package/src/interfaces/web/src/components/code/CodeSidePanel.tsx +44 -0
- package/src/interfaces/web/src/components/code/CodeToolTrail.tsx +29 -0
- package/src/interfaces/web/src/components/code/DiffView.tsx +67 -0
- package/src/interfaces/web/src/components/common/Qr.tsx +27 -0
- package/src/interfaces/web/src/components/common/TabLayout.tsx +46 -0
- package/src/interfaces/web/src/components/common/TabNav.tsx +113 -0
- package/src/interfaces/web/src/components/config/ConfigTabsEditor.tsx +202 -0
- package/src/interfaces/web/src/components/config/GlobalConfigEditor.tsx +42 -0
- package/src/interfaces/web/src/components/config/global-config-sections.ts +60 -0
- package/src/interfaces/web/src/components/config/project-config-sections.ts +58 -0
- package/src/interfaces/web/src/components/deck/DaemonCard.tsx +58 -0
- package/src/interfaces/web/src/components/deck/DesktopGroup.tsx +33 -0
- package/src/interfaces/web/src/components/deck/WidgetRow.tsx +100 -0
- package/src/interfaces/web/src/components/layout/Logo.tsx +59 -0
- package/src/interfaces/web/src/components/layout/ProjectAvatar.tsx +116 -0
- package/src/interfaces/web/src/components/layout/ProjectSidebar.tsx +151 -0
- package/src/interfaces/web/src/components/settings/AdvancedPanel.tsx +45 -0
- package/src/interfaces/web/src/components/settings/AppearancePanel.tsx +72 -0
- package/src/interfaces/web/src/components/settings/DefaultRouterCard.tsx +232 -0
- package/src/interfaces/web/src/components/settings/DevicesPanel.tsx +60 -0
- package/src/interfaces/web/src/components/settings/EnginesPanel.tsx +127 -0
- package/src/interfaces/web/src/components/settings/IdentityPanel.tsx +69 -0
- package/src/interfaces/web/src/components/settings/MemoryPanel.tsx +226 -0
- package/src/interfaces/web/src/components/settings/PairDeviceDialog.tsx +175 -0
- package/src/interfaces/web/src/components/settings/SuperAgentPanel.tsx +93 -0
- package/src/interfaces/web/src/components/settings/TelegramChannelsPanel.tsx +90 -0
- package/src/interfaces/web/src/components/settings/TelegramContactsPanel.tsx +101 -0
- package/src/interfaces/web/src/components/settings/TelegramGlobalPanel.tsx +100 -0
- package/src/interfaces/web/src/components/settings/TelegramRolesPanel.tsx +108 -0
- package/src/interfaces/web/src/components/settings/TelegramSettingsTabs.tsx +55 -0
- package/src/interfaces/web/src/components/settings/providers/ProviderCard.tsx +95 -0
- package/src/interfaces/web/src/components/settings/providers/ProviderModal.tsx +405 -0
- package/src/interfaces/web/src/components/settings/providers/typeStyles.ts +155 -0
- package/src/interfaces/web/src/components/settings/providers/types.ts +26 -0
- package/src/interfaces/web/src/components/ui/accordion.tsx +72 -0
- package/src/interfaces/web/src/components/ui/alert-dialog.tsx +187 -0
- package/src/interfaces/web/src/components/ui/alert.tsx +76 -0
- package/src/interfaces/web/src/components/ui/aspect-ratio.tsx +22 -0
- package/src/interfaces/web/src/components/ui/avatar.tsx +107 -0
- package/src/interfaces/web/src/components/ui/badge.tsx +52 -0
- package/src/interfaces/web/src/components/ui/breadcrumb.tsx +125 -0
- package/src/interfaces/web/src/components/ui/button-group.tsx +87 -0
- package/src/interfaces/web/src/components/ui/button.tsx +58 -0
- package/src/interfaces/web/src/components/ui/calendar.tsx +221 -0
- package/src/interfaces/web/src/components/ui/card.tsx +103 -0
- package/src/interfaces/web/src/components/ui/carousel.tsx +242 -0
- package/src/interfaces/web/src/components/ui/chart.tsx +371 -0
- package/src/interfaces/web/src/components/ui/chat-input.tsx +122 -0
- package/src/interfaces/web/src/components/ui/checkbox.tsx +29 -0
- package/src/interfaces/web/src/components/ui/collapsible.tsx +19 -0
- package/src/interfaces/web/src/components/ui/combobox.tsx +295 -0
- package/src/interfaces/web/src/components/ui/command.tsx +196 -0
- package/src/interfaces/web/src/components/ui/context-menu.tsx +271 -0
- package/src/interfaces/web/src/components/ui/dialog.tsx +158 -0
- package/src/interfaces/web/src/components/ui/direction.tsx +4 -0
- package/src/interfaces/web/src/components/ui/drawer.tsx +134 -0
- package/src/interfaces/web/src/components/ui/dropdown-menu.tsx +266 -0
- package/src/interfaces/web/src/components/ui/empty.tsx +104 -0
- package/src/interfaces/web/src/components/ui/field.tsx +236 -0
- package/src/interfaces/web/src/components/ui/hover-card.tsx +51 -0
- package/src/interfaces/web/src/components/ui/input-group.tsx +158 -0
- package/src/interfaces/web/src/components/ui/input-otp.tsx +85 -0
- package/src/interfaces/web/src/components/ui/input.tsx +20 -0
- package/src/interfaces/web/src/components/ui/item.tsx +201 -0
- package/src/interfaces/web/src/components/ui/kbd.tsx +26 -0
- package/src/interfaces/web/src/components/ui/label.tsx +20 -0
- package/src/interfaces/web/src/components/ui/menubar.tsx +280 -0
- package/src/interfaces/web/src/components/ui/native-select.tsx +61 -0
- package/src/interfaces/web/src/components/ui/navigation-menu.tsx +168 -0
- package/src/interfaces/web/src/components/ui/pagination.tsx +130 -0
- package/src/interfaces/web/src/components/ui/popover.tsx +88 -0
- package/src/interfaces/web/src/components/ui/progress.tsx +83 -0
- package/src/interfaces/web/src/components/ui/radio-group.tsx +36 -0
- package/src/interfaces/web/src/components/ui/resizable.tsx +50 -0
- package/src/interfaces/web/src/components/ui/scroll-area.tsx +53 -0
- package/src/interfaces/web/src/components/ui/select.tsx +201 -0
- package/src/interfaces/web/src/components/ui/separator.tsx +23 -0
- package/src/interfaces/web/src/components/ui/sheet.tsx +138 -0
- package/src/interfaces/web/src/components/ui/sidebar.tsx +723 -0
- package/src/interfaces/web/src/components/ui/skeleton.tsx +13 -0
- package/src/interfaces/web/src/components/ui/slider.tsx +52 -0
- package/src/interfaces/web/src/components/ui/sonner.tsx +49 -0
- package/src/interfaces/web/src/components/ui/spinner.tsx +10 -0
- package/src/interfaces/web/src/components/ui/switch.tsx +30 -0
- package/src/interfaces/web/src/components/ui/table.tsx +116 -0
- package/src/interfaces/web/src/components/ui/tabs.tsx +72 -0
- package/src/interfaces/web/src/components/ui/textarea.tsx +18 -0
- package/src/interfaces/web/src/components/ui/tip.tsx +21 -0
- package/src/interfaces/web/src/components/ui/toggle-group.tsx +87 -0
- package/src/interfaces/web/src/components/ui/toggle.tsx +45 -0
- package/src/interfaces/web/src/components/ui/tooltip.tsx +64 -0
- package/src/interfaces/web/src/components/ui.tsx +211 -0
- package/src/interfaces/web/src/components/voice/VoiceProviderList.tsx +197 -0
- package/src/interfaces/web/src/components/voice/VoiceProviderModal.tsx +213 -0
- package/src/interfaces/web/src/components/voice/VoiceSttCard.tsx +72 -0
- package/src/interfaces/web/src/components/voice/VoiceTestCard.tsx +112 -0
- package/src/interfaces/web/src/components/voice/useTtsPlayer.ts +59 -0
- package/src/interfaces/web/src/constants/index.ts +91 -0
- package/src/interfaces/web/src/hooks/use-mobile.ts +19 -0
- package/src/interfaces/web/src/hooks/useChat.ts +276 -0
- package/src/interfaces/web/src/hooks/useDaemonStatus.ts +12 -0
- package/src/interfaces/web/src/hooks/useDevices.ts +12 -0
- package/src/interfaces/web/src/hooks/useEngines.ts +10 -0
- package/src/interfaces/web/src/hooks/useGlobalConfig.ts +24 -0
- package/src/interfaces/web/src/hooks/useIdentity.ts +16 -0
- package/src/interfaces/web/src/hooks/useProjects.ts +27 -0
- package/src/interfaces/web/src/hooks/useTelegram.ts +35 -0
- package/src/interfaces/web/src/hooks/useTheme.tsx +57 -0
- package/src/interfaces/web/src/hooks/useTokenBootstrap.ts +122 -0
- package/src/interfaces/web/src/i18n/en.ts +767 -0
- package/src/interfaces/web/src/i18n/es.ts +770 -0
- package/src/interfaces/web/src/i18n/index.ts +86 -0
- package/src/interfaces/web/src/lib/api/admin.ts +30 -0
- package/src/interfaces/web/src/lib/api/agents.ts +46 -0
- package/src/interfaces/web/src/lib/api/code.ts +122 -0
- package/src/interfaces/web/src/lib/api/conversations.ts +16 -0
- package/src/interfaces/web/src/lib/api/deck.ts +106 -0
- package/src/interfaces/web/src/lib/api/desktop.ts +54 -0
- package/src/interfaces/web/src/lib/api/embeddings.ts +44 -0
- package/src/interfaces/web/src/lib/api/engines.ts +17 -0
- package/src/interfaces/web/src/lib/api/filesystem.ts +12 -0
- package/src/interfaces/web/src/lib/api/health.ts +6 -0
- package/src/interfaces/web/src/lib/api/identity.ts +7 -0
- package/src/interfaces/web/src/lib/api/mcps.ts +29 -0
- package/src/interfaces/web/src/lib/api/messages.ts +24 -0
- package/src/interfaces/web/src/lib/api/projects.ts +29 -0
- package/src/interfaces/web/src/lib/api/routines.ts +14 -0
- package/src/interfaces/web/src/lib/api/sessions.ts +16 -0
- package/src/interfaces/web/src/lib/api/super_agent.ts +29 -0
- package/src/interfaces/web/src/lib/api/tasks.ts +19 -0
- package/src/interfaces/web/src/lib/api/telegram.ts +57 -0
- package/src/interfaces/web/src/lib/api/tools.ts +13 -0
- package/src/interfaces/web/src/lib/api/voice.ts +169 -0
- package/src/interfaces/web/src/lib/api.ts +48 -0
- package/src/interfaces/web/src/lib/cn.ts +6 -0
- package/src/interfaces/web/src/lib/code-context.ts +83 -0
- package/src/interfaces/web/src/lib/config-values.ts +29 -0
- package/src/interfaces/web/src/lib/device.ts +10 -0
- package/src/interfaces/web/src/lib/http.ts +104 -0
- package/src/interfaces/web/src/lib/secrets.ts +15 -0
- package/src/interfaces/web/src/lib/utils.ts +6 -0
- package/src/interfaces/web/src/main.tsx +16 -0
- package/src/interfaces/web/src/screens/ApxAdminScreen.tsx +174 -0
- package/src/interfaces/web/src/screens/PairingScreen.tsx +105 -0
- package/src/interfaces/web/src/screens/ProjectScreen.tsx +178 -0
- package/src/interfaces/web/src/screens/SettingsScreen.tsx +111 -0
- package/src/interfaces/web/src/screens/base/AgentDefaultsTab.tsx +274 -0
- package/src/interfaces/web/src/screens/base/ComingSoon.tsx +16 -0
- package/src/interfaces/web/src/screens/base/GlobalTasksTab.tsx +53 -0
- package/src/interfaces/web/src/screens/base/LogsTab.tsx +188 -0
- package/src/interfaces/web/src/screens/base/ModelsTab.tsx +13 -0
- package/src/interfaces/web/src/screens/base/SessionsTab.tsx +58 -0
- package/src/interfaces/web/src/screens/base/WorkspacesTab.tsx +49 -0
- package/src/interfaces/web/src/screens/modules/CodeScreen.tsx +295 -0
- package/src/interfaces/web/src/screens/modules/DeckScreen.tsx +173 -0
- package/src/interfaces/web/src/screens/modules/DesktopScreen.tsx +304 -0
- package/src/interfaces/web/src/screens/modules/VoiceScreen.tsx +174 -0
- package/src/interfaces/web/src/screens/project/AgentBrainGraph.tsx +152 -0
- package/src/interfaces/web/src/screens/project/AgentDetailScreen.tsx +455 -0
- package/src/interfaces/web/src/screens/project/AgentsTab.tsx +364 -0
- package/src/interfaces/web/src/screens/project/ChatTab.tsx +198 -0
- package/src/interfaces/web/src/screens/project/ConfigTab.tsx +94 -0
- package/src/interfaces/web/src/screens/project/McpsTab.tsx +149 -0
- package/src/interfaces/web/src/screens/project/MemoriesTab.tsx +134 -0
- package/src/interfaces/web/src/screens/project/Overview.tsx +37 -0
- package/src/interfaces/web/src/screens/project/RoutinesTab.tsx +386 -0
- package/src/interfaces/web/src/screens/project/TasksTab.tsx +116 -0
- package/src/interfaces/web/src/screens/project/TelegramTab.tsx +126 -0
- package/src/interfaces/web/src/screens/project/ThreadsTab.tsx +100 -0
- package/src/interfaces/web/src/styles.css +128 -0
- package/src/interfaces/web/src/types/daemon.ts +289 -0
- package/src/interfaces/web/tailwind.config.js +53 -0
- package/src/interfaces/web/tsconfig.json +24 -0
- package/src/interfaces/web/vite.config.ts +50 -0
- package/src/cli/commands/exec.js +0 -56
- package/src/cli/commands/overlay.js +0 -253
- package/src/cli/commands/session.js +0 -395
- package/src/cli/commands/sessions.js +0 -517
- package/src/cli/commands/telegram.js +0 -77
- package/src/cli/postinstall.js +0 -75
- package/src/cli-ts/commands/agent.ts +0 -173
- package/src/cli-ts/commands/chat.ts +0 -119
- package/src/cli-ts/commands/daemon.ts +0 -112
- package/src/cli-ts/commands/exec.ts +0 -109
- package/src/cli-ts/commands/mcp.ts +0 -235
- package/src/cli-ts/commands/session.ts +0 -224
- package/src/cli-ts/commands/status.ts +0 -61
- package/src/cli-ts/http.ts +0 -36
- package/src/cli-ts/index.ts +0 -73
- package/src/cli-ts/ui.ts +0 -107
- package/src/daemon/api.js +0 -1558
- package/src/daemon/engines/gemini.js +0 -56
- package/src/daemon/engines/openai.js +0 -79
- package/src/daemon/mcp-sources.js +0 -114
- package/src/daemon/super-agent-tools/index.js +0 -84
- package/src/daemon/super-agent-tools.js +0 -1
- package/src/daemon/super-agent.js +0 -541
- package/src/overlay/index.html +0 -44
- package/src/overlay/main.js +0 -480
- package/src/overlay/preload.js +0 -34
- package/src/overlay/renderer.js +0 -371
- package/src/overlay/style.css +0 -250
- package/src/tui/context/sync-apx.tsx +0 -284
- package/src/tui/routes/session/index.tsx +0 -274
- package/src/tui/routes/session/sidebar-apx.tsx +0 -90
- /package/src/{daemon → core}/tools/browser.js +0 -0
- /package/src/{daemon → core}/tools/fetch.js +0 -0
- /package/src/{daemon → core}/tools/glob.js +0 -0
- /package/src/{daemon → core}/tools/grep.js +0 -0
- /package/src/{daemon → core}/tools/registry.js +0 -0
- /package/src/{daemon → core}/tools/search.js +0 -0
- /package/src/{daemon → host/daemon}/conversations.js +0 -0
- /package/src/{daemon → host/daemon}/env-detect.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/_spawn.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/aider.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/claude-code.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/codex.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/cursor-agent.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/gemini-cli.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/index.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/opencode.js +0 -0
- /package/src/{daemon → host/daemon}/runtimes/qwen-code.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/call-mcp.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/edit-file.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/list-files.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/list-mcps.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/list-projects.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/list-skills.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/load-skill.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/read-agent-memory.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/read-file.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/run-shell.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/search-files.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/transcribe-audio.js +0 -0
- /package/src/{daemon → host/daemon}/super-agent-tools/tools/write-file.js +0 -0
- /package/src/{daemon → host/daemon}/thinking.js +0 -0
- /package/src/{daemon → host/daemon}/whisper-server.py +0 -0
- /package/src/{daemon → host/daemon}/whisper-transcribe.py +0 -0
- /package/src/{cli → interfaces/cli}/commands/a2a.js +0 -0
- /package/src/{cli → interfaces/cli}/commands/artifact.js +0 -0
- /package/src/{cli → interfaces/cli}/commands/chat.js +0 -0
- /package/src/{cli → interfaces/cli}/commands/log.js +0 -0
- /package/src/{cli → interfaces/cli}/commands/messages.js +0 -0
- /package/src/{cli → interfaces/cli}/commands/plugins.js +0 -0
- /package/src/{cli → interfaces/cli}/commands/routine.js +0 -0
- /package/src/{cli → interfaces/cli}/commands/runtime.js +0 -0
- /package/src/{cli → interfaces/cli}/terminal-chat/renderer.js +0 -0
- /package/src/{overlay → interfaces/desktop}/package.json +0 -0
- /package/src/{tui → interfaces/tui}/_shims/cli-error.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/cli-logo.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/cli-ui.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/config-console-state.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/core-any.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/core-binary.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/core-flag.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/core-log.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/lsp-language.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/opencode-any.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/opencode-sdk-v2.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/plugin-tui.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/prompt-display.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/provider-provider.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/session-retry.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/session-schema.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/session-session.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/snapshot.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/tool-any.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/util-error.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/util-filesystem.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/util-format.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/util-iife.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/util-locale.ts +0 -0
- /package/src/{tui → interfaces/tui}/_shims/util-process.ts +0 -0
- /package/src/{tui → interfaces/tui}/asset/charge.wav +0 -0
- /package/src/{tui → interfaces/tui}/asset/pulse-a.wav +0 -0
- /package/src/{tui → interfaces/tui}/asset/pulse-b.wav +0 -0
- /package/src/{tui → interfaces/tui}/asset/pulse-c.wav +0 -0
- /package/src/{tui → interfaces/tui}/attach.ts +0 -0
- /package/src/{tui → interfaces/tui}/component/bg-pulse-render.ts +0 -0
- /package/src/{tui → interfaces/tui}/component/bg-pulse.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/border.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-agent.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-console-org.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-mcp.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-model.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-provider.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-retry-action.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-session-delete-failed.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-session-list.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-session-rename.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-skill.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-stash.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-status.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-tag.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-theme-list.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-variant.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-workspace-create.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-workspace-file-changes.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/dialog-workspace-unavailable.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/error-component.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/logo.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/plugin-route-missing.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/prompt/autocomplete.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/prompt/cwd.ts +0 -0
- /package/src/{tui → interfaces/tui}/component/prompt/frecency.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/prompt/history.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/prompt/part.ts +0 -0
- /package/src/{tui → interfaces/tui}/component/prompt/stash.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/prompt/traits.ts +0 -0
- /package/src/{tui → interfaces/tui}/component/spinner.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/startup-loading.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/todo-item.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/use-connected.tsx +0 -0
- /package/src/{tui → interfaces/tui}/component/workspace-label.tsx +0 -0
- /package/src/{tui → interfaces/tui}/config/cwd.ts +0 -0
- /package/src/{tui → interfaces/tui}/config/keybind.ts +0 -0
- /package/src/{tui → interfaces/tui}/config/tui-migrate.ts +0 -0
- /package/src/{tui → interfaces/tui}/config/tui-schema.ts +0 -0
- /package/src/{tui → interfaces/tui}/config/tui.ts +0 -0
- /package/src/{tui → interfaces/tui}/context/aggregate-failures.ts +0 -0
- /package/src/{tui → interfaces/tui}/context/args.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/command-palette.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/directory.ts +0 -0
- /package/src/{tui → interfaces/tui}/context/editor-zed.ts +0 -0
- /package/src/{tui → interfaces/tui}/context/editor.ts +0 -0
- /package/src/{tui → interfaces/tui}/context/event-apx.ts +0 -0
- /package/src/{tui → interfaces/tui}/context/event.ts +0 -0
- /package/src/{tui → interfaces/tui}/context/exit.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/helper.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/kv.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/local.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/path-format.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/project-apx.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/project.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/prompt.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/route.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/sdk.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/sync-v2.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/sync.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/aura.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/ayu.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/carbonfox.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/catppuccin-frappe.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/catppuccin-macchiato.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/catppuccin.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/cobalt2.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/cursor.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/dracula.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/everforest.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/flexoki.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/github.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/gruvbox.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/kanagawa.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/lucent-orng.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/material.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/matrix.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/mercury.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/monokai.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/nightowl.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/nord.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/one-dark.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/opencode.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/orng.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/osaka-jade.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/palenight.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/rosepine.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/solarized.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/synthwave84.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/tokyonight.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/vercel.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/vesper.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme/zenburn.json +0 -0
- /package/src/{tui → interfaces/tui}/context/theme.tsx +0 -0
- /package/src/{tui → interfaces/tui}/context/tui-config.tsx +0 -0
- /package/src/{tui → interfaces/tui}/event.ts +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/home/footer.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/home/tips-view.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/home/tips.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/sidebar/context.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/sidebar/files.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/sidebar/footer.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/sidebar/lsp.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/sidebar/mcp.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/sidebar/todo.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/system/plugins.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/system/session-v2.tsx +0 -0
- /package/src/{tui → interfaces/tui}/feature-plugins/system/which-key.tsx +0 -0
- /package/src/{tui → interfaces/tui}/keymap.tsx +0 -0
- /package/src/{tui → interfaces/tui}/layer.ts +0 -0
- /package/src/{tui → interfaces/tui}/plugin/api.tsx +0 -0
- /package/src/{tui → interfaces/tui}/plugin/command-shim.ts +0 -0
- /package/src/{tui → interfaces/tui}/plugin/internal.ts +0 -0
- /package/src/{tui → interfaces/tui}/plugin/runtime.ts +0 -0
- /package/src/{tui → interfaces/tui}/plugin/slots.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/home.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/dialog-fork-from-timeline.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/dialog-message.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/dialog-subagent.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/dialog-timeline.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/footer.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/permission.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/question.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/sidebar.tsx +0 -0
- /package/src/{tui → interfaces/tui}/routes/session/subagent-footer.tsx +0 -0
- /package/src/{tui → interfaces/tui}/run.ts +0 -0
- /package/src/{tui → interfaces/tui}/thread.ts +0 -0
- /package/src/{tui → interfaces/tui}/ui/dialog-alert.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/dialog-confirm.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/dialog-export-options.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/dialog-help.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/dialog-prompt.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/dialog-select.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/dialog.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/link.tsx +0 -0
- /package/src/{tui → interfaces/tui}/ui/spinner.ts +0 -0
- /package/src/{tui → interfaces/tui}/ui/toast.tsx +0 -0
- /package/src/{tui → interfaces/tui}/util/editor.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/model.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/provider-origin.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/revert-diff.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/scroll.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/selection.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/signal.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/sound.ts +0 -0
- /package/src/{tui → interfaces/tui}/util/transcript.ts +0 -0
- /package/src/{tui → interfaces/tui}/validate-session.ts +0 -0
- /package/src/{tui → interfaces/tui}/win32.ts +0 -0
- /package/src/{tui → interfaces/tui}/worker.ts +0 -0
|
@@ -19,6 +19,8 @@ import {
|
|
|
19
19
|
cmdAgentImport,
|
|
20
20
|
cmdAgentVaultList,
|
|
21
21
|
cmdAgentVaultAdd,
|
|
22
|
+
cmdAgentVaultRm,
|
|
23
|
+
cmdAgentVaultRestore,
|
|
22
24
|
} from "./commands/agent.js";
|
|
23
25
|
import { cmdMemory } from "./commands/memory.js";
|
|
24
26
|
import {
|
|
@@ -31,8 +33,10 @@ import {
|
|
|
31
33
|
cmdSessionCloseStale,
|
|
32
34
|
cmdSessionResume,
|
|
33
35
|
cmdSessionCompact,
|
|
36
|
+
cmdSessionSummary,
|
|
37
|
+
cmdSessionAsk,
|
|
34
38
|
} from "./commands/session.js";
|
|
35
|
-
import { cmdSessionsList } from "./commands/sessions.js";
|
|
39
|
+
import { cmdSessionsList, cmdSessionFind } from "./commands/sessions.js";
|
|
36
40
|
import {
|
|
37
41
|
cmdMcpList,
|
|
38
42
|
cmdMcpAdd,
|
|
@@ -46,8 +50,10 @@ import {
|
|
|
46
50
|
import {
|
|
47
51
|
cmdDaemonStart,
|
|
48
52
|
cmdDaemonStop,
|
|
53
|
+
cmdDaemonRestart,
|
|
49
54
|
cmdDaemonStatus,
|
|
50
55
|
cmdDaemonLogs,
|
|
56
|
+
cmdDaemonReload,
|
|
51
57
|
} from "./commands/daemon.js";
|
|
52
58
|
import {
|
|
53
59
|
cmdTelegramSend,
|
|
@@ -55,7 +61,24 @@ import {
|
|
|
55
61
|
cmdTelegramSetup,
|
|
56
62
|
cmdTelegramStart,
|
|
57
63
|
cmdTelegramStop,
|
|
64
|
+
cmdTelegramChannelAdd,
|
|
65
|
+
cmdTelegramChannelList,
|
|
66
|
+
cmdTelegramChannelShow,
|
|
67
|
+
cmdTelegramChannelSet,
|
|
68
|
+
cmdTelegramChannelUnset,
|
|
69
|
+
cmdTelegramChannelRemove,
|
|
70
|
+
cmdTelegramContacts,
|
|
71
|
+
cmdTelegramContactRemove,
|
|
72
|
+
cmdTelegramRole,
|
|
73
|
+
cmdTelegramRoles,
|
|
74
|
+
cmdTelegramOwner,
|
|
58
75
|
} from "./commands/telegram.js";
|
|
76
|
+
import {
|
|
77
|
+
cmdProjectConfigShow,
|
|
78
|
+
cmdProjectConfigSet,
|
|
79
|
+
cmdProjectConfigUnset,
|
|
80
|
+
cmdProjectConfigEdit,
|
|
81
|
+
} from "./commands/project-config.js";
|
|
59
82
|
import { cmdMessagesTail, cmdMessagesSearch, cmdMessagesChat } from "./commands/messages.js";
|
|
60
83
|
import { cmdLog } from "./commands/log.js";
|
|
61
84
|
import { cmdSearch } from "./commands/search.js";
|
|
@@ -75,15 +98,18 @@ import {
|
|
|
75
98
|
cmdPermission,
|
|
76
99
|
} from "./commands/config.js";
|
|
77
100
|
import { cmdPluginsList, cmdPluginStatus } from "./commands/plugins.js";
|
|
78
|
-
import {
|
|
79
|
-
import {
|
|
101
|
+
import { cmdDesktopStart, cmdDesktopStop, cmdDesktopStatus, cmdDesktopInstall, cmdDesktopUninstall } from "./commands/desktop.js";
|
|
102
|
+
import { cmdVoiceSay, cmdVoiceListen, cmdVoiceProviders } from "./commands/voice.js";
|
|
103
|
+
import { cmdSkillsAdd, cmdSkillsList, cmdSkillsStatus, cmdSkillsSync } from "./commands/skills.js";
|
|
80
104
|
import { cmdIdentity } from "./commands/identity.js";
|
|
81
105
|
import { cmdCommandList, cmdCommandShow } from "./commands/command.js";
|
|
82
106
|
import { cmdUpdate } from "./commands/update.js";
|
|
83
107
|
import { cmdSetup } from "./commands/setup.js";
|
|
84
108
|
import { cmdStatus } from "./commands/status.js";
|
|
85
|
-
import {
|
|
86
|
-
import {
|
|
109
|
+
import { cmdModel } from "./commands/model.js";
|
|
110
|
+
import { cmdPair, cmdPairWeb, cmdPairList, cmdPairRevoke } from "./commands/pair.js";
|
|
111
|
+
import { checkForUpdate } from "../../core/update-check.js";
|
|
112
|
+
import { mascot } from "../../core/mascot.js";
|
|
87
113
|
import {
|
|
88
114
|
cmdRoutineList,
|
|
89
115
|
cmdRoutineGet,
|
|
@@ -100,11 +126,20 @@ import {
|
|
|
100
126
|
cmdArtifactShow,
|
|
101
127
|
cmdArtifactRemove,
|
|
102
128
|
} from "./commands/artifact.js";
|
|
129
|
+
import {
|
|
130
|
+
cmdTaskAdd,
|
|
131
|
+
cmdTaskList,
|
|
132
|
+
cmdTaskShow,
|
|
133
|
+
cmdTaskDone,
|
|
134
|
+
cmdTaskDrop,
|
|
135
|
+
cmdTaskReopen,
|
|
136
|
+
cmdTaskPatch,
|
|
137
|
+
} from "./commands/task.js";
|
|
103
138
|
|
|
104
139
|
const __filename = fileURLToPath(import.meta.url);
|
|
105
140
|
const __dirname = path.dirname(__filename);
|
|
106
141
|
const VERSION = JSON.parse(
|
|
107
|
-
fs.readFileSync(path.join(__dirname, "..", "..", "package.json"), "utf8")
|
|
142
|
+
fs.readFileSync(path.join(__dirname, "..", "..", "..", "package.json"), "utf8")
|
|
108
143
|
).version;
|
|
109
144
|
|
|
110
145
|
// ── ANSI helpers (help only) ─────────────────────────────────────────────────
|
|
@@ -123,13 +158,14 @@ const hCmd = (cmd, pad, desc) => ` ${H.WH}${cmd.padEnd(pad)}${H.R} ${H.DI}${d
|
|
|
123
158
|
const hSub = (sub, pad, desc) => ` ${H.CY}${sub.padEnd(pad)}${H.R} ${H.DI}${desc}${H.R}`;
|
|
124
159
|
const hFlag = (f, pad, desc) => ` ${H.YE}${f.padEnd(pad)}${H.R} ${H.DI}${desc}${H.R}`;
|
|
125
160
|
|
|
126
|
-
const topic = ({ title, summary, usage = [], commands = [], options = [], examples = [] }) => ({
|
|
161
|
+
const topic = ({ title, summary, usage = [], commands = [], options = [], examples = [], notes = [] }) => ({
|
|
127
162
|
title,
|
|
128
163
|
summary,
|
|
129
164
|
usage,
|
|
130
165
|
commands,
|
|
131
166
|
options,
|
|
132
167
|
examples,
|
|
168
|
+
notes,
|
|
133
169
|
});
|
|
134
170
|
|
|
135
171
|
const HELP_TOPICS = new Map(Object.entries({
|
|
@@ -210,6 +246,56 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
210
246
|
usage: ["apx project rebuild [id]"],
|
|
211
247
|
examples: ["apx project rebuild", "apx project rebuild default"],
|
|
212
248
|
}),
|
|
249
|
+
"project config": topic({
|
|
250
|
+
title: "apx project config",
|
|
251
|
+
summary: "Read / write the per-project config (.apc/config.json) via the daemon API.",
|
|
252
|
+
usage: ["apx project config <show|set|unset|edit> <project> [args]"],
|
|
253
|
+
commands: [
|
|
254
|
+
["show <project>", "Print effective + project_only config. Use --key dotted.key for one value."],
|
|
255
|
+
["set <project> <key> <value>", "Set a dotted key in the project config (PATCH set)."],
|
|
256
|
+
["unset <project> <key>", "Remove a dotted key from the project config (PATCH unset)."],
|
|
257
|
+
["edit <project>", "Open the project_only config in $EDITOR; full replace on save."],
|
|
258
|
+
],
|
|
259
|
+
options: [
|
|
260
|
+
["--key <dotted.key>", "Limit `show` to one key — prints effective and project_only side by side."],
|
|
261
|
+
["--json", "Emit JSON instead of human-readable lines (show --key only)."],
|
|
262
|
+
],
|
|
263
|
+
examples: [
|
|
264
|
+
"apx project config show iacrmar",
|
|
265
|
+
"apx project config show iacrmar --key super_agent.model",
|
|
266
|
+
"apx project config set iacrmar super_agent.model groq:llama-3.3-70b-versatile",
|
|
267
|
+
"apx project config unset iacrmar super_agent.model",
|
|
268
|
+
"apx project config edit iacrmar",
|
|
269
|
+
],
|
|
270
|
+
}),
|
|
271
|
+
"project config show": topic({
|
|
272
|
+
title: "apx project config show",
|
|
273
|
+
summary: "Print the effective and project_only config for a project.",
|
|
274
|
+
usage: ["apx project config show <project> [--key dotted.key] [--json]"],
|
|
275
|
+
options: [
|
|
276
|
+
["--key <dotted.key>", "Print just one key (effective + project_only)."],
|
|
277
|
+
["--json", "JSON output (only with --key)."],
|
|
278
|
+
],
|
|
279
|
+
examples: ["apx project config show iacrmar", "apx project config show iacrmar --key super_agent.model"],
|
|
280
|
+
}),
|
|
281
|
+
"project config set": topic({
|
|
282
|
+
title: "apx project config set",
|
|
283
|
+
summary: "Set a dotted-key value in .apc/config.json (PATCH).",
|
|
284
|
+
usage: ["apx project config set <project> <dotted.key> <value>"],
|
|
285
|
+
examples: ["apx project config set iacrmar super_agent.model groq:llama-3.3-70b-versatile"],
|
|
286
|
+
}),
|
|
287
|
+
"project config unset": topic({
|
|
288
|
+
title: "apx project config unset",
|
|
289
|
+
summary: "Remove a dotted-key from .apc/config.json (PATCH unset).",
|
|
290
|
+
usage: ["apx project config unset <project> <dotted.key>"],
|
|
291
|
+
examples: ["apx project config unset iacrmar super_agent.model"],
|
|
292
|
+
}),
|
|
293
|
+
"project config edit": topic({
|
|
294
|
+
title: "apx project config edit",
|
|
295
|
+
summary: "Open the project_only config in $EDITOR. Saves with PUT on exit.",
|
|
296
|
+
usage: ["apx project config edit <project>"],
|
|
297
|
+
examples: ["apx project config edit iacrmar"],
|
|
298
|
+
}),
|
|
213
299
|
agent: topic({
|
|
214
300
|
title: "apx agent",
|
|
215
301
|
summary: "Create, inspect, import, and vault agent definitions.",
|
|
@@ -219,8 +305,10 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
219
305
|
["list | ls", "List project agents."],
|
|
220
306
|
["get | show <slug>", "Print one agent definition."],
|
|
221
307
|
["import <slug>", "Import an agent template from ~/.apx/agents."],
|
|
222
|
-
["vault list | ls", "List
|
|
223
|
-
["vault add <slug>", "Create
|
|
308
|
+
["vault list | ls", "List vault templates (bundled defaults + your overrides)."],
|
|
309
|
+
["vault add <slug>", "Create a new vault template in the user layer (~/.apx/agents/)."],
|
|
310
|
+
["vault rm <slug>", "Delete a vault template (tombstones the bundled default so it stays hidden)."],
|
|
311
|
+
["vault restore <slug>", "Lift a tombstone so a previously-removed bundled default is visible again."],
|
|
224
312
|
],
|
|
225
313
|
examples: ["apx agent add reviewer --role Reviewer --model gpt-5.2", "apx agent list"],
|
|
226
314
|
}),
|
|
@@ -289,6 +377,18 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
289
377
|
],
|
|
290
378
|
examples: ["apx agent vault add reviewer --role Reviewer --model gpt-5.2"],
|
|
291
379
|
}),
|
|
380
|
+
"agent vault rm": topic({
|
|
381
|
+
title: "apx agent vault rm",
|
|
382
|
+
summary: "Delete a vault template. Bundled defaults are tombstoned, not erased; restore them with `apx agent vault restore`.",
|
|
383
|
+
usage: ["apx agent vault rm <slug>"],
|
|
384
|
+
examples: ["apx agent vault rm tessa-qa"],
|
|
385
|
+
}),
|
|
386
|
+
"agent vault restore": topic({
|
|
387
|
+
title: "apx agent vault restore",
|
|
388
|
+
summary: "Lift a tombstone so a previously-removed bundled default is visible again.",
|
|
389
|
+
usage: ["apx agent vault restore <slug>"],
|
|
390
|
+
examples: ["apx agent vault restore tessa-qa"],
|
|
391
|
+
}),
|
|
292
392
|
identity: topic({
|
|
293
393
|
title: "apx identity",
|
|
294
394
|
summary: "Read or edit APX profile identity fields.",
|
|
@@ -401,8 +501,45 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
401
501
|
["close-stale", "Auto-close stale active sessions."],
|
|
402
502
|
["resume <id>", "Show APC session and optional external transcript summary."],
|
|
403
503
|
["compact <slug>", "Compact latest or selected conversation into summary."],
|
|
504
|
+
["find | search <text>", "Find sessions by title (cross-engine). --deep also searches content."],
|
|
505
|
+
["summary <id>", "LLM summary of any session by id (alias for resume --summary)."],
|
|
506
|
+
["ask <id> \"<q>\"", "Ask a question about a session; map-reduces large transcripts."],
|
|
507
|
+
],
|
|
508
|
+
examples: ["apx session find \"mejorar interfaz web\"", "apx session ask 019abc... \"¿qué cambios al sidebar?\""],
|
|
509
|
+
}),
|
|
510
|
+
"session find": topic({
|
|
511
|
+
title: "apx session find",
|
|
512
|
+
summary: "Find sessions by title across every engine, newest first. The fast way to turn a remembered title into a session id.",
|
|
513
|
+
usage: [
|
|
514
|
+
"apx session find \"<text>\" [--deep] [--engine <id>] [--dir <path>|--project <name>] [--limit N] [--json]",
|
|
515
|
+
],
|
|
516
|
+
options: [
|
|
517
|
+
["--deep", "Also search inside transcript content, not just titles (slower)."],
|
|
518
|
+
["--engine <id>", "Restrict to one engine (apx | claude | codex)."],
|
|
519
|
+
["--dir <path> / --project <name>", "Scope to one project (reaches unregistered Claude projects)."],
|
|
520
|
+
["--limit N", "Max results (default 20)."],
|
|
521
|
+
["--json", "Machine-readable output."],
|
|
522
|
+
],
|
|
523
|
+
examples: [
|
|
524
|
+
"apx session find \"mejorar interfaz web\"",
|
|
525
|
+
"apx session find \"sidebar\" --deep --engine codex",
|
|
526
|
+
],
|
|
527
|
+
}),
|
|
528
|
+
"session summary": topic({
|
|
529
|
+
title: "apx session summary",
|
|
530
|
+
summary: "Print an LLM summary of any session by id (resolves the owning engine automatically).",
|
|
531
|
+
usage: ["apx session summary <id> [--engine <id>]"],
|
|
532
|
+
examples: ["apx session summary 019abc...", "apx session summary 2e3c84 --engine claude"],
|
|
533
|
+
}),
|
|
534
|
+
"session ask": topic({
|
|
535
|
+
title: "apx session ask",
|
|
536
|
+
summary: "Ask a free-form question about a session. Small transcripts answered in one shot; large ones are map-reduced (mine each part, then synthesize).",
|
|
537
|
+
usage: ["apx session ask <id> \"<question>\" [--engine <id>] [--max-chunks N]"],
|
|
538
|
+
options: [
|
|
539
|
+
["--max-chunks N", "Cap how many transcript parts are mined (default 20)."],
|
|
540
|
+
["--engine <id>", "Restrict to one engine (apx | claude | codex)."],
|
|
404
541
|
],
|
|
405
|
-
examples: ["apx session
|
|
542
|
+
examples: ["apx session ask 019abc... \"¿qué decidimos sobre el sidebar?\""],
|
|
406
543
|
}),
|
|
407
544
|
"session new": topic({
|
|
408
545
|
title: "apx session new",
|
|
@@ -424,10 +561,25 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
424
561
|
}),
|
|
425
562
|
"session get": topic({
|
|
426
563
|
title: "apx session get",
|
|
427
|
-
summary: "Print one session
|
|
428
|
-
usage: [
|
|
429
|
-
|
|
430
|
-
|
|
564
|
+
summary: "Print one session record (APX local, or any detected engine).",
|
|
565
|
+
usage: [
|
|
566
|
+
"apx session get <id> [--body|--full|--tail N] [--json]",
|
|
567
|
+
"apx session get <id> --engine <apx|claude|codex> [--full|--tail N]",
|
|
568
|
+
"apx session get <id> --any [--full|--tail N]",
|
|
569
|
+
],
|
|
570
|
+
options: [
|
|
571
|
+
["--body / --full", "Print the full session file (markdown or JSONL transcript)."],
|
|
572
|
+
["--tail N[k|m]", "Print the last N bytes of the transcript (e.g. --tail 32k)."],
|
|
573
|
+
["--engine <id>", "Look inside one engine's storage: apx | claude | codex."],
|
|
574
|
+
["--any", "Search every detected engine; errors on id collisions."],
|
|
575
|
+
["--json", "Machine-readable metadata."],
|
|
576
|
+
],
|
|
577
|
+
examples: [
|
|
578
|
+
"apx session get 2026-05-09-01",
|
|
579
|
+
"apx session get 2026-05-09-01 --body",
|
|
580
|
+
"apx session get b3f0c... --engine claude --tail 16k",
|
|
581
|
+
"apx session get b3f0c... --any --full",
|
|
582
|
+
],
|
|
431
583
|
}),
|
|
432
584
|
"session update": topic({
|
|
433
585
|
title: "apx session update",
|
|
@@ -463,14 +615,27 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
463
615
|
}),
|
|
464
616
|
"session resume": topic({
|
|
465
617
|
title: "apx session resume",
|
|
466
|
-
summary:
|
|
467
|
-
|
|
618
|
+
summary:
|
|
619
|
+
"Locate <id> across every detected engine (apx | claude | codex), show it, and optionally continue.",
|
|
620
|
+
usage: [
|
|
621
|
+
"apx session resume <id> [--engine <id>] [--summary] [--full|--tail N]",
|
|
622
|
+
"apx session resume <id> --continue # spawn native CLI to resume",
|
|
623
|
+
"apx session resume <id> --into apx[:slug] # create a new APX session seeded with the summary",
|
|
624
|
+
],
|
|
468
625
|
options: [
|
|
469
|
-
["--
|
|
470
|
-
["--
|
|
471
|
-
["--
|
|
626
|
+
["--engine <id>", "Restrict the search to one engine: apx | claude | codex."],
|
|
627
|
+
["--summary", "Ask the super-agent to summarize the transcript (needs daemon)."],
|
|
628
|
+
["--tail N[k|m]", "Print the last N bytes of the transcript (default = metadata only)."],
|
|
629
|
+
["--full / --body", "Print the entire transcript."],
|
|
630
|
+
["--continue", "Spawn the engine's native CLI (claude --resume / codex resume)."],
|
|
631
|
+
["--into apx[:slug]", "Create a new APX session whose body is the summary of <id>."],
|
|
632
|
+
["--project <name|id|path>", "Pin to a specific APX project (apx-engine summaries only)."],
|
|
633
|
+
],
|
|
634
|
+
examples: [
|
|
635
|
+
"apx session resume b3f0c12a... --summary",
|
|
636
|
+
"apx session resume 2026-05-09-01 --continue",
|
|
637
|
+
"apx session resume b3f0c12a... --engine claude --into apx:reviewer",
|
|
472
638
|
],
|
|
473
|
-
examples: ["apx session resume 2026-05-09-01 --summary"],
|
|
474
639
|
}),
|
|
475
640
|
"session compact": topic({
|
|
476
641
|
title: "apx session compact",
|
|
@@ -485,39 +650,43 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
485
650
|
}),
|
|
486
651
|
sessions: topic({
|
|
487
652
|
title: "apx sessions",
|
|
488
|
-
summary:
|
|
653
|
+
summary:
|
|
654
|
+
"List AI engine sessions (APX, Claude Code, Codex, …). Without --engine, lists every detected engine.",
|
|
489
655
|
usage: ["apx sessions list [--engine <id>] [--project <name>|--dir <path>] [--limit N]"],
|
|
490
656
|
commands: [
|
|
491
657
|
["list | ls", "List engine projects, or sessions of one project."],
|
|
492
658
|
],
|
|
493
659
|
options: [
|
|
494
|
-
["--engine <id>", "apx
|
|
660
|
+
["--engine <id>", "Filter to one engine: apx | claude | codex | antigravity. Omit to list every detected engine."],
|
|
495
661
|
["--project <name>", "A registered APX project to resolve the directory from."],
|
|
496
662
|
["--dir <path>", "An explicit project directory (for unregistered projects)."],
|
|
497
|
-
["--limit N", "Show only the N most recent sessions."],
|
|
663
|
+
["--limit N", "Show only the N most recent sessions per engine."],
|
|
498
664
|
],
|
|
499
665
|
examples: [
|
|
666
|
+
"apx sessions list # every engine, every project",
|
|
500
667
|
"apx sessions list --engine claude",
|
|
501
668
|
"apx sessions list --engine claude --project iacrmar",
|
|
502
|
-
"apx sessions list --
|
|
669
|
+
"apx sessions list --dir /path/to/project # this dir across every engine",
|
|
503
670
|
],
|
|
504
671
|
}),
|
|
505
672
|
"sessions list": topic({
|
|
506
673
|
title: "apx sessions list",
|
|
507
|
-
summary:
|
|
674
|
+
summary:
|
|
675
|
+
"List sessions. No --engine → every detected engine (empty engines show '(sin nada)', missing engines are skipped).",
|
|
508
676
|
usage: [
|
|
509
|
-
"apx sessions list
|
|
677
|
+
"apx sessions list # multi-engine view",
|
|
678
|
+
"apx sessions list --engine <id> # one engine",
|
|
510
679
|
"apx sessions list --engine <id> --project <name>",
|
|
511
680
|
"apx sessions list --engine <id> --dir <path>",
|
|
512
681
|
],
|
|
513
682
|
options: [
|
|
514
|
-
["--engine <id>", "apx
|
|
683
|
+
["--engine <id>", "apx | claude | codex | antigravity. Omit to scan all."],
|
|
515
684
|
["--project <name>", "Resolve directory from a registered APX project."],
|
|
516
685
|
["--dir <path>", "Explicit project directory."],
|
|
517
|
-
["--limit N", "Show only the N most recent sessions."],
|
|
686
|
+
["--limit N", "Show only the N most recent sessions per engine."],
|
|
518
687
|
],
|
|
519
688
|
examples: [
|
|
520
|
-
"apx sessions list",
|
|
689
|
+
"apx sessions list # every engine, every project",
|
|
521
690
|
"apx sessions list --engine claude --project iacrmar",
|
|
522
691
|
"apx sessions list --engine codex --dir /Volumes/work/iacrmar",
|
|
523
692
|
],
|
|
@@ -543,27 +712,44 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
543
712
|
title: "apx mcp list",
|
|
544
713
|
summary: "List MCP servers available to a project.",
|
|
545
714
|
usage: ["apx mcp list [--project <name|id|path>]", "apx mcp ls [--project <name|id|path>]"],
|
|
546
|
-
options: [
|
|
547
|
-
|
|
715
|
+
options: [
|
|
716
|
+
["--project <name|id|path>", "Pin command to a specific project."],
|
|
717
|
+
["--scope <shared|runtime|global|all>", "Filter by scope (default: all). shared = .apc/mcps.json, runtime = ~/.apx/projects/<id>/mcps.json, global = ~/.apx/mcps.json."],
|
|
718
|
+
],
|
|
719
|
+
examples: [
|
|
720
|
+
"apx mcp list",
|
|
721
|
+
"apx mcp list --project default",
|
|
722
|
+
"apx mcp list --scope runtime --project iacrmar",
|
|
723
|
+
],
|
|
548
724
|
}),
|
|
549
725
|
"mcp add": topic({
|
|
550
726
|
title: "apx mcp add",
|
|
551
|
-
summary: "Add
|
|
552
|
-
usage: ["apx mcp add <name> --command <cmd> [--env KEY=VAL ...] [--project <name|id|path>] [-- <arg> ...]"],
|
|
727
|
+
summary: "Add an APX-owned MCP server. Default scope is `shared` (commit to repo) inside an APC project, else `global`.",
|
|
728
|
+
usage: ["apx mcp add <name> --command <cmd> [--scope <shared|runtime|global>] [--env KEY=VAL ...] [--project <name|id|path>] [-- <arg> ...]"],
|
|
553
729
|
options: [
|
|
554
730
|
["--command <cmd>", "Executable command for stdio MCP server."],
|
|
731
|
+
["--scope <s>", "shared = .apc/mcps.json (committable); runtime = ~/.apx/projects/<id>/mcps.json (per-project, local, chmod 0600 — use for tokens); global = ~/.apx/mcps.json (machine-wide)."],
|
|
555
732
|
["--env KEY=VAL", "Environment variable. Repeatable."],
|
|
556
733
|
["--project <name|id|path>", "Pin command to a specific project."],
|
|
557
734
|
["-- <arg> ...", "Arguments passed to the MCP command."],
|
|
558
735
|
],
|
|
559
|
-
examples: [
|
|
736
|
+
examples: [
|
|
737
|
+
"apx mcp add filesystem --command npx -- -y @modelcontextprotocol/server-filesystem .",
|
|
738
|
+
"apx mcp add github --scope runtime --project iacrmar --command npx -- -y @modelcontextprotocol/server-github",
|
|
739
|
+
],
|
|
560
740
|
}),
|
|
561
741
|
"mcp remove": topic({
|
|
562
742
|
title: "apx mcp remove",
|
|
563
|
-
summary: "Remove
|
|
564
|
-
usage: [
|
|
565
|
-
|
|
566
|
-
|
|
743
|
+
summary: "Remove an APX-owned MCP server from a given scope.",
|
|
744
|
+
usage: [
|
|
745
|
+
"apx mcp remove <name> [--scope <shared|runtime|global>] [--project <name|id|path>]",
|
|
746
|
+
"apx mcp rm <name> [--scope <shared|runtime|global>] [--project <name|id|path>]",
|
|
747
|
+
],
|
|
748
|
+
options: [
|
|
749
|
+
["--project <name|id|path>", "Pin command to a specific project."],
|
|
750
|
+
["--scope <s>", "Which scope to remove from. Defaults to `shared` inside an APC project, else `global`."],
|
|
751
|
+
],
|
|
752
|
+
examples: ["apx mcp remove filesystem", "apx mcp remove github --scope runtime --project iacrmar"],
|
|
567
753
|
}),
|
|
568
754
|
"mcp enable": topic({
|
|
569
755
|
title: "apx mcp enable",
|
|
@@ -602,15 +788,23 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
602
788
|
}),
|
|
603
789
|
daemon: topic({
|
|
604
790
|
title: "apx daemon",
|
|
605
|
-
summary: "Start, stop, inspect, and read logs from the local APX daemon.",
|
|
606
|
-
usage: ["apx daemon <start|stop|status|logs> [--flags]"],
|
|
791
|
+
summary: "Start, stop, restart, inspect, reload, and read logs from the local APX daemon.",
|
|
792
|
+
usage: ["apx daemon <start|stop|restart|reload|status|logs> [--flags]"],
|
|
607
793
|
commands: [
|
|
608
794
|
["start", "Start daemon."],
|
|
609
795
|
["stop", "Stop daemon."],
|
|
796
|
+
["restart", "Stop then start — picks up code, prompt, and tool changes."],
|
|
797
|
+
["reload", "Re-read ~/.apx/config.json only (NOT code/prompts) without restart."],
|
|
610
798
|
["status", "Show daemon health."],
|
|
611
799
|
["logs", "Print daemon log tail."],
|
|
612
800
|
],
|
|
613
|
-
examples: ["apx daemon status", "apx daemon logs --tail 100"],
|
|
801
|
+
examples: ["apx daemon status", "apx daemon restart", "apx daemon logs --tail 100"],
|
|
802
|
+
}),
|
|
803
|
+
"daemon restart": topic({
|
|
804
|
+
title: "apx daemon restart",
|
|
805
|
+
summary: "Restart the local APX daemon (stop + start in one step).",
|
|
806
|
+
usage: ["apx daemon restart"],
|
|
807
|
+
examples: ["apx daemon restart"],
|
|
614
808
|
}),
|
|
615
809
|
"daemon start": topic({
|
|
616
810
|
title: "apx daemon start",
|
|
@@ -640,15 +834,59 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
640
834
|
telegram: topic({
|
|
641
835
|
title: "apx telegram",
|
|
642
836
|
summary: "Configure, inspect, and send through the Telegram bridge.",
|
|
643
|
-
usage: ["apx telegram <send|status|start|stop|setup> [args] [--flags]"],
|
|
837
|
+
usage: ["apx telegram <send|status|start|stop|setup|channel|contacts|role|roles|owner> [args] [--flags]"],
|
|
644
838
|
commands: [
|
|
645
839
|
["send \"text\"", "Send a Telegram message."],
|
|
646
840
|
["status", "Show Telegram plugin status."],
|
|
647
841
|
["start", "Start polling on every configured channel."],
|
|
648
842
|
["stop", "Stop polling (config stays intact)."],
|
|
649
843
|
["setup", "Print setup guidance."],
|
|
844
|
+
["channel <sub>", "Manage channels: add | list | show | set | unset | remove."],
|
|
845
|
+
["contacts", "List the known-people roster (auto-recorded from inbound messages)."],
|
|
846
|
+
["role <user_id> <role>", "Assign a role to a contact (owner-only / terminal)."],
|
|
847
|
+
["roles <sub>", "Define role→tools: list | set <name> --tools a,b | rm <name>."],
|
|
848
|
+
["owner <channel> <user_id>", "Set who owns a channel."],
|
|
849
|
+
],
|
|
850
|
+
examples: [
|
|
851
|
+
"apx telegram status",
|
|
852
|
+
"apx telegram channel add",
|
|
853
|
+
"apx telegram contacts",
|
|
854
|
+
"apx telegram role 889721252 editor",
|
|
855
|
+
"apx telegram owner default 889721252",
|
|
856
|
+
"apx telegram send \"hello\" --chat 123456",
|
|
650
857
|
],
|
|
651
|
-
|
|
858
|
+
}),
|
|
859
|
+
"telegram contacts": topic({
|
|
860
|
+
title: "apx telegram contacts",
|
|
861
|
+
summary: "List the global contacts roster, with each person's role and last-seen.",
|
|
862
|
+
usage: ["apx telegram contacts", "apx telegram contacts rm <user_id>"],
|
|
863
|
+
examples: ["apx telegram contacts", "apx telegram contacts rm 123456"],
|
|
864
|
+
}),
|
|
865
|
+
"telegram role": topic({
|
|
866
|
+
title: "apx telegram role",
|
|
867
|
+
summary: "Assign a role to a contact by Telegram user_id. Roles gate which tools they can use.",
|
|
868
|
+
usage: ["apx telegram role <user_id> <role>"],
|
|
869
|
+
examples: ["apx telegram role 889721252 editor", "apx telegram role 123456 guest"],
|
|
870
|
+
}),
|
|
871
|
+
"telegram roles": topic({
|
|
872
|
+
title: "apx telegram roles",
|
|
873
|
+
summary: "Define role→tools capability maps. owner/guest are built-in.",
|
|
874
|
+
usage: [
|
|
875
|
+
"apx telegram roles",
|
|
876
|
+
"apx telegram roles set <name> --tools call_agent,list_tasks",
|
|
877
|
+
"apx telegram roles set <name> --tools '*'",
|
|
878
|
+
"apx telegram roles rm <name>",
|
|
879
|
+
],
|
|
880
|
+
examples: [
|
|
881
|
+
"apx telegram roles",
|
|
882
|
+
"apx telegram roles set editor --tools call_agent,create_task,list_tasks",
|
|
883
|
+
],
|
|
884
|
+
}),
|
|
885
|
+
"telegram owner": topic({
|
|
886
|
+
title: "apx telegram owner",
|
|
887
|
+
summary: "Set who owns a channel (overrides their role to owner on that channel).",
|
|
888
|
+
usage: ["apx telegram owner <channel> <user_id>"],
|
|
889
|
+
examples: ["apx telegram owner default 889721252"],
|
|
652
890
|
}),
|
|
653
891
|
"telegram send": topic({
|
|
654
892
|
title: "apx telegram send",
|
|
@@ -688,6 +926,79 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
688
926
|
usage: ["apx telegram setup"],
|
|
689
927
|
examples: ["apx telegram setup"],
|
|
690
928
|
}),
|
|
929
|
+
"telegram channel": topic({
|
|
930
|
+
title: "apx telegram channel",
|
|
931
|
+
summary: "Manage entries in cfg.telegram.channels[] — name, bot, chat, pinned project, master agent.",
|
|
932
|
+
usage: ["apx telegram channel <subcommand> [args] [--flags]"],
|
|
933
|
+
commands: [
|
|
934
|
+
["add [name]", "Interactive wizard (or non-interactive with flags)."],
|
|
935
|
+
["list | ls", "List configured channels."],
|
|
936
|
+
["show <name>", "Print one channel as JSON."],
|
|
937
|
+
["set <name>", "Patch fields (--project, --agent, --respond-engine true|false, --bot-token, --chat-id)."],
|
|
938
|
+
["unset <name>", "Clear optional fields (--project, --agent, --bot-token, --chat-id)."],
|
|
939
|
+
["remove | rm <name>", "Delete the channel from the array."],
|
|
940
|
+
],
|
|
941
|
+
options: [
|
|
942
|
+
["--project <name|id|path>", "Pin channel to a project for inbound routing."],
|
|
943
|
+
["--agent <slug>", "Route inbound to this agent instead of the super-agent."],
|
|
944
|
+
["--respond-engine <true|false>", "Whether the engine auto-replies on this channel."],
|
|
945
|
+
["--bot-token <token>", "Override bot_token (use `add` non-interactively or `set` to rotate)."],
|
|
946
|
+
["--chat-id <id>", "Default outbound chat id."],
|
|
947
|
+
],
|
|
948
|
+
examples: [
|
|
949
|
+
"apx telegram channel add",
|
|
950
|
+
"apx telegram channel add clientes --bot-token TOKEN --chat-id 1234 --project iacrmar --agent comercial",
|
|
951
|
+
"apx telegram channel list",
|
|
952
|
+
"apx telegram channel set clientes --agent reviewer",
|
|
953
|
+
"apx telegram channel unset clientes --agent",
|
|
954
|
+
"apx telegram channel remove clientes",
|
|
955
|
+
],
|
|
956
|
+
}),
|
|
957
|
+
"telegram channel add": topic({
|
|
958
|
+
title: "apx telegram channel add",
|
|
959
|
+
summary: "Interactive wizard (or one-shot non-interactive form) to add a Telegram channel.",
|
|
960
|
+
usage: [
|
|
961
|
+
"apx telegram channel add",
|
|
962
|
+
"apx telegram channel add <name> --bot-token TOKEN --chat-id ID [--project P] [--agent A] [--respond-engine true|false]",
|
|
963
|
+
],
|
|
964
|
+
examples: [
|
|
965
|
+
"apx telegram channel add",
|
|
966
|
+
"apx telegram channel add support --bot-token 12345:ABC --chat-id 1234 --project default",
|
|
967
|
+
],
|
|
968
|
+
}),
|
|
969
|
+
"telegram channel list": topic({
|
|
970
|
+
title: "apx telegram channel list",
|
|
971
|
+
summary: "List configured Telegram channels.",
|
|
972
|
+
usage: ["apx telegram channel list", "apx telegram channel ls"],
|
|
973
|
+
examples: ["apx telegram channel list"],
|
|
974
|
+
}),
|
|
975
|
+
"telegram channel show": topic({
|
|
976
|
+
title: "apx telegram channel show",
|
|
977
|
+
summary: "Print one Telegram channel as pretty JSON.",
|
|
978
|
+
usage: ["apx telegram channel show <name>"],
|
|
979
|
+
examples: ["apx telegram channel show clientes"],
|
|
980
|
+
}),
|
|
981
|
+
"telegram channel set": topic({
|
|
982
|
+
title: "apx telegram channel set",
|
|
983
|
+
summary: "Patch fields on an existing Telegram channel and reload the daemon.",
|
|
984
|
+
usage: ["apx telegram channel set <name> [--project P] [--agent A] [--respond-engine true|false] [--bot-token T] [--chat-id ID]"],
|
|
985
|
+
examples: [
|
|
986
|
+
"apx telegram channel set clientes --project iacrmar --agent comercial",
|
|
987
|
+
"apx telegram channel set clientes --respond-engine false",
|
|
988
|
+
],
|
|
989
|
+
}),
|
|
990
|
+
"telegram channel unset": topic({
|
|
991
|
+
title: "apx telegram channel unset",
|
|
992
|
+
summary: "Clear optional fields on a channel (project pin, master agent, etc).",
|
|
993
|
+
usage: ["apx telegram channel unset <name> [--project] [--agent] [--bot-token] [--chat-id]"],
|
|
994
|
+
examples: ["apx telegram channel unset clientes --agent", "apx telegram channel unset clientes --project"],
|
|
995
|
+
}),
|
|
996
|
+
"telegram channel remove": topic({
|
|
997
|
+
title: "apx telegram channel remove",
|
|
998
|
+
summary: "Delete a channel from cfg.telegram.channels[] and reload the daemon.",
|
|
999
|
+
usage: ["apx telegram channel remove <name>", "apx telegram channel rm <name>"],
|
|
1000
|
+
examples: ["apx telegram channel remove clientes"],
|
|
1001
|
+
}),
|
|
691
1002
|
messages: topic({
|
|
692
1003
|
title: "apx messages",
|
|
693
1004
|
summary: "Read APX message logs.",
|
|
@@ -749,15 +1060,26 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
749
1060
|
}),
|
|
750
1061
|
exec: topic({
|
|
751
1062
|
title: "apx exec",
|
|
752
|
-
summary: "
|
|
753
|
-
usage: [
|
|
1063
|
+
summary: "One-shot LLM call. Default target is the APX super-agent (daemon); use -a for an APC agent slug.",
|
|
1064
|
+
usage: [
|
|
1065
|
+
"apx exec \"<prompt>\" [--model <id>] [--project <name|id|path>]",
|
|
1066
|
+
"apx exec -- \"<prompt>\"",
|
|
1067
|
+
"apx exec -a <agent> \"<prompt>\" [--model <id>]",
|
|
1068
|
+
"apx exec <agent> \"<prompt>\" (legacy positional agent)",
|
|
1069
|
+
],
|
|
754
1070
|
options: [
|
|
1071
|
+
["-a, --agent <slug>", "APC agent slug (omit for super-agent default)."],
|
|
755
1072
|
["--model <id>", "Override configured model."],
|
|
756
1073
|
["--max-tokens N", "Output token limit."],
|
|
757
1074
|
["--temperature T", "Sampling temperature."],
|
|
758
1075
|
["--project <name|id|path>", "Pin command to a specific project."],
|
|
759
1076
|
],
|
|
760
|
-
examples: [
|
|
1077
|
+
examples: [
|
|
1078
|
+
"apx exec \"What time is it in UTC?\"",
|
|
1079
|
+
"apx exec -- \"decime qué hora es\"",
|
|
1080
|
+
"apx exec -a reviewer \"Summarize your role\"",
|
|
1081
|
+
"apx exec reviewer \"Summarize your role\" --model gpt-5.2",
|
|
1082
|
+
],
|
|
761
1083
|
}),
|
|
762
1084
|
chat: topic({
|
|
763
1085
|
title: "apx chat",
|
|
@@ -773,11 +1095,12 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
773
1095
|
code: topic({
|
|
774
1096
|
title: "apx code",
|
|
775
1097
|
summary: "Start the APX terminal coding assistant with system and workspace context.",
|
|
776
|
-
usage: ["apx code [--project <name|id|path>]"],
|
|
1098
|
+
usage: ["apx code [--project <name|id|path>] [--agent <slug>]"],
|
|
777
1099
|
options: [
|
|
778
1100
|
["--project <name|id|path>", "Pin command to a specific project."],
|
|
1101
|
+
["--agent <slug>", "Route chat to a project agent instead of the APX default (super-agent mode)."],
|
|
779
1102
|
],
|
|
780
|
-
examples: ["apx code", "apx code --project default"],
|
|
1103
|
+
examples: ["apx code", "apx code --project default", "apx code --agent reviewer"],
|
|
781
1104
|
}),
|
|
782
1105
|
conversations: topic({
|
|
783
1106
|
title: "apx conversations",
|
|
@@ -1023,13 +1346,19 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
1023
1346
|
skills: topic({
|
|
1024
1347
|
title: "apx skills",
|
|
1025
1348
|
summary: "Install and inspect APX skill files for IDEs and agent tools.",
|
|
1026
|
-
usage: ["apx skills [add] [targets] [--global]", "apx skills list", "apx skills status"],
|
|
1349
|
+
usage: ["apx skills [add] [targets] [--global]", "apx skills sync", "apx skills list", "apx skills status"],
|
|
1027
1350
|
commands: [
|
|
1028
1351
|
["add [targets]", "Install APX skills into selected targets."],
|
|
1029
|
-
["
|
|
1030
|
-
["
|
|
1352
|
+
["sync | refresh", "Re-install every bundled skill to every global skill dir (idempotent)."],
|
|
1353
|
+
["list | ls", "List skills installed in this project's .apc/skills/."],
|
|
1354
|
+
["status", "Show which bundled skills are present in each global dir."],
|
|
1355
|
+
],
|
|
1356
|
+
examples: [
|
|
1357
|
+
"apx skills add claude-code cursor",
|
|
1358
|
+
"apx skills add --global",
|
|
1359
|
+
"apx skills sync # force-refresh after editing skills/ in the repo",
|
|
1360
|
+
"apx skills sync --verbose # show every (skill × target) line",
|
|
1031
1361
|
],
|
|
1032
|
-
examples: ["apx skills add claude-code cursor", "apx skills add --global"],
|
|
1033
1362
|
}),
|
|
1034
1363
|
"skills add": topic({
|
|
1035
1364
|
title: "apx skills add",
|
|
@@ -1038,6 +1367,26 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
1038
1367
|
options: [["--global", "Install to global user-level skill targets."]],
|
|
1039
1368
|
examples: ["apx skills add claude-code cursor", "apx skills add --global"],
|
|
1040
1369
|
}),
|
|
1370
|
+
"skills sync": topic({
|
|
1371
|
+
title: "apx skills sync",
|
|
1372
|
+
summary:
|
|
1373
|
+
"Refresh bundled APX skills (auto-discovered from skills/) into every global skill dir (.claude, .cursor, .codex, .agents). Pushes only `scope: public` skills by default; pass --include-optional / --include-internal to push the other tiers. Prunes copies of slugs no longer included (use --no-prune to keep them).",
|
|
1374
|
+
usage: [
|
|
1375
|
+
"apx skills sync [--verbose] [--include-optional] [--include-internal] [--no-prune]",
|
|
1376
|
+
"apx skills refresh",
|
|
1377
|
+
],
|
|
1378
|
+
options: [
|
|
1379
|
+
["--include-optional", "Also push `scope: optional` skills (apx-voice, …)."],
|
|
1380
|
+
["--include-internal", "Also push `scope: internal` APX-dev skills (apx-mcp-builder, …)."],
|
|
1381
|
+
["--no-prune", "Don't remove global copies of slugs that aren't included this run."],
|
|
1382
|
+
["--verbose", "List each (skill × dir) result, not just the rollup."],
|
|
1383
|
+
],
|
|
1384
|
+
examples: [
|
|
1385
|
+
"apx skills sync",
|
|
1386
|
+
"apx skills sync --include-optional",
|
|
1387
|
+
"apx skills sync --include-internal --verbose",
|
|
1388
|
+
],
|
|
1389
|
+
}),
|
|
1041
1390
|
"skills list": topic({
|
|
1042
1391
|
title: "apx skills list",
|
|
1043
1392
|
summary: "List known APX skill targets.",
|
|
@@ -1078,6 +1427,374 @@ const HELP_TOPICS = new Map(Object.entries({
|
|
|
1078
1427
|
usage: ["apx plugins status <id>"],
|
|
1079
1428
|
examples: ["apx plugins status telegram"],
|
|
1080
1429
|
}),
|
|
1430
|
+
|
|
1431
|
+
task: topic({
|
|
1432
|
+
title: "apx task",
|
|
1433
|
+
summary: "Per-project TODO list backed by the daemon (/projects/:pid/tasks).",
|
|
1434
|
+
usage: ["apx task <subcommand> [args] [--flags]"],
|
|
1435
|
+
commands: [
|
|
1436
|
+
["add | new | create \"<title>\"", "Create a task. Tags repeatable."],
|
|
1437
|
+
["list | ls", "List tasks (default state=open)."],
|
|
1438
|
+
["show | get <id>", "Print one task as JSON."],
|
|
1439
|
+
["done | complete <id>", "Mark task done."],
|
|
1440
|
+
["drop | archive <id>", "Drop / archive a task."],
|
|
1441
|
+
["reopen <id>", "Reopen a done or dropped task."],
|
|
1442
|
+
["patch | edit <id>", "Edit fields on an existing task."],
|
|
1443
|
+
],
|
|
1444
|
+
options: [["--project <name|id|path>", "Pin command to a specific project."]],
|
|
1445
|
+
examples: [
|
|
1446
|
+
"apx task add \"Ship release notes\" --tag release --due 2026-06-01",
|
|
1447
|
+
"apx task list --state open --tag release",
|
|
1448
|
+
"apx task done t_abc123",
|
|
1449
|
+
],
|
|
1450
|
+
}),
|
|
1451
|
+
tasks: topic({
|
|
1452
|
+
title: "apx tasks",
|
|
1453
|
+
summary: "Alias for apx task.",
|
|
1454
|
+
usage: ["apx tasks <subcommand> [args] [--flags]"],
|
|
1455
|
+
examples: ["apx tasks list"],
|
|
1456
|
+
}),
|
|
1457
|
+
"task add": topic({
|
|
1458
|
+
title: "apx task add",
|
|
1459
|
+
summary: "Create a task on a project's TODO list.",
|
|
1460
|
+
usage: ["apx task add \"<title>\" [--project X] [--body Y] [--tag t]... [--due 2026-05-30] [--agent A] [--source S]"],
|
|
1461
|
+
options: [
|
|
1462
|
+
["--body <text>", "Optional task body / description."],
|
|
1463
|
+
["--tag <name>", "Tag the task. Repeatable for multiple tags."],
|
|
1464
|
+
["--due <date>", "Due date (any ISO-ish string the daemon accepts)."],
|
|
1465
|
+
["--agent <slug>", "Pre-assign the task to an agent."],
|
|
1466
|
+
["--source <name>", "Origin label (default: cli)."],
|
|
1467
|
+
["--project <name|id|path>", "Pin command to a specific project."],
|
|
1468
|
+
],
|
|
1469
|
+
examples: [
|
|
1470
|
+
"apx task add \"Review PR #42\" --agent reviewer --tag review",
|
|
1471
|
+
"apx task add \"Release notes\" --tag release --tag docs --due 2026-06-01",
|
|
1472
|
+
],
|
|
1473
|
+
}),
|
|
1474
|
+
"task list": topic({
|
|
1475
|
+
title: "apx task list",
|
|
1476
|
+
summary: "List tasks in the current project (defaults to open).",
|
|
1477
|
+
usage: ["apx task list [--state open|done|dropped|all] [--tag X] [--agent Y] [--due-before ISO] [--limit N] [--project P]"],
|
|
1478
|
+
options: [
|
|
1479
|
+
["--state <s>", "open (default) | done | dropped | all."],
|
|
1480
|
+
["--tag <name>", "Filter by tag."],
|
|
1481
|
+
["--agent <slug>", "Filter by assigned agent."],
|
|
1482
|
+
["--due-before <iso>", "Only tasks with due date before this ISO date."],
|
|
1483
|
+
["--limit N", "Cap the number of rows."],
|
|
1484
|
+
["--project <name|id|path>", "Pin command to a specific project."],
|
|
1485
|
+
],
|
|
1486
|
+
examples: [
|
|
1487
|
+
"apx task list",
|
|
1488
|
+
"apx task list --state all --limit 50",
|
|
1489
|
+
"apx task list --agent reviewer --tag review",
|
|
1490
|
+
],
|
|
1491
|
+
}),
|
|
1492
|
+
"task show": topic({
|
|
1493
|
+
title: "apx task show",
|
|
1494
|
+
summary: "Print one task as JSON.",
|
|
1495
|
+
usage: ["apx task show <id> [--project <name|id|path>]"],
|
|
1496
|
+
options: [["--project <name|id|path>", "Pin command to a specific project."]],
|
|
1497
|
+
examples: ["apx task show t_abc123"],
|
|
1498
|
+
}),
|
|
1499
|
+
"task done": topic({
|
|
1500
|
+
title: "apx task done",
|
|
1501
|
+
summary: "Mark a task as done.",
|
|
1502
|
+
usage: ["apx task done <id> [--by <name>] [--project <name|id|path>]"],
|
|
1503
|
+
options: [
|
|
1504
|
+
["--by <name>", "Who marked it done (free-form label)."],
|
|
1505
|
+
["--project <name|id|path>", "Pin command to a specific project."],
|
|
1506
|
+
],
|
|
1507
|
+
examples: ["apx task done t_abc123", "apx task done t_abc123 --by reviewer"],
|
|
1508
|
+
}),
|
|
1509
|
+
"task drop": topic({
|
|
1510
|
+
title: "apx task drop",
|
|
1511
|
+
summary: "Drop / archive a task (kept in history, hidden from default list).",
|
|
1512
|
+
usage: ["apx task drop <id> [--by <name>] [--project <name|id|path>]"],
|
|
1513
|
+
options: [
|
|
1514
|
+
["--by <name>", "Who dropped it (free-form label)."],
|
|
1515
|
+
["--project <name|id|path>", "Pin command to a specific project."],
|
|
1516
|
+
],
|
|
1517
|
+
examples: ["apx task drop t_abc123"],
|
|
1518
|
+
}),
|
|
1519
|
+
"task reopen": topic({
|
|
1520
|
+
title: "apx task reopen",
|
|
1521
|
+
summary: "Reopen a previously done or dropped task.",
|
|
1522
|
+
usage: ["apx task reopen <id> [--project <name|id|path>]"],
|
|
1523
|
+
options: [["--project <name|id|path>", "Pin command to a specific project."]],
|
|
1524
|
+
examples: ["apx task reopen t_abc123"],
|
|
1525
|
+
}),
|
|
1526
|
+
"task patch": topic({
|
|
1527
|
+
title: "apx task patch",
|
|
1528
|
+
summary: "Edit fields on an existing task (title/body/due/agent/tags).",
|
|
1529
|
+
usage: ["apx task patch <id> [--title T] [--body B] [--due D] [--agent A] [--tag t]... [--project P]"],
|
|
1530
|
+
options: [
|
|
1531
|
+
["--title <text>", "Replace the title."],
|
|
1532
|
+
["--body <text>", "Replace the body."],
|
|
1533
|
+
["--due <date>", "Replace the due date (empty string clears)."],
|
|
1534
|
+
["--agent <slug>", "Reassign (empty string clears)."],
|
|
1535
|
+
["--tag <name>", "Replace tags. Repeatable; passing none clears."],
|
|
1536
|
+
["--project <name|id|path>", "Pin command to a specific project."],
|
|
1537
|
+
],
|
|
1538
|
+
examples: [
|
|
1539
|
+
"apx task patch t_abc123 --title \"New title\"",
|
|
1540
|
+
"apx task patch t_abc123 --tag review --tag urgent",
|
|
1541
|
+
],
|
|
1542
|
+
}),
|
|
1543
|
+
|
|
1544
|
+
// ── Pair (companion-device pairing) ───────────────────────────────────────
|
|
1545
|
+
pair: topic({
|
|
1546
|
+
title: "apx pair",
|
|
1547
|
+
summary: "Pair a companion device (Deck app, etc.) with the local APX daemon via QR code.",
|
|
1548
|
+
usage: [
|
|
1549
|
+
"apx pair [label] [--label <name>]",
|
|
1550
|
+
"apx pair web",
|
|
1551
|
+
"apx pair list | ls",
|
|
1552
|
+
"apx pair revoke <id>",
|
|
1553
|
+
],
|
|
1554
|
+
commands: [
|
|
1555
|
+
["(no arg) | deck | device", "QR for the APX Deck app (JSON payload). Poll until the device confirms."],
|
|
1556
|
+
["web", "QR + link for a browser on the LAN — scan with the phone camera or share the link."],
|
|
1557
|
+
["list | ls", "List currently-paired clients."],
|
|
1558
|
+
["revoke | rm <id>", "Revoke a paired client token."],
|
|
1559
|
+
],
|
|
1560
|
+
options: [["--label <name>", "Friendly label stored with the pairing."]],
|
|
1561
|
+
examples: ["apx pair", "apx pair web", "apx pair list", "apx pair revoke d_abc123"],
|
|
1562
|
+
notes: [
|
|
1563
|
+
"`apx pair` (deck) QR carries a JSON payload only the Deck app understands.",
|
|
1564
|
+
"`apx pair web` QR carries a URL a browser/phone-camera can open — see `apx help pair web`.",
|
|
1565
|
+
"Both share one engine: a per-client token, listable with `apx pair list`, revocable with `apx pair revoke`.",
|
|
1566
|
+
],
|
|
1567
|
+
}),
|
|
1568
|
+
"pair web": topic({
|
|
1569
|
+
title: "apx pair web",
|
|
1570
|
+
summary: "Pair a browser on the LAN. Mints a one-shot code (90s) and renders a QR + a shareable link.",
|
|
1571
|
+
usage: ["apx pair web"],
|
|
1572
|
+
commands: [
|
|
1573
|
+
["scan QR", "Point the phone's native camera at the QR → it opens the web already linked."],
|
|
1574
|
+
["share link", "Copy the printed `link:` (…/#pair=<code>) into Telegram/chat; tapping it pairs the browser."],
|
|
1575
|
+
["paste code", "Type the printed `code:` into the web pairing screen (manual fallback)."],
|
|
1576
|
+
],
|
|
1577
|
+
examples: ["apx pair web"],
|
|
1578
|
+
notes: [
|
|
1579
|
+
"The QR/link encode a URL, so they only work for browsers — for the APX Deck app use `apx pair`.",
|
|
1580
|
+
"The daemon must be reachable from the device: bind LAN (host=0.0.0.0) or use a tunnel (Tailscale/Cloudflare).",
|
|
1581
|
+
"The code expires in 90s and is single-use; re-run to get a fresh one.",
|
|
1582
|
+
"Each paired browser shows up in Settings › Dispositivos (kind=web) and is revocable with `apx pair revoke <id>`.",
|
|
1583
|
+
],
|
|
1584
|
+
}),
|
|
1585
|
+
"pair new": topic({
|
|
1586
|
+
title: "apx pair new",
|
|
1587
|
+
summary: "Issue a pairing nonce, render the QR, and poll the daemon until the device confirms.",
|
|
1588
|
+
usage: ["apx pair [label] [--label <name>]", "apx pair new", "apx pair device"],
|
|
1589
|
+
options: [["--label <name>", "Friendly label stored with the pairing."]],
|
|
1590
|
+
examples: ["apx pair", "apx pair \"phone\"", "apx pair new --label tablet"],
|
|
1591
|
+
}),
|
|
1592
|
+
"pair list": topic({
|
|
1593
|
+
title: "apx pair list",
|
|
1594
|
+
summary: "List currently-paired companion clients.",
|
|
1595
|
+
usage: ["apx pair list", "apx pair ls"],
|
|
1596
|
+
examples: ["apx pair list"],
|
|
1597
|
+
}),
|
|
1598
|
+
"pair revoke": topic({
|
|
1599
|
+
title: "apx pair revoke",
|
|
1600
|
+
summary: "Revoke a paired client token by id.",
|
|
1601
|
+
usage: ["apx pair revoke <id>", "apx pair rm <id>"],
|
|
1602
|
+
examples: ["apx pair revoke d_abc123"],
|
|
1603
|
+
}),
|
|
1604
|
+
|
|
1605
|
+
// ── Desktop (floating voice window) ───────────────────────────────────────
|
|
1606
|
+
desktop: topic({
|
|
1607
|
+
title: "apx desktop",
|
|
1608
|
+
summary: "Launch, stop, or inspect the floating Electron voice desktop window.",
|
|
1609
|
+
usage: ["apx desktop <start|stop|status|install|uninstall> [--flags]"],
|
|
1610
|
+
commands: [
|
|
1611
|
+
["start", "Start the desktop window (or report if already running)."],
|
|
1612
|
+
["stop", "Stop the desktop window."],
|
|
1613
|
+
["status", "Print desktop process state, PID, and autostart status."],
|
|
1614
|
+
["install", "Activate autostart at user login (per-user, no sudo)."],
|
|
1615
|
+
["uninstall", "Deactivate autostart at user login."],
|
|
1616
|
+
],
|
|
1617
|
+
options: [["--debug, -d", "Verbose start-up logs (start only)."]],
|
|
1618
|
+
examples: [
|
|
1619
|
+
"apx desktop start", "apx desktop status", "apx desktop stop",
|
|
1620
|
+
"apx desktop install", "apx desktop uninstall",
|
|
1621
|
+
],
|
|
1622
|
+
}),
|
|
1623
|
+
"desktop start": topic({
|
|
1624
|
+
title: "apx desktop start",
|
|
1625
|
+
summary: "Start the floating Electron voice desktop window. No-op if it is already running.",
|
|
1626
|
+
usage: ["apx desktop start [--debug]"],
|
|
1627
|
+
options: [["--debug, -d", "Verbose start-up logs."]],
|
|
1628
|
+
examples: ["apx desktop start", "apx desktop start --debug"],
|
|
1629
|
+
}),
|
|
1630
|
+
"desktop stop": topic({
|
|
1631
|
+
title: "apx desktop stop",
|
|
1632
|
+
summary: "Stop the floating Electron voice desktop window.",
|
|
1633
|
+
usage: ["apx desktop stop"],
|
|
1634
|
+
examples: ["apx desktop stop"],
|
|
1635
|
+
}),
|
|
1636
|
+
"desktop status": topic({
|
|
1637
|
+
title: "apx desktop status",
|
|
1638
|
+
summary: "Print desktop process state and PID (read from ~/.apx/desktop.pid).",
|
|
1639
|
+
usage: ["apx desktop status"],
|
|
1640
|
+
examples: ["apx desktop status"],
|
|
1641
|
+
}),
|
|
1642
|
+
overlay: topic({
|
|
1643
|
+
title: "apx overlay (deprecated)",
|
|
1644
|
+
summary: "Renamed to `apx desktop`. The old name still works and forwards.",
|
|
1645
|
+
usage: ["apx desktop <start|stop|status>"],
|
|
1646
|
+
examples: ["apx desktop start"],
|
|
1647
|
+
}),
|
|
1648
|
+
|
|
1649
|
+
// ── Voice (TTS / mic round-trip) ──────────────────────────────────────────
|
|
1650
|
+
voice: topic({
|
|
1651
|
+
title: "apx voice",
|
|
1652
|
+
summary: "Speak text through the daemon TTS, run a mic→reply round-trip, or list providers.",
|
|
1653
|
+
usage: [
|
|
1654
|
+
"apx voice say \"<text>\" [--provider <id>] [--voice <name>] [--no-play]",
|
|
1655
|
+
"apx voice listen [--seconds N] [--provider <id>] [--no-play]",
|
|
1656
|
+
"apx voice providers",
|
|
1657
|
+
],
|
|
1658
|
+
commands: [
|
|
1659
|
+
["say \"<text>\"", "Synthesize and play text via /tts/say."],
|
|
1660
|
+
["listen", "Record from mic, send to /voice/turn, play the reply."],
|
|
1661
|
+
["providers | list", "List configured TTS / STT providers."],
|
|
1662
|
+
],
|
|
1663
|
+
options: [
|
|
1664
|
+
["--provider <id>", "Override configured provider for this call."],
|
|
1665
|
+
["--voice <name>", "Override voice id (say only)."],
|
|
1666
|
+
["--seconds N", "Record for N seconds (listen). 0 = stop on silence."],
|
|
1667
|
+
["--no-play", "Do not play audio after synthesis / reply."],
|
|
1668
|
+
],
|
|
1669
|
+
examples: [
|
|
1670
|
+
"apx voice say \"hola, ¿cómo estás?\"",
|
|
1671
|
+
"apx voice listen --seconds 5",
|
|
1672
|
+
"apx voice providers",
|
|
1673
|
+
],
|
|
1674
|
+
}),
|
|
1675
|
+
"voice say": topic({
|
|
1676
|
+
title: "apx voice say",
|
|
1677
|
+
summary: "Synthesize text through the daemon TTS pipeline (/tts/say) and (by default) play it.",
|
|
1678
|
+
usage: ["apx voice say \"<text>\" [--provider <id>] [--voice <name>] [--no-play]"],
|
|
1679
|
+
options: [
|
|
1680
|
+
["--provider <id>", "Override configured TTS provider."],
|
|
1681
|
+
["--voice <name>", "Override voice id."],
|
|
1682
|
+
["--no-play", "Synthesize but do not play the audio file."],
|
|
1683
|
+
],
|
|
1684
|
+
examples: [
|
|
1685
|
+
"apx voice say \"hola\"",
|
|
1686
|
+
"apx voice say \"prueba\" --provider piper --voice es_AR",
|
|
1687
|
+
"apx voice say \"silenciado\" --no-play",
|
|
1688
|
+
],
|
|
1689
|
+
}),
|
|
1690
|
+
"voice listen": topic({
|
|
1691
|
+
title: "apx voice listen",
|
|
1692
|
+
summary: "Record from the local mic, send to /voice/turn (STT + super-agent + TTS), and play the reply.",
|
|
1693
|
+
usage: ["apx voice listen [--seconds N] [--provider <id>] [--no-play]"],
|
|
1694
|
+
options: [
|
|
1695
|
+
["--seconds N", "Record N seconds. 0 (default) = stop on silence."],
|
|
1696
|
+
["--provider <id>", "Override STT provider."],
|
|
1697
|
+
["--no-play", "Do not play the reply audio."],
|
|
1698
|
+
],
|
|
1699
|
+
examples: ["apx voice listen", "apx voice listen --seconds 5"],
|
|
1700
|
+
}),
|
|
1701
|
+
"voice providers": topic({
|
|
1702
|
+
title: "apx voice providers",
|
|
1703
|
+
summary: "List configured TTS / STT providers known to the daemon.",
|
|
1704
|
+
usage: ["apx voice providers", "apx voice list"],
|
|
1705
|
+
examples: ["apx voice providers"],
|
|
1706
|
+
}),
|
|
1707
|
+
|
|
1708
|
+
// ── Unified daemon log ────────────────────────────────────────────────────
|
|
1709
|
+
log: topic({
|
|
1710
|
+
title: "apx log",
|
|
1711
|
+
summary: "Read the unified daemon log (~/.apx/logs/apx.log). Covers every module: telegram, whisper, super-agent, tools, desktop.",
|
|
1712
|
+
usage: ["apx log [--tail N] [-f|--follow] [--errors]"],
|
|
1713
|
+
options: [
|
|
1714
|
+
["--tail N", "Print the last N lines (default 100)."],
|
|
1715
|
+
["-f, --follow", "Keep tailing as new lines are appended."],
|
|
1716
|
+
["--errors", "Show only [ERROR] lines (also includes structured errors.jsonl)."],
|
|
1717
|
+
],
|
|
1718
|
+
examples: ["apx log", "apx log --tail 50", "apx log -f", "apx log --errors --tail 20"],
|
|
1719
|
+
}),
|
|
1720
|
+
logs: topic({
|
|
1721
|
+
title: "apx logs",
|
|
1722
|
+
summary: "Alias for apx log.",
|
|
1723
|
+
usage: ["apx logs [--tail N] [-f|--follow] [--errors]"],
|
|
1724
|
+
examples: ["apx logs --tail 50"],
|
|
1725
|
+
}),
|
|
1726
|
+
|
|
1727
|
+
// ── Model router ──────────────────────────────────────────────────────────
|
|
1728
|
+
model: topic({
|
|
1729
|
+
title: "apx model",
|
|
1730
|
+
summary: "Inspect or edit the super-agent model fallback router (~/.apx/config.json super_agent.model_fallback).",
|
|
1731
|
+
usage: ["apx model <subcommand> [args]"],
|
|
1732
|
+
commands: [
|
|
1733
|
+
["status | show", "Print fallback order, configured keys, per-provider probe results, and active model."],
|
|
1734
|
+
["order <p1> <p2> …", "Set the fallback order (e.g. ollama openrouter groq)."],
|
|
1735
|
+
["key <provider> <api-key>", "Save an API key under engines.<provider>.api_key."],
|
|
1736
|
+
["set <provider> <model-id>", "Pin a specific model id for one provider in the fallback map."],
|
|
1737
|
+
["test", "Resolve which model the router would pick right now."],
|
|
1738
|
+
["enable", "Enable the fallback router."],
|
|
1739
|
+
["disable", "Disable the fallback router (primary only)."],
|
|
1740
|
+
],
|
|
1741
|
+
examples: [
|
|
1742
|
+
"apx model status",
|
|
1743
|
+
"apx model order ollama openrouter groq",
|
|
1744
|
+
"apx model key groq sk-xxxx",
|
|
1745
|
+
"apx model set openrouter openrouter/anthropic/claude-3.7-sonnet",
|
|
1746
|
+
"apx model test",
|
|
1747
|
+
],
|
|
1748
|
+
}),
|
|
1749
|
+
"model status": topic({
|
|
1750
|
+
title: "apx model status",
|
|
1751
|
+
summary: "Show provider health + active model picked by the fallback router.",
|
|
1752
|
+
usage: ["apx model status", "apx model show"],
|
|
1753
|
+
examples: ["apx model status"],
|
|
1754
|
+
}),
|
|
1755
|
+
"model order": topic({
|
|
1756
|
+
title: "apx model order",
|
|
1757
|
+
summary: "Set the fallback order across providers.",
|
|
1758
|
+
usage: ["apx model order <p1> <p2> …"],
|
|
1759
|
+
examples: ["apx model order ollama openrouter groq"],
|
|
1760
|
+
}),
|
|
1761
|
+
"model key": topic({
|
|
1762
|
+
title: "apx model key",
|
|
1763
|
+
summary: "Save an API key for one provider in ~/.apx/config.json (engines.<provider>.api_key).",
|
|
1764
|
+
usage: ["apx model key <groq|openrouter|openai|…> <api-key>"],
|
|
1765
|
+
examples: ["apx model key groq sk-xxxx"],
|
|
1766
|
+
}),
|
|
1767
|
+
"model set": topic({
|
|
1768
|
+
title: "apx model set",
|
|
1769
|
+
summary: "Pin a specific model id for one provider in the fallback map.",
|
|
1770
|
+
usage: ["apx model set <provider> <provider:model-id>"],
|
|
1771
|
+
examples: ["apx model set openrouter openrouter/anthropic/claude-3.7-sonnet"],
|
|
1772
|
+
}),
|
|
1773
|
+
"model test": topic({
|
|
1774
|
+
title: "apx model test",
|
|
1775
|
+
summary: "Resolve which model the router would pick right now.",
|
|
1776
|
+
usage: ["apx model test"],
|
|
1777
|
+
examples: ["apx model test"],
|
|
1778
|
+
}),
|
|
1779
|
+
"model enable": topic({
|
|
1780
|
+
title: "apx model enable",
|
|
1781
|
+
summary: "Enable the fallback router.",
|
|
1782
|
+
usage: ["apx model enable"],
|
|
1783
|
+
examples: ["apx model enable"],
|
|
1784
|
+
}),
|
|
1785
|
+
"model disable": topic({
|
|
1786
|
+
title: "apx model disable",
|
|
1787
|
+
summary: "Disable the fallback router (primary model only).",
|
|
1788
|
+
usage: ["apx model disable"],
|
|
1789
|
+
examples: ["apx model disable"],
|
|
1790
|
+
}),
|
|
1791
|
+
|
|
1792
|
+
"daemon reload": topic({
|
|
1793
|
+
title: "apx daemon reload",
|
|
1794
|
+
summary: "Reload ~/.apx/config.json into the daemon without restarting.",
|
|
1795
|
+
usage: ["apx daemon reload"],
|
|
1796
|
+
examples: ["apx daemon reload"],
|
|
1797
|
+
}),
|
|
1081
1798
|
}));
|
|
1082
1799
|
|
|
1083
1800
|
const HELP_ALIASES = new Map(Object.entries({
|
|
@@ -1089,6 +1806,7 @@ const HELP_ALIASES = new Map(Object.entries({
|
|
|
1089
1806
|
"agent vault ls": "agent vault list",
|
|
1090
1807
|
"session ls": "session list",
|
|
1091
1808
|
"session show": "session get",
|
|
1809
|
+
"session search": "session find",
|
|
1092
1810
|
"sessions ls": "sessions list",
|
|
1093
1811
|
"mcp ls": "mcp list",
|
|
1094
1812
|
"mcp rm": "mcp remove",
|
|
@@ -1124,6 +1842,56 @@ const HELP_ALIASES = new Map(Object.entries({
|
|
|
1124
1842
|
"plugin list": "plugins list",
|
|
1125
1843
|
"plugin ls": "plugins list",
|
|
1126
1844
|
"plugin status": "plugins status",
|
|
1845
|
+
"telegram channels": "telegram channel",
|
|
1846
|
+
"telegram channels list": "telegram channel list",
|
|
1847
|
+
"telegram channels ls": "telegram channel list",
|
|
1848
|
+
"telegram channels add": "telegram channel add",
|
|
1849
|
+
"telegram channels show": "telegram channel show",
|
|
1850
|
+
"telegram channels set": "telegram channel set",
|
|
1851
|
+
"telegram channels unset": "telegram channel unset",
|
|
1852
|
+
"telegram channels remove": "telegram channel remove",
|
|
1853
|
+
"telegram channels rm": "telegram channel remove",
|
|
1854
|
+
"telegram channel ls": "telegram channel list",
|
|
1855
|
+
"telegram channel get": "telegram channel show",
|
|
1856
|
+
"telegram channel rm": "telegram channel remove",
|
|
1857
|
+
"project config get": "project config show",
|
|
1858
|
+
"project config rm": "project config unset",
|
|
1859
|
+
|
|
1860
|
+
// tasks (alias of task)
|
|
1861
|
+
"tasks list": "task list",
|
|
1862
|
+
"tasks ls": "task list",
|
|
1863
|
+
"task ls": "task list",
|
|
1864
|
+
"tasks add": "task add",
|
|
1865
|
+
"tasks new": "task add",
|
|
1866
|
+
"tasks create": "task add",
|
|
1867
|
+
"task new": "task add",
|
|
1868
|
+
"task create": "task add",
|
|
1869
|
+
"tasks show": "task show",
|
|
1870
|
+
"tasks get": "task show",
|
|
1871
|
+
"task get": "task show",
|
|
1872
|
+
"tasks done": "task done",
|
|
1873
|
+
"tasks complete": "task done",
|
|
1874
|
+
"task complete": "task done",
|
|
1875
|
+
"tasks drop": "task drop",
|
|
1876
|
+
"tasks archive": "task drop",
|
|
1877
|
+
"task archive": "task drop",
|
|
1878
|
+
"tasks reopen": "task reopen",
|
|
1879
|
+
"tasks patch": "task patch",
|
|
1880
|
+
"tasks edit": "task patch",
|
|
1881
|
+
"task edit": "task patch",
|
|
1882
|
+
|
|
1883
|
+
// pair
|
|
1884
|
+
"pair device": "pair new",
|
|
1885
|
+
"pair ls": "pair list",
|
|
1886
|
+
"pair rm": "pair revoke",
|
|
1887
|
+
|
|
1888
|
+
// voice
|
|
1889
|
+
"voice list": "voice providers",
|
|
1890
|
+
|
|
1891
|
+
// model
|
|
1892
|
+
"model show": "model status",
|
|
1893
|
+
"model set-order": "model order",
|
|
1894
|
+
"model set-key": "model key",
|
|
1127
1895
|
}));
|
|
1128
1896
|
|
|
1129
1897
|
function buildHelp(version) {
|
|
@@ -1163,6 +1931,10 @@ function buildHelp(version) {
|
|
|
1163
1931
|
hSec("Config"),
|
|
1164
1932
|
hCmd("apx config show", 36, "--effective --only-overrides"),
|
|
1165
1933
|
hCmd("apx config set|unset", 36, "<key> [value] edit .apc/config.json (JSON-aware)"),
|
|
1934
|
+
hCmd("apx model status", 36, "provider health + active model (fallback router)"),
|
|
1935
|
+
hCmd("apx model order", 36, "<p1> <p2> … fallback order e.g. ollama openrouter groq"),
|
|
1936
|
+
hCmd("apx model key", 36, "<groq|openrouter> <api-key> → ~/.apx/config.json"),
|
|
1937
|
+
hCmd("apx model test", 36, "resolve which model the router picks now"),
|
|
1166
1938
|
hCmd("apx permission show", 36, "show APX tool permission mode"),
|
|
1167
1939
|
hCmd("apx permission set <mode>", 36, "mode: total | automatico | permiso"),
|
|
1168
1940
|
|
|
@@ -1181,6 +1953,9 @@ function buildHelp(version) {
|
|
|
1181
1953
|
hCmd("apx session close-stale", 36, "auto-close sessions older than 1h"),
|
|
1182
1954
|
hCmd("apx session resume <id>", 36, "--summary --full (APC + Claude Code transcript)"),
|
|
1183
1955
|
hCmd("apx session compact <slug>", 36, "--conversation <id> collapse history into summary"),
|
|
1956
|
+
hCmd("apx session find <text>", 36, "find sessions by title (cross-engine) --deep --engine X"),
|
|
1957
|
+
hCmd("apx session summary <id>", 36, "LLM summary of any session by id"),
|
|
1958
|
+
hCmd("apx session ask <id> \"<q>\"", 36, "ask about a session --max-chunks N"),
|
|
1184
1959
|
hCmd("apx sessions list", 36, "list AI engine sessions --engine claude|codex|apx --project P | --dir D"),
|
|
1185
1960
|
|
|
1186
1961
|
hSec("MCPs"),
|
|
@@ -1194,6 +1969,7 @@ function buildHelp(version) {
|
|
|
1194
1969
|
|
|
1195
1970
|
hSec("Daemon Service"),
|
|
1196
1971
|
hCmd("apx daemon start", 36, ""),
|
|
1972
|
+
hCmd("apx daemon reload", 36, "reload ~/.apx/config.json without restart"),
|
|
1197
1973
|
hCmd("apx daemon stop", 36, ""),
|
|
1198
1974
|
hCmd("apx daemon status", 36, ""),
|
|
1199
1975
|
hCmd("apx daemon logs", 36, "--tail N legacy daemon stdout log"),
|
|
@@ -1211,7 +1987,7 @@ function buildHelp(version) {
|
|
|
1211
1987
|
|
|
1212
1988
|
hSec("LLM / Code"),
|
|
1213
1989
|
hCmd("apx code", 36, "APX terminal coding assistant"),
|
|
1214
|
-
hCmd("apx exec
|
|
1990
|
+
hCmd("apx exec \"prompt\"", 36, "super-agent (default) --model <id> -a <agent> for APC slug"),
|
|
1215
1991
|
hCmd("apx chat <agent>", 36, "interactive agent REPL --conversation <id>"),
|
|
1216
1992
|
hCmd("apx search \"query\"", 36, "web search (ddg | brave | browser) --mode <m> -n N"),
|
|
1217
1993
|
hCmd("apx conversations list", 36, "stored exec/chat conversations for <agent>"),
|
|
@@ -1241,6 +2017,15 @@ function buildHelp(version) {
|
|
|
1241
2017
|
hCmd("apx routine disable <name>", 36, ""),
|
|
1242
2018
|
hCmd("apx routine remove <name>", 36, ""),
|
|
1243
2019
|
|
|
2020
|
+
hSec("Tasks"),
|
|
2021
|
+
hCmd("apx task add \"<title>\"", 36, "--tag t --due 2026-06-01 --agent A --body \"...\""),
|
|
2022
|
+
hCmd("apx task list", 36, "--state open|done|dropped|all --tag X --agent Y --limit N"),
|
|
2023
|
+
hCmd("apx task show <id>", 36, "print one task as JSON"),
|
|
2024
|
+
hCmd("apx task done <id>", 36, "--by <name> mark task done"),
|
|
2025
|
+
hCmd("apx task drop <id>", 36, "drop / archive a task"),
|
|
2026
|
+
hCmd("apx task reopen <id>", 36, "reopen a done/dropped task"),
|
|
2027
|
+
hCmd("apx task patch <id>", 36, "--title T --body B --due D --agent A --tag t"),
|
|
2028
|
+
|
|
1244
2029
|
hSec("Artifacts"),
|
|
1245
2030
|
hCmd("apx artifact create <name>", 36, "create managed file in project storage [--content '...'] [--project 0]"),
|
|
1246
2031
|
hCmd("apx artifact list", 36, "list artifacts"),
|
|
@@ -1259,6 +2044,22 @@ function buildHelp(version) {
|
|
|
1259
2044
|
hCmd("apx plugins list", 36, "show loaded plugins and their status"),
|
|
1260
2045
|
hCmd("apx plugins status <id>", 36, "detailed status of one plugin (e.g. telegram)"),
|
|
1261
2046
|
|
|
2047
|
+
hSec("Voice & Overlay"),
|
|
2048
|
+
hCmd("apx voice say \"text\"", 36, "TTS via daemon --provider <id> --voice <name> --no-play"),
|
|
2049
|
+
hCmd("apx voice listen", 36, "mic → /voice/turn → reply --seconds N --no-play"),
|
|
2050
|
+
hCmd("apx voice providers", 36, "list configured TTS / STT providers"),
|
|
2051
|
+
hCmd("apx desktop start", 36, "launch floating voice desktop window (Electron)"),
|
|
2052
|
+
hCmd("apx desktop stop", 36, ""),
|
|
2053
|
+
hCmd("apx desktop status", 36, "show desktop process + autostart state"),
|
|
2054
|
+
hCmd("apx desktop install", 36, "auto-launch the window at login (mac/win/linux)"),
|
|
2055
|
+
hCmd("apx desktop uninstall", 36, "remove the auto-launch entry"),
|
|
2056
|
+
|
|
2057
|
+
hSec("Pair (companion devices)"),
|
|
2058
|
+
hCmd("apx pair [label]", 36, "QR pairing for Deck app / companion clients"),
|
|
2059
|
+
hCmd("apx pair web", 36, "QR + link to pair a browser on the LAN"),
|
|
2060
|
+
hCmd("apx pair list", 36, "list paired clients"),
|
|
2061
|
+
hCmd("apx pair revoke <id>", 36, "revoke a paired client token"),
|
|
2062
|
+
|
|
1262
2063
|
hSec("Flags"),
|
|
1263
2064
|
hFlag("--project <name|id|path>", 36, "pin commands to a specific project"),
|
|
1264
2065
|
hFlag("--help", 36, "show this help"),
|
|
@@ -1290,6 +2091,10 @@ function buildTopicHelp(t) {
|
|
|
1290
2091
|
lines.push(hSec("Examples"));
|
|
1291
2092
|
for (const ex of t.examples) lines.push(` ${H.WH}${ex}${H.R}`);
|
|
1292
2093
|
}
|
|
2094
|
+
if (t.notes?.length) {
|
|
2095
|
+
lines.push(hSec("Notes"));
|
|
2096
|
+
for (const n of t.notes) lines.push(` ${H.DI}${n}${H.R}`);
|
|
2097
|
+
}
|
|
1293
2098
|
lines.push(
|
|
1294
2099
|
hSec("Global Flags"),
|
|
1295
2100
|
hFlag("--help", 28, "show this help"),
|
|
@@ -1317,7 +2122,7 @@ function findHelpTopic(argv) {
|
|
|
1317
2122
|
: withoutFlags;
|
|
1318
2123
|
if (tokens.length === 0) return { global: true };
|
|
1319
2124
|
|
|
1320
|
-
const projectSubcommands = new Set(["add", "list", "ls", "remove", "rm", "rebuild"]);
|
|
2125
|
+
const projectSubcommands = new Set(["add", "list", "ls", "remove", "rm", "rebuild", "config"]);
|
|
1321
2126
|
if (tokens[0] === "project" && tokens.length >= 3 && !projectSubcommands.has(tokens[1])) {
|
|
1322
2127
|
for (let n = tokens.length - 2; n > 0; n--) {
|
|
1323
2128
|
const key = normalizeHelpKey(tokens.slice(2, 2 + n).join(" "));
|
|
@@ -1359,6 +2164,8 @@ function parseArgs(argv) {
|
|
|
1359
2164
|
}
|
|
1360
2165
|
} else if (a === "-n") {
|
|
1361
2166
|
args.flags.n = argv[++i];
|
|
2167
|
+
} else if (a === "-a") {
|
|
2168
|
+
args.flags.agent = argv[++i];
|
|
1362
2169
|
} else {
|
|
1363
2170
|
args._.push(a);
|
|
1364
2171
|
}
|
|
@@ -1410,12 +2217,22 @@ async function dispatch(cmd, rest) {
|
|
|
1410
2217
|
const sub = rest[0];
|
|
1411
2218
|
const a = parseArgs(rest.slice(1));
|
|
1412
2219
|
const PROJECT_SUBCOMMANDS = new Set([
|
|
1413
|
-
"add", "list", "ls", "remove", "rm", "rebuild",
|
|
2220
|
+
"add", "list", "ls", "remove", "rm", "rebuild", "config",
|
|
1414
2221
|
]);
|
|
1415
2222
|
if (sub === "add") await cmdProjectAdd(a);
|
|
1416
2223
|
else if (sub === "list" || sub === "ls") await cmdProjectList();
|
|
1417
2224
|
else if (sub === "remove" || sub === "rm") await cmdProjectRemove(a);
|
|
1418
2225
|
else if (sub === "rebuild") await cmdProjectRebuild(a);
|
|
2226
|
+
else if (sub === "config") {
|
|
2227
|
+
// apx project config <show|set|unset|edit> <project> ...
|
|
2228
|
+
const csub = rest[1];
|
|
2229
|
+
const ca = parseArgs(rest.slice(2));
|
|
2230
|
+
if (csub === "show" || csub === "get") await cmdProjectConfigShow(ca);
|
|
2231
|
+
else if (csub === "set") await cmdProjectConfigSet(ca);
|
|
2232
|
+
else if (csub === "unset" || csub === "rm") await cmdProjectConfigUnset(ca);
|
|
2233
|
+
else if (csub === "edit") await cmdProjectConfigEdit(ca);
|
|
2234
|
+
else die(`unknown project config subcommand: ${csub || "(none)"} — try: show, set, unset, edit`);
|
|
2235
|
+
}
|
|
1419
2236
|
else if (sub && !PROJECT_SUBCOMMANDS.has(sub)) {
|
|
1420
2237
|
// Sugar: `apx project <name|id> <subcommand...>` runs the inner
|
|
1421
2238
|
// subcommand with --project=<name|id> appended.
|
|
@@ -1440,9 +2257,11 @@ async function dispatch(cmd, rest) {
|
|
|
1440
2257
|
else if (sub === "vault") {
|
|
1441
2258
|
const vsub = a._[0];
|
|
1442
2259
|
const va = { ...a, _: a._.slice(1) };
|
|
1443
|
-
if (vsub === "list" || vsub === "ls") cmdAgentVaultList();
|
|
2260
|
+
if (vsub === "list" || vsub === "ls") cmdAgentVaultList(va);
|
|
1444
2261
|
else if (vsub === "add") await cmdAgentVaultAdd(va);
|
|
1445
|
-
else
|
|
2262
|
+
else if (vsub === "rm" || vsub === "remove") cmdAgentVaultRm(va);
|
|
2263
|
+
else if (vsub === "restore") cmdAgentVaultRestore(va);
|
|
2264
|
+
else die(`unknown vault subcommand: ${vsub || "(none)"} — try: list, add, rm, restore`);
|
|
1446
2265
|
}
|
|
1447
2266
|
else die(`unknown agent subcommand: ${sub || "(none)"}`);
|
|
1448
2267
|
break;
|
|
@@ -1464,6 +2283,9 @@ async function dispatch(cmd, rest) {
|
|
|
1464
2283
|
else if (sub === "close-stale") cmdSessionCloseStale();
|
|
1465
2284
|
else if (sub === "resume") await cmdSessionResume(a);
|
|
1466
2285
|
else if (sub === "compact") await cmdSessionCompact(a);
|
|
2286
|
+
else if (sub === "find" || sub === "search") cmdSessionFind(a);
|
|
2287
|
+
else if (sub === "summary") await cmdSessionSummary(a);
|
|
2288
|
+
else if (sub === "ask") await cmdSessionAsk(a);
|
|
1467
2289
|
else die(`unknown session subcommand: ${sub || "(none)"}`);
|
|
1468
2290
|
break;
|
|
1469
2291
|
}
|
|
@@ -1497,12 +2319,25 @@ async function dispatch(cmd, rest) {
|
|
|
1497
2319
|
const a = parseArgs(rest.slice(1));
|
|
1498
2320
|
if (sub === "start") await cmdDaemonStart(a);
|
|
1499
2321
|
else if (sub === "stop") await cmdDaemonStop(a);
|
|
2322
|
+
else if (sub === "restart") await cmdDaemonRestart(a);
|
|
2323
|
+
else if (sub === "reload") await cmdDaemonReload(a);
|
|
1500
2324
|
else if (sub === "status") await cmdDaemonStatus(a);
|
|
1501
2325
|
else if (sub === "logs") cmdDaemonLogs(a);
|
|
1502
2326
|
else die(`unknown daemon subcommand: ${sub || "(none)"}`);
|
|
1503
2327
|
break;
|
|
1504
2328
|
}
|
|
1505
2329
|
|
|
2330
|
+
case "pair": {
|
|
2331
|
+
const sub = rest[0];
|
|
2332
|
+
const a = parseArgs(rest.slice(1));
|
|
2333
|
+
if (!sub || sub === "new" || sub === "device" || sub === "deck") await cmdPair(a);
|
|
2334
|
+
else if (sub === "web") await cmdPairWeb(a);
|
|
2335
|
+
else if (sub === "list" || sub === "ls") await cmdPairList();
|
|
2336
|
+
else if (sub === "revoke" || sub === "rm") await cmdPairRevoke(a);
|
|
2337
|
+
else die(`unknown pair subcommand: ${sub} — try: (no arg)/deck, web, list, revoke <id>`);
|
|
2338
|
+
break;
|
|
2339
|
+
}
|
|
2340
|
+
|
|
1506
2341
|
case "telegram": {
|
|
1507
2342
|
const sub = rest[0];
|
|
1508
2343
|
const a = parseArgs(rest.slice(1));
|
|
@@ -1511,6 +2346,27 @@ async function dispatch(cmd, rest) {
|
|
|
1511
2346
|
else if (sub === "start") await cmdTelegramStart();
|
|
1512
2347
|
else if (sub === "stop") await cmdTelegramStop();
|
|
1513
2348
|
else if (sub === "setup") cmdTelegramSetup();
|
|
2349
|
+
else if (sub === "channel" || sub === "channels") {
|
|
2350
|
+
const csub = rest[1];
|
|
2351
|
+
const ca = parseArgs(rest.slice(2));
|
|
2352
|
+
if (csub === "add") await cmdTelegramChannelAdd(ca);
|
|
2353
|
+
else if (csub === "list" || csub === "ls" || !csub) await cmdTelegramChannelList();
|
|
2354
|
+
else if (csub === "show" || csub === "get") await cmdTelegramChannelShow(ca);
|
|
2355
|
+
else if (csub === "set") await cmdTelegramChannelSet(ca);
|
|
2356
|
+
else if (csub === "unset") await cmdTelegramChannelUnset(ca);
|
|
2357
|
+
else if (csub === "remove" || csub === "rm") await cmdTelegramChannelRemove(ca);
|
|
2358
|
+
else die(`unknown telegram channel subcommand: ${csub} — try: add, list, show, set, unset, remove`);
|
|
2359
|
+
}
|
|
2360
|
+
else if (sub === "contacts" || sub === "contact") {
|
|
2361
|
+
const csub = rest[1];
|
|
2362
|
+
const ca = parseArgs(rest.slice(2));
|
|
2363
|
+
if (csub === "rm" || csub === "remove") await cmdTelegramContactRemove(ca);
|
|
2364
|
+
else if (!csub || csub === "list" || csub === "ls") await cmdTelegramContacts();
|
|
2365
|
+
else die(`unknown telegram contacts subcommand: ${csub} — try: list, rm`);
|
|
2366
|
+
}
|
|
2367
|
+
else if (sub === "role") await cmdTelegramRole(parseArgs(rest.slice(1)));
|
|
2368
|
+
else if (sub === "roles") await cmdTelegramRoles(parseArgs(rest.slice(1)));
|
|
2369
|
+
else if (sub === "owner") await cmdTelegramOwner(parseArgs(rest.slice(1)));
|
|
1514
2370
|
else die(`unknown telegram subcommand: ${sub || "(none)"}`);
|
|
1515
2371
|
break;
|
|
1516
2372
|
}
|
|
@@ -1528,7 +2384,7 @@ async function dispatch(cmd, rest) {
|
|
|
1528
2384
|
case "log":
|
|
1529
2385
|
case "logs": {
|
|
1530
2386
|
// `apx log` is the unified daemon log (everything: telegram, whisper,
|
|
1531
|
-
// super-agent, tools,
|
|
2387
|
+
// super-agent, tools, desktop). For just the legacy stdout sink,
|
|
1532
2388
|
// use `apx daemon logs`. `apx log -f` follows; `--errors` filters.
|
|
1533
2389
|
await cmdLog(parseArgs(rest));
|
|
1534
2390
|
break;
|
|
@@ -1595,6 +2451,11 @@ async function dispatch(cmd, rest) {
|
|
|
1595
2451
|
break;
|
|
1596
2452
|
}
|
|
1597
2453
|
|
|
2454
|
+
case "model": {
|
|
2455
|
+
await cmdModel(parseArgs(rest));
|
|
2456
|
+
break;
|
|
2457
|
+
}
|
|
2458
|
+
|
|
1598
2459
|
case "plugins":
|
|
1599
2460
|
case "plugin": {
|
|
1600
2461
|
const sub = rest[0];
|
|
@@ -1633,6 +2494,21 @@ async function dispatch(cmd, rest) {
|
|
|
1633
2494
|
break;
|
|
1634
2495
|
}
|
|
1635
2496
|
|
|
2497
|
+
case "task":
|
|
2498
|
+
case "tasks": {
|
|
2499
|
+
const sub = rest[0];
|
|
2500
|
+
const a = parseArgs(rest.slice(1));
|
|
2501
|
+
if (!sub || sub === "list" || sub === "ls") await cmdTaskList(a);
|
|
2502
|
+
else if (sub === "add" || sub === "new" || sub === "create") await cmdTaskAdd(a);
|
|
2503
|
+
else if (sub === "show" || sub === "get") await cmdTaskShow(a);
|
|
2504
|
+
else if (sub === "done" || sub === "complete") await cmdTaskDone(a);
|
|
2505
|
+
else if (sub === "drop" || sub === "archive") await cmdTaskDrop(a);
|
|
2506
|
+
else if (sub === "reopen") await cmdTaskReopen(a);
|
|
2507
|
+
else if (sub === "patch" || sub === "edit") await cmdTaskPatch(a);
|
|
2508
|
+
else die(`unknown task subcommand: ${sub}\nUsage: apx task <list|add|show|done|drop|reopen|patch>`);
|
|
2509
|
+
break;
|
|
2510
|
+
}
|
|
2511
|
+
|
|
1636
2512
|
case "command":
|
|
1637
2513
|
case "commands": {
|
|
1638
2514
|
const sub = rest[0];
|
|
@@ -1649,6 +2525,7 @@ async function dispatch(cmd, rest) {
|
|
|
1649
2525
|
if (!sub || sub === "add") await cmdSkillsAdd(a);
|
|
1650
2526
|
else if (sub === "list" || sub === "ls") await cmdSkillsList(a);
|
|
1651
2527
|
else if (sub === "status") await cmdSkillsStatus();
|
|
2528
|
+
else if (sub === "sync" || sub === "refresh") await cmdSkillsSync(a);
|
|
1652
2529
|
else die(`unknown skills subcommand: ${sub}`);
|
|
1653
2530
|
break;
|
|
1654
2531
|
}
|
|
@@ -1671,13 +2548,28 @@ async function dispatch(cmd, rest) {
|
|
|
1671
2548
|
await cmdUpdate(parseArgs(rest), VERSION);
|
|
1672
2549
|
return; // skip checkForUpdate after an update
|
|
1673
2550
|
|
|
1674
|
-
case "overlay":
|
|
2551
|
+
case "overlay":
|
|
2552
|
+
console.error(" apx overlay has been renamed to apx desktop — forwarding.");
|
|
2553
|
+
/* falls through */
|
|
2554
|
+
case "desktop": {
|
|
1675
2555
|
const [sub, ...oRest] = rest;
|
|
1676
2556
|
const oArgs = parseArgs(oRest);
|
|
1677
|
-
if (!sub || sub === "start") { await
|
|
1678
|
-
if (sub === "stop") { await
|
|
1679
|
-
if (sub === "status") { await
|
|
1680
|
-
|
|
2557
|
+
if (!sub || sub === "start") { await cmdDesktopStart(oArgs); return; }
|
|
2558
|
+
if (sub === "stop") { await cmdDesktopStop(oArgs); return; }
|
|
2559
|
+
if (sub === "status") { await cmdDesktopStatus(oArgs);return; }
|
|
2560
|
+
if (sub === "install") { await cmdDesktopInstall(oArgs); return; }
|
|
2561
|
+
if (sub === "uninstall") { await cmdDesktopUninstall(oArgs);return; }
|
|
2562
|
+
die(`unknown desktop sub-command: ${sub}\nUsage: apx desktop <start|stop|status|install|uninstall>`);
|
|
2563
|
+
return;
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
case "voice": {
|
|
2567
|
+
const [sub, ...vRest] = rest;
|
|
2568
|
+
const vArgs = parseArgs(vRest);
|
|
2569
|
+
if (sub === "say") { await cmdVoiceSay(vArgs); return; }
|
|
2570
|
+
if (sub === "listen") { await cmdVoiceListen(vArgs); return; }
|
|
2571
|
+
if (sub === "providers" || sub === "list") { await cmdVoiceProviders(); return; }
|
|
2572
|
+
die(`unknown voice sub-command: ${sub || "(missing)"}\nUsage: apx voice <say|listen|providers>`);
|
|
1681
2573
|
return;
|
|
1682
2574
|
}
|
|
1683
2575
|
|