agent-Specialization/static/src/app/components.ts
JOJO ec294e2545 feat(work-mode): 新增运行模式系统 plan/ask/execute 三档
- 输入栏新增运行模式切换器,仅对话空闲可切换,新对话继承当前选择
- plan 档锁定只读权限与沙箱执行环境(UI 禁用+后端强制),网络权限保持可调
- 计划写入 .astrion/plan/,submit_plan 提交后前端弹窗审批,批准自动切换 execute
- ask 档直接输出讨论并禁用 ask_user;execute 档自行补全细节直接开工
- 个性化新增默认运行模式(默认 plan),主提示词加运行模式让位注解
- 修复后台命令绕过只读权限的漏洞(宿主机按 sandbox_write_access 选只读沙箱计划)
- 计划审批与询问弹窗改用 100dvh 动态视口高度,适配移动端 Safari
2026-08-13 12:52:19 +08:00

70 lines
2.5 KiB
TypeScript

import { defineAsyncComponent } from 'vue';
import ChatArea from '../components/chat/ChatArea.vue';
import ConversationSidebar from '../components/sidebar/ConversationSidebar.vue';
import ToolApprovalPanel from '../components/panels/ToolApprovalPanel.vue';
import GitChangesPanel from '../components/panels/GitChangesPanel.vue';
import TerminalPanel from '../components/panels/TerminalPanel.vue';
import TokenDrawer from '../components/token/TokenDrawer.vue';
import QuickMenu from '../components/input/QuickMenu.vue';
import InputComposer from '../components/input/InputComposer.vue';
import EffortSlider from '../components/input/EffortSlider.vue';
import AppShell from '../components/shell/AppShell.vue';
import StatusAvatar from '../components/avatar/StatusAvatar.vue';
const PersonalizationDrawer = defineAsyncComponent(
() => import('../components/personalization/PersonalizationDrawer.vue')
);
const ImagePicker = defineAsyncComponent(() => import('../components/overlay/ImagePicker.vue'));
const ConversationReviewDialog = defineAsyncComponent(
() => import('../components/overlay/ConversationReviewDialog.vue')
);
const SubAgentActivityDialog = defineAsyncComponent(
() => import('../components/overlay/SubAgentActivityDialog.vue')
);
const BackgroundCommandDialog = defineAsyncComponent(
() => import('../components/overlay/BackgroundCommandDialog.vue')
);
const VersioningDialog = defineAsyncComponent(
() => import('../components/overlay/VersioningDialog.vue')
);
const UserQuestionDialog = defineAsyncComponent(
() => import('../components/overlay/UserQuestionDialog.vue')
);
const PlanApprovalDialog = defineAsyncComponent(
() => import('../components/overlay/PlanApprovalDialog.vue')
);
const TutorialOverlay = defineAsyncComponent(
() => import('../components/overlay/TutorialOverlay.vue')
);
const NewUserTutorialPrompt = defineAsyncComponent(
() => import('../components/overlay/NewUserTutorialPrompt.vue')
);
const GoalProgressDialog = defineAsyncComponent(
() => import('../components/overlay/GoalProgressDialog.vue')
);
export const appComponents = {
ChatArea,
ConversationSidebar,
ToolApprovalPanel,
GitChangesPanel,
TerminalPanel,
TokenDrawer,
PersonalizationDrawer,
QuickMenu,
InputComposer,
EffortSlider,
AppShell,
StatusAvatar,
ImagePicker,
ConversationReviewDialog,
SubAgentActivityDialog,
BackgroundCommandDialog,
VersioningDialog,
UserQuestionDialog,
PlanApprovalDialog,
TutorialOverlay,
NewUserTutorialPrompt,
GoalProgressDialog
};