mosscode 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.
- mosscode/__init__.py +10 -0
- mosscode/__main__.py +3 -0
- mosscode/agent.py +486 -0
- mosscode/agents/__init__.py +249 -0
- mosscode/agents/builtin/explore.md +16 -0
- mosscode/agents/builtin/general.md +12 -0
- mosscode/agents/builtin/plan.md +16 -0
- mosscode/agents/runtime.py +685 -0
- mosscode/agents/tasks.py +193 -0
- mosscode/appearance.py +184 -0
- mosscode/builtin_commands.py +1363 -0
- mosscode/cli.py +547 -0
- mosscode/commands.py +254 -0
- mosscode/compaction.py +259 -0
- mosscode/config.py +337 -0
- mosscode/context.py +102 -0
- mosscode/conversation.py +1046 -0
- mosscode/coordinator.py +54 -0
- mosscode/doctor.py +303 -0
- mosscode/hooks/__init__.py +22 -0
- mosscode/hooks/actions.py +151 -0
- mosscode/hooks/conditions.py +170 -0
- mosscode/hooks/config.py +404 -0
- mosscode/hooks/engine.py +401 -0
- mosscode/hooks/events.py +48 -0
- mosscode/launcher.py +177 -0
- mosscode/mcp_client.py +460 -0
- mosscode/mcp_config.py +216 -0
- mosscode/member_ui.py +289 -0
- mosscode/memory.py +291 -0
- mosscode/memory_extract.py +245 -0
- mosscode/messages.py +216 -0
- mosscode/paths.py +31 -0
- mosscode/permissions.py +733 -0
- mosscode/prompts.py +483 -0
- mosscode/providers.py +587 -0
- mosscode/scrollback.py +106 -0
- mosscode/security.py +282 -0
- mosscode/serialization.py +121 -0
- mosscode/session.py +563 -0
- mosscode/setup.py +248 -0
- mosscode/skills/__init__.py +455 -0
- mosscode/skills/builtin/commit/SKILL.md +15 -0
- mosscode/skills/builtin/review/SKILL.md +15 -0
- mosscode/skills/builtin/test/SKILL.md +13 -0
- mosscode/skills/builtin/test/scripts/detect.py +96 -0
- mosscode/skills/builtin/test/tool.json +9 -0
- mosscode/teams/__init__.py +216 -0
- mosscode/teams/backends.py +259 -0
- mosscode/teams/board.py +230 -0
- mosscode/teams/lock.py +173 -0
- mosscode/teams/mailbox.py +172 -0
- mosscode/teams/member.py +427 -0
- mosscode/teams/merge.py +207 -0
- mosscode/teams/pane.py +20 -0
- mosscode/teams/pane_app.py +167 -0
- mosscode/teams/process.py +371 -0
- mosscode/teams/runtime.py +1355 -0
- mosscode/teams/view.py +182 -0
- mosscode/tool_budget.py +86 -0
- mosscode/tools/__init__.py +38 -0
- mosscode/tools/agent.py +127 -0
- mosscode/tools/base.py +384 -0
- mosscode/tools/diffing.py +16 -0
- mosscode/tools/execution.py +99 -0
- mosscode/tools/files.py +287 -0
- mosscode/tools/memory.py +65 -0
- mosscode/tools/plan.py +30 -0
- mosscode/tools/process.py +216 -0
- mosscode/tools/search.py +229 -0
- mosscode/tools/search_worker.py +243 -0
- mosscode/tools/shell.py +121 -0
- mosscode/tools/skill.py +118 -0
- mosscode/tools/team.py +447 -0
- mosscode/tools/windows_job.py +75 -0
- mosscode/tui.py +2325 -0
- mosscode/usage.py +68 -0
- mosscode/windows_inline.py +148 -0
- mosscode/worktree/__init__.py +29 -0
- mosscode/worktree/changes.py +59 -0
- mosscode/worktree/git.py +125 -0
- mosscode/worktree/manager.py +462 -0
- mosscode/worktree/meta.py +82 -0
- mosscode/worktree/names.py +52 -0
- mosscode/worktree/setup.py +119 -0
- mosscode-0.1.0.dist-info/METADATA +92 -0
- mosscode-0.1.0.dist-info/RECORD +91 -0
- mosscode-0.1.0.dist-info/WHEEL +5 -0
- mosscode-0.1.0.dist-info/entry_points.txt +3 -0
- mosscode-0.1.0.dist-info/licenses/LICENSE +21 -0
- mosscode-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"""Make a fresh worktree usable. Every step is best effort; failures become warnings."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
import shutil
|
|
7
|
+
from pathlib import Path, PurePosixPath
|
|
8
|
+
|
|
9
|
+
from . import git
|
|
10
|
+
from .git import WorktreeError
|
|
11
|
+
|
|
12
|
+
# MossCode's own local files; nothing with secrets unless .worktreeinclude lists it.
|
|
13
|
+
LOCAL_FILES = (".mosscode/permissions.local.yaml", ".mosscode/hooks.local.yaml")
|
|
14
|
+
INCLUDE_FILE = ".worktreeinclude"
|
|
15
|
+
WORKTREES = ".mosscode/worktrees/"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def copy_local(top: Path, worktree: Path, project: str, warnings: list[str]) -> list[str]:
|
|
19
|
+
"""Relative to the project directory (MossCode may run in a subdirectory of the repository)."""
|
|
20
|
+
copied = []
|
|
21
|
+
for name in LOCAL_FILES:
|
|
22
|
+
relative = str(PurePosixPath(project) / name) if project else name
|
|
23
|
+
if _copy(top / relative, worktree / relative, relative, warnings):
|
|
24
|
+
copied.append(relative)
|
|
25
|
+
return copied
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _copy(source: Path, target: Path, label: str, warnings: list[str]) -> bool:
|
|
29
|
+
if not source.is_file() or target.exists() or target.is_symlink():
|
|
30
|
+
return False
|
|
31
|
+
try:
|
|
32
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
33
|
+
shutil.copy2(source, target)
|
|
34
|
+
return True
|
|
35
|
+
except OSError as exc:
|
|
36
|
+
warnings.append(f"未能复制 {label}:{exc.strerror or exc}")
|
|
37
|
+
return False
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _junction(source: Path, target: Path) -> None:
|
|
41
|
+
import _winapi
|
|
42
|
+
|
|
43
|
+
_winapi.CreateJunction(str(source), str(target))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def create_links(top: Path, worktree: Path, links, warnings: list[str]) -> list[str]:
|
|
47
|
+
"""Symbolic link first; a directory falls back to a junction where Windows refuses the privilege."""
|
|
48
|
+
made = []
|
|
49
|
+
for relative in links:
|
|
50
|
+
source, target = top / relative, worktree / relative
|
|
51
|
+
if not source.exists() or target.exists() or target.is_symlink():
|
|
52
|
+
continue
|
|
53
|
+
try:
|
|
54
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
55
|
+
os.symlink(source, target, target_is_directory=source.is_dir())
|
|
56
|
+
except OSError as exc:
|
|
57
|
+
if os.name == "nt" and getattr(exc, "winerror", None) == 1314 and source.is_dir():
|
|
58
|
+
try:
|
|
59
|
+
_junction(source, target)
|
|
60
|
+
except OSError as inner:
|
|
61
|
+
warnings.append(f"未能链接 {relative}:{inner.strerror or inner}")
|
|
62
|
+
continue
|
|
63
|
+
else:
|
|
64
|
+
reason = (
|
|
65
|
+
"Windows 上创建文件的符号链接需要特权"
|
|
66
|
+
if getattr(exc, "winerror", None) == 1314
|
|
67
|
+
else (exc.strerror or str(exc))
|
|
68
|
+
)
|
|
69
|
+
warnings.append(f"未能链接 {relative}:{reason}")
|
|
70
|
+
continue
|
|
71
|
+
made.append(relative)
|
|
72
|
+
return made
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def unlink(path: Path) -> None:
|
|
76
|
+
"""Remove a link itself, never what it points to."""
|
|
77
|
+
try:
|
|
78
|
+
os.unlink(path)
|
|
79
|
+
except (IsADirectoryError, PermissionError):
|
|
80
|
+
os.rmdir(path) # A junction or a directory symlink on Windows.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def is_link(path: Path) -> bool:
|
|
84
|
+
return path.is_symlink() or path.is_junction()
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def copy_included(top: Path, worktree: Path, skip, warnings: list[str]) -> list[str]:
|
|
88
|
+
"""Git itself matches the gitignore-style patterns of .worktreeinclude against untracked files."""
|
|
89
|
+
include = top / INCLUDE_FILE
|
|
90
|
+
if not include.is_file():
|
|
91
|
+
return []
|
|
92
|
+
try:
|
|
93
|
+
listed = git.run_git(
|
|
94
|
+
[
|
|
95
|
+
"ls-files",
|
|
96
|
+
"--others",
|
|
97
|
+
"--ignored",
|
|
98
|
+
f"--exclude-from={include}",
|
|
99
|
+
"--",
|
|
100
|
+
".",
|
|
101
|
+
f":(exclude){WORKTREES.rstrip('/')}",
|
|
102
|
+
],
|
|
103
|
+
top,
|
|
104
|
+
)
|
|
105
|
+
except WorktreeError as exc:
|
|
106
|
+
warnings.append(f"未能读取 {INCLUDE_FILE} 匹配的文件:{exc}")
|
|
107
|
+
return []
|
|
108
|
+
if listed.returncode != 0:
|
|
109
|
+
warnings.append(f"未能读取 {INCLUDE_FILE} 匹配的文件:{listed.stderr.strip()[:200]}")
|
|
110
|
+
return []
|
|
111
|
+
skip = tuple(item.rstrip("/") + "/" for item in skip)
|
|
112
|
+
copied = []
|
|
113
|
+
for relative in listed.stdout.splitlines():
|
|
114
|
+
relative = relative.strip()
|
|
115
|
+
if not relative or relative.startswith(WORKTREES) or (relative + "/").startswith(skip):
|
|
116
|
+
continue
|
|
117
|
+
if _copy(top / relative, worktree / relative, relative, warnings):
|
|
118
|
+
copied.append(relative)
|
|
119
|
+
return copied
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mosscode
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A terminal coding agent: tools, permissions, MCP, skills, hooks, sub-agents and agent teams.
|
|
5
|
+
Author: yzd11
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/yzd11/mosscode
|
|
8
|
+
Project-URL: Source, https://github.com/yzd11/mosscode
|
|
9
|
+
Project-URL: Issues, https://github.com/yzd11/mosscode/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/yzd11/mosscode/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: coding-agent,ai,llm,terminal,cli,mcp,anthropic,openai
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Operating System :: MacOS
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
|
+
Classifier: Topic :: Software Development
|
|
23
|
+
Requires-Python: >=3.12
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: anthropic<2,>=1.12
|
|
27
|
+
Requires-Dist: openai<4,>=3.26
|
|
28
|
+
Requires-Dist: textual<9,>=8.2
|
|
29
|
+
Requires-Dist: PyYAML<7,>=6.0
|
|
30
|
+
Requires-Dist: pydantic<3,>=2.13
|
|
31
|
+
Requires-Dist: mcp<1.31,>=1.30
|
|
32
|
+
Requires-Dist: jsonschema<5,>=4.23
|
|
33
|
+
Requires-Dist: httpx<1,>=0.27
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest-asyncio>=1; extra == "dev"
|
|
37
|
+
Requires-Dist: httpx2<3,>=2; extra == "dev"
|
|
38
|
+
Requires-Dist: ruff==0.17.3; extra == "dev"
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
|
|
41
|
+
# MossCode
|
|
42
|
+
|
|
43
|
+
终端里的 coding agent:读写文件、运行命令、搜索代码,按权限档位请你确认后执行。支持 Anthropic Messages、OpenAI Responses 和 Chat Completions 三种协议,可以接入 MCP 工具、Skill、Hook、子 Agent 和 Agent 团队。
|
|
44
|
+
|
|
45
|
+
## 安装
|
|
46
|
+
|
|
47
|
+
需要 Python 3.12 或更高版本。推荐用 [uv](https://docs.astral.sh/uv/) 或 [pipx](https://pipx.pypa.io/) 安装成独立的命令:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
uv tool install mosscode
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
或
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
pipx install mosscode
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
升级用 `uv tool upgrade mosscode`(或 `pipx upgrade mosscode`)。安装后得到 `moss` 和 `mosscode` 两个相同的命令。
|
|
60
|
+
|
|
61
|
+
## 第一次运行
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
moss
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
找不到配置时,`moss` 在终端里逐项询问协议、服务地址、模型和凭据,写入 `~/.mosscode/config.yaml` 后进入界面。凭据推荐放在环境变量中,配置里只写变量名。`moss doctor` 检查安装、配置和依赖工具,不发送请求。
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
moss "解释这个项目的入口" # 启动后立即发送
|
|
71
|
+
moss -c # 恢复本项目最近的会话
|
|
72
|
+
moss -p "列出 src 下的模块" # 无界面模式,运行一个任务后退出
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 功能
|
|
76
|
+
|
|
77
|
+
- 本地工具:读、写、编辑、命令、glob、grep;相邻的只读调用并发执行。
|
|
78
|
+
- 四个权限档位与分层规则,危险命令分级确认,只读的计划模式。
|
|
79
|
+
- MCP 外部工具、Skill、生命周期 Hook。
|
|
80
|
+
- 子 Agent、后台任务、git 工作树隔离和 Agent 团队。
|
|
81
|
+
- 上下文自动压缩、会话存档与恢复、记忆笔记、项目指令 `AGENTS.md`。
|
|
82
|
+
|
|
83
|
+
支持 Windows、Linux 和 macOS。搜索优先使用 PATH 中的 [ripgrep](https://github.com/BurntSushi/ripgrep),没有时退回内置实现。
|
|
84
|
+
|
|
85
|
+
## 文档
|
|
86
|
+
|
|
87
|
+
- [项目主页与完整说明](https://github.com/yzd11/mosscode)
|
|
88
|
+
- [参考文档](https://github.com/yzd11/mosscode/tree/main/docs/reference)
|
|
89
|
+
- [更新日志](https://github.com/yzd11/mosscode/blob/main/CHANGELOG.md)
|
|
90
|
+
- [问题反馈](https://github.com/yzd11/mosscode/issues)
|
|
91
|
+
|
|
92
|
+
MIT 许可证。
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
mosscode/__init__.py,sha256=JOWJQK4eQv6XcfqPtnKLBPjCIx3fVer_18i8TJksiJA,333
|
|
2
|
+
mosscode/__main__.py,sha256=s4DEeuFooeuagsxeZxDmhHHRbEKF9j1dIwaIZrz5GgI,35
|
|
3
|
+
mosscode/agent.py,sha256=o9djhM6LVuzUULBT8C5HyxB0xdrZSALbu4enGQ-U4w0,22915
|
|
4
|
+
mosscode/appearance.py,sha256=0q90OkelIjGU3AJqfPbqNgrwxqDWJkMbCP73grTPbtk,6585
|
|
5
|
+
mosscode/builtin_commands.py,sha256=nsuNx2Ssyt520dooUnkah2PSCrAfN_nY5_8_Llno6Hg,54940
|
|
6
|
+
mosscode/cli.py,sha256=L6yQOm8B8pjGDjIAonUa72XsWJ6W8G5qBV7b0scABPk,22533
|
|
7
|
+
mosscode/commands.py,sha256=ooUv9plfmXfxsu4odvNdcgccBpJaNV3Vucf3RyvVy6g,10528
|
|
8
|
+
mosscode/compaction.py,sha256=nZi-P79ucJ-RtDvKXAFZTbSy1ZWlTcw-XvHhf7I7GHw,11480
|
|
9
|
+
mosscode/config.py,sha256=FHEip3eszJlrCueCL8dxQTXaLmdWcRSnP7HycXSJlRU,15420
|
|
10
|
+
mosscode/context.py,sha256=Mx_M8AB6s9TuXyzNWrhq3gCzLwygG29Q7LF0iR_43v4,3987
|
|
11
|
+
mosscode/conversation.py,sha256=0MUGJp44-HIjsGpNHFtylsrq0RLVN-bQm5Yx8MbbueE,47976
|
|
12
|
+
mosscode/coordinator.py,sha256=cD2kotCJXZV8Y0VFbLdXA8UgRmFQ9gQHkwHB7p4t7l8,2830
|
|
13
|
+
mosscode/doctor.py,sha256=osCjam8HtRGOND_mXCJgUTO3nwHQsspc-4whulzR5BI,11439
|
|
14
|
+
mosscode/launcher.py,sha256=NnT4b0FQS8cs_w32pDD09AW4HBwQI3NS6O_v31wGV5g,7425
|
|
15
|
+
mosscode/mcp_client.py,sha256=M433865nZK1X-LIMxxWYVJFkakXwsnzI5_3yrE2hqvM,19971
|
|
16
|
+
mosscode/mcp_config.py,sha256=1pqY5_0SoQdxvpEkHzt3Fkorm8LkOmYonDXRUDrk_jY,9704
|
|
17
|
+
mosscode/member_ui.py,sha256=Fu4MbWkwQeJ5DRNiJCvLSPazo-LPhCL0hftXa5oEH_w,10879
|
|
18
|
+
mosscode/memory.py,sha256=8sG2TLPIU1oV3BbkaiB1qR6KtTX9VqbyUXh8GzZm6aQ,13211
|
|
19
|
+
mosscode/memory_extract.py,sha256=5AJNziVC1sCqwIzvWECWYPDheHcLcm8nZf6xj8Xx1UQ,10666
|
|
20
|
+
mosscode/messages.py,sha256=YL8jzNfLUiTMZO4SLmfwnbiO0pKPKRHtzvAEAXec2Oo,5328
|
|
21
|
+
mosscode/paths.py,sha256=uMWw02JcgDmxGCt5tqhL2NZfV39sJZwf8EBknkZkZY8,1006
|
|
22
|
+
mosscode/permissions.py,sha256=SJBaFXP3KXR5MKDzCyMsub16hO5yl7o0k7WztGmOgt4,34285
|
|
23
|
+
mosscode/prompts.py,sha256=CXyrI_9JFVvbDTfrUhf6m48ZmJuXs94MKKSFRPvwXkE,20594
|
|
24
|
+
mosscode/providers.py,sha256=OcuSQW_lnVdFceNd0Ut_iT3F855IMEd1Pj6h6bq8BAo,27308
|
|
25
|
+
mosscode/scrollback.py,sha256=eKByzbFdoySrOwDoYoBYjpaQTiDVnomfYaPr1hvyr4Q,3721
|
|
26
|
+
mosscode/security.py,sha256=S4dKn8cuB4XpNWKbAUiaf_NCtfZTVfCSz9eb_dxHJ0M,9779
|
|
27
|
+
mosscode/serialization.py,sha256=zMRQFe-1DOnct5Kw1fnjZLg60z_FuIxyyLg47PML_BI,4290
|
|
28
|
+
mosscode/session.py,sha256=lw1_3n0sg91emcXamDTOI2wPYiJPwxUxuAitgd7uhYs,20458
|
|
29
|
+
mosscode/setup.py,sha256=ghVm72awMZrWyaM37MMcGDT7-Vc6dGGySwpTHh3LdBo,10529
|
|
30
|
+
mosscode/tool_budget.py,sha256=ZY2TNzbEzwbAmch_gNCIwBm9iJ90HfMfXr_RkFdRcfs,3271
|
|
31
|
+
mosscode/tui.py,sha256=Ug1fWEoMfk52M0ZWIvj48Auh_sQl0ZzUqlIYanX-LBA,106350
|
|
32
|
+
mosscode/usage.py,sha256=e23VRVgIq9bn76XbeXjgE_K6u_IwIL7WoQRPwRJukz0,2864
|
|
33
|
+
mosscode/windows_inline.py,sha256=Gjh2oCeW1APxxezGuuyGE6wVV0W15YBkeRlFI1Jl20E,6486
|
|
34
|
+
mosscode/agents/__init__.py,sha256=inF3Z2uL6anV9PNb0Rg6y3iria41VdhXVtTEeoZFNCA,10235
|
|
35
|
+
mosscode/agents/runtime.py,sha256=RiHtDUqcKo8yBS0D0vj2SM4ZYWstDKFszMJSSNrLohg,30387
|
|
36
|
+
mosscode/agents/tasks.py,sha256=E9JPmPj34nE9UAKVNQAWxY6NAbc5DuYB5Dk9KFELaHE,7076
|
|
37
|
+
mosscode/agents/builtin/explore.md,sha256=loECrIpbdmniu6l5Svr6SXR8ZtJGDHDydWufDkrL3p4,926
|
|
38
|
+
mosscode/agents/builtin/general.md,sha256=aa4t64oMVJHiSWpkNHG50HiyyAmS2hEka9wMo2x337s,741
|
|
39
|
+
mosscode/agents/builtin/plan.md,sha256=Xu8oFCHx3aWR7NXMoQGzCQ8zrzIBXGVVYgwWcVZEMxA,811
|
|
40
|
+
mosscode/hooks/__init__.py,sha256=s5tcNDmohbOVdsH0ntnZ_j5JR8VbXuagOOEUgsmgU5U,540
|
|
41
|
+
mosscode/hooks/actions.py,sha256=kDRerW05xGhOY8BuRTzx3IDRqR6ta8y5FGgxtoB7QtA,5858
|
|
42
|
+
mosscode/hooks/conditions.py,sha256=F7LpMxFTPU0Dmc2uIj0Qvu3B1DvuewqbPWJt9b8BAQI,6566
|
|
43
|
+
mosscode/hooks/config.py,sha256=iJFnJr6owwQtDdgFejMGZXG__eR-WwPoC5rYjFlvodM,17438
|
|
44
|
+
mosscode/hooks/engine.py,sha256=eBWkWsttjBgpCrckmsXB5cNa_JDFveFmaIYWTA0g9VU,16043
|
|
45
|
+
mosscode/hooks/events.py,sha256=aXHnSk6MShXErJIXJRIm2NgqNo9vLbOxLYkJpgAkhcY,2269
|
|
46
|
+
mosscode/skills/__init__.py,sha256=fjtQREDDmTABWqlLPy9YYrXVx8VJwPMbXKrQJHiSO3c,18067
|
|
47
|
+
mosscode/skills/builtin/commit/SKILL.md,sha256=eUVbtGl2scI2R001AbT4Saqb4RuDAs9p3lzYxs-BJdw,981
|
|
48
|
+
mosscode/skills/builtin/review/SKILL.md,sha256=x5N3es3Fl7PiUGSjGcRqsENbBPUWu6N7MC0D_yRn48I,812
|
|
49
|
+
mosscode/skills/builtin/test/SKILL.md,sha256=TAcllr_-vR4Dia9TwzZk3T_P4wCnLBrEYDVF1z_2dvk,657
|
|
50
|
+
mosscode/skills/builtin/test/tool.json,sha256=5PXBaevyFblkvn12tX-7Uw_Dv6zm4qVE4VqzmMlptVE,330
|
|
51
|
+
mosscode/skills/builtin/test/scripts/detect.py,sha256=GRAf6tsMBdXaJKn1CoenMBrawcA_Vj0I5r49KiRskfA,3710
|
|
52
|
+
mosscode/teams/__init__.py,sha256=RekEsgKGIALDj1wi91DXTs_oaHnMMcGMO64mvFEqtk0,8181
|
|
53
|
+
mosscode/teams/backends.py,sha256=ZiR8ZNYvQNqAitRpfwA0BPHFIH9brvyXnrzWGRC4e2k,9560
|
|
54
|
+
mosscode/teams/board.py,sha256=yTwZknUXRtpKV8iOQ6-air8cnOvim_gao2GiAknAGWw,9211
|
|
55
|
+
mosscode/teams/lock.py,sha256=WfVWT6-GxFkypAK7DzlGvXk_mny0QVEKEzHxpQrxX-E,5707
|
|
56
|
+
mosscode/teams/mailbox.py,sha256=Zb2b4GAQODYDJnX_V5ahSAKxg22dmLgsU7XlQ9FARo8,7231
|
|
57
|
+
mosscode/teams/member.py,sha256=RVEWjmfLE--_-cH8kh1nvEyJt8lirLcC_pt6hgnzoL4,18934
|
|
58
|
+
mosscode/teams/merge.py,sha256=CdQlYyPTxa-BRBEpqde0hS_zmqoxYjjneUbSsR6p9jA,8449
|
|
59
|
+
mosscode/teams/pane.py,sha256=yxee7vWMbMggyRbscij_7PlbDHpg7SuuGW6119eK8w8,477
|
|
60
|
+
mosscode/teams/pane_app.py,sha256=PMD9LQITJhZzc6GpC0Yiv3ODJ202_h4yuIMdWIvS3_s,7035
|
|
61
|
+
mosscode/teams/process.py,sha256=xbuCQuAKkIDqGl-mMVNZYN3f0AjvX7fOjk7NsoTy7po,14787
|
|
62
|
+
mosscode/teams/runtime.py,sha256=SDG3M7ZNbw-EFbO8KHMoby4MNO7uWbnEnLsw8pPPxi8,63203
|
|
63
|
+
mosscode/teams/view.py,sha256=xY0toVVdHNZ2IQ3b_VgtnV4SgnuxtFbUdTdzDWXimps,7214
|
|
64
|
+
mosscode/tools/__init__.py,sha256=seiA3DtvHtYlCLKXlQC-F0no6Yok2OJJHwaoduD5VKc,1336
|
|
65
|
+
mosscode/tools/agent.py,sha256=GIARzz4NqYF5FC8BVSkloUcm9GCYM-Wdc1asPGUiJuo,5753
|
|
66
|
+
mosscode/tools/base.py,sha256=LEfXXQJq9YpJIuFaDRQu51r1OVk59PkPtG-W8kh0DSE,17804
|
|
67
|
+
mosscode/tools/diffing.py,sha256=yAWexSKdfNA2AtSTRY-35NALhAJXCQd33K9QmOpdfek,724
|
|
68
|
+
mosscode/tools/execution.py,sha256=vgRgMJcUizcx2vW2l-K24ECW0IDe9SLk9fxLf7JO7-I,4057
|
|
69
|
+
mosscode/tools/files.py,sha256=OkGKPyhkqJi9AK2HpMGLIebyIODaxkrIl_qQf90-7AA,12702
|
|
70
|
+
mosscode/tools/memory.py,sha256=15PAgoOcTOQbNMbV9unRY3McoyEhYA70oOlZs_hl7yM,3634
|
|
71
|
+
mosscode/tools/plan.py,sha256=hvC8svdzMwOUY7K2rk9_7P6N2-GiIKJJu3ST6FwIXrY,1401
|
|
72
|
+
mosscode/tools/process.py,sha256=uukHwVCs3yCLvAaO16Rj4ymRCU_zh-iENf_iKVCFSgQ,9058
|
|
73
|
+
mosscode/tools/search.py,sha256=MfalVtm2NHh6PELsSEyzEoFqDmpkN3pMari5yF_zVww,9942
|
|
74
|
+
mosscode/tools/search_worker.py,sha256=t91qhHxnVZ8FMt-WVZHWEAUZe6VYplXc3yMUvMxkFVo,9108
|
|
75
|
+
mosscode/tools/shell.py,sha256=vMT9mYoLeHO5XkiLPWAig3mj-Hm3zH1rRKF9rUYcav8,5096
|
|
76
|
+
mosscode/tools/skill.py,sha256=BAB6zUSWxhIUhuDqeW9pIJTpLgRY42cGiADdXQeFOTM,4794
|
|
77
|
+
mosscode/tools/team.py,sha256=ZRNUQyEi5a6veYSA5Zpbeovb6fO6c2ifcZtRGtsRJvU,16813
|
|
78
|
+
mosscode/tools/windows_job.py,sha256=no5TNJRk0vwt2NqRXz3IcFD0F_t4fFO43PFz8fJF_TQ,2834
|
|
79
|
+
mosscode/worktree/__init__.py,sha256=xQs_xUeLrPLYrlxafXYBBcLqY43wJrwj6PXGj0x7xec,783
|
|
80
|
+
mosscode/worktree/changes.py,sha256=umbYsN_5THzE18-TYVaRO2_oB6LdyH71fkDCuXbzas4,2315
|
|
81
|
+
mosscode/worktree/git.py,sha256=QYFqh6HiRBXCko9XJQflp2PQjXRudumT48NMuB5_SAw,4864
|
|
82
|
+
mosscode/worktree/manager.py,sha256=_8q82GWTKWWhCzh7wgMNH-kStgQMpjeeCQ4jxcc8EEg,19324
|
|
83
|
+
mosscode/worktree/meta.py,sha256=52GKbhb0tKL-M_DbR7qMmTQgS0f1-pkx1AkWMo5gP_k,3064
|
|
84
|
+
mosscode/worktree/names.py,sha256=frSf71_2Xe8ZM-BQR7N26blo9M1OVT8G5OH0Zqy3Q9Y,1885
|
|
85
|
+
mosscode/worktree/setup.py,sha256=kglFi2sFjA4Y-V_E0dTt-Z_sVnORlYrXMHhXQnuJ0Dc,4362
|
|
86
|
+
mosscode-0.1.0.dist-info/licenses/LICENSE,sha256=qNPN-zZk0lwO5yyKEzJGXBkjWr5UxZqROAS_MSG_R0o,1062
|
|
87
|
+
mosscode-0.1.0.dist-info/METADATA,sha256=_ZqxB8JFZ29l47j80gn33GA8RopuTJp-fora545-Yfw,3630
|
|
88
|
+
mosscode-0.1.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
89
|
+
mosscode-0.1.0.dist-info/entry_points.txt,sha256=21eBTJcC7Cq3kPVFfDaX9U6fGvKFOujiWQtEvbI_JVM,82
|
|
90
|
+
mosscode-0.1.0.dist-info/top_level.txt,sha256=bMsf3W5VwIvwhEggmjyn9Xjyz8RvCgZzIQ_-H7EHEZo,9
|
|
91
|
+
mosscode-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 yzd11
|
|
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.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
mosscode
|