monoco-toolkit 0.1.1__tar.gz → 0.1.2__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.
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/.github/workflows/publish-npm.yml +8 -8
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/.gitignore +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0009-cicd-/345/237/272/345/273/272.md +2 -2
- monoco_toolkit-0.1.2/Issues/Epics/open/EPIC-0010-agent-terminal-integration.md +68 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0019-/345/205/250/345/261/200/344/273/252/350/241/250/347/233/230.md +1 -1
- monoco_toolkit-0.1.2/Issues/Features/closed/FEAT-0056-toolkit-pty-service.md +73 -0
- monoco_toolkit-0.1.2/Issues/Features/closed/FEAT-0058-kanban-/345/210/206/345/217/221-npm.md +27 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0043-toolkit-/345/210/206/345/217/221/346/270/240/351/201/223/345/273/272/350/256/276.md +2 -2
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0052-kanban-/345/210/206/345/217/221-npm-npx.md +2 -2
- monoco_toolkit-0.1.2/Issues/Features/open/FEAT-0053-kanban-ui-/351/207/215/346/236/204/344/270/216/344/276/235/350/265/226/347/216/260/344/273/243/345/214/226.md +42 -0
- monoco_toolkit-0.1.2/Issues/Features/open/FEAT-0057-kanban-terminal-ui.md +73 -0
- monoco_toolkit-0.1.2/Issues/Fixes/closed/FIX-0005-/344/277/256/345/244/215CLI/350/277/220/350/241/214/346/227/266/347/274/272/345/244/261httpx/344/276/235/350/265/226.md +50 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/components.json +17 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/eslint.config.mjs +14 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/next-env.d.ts +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/next.config.js +5 -2
- monoco_toolkit-0.1.2/Kanban/apps/webui/package.json +50 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/public/logo.svg +10 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/ActivityDrawer.tsx +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/ActivityList.tsx +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/AppNavbar.tsx +3 -3
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/CreateIssueDialog.tsx +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/DaemonStatus.tsx +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/IssueDetailModal.tsx +2 -2
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/IssueList.tsx +1 -1
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/components/LayoutShell.tsx +150 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/components/MergedPageHeader.tsx +64 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/ProjectEndpointBadge.tsx +2 -2
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/ProjectTreeSelector.tsx +2 -7
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/StatsBoard.tsx +1 -1
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/components/StatusBar.tsx +155 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/contexts/LayoutContext.tsx +42 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/contexts/TermContext.tsx +56 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/contexts/TerminalContext.tsx +104 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/dashboard/page.tsx +49 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/globals.css +123 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/issues/page.tsx +300 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/layout.tsx +13 -5
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/overview/page.tsx +62 -73
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/providers.tsx +50 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/app/settings/page.tsx +150 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/components/terminal/TerminalPanel.tsx +170 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/components/terminal/XTermView.tsx +277 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/components/theme-provider.tsx +114 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/components/ui/avatar.tsx +50 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/components/ui/button.tsx +56 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/components/ui/popover.tsx +31 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/components/ui/tooltip.tsx +30 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/src/lib/utils.ts +6 -0
- monoco_toolkit-0.1.2/Kanban/apps/webui/tailwind.config.js +91 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/tsconfig.json +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/package-lock.json +2623 -464
- monoco_toolkit-0.1.2/Kanban/package.json +17 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/core/package.json +2 -2
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/core/src/daemon.ts +110 -27
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/core/src/dashboard.ts +3 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/core/src/index.ts +13 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/core/src/sse.ts +6 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/monoco-kanban/package.json +4 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/PKG-INFO +2 -2
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/README.md +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/README_ZH.md +1 -1
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/core/telemetry.py +4 -1
- monoco_toolkit-0.1.2/monoco/features/i18n/__init__.py +0 -0
- monoco_toolkit-0.1.2/monoco/features/pty/core.py +185 -0
- monoco_toolkit-0.1.2/monoco/features/pty/router.py +138 -0
- monoco_toolkit-0.1.2/monoco/features/pty/server.py +56 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/main.py +15 -0
- monoco_toolkit-0.1.2/package-lock.json +6 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/pyproject.toml +1 -1
- monoco_toolkit-0.1.2/uv.lock +922 -0
- monoco_toolkit-0.1.1/Kanban/apps/webui/package.json +0 -36
- monoco_toolkit-0.1.1/Kanban/apps/webui/public/favicon.ico +0 -0
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/components/LayoutShell.tsx +0 -137
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/components/StatusBar.tsx +0 -65
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/contexts/TermContext.tsx +0 -54
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/dashboard/page.tsx +0 -55
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/globals.css +0 -106
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/issues/page.tsx +0 -271
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/providers.tsx +0 -56
- monoco_toolkit-0.1.1/Kanban/apps/webui/src/app/settings/page.tsx +0 -57
- monoco_toolkit-0.1.1/Kanban/apps/webui/tailwind.config.js +0 -37
- monoco_toolkit-0.1.1/Kanban/package.json +0 -13
- monoco_toolkit-0.1.1/uv.lock +0 -922
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/.github/workflows/ci.yml +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/.github/workflows/docs.yml +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/.github/workflows/publish-pypi.yml +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/CODE_OF_CONDUCT.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/CONTRIBUTING.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Chores/closed/CHORE-0001-/346/233/264/346/226/260Issue/346/226/207/346/241/243/345/222/214I18n.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Chores/closed/CHORE-0002-/345/256/214/346/210/220I18n/346/226/207/346/241/243.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/closed/EPIC-0008-github-/345/217/221/345/270/203/345/207/206/345/244/207.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0001-Monoco/345/267/245/345/205/267/347/256/261.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0002-/346/231/272/350/203/275/344/273/273/345/212/241/345/206/205/346/240/270/344/270/216/347/212/266/346/200/201/346/234/272.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0003-/345/217/257/346/216/247/345/244/226/351/203/250/347/237/245/350/257/206/346/221/204/345/205/245.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0004-/345/212/250/346/200/201/346/226/207/346/241/243/345/233/275/351/231/205/345/214/226/344/275/223/347/263/273.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0005-Monoco/346/234/215/345/212/241/350/277/220/350/241/214/346/227/266.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0006-Monoco/347/234/213/346/235/277Web/345/272/224/347/224/250.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Epics/open/EPIC-0007-Toolkit/351/241/271/347/233/256/347/213/254/347/253/213.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0001-/351/207/215/346/236/204Issue/346/234/257/350/257/255.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0002-Toolkit/346/240/270/345/277/203.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0003-Issue/347/256/241/347/220/206.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0004-Spike/347/256/241/347/220/206.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0005-/345/256/236/347/216/260DocI18n.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0006-/346/224/257/346/214/201/345/261/202/347/272/247Issue/347/273/204/347/273/207.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0007-/346/224/257/346/214/201/345/244/226/351/203/250/346/210/226/345/255/220/351/241/271/347/233/256.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0008-/345/273/272/347/253/213Issue/346/226/207/346/241/243/344/275/223/347/263/273.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0009-/345/273/272/347/253/213Spike/346/226/207/346/241/243/344/275/223/347/263/273.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0010-/345/242/236/345/274/272Init.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0011-/345/242/236/345/274/272I18n/346/212/245/345/221/212.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0012-/345/244/232/345/267/245/344/275/234/345/214/272/346/224/257/346/214/201.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0013-/345/256/236/347/216/260List/345/221/275/344/273/244.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0014-/345/256/236/347/216/260IssueAPI.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0015-/347/234/213/346/235/277UI/345/242/236/345/274/272.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0016-/345/256/211/345/205/250Issue/347/274/226/350/276/221.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0020-/345/267/245/347/250/213/350/247/206/345/233/276.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0029-Web/347/234/213/346/235/277/345/256/236/347/216/260.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0030-/346/217/220/344/272/244/345/217/257/350/277/275/346/272/257/346/200/247.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0031-/351/200/222/345/275/222/347/212/266/346/200/201/350/201/232/345/220/210.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0032-/345/217/257/351/200/211/345/210/206/346/224/257/351/232/224/347/246/273.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0033-/344/272/244/344/272/222/345/274/217/347/212/266/346/200/201/346/265/201/350/275/254/344/270/216/345/220/210/346/263/225/346/200/247/346/240/241/351/252/214.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0034-ui/346/234/257/350/257/255/345/217/257/351/205/215/347/275/256/345/214/226.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0036-advanced-kanban-filter.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0037-cli-advanced-issue-query.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0038-workspace-/345/206/205/350/267/250/351/241/271/347/233/256/345/274/225/347/224/250/344/272/222/346/223/215/344/275/234/346/200/247.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0046-github-page-/347/273/264/346/212/244.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0047-community-health-files.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0048-toolkit-readme-polish.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0049-security-cleanup.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0050-one-click-install-script.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/closed/FEAT-0051-cli-/345/267/245/345/205/267/345/210/206/345/217/221-pypi.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0017-/350/264/250/351/207/217/346/216/247/345/210/266/346/243/200/346/237/245.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0018-/350/277/220/350/241/214/346/227/266/350/277/234/347/250/213/344/272/244/344/272/222.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0021-/346/236/266/346/236/204/347/273/204/344/273/266/350/247/206/345/233/276.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0022-/345/242/236/345/274/272/344/270/212/344/270/213/346/226/207/347/256/241/347/220/206.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0023-/351/253/230/347/272/247UX/346/211/223/347/243/250.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0025-/346/230/276/345/274/217Todo/346/265/213/350/257/225.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0026-/351/230/266/346/256/265/346/243/200/346/237/245.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0027-/351/273/230/350/256/244/351/230/266/346/256/265/346/265/213/350/257/225.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0028-/344/270/264/346/227/266/347/212/266/346/200/201/351/252/214/350/257/201/346/265/213/350/257/225.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0039-kanban-observability-support.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0040-toolkit-observability-hooks.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0044-universal-webview-/345/211/215/347/253/257/346/236/266/346/236/204.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Features/open/FEAT-0045-channel-observability.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Fixes/closed/FIX-0001-/344/277/256/345/244/215Issue/346/240/274/345/274/217/351/224/231/350/257/257.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Fixes/closed/FIX-0002-/345/274/272/345/210/266/344/270/245/346/240/274/347/224/237/345/221/275/345/221/250/346/234/237.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Fixes/closed/FIX-0003-/345/242/236/345/274/272MonocoIssueCreate/345/217/202/346/225/260.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Issues/Fixes/closed/FIX-0004-/344/277/256/345/244/215Issue/346/226/207/344/273/266/345/220/215/347/224/237/346/210/220/344/270/215/346/224/257/346/214/201/344/270/255/346/226/207/347/232/204/351/227/256/351/242/230.md" +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/README.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/README_ZH.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/postcss.config.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/_commonjsHelpers-CT9FvmAN.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/abap-D-t0cyap.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/apex-CcIm7xu6.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/assets/css.worker-HnVq6Ewq.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/assets/editor.worker-Be8ye1pW.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/assets/html.worker-B51mlPHg.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/assets/json.worker-DKiEKt88.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/assets/ts.worker-CMbG-7ft.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/azcli-BA0tQDCg.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/basic-languages/monaco.contribution.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/bat-C397hTD6.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/bicep-DF5aW17k.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/cameligo-plsz8qhj.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/clojure-Y2auQMzK.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/coffee-Bu45yuWE.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/cpp-CkKPQIni.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/csharp-CX28MZyh.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/csp-D8uWnyxW.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/css-CaeNmE3S.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/css.worker.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/cssMode-CjiAH6dQ.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/cypher-DVThT8BS.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/dart-CmGfCvrO.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/dockerfile-CZqqYdch.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/ecl-30fUercY.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/editor/editor.main.css +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/editor/editor.main.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/editor.api-CalNCsUg.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/editor.worker.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/elixir-xjPaIfzF.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/flow9-DqtmStfK.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/freemarker2-Cz_sV6Md.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/fsharp-BOMdg4U1.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/go-D_hbi-Jt.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/graphql-CKUU4kLG.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/handlebars-OwglfO-1.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/hcl-DTaboeZW.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/html-Pa1xEWsY.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/html.worker.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/htmlMode-Bz67EXwp.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/ini-CsNwO04R.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/java-CI4ZMsH9.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/javascript-PczUCGdz.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/json.worker.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/jsonMode-DULH5oaX.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/julia-BwzEvaQw.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/kotlin-IUYPiTV8.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/language/css/monaco.contribution.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/language/html/monaco.contribution.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/language/json/monaco.contribution.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/language/typescript/monaco.contribution.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/less-C0eDYdqa.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/lexon-iON-Kj97.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/liquid-DqKjdPGy.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/loader.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/lspLanguageFeatures-kM9O9rjY.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/lua-DtygF91M.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/m3-CsR4AuFi.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/markdown-C_rD0bIw.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/mdx-DEWtB1K5.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/mips-CiYP61RB.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/monaco.contribution-D2OdxNBt.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/monaco.contribution-DO3azKX8.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/monaco.contribution-EcChJV6a.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/monaco.contribution-qLAYrEOP.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/msdax-C38-sJlp.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/mysql-CdtbpvbG.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages-loader.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.cs.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.de.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.es.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.fr.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.it.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.ja.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.ko.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.pl.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.pt-br.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.ru.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.tr.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.zh-cn.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/nls.messages.zh-tw.js.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/objective-c-CntZFaHX.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/pascal-r6kuqfl_.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/pascaligo-BiXoTmXh.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/perl-DABw_TcH.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/pgsql-me_jFXeX.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/php-D_kh-9LK.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/pla-VfZjczW0.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/postiats-BBSzz8Pk.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/powerquery-Dt-g_2cc.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/powershell-B-7ap1zc.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/protobuf-BmtuEB1A.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/pug-BRpRNeEb.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/python-Cr0UkIbn.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/qsharp-BzsFaUU9.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/r-f8dDdrp4.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/razor-BYAHOTkz.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/redis-fvZQY4PI.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/redshift-45Et0LQi.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/restructuredtext-C7UUFKFD.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/ruby-CZO8zYTz.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/rust-Bfetafyc.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/sb-3GYllVck.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/scala-foMgrKo1.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/scheme-CHdMtr7p.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/scss-C1cmLt9V.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/shell-ClXCKCEW.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/solidity-MZ6ExpPy.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/sophia-DWkuSsPQ.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/sparql-AUGFYSyk.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/sql-32GpJSV2.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/st-CuDFIVZ_.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/swift-n-2HociN.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/systemverilog-Ch4vA8Yt.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/tcl-D74tq1nH.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/ts.worker.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/tsMode-CZz1Umrk.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/twig-C6taOxMV.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/typescript-DfOrAzoV.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/typespec-D-PIh9Xw.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/vb-Dyb2648j.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/wgsl-BhLXMOR0.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/workers-DcJshg-q.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/xml-CdsdnY8S.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/public/monaco-editor/min/vs/yaml-DYGvmE88.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/KanbanCard.tsx +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/KanbanColumn.tsx +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/page.tsx +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/page.tsx +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/types.ts +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/design/UI_OPTIMIZATION_PLAN.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/docs/zh/00-vision.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/docs/zh/01-architecture.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/docs/zh/02-identity.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/docs/zh/03-lifecycle.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/docs/zh/README.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/docs/zh/issue_lifecycle.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/core/src/types.ts +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/core/tsconfig.json +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/packages/monoco-kanban/bin/monoco-kanban.js +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/LICENSE +0 -0
- /monoco_toolkit-0.1.1/monoco/core/__init__.py → /monoco_toolkit-0.1.2/assets/logo.svg +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/debug_issue.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/agent-native-design-pattern.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/architecture.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/i18n/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/index.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/issue/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/release_audit.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/setup/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/en/spike/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/pypi-implementation-summary.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/pypi-trusted-publishing.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/agent-native-design-pattern.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/architecture.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/i18n/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/issue/concepts.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/issue/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/issue/query_syntax.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/setup/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/docs/zh/spike/manual.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/mkdocs.yml +0 -0
- {monoco_toolkit-0.1.1/monoco/daemon → monoco_toolkit-0.1.2/monoco/core}/__init__.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/core/config.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/core/git.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/core/output.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/core/setup.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/core/workspace.py +0 -0
- {monoco_toolkit-0.1.1/monoco/features → monoco_toolkit-0.1.2/monoco/daemon}/__init__.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/daemon/app.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/daemon/commands.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/daemon/models.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/daemon/reproduce_stats.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/daemon/services.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/daemon/stats.py +0 -0
- {monoco_toolkit-0.1.1/monoco/features/i18n → monoco_toolkit-0.1.2/monoco/features}/__init__.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/config/commands.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/i18n/commands.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/i18n/core.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/issue/commands.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/issue/core.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/issue/linter.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/issue/models.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/skills/__init__.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/skills/core.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/spike/commands.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco/features/spike/core.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/monoco.yaml +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/scripts/install.sh +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/scripts/migrate_issues.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/git-repo-spike/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/git-repo-spike/zh/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/i18n/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/i18n/zh/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/issues-management/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/issues-management/zh/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/toolkit-core/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/skills/toolkit-core/zh/SKILL.md +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/tests/conftest.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/tests/daemon/test_issue_api.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/tests/daemon/test_stats_api.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/tests/features/issue/test_lifecycle_guard.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/tests/features/issue/test_search.py +0 -0
- {monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/tests/features/issue/test_workflow_cli.py +0 -0
|
@@ -20,25 +20,25 @@ jobs:
|
|
|
20
20
|
|
|
21
21
|
- name: Install dependencies
|
|
22
22
|
run: |
|
|
23
|
-
cd
|
|
23
|
+
cd Kanban
|
|
24
24
|
npm install
|
|
25
25
|
|
|
26
|
-
- name: Build
|
|
26
|
+
- name: Build All Workspaces
|
|
27
27
|
run: |
|
|
28
|
-
cd
|
|
29
|
-
npm run build --
|
|
28
|
+
cd Kanban
|
|
29
|
+
npm run build --workspaces
|
|
30
30
|
|
|
31
31
|
- name: Prepare Package
|
|
32
32
|
run: |
|
|
33
|
-
mkdir -p
|
|
34
|
-
cp -r
|
|
33
|
+
mkdir -p Kanban/packages/monoco-kanban/dist
|
|
34
|
+
cp -r Kanban/apps/webui/out/* Kanban/packages/monoco-kanban/dist/
|
|
35
35
|
# Sync version from tag
|
|
36
36
|
VERSION=${GITHUB_REF#refs/tags/v}
|
|
37
|
-
sed -i "s/\"version\": \"0.1.0\"/\"version\": \"$VERSION\"/g"
|
|
37
|
+
sed -i "s/\"version\": \"0.1.0\"/\"version\": \"$VERSION\"/g" Kanban/packages/monoco-kanban/package.json
|
|
38
38
|
|
|
39
39
|
- name: Publish to NPM
|
|
40
40
|
run: |
|
|
41
|
-
cd
|
|
41
|
+
cd Kanban/packages/monoco-kanban
|
|
42
42
|
npm publish --access public
|
|
43
43
|
env:
|
|
44
44
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -11,7 +11,7 @@ updated_at: '2026-01-13T13:21:48'
|
|
|
11
11
|
dependencies: []
|
|
12
12
|
related: []
|
|
13
13
|
tags: []
|
|
14
|
-
progress:
|
|
14
|
+
progress: 2/2
|
|
15
15
|
files_count: 0
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -32,6 +32,6 @@ files_count: 0
|
|
|
32
32
|
|
|
33
33
|
- [ ] 配置 GitHub Pages 自动部署流程 (Next.js SSG)。
|
|
34
34
|
- [x] 构建 Toolkit 的 GitHub Action 发布流水线 (FEAT-0051)。
|
|
35
|
-
- [
|
|
35
|
+
- [x] 构建 Kanban 的 GitHub Action 发布流水线 (FEAT-0058)。
|
|
36
36
|
- [ ] 集成代码质量检查 (Lint, Type Check, Pytest) 到 CI。
|
|
37
37
|
- [ ] 优化缓存策略,减少 CI 运行时间。
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: EPIC-0010
|
|
3
|
+
type: Epic
|
|
4
|
+
title: Agent Terminal Integration (PTY & Console)
|
|
5
|
+
status: Open
|
|
6
|
+
owner: Product Owner
|
|
7
|
+
parent: null
|
|
8
|
+
dependencies:
|
|
9
|
+
- EPIC-0005
|
|
10
|
+
- EPIC-0006
|
|
11
|
+
tags:
|
|
12
|
+
- agent-native
|
|
13
|
+
- terminal
|
|
14
|
+
- cli
|
|
15
|
+
- websocket
|
|
16
|
+
created_at: 2026-01-14
|
|
17
|
+
progress: 1/2
|
|
18
|
+
files_count: 0
|
|
19
|
+
stage: doing
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Agent Terminal Integration (PTY & Console)
|
|
23
|
+
|
|
24
|
+
## Executive Summary
|
|
25
|
+
|
|
26
|
+
为了实现 Monoco "Agent Cockpit" 的愿景,我们需要在 Kanban 界面中引入原生的终端控制台 (Terminal Console)。这将允许用户直接在一个界面中进行 "战略指挥" (Kanban) 和 "战术执行" (CLI Agents)。
|
|
27
|
+
|
|
28
|
+
通过引入 PTY (Pseudo-Terminal) 和 WebSocket 支持,用户将能够直接在 Web 界面中运行 `gemini`、`claude` 或 `git` 命令,并享受完整的终端交互体验。
|
|
29
|
+
|
|
30
|
+
## Outcome & Value
|
|
31
|
+
|
|
32
|
+
- **God Mode + God Hand**: 用户在查看全局进度的同时,拥有直接操作底层的能力。
|
|
33
|
+
- **Agent Native Interaction**: 不再依赖受限的 Chatbot UI,而是拥抱功能最全、生态最丰富的 CLI Agents。
|
|
34
|
+
- **Context Awareness**: 终端 session 将能够感知 Kanban 当前的上下文(如选中的 Issue),实现无缝的人机协作。
|
|
35
|
+
|
|
36
|
+
## Key Results (KRs)
|
|
37
|
+
|
|
38
|
+
- **KR1**: Toolkit Daemon 实现支持多会话 (Multi-Session) 的 PTY 管理器 (`monoco.daemon.terminal`)。
|
|
39
|
+
- **KR2**: Kanban UI 实现带有 Tab 页签切换功能的原生终端面板。
|
|
40
|
+
- **KR3**: 实现 "Context Injection" 与 "Auto-Startup",支持自动运行预设命令 (e.g. `claude`, `gemini`) 并注入上下文,减少冷启动等待。
|
|
41
|
+
- **KR4**: 验证主流 CLI Agent 在 Web 终端中的交互流畅性。
|
|
42
|
+
|
|
43
|
+
## Scope
|
|
44
|
+
|
|
45
|
+
### Infrastructure (Toolkit)
|
|
46
|
+
|
|
47
|
+
- **WebSocket & PTY Manager**: 引入 `fastapi-websockets`,实现基于 Session ID 的多路复用 PTY 管理。
|
|
48
|
+
- **Auto-Startup Configuration**:
|
|
49
|
+
- 支持配置 "Default Command" (如 `claude` 或 `monoco agent`),在 Session 建立时自动执行。
|
|
50
|
+
- 实现 "Pre-warming" 机制,让 Agent 进程提前就绪,通过 PTY 保持活跃,避免每次交互都重新握手/加载模型。
|
|
51
|
+
- **Security**: Localhost restrictive access.
|
|
52
|
+
|
|
53
|
+
### User Interface (Kanban)
|
|
54
|
+
|
|
55
|
+
- **Terminal Emulator**: `xterm.js` + `xterm-addon-fit` 集成.
|
|
56
|
+
- **Multi-Tab Interface**:
|
|
57
|
+
- 支持并发管理多个 Terminal Session。
|
|
58
|
+
- 区分 "Global Shell" (主控台) 和 "Task Shell" (任务专用)。
|
|
59
|
+
- Tab 状态指示器 (Idle/Running/Error)。
|
|
60
|
+
- **Interaction**:
|
|
61
|
+
- 底部状态栏 Toggle (HUD 风格)。
|
|
62
|
+
- 全局快捷键 (`Cmd+J`) 唤出并聚焦。
|
|
63
|
+
- Theme 自动同步 (Glassmorphism 背景)。
|
|
64
|
+
|
|
65
|
+
### Experience
|
|
66
|
+
|
|
67
|
+
- **Context Awareness**: 点击 Issue 上的 "Run" 时,自动创建新 Tab 并注入环境变量 (`export CURRENT_ISSUE=...`)。
|
|
68
|
+
- **Seamless Auth**: 确保 CLI Agent 的认证状态(如 OAuth Token)能持久化并在 PTY 中复用,避免重复登录。
|
|
@@ -44,7 +44,7 @@ tags: []
|
|
|
44
44
|
- **实现方案**: 新增 `GET /api/v1/stats/dashboard`。
|
|
45
45
|
- **Blocked 定义**: 暂定为 "存在未 Close 的前置依赖 (dependencies)" 的 Issue。
|
|
46
46
|
- [x] **前端状态管理**: 重构前端状态管理 (Zustand)。
|
|
47
|
-
- **Store 设计**: 在 `@monoco/kanban-core` 中扩展或新增 Store,统一管理 Project Stats 与 Issues。
|
|
47
|
+
- **Store 设计**: 在 `@monoco-io/kanban-core` 中扩展或新增 Store,统一管理 Project Stats 与 Issues。
|
|
48
48
|
- `useDashboardStore`: 管理聚合指标 (Stats) 和动态 (Activity)。
|
|
49
49
|
- `useKanbanStore`: 继续管理 Issue 列表数据。
|
|
50
50
|
- **数据同步**: 升级 `useKanbanSync` Hook。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: FEAT-0056
|
|
3
|
+
type: feature
|
|
4
|
+
status: closed
|
|
5
|
+
stage: done
|
|
6
|
+
title: Implement monoco-pty Service via WebSockets
|
|
7
|
+
created_at: '2026-01-14T00:00:00'
|
|
8
|
+
updated_at: '2026-01-14T08:24:53'
|
|
9
|
+
closed_at: '2026-01-14T08:24:53'
|
|
10
|
+
parent: EPIC-0010
|
|
11
|
+
solution: implemented
|
|
12
|
+
dependencies: []
|
|
13
|
+
related: []
|
|
14
|
+
tags:
|
|
15
|
+
- pty
|
|
16
|
+
- websocket
|
|
17
|
+
- cli
|
|
18
|
+
- daemon
|
|
19
|
+
owner: Backend Engineer
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Feature: Implement monoco-pty Service
|
|
23
|
+
|
|
24
|
+
## Context
|
|
25
|
+
|
|
26
|
+
为了支持 EPIC-0010 "Agent Terminal Integration",我们需要一个专门负责终端会话管理的服务。
|
|
27
|
+
根据架构决策,该服务将独立于 `monoco serve` 运行,通过独立的命令 `monoco pty` 启动,以保证系统的解耦与稳定性。
|
|
28
|
+
|
|
29
|
+
## Goals
|
|
30
|
+
|
|
31
|
+
1. 实现 `monoco.features.pty` 模块与 `monoco pty` CLI 命令。
|
|
32
|
+
2. 提供基于 WebSocket 的 PTY 流式接口。
|
|
33
|
+
3. 支持多 Session 管理与自动环境注入。
|
|
34
|
+
|
|
35
|
+
## Technical Design
|
|
36
|
+
|
|
37
|
+
### 1. Service Architecture
|
|
38
|
+
|
|
39
|
+
- **Entry Point**: `monoco pty` (Uvicorn running FastAPI/Starlette).
|
|
40
|
+
- **Port**: Default to `3124` (Distinct from main daemon).
|
|
41
|
+
- **State Sharing**: 启动时读取 `.monoco/state.json` (或通过参数) 确定 Workspace Root。
|
|
42
|
+
|
|
43
|
+
### 2. WebSocket Protocol
|
|
44
|
+
|
|
45
|
+
- **Endpoint**: `ws://localhost:3124/ws/{session_id}`
|
|
46
|
+
- **Handshake Params**:
|
|
47
|
+
- `cols`, `rows`: Terminal dimensions.
|
|
48
|
+
- `env`: JSON string identifying context (e.g., `{"CURRENT_ISSUE": "FEAT-123"}`).
|
|
49
|
+
- `command`: (Optional) Auto-run command (e.g., `claude`).
|
|
50
|
+
|
|
51
|
+
### 3. PTY Manager Logic
|
|
52
|
+
|
|
53
|
+
- 使用 Python `pty` (Unix) 或 `pywinpty` (Windows) 库。
|
|
54
|
+
- **Session Lifecycle**:
|
|
55
|
+
- Connection Open -> Spawn Process.
|
|
56
|
+
- Process Exit -> Close Connection.
|
|
57
|
+
- Connection Drop -> Kill Process (or configurable keep-alive).
|
|
58
|
+
|
|
59
|
+
## Tasks
|
|
60
|
+
|
|
61
|
+
- [ ] **Core**: 创建 `monoco/features/pty/` 目录结构。
|
|
62
|
+
- [ ] **Server**: 实现 `monoco pty` CLI 命令与 FastAPI App 初始化。
|
|
63
|
+
- [ ] **Logic**: 实现 `PTYManager` 类,负责 spawn shell 和 IO forwarding。
|
|
64
|
+
- [ ] **API**: 实现 WebSocket 路由与双向数据管道 (Input -> Stdin, Stdout -> Output)。
|
|
65
|
+
- [ ] **Context**: 实现环境变量注入逻辑 (`env` param -> `subprocess.Popen(env=...)`)。
|
|
66
|
+
- [ ] **Test**: 编写简单的 HTML/JS Client 验证连通性。
|
|
67
|
+
|
|
68
|
+
## Acceptance Criteria
|
|
69
|
+
|
|
70
|
+
- [ ] 运行 `monoco pty` 后,可以通过 WebSocket 客户端连接并获得交互式 Shell。
|
|
71
|
+
- [ ] 支持同时打开多个独立的 Shell Session。
|
|
72
|
+
- [ ] 传递 `env={"TEST": "1"}` 时,在该 Shell 中执行 `echo $TEST` 输出 `1`。
|
|
73
|
+
- [ ] 进程崩溃或退出时,WebSocket 连接正常关闭。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: FEAT-0058
|
|
3
|
+
uid: 679ef5
|
|
4
|
+
type: feature
|
|
5
|
+
status: closed
|
|
6
|
+
stage: done
|
|
7
|
+
title: Kanban 分发 - npm
|
|
8
|
+
created_at: '2026-01-14T11:34:18'
|
|
9
|
+
opened_at: '2026-01-14T11:34:18'
|
|
10
|
+
updated_at: '2026-01-14T11:35:25'
|
|
11
|
+
closed_at: '2026-01-14T11:35:25'
|
|
12
|
+
parent: EPIC-0009
|
|
13
|
+
solution: implemented
|
|
14
|
+
dependencies: []
|
|
15
|
+
related: []
|
|
16
|
+
tags: []
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## FEAT-0058: Kanban 分发 - npm
|
|
20
|
+
|
|
21
|
+
## Objective
|
|
22
|
+
|
|
23
|
+
## Acceptance Criteria
|
|
24
|
+
|
|
25
|
+
## Technical Tasks
|
|
26
|
+
|
|
27
|
+
- [ ]
|
|
@@ -29,8 +29,8 @@ tags: []
|
|
|
29
29
|
- [ ] `monoco serve` 成功启动并对外暴露开发者 API。
|
|
30
30
|
- [ ] **Tier 2 (Package Managers)**:
|
|
31
31
|
- [ ] Homebrew Formula 验证通过。
|
|
32
|
-
- [ ] NPM Shim (`npm i -g @monoco/kanban`) 发布。
|
|
33
|
-
- [ ] 用户可以通过 `npx @monoco/kanban` 快速打开本地 Kanban 界面。
|
|
32
|
+
- [ ] NPM Shim (`npm i -g @monoco-io/kanban`) 发布。
|
|
33
|
+
- [ ] 用户可以通过 `npx @monoco-io/kanban` 快速打开本地 Kanban 界面。
|
|
34
34
|
- [ ] **Tier 3 (Consumer Native)**:
|
|
35
35
|
- [ ] MacOS App (.dmg) 打包验证 (PyInstaller)。
|
|
36
36
|
- [ ] Windows App (.exe) 打包验证 (PyInstaller)。
|
|
@@ -16,11 +16,11 @@ tags: []
|
|
|
16
16
|
|
|
17
17
|
## Objective
|
|
18
18
|
|
|
19
|
-
建立 Monoco Kanban 的 NPM 自动发布流水线,使用户能够通过 `npx @monoco/kanban` 或 `npm install -g @monoco/kanban` 一键启动看板界面。该工具应能自动发现并连接本地运行的 Monoco Toolkit 后端。
|
|
19
|
+
建立 Monoco Kanban 的 NPM 自动发布流水线,使用户能够通过 `npx @monoco-io/kanban` 或 `npm install -g @monoco-io/kanban` 一键启动看板界面。该工具应能自动发现并连接本地运行的 Monoco Toolkit 后端。
|
|
20
20
|
|
|
21
21
|
## Acceptance Criteria
|
|
22
22
|
|
|
23
|
-
- [ ] **npx 启动**:运行 `npx @monoco/kanban` 能够启动一个轻量级 Web 服务并自动打开浏览器。
|
|
23
|
+
- [ ] **npx 启动**:运行 `npx @monoco-io/kanban` 能够启动一个轻量级 Web 服务并自动打开浏览器。
|
|
24
24
|
- [ ] **静态分发**:NPM 包应包含 `webui` 的预构建静态资源,无需用户本地进行 `next build`。
|
|
25
25
|
- [ ] **后端发现**:能够默认连接到 `http://localhost:3213` (Monoco 默认端口),并支持通过参数修改。
|
|
26
26
|
- [ ] **自动化发布**:Git Tag (`v*`) 触发自动发布至 NPM Registry。
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: FEAT-0053
|
|
3
|
+
uid: e1a2b3
|
|
4
|
+
type: feature
|
|
5
|
+
status: in_progress
|
|
6
|
+
stage: todo
|
|
7
|
+
title: Kanban UI 重构与依赖现代化
|
|
8
|
+
created_at: "2026-01-13T16:33:00"
|
|
9
|
+
opened_at: "2026-01-13T16:33:00"
|
|
10
|
+
updated_at: "2026-01-13T16:33:00"
|
|
11
|
+
parent: EPIC-0003
|
|
12
|
+
dependencies: []
|
|
13
|
+
related: []
|
|
14
|
+
tags:
|
|
15
|
+
- tech-debt
|
|
16
|
+
- ui
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## FEAT-0053: Kanban UI 重构与依赖现代化
|
|
20
|
+
|
|
21
|
+
## Objective
|
|
22
|
+
|
|
23
|
+
重写 Kanban WebUI 以彻底解决 React 19、Next.js 16+ 与旧版组件库(Blueprint.js)之间的依赖冲突问题,并提升 UI 现代化程度。目前的临时方案(依赖锁定降级)不可持续,阻碍了技术栈的升级。
|
|
24
|
+
|
|
25
|
+
## Acceptance Criteria
|
|
26
|
+
|
|
27
|
+
- [ ] **现代化组件库**:迁移至 Shadcn/UI 或 Mantine 等现代 React 组件库,全面支持 React 19。
|
|
28
|
+
- [ ] **技术栈升级**:
|
|
29
|
+
- Next.js: 升级至 `16.1.1` 或更新。
|
|
30
|
+
- React: 升级至 `19.2.x` (最新稳定版)。
|
|
31
|
+
- Node.js: 升级至 `v24` (Current/LTS Candidate)。
|
|
32
|
+
- [ ] **React 19 支持**:确保所有依赖与 React 19 兼容,无 Peer Dependency 警告。
|
|
33
|
+
- [ ] **ESLint 9 兼容**:升级构建和 lint 工具链至最新标准。
|
|
34
|
+
- [ ] **功能对齐**:确保现有的看板、列表、详情页等功能在重构后完整保留。
|
|
35
|
+
|
|
36
|
+
## Technical Tasks
|
|
37
|
+
|
|
38
|
+
- [x] 评估并选型新的 UI 组件库(推荐 Shadcn/UI)。
|
|
39
|
+
- [x] 初始化新的 UI 框架配置。
|
|
40
|
+
- [ ] 逐步迁移 `apps/webui` 中的组件。
|
|
41
|
+
- [x] 移除 `Toolkit/Kanban/package.json` 中的 `overrides` 配置。
|
|
42
|
+
- [ ] 验证全链路构建通过。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: FEAT-0057
|
|
3
|
+
type: feature
|
|
4
|
+
status: open
|
|
5
|
+
stage: todo
|
|
6
|
+
title: Kanban Terminal Integration (xterm.js)
|
|
7
|
+
created_at: '2026-01-14T00:00:00'
|
|
8
|
+
updated_at: '2026-01-14T11:47:28'
|
|
9
|
+
parent: EPIC-0010
|
|
10
|
+
dependencies:
|
|
11
|
+
- FEAT-0056
|
|
12
|
+
related: []
|
|
13
|
+
tags:
|
|
14
|
+
- kanban
|
|
15
|
+
- ui
|
|
16
|
+
- pty
|
|
17
|
+
- xterm
|
|
18
|
+
owner: Frontend Engineer
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Feature: Kanban Terminal Integration
|
|
22
|
+
|
|
23
|
+
## Context
|
|
24
|
+
|
|
25
|
+
Backend PTY Service (`monoco pty`) has been implemented via FEAT-0056.
|
|
26
|
+
Now we need to integrate the Terminal interface into the Kanban Web UI to achieve the "Cockpit" experience.
|
|
27
|
+
|
|
28
|
+
## Goals
|
|
29
|
+
|
|
30
|
+
1. Integrate `xterm.js` into the Next.js application.
|
|
31
|
+
2. Implement a collapsable Bottom Panel for the terminal.
|
|
32
|
+
3. Connect to `ws://localhost:3124` to stream PTY data.
|
|
33
|
+
|
|
34
|
+
## Technical Design
|
|
35
|
+
|
|
36
|
+
### 1. Dependencies
|
|
37
|
+
|
|
38
|
+
- `xterm`: Core terminal emulator.
|
|
39
|
+
- `xterm-addon-fit`: Auto-resize support.
|
|
40
|
+
- `xterm-addon-web-links`: Clickable links.
|
|
41
|
+
|
|
42
|
+
### 2. Components
|
|
43
|
+
|
|
44
|
+
- **`TerminalPanel`**:
|
|
45
|
+
- Position: Fixed at bottom (`z-50`).
|
|
46
|
+
- Layout: Header (Tabs + Actions) + Body (Xterm Container).
|
|
47
|
+
- State: `isOpen`, `activeSessionId`.
|
|
48
|
+
|
|
49
|
+
### 3. State Management
|
|
50
|
+
|
|
51
|
+
- Use `React Context` (`TerminalContext`) to manage the WebSocket connection and global visibility.
|
|
52
|
+
- **Shortcuts**: Listen for `Cmd+J` locally to toggle visibility.
|
|
53
|
+
|
|
54
|
+
### 4. Connection Logic
|
|
55
|
+
|
|
56
|
+
- Connect to `ws://localhost:3124/ws/{session_id}`.
|
|
57
|
+
- Handshake: Send initial resize event on connect.
|
|
58
|
+
- Reconnect: Implement simple backoff retry strategy.
|
|
59
|
+
|
|
60
|
+
## Tasks
|
|
61
|
+
|
|
62
|
+
- [x] **Setup**: Install `xterm`, `xterm-addon-fit`.
|
|
63
|
+
- [x] **Component**: Create `src/components/terminal/XTermView.tsx`.
|
|
64
|
+
- [x] **Layout**: Create global `TerminalPanel` in `providers.tsx` or layout root.
|
|
65
|
+
- [x] **Logic**: Implement WebSocket hook to pipe data to/from xterm instance.
|
|
66
|
+
- [x] **Style**: Apply Monoco theme (colors, fonts) to xterm.
|
|
67
|
+
|
|
68
|
+
## Acceptance Criteria
|
|
69
|
+
|
|
70
|
+
- [x] Kanban 底部出现 Terminal 条。
|
|
71
|
+
- [x] 点击或按快捷键可展开/折叠面板。
|
|
72
|
+
- [x] 终端能成功连接后端,显示 prompt,并能执行 `ls` 命令。
|
|
73
|
+
- [x] 调整浏览器窗口大小时,终端内容自适应重排 (resize)。
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: FIX-0005
|
|
3
|
+
uid: fix-005-httpx
|
|
4
|
+
type: fix
|
|
5
|
+
status: closed
|
|
6
|
+
stage: implemented
|
|
7
|
+
title: 修复 CLI 运行时缺失 httpx 依赖
|
|
8
|
+
created_at: "2026-01-13T16:35:15"
|
|
9
|
+
opened_at: "2026-01-13T16:35:15"
|
|
10
|
+
updated_at: "2026-01-13T16:41:12"
|
|
11
|
+
closed_at: "2026-01-13T16:41:12"
|
|
12
|
+
parent:
|
|
13
|
+
dependencies: []
|
|
14
|
+
related: []
|
|
15
|
+
tags:
|
|
16
|
+
- cli
|
|
17
|
+
- dependency
|
|
18
|
+
- bug
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## FIX-0005: 修复 CLI 运行时缺失 httpx 依赖
|
|
22
|
+
|
|
23
|
+
## Problem
|
|
24
|
+
|
|
25
|
+
用户在运行 `monoco` CLI 命令时遭遇报错,提示缺少 `httpx` 模块。
|
|
26
|
+
这导致无法使用 CLI 进行 Issue 管理等操作。
|
|
27
|
+
|
|
28
|
+
## Root Cause
|
|
29
|
+
|
|
30
|
+
`httpx` 库在 `monoco` 核心逻辑(如 Telemetry)中被引用,但可能未在环境中正确安装,或在 `pyproject.toml` 中的依赖声明未被正确解析/同步到当前环境。
|
|
31
|
+
|
|
32
|
+
## Solution
|
|
33
|
+
|
|
34
|
+
1. **Lazy Import**: 将 `monoco/core/telemetry.py` 中的 `import httpx` 改为在该方法调用时懒加载。
|
|
35
|
+
2. **Optional Dependency**: 捕获 `ImportError`,如果环境中没有 `httpx`,则自动静默跳过遥测上报,不阻塞 CLI 核心功能。
|
|
36
|
+
|
|
37
|
+
已通过修改 `monoco/core/telemetry.py` 实现上述修复。
|
|
38
|
+
|
|
39
|
+
## Implementation Details
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
# monoco/core/telemetry.py
|
|
43
|
+
|
|
44
|
+
def capture(self, ...):
|
|
45
|
+
try:
|
|
46
|
+
import httpx
|
|
47
|
+
httpx.post(...)
|
|
48
|
+
except ImportError:
|
|
49
|
+
pass # Telemetry is optional
|
|
50
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
+
"style": "default",
|
|
4
|
+
"rsc": true,
|
|
5
|
+
"tsx": true,
|
|
6
|
+
"tailwind": {
|
|
7
|
+
"config": "tailwind.config.js",
|
|
8
|
+
"css": "src/app/globals.css",
|
|
9
|
+
"baseColor": "slate",
|
|
10
|
+
"cssVariables": true,
|
|
11
|
+
"prefix": ""
|
|
12
|
+
},
|
|
13
|
+
"aliases": {
|
|
14
|
+
"components": "@/components",
|
|
15
|
+
"utils": "@/lib/utils"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { dirname } from "path";
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
4
|
+
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
7
|
+
|
|
8
|
+
const compat = new FlatCompat({
|
|
9
|
+
baseDirectory: __dirname,
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const eslintConfig = [...compat.extends("next/core-web-vitals")];
|
|
13
|
+
|
|
14
|
+
export default eslintConfig;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="next" />
|
|
2
2
|
/// <reference types="next/image-types/global" />
|
|
3
|
-
import "./.next/
|
|
3
|
+
import "./.next/types/routes.d.ts";
|
|
4
4
|
|
|
5
5
|
// NOTE: This file should not be edited
|
|
6
6
|
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
|
@@ -3,11 +3,14 @@ const path = require("path");
|
|
|
3
3
|
/** @type {import('next').NextConfig} */
|
|
4
4
|
const nextConfig = {
|
|
5
5
|
output: "export",
|
|
6
|
-
transpilePackages: ["@monoco/kanban-core"],
|
|
7
|
-
outputFileTracingRoot: path.join(__dirname, "../../../"),
|
|
6
|
+
transpilePackages: ["@monoco-io/kanban-core"],
|
|
8
7
|
experimental: {
|
|
9
8
|
externalDir: true,
|
|
10
9
|
},
|
|
10
|
+
devIndicators: {
|
|
11
|
+
appIsrStatus: false,
|
|
12
|
+
buildActivity: false,
|
|
13
|
+
},
|
|
11
14
|
};
|
|
12
15
|
|
|
13
16
|
module.exports = nextConfig;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@monoco-io/kanban-webui",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "next dev -p 3123",
|
|
7
|
+
"build": "next build",
|
|
8
|
+
"start": "serve out -p 3123",
|
|
9
|
+
"lint": "next lint"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@blueprintjs/core": "^6.0.0",
|
|
13
|
+
"@blueprintjs/icons": "^6.0.0",
|
|
14
|
+
"@monaco-editor/react": "^4.6.0",
|
|
15
|
+
"@monoco-io/kanban-core": "*",
|
|
16
|
+
"@radix-ui/react-avatar": "^1.1.0",
|
|
17
|
+
"@radix-ui/react-dialog": "^1.1.0",
|
|
18
|
+
"@radix-ui/react-popover": "^1.1.0",
|
|
19
|
+
"@radix-ui/react-slot": "^1.1.0",
|
|
20
|
+
"@radix-ui/react-tooltip": "^1.1.0",
|
|
21
|
+
"@tailwindcss/typography": "^0.5.19",
|
|
22
|
+
"class-variance-authority": "^0.7.0",
|
|
23
|
+
"clsx": "^2.1.0",
|
|
24
|
+
"lucide-react": "^0.460.0",
|
|
25
|
+
"monaco-editor": "^0.55.1",
|
|
26
|
+
"next": "16.1.1",
|
|
27
|
+
"normalize.css": "^8.0.1",
|
|
28
|
+
"react": "^19.0.0",
|
|
29
|
+
"react-dom": "^19.0.0",
|
|
30
|
+
"react-markdown": "^10.0.1",
|
|
31
|
+
"serve": "^14.2.5",
|
|
32
|
+
"tailwind-merge": "^2.2.0",
|
|
33
|
+
"tailwindcss-animate": "^1.0.7",
|
|
34
|
+
"@xterm/xterm": "^5.5.0",
|
|
35
|
+
"@xterm/addon-fit": "^0.10.0",
|
|
36
|
+
"@xterm/addon-web-links": "^0.11.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@tailwindcss/typography": "^0.5.10",
|
|
40
|
+
"@types/node": "^22.0.0",
|
|
41
|
+
"@types/react": "^19.0.0",
|
|
42
|
+
"@types/react-dom": "^19.0.0",
|
|
43
|
+
"autoprefixer": "^10.4.23",
|
|
44
|
+
"eslint": "^9.0.0",
|
|
45
|
+
"eslint-config-next": "16.1.1",
|
|
46
|
+
"postcss": "^8",
|
|
47
|
+
"tailwindcss": "^3.4.1",
|
|
48
|
+
"typescript": "latest"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="40" height="40" rx="12" fill="url(#grad1)" />
|
|
3
|
+
<text x="20" y="21" dominant-baseline="middle" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-weight="bold" font-size="20" fill="white">M</text>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="grad1" x1="0" y1="0" x2="40" y2="40" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop stop-color="#3b82f6" />
|
|
7
|
+
<stop offset="1" stop-color="#4f46e5" />
|
|
8
|
+
</linearGradient>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { Drawer, Position, Classes, Icon, Intent, Spinner, Card, Elevation } from "@blueprintjs/core";
|
|
5
|
-
import { useDashboardStore, ActivityItem, ActivityType } from "@monoco/kanban-core";
|
|
5
|
+
import { useDashboardStore, ActivityItem, ActivityType } from "@monoco-io/kanban-core";
|
|
6
6
|
|
|
7
7
|
interface ActivityDrawerProps {
|
|
8
8
|
isOpen: boolean;
|
{monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/ActivityList.tsx
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Card, Elevation, Icon, Intent, Spinner } from "@blueprintjs/core";
|
|
3
|
-
import { useDashboardStore, ActivityType } from "@monoco/kanban-core";
|
|
3
|
+
import { useDashboardStore, ActivityType } from "@monoco-io/kanban-core";
|
|
4
4
|
|
|
5
5
|
// Helper to format date
|
|
6
6
|
const formatDate = (dateStr: string) => {
|
{monoco_toolkit-0.1.1 → monoco_toolkit-0.1.2}/Kanban/apps/webui/src/app/components/AppNavbar.tsx
RENAMED
|
@@ -12,12 +12,12 @@ import DaemonStatus from "./DaemonStatus";
|
|
|
12
12
|
|
|
13
13
|
export default function AppNavbar() {
|
|
14
14
|
return (
|
|
15
|
-
<Navbar className="
|
|
15
|
+
<Navbar className="bp6-dark">
|
|
16
16
|
<NavbarGroup align={Alignment.LEFT}>
|
|
17
17
|
<NavbarHeading>Monoco Kanban</NavbarHeading>
|
|
18
18
|
<NavbarDivider />
|
|
19
|
-
<Button
|
|
20
|
-
<Button
|
|
19
|
+
<Button variant="minimal" icon="home" text="Home" />
|
|
20
|
+
<Button variant="minimal" icon="document" text="Files" />
|
|
21
21
|
</NavbarGroup>
|
|
22
22
|
<NavbarGroup align={Alignment.RIGHT}>
|
|
23
23
|
<DaemonStatus />
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "@blueprintjs/core";
|
|
12
12
|
import Editor from "@monaco-editor/react";
|
|
13
13
|
import { Issue } from "../types";
|
|
14
|
-
import { useDaemonStore } from "@monoco/kanban-core";
|
|
14
|
+
import { useDaemonStore } from "@monoco-io/kanban-core";
|
|
15
15
|
import { useTerms } from "../contexts/TermContext";
|
|
16
16
|
|
|
17
17
|
interface IssueDetailModalProps {
|
|
@@ -162,7 +162,7 @@ export default function IssueDetailModal({
|
|
|
162
162
|
"Loading..."
|
|
163
163
|
)
|
|
164
164
|
}
|
|
165
|
-
className="
|
|
165
|
+
className="bp6-dark w-[90vw] h-[90vh] flex flex-col p-0"
|
|
166
166
|
style={{ width: "1200px", maxWidth: "95vw", height: "85vh" }}>
|
|
167
167
|
<div
|
|
168
168
|
className={
|