my-crew 0.1.0__tar.gz
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.
- my_crew-0.1.0/.dockerignore +32 -0
- my_crew-0.1.0/.env.example +125 -0
- my_crew-0.1.0/.github/workflows/ci.yml +64 -0
- my_crew-0.1.0/.github/workflows/release.yml +47 -0
- my_crew-0.1.0/.gitignore +63 -0
- my_crew-0.1.0/.python-version +1 -0
- my_crew-0.1.0/CHANGELOG.md +38 -0
- my_crew-0.1.0/CONTRIBUTING.md +33 -0
- my_crew-0.1.0/HANDOVER.md +133 -0
- my_crew-0.1.0/LICENSE +202 -0
- my_crew-0.1.0/NOTICE +8 -0
- my_crew-0.1.0/PKG-INFO +31 -0
- my_crew-0.1.0/README.md +84 -0
- my_crew-0.1.0/README.vi.md +83 -0
- my_crew-0.1.0/SECURITY.md +33 -0
- my_crew-0.1.0/config/mcp-server-pins.sh +11 -0
- my_crew-0.1.0/config/model_prices.yaml +15 -0
- my_crew-0.1.0/demo/profiles/kiem-dinh/MEMORY.md +1 -0
- my_crew-0.1.0/demo/profiles/kiem-dinh/PROJECT.md +3 -0
- my_crew-0.1.0/demo/profiles/kiem-dinh/SOUL.md +5 -0
- my_crew-0.1.0/demo/profiles/kiem-dinh/profile.yaml +40 -0
- my_crew-0.1.0/demo/profiles/nghien-cuu/MEMORY.md +1 -0
- my_crew-0.1.0/demo/profiles/nghien-cuu/PROJECT.md +3 -0
- my_crew-0.1.0/demo/profiles/nghien-cuu/SOUL.md +5 -0
- my_crew-0.1.0/demo/profiles/nghien-cuu/profile.yaml +49 -0
- my_crew-0.1.0/demo/profiles/noi-dung/MEMORY.md +1 -0
- my_crew-0.1.0/demo/profiles/noi-dung/PROJECT.md +3 -0
- my_crew-0.1.0/demo/profiles/noi-dung/SOUL.md +5 -0
- my_crew-0.1.0/demo/profiles/noi-dung/profile.yaml +43 -0
- my_crew-0.1.0/demo/profiles/phan-tich/MEMORY.md +1 -0
- my_crew-0.1.0/demo/profiles/phan-tich/PROJECT.md +3 -0
- my_crew-0.1.0/demo/profiles/phan-tich/SOUL.md +5 -0
- my_crew-0.1.0/demo/profiles/phan-tich/profile.yaml +40 -0
- my_crew-0.1.0/demo/profiles/thiet-ke/MEMORY.md +1 -0
- my_crew-0.1.0/demo/profiles/thiet-ke/PROJECT.md +3 -0
- my_crew-0.1.0/demo/profiles/thiet-ke/SOUL.md +5 -0
- my_crew-0.1.0/demo/profiles/thiet-ke/profile.yaml +40 -0
- my_crew-0.1.0/demo/profiles/truong-phong/MEMORY.md +1 -0
- my_crew-0.1.0/demo/profiles/truong-phong/PROJECT.md +3 -0
- my_crew-0.1.0/demo/profiles/truong-phong/SOUL.md +5 -0
- my_crew-0.1.0/demo/profiles/truong-phong/profile.yaml +49 -0
- my_crew-0.1.0/demo/registry.yaml +22 -0
- my_crew-0.1.0/demo/seed_office_events.py +165 -0
- my_crew-0.1.0/deploy/backup.sh +33 -0
- my_crew-0.1.0/deploy/docker/Dockerfile +44 -0
- my_crew-0.1.0/deploy/docker/docker-compose.yaml +31 -0
- my_crew-0.1.0/deploy/docker/my-crew.env.example +17 -0
- my_crew-0.1.0/deploy/install.sh +346 -0
- my_crew-0.1.0/deploy/launchd/com.mpm.report.daily.plist +27 -0
- my_crew-0.1.0/deploy/launchd/com.mpm.report.resource.plist +29 -0
- my_crew-0.1.0/deploy/launchd/com.mpm.report.weekly.plist +29 -0
- my_crew-0.1.0/deploy/launchd/com.mpm.service.plist +33 -0
- my_crew-0.1.0/deploy/launchd/com.mpm.web.plist +30 -0
- my_crew-0.1.0/deploy/launchd/install.sh +42 -0
- my_crew-0.1.0/deploy/launchd/run-report.sh +29 -0
- my_crew-0.1.0/deploy/launchd/uninstall.sh +15 -0
- my_crew-0.1.0/deploy/restore.sh +32 -0
- my_crew-0.1.0/docs/PACK-AUTHORING.md +87 -0
- my_crew-0.1.0/docs/action-gateway-explainer.md +172 -0
- my_crew-0.1.0/docs/archive/architecture-comparison.md +238 -0
- my_crew-0.1.0/docs/archive/e2e-comprehensive-v1-v8-report.md +93 -0
- my_crew-0.1.0/docs/archive/interview-cheat-sheet-1-page.md +67 -0
- my_crew-0.1.0/docs/archive/interview-prep-ai-product-po.md +300 -0
- my_crew-0.1.0/docs/archive/project-changelog.md +130 -0
- my_crew-0.1.0/docs/archive/uat-nghiem-thu-cac-case-quan-trong.md +168 -0
- my_crew-0.1.0/docs/archive/v1/codebase-summary.md +150 -0
- my_crew-0.1.0/docs/archive/v1/deployment-guide.md +171 -0
- my_crew-0.1.0/docs/archive/v1/outer-loop-patterns.md +114 -0
- my_crew-0.1.0/docs/archive/v1/project-overview-pdr.md +129 -0
- my_crew-0.1.0/docs/archive/v1/project-roadmap.md +153 -0
- my_crew-0.1.0/docs/archive/v1/system-architecture.md +208 -0
- my_crew-0.1.0/docs/archive/v2/README.md +65 -0
- my_crew-0.1.0/docs/archive/v2/architecture.md +417 -0
- my_crew-0.1.0/docs/archive/v2/deployment-production.md +97 -0
- my_crew-0.1.0/docs/archive/v2/examples/automation-blocker-stakeholder-note.yaml +28 -0
- my_crew-0.1.0/docs/archive/v2/feature-proposals.md +93 -0
- my_crew-0.1.0/docs/archive/v2/getting-started.md +692 -0
- my_crew-0.1.0/docs/archive/v2/profile-design.md +139 -0
- my_crew-0.1.0/docs/archive/v2/risks-open-questions.md +16 -0
- my_crew-0.1.0/docs/archive/v2/roadmap-m1.md +94 -0
- my_crew-0.1.0/docs/archive/v2/roadmap-m2.md +164 -0
- my_crew-0.1.0/docs/archive/v2/uat-checklist.md +108 -0
- my_crew-0.1.0/docs/code-standards.md +58 -0
- my_crew-0.1.0/docs/codebase-summary.md +505 -0
- my_crew-0.1.0/docs/deployment-guide.md +412 -0
- my_crew-0.1.0/docs/deployment-guide.vi.md +381 -0
- my_crew-0.1.0/docs/design-guidelines.md +149 -0
- my_crew-0.1.0/docs/huong-dan-su-dung.md +454 -0
- my_crew-0.1.0/docs/images/van-phong-3-cot-command-center.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-3d-tham-van-di-lai-gan.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-3d-toan-canh.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-banner-dieu-phoi.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-giao-viec-pic-preview.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-giao-viec-tu-xac-nhan.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-hop-nhat-3d-feed-composer.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-ket-qua-artifact-viewer.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-timeline.png +0 -0
- my_crew-0.1.0/docs/images/van-phong-workrooms-toan-canh.png +0 -0
- my_crew-0.1.0/docs/journals/260621-phase-0-scaffold.md +28 -0
- my_crew-0.1.0/docs/journals/260621-phase-1-slice-1-reporting.md +36 -0
- my_crew-0.1.0/docs/journals/260622-phase-1-slice-2-confluence-report.md +28 -0
- my_crew-0.1.0/docs/journals/260622-phase-1-slice-3-daily-weekly-cron.md +28 -0
- my_crew-0.1.0/docs/journals/260622-phase-2-guardrail-hardening.md +26 -0
- my_crew-0.1.0/docs/journals/260622-phase-3-okr-tracking.md +30 -0
- my_crew-0.1.0/docs/journals/260622-phase-4-resource-cost.md +28 -0
- my_crew-0.1.0/docs/journals/260622-phase-5-audience-split.md +26 -0
- my_crew-0.1.0/docs/journals/260623-v2-m1-p1-config-injection.md +37 -0
- my_crew-0.1.0/docs/journals/260624-v2-m1-milestone-complete.md +35 -0
- my_crew-0.1.0/docs/journals/260624-v2-m1-p2-profile-system.md +37 -0
- my_crew-0.1.0/docs/journals/260624-v2-m1-p3-registry-worker.md +39 -0
- my_crew-0.1.0/docs/journals/260624-v2-m1-p4-multi-agent-cli.md +35 -0
- my_crew-0.1.0/docs/journals/260624-v2-m2-p5-graph-interrupts.md +34 -0
- my_crew-0.1.0/docs/journals/260625-v2-m2-milestone-complete.md +54 -0
- my_crew-0.1.0/docs/journals/260625-v2-m2-p6-fastapi-sse.md +39 -0
- my_crew-0.1.0/docs/journals/260625-v2-m2-p8-postgres-store.md +37 -0
- my_crew-0.1.0/docs/journals/260626-v2-m2-p7-web-dashboard.md +36 -0
- my_crew-0.1.0/docs/journals/260626-v2-m3-p10-skill-system.md +58 -0
- my_crew-0.1.0/docs/journals/260626-v2-m3-p9-cross-agent-memory.md +49 -0
- my_crew-0.1.0/docs/journals/260627-v2-complete-milestone.md +89 -0
- my_crew-0.1.0/docs/journals/260627-v2-final-live-e2e.md +60 -0
- my_crew-0.1.0/docs/journals/260627-v2-m3-p11-integrations-multichannel.md +30 -0
- my_crew-0.1.0/docs/journals/260627-v2-m3-p12-automation-observability.md +53 -0
- my_crew-0.1.0/docs/journals/260628-v2-m4-react-dashboard.md +54 -0
- my_crew-0.1.0/docs/journals/260630-v3-m5-domain-pack-abstraction.md +29 -0
- my_crew-0.1.0/docs/journals/260701-v3-m6-hr-pack-proof.md +35 -0
- my_crew-0.1.0/docs/journals/260702-v3-m11-ask-agent-inbox.md +27 -0
- my_crew-0.1.0/docs/journals/260702-v3-m7-low-tech-ui.md +30 -0
- my_crew-0.1.0/docs/journals/260702-v3-m8-admin-pack-fleet-watch.md +20 -0
- my_crew-0.1.0/docs/journals/260702-v4-m9-model-fallback-chain.md +25 -0
- my_crew-0.1.0/docs/journals/260702-v5-m12-chat-command-lop-b.md +26 -0
- my_crew-0.1.0/docs/journals/260703-v6-m13-telegram-identity.md +38 -0
- my_crew-0.1.0/docs/journals/260703-v6-m14a-ceo-chat-ops.md +32 -0
- my_crew-0.1.0/docs/journals/260703-v6-m14b-web-chat-ops.md +24 -0
- my_crew-0.1.0/docs/journals/260704-v6-m15a-watch-task.md +40 -0
- my_crew-0.1.0/docs/journals/260704-v6-m15b-report-qa-task-board.md +36 -0
- my_crew-0.1.0/docs/journals/260704-v6-m16-auth-golive.md +33 -0
- my_crew-0.1.0/docs/journals/260704-v7-m17-setup-wizard.md +34 -0
- my_crew-0.1.0/docs/journals/260704-v7-m18a-agent-studio-telegram.md +34 -0
- my_crew-0.1.0/docs/journals/260704-v7-m18b-knowledge-form-skills.md +30 -0
- my_crew-0.1.0/docs/journals/260704-v7-m19-company-docs.md +39 -0
- my_crew-0.1.0/docs/journals/260704-v7-m20-ceo-first-nav.md +36 -0
- my_crew-0.1.0/docs/journals/260704-v8-m21-ceo-observability.md +32 -0
- my_crew-0.1.0/docs/journals/260704-v8-m22-multi-project-rollup.md +32 -0
- my_crew-0.1.0/docs/journals/260704-v8-m23-trust-ladder.md +40 -0
- my_crew-0.1.0/docs/journals/260707-v10-m24-theme-light-dark.md +33 -0
- my_crew-0.1.0/docs/journals/260707-v10-m25-dual-mode.md +31 -0
- my_crew-0.1.0/docs/journals/260707-v10-m26-installer-health.md +39 -0
- my_crew-0.1.0/docs/journals/260707-v9-p1-i18n-human-hoa.md +40 -0
- my_crew-0.1.0/docs/journals/260707-v9-p2-nav-flow-create-via-chat.md +24 -0
- my_crew-0.1.0/docs/journals/260707-v9-p3-design-token-visual.md +26 -0
- my_crew-0.1.0/docs/journals/260707-v9-p4-responsive-mobile.md +35 -0
- my_crew-0.1.0/docs/journals/260708-v11-p1-p2-mcp-servers.md +36 -0
- my_crew-0.1.0/docs/journals/260708-v11-p3-session-pool.md +35 -0
- my_crew-0.1.0/docs/journals/260708-v11-p4-npm-distribution.md +40 -0
- my_crew-0.1.0/docs/journals/260710-v12-agent-office-cook.md +105 -0
- my_crew-0.1.0/docs/journals/260710-v12-agent-office-plan.md +75 -0
- my_crew-0.1.0/docs/journals/260710-v13-team-self-operation-cook.md +84 -0
- my_crew-0.1.0/docs/journals/260710-v13-team-self-operation-plan.md +68 -0
- my_crew-0.1.0/docs/journals/260710-v14-living-office-recover-cook.md +85 -0
- my_crew-0.1.0/docs/journals/260710-v15-pic-unified-office-cook.md +88 -0
- my_crew-0.1.0/docs/journals/260710-xlsx-report-email-attachment.md +55 -0
- my_crew-0.1.0/docs/journals/260711-v16-office-workrooms-cook.md +55 -0
- my_crew-0.1.0/docs/journals/260711-v17-office-command-center-cook.md +58 -0
- my_crew-0.1.0/docs/journals/260711-v18-registry-userdata-team-ux-cook.md +62 -0
- my_crew-0.1.0/docs/journals/260711-v19-agent-workspace-memory-seam.md +43 -0
- my_crew-0.1.0/docs/journals/260711-v20-agentruntime-community-sockets.md +52 -0
- my_crew-0.1.0/docs/journals/260711-v205-runtime-tiers-sandbox.md +88 -0
- my_crew-0.1.0/docs/journals/260712-v26-capture-telemetry.md +55 -0
- my_crew-0.1.0/docs/journals/260712-v27-deep-agent-harden.md +30 -0
- my_crew-0.1.0/docs/journals/260712-v28-runtime-consolidation.md +25 -0
- my_crew-0.1.0/docs/journals/260712-v30-autonomy-first-trust-mode.md +26 -0
- my_crew-0.1.0/docs/journals/260712-v31-agent-tools-capability-wave.md +30 -0
- my_crew-0.1.0/docs/journals/260713-v32-templates-crew-office-ux.md +29 -0
- my_crew-0.1.0/docs/journals/260713-v33-connections-output-hub-clarify-history.md +28 -0
- my_crew-0.1.0/docs/journals/260713-v34-core-autonomy-checkpointer-interrupt.md +29 -0
- my_crew-0.1.0/docs/journals/260713-v35-toolerror-memory-consolidation.md +27 -0
- my_crew-0.1.0/docs/journals/260713-v36-storage-hygiene-template-hybrid.md +29 -0
- my_crew-0.1.0/docs/journals/260713-v37-ui-design-system-sync.md +26 -0
- my_crew-0.1.0/docs/journals/260713-v38-harness-sendmessage-skillcurator.md +27 -0
- my_crew-0.1.0/docs/journals/260713-v39-gws-context-smtp-connection.md +28 -0
- my_crew-0.1.0/docs/journals/260714-v40-deep-agent-filewrite-fix.md +25 -0
- my_crew-0.1.0/docs/journals/260714-v41-deep-agent-lease-artifact-createagent.md +27 -0
- my_crew-0.1.0/docs/journals/260714-v42-deep-agent-compose-early-contract.md +24 -0
- my_crew-0.1.0/docs/journals/260714-v43-deep-team-in-sandbox.md +28 -0
- my_crew-0.1.0/docs/journals/260714-v44-benchmark-hardening.md +29 -0
- my_crew-0.1.0/docs/journals/260714-v45-tier0-routing.md +32 -0
- my_crew-0.1.0/docs/journals/260715-v46-central-audit-actor.md +29 -0
- my_crew-0.1.0/docs/journals/260715-v47-docker-ux.md +23 -0
- my_crew-0.1.0/docs/journals/260715-v48-team-step-mcp-pool.md +23 -0
- my_crew-0.1.0/docs/journals/260715-v49-barrier-to-entry.md +26 -0
- my_crew-0.1.0/docs/journals/260715-v50-ui-catchup.md +33 -0
- my_crew-0.1.0/docs/journals/260718-v51-productize-phase01-packaging-core.md +37 -0
- my_crew-0.1.0/docs/journals/260718-v51-productize-phase02-06-serve-docker-wheel-ci-docs-lifecycle.md +37 -0
- my_crew-0.1.0/docs/journals/README.md +112 -0
- my_crew-0.1.0/docs/project-overview-pdr.md +83 -0
- my_crew-0.1.0/docs/project-roadmap.md +99 -0
- my_crew-0.1.0/docs/releasing.md +46 -0
- my_crew-0.1.0/docs/research/deep-agent-safety-checklist-v205-v26.md +29 -0
- my_crew-0.1.0/docs/research/deerflow-2-architecture-study.md +708 -0
- my_crew-0.1.0/docs/research/firecrawl-local-integration-guide.md +177 -0
- my_crew-0.1.0/docs/research/harness-enhancement-suggestions-v37.md +93 -0
- my_crew-0.1.0/docs/research/office-harness-community-ecosystem-strategy.md +177 -0
- my_crew-0.1.0/docs/research/openclaw-hermes-tools-inventory-for-mycrew.md +104 -0
- my_crew-0.1.0/docs/system-architecture.md +234 -0
- my_crew-0.1.0/docs/uat-theo-user-story.md +245 -0
- my_crew-0.1.0/docs/user-guide.md +404 -0
- my_crew-0.1.0/domain-packs/_template-pack/graphs.py +32 -0
- my_crew-0.1.0/domain-packs/_template-pack/pack.yaml +13 -0
- my_crew-0.1.0/domain-packs/_template-pack/tools.py +12 -0
- my_crew-0.1.0/domain-packs/_template-pack/write_handlers.py +14 -0
- my_crew-0.1.0/domain-packs/admin-pack/analyzers.py +177 -0
- my_crew-0.1.0/domain-packs/admin-pack/graphs.py +145 -0
- my_crew-0.1.0/domain-packs/admin-pack/pack.yaml +19 -0
- my_crew-0.1.0/domain-packs/admin-pack/prompts/admin-narrative-system.md +8 -0
- my_crew-0.1.0/domain-packs/admin-pack/prompts_build.py +33 -0
- my_crew-0.1.0/domain-packs/admin-pack/tools.py +27 -0
- my_crew-0.1.0/domain-packs/admin-pack/write_handlers.py +18 -0
- my_crew-0.1.0/domain-packs/hr-pack/analyzers.py +117 -0
- my_crew-0.1.0/domain-packs/hr-pack/commands.py +91 -0
- my_crew-0.1.0/domain-packs/hr-pack/graphs.py +159 -0
- my_crew-0.1.0/domain-packs/hr-pack/pack.yaml +16 -0
- my_crew-0.1.0/domain-packs/hr-pack/prompts/headcount-narrative-external-system.md +1 -0
- my_crew-0.1.0/domain-packs/hr-pack/prompts/headcount-narrative-system.md +1 -0
- my_crew-0.1.0/domain-packs/hr-pack/prompts_build.py +59 -0
- my_crew-0.1.0/domain-packs/hr-pack/skills/flag-understaffed-team.md +7 -0
- my_crew-0.1.0/domain-packs/hr-pack/tools.py +193 -0
- my_crew-0.1.0/domain-packs/hr-pack/write_handlers.py +22 -0
- my_crew-0.1.0/domain-packs/office-pack/commands.py +77 -0
- my_crew-0.1.0/domain-packs/office-pack/graphs.py +21 -0
- my_crew-0.1.0/domain-packs/office-pack/pack.yaml +12 -0
- my_crew-0.1.0/domain-packs/office-pack/tools.py +25 -0
- my_crew-0.1.0/domain-packs/office-pack/write_handlers.py +21 -0
- my_crew-0.1.0/domain-packs/pm-pack/commands.py +69 -0
- my_crew-0.1.0/domain-packs/pm-pack/graphs.py +74 -0
- my_crew-0.1.0/domain-packs/pm-pack/models.py +41 -0
- my_crew-0.1.0/domain-packs/pm-pack/pack.yaml +23 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/okr-narrative-external-system.md +1 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/okr-narrative-system.md +1 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/report-detail-external-system.md +3 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/report-detail-system.md +3 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/report-external-system.md +3 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/report-system.md +3 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/resource-narrative-external-system.md +1 -0
- my_crew-0.1.0/domain-packs/pm-pack/prompts/resource-narrative-system.md +1 -0
- my_crew-0.1.0/domain-packs/pm-pack/skills/estimate-effort.md +9 -0
- my_crew-0.1.0/domain-packs/pm-pack/skills/fetch-jira-epics.md +9 -0
- my_crew-0.1.0/domain-packs/pm-pack/skills/flag-risk.md +10 -0
- my_crew-0.1.0/domain-packs/pm-pack/skills/parse-github-labels.md +9 -0
- my_crew-0.1.0/domain-packs/pm-pack/skills/prioritize-blockers.md +9 -0
- my_crew-0.1.0/domain-packs/pm-pack/tools.py +68 -0
- my_crew-0.1.0/domain-packs/pm-pack/write_handlers.py +27 -0
- my_crew-0.1.0/my_crew/__init__.py +0 -0
- my_crew-0.1.0/my_crew/actions/__init__.py +0 -0
- my_crew-0.1.0/my_crew/actions/action_gateway.py +540 -0
- my_crew-0.1.0/my_crew/actions/approval_store.py +125 -0
- my_crew-0.1.0/my_crew/actions/approved_dispatch.py +96 -0
- my_crew-0.1.0/my_crew/actions/auto_approve_policy.py +133 -0
- my_crew-0.1.0/my_crew/actions/confluence_write.py +148 -0
- my_crew-0.1.0/my_crew/actions/dedup_store.py +65 -0
- my_crew-0.1.0/my_crew/actions/email_write.py +146 -0
- my_crew-0.1.0/my_crew/actions/gws_write.py +89 -0
- my_crew-0.1.0/my_crew/actions/hard_block.py +863 -0
- my_crew-0.1.0/my_crew/actions/jira_write.py +37 -0
- my_crew-0.1.0/my_crew/actions/linear_write.py +95 -0
- my_crew-0.1.0/my_crew/actions/schedule_write.py +145 -0
- my_crew-0.1.0/my_crew/actions/secret_patterns.py +200 -0
- my_crew-0.1.0/my_crew/actions/send_message.py +134 -0
- my_crew-0.1.0/my_crew/actions/slack_write.py +91 -0
- my_crew-0.1.0/my_crew/actions/team_task_write.py +142 -0
- my_crew-0.1.0/my_crew/actions/telegram_write.py +156 -0
- my_crew-0.1.0/my_crew/adapters/__init__.py +0 -0
- my_crew-0.1.0/my_crew/adapters/cli_adapter.py +62 -0
- my_crew-0.1.0/my_crew/adapters/mcp_adapter.py +134 -0
- my_crew-0.1.0/my_crew/adapters/mcp_session_pool.py +354 -0
- my_crew-0.1.0/my_crew/agent/__init__.py +0 -0
- my_crew-0.1.0/my_crew/agent/approval_gate.py +138 -0
- my_crew-0.1.0/my_crew/agent/audience_delivery.py +99 -0
- my_crew-0.1.0/my_crew/agent/channel_registry.py +151 -0
- my_crew-0.1.0/my_crew/agent/chat_command.py +215 -0
- my_crew-0.1.0/my_crew/agent/checkpoint.py +101 -0
- my_crew-0.1.0/my_crew/agent/coordinator_graph.py +476 -0
- my_crew-0.1.0/my_crew/agent/coordinator_nodes/__init__.py +0 -0
- my_crew-0.1.0/my_crew/agent/coordinator_nodes/fanout_insert.py +209 -0
- my_crew-0.1.0/my_crew/agent/coordinator_nodes/review_insert.py +243 -0
- my_crew-0.1.0/my_crew/agent/coordinator_nodes/tick_actions.py +274 -0
- my_crew-0.1.0/my_crew/agent/graph.py +77 -0
- my_crew-0.1.0/my_crew/agent/knowledge_template.py +124 -0
- my_crew-0.1.0/my_crew/agent/memory_extractor.py +90 -0
- my_crew-0.1.0/my_crew/agent/memory_mirror.py +117 -0
- my_crew-0.1.0/my_crew/agent/memory_node.py +163 -0
- my_crew-0.1.0/my_crew/agent/office_room_qa.py +88 -0
- my_crew-0.1.0/my_crew/agent/okr_analyzer.py +154 -0
- my_crew-0.1.0/my_crew/agent/okr_report_graph.py +290 -0
- my_crew-0.1.0/my_crew/agent/okr_weekly_section.py +91 -0
- my_crew-0.1.0/my_crew/agent/ops_adjust_team_task.py +165 -0
- my_crew-0.1.0/my_crew/agent/ops_assign_team_task.py +369 -0
- my_crew-0.1.0/my_crew/agent/ops_calendar_event.py +97 -0
- my_crew-0.1.0/my_crew/agent/ops_catalog.py +568 -0
- my_crew-0.1.0/my_crew/agent/ops_chat.py +337 -0
- my_crew-0.1.0/my_crew/agent/ops_company_activity.py +124 -0
- my_crew-0.1.0/my_crew/agent/ops_conversation_store.py +94 -0
- my_crew-0.1.0/my_crew/agent/ops_send_message.py +87 -0
- my_crew-0.1.0/my_crew/agent/qa_answer.py +292 -0
- my_crew-0.1.0/my_crew/agent/report_graph.py +355 -0
- my_crew-0.1.0/my_crew/agent/resource_analyzer.py +115 -0
- my_crew-0.1.0/my_crew/agent/resource_report_graph.py +301 -0
- my_crew-0.1.0/my_crew/agent/resource_weekly_section.py +93 -0
- my_crew-0.1.0/my_crew/agent/review_graph.py +247 -0
- my_crew-0.1.0/my_crew/agent/risk_analyzer.py +111 -0
- my_crew-0.1.0/my_crew/agent/sibling_memory.py +118 -0
- my_crew-0.1.0/my_crew/agent/sibling_selector.py +90 -0
- my_crew-0.1.0/my_crew/agent/state.py +56 -0
- my_crew-0.1.0/my_crew/agent/store.py +54 -0
- my_crew-0.1.0/my_crew/agent/task_decomposition.py +312 -0
- my_crew-0.1.0/my_crew/agent/team_task_amend_prompt.py +161 -0
- my_crew-0.1.0/my_crew/agent/team_task_artifact.py +160 -0
- my_crew-0.1.0/my_crew/agent/team_task_consult.py +149 -0
- my_crew-0.1.0/my_crew/agent/team_task_consult_propose.py +201 -0
- my_crew-0.1.0/my_crew/agent/team_task_graph.py +920 -0
- my_crew-0.1.0/my_crew/agent/team_task_roster.py +114 -0
- my_crew-0.1.0/my_crew/audit/__init__.py +0 -0
- my_crew-0.1.0/my_crew/audit/audit_log.py +113 -0
- my_crew-0.1.0/my_crew/automation/__init__.py +6 -0
- my_crew-0.1.0/my_crew/automation/engine.py +110 -0
- my_crew-0.1.0/my_crew/automation/prompts.py +40 -0
- my_crew-0.1.0/my_crew/automation/propose.py +63 -0
- my_crew-0.1.0/my_crew/automation/schema.py +129 -0
- my_crew-0.1.0/my_crew/company_docs/__init__.py +6 -0
- my_crew-0.1.0/my_crew/company_docs/inject.py +58 -0
- my_crew-0.1.0/my_crew/company_docs/pool.py +39 -0
- my_crew-0.1.0/my_crew/company_docs/store.py +135 -0
- my_crew-0.1.0/my_crew/config/__init__.py +0 -0
- my_crew-0.1.0/my_crew/config/config_builders.py +153 -0
- my_crew-0.1.0/my_crew/config/config_builders_channels.py +139 -0
- my_crew-0.1.0/my_crew/config/config_builders_helpers.py +48 -0
- my_crew-0.1.0/my_crew/config/config_builders_reporting.py +156 -0
- my_crew-0.1.0/my_crew/config/home_seed.py +51 -0
- my_crew-0.1.0/my_crew/config/reporting_config.py +105 -0
- my_crew-0.1.0/my_crew/config/settings.py +135 -0
- my_crew-0.1.0/my_crew/config/smtp_config.py +27 -0
- my_crew-0.1.0/my_crew/config/telegram_config.py +29 -0
- my_crew-0.1.0/my_crew/config/telegram_token.py +23 -0
- my_crew-0.1.0/my_crew/entrypoints/__init__.py +0 -0
- my_crew-0.1.0/my_crew/entrypoints/cli.py +354 -0
- my_crew-0.1.0/my_crew/entrypoints/cron.py +150 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm.py +204 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_automate_cmd.py +144 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_lifecycle_cmds.py +150 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_manage_cmds.py +121 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_onboarding_cmds.py +81 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_registry_cmds.py +83 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_replay_cmd.py +97 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_resume_cmd.py +68 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_run_cmd.py +92 -0
- my_crew-0.1.0/my_crew/entrypoints/mpm_web_cmd.py +40 -0
- my_crew-0.1.0/my_crew/entrypoints/serve_cmd.py +106 -0
- my_crew-0.1.0/my_crew/llm/__init__.py +0 -0
- my_crew-0.1.0/my_crew/llm/audience_external_prompts.py +21 -0
- my_crew-0.1.0/my_crew/llm/budget_tracker.py +129 -0
- my_crew-0.1.0/my_crew/llm/client.py +236 -0
- my_crew-0.1.0/my_crew/llm/cost.py +86 -0
- my_crew-0.1.0/my_crew/llm/fallback_policy.py +46 -0
- my_crew-0.1.0/my_crew/llm/model_pricing.py +87 -0
- my_crew-0.1.0/my_crew/llm/okr_report_prompt.py +184 -0
- my_crew-0.1.0/my_crew/llm/report_prompt.py +206 -0
- my_crew-0.1.0/my_crew/llm/report_slack_short.py +46 -0
- my_crew-0.1.0/my_crew/llm/resource_report_prompt.py +245 -0
- my_crew-0.1.0/my_crew/llm/slack_link.py +33 -0
- my_crew-0.1.0/my_crew/llm/team_task_check_prompt.py +174 -0
- my_crew-0.1.0/my_crew/llm/team_task_prompt.py +220 -0
- my_crew-0.1.0/my_crew/memory/__init__.py +22 -0
- my_crew-0.1.0/my_crew/memory/consolidation.py +221 -0
- my_crew-0.1.0/my_crew/memory/provider.py +87 -0
- my_crew-0.1.0/my_crew/memory/static_provider.py +25 -0
- my_crew-0.1.0/my_crew/packs/__init__.py +21 -0
- my_crew-0.1.0/my_crew/packs/pack_mcp_gate.py +75 -0
- my_crew-0.1.0/my_crew/packs/registry.py +340 -0
- my_crew-0.1.0/my_crew/packs/tool_provider.py +34 -0
- my_crew-0.1.0/my_crew/profile/__init__.py +5 -0
- my_crew-0.1.0/my_crew/profile/capability_block.py +53 -0
- my_crew-0.1.0/my_crew/profile/context.py +109 -0
- my_crew-0.1.0/my_crew/profile/loader.py +361 -0
- my_crew-0.1.0/my_crew/profile/loader_mapping.py +290 -0
- my_crew-0.1.0/my_crew/reporting/__init__.py +6 -0
- my_crew-0.1.0/my_crew/reporting/xlsx_export.py +126 -0
- my_crew-0.1.0/my_crew/runtime/__init__.py +15 -0
- my_crew-0.1.0/my_crew/runtime/agent_paths.py +70 -0
- my_crew-0.1.0/my_crew/runtime/agent_state_reader.py +393 -0
- my_crew-0.1.0/my_crew/runtime/capture_store.py +159 -0
- my_crew-0.1.0/my_crew/runtime/clarify_service.py +174 -0
- my_crew-0.1.0/my_crew/runtime/clarify_store.py +174 -0
- my_crew-0.1.0/my_crew/runtime/company.py +162 -0
- my_crew-0.1.0/my_crew/runtime/follow_up_sweep.py +203 -0
- my_crew-0.1.0/my_crew/runtime/history_search_index.py +232 -0
- my_crew-0.1.0/my_crew/runtime/inbox.py +223 -0
- my_crew-0.1.0/my_crew/runtime/inbox_dispatch.py +88 -0
- my_crew-0.1.0/my_crew/runtime/legacy_migration.py +50 -0
- my_crew-0.1.0/my_crew/runtime/milestone_mirror_runner.py +177 -0
- my_crew-0.1.0/my_crew/runtime/office_room_append.py +65 -0
- my_crew-0.1.0/my_crew/runtime/office_room_store.py +152 -0
- my_crew-0.1.0/my_crew/runtime/operator_notify.py +61 -0
- my_crew-0.1.0/my_crew/runtime/ops_alert_runner.py +101 -0
- my_crew-0.1.0/my_crew/runtime/recurring_task.py +89 -0
- my_crew-0.1.0/my_crew/runtime/registry.py +94 -0
- my_crew-0.1.0/my_crew/runtime/registry_edit.py +180 -0
- my_crew-0.1.0/my_crew/runtime/replay.py +107 -0
- my_crew-0.1.0/my_crew/runtime/report_summary.py +43 -0
- my_crew-0.1.0/my_crew/runtime/run_config.py +99 -0
- my_crew-0.1.0/my_crew/runtime/run_event.py +74 -0
- my_crew-0.1.0/my_crew/runtime/scheduler.py +47 -0
- my_crew-0.1.0/my_crew/runtime/service.py +312 -0
- my_crew-0.1.0/my_crew/runtime/step_telemetry.py +73 -0
- my_crew-0.1.0/my_crew/runtime/storage_hygiene.py +191 -0
- my_crew-0.1.0/my_crew/runtime/store_schema_meta.py +54 -0
- my_crew-0.1.0/my_crew/runtime/task_runner.py +210 -0
- my_crew-0.1.0/my_crew/runtime/task_scheduling.py +51 -0
- my_crew-0.1.0/my_crew/runtime/task_store.py +158 -0
- my_crew-0.1.0/my_crew/runtime/team_step_egress.py +58 -0
- my_crew-0.1.0/my_crew/runtime/team_step_runner.py +731 -0
- my_crew-0.1.0/my_crew/runtime/team_task_amend.py +277 -0
- my_crew-0.1.0/my_crew/runtime/team_task_cost.py +113 -0
- my_crew-0.1.0/my_crew/runtime/team_task_paths.py +50 -0
- my_crew-0.1.0/my_crew/runtime/team_task_steps.py +521 -0
- my_crew-0.1.0/my_crew/runtime/team_task_store.py +611 -0
- my_crew-0.1.0/my_crew/runtime/team_tick_collaborators.py +168 -0
- my_crew-0.1.0/my_crew/runtime/team_tick_runner.py +359 -0
- my_crew-0.1.0/my_crew/runtime/telegram_inbox.py +229 -0
- my_crew-0.1.0/my_crew/runtime/watch_task.py +94 -0
- my_crew-0.1.0/my_crew/runtime/watcher_normalize.py +109 -0
- my_crew-0.1.0/my_crew/runtime/watcher_runner.py +243 -0
- my_crew-0.1.0/my_crew/runtime/watcher_store.py +149 -0
- my_crew-0.1.0/my_crew/runtime/worker.py +521 -0
- my_crew-0.1.0/my_crew/runtime/worker_resume.py +109 -0
- my_crew-0.1.0/my_crew/runtime_backends/__init__.py +19 -0
- my_crew-0.1.0/my_crew/runtime_backends/community_loop_core.py +141 -0
- my_crew-0.1.0/my_crew/runtime_backends/config.py +132 -0
- my_crew-0.1.0/my_crew/runtime_backends/deep_agent_loop.py +266 -0
- my_crew-0.1.0/my_crew/runtime_backends/deep_agent_runtime.py +110 -0
- my_crew-0.1.0/my_crew/runtime_backends/deep_agent_sanitizer.py +109 -0
- my_crew-0.1.0/my_crew/runtime_backends/deep_team_task_cap.py +94 -0
- my_crew-0.1.0/my_crew/runtime_backends/native_graph_runtime.py +29 -0
- my_crew-0.1.0/my_crew/runtime_backends/protocol.py +137 -0
- my_crew-0.1.0/my_crew/runtime_backends/react_loop.py +199 -0
- my_crew-0.1.0/my_crew/runtime_backends/read_only_toolset.py +342 -0
- my_crew-0.1.0/my_crew/runtime_backends/sandbox_backend.py +511 -0
- my_crew-0.1.0/my_crew/runtime_backends/sandbox_reaper.py +115 -0
- my_crew-0.1.0/my_crew/runtime_backends/sandbox_teardown.py +34 -0
- my_crew-0.1.0/my_crew/runtime_backends/tool_calling_runtime.py +90 -0
- my_crew-0.1.0/my_crew/server/__init__.py +7 -0
- my_crew-0.1.0/my_crew/server/agent_create.py +262 -0
- my_crew-0.1.0/my_crew/server/agent_views.py +151 -0
- my_crew-0.1.0/my_crew/server/app.py +194 -0
- my_crew-0.1.0/my_crew/server/auth.py +183 -0
- my_crew-0.1.0/my_crew/server/env_writer.py +132 -0
- my_crew-0.1.0/my_crew/server/fleet_activity.py +124 -0
- my_crew-0.1.0/my_crew/server/graph_runner.py +68 -0
- my_crew-0.1.0/my_crew/server/integration_health.py +289 -0
- my_crew-0.1.0/my_crew/server/office_event_projection.py +155 -0
- my_crew-0.1.0/my_crew/server/ops_helpers.py +41 -0
- my_crew-0.1.0/my_crew/server/profile_editor.py +80 -0
- my_crew-0.1.0/my_crew/server/routes_agent_company_docs.py +72 -0
- my_crew-0.1.0/my_crew/server/routes_agent_knowledge.py +141 -0
- my_crew-0.1.0/my_crew/server/routes_agent_studio_shared.py +15 -0
- my_crew-0.1.0/my_crew/server/routes_agent_telegram.py +137 -0
- my_crew-0.1.0/my_crew/server/routes_agents.py +28 -0
- my_crew-0.1.0/my_crew/server/routes_agents_admin.py +182 -0
- my_crew-0.1.0/my_crew/server/routes_clarify.py +51 -0
- my_crew-0.1.0/my_crew/server/routes_company.py +256 -0
- my_crew-0.1.0/my_crew/server/routes_company_docs.py +88 -0
- my_crew-0.1.0/my_crew/server/routes_connections.py +161 -0
- my_crew-0.1.0/my_crew/server/routes_office_artifacts.py +94 -0
- my_crew-0.1.0/my_crew/server/routes_office_assign.py +95 -0
- my_crew-0.1.0/my_crew/server/routes_office_room_chat.py +214 -0
- my_crew-0.1.0/my_crew/server/routes_office_stream.py +119 -0
- my_crew-0.1.0/my_crew/server/routes_ops_chat.py +133 -0
- my_crew-0.1.0/my_crew/server/routes_ops_json.py +123 -0
- my_crew-0.1.0/my_crew/server/routes_outputs.py +227 -0
- my_crew-0.1.0/my_crew/server/routes_runs.py +85 -0
- my_crew-0.1.0/my_crew/server/routes_setup.py +189 -0
- my_crew-0.1.0/my_crew/server/routes_tasks.py +91 -0
- my_crew-0.1.0/my_crew/server/routes_visualize.py +67 -0
- my_crew-0.1.0/my_crew/server/run_manager.py +210 -0
- my_crew-0.1.0/my_crew/server/sse_events.py +55 -0
- my_crew-0.1.0/my_crew/server/sse_stream.py +55 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-400-latin-OEyTajQY.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-400-vietnamese-SOx6iaFb.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-500-latin-BcWytNOG.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-500-vietnamese-D3pY20Dx.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-600-latin-xAC4kEK0.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-600-vietnamese-DbGrrtCq.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-700-latin-CPfR8Jz_.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/be-vietnam-pro-700-vietnamese-DptIoWwl.woff2 +0 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/index-BCnoEXXz.css +1 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/index-DIwIiKBQ.js +4198 -0
- my_crew-0.1.0/my_crew/server/static/app/assets/office-unified-DkSVTU_D.js +1 -0
- my_crew-0.1.0/my_crew/server/static/app/favicon.svg +1 -0
- my_crew-0.1.0/my_crew/server/static/app/icons.svg +24 -0
- my_crew-0.1.0/my_crew/server/static/app/index.html +35 -0
- my_crew-0.1.0/my_crew/server/template_create.py +237 -0
- my_crew-0.1.0/my_crew/server/template_upgrade.py +203 -0
- my_crew-0.1.0/my_crew/server/visualize_views.py +168 -0
- my_crew-0.1.0/my_crew/skills/__init__.py +7 -0
- my_crew-0.1.0/my_crew/skills/models.py +21 -0
- my_crew-0.1.0/my_crew/skills/skill_curator.py +183 -0
- my_crew-0.1.0/my_crew/skills/skill_loader.py +147 -0
- my_crew-0.1.0/my_crew/skills/skill_pool.py +140 -0
- my_crew-0.1.0/my_crew/skills/skill_selector.py +91 -0
- my_crew-0.1.0/my_crew/tools/__init__.py +0 -0
- my_crew-0.1.0/my_crew/tools/confluence_read.py +217 -0
- my_crew-0.1.0/my_crew/tools/firecrawl_tool.py +109 -0
- my_crew-0.1.0/my_crew/tools/github_read.py +127 -0
- my_crew-0.1.0/my_crew/tools/gws_read.py +90 -0
- my_crew-0.1.0/my_crew/tools/jira_read.py +171 -0
- my_crew-0.1.0/my_crew/tools/linear_read.py +60 -0
- my_crew-0.1.0/my_crew/tools/models.py +206 -0
- my_crew-0.1.0/my_crew/tools/okr_read.py +97 -0
- my_crew-0.1.0/my_crew/tools/openalex_tool.py +148 -0
- my_crew-0.1.0/my_crew/tools/search_result_formatter.py +221 -0
- my_crew-0.1.0/my_crew/tools/telegram_read.py +133 -0
- my_crew-0.1.0/my_crew/tools/web_search_tool.py +179 -0
- my_crew-0.1.0/profiles/default/MEMORY.md +3 -0
- my_crew-0.1.0/profiles/default/PROJECT.md +3 -0
- my_crew-0.1.0/profiles/default/SOUL.md +3 -0
- my_crew-0.1.0/profiles/default/profile.yaml +95 -0
- my_crew-0.1.0/profiles/templates/crew.yaml +14 -0
- my_crew-0.1.0/profiles/templates/kiem-dinh/SOUL.md +11 -0
- my_crew-0.1.0/profiles/templates/kiem-dinh/template.yaml +13 -0
- my_crew-0.1.0/profiles/templates/nghien-cuu/SOUL.md +14 -0
- my_crew-0.1.0/profiles/templates/nghien-cuu/skills/tra-cuu-co-trich-nguon.md +13 -0
- my_crew-0.1.0/profiles/templates/nghien-cuu/template.yaml +21 -0
- my_crew-0.1.0/profiles/templates/noi-dung/SOUL.md +11 -0
- my_crew-0.1.0/profiles/templates/noi-dung/template.yaml +13 -0
- my_crew-0.1.0/profiles/templates/phan-tich/SOUL.md +11 -0
- my_crew-0.1.0/profiles/templates/phan-tich/template.yaml +13 -0
- my_crew-0.1.0/profiles/templates/pm-coordinator/SOUL.md +11 -0
- my_crew-0.1.0/profiles/templates/pm-coordinator/template.yaml +30 -0
- my_crew-0.1.0/profiles/templates/truong-phong/SOUL.md +14 -0
- my_crew-0.1.0/profiles/templates/truong-phong/template.yaml +19 -0
- my_crew-0.1.0/pyproject.toml +80 -0
- my_crew-0.1.0/registry.example.yaml +13 -0
- my_crew-0.1.0/scripts/demo-mode.sh +173 -0
- my_crew-0.1.0/tests/__init__.py +0 -0
- my_crew-0.1.0/tests/conftest.py +49 -0
- my_crew-0.1.0/tests/test_acceptance_criteria_review.py +148 -0
- my_crew-0.1.0/tests/test_action_gateway.py +159 -0
- my_crew-0.1.0/tests/test_actor_attribution_e2e.py +87 -0
- my_crew-0.1.0/tests/test_adjust_team_task_toctou.py +156 -0
- my_crew-0.1.0/tests/test_admin_pack.py +302 -0
- my_crew-0.1.0/tests/test_agent_isolation.py +146 -0
- my_crew-0.1.0/tests/test_agent_knowledge_form.py +226 -0
- my_crew-0.1.0/tests/test_agent_runtime_seam.py +151 -0
- my_crew-0.1.0/tests/test_agent_skills_dir.py +90 -0
- my_crew-0.1.0/tests/test_agent_telegram_bind.py +141 -0
- my_crew-0.1.0/tests/test_agents_admin_api.py +392 -0
- my_crew-0.1.0/tests/test_agents_register_existing.py +90 -0
- my_crew-0.1.0/tests/test_agentskills_io_format.py +95 -0
- my_crew-0.1.0/tests/test_amend_hash_excludes_system_inserted.py +46 -0
- my_crew-0.1.0/tests/test_amend_over_amend_reject.py +122 -0
- my_crew-0.1.0/tests/test_amend_pending_only_swap.py +144 -0
- my_crew-0.1.0/tests/test_amend_pic_aware_and_company_roundtrip.py +111 -0
- my_crew-0.1.0/tests/test_approval_gate_auto.py +82 -0
- my_crew-0.1.0/tests/test_approval_gate_interrupt.py +143 -0
- my_crew-0.1.0/tests/test_approval_gate_okr_resource.py +136 -0
- my_crew-0.1.0/tests/test_approval_store_actor.py +51 -0
- my_crew-0.1.0/tests/test_ask_agent_inbox.py +405 -0
- my_crew-0.1.0/tests/test_assign_auto_confirm_and_pic_wiring.py +171 -0
- my_crew-0.1.0/tests/test_audience_delivery.py +313 -0
- my_crew-0.1.0/tests/test_audience_prompts.py +295 -0
- my_crew-0.1.0/tests/test_audit_log.py +90 -0
- my_crew-0.1.0/tests/test_auto_approve_policy.py +136 -0
- my_crew-0.1.0/tests/test_automation_engine.py +118 -0
- my_crew-0.1.0/tests/test_automation_redline.py +119 -0
- my_crew-0.1.0/tests/test_automation_schema.py +94 -0
- my_crew-0.1.0/tests/test_budget_tracker.py +71 -0
- my_crew-0.1.0/tests/test_calendar_create_write.py +131 -0
- my_crew-0.1.0/tests/test_capability_block.py +55 -0
- my_crew-0.1.0/tests/test_capture_remember_cost_fold.py +68 -0
- my_crew-0.1.0/tests/test_capture_runtime_telemetry_seam.py +66 -0
- my_crew-0.1.0/tests/test_capture_store.py +75 -0
- my_crew-0.1.0/tests/test_capture_team_step_integration.py +122 -0
- my_crew-0.1.0/tests/test_capture_telemetry_pricing.py +74 -0
- my_crew-0.1.0/tests/test_channel_registry.py +98 -0
- my_crew-0.1.0/tests/test_chat_command.py +366 -0
- my_crew-0.1.0/tests/test_checkpointer_selection.py +114 -0
- my_crew-0.1.0/tests/test_clarify_flow.py +254 -0
- my_crew-0.1.0/tests/test_cli_adapter.py +50 -0
- my_crew-0.1.0/tests/test_cli_profile_routing.py +30 -0
- my_crew-0.1.0/tests/test_community_loop_core.py +191 -0
- my_crew-0.1.0/tests/test_company.py +86 -0
- my_crew-0.1.0/tests/test_company_docs_injection.py +154 -0
- my_crew-0.1.0/tests/test_company_docs_routes.py +121 -0
- my_crew-0.1.0/tests/test_company_docs_store.py +125 -0
- my_crew-0.1.0/tests/test_config_builders.py +156 -0
- my_crew-0.1.0/tests/test_confirm_swap_vs_reserve_race.py +164 -0
- my_crew-0.1.0/tests/test_confluence_write.py +90 -0
- my_crew-0.1.0/tests/test_connections_routes.py +136 -0
- my_crew-0.1.0/tests/test_consult_projection.py +74 -0
- my_crew-0.1.0/tests/test_coordinator_graph.py +472 -0
- my_crew-0.1.0/tests/test_cost.py +40 -0
- my_crew-0.1.0/tests/test_create_agent_recursion_live.py +70 -0
- my_crew-0.1.0/tests/test_create_agent_state_scratch.py +102 -0
- my_crew-0.1.0/tests/test_create_from_template.py +187 -0
- my_crew-0.1.0/tests/test_decompose_acceptance_no_hash.py +92 -0
- my_crew-0.1.0/tests/test_deep_agent_artifact_readback.py +99 -0
- my_crew-0.1.0/tests/test_deep_agent_compose_contract.py +115 -0
- my_crew-0.1.0/tests/test_deep_agent_runtime.py +48 -0
- my_crew-0.1.0/tests/test_deep_agent_runtime_live.py +110 -0
- my_crew-0.1.0/tests/test_deep_agent_sanitizer.py +204 -0
- my_crew-0.1.0/tests/test_deep_team_cost_fold.py +123 -0
- my_crew-0.1.0/tests/test_deep_team_subagent_spec.py +161 -0
- my_crew-0.1.0/tests/test_deep_team_task_cap.py +107 -0
- my_crew-0.1.0/tests/test_deploy_backup.py +86 -0
- my_crew-0.1.0/tests/test_derived_headroom_cap.py +229 -0
- my_crew-0.1.0/tests/test_email_write.py +239 -0
- my_crew-0.1.0/tests/test_env_writer.py +83 -0
- my_crew-0.1.0/tests/test_extra_servers_config.py +97 -0
- my_crew-0.1.0/tests/test_firecrawl_live.py +60 -0
- my_crew-0.1.0/tests/test_firecrawl_tool.py +129 -0
- my_crew-0.1.0/tests/test_fleet_activity.py +252 -0
- my_crew-0.1.0/tests/test_follow_up_sweep.py +144 -0
- my_crew-0.1.0/tests/test_gateway_auto_approve.py +157 -0
- my_crew-0.1.0/tests/test_generic_task_model.py +86 -0
- my_crew-0.1.0/tests/test_github_read.py +61 -0
- my_crew-0.1.0/tests/test_graph_and_cli.py +67 -0
- my_crew-0.1.0/tests/test_gws_read.py +126 -0
- my_crew-0.1.0/tests/test_gws_write_redline.py +173 -0
- my_crew-0.1.0/tests/test_handoff_deps_read.py +118 -0
- my_crew-0.1.0/tests/test_hard_block.py +222 -0
- my_crew-0.1.0/tests/test_history_search.py +138 -0
- my_crew-0.1.0/tests/test_home_seed.py +65 -0
- my_crew-0.1.0/tests/test_hr_pack.py +195 -0
- my_crew-0.1.0/tests/test_inbox_auto_approve_wiring.py +82 -0
- my_crew-0.1.0/tests/test_integration_health_slack_whoami.py +155 -0
- my_crew-0.1.0/tests/test_interrupt_clarify.py +233 -0
- my_crew-0.1.0/tests/test_jira_read.py +89 -0
- my_crew-0.1.0/tests/test_legacy_migration.py +79 -0
- my_crew-0.1.0/tests/test_linear_read.py +69 -0
- my_crew-0.1.0/tests/test_linear_write.py +170 -0
- my_crew-0.1.0/tests/test_llm_client_retry.py +181 -0
- my_crew-0.1.0/tests/test_lop_b_and_audit_query.py +205 -0
- my_crew-0.1.0/tests/test_m4_e2e_offline.py +135 -0
- my_crew-0.1.0/tests/test_mcp_adapter.py +57 -0
- my_crew-0.1.0/tests/test_mcp_session_pool.py +332 -0
- my_crew-0.1.0/tests/test_memory_consolidation.py +200 -0
- my_crew-0.1.0/tests/test_memory_cross_thread_read.py +77 -0
- my_crew-0.1.0/tests/test_memory_node_extract_and_mirror.py +151 -0
- my_crew-0.1.0/tests/test_memory_provider_seam.py +110 -0
- my_crew-0.1.0/tests/test_milestone_mirror.py +282 -0
- my_crew-0.1.0/tests/test_model_fallback.py +204 -0
- my_crew-0.1.0/tests/test_mpm_automate_cmd.py +164 -0
- my_crew-0.1.0/tests/test_mpm_dispatch.py +50 -0
- my_crew-0.1.0/tests/test_mpm_lifecycle_cmds.py +52 -0
- my_crew-0.1.0/tests/test_mpm_manage_cmds.py +145 -0
- my_crew-0.1.0/tests/test_mpm_onboarding_cmds.py +102 -0
- my_crew-0.1.0/tests/test_mpm_registry_cmds.py +110 -0
- my_crew-0.1.0/tests/test_mpm_replay_cmd.py +119 -0
- my_crew-0.1.0/tests/test_mpm_resume_cmd.py +108 -0
- my_crew-0.1.0/tests/test_mpm_run_cmd.py +186 -0
- my_crew-0.1.0/tests/test_office_artifacts_routes.py +105 -0
- my_crew-0.1.0/tests/test_office_assign_routes.py +70 -0
- my_crew-0.1.0/tests/test_office_event_projection.py +115 -0
- my_crew-0.1.0/tests/test_office_pack_allowlist_redline.py +99 -0
- my_crew-0.1.0/tests/test_office_room_store.py +167 -0
- my_crew-0.1.0/tests/test_office_stream.py +229 -0
- my_crew-0.1.0/tests/test_okr_analyzer.py +128 -0
- my_crew-0.1.0/tests/test_okr_read.py +216 -0
- my_crew-0.1.0/tests/test_okr_report.py +212 -0
- my_crew-0.1.0/tests/test_openalex_tool.py +175 -0
- my_crew-0.1.0/tests/test_ops_adjust_team_task.py +194 -0
- my_crew-0.1.0/tests/test_ops_alerts.py +234 -0
- my_crew-0.1.0/tests/test_ops_assign_team_task.py +206 -0
- my_crew-0.1.0/tests/test_ops_chat.py +434 -0
- my_crew-0.1.0/tests/test_ops_operator_gate.py +72 -0
- my_crew-0.1.0/tests/test_outputs_routes.py +202 -0
- my_crew-0.1.0/tests/test_p11_integration_e2e.py +205 -0
- my_crew-0.1.0/tests/test_p11_redline.py +108 -0
- my_crew-0.1.0/tests/test_p12_e2e_offline.py +138 -0
- my_crew-0.1.0/tests/test_p12_redline_consolidated.py +53 -0
- my_crew-0.1.0/tests/test_pack_allowlist_redline.py +96 -0
- my_crew-0.1.0/tests/test_pack_mcp_gate.py +56 -0
- my_crew-0.1.0/tests/test_pack_registry.py +153 -0
- my_crew-0.1.0/tests/test_parallel_dispatch_cap.py +169 -0
- my_crew-0.1.0/tests/test_pic_assignment_validation.py +121 -0
- my_crew-0.1.0/tests/test_pm_tool_provider.py +119 -0
- my_crew-0.1.0/tests/test_profile_context.py +64 -0
- my_crew-0.1.0/tests/test_profile_entrypoints.py +166 -0
- my_crew-0.1.0/tests/test_profile_loader.py +199 -0
- my_crew-0.1.0/tests/test_project_rollup.py +117 -0
- my_crew-0.1.0/tests/test_query_redaction.py +111 -0
- my_crew-0.1.0/tests/test_recurring_task.py +281 -0
- my_crew-0.1.0/tests/test_registry.py +122 -0
- my_crew-0.1.0/tests/test_replay.py +114 -0
- my_crew-0.1.0/tests/test_report_summary.py +48 -0
- my_crew-0.1.0/tests/test_resource_analyzer.py +145 -0
- my_crew-0.1.0/tests/test_resource_report.py +275 -0
- my_crew-0.1.0/tests/test_resume_rebuild_deliver.py +177 -0
- my_crew-0.1.0/tests/test_review_graph.py +182 -0
- my_crew-0.1.0/tests/test_review_insert_rule.py +281 -0
- my_crew-0.1.0/tests/test_review_stall_escalate.py +121 -0
- my_crew-0.1.0/tests/test_reviewer_selection.py +50 -0
- my_crew-0.1.0/tests/test_rework_prompt_injection_wrap.py +93 -0
- my_crew-0.1.0/tests/test_rework_round_cap.py +163 -0
- my_crew-0.1.0/tests/test_risk_analyzer.py +81 -0
- my_crew-0.1.0/tests/test_run_config_tracing.py +136 -0
- my_crew-0.1.0/tests/test_run_event.py +29 -0
- my_crew-0.1.0/tests/test_run_manager.py +191 -0
- my_crew-0.1.0/tests/test_runtime_caps.py +93 -0
- my_crew-0.1.0/tests/test_runtime_fanout.py +348 -0
- my_crew-0.1.0/tests/test_sandbox_backend.py +259 -0
- my_crew-0.1.0/tests/test_sandbox_docker_live.py +75 -0
- my_crew-0.1.0/tests/test_sandbox_file_io.py +141 -0
- my_crew-0.1.0/tests/test_sandbox_lease.py +107 -0
- my_crew-0.1.0/tests/test_sandbox_prepull.py +74 -0
- my_crew-0.1.0/tests/test_sandbox_reaper.py +91 -0
- my_crew-0.1.0/tests/test_schedule_update_redline.py +241 -0
- my_crew-0.1.0/tests/test_scheduler.py +67 -0
- my_crew-0.1.0/tests/test_send_message.py +189 -0
- my_crew-0.1.0/tests/test_serve_cmd.py +90 -0
- my_crew-0.1.0/tests/test_server_agents.py +175 -0
- my_crew-0.1.0/tests/test_server_entrypoint.py +33 -0
- my_crew-0.1.0/tests/test_server_ops_chat.py +131 -0
- my_crew-0.1.0/tests/test_server_ops_json.py +238 -0
- my_crew-0.1.0/tests/test_server_spa_static.py +53 -0
- my_crew-0.1.0/tests/test_server_stream.py +212 -0
- my_crew-0.1.0/tests/test_server_trigger.py +97 -0
- my_crew-0.1.0/tests/test_server_visualize.py +200 -0
- my_crew-0.1.0/tests/test_service.py +149 -0
- my_crew-0.1.0/tests/test_service_loop.py +29 -0
- my_crew-0.1.0/tests/test_settings_home_resolution.py +40 -0
- my_crew-0.1.0/tests/test_setup_wizard.py +172 -0
- my_crew-0.1.0/tests/test_sibling_graph_e2e.py +229 -0
- my_crew-0.1.0/tests/test_sibling_memory.py +157 -0
- my_crew-0.1.0/tests/test_sibling_selector.py +191 -0
- my_crew-0.1.0/tests/test_sibling_write_boundary.py +43 -0
- my_crew-0.1.0/tests/test_skill_compose_injection.py +123 -0
- my_crew-0.1.0/tests/test_skill_curator.py +165 -0
- my_crew-0.1.0/tests/test_skill_graph_e2e.py +232 -0
- my_crew-0.1.0/tests/test_skill_loader.py +104 -0
- my_crew-0.1.0/tests/test_skill_selector.py +117 -0
- my_crew-0.1.0/tests/test_slack_write_and_report_graph.py +144 -0
- my_crew-0.1.0/tests/test_smtp_connection.py +53 -0
- my_crew-0.1.0/tests/test_sprint_and_report_kind.py +141 -0
- my_crew-0.1.0/tests/test_sse_events.py +72 -0
- my_crew-0.1.0/tests/test_staff_templates.py +143 -0
- my_crew-0.1.0/tests/test_stale_artifact_review.py +176 -0
- my_crew-0.1.0/tests/test_step_runtime_router.py +80 -0
- my_crew-0.1.0/tests/test_storage_hygiene.py +172 -0
- my_crew-0.1.0/tests/test_store_selection.py +90 -0
- my_crew-0.1.0/tests/test_task_assignment.py +362 -0
- my_crew-0.1.0/tests/test_task_decomposition.py +204 -0
- my_crew-0.1.0/tests/test_team_graph_checkpointer.py +176 -0
- my_crew-0.1.0/tests/test_team_step_egress.py +119 -0
- my_crew-0.1.0/tests/test_team_step_runner.py +132 -0
- my_crew-0.1.0/tests/test_team_task_actions_redline.py +237 -0
- my_crew-0.1.0/tests/test_team_task_artifact.py +135 -0
- my_crew-0.1.0/tests/test_team_task_consult.py +274 -0
- my_crew-0.1.0/tests/test_team_task_consult_propose.py +128 -0
- my_crew-0.1.0/tests/test_team_task_graph.py +221 -0
- my_crew-0.1.0/tests/test_team_task_graph_consult.py +198 -0
- my_crew-0.1.0/tests/test_team_task_graph_recover.py +244 -0
- my_crew-0.1.0/tests/test_team_task_graph_selfcheck.py +108 -0
- my_crew-0.1.0/tests/test_team_task_roster.py +90 -0
- my_crew-0.1.0/tests/test_team_task_roster_role_hints.py +64 -0
- my_crew-0.1.0/tests/test_team_task_store.py +947 -0
- my_crew-0.1.0/tests/test_team_tick_collaborators.py +176 -0
- my_crew-0.1.0/tests/test_team_tick_runner.py +73 -0
- my_crew-0.1.0/tests/test_telegram_identity.py +562 -0
- my_crew-0.1.0/tests/test_template_config_version_pin.py +165 -0
- my_crew-0.1.0/tests/test_template_live_skills.py +77 -0
- my_crew-0.1.0/tests/test_tool_calling_runtime.py +103 -0
- my_crew-0.1.0/tests/test_tool_error_resilience.py +147 -0
- my_crew-0.1.0/tests/test_trust_mode_policy.py +239 -0
- my_crew-0.1.0/tests/test_verify_plan_hash_system_inserted.py +177 -0
- my_crew-0.1.0/tests/test_watcher_wake_gate.py +352 -0
- my_crew-0.1.0/tests/test_web_auth.py +148 -0
- my_crew-0.1.0/tests/test_web_search_injection.py +296 -0
- my_crew-0.1.0/tests/test_weekly_resource_section.py +129 -0
- my_crew-0.1.0/tests/test_worker.py +172 -0
- my_crew-0.1.0/tests/test_worker_resume.py +167 -0
- my_crew-0.1.0/tests/test_worker_team_step_mcp_pool.py +57 -0
- my_crew-0.1.0/tests/test_workroom_chat_and_health.py +208 -0
- my_crew-0.1.0/tests/test_xlsx_export.py +134 -0
- my_crew-0.1.0/uv.lock +2272 -0
- my_crew-0.1.0/web/.gitignore +24 -0
- my_crew-0.1.0/web/.oxlintrc.json +8 -0
- my_crew-0.1.0/web/README.md +32 -0
- my_crew-0.1.0/web/index.html +34 -0
- my_crew-0.1.0/web/package-lock.json +4772 -0
- my_crew-0.1.0/web/package.json +39 -0
- my_crew-0.1.0/web/public/favicon.svg +1 -0
- my_crew-0.1.0/web/public/icons.svg +24 -0
- my_crew-0.1.0/web/src/App.css +711 -0
- my_crew-0.1.0/web/src/App.tsx +130 -0
- my_crew-0.1.0/web/src/action-summary.test.tsx +73 -0
- my_crew-0.1.0/web/src/action-summary.ts +125 -0
- my_crew-0.1.0/web/src/agent-context.tsx +46 -0
- my_crew-0.1.0/web/src/api/client.ts +332 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-400-latin.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-400-vietnamese.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-500-latin.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-500-vietnamese.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-600-latin.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-600-vietnamese.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-700-latin.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/fonts/be-vietnam-pro-700-vietnamese.woff2 +0 -0
- my_crew-0.1.0/web/src/assets/hero.png +0 -0
- my_crew-0.1.0/web/src/assets/react.svg +1 -0
- my_crew-0.1.0/web/src/assets/vite.svg +1 -0
- my_crew-0.1.0/web/src/components/AdvancedAgentView.tsx +19 -0
- my_crew-0.1.0/web/src/components/AgentPicker.tsx +20 -0
- my_crew-0.1.0/web/src/components/AuditTable.tsx +36 -0
- my_crew-0.1.0/web/src/components/ConfigEditor.tsx +59 -0
- my_crew-0.1.0/web/src/components/ConfirmDialog.test.tsx +61 -0
- my_crew-0.1.0/web/src/components/ConfirmDialog.tsx +68 -0
- my_crew-0.1.0/web/src/components/DomainPicker.tsx +52 -0
- my_crew-0.1.0/web/src/components/FactsList.tsx +21 -0
- my_crew-0.1.0/web/src/components/IntegrationHealthPanel.test.tsx +34 -0
- my_crew-0.1.0/web/src/components/IntegrationHealthPanel.tsx +80 -0
- my_crew-0.1.0/web/src/components/Layout.test.tsx +67 -0
- my_crew-0.1.0/web/src/components/Layout.tsx +97 -0
- my_crew-0.1.0/web/src/components/PendingProposals.tsx +34 -0
- my_crew-0.1.0/web/src/components/RunList.tsx +35 -0
- my_crew-0.1.0/web/src/components/ScheduleBuilder.test.tsx +24 -0
- my_crew-0.1.0/web/src/components/ScheduleBuilder.tsx +82 -0
- my_crew-0.1.0/web/src/components/TeamTaskCost.tsx +75 -0
- my_crew-0.1.0/web/src/components/ThemeToggle.tsx +31 -0
- my_crew-0.1.0/web/src/components/charts/CostChart.tsx +55 -0
- my_crew-0.1.0/web/src/components/charts/VerdictChart.tsx +26 -0
- my_crew-0.1.0/web/src/components/charts/chart-theme.ts +46 -0
- my_crew-0.1.0/web/src/fonts.css +85 -0
- my_crew-0.1.0/web/src/hooks/use-agent-data.ts +43 -0
- my_crew-0.1.0/web/src/hooks/use-auto-approved.ts +50 -0
- my_crew-0.1.0/web/src/hooks/use-office-stream.test.ts +84 -0
- my_crew-0.1.0/web/src/hooks/use-office-stream.ts +56 -0
- my_crew-0.1.0/web/src/hooks/use-pending-approvals.ts +47 -0
- my_crew-0.1.0/web/src/hooks/use-sse.ts +55 -0
- my_crew-0.1.0/web/src/hooks/use-team-health.ts +31 -0
- my_crew-0.1.0/web/src/index.css +4 -0
- my_crew-0.1.0/web/src/labels.test.ts +56 -0
- my_crew-0.1.0/web/src/labels.ts +88 -0
- my_crew-0.1.0/web/src/main.tsx +17 -0
- my_crew-0.1.0/web/src/pending-approvals-context.tsx +34 -0
- my_crew-0.1.0/web/src/routes/office-unified-lazy.tsx +57 -0
- my_crew-0.1.0/web/src/test-setup.ts +18 -0
- my_crew-0.1.0/web/src/test-utils.tsx +19 -0
- my_crew-0.1.0/web/src/theme-context.test.tsx +132 -0
- my_crew-0.1.0/web/src/theme-context.tsx +84 -0
- my_crew-0.1.0/web/src/types.ts +698 -0
- my_crew-0.1.0/web/src/ui-mode-context.test.tsx +66 -0
- my_crew-0.1.0/web/src/ui-mode-context.tsx +50 -0
- my_crew-0.1.0/web/src/views/AgentKnowledgeTab.test.tsx +44 -0
- my_crew-0.1.0/web/src/views/AgentKnowledgeTab.tsx +301 -0
- my_crew-0.1.0/web/src/views/AgentPage.test.tsx +156 -0
- my_crew-0.1.0/web/src/views/AgentPage.tsx +231 -0
- my_crew-0.1.0/web/src/views/Approvals.tsx +97 -0
- my_crew-0.1.0/web/src/views/Chat.test.tsx +75 -0
- my_crew-0.1.0/web/src/views/Chat.tsx +160 -0
- my_crew-0.1.0/web/src/views/CompanyActivity.test.tsx +79 -0
- my_crew-0.1.0/web/src/views/CompanyActivity.tsx +158 -0
- my_crew-0.1.0/web/src/views/CompanyDocs.test.tsx +42 -0
- my_crew-0.1.0/web/src/views/CompanyDocs.tsx +144 -0
- my_crew-0.1.0/web/src/views/Config.tsx +42 -0
- my_crew-0.1.0/web/src/views/Connections.test.tsx +105 -0
- my_crew-0.1.0/web/src/views/Connections.tsx +146 -0
- my_crew-0.1.0/web/src/views/Cost.tsx +33 -0
- my_crew-0.1.0/web/src/views/CreateAgent.test.tsx +126 -0
- my_crew-0.1.0/web/src/views/CreateAgent.tsx +90 -0
- my_crew-0.1.0/web/src/views/Guardrail.tsx +32 -0
- my_crew-0.1.0/web/src/views/Login.test.tsx +35 -0
- my_crew-0.1.0/web/src/views/Login.tsx +54 -0
- my_crew-0.1.0/web/src/views/MemoryAuto.tsx +37 -0
- my_crew-0.1.0/web/src/views/OfficeRoom.test.tsx +145 -0
- my_crew-0.1.0/web/src/views/OfficeRoom.tsx +86 -0
- my_crew-0.1.0/web/src/views/Outputs.test.tsx +110 -0
- my_crew-0.1.0/web/src/views/Outputs.tsx +125 -0
- my_crew-0.1.0/web/src/views/Overview.test.tsx +37 -0
- my_crew-0.1.0/web/src/views/Overview.tsx +45 -0
- my_crew-0.1.0/web/src/views/Settings.tsx +111 -0
- my_crew-0.1.0/web/src/views/Setup.test.tsx +100 -0
- my_crew-0.1.0/web/src/views/Setup.tsx +284 -0
- my_crew-0.1.0/web/src/views/Tasks.test.tsx +52 -0
- my_crew-0.1.0/web/src/views/Tasks.tsx +111 -0
- my_crew-0.1.0/web/src/views/Team.test.tsx +219 -0
- my_crew-0.1.0/web/src/views/Team.tsx +470 -0
- my_crew-0.1.0/web/src/views/Timeline.tsx +20 -0
- my_crew-0.1.0/web/src/views/Trigger.test.tsx +45 -0
- my_crew-0.1.0/web/src/views/Trigger.tsx +107 -0
- my_crew-0.1.0/web/src/views/Work.test.tsx +91 -0
- my_crew-0.1.0/web/src/views/Work.tsx +120 -0
- my_crew-0.1.0/web/src/views/clarify-section.test.tsx +84 -0
- my_crew-0.1.0/web/src/views/clarify-section.tsx +97 -0
- my_crew-0.1.0/web/src/views/office-3d/agent-desk.tsx +217 -0
- my_crew-0.1.0/web/src/views/office-3d/agent-office-state.test.ts +355 -0
- my_crew-0.1.0/web/src/views/office-3d/agent-office-state.ts +225 -0
- my_crew-0.1.0/web/src/views/office-3d/agent-status-table.tsx +67 -0
- my_crew-0.1.0/web/src/views/office-3d/coordinator-desk.tsx +24 -0
- my_crew-0.1.0/web/src/views/office-3d/desk-colors.ts +90 -0
- my_crew-0.1.0/web/src/views/office-3d/desk-layout.test.ts +34 -0
- my_crew-0.1.0/web/src/views/office-3d/desk-layout.ts +38 -0
- my_crew-0.1.0/web/src/views/office-3d/office-canvas.tsx +110 -0
- my_crew-0.1.0/web/src/views/office-3d/office-floor.tsx +22 -0
- my_crew-0.1.0/web/src/views/office-3d/office-props.tsx +49 -0
- my_crew-0.1.0/web/src/views/office-3d/speech-bubble.test.ts +23 -0
- my_crew-0.1.0/web/src/views/office-3d/speech-bubble.tsx +60 -0
- my_crew-0.1.0/web/src/views/office-3d/use-3d-fallback.test.ts +75 -0
- my_crew-0.1.0/web/src/views/office-3d/use-3d-fallback.ts +38 -0
- my_crew-0.1.0/web/src/views/office-shared/office-message-line.test.ts +38 -0
- my_crew-0.1.0/web/src/views/office-shared/office-message-line.ts +60 -0
- my_crew-0.1.0/web/src/views/office-unified/activity-feed.tsx +71 -0
- my_crew-0.1.0/web/src/views/office-unified/artifact-panel.tsx +88 -0
- my_crew-0.1.0/web/src/views/office-unified/artifact-viewer.tsx +92 -0
- my_crew-0.1.0/web/src/views/office-unified/assign-composer.test.ts +28 -0
- my_crew-0.1.0/web/src/views/office-unified/assign-composer.tsx +224 -0
- my_crew-0.1.0/web/src/views/office-unified/coordinator-health-banner.tsx +44 -0
- my_crew-0.1.0/web/src/views/office-unified/office-unified.test.tsx +85 -0
- my_crew-0.1.0/web/src/views/office-unified/office-unified.tsx +162 -0
- my_crew-0.1.0/web/src/views/office-unified/workroom-helpers.test.ts +50 -0
- my_crew-0.1.0/web/src/views/office-unified/workroom-list.tsx +43 -0
- my_crew-0.1.0/web/src/views/ops.test.tsx +87 -0
- my_crew-0.1.0/web/src/views/setup-company-step.tsx +57 -0
- my_crew-0.1.0/web/src/views/team-task-kanban.tsx +80 -0
- my_crew-0.1.0/web/src/views/views.test.tsx +101 -0
- my_crew-0.1.0/web/src/wizard/BindingsStep.tsx +99 -0
- my_crew-0.1.0/web/src/wizard/IdentityStep.tsx +132 -0
- my_crew-0.1.0/web/src/wizard/ReportsStep.tsx +35 -0
- my_crew-0.1.0/web/src/wizard/ReviewStep.tsx +72 -0
- my_crew-0.1.0/web/src/wizard/env-template.test.ts +20 -0
- my_crew-0.1.0/web/src/wizard/env-template.ts +44 -0
- my_crew-0.1.0/web/src/wizard/persona-template.test.ts +15 -0
- my_crew-0.1.0/web/src/wizard/persona-template.ts +27 -0
- my_crew-0.1.0/web/src/wizard/staff-template-picker.test.tsx +116 -0
- my_crew-0.1.0/web/src/wizard/staff-template-picker.tsx +232 -0
- my_crew-0.1.0/web/src/wizard/use-create-agent-wizard.test.ts +144 -0
- my_crew-0.1.0/web/src/wizard/use-create-agent-wizard.ts +223 -0
- my_crew-0.1.0/web/tsconfig.app.json +28 -0
- my_crew-0.1.0/web/tsconfig.json +7 -0
- my_crew-0.1.0/web/tsconfig.node.json +23 -0
- my_crew-0.1.0/web/vite.config.ts +26 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Build context = the repo; keep user data, secrets, and heavyweight dev dirs out.
|
|
2
|
+
# NOTE dockerignore semantics: patterns are anchored to the context root (unlike
|
|
3
|
+
# .gitignore) — nested matches need the `**/` prefix. Last matching pattern wins.
|
|
4
|
+
.git
|
|
5
|
+
.venv
|
|
6
|
+
.pytest_cache
|
|
7
|
+
**/__pycache__
|
|
8
|
+
**/*.pyc
|
|
9
|
+
dist
|
|
10
|
+
plans
|
|
11
|
+
.data
|
|
12
|
+
.demo-backup
|
|
13
|
+
.mcp-servers
|
|
14
|
+
node_modules
|
|
15
|
+
web/node_modules
|
|
16
|
+
web/dist
|
|
17
|
+
|
|
18
|
+
# User data / secrets (never bake into an image) — recursive on purpose: the
|
|
19
|
+
# compose flow writes deploy/docker/my-crew.env with REAL secrets next to the
|
|
20
|
+
# Dockerfile, and a rebuild must never copy it in.
|
|
21
|
+
**/.env
|
|
22
|
+
**/.env.*
|
|
23
|
+
**/*.env
|
|
24
|
+
!.env.example
|
|
25
|
+
!deploy/docker/my-crew.env.example
|
|
26
|
+
registry.yaml
|
|
27
|
+
company.yaml
|
|
28
|
+
company-docs
|
|
29
|
+
.setup-complete
|
|
30
|
+
profiles/*
|
|
31
|
+
!profiles/default
|
|
32
|
+
!profiles/templates
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Copy to .env and fill in. .env is gitignored — never commit real values.
|
|
2
|
+
# ALL secrets live in THIS ONE agent .env. The agent (MCP client) reads them and
|
|
3
|
+
# injects them into each MCP server's subprocess env when it spawns the server
|
|
4
|
+
# (node dist/index.js). There is no separate per-server .env. GitHub uses `gh auth login`.
|
|
5
|
+
|
|
6
|
+
# --- Paths ---
|
|
7
|
+
# Root for user state (.env, registry.yaml, company.yaml, profiles/, company-docs/,
|
|
8
|
+
# .data/). Default: the repo checkout when running from git, else ~/.my-crew for an
|
|
9
|
+
# installed package. Set to relocate all state explicitly.
|
|
10
|
+
# MY_CREW_HOME=~/.my-crew
|
|
11
|
+
|
|
12
|
+
# --- LLM provider (OpenRouter, OpenAI-compatible) ---
|
|
13
|
+
OPENROUTER_API_KEY=
|
|
14
|
+
OPENROUTER_MODEL=minimax/minimax-m2.7
|
|
15
|
+
# v4 M9 (optional): fallback chain, comma-separated, tried in order on 402/429/5xx/
|
|
16
|
+
# timeout/empty. Unset = single model (pre-v4 behavior). Budget cap still supreme.
|
|
17
|
+
# OPENROUTER_MODEL_CHAIN=minimax/minimax-m2.7,qwen/qwen-3.7
|
|
18
|
+
# Fallback model if the default underperforms: qwen/qwen-3.7
|
|
19
|
+
OPENROUTER_REFERER=https://github.com/local/my-project-manager
|
|
20
|
+
OPENROUTER_TITLE=my-project-manager
|
|
21
|
+
|
|
22
|
+
# --- Guardrails ---
|
|
23
|
+
# DRY_RUN=true -> Action Gateway logs intended writes instead of posting them.
|
|
24
|
+
# Set to false to actually post to Slack.
|
|
25
|
+
DRY_RUN=true
|
|
26
|
+
# Kill switch: true -> gateway refuses ALL mutations (read + log only).
|
|
27
|
+
AGENT_WRITE_DISABLED=false
|
|
28
|
+
# Trust mode (v30): autonomous (default) -> agent actions run immediately with an
|
|
29
|
+
# audit record; guarded -> sensitive (Lớp B) actions queue for human approval.
|
|
30
|
+
# Per-agent override: safety.trust_mode in profile.yaml. Lớp A hard-deny, audit,
|
|
31
|
+
# dry-run and the kill switch apply in BOTH modes.
|
|
32
|
+
TRUST_MODE=autonomous
|
|
33
|
+
# Monthly OpenRouter spend cap (USD). Hard-stop at 100%, warn at the ratio below.
|
|
34
|
+
MONTHLY_BUDGET_USD=50
|
|
35
|
+
BUDGET_WARN_RATIO=0.8
|
|
36
|
+
|
|
37
|
+
# --- Atlassian / Jira (agent injects these into the Jira MCP server subprocess) ---
|
|
38
|
+
ATLASSIAN_SITE_NAME=
|
|
39
|
+
ATLASSIAN_USER_EMAIL=
|
|
40
|
+
ATLASSIAN_API_TOKEN=
|
|
41
|
+
|
|
42
|
+
# --- Slack (agent injects these into the Slack MCP server subprocess) ---
|
|
43
|
+
# Browser-token auth -- BROAD scope, handle with care.
|
|
44
|
+
SLACK_XOXC_TOKEN=
|
|
45
|
+
SLACK_XOXD_TOKEN=
|
|
46
|
+
SLACK_TEAM_DOMAIN=
|
|
47
|
+
|
|
48
|
+
# --- Report targets ---
|
|
49
|
+
JIRA_PROJECT_KEY=
|
|
50
|
+
GITHUB_REPO=
|
|
51
|
+
SLACK_REPORT_CHANNEL=
|
|
52
|
+
|
|
53
|
+
# --- Risk thresholds (defaults shown) ---
|
|
54
|
+
PR_STALE_DAYS=7
|
|
55
|
+
BLOCKER_LABEL_SUBSTRING=block
|
|
56
|
+
|
|
57
|
+
# --- Optional: override MCP server entry paths ---
|
|
58
|
+
# Defaults: ~/workspace/jira-cloud-mcp-server/<entry>, ~/workspace/slack-browser-mcp-server/<entry>
|
|
59
|
+
# JIRA_MCP_DIST=
|
|
60
|
+
# SLACK_MCP_DIST=
|
|
61
|
+
|
|
62
|
+
# --- M3-P11 (C3): optional Linear integration (config-driven extra MCP server) ---
|
|
63
|
+
# Declare `integrations.linear` in profile.yaml; the agent spawns the stdio server
|
|
64
|
+
# (@tacticlaunch/mcp-linear) and reads issues/projects. Writes (createComment) stay
|
|
65
|
+
# behind the Action Gateway (Lop B approval). Token is read here, never in profile.yaml.
|
|
66
|
+
# LINEAR_MCP_DIST=
|
|
67
|
+
# LINEAR_API_TOKEN=
|
|
68
|
+
|
|
69
|
+
# --- M3-P11 (D2): optional Email (SMTP) delivery channel ---
|
|
70
|
+
# Declare `smtp:` in profile.yaml (or set SMTP_HOST). Every email is sent through the
|
|
71
|
+
# Action Gateway and requires Lop B human approval. Password is read here, never in yaml.
|
|
72
|
+
# SMTP_HOST=smtp.gmail.com
|
|
73
|
+
# SMTP_PORT=587
|
|
74
|
+
# SMTP_USER=
|
|
75
|
+
# SMTP_PASSWORD= # app password; env-only, never committed in a profile
|
|
76
|
+
# SMTP_FROM_ADDR=
|
|
77
|
+
# SMTP_USE_TLS=true
|
|
78
|
+
# SMTP_RECIPIENTS= # comma-separated
|
|
79
|
+
|
|
80
|
+
# --- v6 M13: optional per-agent Telegram bot identity ---
|
|
81
|
+
# Each agent = its OWN bot (create via @BotFather). Declare `telegram:` in the agent's
|
|
82
|
+
# profile.yaml with `bot_token_env` naming a var here — one var per agent, value env-only.
|
|
83
|
+
# <AGENT>_TELEGRAM_BOT_TOKEN=
|
|
84
|
+
|
|
85
|
+
# --- Confluence (Slice 2: detail report). Reuses Atlassian token above. ---
|
|
86
|
+
CONFLUENCE_SPACE_KEY=
|
|
87
|
+
CONFLUENCE_SPACE_ID=
|
|
88
|
+
|
|
89
|
+
# --- Phase 2: Lớp B (channels needing human approval before posting) ---
|
|
90
|
+
# Comma-separated channel IDs treated as external/stakeholder. Posting to these
|
|
91
|
+
# is queued for approval (cli approve), not auto-executed. Empty = none external.
|
|
92
|
+
SLACK_EXTERNAL_CHANNELS=
|
|
93
|
+
|
|
94
|
+
# --- Phase 3: OKR / objective tracking ---
|
|
95
|
+
# Confluence page (id) holding the OKR table: columns Objective | Key Result |
|
|
96
|
+
# Epic Key(s) | Weight. Empty = OKR features off (report --okr errors, weekly
|
|
97
|
+
# section omitted). An Objective rolling up below the threshold (fraction 0..1)
|
|
98
|
+
# is flagged "at risk".
|
|
99
|
+
OKR_CONFLUENCE_PAGE_ID=
|
|
100
|
+
OKR_BEHIND_THRESHOLD=0.5
|
|
101
|
+
|
|
102
|
+
# --- Phase 4: Resource (capacity) + Cost reporting ---
|
|
103
|
+
# Overload threshold: an assignee is "overloaded" if their open-issue count
|
|
104
|
+
# exceeds team_mean × this ratio (1.5 ⇒ >150% of the team average).
|
|
105
|
+
RESOURCE_OVERLOAD_RATIO=1.5
|
|
106
|
+
# Average labor cost per open issue, USD, for a rough labor estimate.
|
|
107
|
+
# 0 ⇒ labor estimate omitted from the report (only the real LLM budget shows).
|
|
108
|
+
LABOR_COST_PER_ISSUE=0
|
|
109
|
+
|
|
110
|
+
# --- Phase 5: Audience-split (external/stakeholder reports) ---
|
|
111
|
+
# The single Slack channel external/stakeholder reports post to (--audience external).
|
|
112
|
+
# MUST also be listed in SLACK_EXTERNAL_CHANNELS so the post routes through Lớp B
|
|
113
|
+
# human approval (otherwise it would auto-post to stakeholders without review).
|
|
114
|
+
SLACK_STAKEHOLDER_CHANNEL=
|
|
115
|
+
|
|
116
|
+
# --- v6 M16: web dashboard auth (single-user session) ---
|
|
117
|
+
# Generate the hash: uv run python -m src.entrypoints.mpm web hash-password
|
|
118
|
+
# Generate the secret: uv run python -m src.entrypoints.mpm web gen-secret
|
|
119
|
+
# When WEB_AUTH_PASSWORD_HASH is UNSET, the dashboard runs with NO auth (localhost dev only).
|
|
120
|
+
# Binding a non-loopback BIND_HOST while auth is OFF is REFUSED at startup.
|
|
121
|
+
# WEB_AUTH_USERNAME=admin
|
|
122
|
+
# WEB_AUTH_PASSWORD_HASH=
|
|
123
|
+
# WEB_SESSION_SECRET=
|
|
124
|
+
# BIND_HOST=127.0.0.1 # 0.0.0.0 for LAN — only with auth configured above
|
|
125
|
+
# PORT=8765
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# CI: the suite is secret-free by design (tests/conftest.py isolates env + tmp dirs),
|
|
2
|
+
# so every job runs on plain PyPI/npm with no credentials.
|
|
3
|
+
name: ci
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
pull_request:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
backend:
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
os: [ubuntu-latest, macos-latest]
|
|
15
|
+
runs-on: ${{ matrix.os }}
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- uses: astral-sh/setup-uv@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.12"
|
|
21
|
+
- run: uv sync --extra deep
|
|
22
|
+
- run: uv run ruff check .
|
|
23
|
+
- run: uv run pytest -q
|
|
24
|
+
|
|
25
|
+
frontend:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
defaults:
|
|
28
|
+
run:
|
|
29
|
+
working-directory: web
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
- uses: actions/setup-node@v4
|
|
33
|
+
with:
|
|
34
|
+
node-version: 22
|
|
35
|
+
cache: npm
|
|
36
|
+
cache-dependency-path: web/package-lock.json
|
|
37
|
+
- run: npm ci
|
|
38
|
+
# Build for real, not just --noEmit: a stale committed dist bit us before
|
|
39
|
+
# (v32); tsc -b + vite build is the honest gate. NOTE: this does NOT diff the
|
|
40
|
+
# rebuilt output against the committed dist (vite hash stability across
|
|
41
|
+
# runners is unverified) — docs/releasing.md step 2 is the stale-dist guard.
|
|
42
|
+
- run: npx tsc -b
|
|
43
|
+
- run: npm test
|
|
44
|
+
- run: npm run build
|
|
45
|
+
|
|
46
|
+
wheel:
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
steps:
|
|
49
|
+
- uses: actions/checkout@v4
|
|
50
|
+
- uses: astral-sh/setup-uv@v5
|
|
51
|
+
with:
|
|
52
|
+
python-version: "3.12"
|
|
53
|
+
- run: uv build
|
|
54
|
+
# The wheel must carry the shipped resources and the FE bundle — a wheel
|
|
55
|
+
# without them installs a my-crew that cannot seed a fresh home.
|
|
56
|
+
- name: verify wheel contents
|
|
57
|
+
run: |
|
|
58
|
+
test "$(unzip -l dist/*.whl | grep -c _shipped/)" -ge 60
|
|
59
|
+
test "$(unzip -l dist/*.whl | grep -cE 'static/app/')" -ge 10
|
|
60
|
+
- name: smoke-install from the wheel
|
|
61
|
+
run: |
|
|
62
|
+
python -m venv /tmp/v && /tmp/v/bin/pip -q install dist/*.whl
|
|
63
|
+
MY_CREW_HOME=/tmp/crew-home /tmp/v/bin/my-crew --version
|
|
64
|
+
MY_CREW_HOME=/tmp/crew-home /tmp/v/bin/my-crew agent list
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Release: build from the tag, publish to PyPI via OIDC trusted publishing (no stored
|
|
2
|
+
# token — register this repo+workflow as a trusted publisher for project `my-crew` on
|
|
3
|
+
# pypi.org first; see docs/releasing.md). workflow_dispatch = build-only rehearsal.
|
|
4
|
+
name: release
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
tags: ["v*"]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- uses: astral-sh/setup-uv@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.12"
|
|
19
|
+
- run: uv build
|
|
20
|
+
- name: verify wheel contents
|
|
21
|
+
run: |
|
|
22
|
+
test "$(unzip -l dist/*.whl | grep -c _shipped/)" -ge 60
|
|
23
|
+
test "$(unzip -l dist/*.whl | grep -cE 'static/app/')" -ge 10
|
|
24
|
+
- uses: actions/upload-artifact@v4
|
|
25
|
+
with:
|
|
26
|
+
name: packages
|
|
27
|
+
path: dist/
|
|
28
|
+
|
|
29
|
+
publish:
|
|
30
|
+
# Tag pushes only — a workflow_dispatch run stops at the build rehearsal.
|
|
31
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
32
|
+
needs: build
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
environment: pypi
|
|
35
|
+
permissions:
|
|
36
|
+
id-token: write # OIDC — the only credential involved
|
|
37
|
+
contents: write # the GitHub Release below
|
|
38
|
+
steps:
|
|
39
|
+
- uses: actions/download-artifact@v4
|
|
40
|
+
with:
|
|
41
|
+
name: packages
|
|
42
|
+
path: dist/
|
|
43
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
44
|
+
- uses: softprops/action-gh-release@v2
|
|
45
|
+
with:
|
|
46
|
+
files: dist/*
|
|
47
|
+
generate_release_notes: true
|
my_crew-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.pyc
|
|
4
|
+
*.pyo
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
|
|
8
|
+
# venv (uv-managed)
|
|
9
|
+
.venv/
|
|
10
|
+
|
|
11
|
+
# Secrets — never commit
|
|
12
|
+
.env
|
|
13
|
+
*.env
|
|
14
|
+
!.env.example
|
|
15
|
+
|
|
16
|
+
# Runtime data: audit log, checkpoints, budget (see plan .data/ decision)
|
|
17
|
+
.data/
|
|
18
|
+
|
|
19
|
+
# Company Docs library (v7 M19): CEO-curated documents = local user data, restored
|
|
20
|
+
# from backup (backup.sh covers it), never committed.
|
|
21
|
+
company-docs/
|
|
22
|
+
|
|
23
|
+
# Per-agent profiles: only the `default` template is committed (holds no secrets,
|
|
24
|
+
# only token_env NAMES). Real per-agent profiles stay local.
|
|
25
|
+
profiles/*
|
|
26
|
+
!profiles/default/
|
|
27
|
+
!profiles/default/**
|
|
28
|
+
# Staff templates: shipped prefill source for the CreateAgent wizard, not a per-agent
|
|
29
|
+
# runtime profile — committed like profiles/default/.
|
|
30
|
+
!profiles/templates/
|
|
31
|
+
!profiles/templates/**
|
|
32
|
+
|
|
33
|
+
# Company identity (name + coordinator + team-task cap) — per-install user data like
|
|
34
|
+
# real profiles; load_company() degrades safely when absent on a fresh clone.
|
|
35
|
+
company.yaml
|
|
36
|
+
|
|
37
|
+
# Agent tooling / instructions — not part of the published project
|
|
38
|
+
.claude/
|
|
39
|
+
AGENTS.md
|
|
40
|
+
CLAUDE.md
|
|
41
|
+
|
|
42
|
+
# Internal working artifacts — not part of the published project
|
|
43
|
+
plans/
|
|
44
|
+
docs/references/
|
|
45
|
+
.dandori-agent
|
|
46
|
+
|
|
47
|
+
# Frontend (M4): ignore deps + the in-web build cache, but COMMIT the served dist
|
|
48
|
+
# at my_crew/server/static/app/ (the "FastAPI serves static, zero Node step" property).
|
|
49
|
+
web/node_modules/
|
|
50
|
+
web/dist/
|
|
51
|
+
|
|
52
|
+
# MCP servers installed from npm by the installer (P4) into a repo-local prefix —
|
|
53
|
+
# never committed, re-created by deploy/install.sh.
|
|
54
|
+
.mcp-servers/
|
|
55
|
+
|
|
56
|
+
# OS
|
|
57
|
+
.DS_Store
|
|
58
|
+
.setup-complete
|
|
59
|
+
.env.bak
|
|
60
|
+
# demo-mode swap backup (chứa data THẬT khi demo đang bật — tuyệt đối không commit)
|
|
61
|
+
.demo-backup/
|
|
62
|
+
# v18: registry is user data (the CEO's real team) — template is registry.example.yaml
|
|
63
|
+
/registry.yaml
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · Versioning: semver.
|
|
4
|
+
Development history at finer grain lives in [docs/journals/](docs/journals/).
|
|
5
|
+
|
|
6
|
+
## [0.1.0] — 2026-07-18
|
|
7
|
+
|
|
8
|
+
First installable release. Everything below existed as a clone-and-run system built
|
|
9
|
+
across v1–v50 (see journals); 0.1.0 packages it as a product.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- `my-crew` console script (PyPI package `my-crew`): `--help`, `--version`, and the
|
|
13
|
+
full command surface — `quickstart`, `crew init`, `serve`, `doctor`, `upgrade`,
|
|
14
|
+
`agent *`, `web hash-password`, `sandbox prepull`.
|
|
15
|
+
- `my-crew serve`: foreground web + coordinator supervisor for Docker Compose,
|
|
16
|
+
systemd, or a plain terminal. `deploy/docker/` ships a Dockerfile + compose file.
|
|
17
|
+
- `MY_CREW_HOME`: user state (.env, registry, profiles, data) resolves to the env
|
|
18
|
+
var, else the git checkout, else `~/.my-crew`. Shipped starter profiles seed into
|
|
19
|
+
a fresh home on first run.
|
|
20
|
+
- The wheel bundles the web dashboard (no Node needed to install) and the shipped
|
|
21
|
+
resources (starter profiles, templates, domain packs, examples).
|
|
22
|
+
- GitHub Actions CI (secret-free test suite, ubuntu + macos) and an OIDC-based
|
|
23
|
+
PyPI release pipeline.
|
|
24
|
+
|
|
25
|
+
### Core (pre-0.1.0, summarized)
|
|
26
|
+
- Autonomy-first agent harness on LangGraph: every write flows through the Action
|
|
27
|
+
Gateway — hard-coded red lines (Lớp A), autonomous-vs-guarded trust modes,
|
|
28
|
+
kill-switch, dry-run default, dedup, rate-limit, immutable audit log.
|
|
29
|
+
- Multi-agent virtual office: browser dashboard + 3D office, one-click staff
|
|
30
|
+
templates, chat-ops, team tasks with review steps, per-task cost tracking.
|
|
31
|
+
- Integrations via MCP: Jira, Confluence, Slack (+ GitHub via `gh`), layered
|
|
32
|
+
memory, budget caps, scheduler with per-agent cron.
|
|
33
|
+
|
|
34
|
+
### Known limitations
|
|
35
|
+
- The `deep` sandbox tier (`pip install my-crew[deep]`) needs a Docker daemon and
|
|
36
|
+
is not available *inside* the provided container image.
|
|
37
|
+
- The 3 MCP servers require Node at runtime (prepulled in the Docker image;
|
|
38
|
+
installed by `deploy/install.sh` on native installs).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Dev setup
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
git clone git@github.com:phuc-nt/my-crew.git && cd my-crew
|
|
7
|
+
uv sync --extra deep # deep = optional Docker-sandbox tier (needs Docker to run, not to test)
|
|
8
|
+
uv run pytest -q # 2364+ BE tests — no secrets, no network, no Docker required
|
|
9
|
+
uv run ruff check .
|
|
10
|
+
cd web && npm install && npm test # 201 FE tests
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
A git checkout keeps all user state repo-local (`.env`, `registry.yaml`,
|
|
14
|
+
`profiles/`, `.data/`) — `MY_CREW_HOME` docs: see the deployment guide.
|
|
15
|
+
|
|
16
|
+
## Rules of the road
|
|
17
|
+
|
|
18
|
+
- **The test suite must stay secret-free.** Any test that needs a real key,
|
|
19
|
+
network, or Docker daemon gets a `skipif` gate. CI runs the whole suite on
|
|
20
|
+
clean runners.
|
|
21
|
+
- **The Action Gateway is the invariant.** Changes that add a write path must
|
|
22
|
+
route it through the gateway; changes to Lớp A/Lớp B semantics need an
|
|
23
|
+
explicit maintainer decision, not a drive-by refactor.
|
|
24
|
+
- **Conventional commits** (`feat:`, `fix:`, `refactor:` …), no AI references.
|
|
25
|
+
- Python: ruff-clean, snake_case, type hints on public functions; line length 100.
|
|
26
|
+
- FE: TypeScript strict; build for real (`npm run build`) when the dist matters —
|
|
27
|
+
the served bundle at `my_crew/server/static/app/` is committed.
|
|
28
|
+
- Docs: user-facing behavior changes update `docs/`; development narrative goes
|
|
29
|
+
to `docs/journals/`.
|
|
30
|
+
|
|
31
|
+
## Releases
|
|
32
|
+
|
|
33
|
+
Maintainer-driven; see [docs/releasing.md](docs/releasing.md).
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# HANDOVER — my-crew
|
|
2
|
+
|
|
3
|
+
Bạn là agent/đội mới nhận repo này để **refactor + phát triển tiếp**. File này là điểm
|
|
4
|
+
vào DUY NHẤT: đọc xong bạn biết đọc gì tiếp. Không cần biết toàn bộ quá trình xây dựng —
|
|
5
|
+
chỉ cần đủ context để làm tiếp an toàn.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Sản phẩm là gì (30 giây)
|
|
10
|
+
|
|
11
|
+
Một **đội nhân sự ảo AI** cho công ty một-người. CEO (không kỹ thuật) giao việc qua web/
|
|
12
|
+
Telegram; các agent tự làm việc PM/nội dung/nghiên cứu/phân tích/kiểm định, đọc dữ liệu
|
|
13
|
+
thật từ Jira·GitHub·Confluence·Slack, và *tự hành động* (viết báo cáo, tạo trang, cảnh báo).
|
|
14
|
+
|
|
15
|
+
**Triết lý cốt lõi — thuộc nằm lòng:** *tự chủ về TỐC ĐỘ, không bao giờ tự chủ về TRÁCH
|
|
16
|
+
NHIỆM.* Mọi hành động ghi ra ngoài công ty đi qua MỘT cửa kiểm soát (Action Gateway);
|
|
17
|
+
việc mất-dữ-liệu/lộ-bí-mật bị chặn cứng, LLM không vượt được kể cả khi "muốn".
|
|
18
|
+
|
|
19
|
+
## 2. Tech stack
|
|
20
|
+
|
|
21
|
+
- **Backend**: Python ≥3.12, quản lý bằng **uv**. LangGraph (agent graph). FastAPI + SSE.
|
|
22
|
+
SQLite (WAL) cho state. Không dùng ORM.
|
|
23
|
+
- **Frontend**: React 19 + TypeScript + Vite; react-three-fiber/three cho màn 3D "Văn phòng".
|
|
24
|
+
Build dist commit vào `src/server/static/app/` (server serve tĩnh).
|
|
25
|
+
- **Tích hợp ngoài**: MCP servers (Jira/Confluence/Slack) + `gh` CLI (GitHub) + `gws` CLI
|
|
26
|
+
(Google Sheets, hr-pack). LLM qua OpenRouter.
|
|
27
|
+
- **Test**: `uv run pytest` (~1706 BE) · `cd web && npx vitest run` (~177 FE) · `npx tsc --noEmit`.
|
|
28
|
+
|
|
29
|
+
## 3. Đọc theo thứ tự này
|
|
30
|
+
|
|
31
|
+
| # | File | Để biết | Ưu tiên |
|
|
32
|
+
|---|------|---------|---------|
|
|
33
|
+
| 1 | **`CLAUDE.md`** | Luật làm việc trong repo (workflow, quy tắc code, commit, hook privacy) | BẮT BUỘC |
|
|
34
|
+
| 2 | **`.claude/rules/*.md`** | Chi tiết: development-rules, primary-workflow, orchestration, review | BẮT BUỘC |
|
|
35
|
+
| 3 | **`docs/project-overview-pdr.md`** | Vision, vấn đề, phạm vi, yêu cầu — VÌ SAO có sản phẩm | BẮT BUỘC |
|
|
36
|
+
| 4 | **`docs/system-architecture.md`** | Kiến trúc as-built v18 (sơ đồ, thành phần, luồng dữ liệu) | BẮT BUỘC |
|
|
37
|
+
| 5 | **`docs/action-gateway-explainer.md`** | Mô hình an toàn (Action Gateway) — trái tim sản phẩm | BẮT BUỘC |
|
|
38
|
+
| 6 | **`docs/codebase-summary.md`** | Bản đồ "cái gì ở file nào" + quyết định theo mốc | BẮT BUỘC |
|
|
39
|
+
| 7 | `docs/uat-theo-user-story.md` | Sản phẩm LÀM ĐƯỢC GÌ (7 epic, 22 story) — spec hành vi | Cao |
|
|
40
|
+
| 8 | `docs/project-roadmap.md` | Đã làm gì + việc nên làm tiếp | Cao |
|
|
41
|
+
| 9 | `docs/deployment-guide.md` | Cài / chạy / backup | Khi deploy |
|
|
42
|
+
| 10 | `docs/code-standards.md`, `docs/design-guidelines.md` | Chuẩn code + UI | Vừa |
|
|
43
|
+
| 11 | `docs/journals/*`, `plans/*` | Lịch sử từng vòng — chỉ tra khi cần "vì sao quyết định X" | Tra cứu |
|
|
44
|
+
|
|
45
|
+
> `README.md` cho người học "cách build agent có guardrail" (vision, không phải map kiến
|
|
46
|
+
> trúc hiện tại). `docs/huong-dan-su-dung.md` là hướng dẫn tiếng Việt cho CEO (người dùng
|
|
47
|
+
> cuối). `docs/archive/` chứa tài liệu cũ (v1/v2, phỏng vấn, so-sánh-kiến-trúc) — CHỈ tra
|
|
48
|
+
> khi cần lịch sử.
|
|
49
|
+
|
|
50
|
+
## 4. Bản đồ code (nơi bắt đầu khi sửa)
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
src/
|
|
54
|
+
agent/ LangGraph graphs + nodes. LÕI: coordinator_graph.py (ticker điều phối),
|
|
55
|
+
team_task_graph.py (chạy 1 bước việc), task_decomposition.py (chia việc),
|
|
56
|
+
review_graph.py (soát chéo), ops_*.py (lệnh CEO: giao/chỉnh việc)
|
|
57
|
+
actions/ Action Gateway (action_gateway.py) + hard_block.py (Lớp A chặn cứng) +
|
|
58
|
+
*_write.py (handler ghi ngoài, đều qua gateway)
|
|
59
|
+
runtime/ service.py (daemon điều phối/scheduler), worker.py (chạy 1 agent),
|
|
60
|
+
team_task_store.py (SQLite state đội), office_room_*.py (feed realtime)
|
|
61
|
+
server/ FastAPI app.py + routes_*.py + office_event_projection.py (PII firewall)
|
|
62
|
+
llm/ config/ profile/ skills/ packs/ company_docs/ reporting/ audit/ — hỗ trợ
|
|
63
|
+
web/src/
|
|
64
|
+
views/office-unified/ Màn chính "Văn phòng" (3 cột: phòng việc | hoạt động | kết quả)
|
|
65
|
+
views/office-3d/ Cảnh 3D (r3f), reducer sự kiện → trạng thái bàn
|
|
66
|
+
views/ Team, Work (Duyệt), Settings, Chat…
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Entry points: web `python -m src.server.app` (hoặc `main()` trong app.py) · daemon điều
|
|
70
|
+
phối `python -m src.runtime.service` · CLI `python -m src.entrypoints.mpm`.
|
|
71
|
+
|
|
72
|
+
## 5. BẤT BIẾN — đừng phá khi refactor (đọc kỹ)
|
|
73
|
+
|
|
74
|
+
Đây là các ràng buộc an toàn đã được red-team + E2E bảo vệ qua nhiều vòng. Sửa mà không
|
|
75
|
+
hiểu chúng = tạo lỗ hổng. Chi tiết trong codebase-summary "THE INVARIANT":
|
|
76
|
+
|
|
77
|
+
1. **Action Gateway = cửa DUY NHẤT ra ngoài.** Mọi ghi external (Slack/Jira/Confluence/
|
|
78
|
+
email) qua gateway → allowlist default-deny + Lớp A hard-block. Thêm handler ghi mới
|
|
79
|
+
PHẢI đi qua đây, không đi tắt.
|
|
80
|
+
2. **Ghi ra ngoài = Lớp B (chờ CEO duyệt).** Không tự chạy trừ khi trust-ladder bật.
|
|
81
|
+
3. **PII firewall cho office events** (`office_event_projection.py`): allowlist theo kind
|
|
82
|
+
AT WRITE TIME. Không nhét nội dung tự do (tài liệu, câu trả lời đầy đủ) vào room event.
|
|
83
|
+
4. **Hash-bind khi giao/chỉnh việc**: CEO xác nhận kế hoạch → hash khóa; `_verify_plan_hash`
|
|
84
|
+
băm lại mỗi tick chống tamper. `room_id`/`pic_id`/`acceptance` là METADATA NGOÀI hash
|
|
85
|
+
(nếu thêm field vào step, hỏi: "nó có va vào hash-check này không?").
|
|
86
|
+
5. **Cross-process isolation (khóa từ v12)**: KHÔNG chạy orchestration graph xuyên process.
|
|
87
|
+
Điều phối = ticker (poll ngắn/1-hành-động/thoát) + store + lease. Không nhúng ticker
|
|
88
|
+
vào web app.
|
|
89
|
+
6. **registry.yaml = USER-DATA (gitignored từ v18)** — KHÔNG BAO GIỜ `git checkout
|
|
90
|
+
registry.yaml` / không add. Template committed là `registry.example.yaml`.
|
|
91
|
+
|
|
92
|
+
## 6. Quy trình làm việc (repo dùng skill-driven workflow)
|
|
93
|
+
|
|
94
|
+
Repo này phát triển theo vòng: **brainstorm → plan → red-team plan → cook (implement) →
|
|
95
|
+
review → E2E thật (browser + LLM thật) → docs/journal → commit**. Bằng chứng: `plans/` +
|
|
96
|
+
`docs/journals/`. Bạn KHÔNG bắt buộc theo hệt, nhưng 2 điều nên giữ:
|
|
97
|
+
- **Red-team plan TRƯỚC khi code** — nhiều Critical được bắt ở tầng plan (rẻ), xem các
|
|
98
|
+
report `plans/*/reports/from-code-reviewer-to-planner-*`.
|
|
99
|
+
- **E2E trên đường thật** — "suite xanh ≠ chạy được" đã xảy ra 2 lần (feature dead dù
|
|
100
|
+
test xanh vì test tự set điều kiện prompt/đường thật không tạo ra). Test bằng browser +
|
|
101
|
+
ticker + LLM thật, soi DB.
|
|
102
|
+
|
|
103
|
+
## 7. Chạy thử tại chỗ
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
uv sync
|
|
107
|
+
cd web && npm install && npm run build && cd .. # build FE (dist đã commit sẵn)
|
|
108
|
+
PORT=8765 uv run python -c "from src.server.app import main; main()" & # web
|
|
109
|
+
uv run python -m src.runtime.service & # điều phối
|
|
110
|
+
# mở http://127.0.0.1:8765 (auth OFF khi localhost + chưa đặt password)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Cần data + đội mẫu để thử ngay: `scripts/demo-mode.sh on` (tắt: `off` — trả data thật
|
|
114
|
+
nguyên vẹn). Đội thật cần ≥1 coordinator + vài agent office trong `registry.yaml` +
|
|
115
|
+
service chạy, nếu không màn Văn phòng hiện banner đỏ "bộ điều phối chưa chạy".
|
|
116
|
+
|
|
117
|
+
## 8. Nợ kỹ thuật & việc nên làm tiếp (bàn giao trung thực)
|
|
118
|
+
|
|
119
|
+
- **`docs/codebase-summary.md`** phần thân vẫn dài theo dòng lịch sử v1→v18 — bản đồ
|
|
120
|
+
chính xác nhưng nên gộp phần cũ thành mục ngắn (header đã đồng bộ v18).
|
|
121
|
+
- **Cải thiện đã ghi nhận từ UAT v17/v18** (chưa làm): xem
|
|
122
|
+
`plans/260711-0711-.../reports/uat-260711-0908-*findings*.md` + `docs/project-roadmap.md`
|
|
123
|
+
§"Việc nên làm tiếp" — vd hr/sales-pm là hồ sơ agent mồ côi chưa đăng ký; web_search cần key.
|
|
124
|
+
- Nhật ký/plan rất nhiều (67 journal, 22 plan) — là lịch sử, KHÔNG cần đọc để làm tiếp;
|
|
125
|
+
tra khi cần "vì sao quyết định X".
|
|
126
|
+
|
|
127
|
+
## 9. Không được làm
|
|
128
|
+
|
|
129
|
+
- Không commit secrets/.env/token/private key/db creds/personal data.
|
|
130
|
+
- Không sửa skills trong `~/.claude/skills` (sửa bản trong repo nếu được yêu cầu).
|
|
131
|
+
- Không dùng prefix `chore`/`docs` cho commit thay đổi thư mục `.claude/`.
|
|
132
|
+
- `company.yaml`, `.data/`, `registry.yaml`, hồ sơ trong `profiles/<id>` = user-data
|
|
133
|
+
(gitignored) — không commit.
|