monoco-toolkit 0.3.6__py3-none-any.whl → 0.3.10__py3-none-any.whl

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.
Files changed (113) hide show
  1. monoco/cli/workspace.py +1 -1
  2. monoco/core/config.py +58 -0
  3. monoco/core/hooks/__init__.py +19 -0
  4. monoco/core/hooks/base.py +104 -0
  5. monoco/core/hooks/builtin/__init__.py +11 -0
  6. monoco/core/hooks/builtin/git_cleanup.py +266 -0
  7. monoco/core/hooks/builtin/logging_hook.py +78 -0
  8. monoco/core/hooks/context.py +131 -0
  9. monoco/core/hooks/registry.py +222 -0
  10. monoco/core/injection.py +63 -29
  11. monoco/core/integrations.py +8 -2
  12. monoco/core/output.py +5 -5
  13. monoco/core/registry.py +9 -1
  14. monoco/core/resource/__init__.py +5 -0
  15. monoco/core/resource/finder.py +98 -0
  16. monoco/core/resource/manager.py +91 -0
  17. monoco/core/resource/models.py +35 -0
  18. monoco/core/resources/en/{SKILL.md → skills/monoco_core/SKILL.md} +2 -0
  19. monoco/core/resources/zh/{SKILL.md → skills/monoco_core/SKILL.md} +2 -0
  20. monoco/core/setup.py +1 -1
  21. monoco/core/skill_framework.py +292 -0
  22. monoco/core/skills.py +538 -254
  23. monoco/core/sync.py +73 -1
  24. monoco/core/workflow_converter.py +420 -0
  25. monoco/features/{scheduler → agent}/__init__.py +5 -3
  26. monoco/features/agent/adapter.py +31 -0
  27. monoco/features/agent/apoptosis.py +44 -0
  28. monoco/features/agent/cli.py +296 -0
  29. monoco/features/agent/config.py +96 -0
  30. monoco/features/agent/defaults.py +12 -0
  31. monoco/features/{scheduler → agent}/engines.py +32 -6
  32. monoco/features/agent/flow_skills.py +281 -0
  33. monoco/features/agent/manager.py +91 -0
  34. monoco/features/{scheduler → agent}/models.py +6 -3
  35. monoco/features/agent/resources/atoms/atom-code-dev.yaml +61 -0
  36. monoco/features/agent/resources/atoms/atom-issue-lifecycle.yaml +73 -0
  37. monoco/features/agent/resources/atoms/atom-knowledge.yaml +55 -0
  38. monoco/features/agent/resources/atoms/atom-review.yaml +60 -0
  39. monoco/features/agent/resources/en/skills/flow_engineer/SKILL.md +94 -0
  40. monoco/features/agent/resources/en/skills/flow_manager/SKILL.md +93 -0
  41. monoco/features/agent/resources/en/skills/flow_planner/SKILL.md +85 -0
  42. monoco/features/agent/resources/en/skills/flow_reviewer/SKILL.md +114 -0
  43. monoco/features/agent/resources/roles/role-engineer.yaml +49 -0
  44. monoco/features/agent/resources/roles/role-manager.yaml +46 -0
  45. monoco/features/agent/resources/roles/role-planner.yaml +46 -0
  46. monoco/features/agent/resources/roles/role-reviewer.yaml +47 -0
  47. monoco/features/agent/resources/workflows/workflow-dev.yaml +83 -0
  48. monoco/features/agent/resources/workflows/workflow-issue-create.yaml +72 -0
  49. monoco/features/agent/resources/workflows/workflow-review.yaml +94 -0
  50. monoco/features/agent/resources/zh/skills/flow_engineer/SKILL.md +94 -0
  51. monoco/features/agent/resources/zh/skills/flow_manager/SKILL.md +88 -0
  52. monoco/features/agent/resources/zh/skills/flow_planner/SKILL.md +259 -0
  53. monoco/features/agent/resources/zh/skills/flow_reviewer/SKILL.md +137 -0
  54. monoco/features/{scheduler → agent}/session.py +36 -1
  55. monoco/features/{scheduler → agent}/worker.py +40 -4
  56. monoco/features/glossary/adapter.py +31 -0
  57. monoco/features/glossary/config.py +5 -0
  58. monoco/features/glossary/resources/en/AGENTS.md +29 -0
  59. monoco/features/glossary/resources/en/skills/monoco_glossary/SKILL.md +35 -0
  60. monoco/features/glossary/resources/zh/AGENTS.md +29 -0
  61. monoco/features/glossary/resources/zh/skills/monoco_glossary/SKILL.md +35 -0
  62. monoco/features/i18n/resources/en/skills/i18n_scan_workflow/SKILL.md +105 -0
  63. monoco/features/i18n/resources/en/{SKILL.md → skills/monoco_i18n/SKILL.md} +2 -0
  64. monoco/features/i18n/resources/zh/skills/i18n_scan_workflow/SKILL.md +105 -0
  65. monoco/features/i18n/resources/zh/{SKILL.md → skills/monoco_i18n/SKILL.md} +2 -0
  66. monoco/features/issue/commands.py +427 -21
  67. monoco/features/issue/core.py +140 -1
  68. monoco/features/issue/criticality.py +553 -0
  69. monoco/features/issue/domain/models.py +28 -2
  70. monoco/features/issue/engine/machine.py +75 -15
  71. monoco/features/issue/git_service.py +185 -0
  72. monoco/features/issue/linter.py +291 -62
  73. monoco/features/issue/models.py +50 -2
  74. monoco/features/issue/resources/en/skills/issue_create_workflow/SKILL.md +167 -0
  75. monoco/features/issue/resources/en/skills/issue_develop_workflow/SKILL.md +224 -0
  76. monoco/features/issue/resources/en/skills/issue_lifecycle_workflow/SKILL.md +159 -0
  77. monoco/features/issue/resources/en/skills/issue_refine_workflow/SKILL.md +203 -0
  78. monoco/features/issue/resources/en/{SKILL.md → skills/monoco_issue/SKILL.md} +50 -0
  79. monoco/features/issue/resources/zh/skills/issue_create_workflow/SKILL.md +167 -0
  80. monoco/features/issue/resources/zh/skills/issue_develop_workflow/SKILL.md +224 -0
  81. monoco/features/issue/resources/zh/skills/issue_lifecycle_workflow/SKILL.md +159 -0
  82. monoco/features/issue/resources/zh/skills/issue_refine_workflow/SKILL.md +203 -0
  83. monoco/features/issue/resources/zh/{SKILL.md → skills/monoco_issue/SKILL.md} +52 -0
  84. monoco/features/issue/validator.py +185 -65
  85. monoco/features/memo/__init__.py +2 -1
  86. monoco/features/memo/adapter.py +32 -0
  87. monoco/features/memo/cli.py +36 -14
  88. monoco/features/memo/core.py +59 -0
  89. monoco/features/memo/resources/en/skills/monoco_memo/SKILL.md +77 -0
  90. monoco/features/memo/resources/en/skills/note_processing_workflow/SKILL.md +140 -0
  91. monoco/features/memo/resources/zh/AGENTS.md +8 -0
  92. monoco/features/memo/resources/zh/skills/monoco_memo/SKILL.md +77 -0
  93. monoco/features/memo/resources/zh/skills/note_processing_workflow/SKILL.md +140 -0
  94. monoco/features/spike/resources/en/{SKILL.md → skills/monoco_spike/SKILL.md} +2 -0
  95. monoco/features/spike/resources/en/skills/research_workflow/SKILL.md +121 -0
  96. monoco/features/spike/resources/zh/{SKILL.md → skills/monoco_spike/SKILL.md} +2 -0
  97. monoco/features/spike/resources/zh/skills/research_workflow/SKILL.md +121 -0
  98. monoco/main.py +2 -3
  99. monoco_toolkit-0.3.10.dist-info/METADATA +124 -0
  100. monoco_toolkit-0.3.10.dist-info/RECORD +156 -0
  101. monoco/features/scheduler/cli.py +0 -285
  102. monoco/features/scheduler/config.py +0 -68
  103. monoco/features/scheduler/defaults.py +0 -54
  104. monoco/features/scheduler/manager.py +0 -49
  105. monoco/features/scheduler/reliability.py +0 -106
  106. monoco/features/skills/core.py +0 -102
  107. monoco_toolkit-0.3.6.dist-info/METADATA +0 -127
  108. monoco_toolkit-0.3.6.dist-info/RECORD +0 -97
  109. /monoco/core/{hooks.py → githooks.py} +0 -0
  110. /monoco/features/{skills → glossary}/__init__.py +0 -0
  111. {monoco_toolkit-0.3.6.dist-info → monoco_toolkit-0.3.10.dist-info}/WHEEL +0 -0
  112. {monoco_toolkit-0.3.6.dist-info → monoco_toolkit-0.3.10.dist-info}/entry_points.txt +0 -0
  113. {monoco_toolkit-0.3.6.dist-info → monoco_toolkit-0.3.10.dist-info}/licenses/LICENSE +0 -0
@@ -1,54 +0,0 @@
1
- from .models import RoleTemplate
2
-
3
- DEFAULT_ROLES = [
4
- RoleTemplate(
5
- name="crafter",
6
- description="Responsible for initial design, research, and drafting issues from descriptions.",
7
- trigger="task.received",
8
- goal="Produce a structured Issue file and/or detailed design document.",
9
- tools=[
10
- "create_issue_file",
11
- "read_file",
12
- "search_web",
13
- "view_file_outline",
14
- "write_to_file",
15
- ],
16
- system_prompt=(
17
- "You are a Crafter agent. Your goal is to turn vague ideas into structured engineering plans.\n"
18
- "If the user provides a description, use 'monoco issue create' and 'monoco issue update' to build the task.\n"
19
- "If the user provides an existing Issue, analyze the context and provide a detailed design or implementation plan."
20
- ),
21
- engine="gemini",
22
- ),
23
- RoleTemplate(
24
- name="builder",
25
- description="Responsible for implementation.",
26
- trigger="design.approved",
27
- goal="Implement code and tests",
28
- tools=["read_file", "write_to_file", "run_command", "git"],
29
- system_prompt="You are a Builder agent. Your job is to implement the code based on the design.",
30
- engine="gemini",
31
- ),
32
- RoleTemplate(
33
- name="auditor",
34
- description="Responsible for code review.",
35
- trigger="implementation.submitted",
36
- goal="Review code and provide feedback",
37
- tools=[
38
- "read_file",
39
- "read_terminal",
40
- "run_command",
41
- ], # Assumed read_diff and lint are via run_command
42
- system_prompt="You are an Auditor agent. Your job is to review the code for quality and correctness.",
43
- engine="gemini",
44
- ),
45
- RoleTemplate(
46
- name="coroner",
47
- description="Responsible for analyzing failure root causes (Autopsy).",
48
- trigger="session.crashed",
49
- goal="Produce a post-mortem report",
50
- tools=["read_file", "read_terminal", "git_log"],
51
- system_prompt="You are a Coroner agent. Your job is to analyze why the previous session failed and write a post-mortem report.",
52
- engine="gemini",
53
- ),
54
- ]
@@ -1,49 +0,0 @@
1
- from typing import Dict, List, Optional
2
- import uuid
3
- from .models import RoleTemplate
4
- from .worker import Worker
5
- from .session import Session, RuntimeSession
6
-
7
-
8
- class SessionManager:
9
- """
10
- Manages the lifecycle of sessions.
11
- Responsible for creating, tracking, and retrieving sessions.
12
- """
13
-
14
- def __init__(self):
15
- # In-memory storage for now. In prod, this might be a DB or file-backed.
16
- self._sessions: Dict[str, RuntimeSession] = {}
17
-
18
- def create_session(self, issue_id: str, role: RoleTemplate) -> RuntimeSession:
19
- session_id = str(uuid.uuid4())
20
- branch_name = (
21
- f"agent/{issue_id}/{session_id[:8]}" # Simple branch naming strategy
22
- )
23
-
24
- session_model = Session(
25
- id=session_id,
26
- issue_id=issue_id,
27
- role_name=role.name,
28
- branch_name=branch_name,
29
- )
30
-
31
- worker = Worker(role, issue_id)
32
- runtime = RuntimeSession(session_model, worker)
33
- self._sessions[session_id] = runtime
34
- return runtime
35
-
36
- def get_session(self, session_id: str) -> Optional[RuntimeSession]:
37
- return self._sessions.get(session_id)
38
-
39
- def list_sessions(self, issue_id: Optional[str] = None) -> List[RuntimeSession]:
40
- if issue_id:
41
- return [s for s in self._sessions.values() if s.model.issue_id == issue_id]
42
- return list(self._sessions.values())
43
-
44
- def terminate_session(self, session_id: str):
45
- session = self.get_session(session_id)
46
- if session:
47
- session.terminate()
48
- # We might want to keep the record for a while, so don't delete immediately
49
- # del self._sessions[session_id]
@@ -1,106 +0,0 @@
1
- from pathlib import Path
2
- from monoco.core.config import get_config
3
- from .manager import SessionManager
4
- from .session import RuntimeSession
5
- from .config import load_scheduler_config
6
-
7
-
8
- class ApoptosisManager:
9
- """
10
- Handles the 'Apoptosis' (Programmed Cell Death) lifecycle for agents.
11
- Ensures that failing agents are killed, analyzed, and the environment is reset.
12
- """
13
-
14
- def __init__(self, session_manager: SessionManager):
15
- self.session_manager = session_manager
16
-
17
- # Load roles dynamically based on current project context
18
- settings = get_config()
19
- project_root = Path(settings.paths.root).resolve()
20
- roles = load_scheduler_config(project_root)
21
-
22
- # Find coroner role
23
- self.coroner_role = roles.get("coroner")
24
-
25
- if not self.coroner_role:
26
- raise ValueError("Coroner role not defined!")
27
-
28
- def check_health(self, session: RuntimeSession) -> bool:
29
- """
30
- Check if a session is healthy.
31
- In a real implementation, this would check heartbeat, CPU usage, or token limits.
32
- """
33
- # Placeholder logic: Random failure or external flag?
34
- # For now, always healthy unless explicitly marked 'crashed' (which we can simulate)
35
- if hasattr(session, "simulate_crash") and session.simulate_crash:
36
- return False
37
- return True
38
-
39
- def trigger_apoptosis(self, session_id: str):
40
- """
41
- Execute the full death and rebirth cycle.
42
- """
43
- session = self.session_manager.get_session(session_id)
44
- if not session:
45
- print(f"Session {session_id} not found for apoptosis.")
46
- return
47
-
48
- print(f"💀 [Apoptosis] Starting lifecycle for Session {session_id}")
49
-
50
- # 1. Kill
51
- self._kill(session)
52
-
53
- # 2. Autopsy
54
- try:
55
- self._perform_autopsy(session)
56
- except Exception as e:
57
- print(f"⚠️ Autopsy failed: {e}")
58
-
59
- # 3. Reset
60
- self._reset_environment(session)
61
-
62
- print(
63
- f"✅ [Apoptosis] Task {session.model.issue_id} has been reset and analyzed."
64
- )
65
-
66
- def _kill(self, session: RuntimeSession):
67
- print(f"🔪 Killing worker process for {session.model.id}...")
68
- session.terminate()
69
- session.model.status = "crashed"
70
-
71
- def _perform_autopsy(self, victim_session: RuntimeSession):
72
- print(
73
- f"🔍 Performing autopsy on {victim_session.model.id} via Coroner agent..."
74
- )
75
-
76
- # Start a Coroner session
77
- coroner_session = self.session_manager.create_session(
78
- victim_session.model.issue_id, self.coroner_role
79
- )
80
-
81
- # Context for the coroner
82
- context = {
83
- "description": f"The previous agent session ({victim_session.model.id}) for role '{victim_session.model.role_name}' crashed. Please analyze the environment and the Issue {victim_session.model.issue_id}, then write a ## Post-mortem section in the issue file."
84
- }
85
-
86
- coroner_session.start(context=context)
87
- print("📄 Coroner agent finished analysis.")
88
-
89
- def _reset_environment(self, session: RuntimeSession):
90
- print("🧹 Resetting environment (simulated git reset --hard)...")
91
- # In real impl:
92
- # import subprocess
93
- # subprocess.run(["git", "reset", "--hard"], check=True)
94
- pass
95
-
96
- def _retry(self, session: RuntimeSession):
97
- print("🔄 Reincarnating session...")
98
- # Create a new session with the same role and issue
99
- new_session = self.session_manager.create_session(
100
- session.model.issue_id,
101
- # We need to find the original role object.
102
- # Simplified: assuming we can find it by name or pass it.
103
- # For now, just placeholder.
104
- session.worker.role,
105
- )
106
- new_session.start()
@@ -1,102 +0,0 @@
1
- import re
2
- from pathlib import Path
3
- from typing import Dict, List, Any
4
- from rich.console import Console
5
-
6
- console = Console()
7
-
8
-
9
- def init(root: Path, resources: List[Dict[str, Any]]):
10
- """
11
- Initialize the Skills module.
12
-
13
- Args:
14
- root: Project root directory.
15
- resources: List of resource dicts from modules.
16
- Expected format:
17
- {
18
- "skills": { "name": "content" },
19
- "prompts": { "name": "content" }
20
- }
21
- """
22
- skills_root = root / "Toolkit" / "skills"
23
- skills_root.mkdir(parents=True, exist_ok=True)
24
-
25
- # 1. Write Skills
26
- for res in resources:
27
- if "skills" in res:
28
- for name, content in res["skills"].items():
29
- target_dir = skills_root / name
30
- target_dir.mkdir(exist_ok=True)
31
- target_file = target_dir / "SKILL.md"
32
- # Idempotency: Overwrite if content is different? Or just always overwrite?
33
- # User asked for "scaffold", implies creation.
34
- # Let's overwrite to ensure extensive "Repair" capability.
35
- target_file.write_text(content, encoding="utf-8")
36
- console.print(f"[dim] - Scaffolding skill:[/dim] {name}")
37
-
38
- # 2. Update Agent Docs
39
- update_agent_docs(root, resources)
40
-
41
-
42
- def update_agent_docs(root: Path, resources: List[Dict[str, Any]]):
43
- """
44
- Inject prompts into AGENTS.md, GEMINI.md, CLAUDE.md.
45
- """
46
- target_files = ["AGENTS.md", "GEMINI.md", "CLAUDE.md"]
47
-
48
- # Aggregate Prompts
49
- aggregated_prompt = "\n\n".join(
50
- [
51
- res["prompts"][name]
52
- for res in resources
53
- if "prompts" in res
54
- for name in res["prompts"]
55
- ]
56
- )
57
-
58
- injection_content = f"""
59
- ## Monoco Toolkit
60
-
61
- The following tools and skills are available in this environment.
62
-
63
- {aggregated_prompt}
64
- """
65
-
66
- for filename in target_files:
67
- _inject_section(root / filename, injection_content)
68
-
69
-
70
- def _inject_section(file_path: Path, content: str):
71
- if not file_path.exists():
72
- # Create if not exists? User said "Edit AGENTS.md...", implies existence.
73
- # But if we init in a fresh repo, maybe we should create them?
74
- # Let's create if missing.
75
- file_path.write_text(f"# Project Guidelines\n{content}", encoding="utf-8")
76
- console.print(f"[green]✔[/green] Created {file_path.name}")
77
- return
78
-
79
- original_content = file_path.read_text(encoding="utf-8")
80
-
81
- # Regex to find existing section
82
- # Matches ## Monoco Toolkit ... until next ## or End of String
83
- pattern = r"(## Monoco Toolkit.*?)(\n## |\Z)"
84
-
85
- # Check if section exists
86
- if re.search(pattern, original_content, re.DOTALL):
87
- # Replace
88
- new_content = re.sub(
89
- pattern, f"{content.strip()}\n\n\\2", original_content, flags=re.DOTALL
90
- )
91
- if new_content != original_content:
92
- file_path.write_text(new_content, encoding="utf-8")
93
- console.print(f"[green]✔[/green] Updated {file_path.name}")
94
- else:
95
- console.print(f"[dim] - {file_path.name} is up to date.[/dim]")
96
- else:
97
- # Append
98
- with open(file_path, "a", encoding="utf-8") as f:
99
- if not original_content.endswith("\n"):
100
- f.write("\n")
101
- f.write(content)
102
- console.print(f"[green]✔[/green] Appended to {file_path.name}")
@@ -1,127 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: monoco-toolkit
3
- Version: 0.3.6
4
- Summary: Agent Native Toolkit for Monoco - Task Management & Kanban for AI Agents
5
- Project-URL: Homepage, https://monoco.io
6
- Project-URL: Repository, https://github.com/IndenScale/Monoco
7
- Project-URL: Documentation, https://monoco.io/docs
8
- Project-URL: Issues, https://github.com/IndenScale/Monoco/issues
9
- Author-email: Monoco Team <dev@monoco.io>
10
- License-Expression: MIT
11
- License-File: LICENSE
12
- Keywords: agent-native,ai-agents,cli,kanban,monoco,task-management,workflow
13
- Classifier: Development Status :: 3 - Alpha
14
- Classifier: Intended Audience :: Developers
15
- Classifier: License :: OSI Approved :: MIT License
16
- Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.10
18
- Classifier: Programming Language :: Python :: 3.11
19
- Classifier: Programming Language :: Python :: 3.12
20
- Classifier: Topic :: Office/Business :: Groupware
21
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Classifier: Topic :: Software Development :: Quality Assurance
23
- Requires-Python: >=3.10
24
- Requires-Dist: fastapi>=0.100.0
25
- Requires-Dist: httpx>=0.28.1
26
- Requires-Dist: prompt-toolkit>=3.0.0
27
- Requires-Dist: pydantic>=2.0.0
28
- Requires-Dist: pyyaml>=6.0
29
- Requires-Dist: rich>=13.0.0
30
- Requires-Dist: sse-starlette>=1.6.0
31
- Requires-Dist: typer[all]>=0.9.0
32
- Requires-Dist: uvicorn[standard]>=0.20.0
33
- Requires-Dist: watchdog>=6.0.0
34
- Description-Content-Type: text/markdown
35
-
36
- # Monoco Toolkit
37
-
38
- [![Version](https://img.shields.io/pypi/v/monoco-toolkit)](https://pypi.org/project/monoco-toolkit/)
39
- [![License](https://img.shields.io/github/license/IndenScale/Monoco)](LICENSE)
40
-
41
- > **The Operating System for Agentic Engineering.**
42
- >
43
- > Stop chatting. Start building.
44
- > Monoco grounds your AI Agents into deterministic, validatable, and shippable engineering workflows.
45
-
46
- ---
47
-
48
- ## ⚡️ The Gap: "Chat" is not Engineering.
49
-
50
- Generating code is easy. **Engineering**—managing dependencies, maintaining state, validation, and version control—is hard.
51
-
52
- Most Agent workflows today are fragile "chats". Monoco turns them into **Software Engineering Processes**. It acts as the "BizOps" layer for your Agents, ensuring that every line of code generated is tracked, reviewed, and aligned with the project roadmap.
53
-
54
- ## 🌟 Core Philosophy
55
-
56
- ### 1. Co-pilot by Design
57
-
58
- **Just-enough Automation.**
59
- Monoco abstracts away the tedious details (Git ops, state tracking) while keeping you securely in the driver's seat. Agents can suggest and build, but **you** always have the final say on what gets merged.
60
-
61
- ### 2. Battle-Tested Best Practices
62
-
63
- **Senior Engineer Intuition.**
64
- Monoco enforces **Issue Driven Development (IDD)** and standard **Git Workflows**. We bake the rigorous habits of effective software teams into the Agent's core loop, ensuring every line of code is traceable and reviewed.
65
-
66
- ### 3. Radical Transparency (Dogfooding)
67
-
68
- **Process as Product.**
69
- Monoco is built by Monoco. We believe in open-sourcing not just the code, but the engineering process itself. Every design decision, interaction log, and failure is public—providing a live blueprint for Agentic Engineering.
70
-
71
- ## 🚀 Quick Start
72
-
73
- ### 1. Installation
74
-
75
- Monoco is available as a Python CLI tool.
76
-
77
- ```bash
78
- pip install monoco-toolkit
79
- ```
80
-
81
- ### 2. Workspace Initialization
82
-
83
- Turn any directory into a Monoco Workspace. This creates the `.monoco` config and the `Issues/` directory.
84
-
85
- ```bash
86
- monoco init
87
- ```
88
-
89
- ### 3. Agent Synchronization
90
-
91
- **Crucial Step**: This injects the "Monoco System Neural Network" (System Prompts & Skills) into your agent configuration files (e.g., `GEMINI.md`, `CLAUDE.md`).
92
-
93
- ```bash
94
- monoco sync
95
- ```
96
-
97
- ### 4. The Engineering Loop (Agent-First)
98
-
99
- In Monoco, you don't need to memorize CLI commands. **The Agent is your DevOps Engineer.**
100
-
101
- 1. **Chat**: Tell your Agent in the chatbox (e.g., _"Implement Dark Mode"_).
102
- 2. **Plan**: The Agent investigates and proposes an **Issue Ticket** for your review.
103
- 3. **Build**: Once approved, the Agent creates a branch, writes code, and submits changes.
104
- 4. **Ship**: You accept the results. The Agent handles the merge and closure.
105
-
106
- ---
107
-
108
- ## 📦 Extension for VS Code
109
-
110
- The **Monoco VS Code Extension** is the primary visual interface for the toolkit.
111
-
112
- - **Install from Marketplace**: Search for `Monoco`.
113
- - **Keybinding**: `Cmd+Shift+P` -> `Monoco: Open Kanban Board`.
114
-
115
- ## 🛠️ Tech Stack & Architecture
116
-
117
- - **Core**: Python (CLI & Logic Layer)
118
- - **Extension**: TypeScript (VS Code Client & LSP)
119
- - **Data**: Local Filesystem (Markdown/YAML)
120
-
121
- ## 🤝 Contributing
122
-
123
- Monoco is designed for the community. We welcome contributions to both the core CLI and the VS Code extension.
124
-
125
- ## 📄 License
126
-
127
- MIT © [IndenScale](https://github.com/IndenScale)
@@ -1,97 +0,0 @@
1
- monoco/main.py,sha256=IF8pN71fFL0AwxtnRxXQaoi9NgBf0YAhppWlc8SuiTM,5688
2
- monoco/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- monoco/cli/project.py,sha256=FqLaDD3hiWxa0_TKzxEF7PYH9RPsvmLyjO3NYVckgGs,2737
4
- monoco/cli/workspace.py,sha256=1TVVS835XyirLDvBGQXSblIaYVhe2Pk9EpORDvcktyk,1538
5
- monoco/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- monoco/core/config.py,sha256=M9F5De2FUgaIxFwqZBoJUXsMsph31rNh-4U-k_9rUHA,13543
7
- monoco/core/execution.py,sha256=7522s7uVWiNdMKtWlIb8JHzbAcJgLVuxUFp_6VmhWNQ,1801
8
- monoco/core/feature.py,sha256=bcK0C1CaQgNLcdMF0RuniaaQRCYSA-0JdOpQz9W_1xM,1968
9
- monoco/core/git.py,sha256=d3A8L30nlEj0F1pwSHk_cOoRYi1dMCiZc7KD70ViMyw,8335
10
- monoco/core/hooks.py,sha256=QY4c74LIYDtcjtWYax1PrK5CtVNKYTfVVVBOj-SCulo,1826
11
- monoco/core/injection.py,sha256=zs9RpXaBfwP-fbwOU_X2nm-AH94tQN9tVWXNtV4tCYM,6887
12
- monoco/core/integrations.py,sha256=ifSz7I87DXHF-eHLyXRN3pY1-Kh8IjvMyIrG9iogGpw,7744
13
- monoco/core/lsp.py,sha256=GOrHzubkMWS3iBpP4H2fTFW-0JXa6D2YlU0ZEhp5zmY,2018
14
- monoco/core/output.py,sha256=ZlUydZ65FIP5a32_eESIIvMrhcSwghIqZ3N23OSx6Ss,3878
15
- monoco/core/registry.py,sha256=1m9wvkcqWqrTcARt-jUGHH1BEYMvp0NJGRkq-uduJeg,1167
16
- monoco/core/setup.py,sha256=YUIhzqZwjEeH7zGZm9SPA-OhgTISJtA6ByNFCGBznUU,11487
17
- monoco/core/skills.py,sha256=KeVN09KIcRiksjJ91AggJbN_EvjRQfMGqd_hUQfUjes,16168
18
- monoco/core/state.py,sha256=dfoTH1Sj_TSjtTEXuv4w0ZOp_Fd30XNymVSZo30Xshg,1820
19
- monoco/core/sync.py,sha256=1p37pTfGBanogzcLhdTfMTxDqq79B5iiwiPS4fiuQaA,8378
20
- monoco/core/telemetry.py,sha256=GQDbtgrZwAL1ZpjgbJZuawbTyH6J0NjMXMi4ogq-Ang,2915
21
- monoco/core/workspace.py,sha256=H_PHD5A0HZFq841u1JtLoFjkXdQg9D6x6I7QcFtJge4,3000
22
- monoco/core/resources/en/AGENTS.md,sha256=vf9z43UU-LPwYKPWCrtw8TpWrmkeZ6zfMyHP4Q9JqdQ,1178
23
- monoco/core/resources/en/SKILL.md,sha256=wBXNpPqATOxO8TGiOM8S091gMNZ8du_WhQubO6TfNyg,3504
24
- monoco/core/resources/zh/AGENTS.md,sha256=KBNZSCPBIals6jDdvG5wJgjZuswi_1nKljggJSMtfy8,1156
25
- monoco/core/resources/zh/SKILL.md,sha256=1D8_FqzDVqowZWk4Qkyx4me53NTd8qihP20gaCH6gJY,3153
26
- monoco/daemon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- monoco/daemon/app.py,sha256=tAtLxzw_aRzU0r6Bk9lhshaCyqZRkQKUJmg5FDi7-1c,15431
28
- monoco/daemon/commands.py,sha256=2AGsqDZ0edg34KuAGZrTvKlJZ1fhxNXgus7vGn2km4c,1115
29
- monoco/daemon/models.py,sha256=E-qwebvD-Z-VixFEl067ZDENGmAVOjrin9XV6HLSI5k,988
30
- monoco/daemon/reproduce_stats.py,sha256=LghJ8o1jTeDpA1zVPI2vF0okGU3h4esEI1thNa6shKI,1196
31
- monoco/daemon/services.py,sha256=jkkDwX5mBRiy4DZPNxWmHNe_EE-hiX53FoIlWGiCBoM,5070
32
- monoco/daemon/stats.py,sha256=XTtuFWx68O1OA44SmN0BGVa6sswts2ExmkiavUzCYiA,4800
33
- monoco/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- monoco/features/config/commands.py,sha256=i6_fKhSGLeO8RCbWrYKxelFgaHWcPiQERS2uxUdq7H0,4894
35
- monoco/features/i18n/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- monoco/features/i18n/adapter.py,sha256=-ifDKQ7UH8tDoOdB_fSKoIrNRJROIPNuzZor2FPJVfo,932
37
- monoco/features/i18n/commands.py,sha256=NJ2lZRRjiTW-3UbqxhEKURdWSDxQPkfnBAUgnwoVCL8,8416
38
- monoco/features/i18n/core.py,sha256=bnEV9D7KgxbC5I3l-1RN1-H8hek1loDL6KFXzmdq0pQ,9658
39
- monoco/features/i18n/resources/en/AGENTS.md,sha256=zzuF7BW6x8Mj6LZZmeM6wTbG5CSCDMShf4rwtN7XITg,197
40
- monoco/features/i18n/resources/en/SKILL.md,sha256=Z8fAAqeMvpLDw1D_9AzZIykS5-HLVM9nnlRZLWBTPqM,2203
41
- monoco/features/i18n/resources/zh/AGENTS.md,sha256=lKkwLLCADRH7UDq9no4eQY2sRfJrb64JoZ_HNved8vA,175
42
- monoco/features/i18n/resources/zh/SKILL.md,sha256=Wynk7zVBW7CO0_6AEQNUvlD_3eMW_7EPnzEn9QUaiDs,1884
43
- monoco/features/issue/adapter.py,sha256=4dzKg4-0XH63uORoh8qcolvKxJR6McBDIYxYEcZJJkA,1204
44
- monoco/features/issue/commands.py,sha256=vaScb2J4qjUvO8DSlKhTrGDSfIyJ4zIUr14jhBlG6tE,37581
45
- monoco/features/issue/core.py,sha256=9b5BVJJz5Ek3QNKqOhn6GSgvkmpAN45zmb8CQJVsPjc,51452
46
- monoco/features/issue/domain_commands.py,sha256=eatSF_uZp4nGpVr2PIgb00MWfEBm0OnyAd4JvUJEAAA,1535
47
- monoco/features/issue/domain_service.py,sha256=bEs_WXOWmotgIR-lGwyWekF4nonvjsgrK1YG3pyVfwk,2564
48
- monoco/features/issue/linter.py,sha256=LLtJEVIzoGTNm1liZARJHM3-V-EODkGRuw3ExCZtEjY,26115
49
- monoco/features/issue/migration.py,sha256=i0xlxZjrpmuHGHOAIN4iu31EwwVIvZn7yjveS-kU22c,4896
50
- monoco/features/issue/models.py,sha256=pIgun9dDTelDJa6RqhLJb2OR201cimOoNEB78qUsvG0,7286
51
- monoco/features/issue/monitor.py,sha256=vZN0TbR3V5fHKHRGkIhimO6UwWcwYjDHQs2qzjEG174,3549
52
- monoco/features/issue/resolver.py,sha256=mAU9s7TNNHY9A2278JTwJvxU-jalGKTDJfJdjONev3E,5655
53
- monoco/features/issue/test_priority_integration.py,sha256=pTBg3Wjv6lLYxWL6vjbo2NGVE-X0MRB3Ha8bqObZrU4,2791
54
- monoco/features/issue/test_resolver.py,sha256=luFhK37DUvh4a3TTcFYVO-oOIJljQVCSYicwSWyDleQ,2530
55
- monoco/features/issue/validator.py,sha256=GYqbx2-ZxXfk1HicgBXkpL__v83KK-jcOyo7eW-VRUs,27793
56
- monoco/features/issue/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- monoco/features/issue/domain/lifecycle.py,sha256=oIuLYTVy1RRHGngAzbNU4kTWOHMBhjuw_TuYCwNqMJw,4991
58
- monoco/features/issue/domain/models.py,sha256=2vuSAGaFrbAEkQapwkGG_T8cHlsmARN71fTA44PIVSM,5850
59
- monoco/features/issue/domain/parser.py,sha256=axfB9BjY-m4DQqYwTQBm_38plOidZaDqFtsIejW_kYI,9095
60
- monoco/features/issue/domain/workspace.py,sha256=nyTEFNmpLPuX7nssMCBiFI1XBhY9zbqG877Ppp_s0Fg,3658
61
- monoco/features/issue/engine/__init__.py,sha256=-SBvzjlZJz0O-IB1c95d9pbhr3lydJNLq2vhnfkZ8PQ,747
62
- monoco/features/issue/engine/config.py,sha256=7enjPW4J_fpuK08ov6LpfQ-9h2T1D4Hc5yIXOPuQvLs,5761
63
- monoco/features/issue/engine/machine.py,sha256=BTYjp8NQAzu8JVP95bQdkOLrJjFsRNR7uC8tjsUTqCk,6393
64
- monoco/features/issue/engine/models.py,sha256=595Sx3ncrpg_PhnbBLthohAvuhnjA-_9oXcrsT6Lv0k,574
65
- monoco/features/issue/lsp/__init__.py,sha256=8bl8-WzSj3C4SkPKgVGnCeyemmvHVWBsuMZsJuJggG8,77
66
- monoco/features/issue/lsp/definition.py,sha256=cF6Quw1OztuKMJ1zLvgA_ek7lTAdzHF0m4LVznpbAPw,3203
67
- monoco/features/issue/resources/en/AGENTS.md,sha256=eHHXjLRDAV7IKrYPQSilxu0X5D0SBCAFBXmlSoc9r48,1278
68
- monoco/features/issue/resources/en/SKILL.md,sha256=M5khTJdraQenX0tf7RHOVcqyKHC285qwDzWdsCJ7XPI,4032
69
- monoco/features/issue/resources/zh/AGENTS.md,sha256=oRHHqeDYx6aEc5FfdL7a-zqT7uh4SYIYt8QBRKEKrYM,1351
70
- monoco/features/issue/resources/zh/SKILL.md,sha256=XFE33cCCos0U1IVNkMhU7fGuqVqfxo_FNKdp1aScaoM,5055
71
- monoco/features/memo/__init__.py,sha256=ledMrs-h5k_4wssXWv4MBYTDi-HHo3Fv8QAMpqlQI_M,40
72
- monoco/features/memo/cli.py,sha256=nw5Kg7Qu33ucwrBaJS5CIkPRA_6TlJQQz2TvDWL2Nqc,2685
73
- monoco/features/memo/core.py,sha256=HUQLohVZ6KCU2chi18tEQYtohzl1-bOR5F12W40QkIc,2226
74
- monoco/features/scheduler/__init__.py,sha256=hvE9A14qFTeTYbWlK9iMRdXIFLMBuG8724GEZzFTHB8,483
75
- monoco/features/scheduler/cli.py,sha256=NgsGwCf615YA4VGd-mqMpGp5VCjdMUqoZqiHZFnDdLU,8325
76
- monoco/features/scheduler/config.py,sha256=69PTvKGHJ33fA2yhFJAq0WVq70Zbmdd5X8Wl0vIYAak,2336
77
- monoco/features/scheduler/defaults.py,sha256=4Ne3RpF7gZ46BmHtF0hC8wYkuCIkDSuKB7hGnHhGXms,2208
78
- monoco/features/scheduler/engines.py,sha256=ICKw4Kfme6UNl_JLJvT7hADKHo76Yr8wpFFEvtEV6z4,3799
79
- monoco/features/scheduler/manager.py,sha256=PmNKqfktgrdpUwE-jPE_WX3IvzZat0JKdEcmzse08-0,1680
80
- monoco/features/scheduler/models.py,sha256=rb8rx8t_TD5ilUC6xU3jvK0sud7YUZE_iEdes9Np8R0,877
81
- monoco/features/scheduler/reliability.py,sha256=zVwtnksug5wr0_tigC2Qjl_C8VNyrheN_34ItUceGoo,3846
82
- monoco/features/scheduler/session.py,sha256=5xga191nWXqJOLgl3MTTJ3zDrVZcj8SxZcxYM6-CtLU,2969
83
- monoco/features/scheduler/worker.py,sha256=4OU2Y7nG5EKadNIKDF5GWl5V7vgVl3OPlYHShfiEeBI,4538
84
- monoco/features/skills/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- monoco/features/skills/core.py,sha256=BXVvMot8E457-pj9U19lPHypBVhdLQRsx0zEAXJxpGY,3436
86
- monoco/features/spike/adapter.py,sha256=ZIpw-xNVoA2IIP18dbR-dmQGbQmK5ua_P-uGXuDjCeI,1021
87
- monoco/features/spike/commands.py,sha256=EuJ7trDaobIe7ae7pJ-ftpo_cO8-19R_fAZZCh2JcMg,3871
88
- monoco/features/spike/core.py,sha256=OuNWXQ-cBttP2oIF0B5iy0aEUH2MUMyGANG8ayEmjPo,4120
89
- monoco/features/spike/resources/en/AGENTS.md,sha256=NG3CMnlDk_0J8hnRUcueAM9lgIQr_dZ42R_31-LC48E,306
90
- monoco/features/spike/resources/en/SKILL.md,sha256=qKDcVh0D3pDRvfNLh1Bzo4oQU3obpl4tqdlzxeiWYMk,1911
91
- monoco/features/spike/resources/zh/AGENTS.md,sha256=5RHNl7fc3RdYYTFH483ojJl_arGPKkyYziOuGgFbqqg,290
92
- monoco/features/spike/resources/zh/SKILL.md,sha256=Q82e9lCQOAYIwBs5rGnvlVUDq7bp0pz8yvO10KTWFYQ,1710
93
- monoco_toolkit-0.3.6.dist-info/METADATA,sha256=UZH_Na2LgWBEQ8KWU084wgO8l9AK_HlTRc2YD58DT8o,4732
94
- monoco_toolkit-0.3.6.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
95
- monoco_toolkit-0.3.6.dist-info/entry_points.txt,sha256=iYj7FWYBdtClU15-Du1skqD0s6SFSIhJvxJ29VWp8ng,43
96
- monoco_toolkit-0.3.6.dist-info/licenses/LICENSE,sha256=ACAGGjV6aod4eIlVUTx1q9PZbnZGN5bBwkSs9RHj83s,1071
97
- monoco_toolkit-0.3.6.dist-info/RECORD,,
File without changes
File without changes