- 输入栏新增运行模式切换器,仅对话空闲可切换,新对话继承当前选择 - plan 档锁定只读权限与沙箱执行环境(UI 禁用+后端强制),网络权限保持可调 - 计划写入 .astrion/plan/,submit_plan 提交后前端弹窗审批,批准自动切换 execute - ask 档直接输出讨论并禁用 ask_user;execute 档自行补全细节直接开工 - 个性化新增默认运行模式(默认 plan),主提示词加运行模式让位注解 - 修复后台命令绕过只读权限的漏洞(宿主机按 sandbox_write_access 选只读沙箱计划) - 计划审批与询问弹窗改用 100dvh 动态视口高度,适配移动端 Safari
70 lines
2.5 KiB
TypeScript
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
|
|
};
|