mycode-coding-agent 0.1.0__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.
- mycode/__init__.py +0 -0
- mycode/adapters/__init__.py +21 -0
- mycode/adapters/jsonl.py +692 -0
- mycode/agent/__init__.py +25 -0
- mycode/agent/events.py +111 -0
- mycode/agent/outcome.py +103 -0
- mycode/agent/progress.py +373 -0
- mycode/agent/runner.py +1481 -0
- mycode/application/__init__.py +38 -0
- mycode/application/agent_session.py +367 -0
- mycode/application/events.py +59 -0
- mycode/application/runtime.py +211 -0
- mycode/application/sessions.py +180 -0
- mycode/cli.py +840 -0
- mycode/config.py +355 -0
- mycode/context/__init__.py +1 -0
- mycode/context/artifacts.py +672 -0
- mycode/context/budget.py +752 -0
- mycode/context/builder.py +112 -0
- mycode/context/compact.py +795 -0
- mycode/context/tool_result_format.py +199 -0
- mycode/context/tool_result_retention.py +261 -0
- mycode/conversation.py +78 -0
- mycode/error_handling.py +481 -0
- mycode/event_format.py +147 -0
- mycode/instructions.py +285 -0
- mycode/llm.py +771 -0
- mycode/mcp/__init__.py +41 -0
- mycode/mcp/client.py +44 -0
- mycode/mcp/config.py +207 -0
- mycode/mcp/errors.py +302 -0
- mycode/mcp/manager.py +339 -0
- mycode/mcp/models.py +20 -0
- mycode/mcp/result_adapter.py +58 -0
- mycode/mcp/tool_adapter.py +145 -0
- mycode/mcp/trust.py +313 -0
- mycode/memory.py +570 -0
- mycode/memory_context.py +245 -0
- mycode/messages.py +63 -0
- mycode/observability.py +28 -0
- mycode/permissions.py +262 -0
- mycode/persistence/__init__.py +1 -0
- mycode/persistence/filesystem.py +291 -0
- mycode/persistence/project_storage.py +208 -0
- mycode/persistence/session_lock.py +138 -0
- mycode/persistence/session_store.py +503 -0
- mycode/presentation/__init__.py +1 -0
- mycode/presentation/cli/__init__.py +14 -0
- mycode/presentation/cli/confirmer.py +116 -0
- mycode/presentation/cli/mcp_trust.py +61 -0
- mycode/presentation/cli/presenter.py +320 -0
- mycode/presentation/cli/session_menu.py +146 -0
- mycode/presentation/cli/subagent_observer.py +124 -0
- mycode/presentation/command_format.py +90 -0
- mycode/presentation/commands.py +95 -0
- mycode/presentation/tui/__init__.py +6 -0
- mycode/presentation/tui/app.py +1351 -0
- mycode/presentation/tui/interactions.py +253 -0
- mycode/presentation/tui/presenter.py +266 -0
- mycode/presentation/tui/screens.py +305 -0
- mycode/presentation/tui/widgets.py +214 -0
- mycode/project.py +22 -0
- mycode/prompts.py +181 -0
- mycode/reasoning.py +40 -0
- mycode/session.py +86 -0
- mycode/skills/__init__.py +27 -0
- mycode/skills/builtin/database-recovery/SKILL.md +138 -0
- mycode/skills/builtin/database-recovery/references/sqlite.md +235 -0
- mycode/skills/registry.py +295 -0
- mycode/skills/state.py +68 -0
- mycode/subagents/__init__.py +1 -0
- mycode/subagents/audit.py +212 -0
- mycode/subagents/concurrency.py +124 -0
- mycode/subagents/contracts.py +421 -0
- mycode/subagents/delegate.py +80 -0
- mycode/subagents/delegation.py +128 -0
- mycode/subagents/lifecycle.py +86 -0
- mycode/subagents/limits.py +7 -0
- mycode/subagents/observability.py +150 -0
- mycode/subagents/persistence.py +152 -0
- mycode/subagents/profiles.py +184 -0
- mycode/subagents/prompts.py +67 -0
- mycode/subagents/results.py +178 -0
- mycode/subagents/runtime.py +528 -0
- mycode/subagents/snapshots.py +211 -0
- mycode/subagents/tool_batch.py +260 -0
- mycode/tools/__init__.py +81 -0
- mycode/tools/base.py +222 -0
- mycode/tools/bounds.py +14 -0
- mycode/tools/command_executor.py +167 -0
- mycode/tools/command_output.py +166 -0
- mycode/tools/command_risk.py +596 -0
- mycode/tools/defaults.py +59 -0
- mycode/tools/edit_file.py +524 -0
- mycode/tools/file_mutation.py +30 -0
- mycode/tools/glob.py +247 -0
- mycode/tools/grep.py +324 -0
- mycode/tools/ignore.py +122 -0
- mycode/tools/inspect_changes.py +269 -0
- mycode/tools/load_skill.py +92 -0
- mycode/tools/memory.py +264 -0
- mycode/tools/path_permissions.py +78 -0
- mycode/tools/patterns.py +48 -0
- mycode/tools/permission_metadata.py +27 -0
- mycode/tools/process_tree.py +166 -0
- mycode/tools/read_file.py +242 -0
- mycode/tools/read_skill_resource.py +93 -0
- mycode/tools/registry.py +279 -0
- mycode/tools/run_command.py +237 -0
- mycode/tools/run_skill_script.py +206 -0
- mycode/tools/run_validation.py +107 -0
- mycode/tools/submit_result.py +93 -0
- mycode/tools/text.py +15 -0
- mycode/tools/validation_command.py +377 -0
- mycode/tools/workspace.py +33 -0
- mycode/tools/write_file.py +169 -0
- mycode_coding_agent-0.1.0.dist-info/METADATA +244 -0
- mycode_coding_agent-0.1.0.dist-info/RECORD +121 -0
- mycode_coding_agent-0.1.0.dist-info/WHEEL +4 -0
- mycode_coding_agent-0.1.0.dist-info/entry_points.txt +2 -0
- mycode_coding_agent-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: mycode-coding-agent
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A terminal coding agent with tool calling, context management, subagents, MCP, and skills.
|
|
5
|
+
Author: mmc-cloud
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Keywords: ai-agent,cli,coding-agent,mcp,tui
|
|
9
|
+
Requires-Python: >=3.11
|
|
10
|
+
Requires-Dist: editables~=0.3
|
|
11
|
+
Requires-Dist: httpx2<3,>=2.5.0
|
|
12
|
+
Requires-Dist: httpx<1,>=0.28.1
|
|
13
|
+
Requires-Dist: jsonschema<5,>=4.25.1
|
|
14
|
+
Requires-Dist: mcp<3,>=2.1.1
|
|
15
|
+
Requires-Dist: openai<3,>=2.43.0
|
|
16
|
+
Requires-Dist: pydantic>=2.13.4
|
|
17
|
+
Requires-Dist: python-dotenv>=1.2.2
|
|
18
|
+
Requires-Dist: pyyaml<7,>=6.0.2
|
|
19
|
+
Requires-Dist: textual>=8.2.8
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# MyCode
|
|
23
|
+
|
|
24
|
+
MyCode 是一个使用 Python 实现、面向个人开发者的可扩展终端 Coding Agent。
|
|
25
|
+
|
|
26
|
+
An extensible terminal coding agent built with Python.
|
|
27
|
+
|
|
28
|
+
它以启动命令时的当前目录作为工作区,通过 OpenAI-compatible Chat Completions 模型完成代码理解、文件修改、命令执行、会话管理和受控的 SubAgent 协作。这是一个个人项目,按“能力依赖 + 风险边界”逐步实现,不建议未经审查直接用于生产环境。
|
|
29
|
+
|
|
30
|
+
## Features / 主要能力
|
|
31
|
+
|
|
32
|
+
- Agent Loop 与结构化 Tool Calling
|
|
33
|
+
- 工作区内的文件查找、读取、写入和编辑
|
|
34
|
+
- 受路径边界和风险分级约束的命令执行
|
|
35
|
+
- Permission 与人工确认
|
|
36
|
+
- 上下文预算、历史压缩、会话持久化与跨会话记忆
|
|
37
|
+
- SubAgent 委派:explorer / tester / reviewer
|
|
38
|
+
- 通过 MCP 接入外部工具
|
|
39
|
+
- Skill:可复用的任务流程包
|
|
40
|
+
- CLI 与 Textual 终端界面
|
|
41
|
+
|
|
42
|
+
## Installation / 安装
|
|
43
|
+
|
|
44
|
+
要求:
|
|
45
|
+
|
|
46
|
+
- Python 3.11 或更高版本
|
|
47
|
+
- [uv](https://docs.astral.sh/uv/)
|
|
48
|
+
- 一个支持 OpenAI-compatible Chat Completions 的模型服务及其 API Key
|
|
49
|
+
|
|
50
|
+
使用 uv 安装:
|
|
51
|
+
|
|
52
|
+
```powershell
|
|
53
|
+
uv tool install mycode-coding-agent
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
安装后 `mycode` 可以在任意目录使用。从源码安装见 [Development](#development--开发与测试)。
|
|
57
|
+
|
|
58
|
+
## Quick Start / 快速开始
|
|
59
|
+
|
|
60
|
+
MyCode 以启动命令时的当前目录作为 Agent 工作区,所以先进入你想让 Agent 操作的项目:
|
|
61
|
+
|
|
62
|
+
```powershell
|
|
63
|
+
cd D:\path\to\your-project
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
配置模型连接,这三项必填,取值见 [Configuration](#configuration--配置):
|
|
67
|
+
|
|
68
|
+
```dotenv
|
|
69
|
+
MYCODE_API_KEY=your-api-key
|
|
70
|
+
MYCODE_BASE_URL=https://your-provider.example/v1
|
|
71
|
+
MYCODE_MODEL=your-chat-completions-model
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
启动:
|
|
75
|
+
|
|
76
|
+
```powershell
|
|
77
|
+
mycode agent
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
当前 CLI 没有 `--workspace PATH` 参数,切换工作区需要先进入目标目录再启动。建议只在受信任、并且已经用 Git 管理的项目中运行。
|
|
81
|
+
|
|
82
|
+
## Usage / 常用命令
|
|
83
|
+
|
|
84
|
+
| 命令 | 说明 |
|
|
85
|
+
| -------------------------- | ------------------------------------------------------------------------ |
|
|
86
|
+
| `mycode agent` | 在当前目录启动 coding agent |
|
|
87
|
+
| `mycode chat` | 启动不带 coding tools 的普通模型对话 |
|
|
88
|
+
| `mycode tui` | 启动 Textual 终端界面 |
|
|
89
|
+
| `mycode runtime --jsonl` | 启动机器可消费的 JSONL runtime;stdout 只输出 JSONL,诊断信息写到 stderr |
|
|
90
|
+
| `mycode --help` | 查看命令列表;`mycode <子命令> --help` 查看子命令帮助 |
|
|
91
|
+
|
|
92
|
+
`mycode agent` 的会话选项(三者互斥):
|
|
93
|
+
|
|
94
|
+
- `--new`:跳过菜单,直接创建新会话。
|
|
95
|
+
- `--continue`:跳过菜单,续接当前项目最近使用的会话;没有历史会话时新建。
|
|
96
|
+
- `--resume SESSION_ID`:跳过菜单,续接指定的未删除会话。已永久删除的会话无法恢复。
|
|
97
|
+
|
|
98
|
+
输出选项同样互斥:`--verbose` 显示更完整的运行信息,`--debug` 显示调试级运行信息。
|
|
99
|
+
|
|
100
|
+
不指定会话选项时,如果当前项目已有历史会话,CLI 会显示交互式菜单,可以选择历史会话、新建会话、永久删除会话或退出;没有历史会话时直接新建,不显示空菜单。
|
|
101
|
+
|
|
102
|
+
在 `agent` 和 `tui` 的交互会话里可以使用 slash command:`/help`、`/new`、`/sessions`、`/resume <session_id>`、`/context`、`/compact`、`/exit`(别名 `/quit`)。
|
|
103
|
+
|
|
104
|
+
会话和记忆保存在用户目录下的 `.mycode`,并按工作区路径区分项目,同名目录不会互相覆盖:
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
%USERPROFILE%\.mycode\projects\<workspace-basename>-<12-char-hash>\sessions\<session-id>\
|
|
108
|
+
%USERPROFILE%\.mycode\projects\<workspace-basename>-<12-char-hash>\MEMORY.md
|
|
109
|
+
%USERPROFILE%\.mycode\MEMORY.md
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Configuration / 配置
|
|
113
|
+
|
|
114
|
+
模型连接写在 `.env` 文件中,支持用户级和项目级两级:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
用户级(Windows):%USERPROFILE%\.mycode\.env
|
|
118
|
+
项目级:<workspace>\.mycode\.env
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
逐字段优先级为 `process environment > project > user > defaults`,空字符串不构成有效覆盖。项目级只需要写要覆盖的字段,其余回退到用户级配置;临时覆盖用进程环境变量。项目根目录的 `<workspace>\.env` 不会被读取。
|
|
122
|
+
|
|
123
|
+
Windows PowerShell 首次配置:
|
|
124
|
+
|
|
125
|
+
```powershell
|
|
126
|
+
$mycodeConfigDir = Join-Path $env:USERPROFILE ".mycode"
|
|
127
|
+
$mycodeConfigFile = Join-Path $mycodeConfigDir ".env"
|
|
128
|
+
New-Item -ItemType Directory -Path $mycodeConfigDir -Force | Out-Null
|
|
129
|
+
if (-not (Test-Path $mycodeConfigFile)) {
|
|
130
|
+
Copy-Item .env.example $mycodeConfigFile
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
然后编辑该文件。必填三项:`MYCODE_API_KEY`、`MYCODE_BASE_URL`、`MYCODE_MODEL`。缺少任意一项时 MyCode 会拒绝启动并指出缺少的配置。
|
|
135
|
+
|
|
136
|
+
常用可选项:
|
|
137
|
+
|
|
138
|
+
- `MYCODE_COMPACT_MODEL`、`MYCODE_SUBAGENT_MODEL`:Compact 和 SubAgent 使用的模型,留空时继承 `MYCODE_MODEL`。
|
|
139
|
+
- `LLM_CONTEXT_WINDOW_TOKENS`、`LLM_RESERVED_OUTPUT_TOKENS`、`LLM_CONTEXT_SAFETY_MARGIN_TOKENS`、`LLM_MEMORY_CONTEXT_TOKENS`:上下文预算,需要按模型实际的上下文窗口和输出上限设置。
|
|
140
|
+
- `LLM_STREAM_INCLUDE_USAGE`:要求兼容的流式模型服务返回 token 用量。
|
|
141
|
+
- `LLM_THINKING_ENABLED`、`LLM_REASONING_EFFORT`、`LLM_MAX_OUTPUT_TOKENS`:可选的推理配置,模型服务不支持时保持留空。
|
|
142
|
+
|
|
143
|
+
完整字段和注释见 [`.env.example`](.env.example)。
|
|
144
|
+
|
|
145
|
+
`mycode chat` 没有 workspace 语义,只使用进程环境、用户级配置和默认值。
|
|
146
|
+
|
|
147
|
+
项目级 secret 放在 `<workspace>\.mycode\.env`,该文件已被 `.env` 的 Git ignore 规则排除;不要提交真实 API Key 或 token。
|
|
148
|
+
|
|
149
|
+
## MCP / Skills
|
|
150
|
+
|
|
151
|
+
### MCP
|
|
152
|
+
|
|
153
|
+
MCP 用于把外部工具接入同一个 Agent Loop,支持 `stdio` 和 `streamable_http` 两种 transport,配置分用户级和项目级:
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
用户级:%USERPROFILE%\.mycode\mcp.json
|
|
157
|
+
项目级:<workspace>\.mycode\mcp.json
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"mcpServers": {
|
|
163
|
+
"local": {
|
|
164
|
+
"transport": "stdio",
|
|
165
|
+
"command": "python",
|
|
166
|
+
"args": ["D:\\path\\to\\server.py"],
|
|
167
|
+
"env": {"TOKEN": "${MCP_LOCAL_TOKEN}"}
|
|
168
|
+
},
|
|
169
|
+
"remote": {
|
|
170
|
+
"transport": "streamable_http",
|
|
171
|
+
"url": "https://example.com/mcp",
|
|
172
|
+
"headers": {"Authorization": "Bearer ${MCP_REMOTE_TOKEN}"}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
secret 不写进 `mcp.json`,而是放在 `.mycode\.env` 里用 `${ENV_VAR}` 引用。用户级配置视为你本人的主动配置;项目级 MCP 会在启动时要求一次信任确认,确认前不会建立连接。MCP 工具注册后仍然走 MyCode 的 JSON Schema 校验、Permission 和确认链,与内置工具一致。
|
|
179
|
+
|
|
180
|
+
### Skills
|
|
181
|
+
|
|
182
|
+
Skill 是可复用的任务流程包,由 `SKILL.md` 和可选的参考文件、脚本组成,按 `builtin -> user -> project` 顺序发现,同名时项目级覆盖用户级、用户级覆盖内置。内置 Skill 目前是 `database-recovery`。
|
|
183
|
+
|
|
184
|
+
```text
|
|
185
|
+
用户级:%USERPROFILE%\.mycode\skills\
|
|
186
|
+
项目级:<workspace>\.mycode\skills\
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Safety / 安全说明
|
|
190
|
+
|
|
191
|
+
MyCode 能够修改文件和执行命令,使用前请注意:
|
|
192
|
+
|
|
193
|
+
- 先提交或备份重要修改,并确认当前目录就是目标工作区。
|
|
194
|
+
- 路径和命令策略会允许、拒绝或要求人工确认工具调用,但不能替代系统级沙箱。
|
|
195
|
+
- 命令执行使用结构化参数、不经过 shell;需要人工确认的操作会明确提示。
|
|
196
|
+
- Agent 完成后用 `git status` 和 `git diff` 检查实际改动。
|
|
197
|
+
- MCP Server、文件和网页内容都按不可信外部输入处理,其中的指令不能覆盖 System Prompt、Permission 规则和运行时控制。
|
|
198
|
+
- 不要在源码、测试、提示词或 Git 历史中写入真实密钥。
|
|
199
|
+
|
|
200
|
+
## Development / 开发与测试
|
|
201
|
+
|
|
202
|
+
从源码运行:
|
|
203
|
+
|
|
204
|
+
```powershell
|
|
205
|
+
git clone https://github.com/mmc-cloud/mycode.git
|
|
206
|
+
cd mycode
|
|
207
|
+
uv sync
|
|
208
|
+
uv run mycode agent
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
把本地 checkout 安装成全局命令:
|
|
212
|
+
|
|
213
|
+
```powershell
|
|
214
|
+
uv tool install .
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
运行测试:
|
|
218
|
+
|
|
219
|
+
```powershell
|
|
220
|
+
uv run pytest
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
项目结构:
|
|
224
|
+
|
|
225
|
+
```text
|
|
226
|
+
mycode/ 核心 Agent、CLI/TUI、工具、会话、上下文、MCP、Skill 和 SubAgent 实现
|
|
227
|
+
tests/ 核心测试
|
|
228
|
+
.env.example 用户级或项目级模型配置模板
|
|
229
|
+
pyproject.toml 包信息、依赖、CLI 入口和测试配置
|
|
230
|
+
uv.lock 锁定的依赖版本
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Current Limitations / 当前限制
|
|
234
|
+
|
|
235
|
+
- 主要验证环境是 Windows + PowerShell;macOS/Linux 尚未充分实际验证,目前不作为受支持平台。
|
|
236
|
+
- 需要 Python 3.11 或更高版本。
|
|
237
|
+
- 不同 OpenAI-compatible Provider 对流式 usage、thinking 和 reasoning 字段的支持可能存在差异,协议行为不完全一致。
|
|
238
|
+
- Agent 可以修改文件和执行命令,建议在 Git 管理的项目中运行并检查 diff;输出和工具决策仍需人工审查。
|
|
239
|
+
- MCP 第一版不支持 OAuth、Resources、Prompts、Sampling、热加载或原生 Image/Audio ToolResult。
|
|
240
|
+
- 当前以终端交互为主,不包含 IDE 插件或图形界面。
|
|
241
|
+
|
|
242
|
+
## License
|
|
243
|
+
|
|
244
|
+
This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
mycode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
mycode/cli.py,sha256=_kjQL4nYWAQH4aKv5_g39b-3cGobXXdGu6xGBiWxv3o,27546
|
|
3
|
+
mycode/config.py,sha256=5RaMmK1mQNDpY2A-WnKML1Zqvgx22YINALgOcXZYpDw,10525
|
|
4
|
+
mycode/conversation.py,sha256=IU0d5ZrVcvfuyG08NCwiJNfh518E-o_TeYv7f40x7I4,2348
|
|
5
|
+
mycode/error_handling.py,sha256=3aV-9hfz6SOSgHFV5HN50LX9xhPvbC3Wd5OqYKOaqfM,16269
|
|
6
|
+
mycode/event_format.py,sha256=jhkXVSQ0WDGFgEI-SdJEF-5DlRyhB4oK4WJjwe1AFsk,5228
|
|
7
|
+
mycode/instructions.py,sha256=lblQ3j6J0XktqQRUBrpvyAhuICwkm4waLb6xfLahQQM,8566
|
|
8
|
+
mycode/llm.py,sha256=-IxvOZQNTzXGKZrwoIIgjeFZqcUlhtRn65ottTk106A,28268
|
|
9
|
+
mycode/memory.py,sha256=afpsA2KV2ct2MfMJNMjH1zrUYDRQZf7uAdA7SvyBm3k,17943
|
|
10
|
+
mycode/memory_context.py,sha256=4xbNh3kb6iLhc1v_252SLS4WQuiZ3hS6NgpLLQFVgIU,8096
|
|
11
|
+
mycode/messages.py,sha256=tuDDXTYlZlOPKnfNvGYdU4DBFKYroHgjS6pUH4R1R2Y,2017
|
|
12
|
+
mycode/observability.py,sha256=YZddrgoigWEWl0-MUfgPw3ok5EkkEgT-u-tRmKcTnH4,750
|
|
13
|
+
mycode/permissions.py,sha256=WDZt5qOncf8JBLuwshm4zySD8EV3XLmUfBqSmYFsL9o,7656
|
|
14
|
+
mycode/project.py,sha256=xNwqkHUXVMrxcd3bWDHxg696116q92r7iWSYcDVYzTc,746
|
|
15
|
+
mycode/prompts.py,sha256=9SQ5IDbHQiXHWh3aWvL-saQXu0kvMOyl6LrCDd5cSAM,13734
|
|
16
|
+
mycode/reasoning.py,sha256=cjXiucUWw1NRXwKCyCHQH8F3bUUT0nPK6mZZAeYjeOc,974
|
|
17
|
+
mycode/session.py,sha256=yiCSFI84ca28rRHrRSxmeyG4xnju0p8aFlptHaAtkqg,3077
|
|
18
|
+
mycode/adapters/__init__.py,sha256=T_0hy9T6lqu-WwbHzmXNjcqXug9l2BBv9gxC11_Er_s,461
|
|
19
|
+
mycode/adapters/jsonl.py,sha256=0dNqRsPTdZHTIi6rWrlvVy0xMVbV6Xpnj5yA24tHpos,23494
|
|
20
|
+
mycode/agent/__init__.py,sha256=HaDx8iWzD33MgSaC-m1MQSVjW8vV4Ep-l6mmyd4lu2M,499
|
|
21
|
+
mycode/agent/events.py,sha256=ArGvkrwHu8Bugd33oUK3URiDon4ZAOXzHuDsVlwEgvg,2873
|
|
22
|
+
mycode/agent/outcome.py,sha256=b2dNzpll6OS9H0QhLp7VCnjeDh_It9s7zS4vD1INYfM,3315
|
|
23
|
+
mycode/agent/progress.py,sha256=msQBqGHTMl-VnKVPvD6bS2MoRiSSa-EgCRz73k_Wl1k,12584
|
|
24
|
+
mycode/agent/runner.py,sha256=5iCb8rtYqv-cT-aS4f1Dvi7X0mkqJbZbf7qk2bzQLQg,57364
|
|
25
|
+
mycode/application/__init__.py,sha256=ISkWMq6wCRWGznd1fE54NUO3JAH66vHU3iOBcrCE-Ws,983
|
|
26
|
+
mycode/application/agent_session.py,sha256=_4A5tz9FYuvt_AvMy9Ac2f4B5hfXDwAFak070ULpvb4,13848
|
|
27
|
+
mycode/application/events.py,sha256=rCyneEu944qstCiuF_gsnUet3xeXBuux3t5q2D3Nuqo,2044
|
|
28
|
+
mycode/application/runtime.py,sha256=l0bo2E8TjmUeTPRh_qpJIG6HETdqdw-ljK6kOmZpMCg,7804
|
|
29
|
+
mycode/application/sessions.py,sha256=SFQVupoGf9j-9vFxGbeq5IZvqXlXm61Vlx5FAGQxalU,5337
|
|
30
|
+
mycode/context/__init__.py,sha256=nxCSW6TQ72lJ1Ptsjtd5blvVFee9QTzENd_BUUYyujs,77
|
|
31
|
+
mycode/context/artifacts.py,sha256=3MSn1mMtmwdofQCAeFd1xPP_bLWSyVP91pFWjNrykRY,23196
|
|
32
|
+
mycode/context/budget.py,sha256=Ei_c9qOJien-8szMZe-rfawjPsQfA5teYvz9oHeaW78,28121
|
|
33
|
+
mycode/context/builder.py,sha256=aQir0cnwRLskRGBynzDp9Dkfw8AIkWV7b4oJu139lgs,4268
|
|
34
|
+
mycode/context/compact.py,sha256=KVeoWvnkNJd4_hjr3jLMAgq2thUrdcT2PwL1q8bdgUs,28137
|
|
35
|
+
mycode/context/tool_result_format.py,sha256=qqkq04gXShbGyMlGuUZ6JQwMrhy-_ll72H6YROmMFRE,6353
|
|
36
|
+
mycode/context/tool_result_retention.py,sha256=DlLdzOlH2cig01XnKWBj6jk7MHcQk7IhbBGWqn8BCyQ,11478
|
|
37
|
+
mycode/mcp/__init__.py,sha256=SsLxlqJ-Um6aFlWo4o741-XCKLb5Za_hERXI06unfdM,1023
|
|
38
|
+
mycode/mcp/client.py,sha256=HJu0Ih_3z76mWWmjCCi_GYDwbUqAWw3BmJ6dOEtaelk,1617
|
|
39
|
+
mycode/mcp/config.py,sha256=7WhxNHnwTrZlquOh4J8DXeDe0iCAk5Q30f69q1TSsjw,6566
|
|
40
|
+
mycode/mcp/errors.py,sha256=M_M-4i9zcV2W0qNjrzcJVtMDf9-apLJ8fZzaXk4Eoxo,9548
|
|
41
|
+
mycode/mcp/manager.py,sha256=_v8rtXADCkWym0h2nnYxlFF5gy8L825y8ztZ_1OrtIA,12696
|
|
42
|
+
mycode/mcp/models.py,sha256=SPWQDHEMEThkeuY34lMBhNuFIIsJmvI6QqWjbV9L6Uo,511
|
|
43
|
+
mycode/mcp/result_adapter.py,sha256=xMLzIby_jFyvaF-u-v6qYpBbGHM3txmT_CPFrKKurN8,2434
|
|
44
|
+
mycode/mcp/tool_adapter.py,sha256=IdzWtAga_rQAJlVEIoj-bHXAincEc0hBq4Qbnc25oLA,5519
|
|
45
|
+
mycode/mcp/trust.py,sha256=YfcCovOj-BYAz61LmjdARJIXJgaK9AG_3ou8UfXGJ-8,10027
|
|
46
|
+
mycode/persistence/__init__.py,sha256=mbBQ-pdOmJtE0KDN2_8NxBKfeZNpFTAUKDnjeII5olQ,53
|
|
47
|
+
mycode/persistence/filesystem.py,sha256=6pomxQc7LnPT3dzWcHFNam-_kcclfacD-T6PMA4wcUk,9997
|
|
48
|
+
mycode/persistence/project_storage.py,sha256=mlyQ8d5FQD_okFx0roXN-hYf_ZjXwEqns7tzh6cC824,7617
|
|
49
|
+
mycode/persistence/session_lock.py,sha256=_wpqCWzU3E1lsP2S91q_3qWQkOIhyXLj3SnLZ3Edpno,3843
|
|
50
|
+
mycode/persistence/session_store.py,sha256=ZTUnGwnXl1Pm5Ib6hL9tWb0hcTgXPQtRn_SWQ6poIaU,20634
|
|
51
|
+
mycode/presentation/__init__.py,sha256=Z0ZU2Bc6lGJWWLVvg-bZVfQ7OrF7UKJzBWYnUp2sW30,55
|
|
52
|
+
mycode/presentation/command_format.py,sha256=hQtivSDf3h1Z65qvIzUDKtKDOrtIlC7qqTixXp4DZ90,3002
|
|
53
|
+
mycode/presentation/commands.py,sha256=8s4ak85pDXVC9iuF_bc45NBL9raO93jEsGS_VHUP28o,2611
|
|
54
|
+
mycode/presentation/cli/__init__.py,sha256=ga3CKbfzK0j9_eXoJrXh9Cj1BQ8KA3zV296uPvBMsSc,501
|
|
55
|
+
mycode/presentation/cli/confirmer.py,sha256=ytCtKuXLS6YYwPhEtGsVD_oenLfWorLoqUWccMzA1Yk,4576
|
|
56
|
+
mycode/presentation/cli/mcp_trust.py,sha256=ehluiyv6OCMUkc-H4zdpU6WtySlUgjYvI0--qzl3EkI,2367
|
|
57
|
+
mycode/presentation/cli/presenter.py,sha256=SrQHps4nppici9UEHzRTKuWYa4aqhWq18macEy_QgKI,12718
|
|
58
|
+
mycode/presentation/cli/session_menu.py,sha256=p6_TudAS4FShpMsgAUEe4O2q4ynRD0tKc1SP8d_S_CI,4793
|
|
59
|
+
mycode/presentation/cli/subagent_observer.py,sha256=lH8B2g5-loGh7Gag-ITRWwebWVylTfLeL8uV9zG8jSg,4406
|
|
60
|
+
mycode/presentation/tui/__init__.py,sha256=yAxQ2oSazAefjYLkvAiEdCho4LVTnoH3qHjNFId93FY,235
|
|
61
|
+
mycode/presentation/tui/app.py,sha256=Z04W9-4T_8YgM2lXG_Kr_7GrXkPyCytrTdgt2u7gPCM,46623
|
|
62
|
+
mycode/presentation/tui/interactions.py,sha256=wr0KQdDYQJhXUq-fylTDgBY9doKX4VvFzDhI-Pway0s,7645
|
|
63
|
+
mycode/presentation/tui/presenter.py,sha256=5beoLiyqmva6NEjrpDji3Ydv_gdFCyrkLW0MKBRx-lo,9584
|
|
64
|
+
mycode/presentation/tui/screens.py,sha256=q5yQDRK207LRJJGdKF3YoOaAQOK4Jpx9HHNxB86lklY,10241
|
|
65
|
+
mycode/presentation/tui/widgets.py,sha256=bICiu3W8Z278MtNVMiklFnwVeZZDFj-f86g2JSaYA_c,6974
|
|
66
|
+
mycode/skills/__init__.py,sha256=IugtJqDJPyvu-0-rGfl0PyRVYWAaHR4WFSbpddyysu4,540
|
|
67
|
+
mycode/skills/registry.py,sha256=YCRgyKHQCueV7l9m0f24hzKv-ZjqhNMrBnfn7DPSRXA,10687
|
|
68
|
+
mycode/skills/state.py,sha256=_4FIsuuqKZ1LtIbzUh0fQwZKnf7EdmhFCLgtj-OVXJg,1872
|
|
69
|
+
mycode/skills/builtin/database-recovery/SKILL.md,sha256=pvKUw4YPj2vA6Lp6STZsrUZsQD22f8s-vVvviYw_GpY,4886
|
|
70
|
+
mycode/skills/builtin/database-recovery/references/sqlite.md,sha256=8GIFjYOKXUVxHVlbTZL3ykM7-DF67FM2Ylf8Ld5gmvo,6123
|
|
71
|
+
mycode/subagents/__init__.py,sha256=pLul_1Z7mXjK7n_KOVVH2T6Zk6qhcGq1qPaqQ9qg2_A,66
|
|
72
|
+
mycode/subagents/audit.py,sha256=5JibC4ZTGknuXAfk1nENWSnVr86pnh6ZSVb0j4oN91M,7193
|
|
73
|
+
mycode/subagents/concurrency.py,sha256=NQC0yZdm8e1g19tilHkBWdqb_2M7hB7HEzBQfhphNcY,4179
|
|
74
|
+
mycode/subagents/contracts.py,sha256=JychSRxrMKnr3hsvJC24bJXii_6KYQd8tkgK59cRR6I,15331
|
|
75
|
+
mycode/subagents/delegate.py,sha256=utMpHKMgzOCAoWXsZtcro4FwlGSTQ21CA9ac_oWKcio,3089
|
|
76
|
+
mycode/subagents/delegation.py,sha256=AryHEh5JCcgXZel-VqmmYspGqKy9s7ea9upmxN3Kokg,4534
|
|
77
|
+
mycode/subagents/lifecycle.py,sha256=6n01WaCeFuhbwyVnjSbELD8_G9ODISmWbiEwiDTOryQ,2574
|
|
78
|
+
mycode/subagents/limits.py,sha256=BLx-RpwwIpZ_jz14MA9J33P7sLUFyrC71iPC_iggAIU,249
|
|
79
|
+
mycode/subagents/observability.py,sha256=2PzM_w7uyXdAGyOr_-5wtrOWZix6M_cnmDOLAUaJHqI,3797
|
|
80
|
+
mycode/subagents/persistence.py,sha256=6GDv__fgzJq8nl9e7gzz2leJQkIOr7B5m5z4fmYl_24,6335
|
|
81
|
+
mycode/subagents/profiles.py,sha256=vffxokW9wr4L8eQMPD1p1UNJdAjnW6YqJqZYV1f8VZU,7619
|
|
82
|
+
mycode/subagents/prompts.py,sha256=mI73qAj8daHcZhIdUSlGtiFbUMQG8S9gRsfTB0isDVE,2599
|
|
83
|
+
mycode/subagents/results.py,sha256=OOlDzw0Xe9SCx5hRqPStey3kWqGqD2TpjKx_g5fsa7s,5527
|
|
84
|
+
mycode/subagents/runtime.py,sha256=DlkUFxbQJr_nQz2t1C9_axh5LpdkJ0pM3RrRcDBaq_Y,19128
|
|
85
|
+
mycode/subagents/snapshots.py,sha256=XuOUWw20aGMgYfwvQ0Ydrkl9FCwKlbdZXYSHxvHv6Ak,6004
|
|
86
|
+
mycode/subagents/tool_batch.py,sha256=AB1koY0Ls2q3VNshBEbq3JN3416T3Ht3xFWLq9n6LuI,9174
|
|
87
|
+
mycode/tools/__init__.py,sha256=dY1gMdQKJoSbFXCZbxFq1xSFDVmmeaw_Zpa0HQ3GpQI,2419
|
|
88
|
+
mycode/tools/base.py,sha256=8p07vs0_6JaehsaI2rTQUkJrLUHiLpjWQwz9yQh2EwM,6532
|
|
89
|
+
mycode/tools/bounds.py,sha256=hUltsuHr2l7Jw4PBHdDcpvZ0Ti8-jKhsmkTNSGMvF70,423
|
|
90
|
+
mycode/tools/command_executor.py,sha256=7Haq9bq1faNJugwi_Fy4wM07SvviGItf-IVd3_YWxh8,5063
|
|
91
|
+
mycode/tools/command_output.py,sha256=jDbDnGXMPqVBtGCbA9oYyHV9rYAsB3hfOv9l71gx8dI,4461
|
|
92
|
+
mycode/tools/command_risk.py,sha256=rmiVyf3qVzWvdjWDQKISJLv6TBvIB9_x9ArkBY66tTs,16910
|
|
93
|
+
mycode/tools/defaults.py,sha256=vwny4mbmSBfn5A5dvgmfyTRwrw8RfXrvb_31AycvUK8,1711
|
|
94
|
+
mycode/tools/edit_file.py,sha256=sDSG6XU6mRF_wOQUjjR4WCEk0j2No-rvumNEOJsvZUk,16615
|
|
95
|
+
mycode/tools/file_mutation.py,sha256=OEnFCv0C5Md2MKSXLkrK2dhvuRh6CriVk50otSgB5cw,825
|
|
96
|
+
mycode/tools/glob.py,sha256=-yNggcUHbQhIuH6GtBqsqvMQ5x23lDPaLR8s9ozaSzA,7849
|
|
97
|
+
mycode/tools/grep.py,sha256=rOa83skF-sBpY41LUFrHEMWRidAypgb5Lr94n5v_C0Q,10146
|
|
98
|
+
mycode/tools/ignore.py,sha256=EADItLUsY7QfRdwiHTM_7RU7zkuTZaouUSuZ8tg2P2o,2473
|
|
99
|
+
mycode/tools/inspect_changes.py,sha256=uWDtZ-rAx4-rr34Qt_nEheFQfKmepMMLe10smkXEDE4,10050
|
|
100
|
+
mycode/tools/load_skill.py,sha256=70Ygwf1arVWTYnsTcck7XG_hdKRl89GxdZvnS_Ohhpw,3394
|
|
101
|
+
mycode/tools/memory.py,sha256=oI-MJMBarMQTWy2qmpBiPmrRzq_YOydNwTSUjkT87iU,8795
|
|
102
|
+
mycode/tools/path_permissions.py,sha256=DP3SPtF4LOoRu_WTSOTuMYoYFGKy_EeHYFqUflRudS8,2594
|
|
103
|
+
mycode/tools/patterns.py,sha256=WoO1Kt0s-UBvg_JVUXbqUu9jzbFFW5Gtzz0IDcUIb1E,1260
|
|
104
|
+
mycode/tools/permission_metadata.py,sha256=UOT5Ub54oZOQa5gLeSmzSEwdK4PqEi-BL0yWvbjof-8,731
|
|
105
|
+
mycode/tools/process_tree.py,sha256=b_TNAcahjoGX4V0MGYj09091fNA6feXhTG-X9Yr86-Y,5603
|
|
106
|
+
mycode/tools/read_file.py,sha256=Bn6FpvVAn6n3jxB3unoxI1kgkiaOQVckZrCoXBurlLU,7836
|
|
107
|
+
mycode/tools/read_skill_resource.py,sha256=Cf3Sfa4ccQZgP-lt2dpDisXXjS53DxW-rZZKX6WqAaY,3497
|
|
108
|
+
mycode/tools/registry.py,sha256=7QzcODIfcZxARzEFyJkx-5EzqBrdwcOgHTMrPPLwx2w,9179
|
|
109
|
+
mycode/tools/run_command.py,sha256=mY_K1J9TfAJf-nEg-YICQmGsYzFUFjkjx7Yoi1VMSdU,8556
|
|
110
|
+
mycode/tools/run_skill_script.py,sha256=oyi2DpnpHt3WGJNJwEpwTfMNBa-ntyQ8ikGg6j71Oo8,7951
|
|
111
|
+
mycode/tools/run_validation.py,sha256=NupGOypt6TbHCEh2j8PUhpTDAlo374GhkaXC7jwRTOs,3962
|
|
112
|
+
mycode/tools/submit_result.py,sha256=6XweCmPjjEqWVXd9jIO8huaXs1WbmHCJzj4_8uRSRRQ,3538
|
|
113
|
+
mycode/tools/text.py,sha256=VIQxDLmnck5t7aDfJkDhXd6htUBm_jcgikDA4LNSnuI,386
|
|
114
|
+
mycode/tools/validation_command.py,sha256=7o6bsL4ikqWxsNHoMSq93Brzod0FC7pYdDbqQsXhKRw,13594
|
|
115
|
+
mycode/tools/workspace.py,sha256=4z08_X08HP5agoGNy3FMNLgUvkOFFq6-qOZVGaFC1Dc,1020
|
|
116
|
+
mycode/tools/write_file.py,sha256=WLsp9Vw0ClU3v0nyvvXYIed-muVEEkX5C9dqecG7XgE,5579
|
|
117
|
+
mycode_coding_agent-0.1.0.dist-info/METADATA,sha256=G10tvitBLEUomcjTMWK6ZUJtBcmWXXfhvN71nmzFvyw,9860
|
|
118
|
+
mycode_coding_agent-0.1.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
119
|
+
mycode_coding_agent-0.1.0.dist-info/entry_points.txt,sha256=cyqOuUgvKztzXBIZK2vRW5rFGv62NozRu0NU1ZJJ_BI,43
|
|
120
|
+
mycode_coding_agent-0.1.0.dist-info/licenses/LICENSE,sha256=IsYa7ZpJ-veYJWYIpD7crC687NlPDsjIfI1A3ii3swg,1066
|
|
121
|
+
mycode_coding_agent-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 mmc-cloud
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|