gitextract_9wv9z_k8/ ├── .dockerignore ├── .flake8 ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── 1-question.md │ │ ├── 2-feature_request.md │ │ ├── 3-documentation.md │ │ ├── 4-bug_report.md │ │ ├── 5-support_environment.md │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── condarc │ └── workflows/ │ ├── deploy-website.yml │ ├── desktop-release.yml │ ├── docker-release.yml │ ├── first-time-contributor-welcome.yml │ ├── npm-format.yml │ ├── pr-label.yml │ ├── pre-commit.yml │ ├── publish-pypi.yml │ └── tests.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .python-version ├── CONTRIBUTING.md ├── CONTRIBUTING_zh.md ├── LICENSE ├── README.md ├── README_ja.md ├── README_zh.md ├── SECURITY.md ├── console/ │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.tsx │ │ ├── api/ │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── modules/ │ │ │ │ ├── agent.ts │ │ │ │ ├── agents.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── channel.ts │ │ │ │ ├── chat.ts │ │ │ │ ├── console.ts │ │ │ │ ├── cronjob.ts │ │ │ │ ├── env.ts │ │ │ │ ├── heartbeat.ts │ │ │ │ ├── localModel.ts │ │ │ │ ├── mcp.ts │ │ │ │ ├── ollamaModel.ts │ │ │ │ ├── provider.ts │ │ │ │ ├── root.ts │ │ │ │ ├── security.ts │ │ │ │ ├── skill.ts │ │ │ │ ├── tokenUsage.ts │ │ │ │ ├── tools.ts │ │ │ │ ├── userTimezone.ts │ │ │ │ └── workspace.ts │ │ │ ├── request.ts │ │ │ └── types/ │ │ │ ├── agent.ts │ │ │ ├── agents.ts │ │ │ ├── channel.ts │ │ │ ├── chat.ts │ │ │ ├── cronjob.ts │ │ │ ├── env.ts │ │ │ ├── heartbeat.ts │ │ │ ├── index.ts │ │ │ ├── mcp.ts │ │ │ ├── provider.ts │ │ │ ├── skill.ts │ │ │ ├── tokenUsage.ts │ │ │ └── workspace.ts │ │ ├── components/ │ │ │ ├── AgentSelector/ │ │ │ │ ├── index.module.less │ │ │ │ └── index.tsx │ │ │ ├── ConsoleCronBubble/ │ │ │ │ ├── index.module.less │ │ │ │ └── index.tsx │ │ │ ├── LanguageSwitcher.tsx │ │ │ ├── MarkdownCopy/ │ │ │ │ ├── MarkdownCopy.tsx │ │ │ │ └── index.module.less │ │ │ ├── PageHeader/ │ │ │ │ └── index.tsx │ │ │ └── ThemeToggleButton/ │ │ │ ├── index.module.less │ │ │ └── index.tsx │ │ ├── constants/ │ │ │ └── timezone.ts │ │ ├── contexts/ │ │ │ └── ThemeContext.tsx │ │ ├── i18n.ts │ │ ├── layouts/ │ │ │ ├── Header.tsx │ │ │ ├── MainLayout/ │ │ │ │ └── index.tsx │ │ │ ├── Sidebar.tsx │ │ │ ├── constants.ts │ │ │ └── index.module.less │ │ ├── locales/ │ │ │ ├── en.json │ │ │ ├── ja.json │ │ │ ├── ru.json │ │ │ └── zh.json │ │ ├── main.tsx │ │ ├── pages/ │ │ │ ├── Agent/ │ │ │ │ ├── Config/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ContextManagementCard.tsx │ │ │ │ │ │ ├── PageHeader.tsx │ │ │ │ │ │ ├── ReactAgentCard.tsx │ │ │ │ │ │ ├── SliderWithValue.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useAgentConfig.tsx │ │ │ │ ├── MCP/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── MCPClientCard.tsx │ │ │ │ │ │ ├── MCPClientDrawer.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useMCP.ts │ │ │ │ ├── Skills/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── SkillCard.tsx │ │ │ │ │ │ ├── SkillDrawer.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useSkills.ts │ │ │ │ ├── Tools/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useTools.ts │ │ │ │ └── Workspace/ │ │ │ │ ├── components/ │ │ │ │ │ ├── FileEditor.tsx │ │ │ │ │ ├── FileItem.tsx │ │ │ │ │ ├── FileListPanel.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useAgentsData.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── index.module.less │ │ │ │ └── index.tsx │ │ │ ├── Chat/ │ │ │ │ ├── ModelSelector/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── OptionsPanel/ │ │ │ │ │ ├── FormItem.tsx │ │ │ │ │ ├── OptionsEditor.tsx │ │ │ │ │ ├── defaultConfig.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.module.less │ │ │ │ ├── index.tsx │ │ │ │ └── sessionApi/ │ │ │ │ └── index.ts │ │ │ ├── Control/ │ │ │ │ ├── Channels/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ChannelCard.tsx │ │ │ │ │ │ ├── ChannelDrawer.tsx │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useChannels.ts │ │ │ │ ├── CronJobs/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── JobDrawer.tsx │ │ │ │ │ │ ├── columns.tsx │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── parseCron.ts │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useCronJobs.ts │ │ │ │ ├── Heartbeat/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── parseEvery.ts │ │ │ │ └── Sessions/ │ │ │ │ ├── components/ │ │ │ │ │ ├── FilterBar.tsx │ │ │ │ │ ├── SessionDrawer.tsx │ │ │ │ │ ├── columns.tsx │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.module.less │ │ │ │ ├── index.tsx │ │ │ │ └── useSessions.ts │ │ │ ├── Login/ │ │ │ │ └── index.tsx │ │ │ └── Settings/ │ │ │ ├── Agents/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AgentModal.tsx │ │ │ │ │ ├── AgentTable.tsx │ │ │ │ │ ├── PageHeader.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.module.less │ │ │ │ ├── index.tsx │ │ │ │ └── useAgents.ts │ │ │ ├── Environments/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AddButton.tsx │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ ├── EnvRow.tsx │ │ │ │ │ ├── PageHeader.tsx │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.module.less │ │ │ │ ├── index.tsx │ │ │ │ └── useEnvVars.ts │ │ │ ├── Models/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ModelManageModal.tsx │ │ │ │ │ ├── cards/ │ │ │ │ │ │ ├── LocalProviderCard.tsx │ │ │ │ │ │ ├── ProviderCard.tsx │ │ │ │ │ │ ├── RemoteProviderCard.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modals/ │ │ │ │ │ │ ├── CustomProviderModal.tsx │ │ │ │ │ │ ├── LocalModelManageModal.tsx │ │ │ │ │ │ ├── ModelManageModal.tsx │ │ │ │ │ │ ├── OllamaModelManageModal.tsx │ │ │ │ │ │ ├── ProviderConfigModal.tsx │ │ │ │ │ │ ├── RemoteModelManageModal.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── sections/ │ │ │ │ │ ├── LoadingState.tsx │ │ │ │ │ ├── ModelsSection.tsx │ │ │ │ │ ├── PageHeader.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.module.less │ │ │ │ ├── index.tsx │ │ │ │ └── useProviders.ts │ │ │ ├── Security/ │ │ │ │ ├── components/ │ │ │ │ │ ├── PageHeader.tsx │ │ │ │ │ ├── PreviewModal.tsx │ │ │ │ │ ├── RuleModal.tsx │ │ │ │ │ ├── RuleTable.tsx │ │ │ │ │ ├── SkillScannerSection.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.module.less │ │ │ │ ├── index.tsx │ │ │ │ ├── useSkillScanner.ts │ │ │ │ └── useToolGuard.ts │ │ │ ├── TokenUsage/ │ │ │ │ ├── components/ │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ ├── LoadingState.tsx │ │ │ │ │ ├── PageHeader.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.module.less │ │ │ │ └── index.tsx │ │ │ └── VoiceTranscription/ │ │ │ ├── index.module.less │ │ │ └── index.tsx │ │ ├── stores/ │ │ │ └── agentStore.ts │ │ ├── styles/ │ │ │ ├── form-override.css │ │ │ └── layout.css │ │ ├── utils/ │ │ │ ├── formatNumber.ts │ │ │ └── markdown.ts │ │ └── vite-env.d.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── deploy/ │ ├── Dockerfile │ ├── config/ │ │ └── supervisord.conf.template │ └── entrypoint.sh ├── docker-compose.yml ├── pyproject.toml ├── scripts/ │ ├── README.md │ ├── docker_build.sh │ ├── docker_sync_latest.sh │ ├── install.bat │ ├── install.ps1 │ ├── install.sh │ ├── pack/ │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── assets/ │ │ │ └── icon.icns │ │ ├── build_common.py │ │ ├── build_macos.sh │ │ ├── build_win.ps1 │ │ └── copaw_desktop.nsi │ ├── run_tests.py │ ├── website_build.sh │ ├── wheel_build.ps1 │ └── wheel_build.sh ├── setup.py ├── src/ │ └── copaw/ │ ├── __init__.py │ ├── __main__.py │ ├── __version__.py │ ├── agents/ │ │ ├── __init__.py │ │ ├── command_handler.py │ │ ├── hooks/ │ │ │ ├── __init__.py │ │ │ ├── bootstrap.py │ │ │ └── memory_compaction.py │ │ ├── md_files/ │ │ │ ├── en/ │ │ │ │ ├── AGENTS.md │ │ │ │ ├── BOOTSTRAP.md │ │ │ │ ├── HEARTBEAT.md │ │ │ │ ├── MEMORY.md │ │ │ │ ├── PROFILE.md │ │ │ │ └── SOUL.md │ │ │ ├── ru/ │ │ │ │ ├── AGENTS.md │ │ │ │ ├── BOOTSTRAP.md │ │ │ │ ├── HEARTBEAT.md │ │ │ │ ├── MEMORY.md │ │ │ │ ├── PROFILE.md │ │ │ │ └── SOUL.md │ │ │ └── zh/ │ │ │ ├── AGENTS.md │ │ │ ├── BOOTSTRAP.md │ │ │ ├── HEARTBEAT.md │ │ │ ├── MEMORY.md │ │ │ ├── PROFILE.md │ │ │ └── SOUL.md │ │ ├── memory/ │ │ │ ├── __init__.py │ │ │ ├── agent_md_manager.py │ │ │ └── memory_manager.py │ │ ├── model_factory.py │ │ ├── prompt.py │ │ ├── react_agent.py │ │ ├── routing_chat_model.py │ │ ├── schema.py │ │ ├── skills/ │ │ │ ├── __init__.py │ │ │ ├── browser_visible/ │ │ │ │ └── SKILL.md │ │ │ ├── cron/ │ │ │ │ └── SKILL.md │ │ │ ├── dingtalk_channel/ │ │ │ │ └── SKILL.md │ │ │ ├── docx/ │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── SKILL.md │ │ │ │ └── scripts/ │ │ │ │ ├── __init__.py │ │ │ │ ├── accept_changes.py │ │ │ │ ├── comment.py │ │ │ │ ├── office/ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── merge_runs.py │ │ │ │ │ │ └── simplify_redlines.py │ │ │ │ │ ├── pack.py │ │ │ │ │ ├── schemas/ │ │ │ │ │ │ ├── ISO-IEC29500-4_2016/ │ │ │ │ │ │ │ ├── dml-chart.xsd │ │ │ │ │ │ │ ├── dml-chartDrawing.xsd │ │ │ │ │ │ │ ├── dml-diagram.xsd │ │ │ │ │ │ │ ├── dml-lockedCanvas.xsd │ │ │ │ │ │ │ ├── dml-main.xsd │ │ │ │ │ │ │ ├── dml-picture.xsd │ │ │ │ │ │ │ ├── dml-spreadsheetDrawing.xsd │ │ │ │ │ │ │ ├── dml-wordprocessingDrawing.xsd │ │ │ │ │ │ │ ├── pml.xsd │ │ │ │ │ │ │ ├── shared-additionalCharacteristics.xsd │ │ │ │ │ │ │ ├── shared-bibliography.xsd │ │ │ │ │ │ │ ├── shared-commonSimpleTypes.xsd │ │ │ │ │ │ │ ├── shared-customXmlDataProperties.xsd │ │ │ │ │ │ │ ├── shared-customXmlSchemaProperties.xsd │ │ │ │ │ │ │ ├── shared-documentPropertiesCustom.xsd │ │ │ │ │ │ │ ├── shared-documentPropertiesExtended.xsd │ │ │ │ │ │ │ ├── shared-documentPropertiesVariantTypes.xsd │ │ │ │ │ │ │ ├── shared-math.xsd │ │ │ │ │ │ │ ├── shared-relationshipReference.xsd │ │ │ │ │ │ │ ├── sml.xsd │ │ │ │ │ │ │ ├── vml-main.xsd │ │ │ │ │ │ │ ├── vml-officeDrawing.xsd │ │ │ │ │ │ │ ├── vml-presentationDrawing.xsd │ │ │ │ │ │ │ ├── vml-spreadsheetDrawing.xsd │ │ │ │ │ │ │ ├── vml-wordprocessingDrawing.xsd │ │ │ │ │ │ │ ├── wml.xsd │ │ │ │ │ │ │ └── xml.xsd │ │ │ │ │ │ ├── ecma/ │ │ │ │ │ │ │ └── fouth-edition/ │ │ │ │ │ │ │ ├── opc-contentTypes.xsd │ │ │ │ │ │ │ ├── opc-coreProperties.xsd │ │ │ │ │ │ │ ├── opc-digSig.xsd │ │ │ │ │ │ │ └── opc-relationships.xsd │ │ │ │ │ │ ├── mce/ │ │ │ │ │ │ │ └── mc.xsd │ │ │ │ │ │ └── microsoft/ │ │ │ │ │ │ ├── wml-2010.xsd │ │ │ │ │ │ ├── wml-2012.xsd │ │ │ │ │ │ ├── wml-2018.xsd │ │ │ │ │ │ ├── wml-cex-2018.xsd │ │ │ │ │ │ ├── wml-cid-2016.xsd │ │ │ │ │ │ ├── wml-sdtdatahash-2020.xsd │ │ │ │ │ │ └── wml-symex-2015.xsd │ │ │ │ │ ├── soffice.py │ │ │ │ │ ├── unpack.py │ │ │ │ │ ├── validate.py │ │ │ │ │ └── validators/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── docx.py │ │ │ │ │ ├── pptx.py │ │ │ │ │ └── redlining.py │ │ │ │ └── templates/ │ │ │ │ ├── comments.xml │ │ │ │ ├── commentsExtended.xml │ │ │ │ ├── commentsExtensible.xml │ │ │ │ ├── commentsIds.xml │ │ │ │ └── people.xml │ │ │ ├── file_reader/ │ │ │ │ └── SKILL.md │ │ │ ├── guidance/ │ │ │ │ └── SKILL.md │ │ │ ├── himalaya/ │ │ │ │ ├── SKILL.md │ │ │ │ └── references/ │ │ │ │ └── configuration.md │ │ │ ├── news/ │ │ │ │ └── SKILL.md │ │ │ ├── pdf/ │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── SKILL.md │ │ │ │ ├── forms.md │ │ │ │ ├── reference.md │ │ │ │ └── scripts/ │ │ │ │ ├── check_bounding_boxes.py │ │ │ │ ├── check_fillable_fields.py │ │ │ │ ├── convert_pdf_to_images.py │ │ │ │ ├── create_validation_image.py │ │ │ │ ├── extract_form_field_info.py │ │ │ │ ├── extract_form_structure.py │ │ │ │ ├── fill_fillable_fields.py │ │ │ │ └── fill_pdf_form_with_annotations.py │ │ │ ├── pptx/ │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── SKILL.md │ │ │ │ ├── editing.md │ │ │ │ ├── pptxgenjs.md │ │ │ │ └── scripts/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add_slide.py │ │ │ │ ├── clean.py │ │ │ │ ├── office/ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── merge_runs.py │ │ │ │ │ │ └── simplify_redlines.py │ │ │ │ │ ├── pack.py │ │ │ │ │ ├── schemas/ │ │ │ │ │ │ ├── ISO-IEC29500-4_2016/ │ │ │ │ │ │ │ ├── dml-chart.xsd │ │ │ │ │ │ │ ├── dml-chartDrawing.xsd │ │ │ │ │ │ │ ├── dml-diagram.xsd │ │ │ │ │ │ │ ├── dml-lockedCanvas.xsd │ │ │ │ │ │ │ ├── dml-main.xsd │ │ │ │ │ │ │ ├── dml-picture.xsd │ │ │ │ │ │ │ ├── dml-spreadsheetDrawing.xsd │ │ │ │ │ │ │ ├── dml-wordprocessingDrawing.xsd │ │ │ │ │ │ │ ├── pml.xsd │ │ │ │ │ │ │ ├── shared-additionalCharacteristics.xsd │ │ │ │ │ │ │ ├── shared-bibliography.xsd │ │ │ │ │ │ │ ├── shared-commonSimpleTypes.xsd │ │ │ │ │ │ │ ├── shared-customXmlDataProperties.xsd │ │ │ │ │ │ │ ├── shared-customXmlSchemaProperties.xsd │ │ │ │ │ │ │ ├── shared-documentPropertiesCustom.xsd │ │ │ │ │ │ │ ├── shared-documentPropertiesExtended.xsd │ │ │ │ │ │ │ ├── shared-documentPropertiesVariantTypes.xsd │ │ │ │ │ │ │ ├── shared-math.xsd │ │ │ │ │ │ │ ├── shared-relationshipReference.xsd │ │ │ │ │ │ │ ├── sml.xsd │ │ │ │ │ │ │ ├── vml-main.xsd │ │ │ │ │ │ │ ├── vml-officeDrawing.xsd │ │ │ │ │ │ │ ├── vml-presentationDrawing.xsd │ │ │ │ │ │ │ ├── vml-spreadsheetDrawing.xsd │ │ │ │ │ │ │ ├── vml-wordprocessingDrawing.xsd │ │ │ │ │ │ │ ├── wml.xsd │ │ │ │ │ │ │ └── xml.xsd │ │ │ │ │ │ ├── ecma/ │ │ │ │ │ │ │ └── fouth-edition/ │ │ │ │ │ │ │ ├── opc-contentTypes.xsd │ │ │ │ │ │ │ ├── opc-coreProperties.xsd │ │ │ │ │ │ │ ├── opc-digSig.xsd │ │ │ │ │ │ │ └── opc-relationships.xsd │ │ │ │ │ │ ├── mce/ │ │ │ │ │ │ │ └── mc.xsd │ │ │ │ │ │ └── microsoft/ │ │ │ │ │ │ ├── wml-2010.xsd │ │ │ │ │ │ ├── wml-2012.xsd │ │ │ │ │ │ ├── wml-2018.xsd │ │ │ │ │ │ ├── wml-cex-2018.xsd │ │ │ │ │ │ ├── wml-cid-2016.xsd │ │ │ │ │ │ ├── wml-sdtdatahash-2020.xsd │ │ │ │ │ │ └── wml-symex-2015.xsd │ │ │ │ │ ├── soffice.py │ │ │ │ │ ├── unpack.py │ │ │ │ │ ├── validate.py │ │ │ │ │ └── validators/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── docx.py │ │ │ │ │ ├── pptx.py │ │ │ │ │ └── redlining.py │ │ │ │ └── thumbnail.py │ │ │ └── xlsx/ │ │ │ ├── LICENSE.txt │ │ │ ├── SKILL.md │ │ │ └── scripts/ │ │ │ ├── office/ │ │ │ │ ├── helpers/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── merge_runs.py │ │ │ │ │ └── simplify_redlines.py │ │ │ │ ├── pack.py │ │ │ │ ├── schemas/ │ │ │ │ │ ├── ISO-IEC29500-4_2016/ │ │ │ │ │ │ ├── dml-chart.xsd │ │ │ │ │ │ ├── dml-chartDrawing.xsd │ │ │ │ │ │ ├── dml-diagram.xsd │ │ │ │ │ │ ├── dml-lockedCanvas.xsd │ │ │ │ │ │ ├── dml-main.xsd │ │ │ │ │ │ ├── dml-picture.xsd │ │ │ │ │ │ ├── dml-spreadsheetDrawing.xsd │ │ │ │ │ │ ├── dml-wordprocessingDrawing.xsd │ │ │ │ │ │ ├── pml.xsd │ │ │ │ │ │ ├── shared-additionalCharacteristics.xsd │ │ │ │ │ │ ├── shared-bibliography.xsd │ │ │ │ │ │ ├── shared-commonSimpleTypes.xsd │ │ │ │ │ │ ├── shared-customXmlDataProperties.xsd │ │ │ │ │ │ ├── shared-customXmlSchemaProperties.xsd │ │ │ │ │ │ ├── shared-documentPropertiesCustom.xsd │ │ │ │ │ │ ├── shared-documentPropertiesExtended.xsd │ │ │ │ │ │ ├── shared-documentPropertiesVariantTypes.xsd │ │ │ │ │ │ ├── shared-math.xsd │ │ │ │ │ │ ├── shared-relationshipReference.xsd │ │ │ │ │ │ ├── sml.xsd │ │ │ │ │ │ ├── vml-main.xsd │ │ │ │ │ │ ├── vml-officeDrawing.xsd │ │ │ │ │ │ ├── vml-presentationDrawing.xsd │ │ │ │ │ │ ├── vml-spreadsheetDrawing.xsd │ │ │ │ │ │ ├── vml-wordprocessingDrawing.xsd │ │ │ │ │ │ ├── wml.xsd │ │ │ │ │ │ └── xml.xsd │ │ │ │ │ ├── ecma/ │ │ │ │ │ │ └── fouth-edition/ │ │ │ │ │ │ ├── opc-contentTypes.xsd │ │ │ │ │ │ ├── opc-coreProperties.xsd │ │ │ │ │ │ ├── opc-digSig.xsd │ │ │ │ │ │ └── opc-relationships.xsd │ │ │ │ │ ├── mce/ │ │ │ │ │ │ └── mc.xsd │ │ │ │ │ └── microsoft/ │ │ │ │ │ ├── wml-2010.xsd │ │ │ │ │ ├── wml-2012.xsd │ │ │ │ │ ├── wml-2018.xsd │ │ │ │ │ ├── wml-cex-2018.xsd │ │ │ │ │ ├── wml-cid-2016.xsd │ │ │ │ │ ├── wml-sdtdatahash-2020.xsd │ │ │ │ │ └── wml-symex-2015.xsd │ │ │ │ ├── soffice.py │ │ │ │ ├── unpack.py │ │ │ │ ├── validate.py │ │ │ │ └── validators/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── docx.py │ │ │ │ ├── pptx.py │ │ │ │ └── redlining.py │ │ │ └── recalc.py │ │ ├── skills_hub.py │ │ ├── skills_manager.py │ │ ├── tool_guard_mixin.py │ │ ├── tools/ │ │ │ ├── __init__.py │ │ │ ├── browser_control.py │ │ │ ├── browser_snapshot.py │ │ │ ├── desktop_screenshot.py │ │ │ ├── file_io.py │ │ │ ├── file_search.py │ │ │ ├── get_current_time.py │ │ │ ├── get_token_usage.py │ │ │ ├── memory_search.py │ │ │ ├── send_file.py │ │ │ ├── shell.py │ │ │ ├── utils.py │ │ │ └── view_image.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── audio_transcription.py │ │ ├── copaw_token_counter.py │ │ ├── file_handling.py │ │ ├── message_processing.py │ │ ├── setup_utils.py │ │ └── tool_message_utils.py │ ├── app/ │ │ ├── __init__.py │ │ ├── _app.py │ │ ├── agent_config_watcher.py │ │ ├── agent_context.py │ │ ├── approvals/ │ │ │ ├── __init__.py │ │ │ └── service.py │ │ ├── auth.py │ │ ├── channels/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── console/ │ │ │ │ ├── __init__.py │ │ │ │ └── channel.py │ │ │ ├── dingtalk/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ai_card.py │ │ │ │ ├── channel.py │ │ │ │ ├── constants.py │ │ │ │ ├── content_utils.py │ │ │ │ ├── handler.py │ │ │ │ ├── markdown.py │ │ │ │ └── utils.py │ │ │ ├── discord_/ │ │ │ │ ├── __init__.py │ │ │ │ └── channel.py │ │ │ ├── feishu/ │ │ │ │ ├── __init__.py │ │ │ │ ├── channel.py │ │ │ │ ├── constants.py │ │ │ │ └── utils.py │ │ │ ├── imessage/ │ │ │ │ ├── __init__.py │ │ │ │ └── channel.py │ │ │ ├── manager.py │ │ │ ├── matrix/ │ │ │ │ ├── __init__.py │ │ │ │ └── channel.py │ │ │ ├── mattermost/ │ │ │ │ ├── __init__.py │ │ │ │ └── channel.py │ │ │ ├── mqtt/ │ │ │ │ ├── __init__.py │ │ │ │ └── channel.py │ │ │ ├── qq/ │ │ │ │ ├── __init__.py │ │ │ │ └── channel.py │ │ │ ├── registry.py │ │ │ ├── renderer.py │ │ │ ├── schema.py │ │ │ ├── telegram/ │ │ │ │ ├── __init__.py │ │ │ │ ├── channel.py │ │ │ │ └── format_html.py │ │ │ ├── utils.py │ │ │ ├── voice/ │ │ │ │ ├── __init__.py │ │ │ │ ├── channel.py │ │ │ │ ├── conversation_relay.py │ │ │ │ ├── session.py │ │ │ │ ├── twilio_manager.py │ │ │ │ └── twiml.py │ │ │ ├── wecom/ │ │ │ │ ├── __init__.py │ │ │ │ ├── channel.py │ │ │ │ └── utils.py │ │ │ └── xiaoyi/ │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── channel.py │ │ │ ├── constants.py │ │ │ └── utils.py │ │ ├── console_push_store.py │ │ ├── crons/ │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ ├── executor.py │ │ │ ├── heartbeat.py │ │ │ ├── manager.py │ │ │ ├── models.py │ │ │ └── repo/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ └── json_repo.py │ │ ├── download_task_store.py │ │ ├── mcp/ │ │ │ ├── __init__.py │ │ │ ├── manager.py │ │ │ └── watcher.py │ │ ├── migration.py │ │ ├── multi_agent_manager.py │ │ ├── routers/ │ │ │ ├── __init__.py │ │ │ ├── agent.py │ │ │ ├── agent_scoped.py │ │ │ ├── agents.py │ │ │ ├── auth.py │ │ │ ├── config.py │ │ │ ├── console.py │ │ │ ├── envs.py │ │ │ ├── local_models.py │ │ │ ├── mcp.py │ │ │ ├── ollama_models.py │ │ │ ├── providers.py │ │ │ ├── schemas_config.py │ │ │ ├── skills.py │ │ │ ├── skills_stream.py │ │ │ ├── token_usage.py │ │ │ ├── tools.py │ │ │ ├── voice.py │ │ │ └── workspace.py │ │ ├── runner/ │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ ├── command_dispatch.py │ │ │ ├── daemon_commands.py │ │ │ ├── manager.py │ │ │ ├── models.py │ │ │ ├── query_error_dump.py │ │ │ ├── repo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ └── json_repo.py │ │ │ ├── runner.py │ │ │ ├── session.py │ │ │ ├── task_tracker.py │ │ │ └── utils.py │ │ └── workspace/ │ │ ├── __init__.py │ │ ├── service_factories.py │ │ ├── service_manager.py │ │ └── workspace.py │ ├── cli/ │ │ ├── __init__.py │ │ ├── app_cmd.py │ │ ├── auth_cmd.py │ │ ├── channels_cmd.py │ │ ├── chats_cmd.py │ │ ├── clean_cmd.py │ │ ├── cron_cmd.py │ │ ├── daemon_cmd.py │ │ ├── desktop_cmd.py │ │ ├── env_cmd.py │ │ ├── http.py │ │ ├── init_cmd.py │ │ ├── main.py │ │ ├── process_utils.py │ │ ├── providers_cmd.py │ │ ├── shutdown_cmd.py │ │ ├── skills_cmd.py │ │ ├── uninstall_cmd.py │ │ ├── update_cmd.py │ │ └── utils.py │ ├── config/ │ │ ├── __init__.py │ │ ├── config.py │ │ ├── context.py │ │ ├── timezone.py │ │ └── utils.py │ ├── constant.py │ ├── envs/ │ │ ├── __init__.py │ │ └── store.py │ ├── local_models/ │ │ ├── __init__.py │ │ ├── backends/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── llamacpp_backend.py │ │ │ └── mlx_backend.py │ │ ├── chat_model.py │ │ ├── factory.py │ │ ├── manager.py │ │ ├── schema.py │ │ └── tag_parser.py │ ├── providers/ │ │ ├── __init__.py │ │ ├── anthropic_provider.py │ │ ├── gemini_provider.py │ │ ├── models.py │ │ ├── ollama_manager.py │ │ ├── ollama_provider.py │ │ ├── openai_chat_model_compat.py │ │ ├── openai_provider.py │ │ ├── provider.py │ │ ├── provider_manager.py │ │ └── retry_chat_model.py │ ├── security/ │ │ ├── __init__.py │ │ ├── skill_scanner/ │ │ │ ├── __init__.py │ │ │ ├── analyzers/ │ │ │ │ ├── __init__.py │ │ │ │ └── pattern_analyzer.py │ │ │ ├── data/ │ │ │ │ └── default_policy.yaml │ │ │ ├── models.py │ │ │ ├── rules/ │ │ │ │ └── signatures/ │ │ │ │ ├── command_injection.yaml │ │ │ │ ├── data_exfiltration.yaml │ │ │ │ ├── hardcoded_secrets.yaml │ │ │ │ ├── obfuscation.yaml │ │ │ │ ├── prompt_injection.yaml │ │ │ │ ├── resource_abuse.yaml │ │ │ │ ├── social_engineering.yaml │ │ │ │ ├── supply_chain.yaml │ │ │ │ └── unauthorized_tool_use.yaml │ │ │ ├── scan_policy.py │ │ │ └── scanner.py │ │ └── tool_guard/ │ │ ├── __init__.py │ │ ├── approval.py │ │ ├── engine.py │ │ ├── guardians/ │ │ │ ├── __init__.py │ │ │ └── rule_guardian.py │ │ ├── models.py │ │ ├── rules/ │ │ │ └── dangerous_shell_commands.yaml │ │ └── utils.py │ ├── token_usage/ │ │ ├── __init__.py │ │ ├── manager.py │ │ └── model_wrapper.py │ ├── tokenizer/ │ │ ├── merges.txt │ │ ├── tokenizer.json │ │ ├── tokenizer_config.json │ │ └── vocab.json │ ├── tunnel/ │ │ ├── __init__.py │ │ ├── binary_manager.py │ │ └── cloudflare.py │ └── utils/ │ ├── __init__.py │ ├── logging.py │ └── telemetry.py ├── tests/ │ ├── __init__.py │ ├── integrated/ │ │ ├── test_app_startup.py │ │ └── test_version.py │ └── unit/ │ ├── channels/ │ │ ├── __init__.py │ │ └── test_qq_channel.py │ ├── cli/ │ │ ├── test_cli_shutdown.py │ │ ├── test_cli_update.py │ │ └── test_cli_version.py │ ├── memory/ │ │ └── test_copaw_token_counter.py │ ├── providers/ │ │ ├── test_anthropic_provider.py │ │ ├── test_default_provider.py │ │ ├── test_gemini_provider.py │ │ ├── test_kimi_provider.py │ │ ├── test_ollama_manager_timeout.py │ │ ├── test_ollama_provider.py │ │ ├── test_openai_provider.py │ │ ├── test_openai_stream_toolcall_compat.py │ │ └── test_provider_manager.py │ └── workspace/ │ ├── __init__.py │ ├── test_agent_creation.py │ ├── test_agent_id.py │ ├── test_agent_model.py │ ├── test_cli_agent_id.py │ ├── test_prompt.py │ └── test_workspace.py └── website/ ├── README.md ├── index.html ├── package.json ├── public/ │ ├── docs/ │ │ ├── channels.en.md │ │ ├── channels.zh.md │ │ ├── cli.en.md │ │ ├── cli.zh.md │ │ ├── commands.en.md │ │ ├── commands.zh.md │ │ ├── community.en.md │ │ ├── community.zh.md │ │ ├── comparison.en.md │ │ ├── comparison.zh.md │ │ ├── config.en.md │ │ ├── config.zh.md │ │ ├── console.en.md │ │ ├── console.zh.md │ │ ├── context.en.md │ │ ├── context.zh.md │ │ ├── contributing.en.md │ │ ├── contributing.zh.md │ │ ├── desktop.en.md │ │ ├── desktop.zh.md │ │ ├── faq.en.md │ │ ├── faq.zh.md │ │ ├── heartbeat.en.md │ │ ├── heartbeat.zh.md │ │ ├── intro.en.md │ │ ├── intro.zh.md │ │ ├── mcp.en.md │ │ ├── mcp.zh.md │ │ ├── memory.en.md │ │ ├── memory.zh.md │ │ ├── models.en.md │ │ ├── models.zh.md │ │ ├── multi-agent.en.md │ │ ├── multi-agent.zh.md │ │ ├── quickstart.en.md │ │ ├── quickstart.zh.md │ │ ├── roadmap.en.md │ │ ├── roadmap.zh.md │ │ ├── security.en.md │ │ ├── security.zh.md │ │ ├── skills.en.md │ │ └── skills.zh.md │ ├── release-notes/ │ │ ├── v0.0.4.md │ │ ├── v0.0.4.zh.md │ │ ├── v0.0.5-beta.1.md │ │ ├── v0.0.5-beta.1.zh.md │ │ ├── v0.0.5-beta.2.md │ │ ├── v0.0.5-beta.2.zh.md │ │ ├── v0.0.5-beta.3.md │ │ ├── v0.0.5-beta.3.zh.md │ │ ├── v0.0.5.md │ │ ├── v0.0.5.zh.md │ │ ├── v0.0.6.md │ │ ├── v0.0.6.zh.md │ │ ├── v0.0.7.md │ │ ├── v0.0.7.zh.md │ │ ├── v0.1.0.md │ │ └── v0.1.0.zh.md │ └── site.config.json ├── scripts/ │ ├── build-search-index.mjs │ └── spa-fallback-pages.mjs ├── src/ │ ├── App.tsx │ ├── components/ │ │ ├── BrandStory.tsx │ │ ├── CatPawIcon.tsx │ │ ├── CopawLogo.tsx │ │ ├── CopawMascot.tsx │ │ ├── DocSearch.tsx │ │ ├── DocSearchResults.tsx │ │ ├── Ecosystem.tsx │ │ ├── Features.tsx │ │ ├── FollowUs.tsx │ │ ├── Footer.tsx │ │ ├── Hero.tsx │ │ ├── MermaidBlock.tsx │ │ ├── Nav.tsx │ │ ├── QuickStart.tsx │ │ ├── Testimonials.tsx │ │ └── UseCases.tsx │ ├── config.ts │ ├── data/ │ │ └── testimonials.ts │ ├── i18n.ts │ ├── index.css │ ├── lib/ │ │ └── docsSearch.ts │ ├── main.tsx │ ├── pages/ │ │ ├── Docs.tsx │ │ ├── Home.tsx │ │ └── ReleaseNotes.tsx │ └── vite-env.d.ts ├── tsconfig.json └── vite.config.ts