academic-army 0.4.1 → 0.5.1

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.
package/README.md CHANGED
@@ -38,10 +38,10 @@ Install package dependencies once:
38
38
  npm install
39
39
  ```
40
40
 
41
- Install MCP server dependencies from [`mcp-server/requirements.txt`](mcp-server/requirements.txt) if needed:
41
+ Install the MCP server into the local virtual environment:
42
42
 
43
43
  ```bash
44
- python -m pip install -r ./mcp-server/requirements.txt
44
+ .venv/bin/python -m pip install -e .
45
45
  ```
46
46
 
47
47
  ### 2. Configure AcademicArmy MCP
@@ -52,7 +52,7 @@ Create `.env` in the repository root:
52
52
  OPENAI_API_KEY=your_api_key_here
53
53
  ```
54
54
 
55
- For project pipeline runs, use the `academic_army_mcp_tools` server through [`agent-forge.yaml`](agent-forge.yaml). That config launches the server as `python -m mcp-server` with `PYTHONPATH=.` and `cwd=.` from the repository root, so the evolve/developing runners do not need a separate Codex MCP installation step.
55
+ For project pipeline runs, use the `academic_army_mcp_tools` server through [`agent-forge.yaml`](agent-forge.yaml). That config launches the installed package with `.venv/bin/python -m academic_army_mcp_tools`, independent of each agent thread's working directory.
56
56
 
57
57
  When running AcademicArmy skills directly in Codex, use [`install_mcp.py`](install_mcp.py) to install the same MCP server into Codex so the skills can call `academic_army_mcp_tools.deepresearch` and `academic_army_mcp_tools.writing_master` outside the project pipeline:
58
58
 
@@ -70,16 +70,16 @@ Once you are satisfied with the paper blueprint, continue with the next planning
70
70
 
71
71
  ### 4. Run the development loop
72
72
 
73
- After the planning artifacts are ready, write the next high-level development objective into `workspace/goal.md`, then run:
73
+ After the planning artifacts are ready, write the next high-level development objective into `workspace/plan/goal.md`, then run:
74
74
 
75
75
  ```bash
76
- $EDITOR workspace/goal.md
76
+ $EDITOR workspace/plan/goal.md
77
77
  bash runs/develop.sh
78
78
  ```
79
79
 
80
- Run [`runs/develop.sh`](runs/develop.sh) to call the `developing-agent-forge` development pipeline, which reads the three planning artifacts plus the current `--goal-path` file and iteratively writes code under `workspace/codebase`. Each time you want the next new task, update `workspace/goal.md` before rerunning the wrapper.
80
+ Run [`runs/develop.sh`](runs/develop.sh) to call the `developing-agent-forge` development pipeline, which reads the three planning artifacts plus the current `--goal-path` file and iteratively writes code under `workspace/codebase`. Each time you want the next new task, update `workspace/plan/goal.md` before rerunning the wrapper.
81
81
 
82
- The development loop stores project progress memory under `workspace/developing-memory/project-progress-memory` and code design memory under `workspace/developing-memory/code-design-memory`. If a new goal starts inheriting old context, edit or delete stale memory files in those directories before rerunning.
82
+ The development loop stores project progress memory under `workspace/memory/project-progress` and code design memory under `workspace/memory/code-design`. If a new goal starts inheriting old context, edit or delete stale memory files in those directories before rerunning.
83
83
 
84
84
  See [`src/README.md`](src/README.md) for the local TypeScript entry points. The development loop implementation lives in the `developing-agent-forge` package.
85
85
 
@@ -103,11 +103,11 @@ npm run evolve-skill
103
103
 
104
104
  For the shared CLI and pipeline structure, see [`src/README.md`](src/README.md).
105
105
 
106
- For `developing` and `developing-skill`, update the file passed to `--goal-path` when you want to run a new task focus. The prepared wrappers use `workspace/goal.md`. The base development loop comes from `developing-agent-forge`; this repository provides the `developing-skill` trajectory optimizer locally.
106
+ For `developing` and `developing-skill`, update the file passed to `--goal-path` when you want to run a new task focus. The prepared wrappers use `workspace/plan/goal.md`. The base development loop comes from `developing-agent-forge`; this repository provides the `developing-skill` trajectory optimizer locally.
107
107
 
108
108
  ### Call MCP Tools
109
109
 
110
- AcademicArmy includes a local stdio MCP implementation in the [`mcp-server`](mcp-server) directory. It exposes these tools:
110
+ AcademicArmy includes an installable stdio MCP package in [`academic_army_mcp_tools`](academic_army_mcp_tools). It exposes these tools:
111
111
 
112
112
  - `deepresearch(prompt: str)`: runs the prompt with OpenAI Responses using `gpt-5.5`, high reasoning, web search, background mode, and source inclusion.
113
113
  - `writing_master(prompt: str)`: runs the prompt with OpenAI Responses using `gpt-5.5-pro`, high reasoning, web search, background mode, and source inclusion for high-end academic writing review.
@@ -121,16 +121,16 @@ Find the closest papers to this research idea, compare their methods, and return
121
121
 
122
122
  ## Project Structure
123
123
 
124
- | Path | Purpose |
125
- | ------------------ | -------------------------------------------------------------------------------- |
126
- | `agent-forge.yaml` | Agent and team wiring. |
127
- | `install_mcp.py` | Installs the project MCP server into Codex for direct skill runs. |
128
- | `mcp-server/` | Local stdio MCP implementation that exposes `deepresearch` and `writing_master`. |
129
- | `skills/` | Prepared AcademicArmy skills. |
130
- | `metaskills/` | Matching metaskill design/evolution files. |
131
- | `runs/` | Convenience wrappers around TypeScript pipelines. |
132
- | `src/` | TypeScript pipeline structure and implementation notes. |
133
- | `workspace/` | Generated planning artifacts, codebase workspace, memory, and archives. |
124
+ | Path | Purpose |
125
+ | -------------------------- | -------------------------------------------------------------------------------------- |
126
+ | `agent-forge.yaml` | Agent and team wiring. |
127
+ | `install_mcp.py` | Installs the project MCP server into Codex for direct skill runs. |
128
+ | `academic_army_mcp_tools/` | Installable stdio MCP implementation that exposes `deepresearch` and `writing_master`. |
129
+ | `skills/` | Prepared AcademicArmy skills. |
130
+ | `metaskills/` | Matching metaskill design/evolution files. |
131
+ | `runs/` | Convenience wrappers around TypeScript pipelines. |
132
+ | `src/` | TypeScript pipeline structure and implementation notes. |
133
+ | `workspace/` | Generated planning artifacts, codebase workspace, memory, and archives. |
134
134
 
135
135
  Agent and team wiring lives in [`agent-forge.yaml`](agent-forge.yaml). The local TypeScript agents are implemented under [`src/evolve-skill/agents`](src/evolve-skill/agents); developing agents come from `developing-agent-forge`.
136
136
 
@@ -141,7 +141,7 @@ Prepared AcademicArmy skills live under [`skills/`](skills/), and their matching
141
141
  | File or variable | Required for | Notes |
142
142
  | ------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
143
143
  | `.env` / `OPENAI_API_KEY` | AcademicArmy MCP | Read by the MCP server and by `install_mcp.py`. |
144
- | `agent-forge.yaml` | Project pipelines | Launches `academic_army_mcp_tools` as `python -m mcp-server` with `PYTHONPATH=.` and `cwd=.`. |
144
+ | `agent-forge.yaml` | Project pipelines | Launches installed `.venv` package `academic_army_mcp_tools`; run `.venv/bin/python -m pip install -e .` after changing MCP package code. |
145
145
  | `secret.yaml` | Prepared shell scripts | Local ignored config overlay used by the prepared wrappers. It may contain passwords, API keys, runtime credentials, or other private values that must not be committed or uploaded to GitHub. |
146
146
 
147
147
  To override or add environment variables directly when installing MCP into Codex, repeat `-e/--env NAME=VALUE`:
@@ -150,7 +150,7 @@ To override or add environment variables directly when installing MCP into Codex
150
150
  python install_mcp.py -e OPENAI_API_KEY=your_api_key_here
151
151
  ```
152
152
 
153
- Running the installer refreshes the Codex `academic_army_mcp_tools` entry, registers the current Python executable with `-m mcp-server`, sets the repository root as the MCP working directory, reads `.env`, and forwards those values to the MCP server.
153
+ Running the installer refreshes the Codex `academic_army_mcp_tools` entry, registers the current Python executable with `-m academic_army_mcp_tools`, sets the repository root as the MCP working directory, reads `.env`, and forwards those values to the MCP server.
154
154
 
155
155
  ## Troubleshooting
156
156
 
package/README.zh-CN.md CHANGED
@@ -38,10 +38,10 @@ AcademicArmy 的主体核心可以概括为一句话:按图施工。
38
38
  npm install
39
39
  ```
40
40
 
41
- 如有需要,从 [`mcp-server/requirements.txt`](mcp-server/requirements.txt) 安装 MCP server 依赖:
41
+ MCP server 安装到本地虚拟环境:
42
42
 
43
43
  ```bash
44
- python -m pip install -r ./mcp-server/requirements.txt
44
+ .venv/bin/python -m pip install -e .
45
45
  ```
46
46
 
47
47
  ### 2. 配置 AcademicArmy MCP
@@ -52,7 +52,7 @@ python -m pip install -r ./mcp-server/requirements.txt
52
52
  OPENAI_API_KEY=your_api_key_here
53
53
  ```
54
54
 
55
- 运行项目 pipeline 时,通过 [`agent-forge.yaml`](agent-forge.yaml) 使用 `academic_army_mcp_tools`。该配置会在仓库根目录以 `PYTHONPATH=.` 和 `cwd=.` 运行 `python -m mcp-server`,因此 evolve/developing runner 不需要额外执行 Codex MCP 安装步骤。
55
+ 运行项目 pipeline 时,通过 [`agent-forge.yaml`](agent-forge.yaml) 使用 `academic_army_mcp_tools`。该配置会用 `.venv/bin/python -m academic_army_mcp_tools` 启动已安装的包,不受各个 agent thread 工作目录影响。
56
56
 
57
57
  如果直接在 Codex 中运行 AcademicArmy skills,需要用 [`install_mcp.py`](install_mcp.py) 把同一个 MCP server 安装到 Codex 里,这样 skill 才能在项目 pipeline 之外调用 `academic_army_mcp_tools.deepresearch` 和 `academic_army_mcp_tools.writing_master`:
58
58
 
@@ -70,16 +70,16 @@ python install_mcp.py
70
70
 
71
71
  ### 4. 运行开发循环
72
72
 
73
- 三份规划产物准备好后,先把下一轮高层开发目标写进 `workspace/goal.md`,然后运行:
73
+ 三份规划产物准备好后,先把下一轮高层开发目标写进 `workspace/plan/goal.md`,然后运行:
74
74
 
75
75
  ```bash
76
- $EDITOR workspace/goal.md
76
+ $EDITOR workspace/plan/goal.md
77
77
  bash runs/develop.sh
78
78
  ```
79
79
 
80
- 运行 [`runs/develop.sh`](runs/develop.sh) 来调用 `developing-agent-forge` 提供的 `developing` pipeline,读取三份规划产物和当前 `--goal-path` 文件,并在 `workspace/codebase` 下迭代写代码。每次想执行下一个新任务时,先更新 `workspace/goal.md`,再重新运行 wrapper。
80
+ 运行 [`runs/develop.sh`](runs/develop.sh) 来调用 `developing-agent-forge` 提供的 `developing` pipeline,读取三份规划产物和当前 `--goal-path` 文件,并在 `workspace/codebase` 下迭代写代码。每次想执行下一个新任务时,先更新 `workspace/plan/goal.md`,再重新运行 wrapper。
81
81
 
82
- 开发循环会把项目进度记忆放在 `workspace/developing-memory/project-progress-memory`,把代码设计记忆放在 `workspace/developing-memory/code-design-memory`。如果新 goal 开始继承旧上下文,可以在重新运行前编辑或删除这些目录里的过期 memory 文件。
82
+ 开发循环会把项目进度记忆放在 `workspace/memory/project-progress`,把代码设计记忆放在 `workspace/memory/code-design`。如果新 goal 开始继承旧上下文,可以在重新运行前编辑或删除这些目录里的过期 memory 文件。
83
83
 
84
84
  本仓库的 TypeScript 入口和目录结构见 [`src/README.zh-CN.md`](src/README.zh-CN.md)。开发循环实现来自 `developing-agent-forge` 包。
85
85
 
@@ -103,11 +103,11 @@ npm run evolve-skill
103
103
 
104
104
  TypeScript pipeline 的目录结构和实现说明见 [`src/README.zh-CN.md`](src/README.zh-CN.md)。
105
105
 
106
- 对于 `developing` 和 `developing-skill`,每次想切换到新的任务重点时,更新传给 `--goal-path` 的文件即可。预设 wrappers 使用的是 `workspace/goal.md`。基础开发循环来自 `developing-agent-forge`;本仓库在本地提供 `developing-skill` trajectory optimizer。
106
+ 对于 `developing` 和 `developing-skill`,每次想切换到新的任务重点时,更新传给 `--goal-path` 的文件即可。预设 wrappers 使用的是 `workspace/plan/goal.md`。基础开发循环来自 `developing-agent-forge`;本仓库在本地提供 `developing-skill` trajectory optimizer。
107
107
 
108
108
  ### 调用 MCP 工具
109
109
 
110
- AcademicArmy 在 [`mcp-server`](mcp-server) 目录下提供了本地 stdio MCP 实现。它暴露这些工具:
110
+ AcademicArmy 在 [`academic_army_mcp_tools`](academic_army_mcp_tools) 包中提供了可安装的 stdio MCP 实现。它暴露这些工具:
111
111
 
112
112
  - `deepresearch(prompt: str)`:把 prompt 交给 OpenAI Responses,以 `gpt-5.5`、high reasoning、web search、background mode 和 source inclusion 的固定配置运行。
113
113
  - `writing_master(prompt: str)`:把 prompt 交给 OpenAI Responses,以 `gpt-5.5-pro`、high reasoning、web search、background mode 和 source inclusion 的固定配置运行,用于高阶学术写作咨询。
@@ -121,16 +121,16 @@ Find the closest papers to this research idea, compare their methods, and return
121
121
 
122
122
  ## 项目结构
123
123
 
124
- | 路径 | 用途 |
125
- | ------------------ | -------------------------------------------------------------- |
126
- | `agent-forge.yaml` | Agent 和团队 wiring。 |
127
- | `install_mcp.py` | 把项目 MCP server 安装到 Codex,供直接运行 skill 时使用。 |
128
- | `mcp-server/` | 本地 stdio MCP 实现,暴露 `deepresearch` 和 `writing_master`。 |
129
- | `skills/` | 已准备的 AcademicArmy skills。 |
130
- | `metaskills/` | 对应的 metaskill 设计与 evolution 文件。 |
131
- | `runs/` | TypeScript pipelines 的便捷 wrappers。 |
132
- | `src/` | TypeScript pipeline 的目录结构和实现说明。 |
133
- | `workspace/` | 生成的规划产物、代码库工作区、记忆和归档。 |
124
+ | 路径 | 用途 |
125
+ | -------------------------- | ------------------------------------------------------------------ |
126
+ | `agent-forge.yaml` | Agent 和团队 wiring。 |
127
+ | `install_mcp.py` | 把项目 MCP server 安装到 Codex,供直接运行 skill 时使用。 |
128
+ | `academic_army_mcp_tools/` | 可安装的 stdio MCP 实现,暴露 `deepresearch` 和 `writing_master`。 |
129
+ | `skills/` | 已准备的 AcademicArmy skills。 |
130
+ | `metaskills/` | 对应的 metaskill 设计与 evolution 文件。 |
131
+ | `runs/` | TypeScript pipelines 的便捷 wrappers。 |
132
+ | `src/` | TypeScript pipeline 的目录结构和实现说明。 |
133
+ | `workspace/` | 生成的规划产物、代码库工作区、记忆和归档。 |
134
134
 
135
135
  Agent 和团队 wiring 位于 [`agent-forge.yaml`](agent-forge.yaml)。本仓库内的 TypeScript agents 实现于 [`src/evolve-skill/agents`](src/evolve-skill/agents);developing agents 来自 `developing-agent-forge`。
136
136
 
@@ -141,7 +141,7 @@ Agent 和团队 wiring 位于 [`agent-forge.yaml`](agent-forge.yaml)。本仓库
141
141
  | 文件或变量 | 用于 | 说明 |
142
142
  | ------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------ |
143
143
  | `.env` / `OPENAI_API_KEY` | AcademicArmy MCP | MCP server 和 `install_mcp.py` 会读取。 |
144
- | `agent-forge.yaml` | 项目 pipelines | `PYTHONPATH=.` `cwd=.` 运行 `python -m mcp-server`。 |
144
+ | `agent-forge.yaml` | 项目 pipelines | 启动 `.venv` 中已安装的 `academic_army_mcp_tools` 包;修改 MCP 包代码后运行 `.venv/bin/python -m pip install -e .`。 |
145
145
  | `secret.yaml` | 预设 shell scripts | 预设 wrappers 使用的本地忽略 config overlay。它可以包含密码、API key、runtime 凭据等不能提交或上传到 GitHub 的隐私内容。 |
146
146
 
147
147
  如果需要覆盖或补充环境变量,可以重复使用 `-e/--env NAME=VALUE`:
@@ -150,7 +150,7 @@ Agent 和团队 wiring 位于 [`agent-forge.yaml`](agent-forge.yaml)。本仓库
150
150
  python install_mcp.py -e OPENAI_API_KEY=your_api_key_here
151
151
  ```
152
152
 
153
- 运行安装脚本时,会刷新 Codex 中的 `academic_army_mcp_tools` 配置项,注册当前 Python 可执行文件和 `-m mcp-server`,把仓库根目录设置为 MCP 工作目录,读取 `.env`,并把这些环境变量传给 MCP server。
153
+ 运行安装脚本时,会刷新 Codex 中的 `academic_army_mcp_tools` 配置项,注册当前 Python 可执行文件和 `-m academic_army_mcp_tools`,把仓库根目录设置为 MCP 工作目录,读取 `.env`,并把这些环境变量传给 MCP server。
154
154
 
155
155
  ## 常见问题
156
156
 
@@ -0,0 +1 @@
1
+ """AcademicArmy MCP server package."""
@@ -8,16 +8,7 @@ from .deepresearch import register_deepresearch
8
8
  from .writing_master import register_writing_master
9
9
 
10
10
 
11
- mcp = FastMCP(
12
- "academic-army",
13
- instructions=(
14
- "AcademicArmy MCP server. It exposes project-level tools for research, "
15
- "blueprint orchestration, and future AcademicArmy workflow functions."
16
- ),
17
- )
18
-
19
-
20
- if __name__ == "__main__":
11
+ def main() -> None:
21
12
  load_dotenv(".env")
22
13
 
23
14
  parser = argparse.ArgumentParser()
@@ -30,6 +21,17 @@ if __name__ == "__main__":
30
21
  parser.error("-e/--env must be NAME=VALUE")
31
22
  os.environ[name] = value
32
23
 
24
+ mcp = FastMCP(
25
+ "academic-army",
26
+ instructions=(
27
+ "AcademicArmy MCP server. It exposes project-level tools for research, "
28
+ "blueprint orchestration, and future AcademicArmy workflow functions."
29
+ ),
30
+ )
33
31
  register_deepresearch(mcp)
34
32
  register_writing_master(mcp)
35
33
  mcp.run(transport="stdio")
34
+
35
+
36
+ if __name__ == "__main__":
37
+ main()
package/agent-forge.yaml CHANGED
@@ -8,10 +8,8 @@ runtimes:
8
8
  command: python
9
9
  args:
10
10
  - -m
11
- - mcp-server
11
+ - academic_army_mcp_tools
12
12
  cwd: .
13
- env:
14
- PYTHONPATH: .
15
13
  tool_timeout_sec: 3600
16
14
  deepseek-v4-pro:
17
15
  kind: claude
@@ -31,10 +29,8 @@ runtimes:
31
29
  command: python
32
30
  args:
33
31
  - -m
34
- - mcp-server
32
+ - academic_army_mcp_tools
35
33
  cwd: .
36
- env:
37
- PYTHONPATH: .
38
34
  timeout: 3600000
39
35
  deepseek-v4-flash:
40
36
  kind: claude
@@ -97,7 +93,7 @@ threads:
97
93
  memory:
98
94
  runtime: deepseek-v4-flash
99
95
  options:
100
- cwd: &memoryWorkingDir workspace/developing-memory
96
+ cwd: &memoryWorkingDir workspace/memory
101
97
  permissionMode: dontAsk
102
98
  allowedTools:
103
99
  - Read
@@ -11,11 +11,12 @@ export declare const developingSkillArgsOptions: {
11
11
  };
12
12
  readonly "goal-path": {
13
13
  readonly type: "string";
14
- readonly description: "Goal document path";
14
+ readonly multiple: true;
15
+ readonly description: "Goal document path; repeat to concatenate multiple goals in order";
15
16
  };
16
- readonly "achive-dir": {
17
+ readonly "archive-root": {
17
18
  readonly type: "string";
18
- readonly description: "Archive folder for per-iteration reports";
19
+ readonly description: "Archive root folder for per-iteration reports";
19
20
  };
20
21
  readonly "max-iterations": {
21
22
  readonly type: "string";
@@ -63,11 +64,12 @@ export declare const developingSkillPipeline: import("coding-agent-forge").Pipel
63
64
  };
64
65
  readonly "goal-path": {
65
66
  readonly type: "string";
66
- readonly description: "Goal document path";
67
+ readonly multiple: true;
68
+ readonly description: "Goal document path; repeat to concatenate multiple goals in order";
67
69
  };
68
- readonly "achive-dir": {
70
+ readonly "archive-root": {
69
71
  readonly type: "string";
70
- readonly description: "Archive folder for per-iteration reports";
72
+ readonly description: "Archive root folder for per-iteration reports";
71
73
  };
72
74
  readonly "max-iterations": {
73
75
  readonly type: "string";
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/developing-skill/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGT,KAAK,eAAe,EAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,kCAAkC,EAExC,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,kCAAkC,GAAG;IAC/E,sBAAsB,EAAE,4BAA4B,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUC,CAAC;AAEzC,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAExF,wBAAsB,eAAe,CACnC,IAAI,EAAE,SAAS,CAAC,6BAA6B,CAAC,EAC9C,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAQlC,CAAC"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/developing-skill/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGT,KAAK,eAAe,EAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,kCAAkC,EAExC,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,kCAAkC,GAAG;IAC/E,sBAAsB,EAAE,4BAA4B,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUC,CAAC;AAEzC,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAExF,wBAAsB,eAAe,CACnC,IAAI,EAAE,SAAS,CAAC,6BAA6B,CAAC,EAC9C,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAQlC,CAAC"}
package/install_mcp.py CHANGED
@@ -44,8 +44,6 @@ for item in args.env:
44
44
  name, value = item.split("=", 1)
45
45
  env_items[name] = value
46
46
 
47
- env_items.setdefault("PYTHONPATH", str(repo))
48
-
49
47
  codex = shutil.which("codex")
50
48
  if not codex:
51
49
  raise SystemExit("Could not find the codex command line tool in PATH.")
@@ -59,7 +57,7 @@ subprocess.run(
59
57
  command = [codex, "mcp", "add"]
60
58
  for name, value in env_items.items():
61
59
  command += ["--env", f"{name}={value}"]
62
- command += [SERVER_NAME, "--", str(Path(sys.executable).resolve()), "-m", "mcp-server"]
60
+ command += [SERVER_NAME, "--", str(Path(sys.executable).resolve()), "-m", SERVER_NAME]
63
61
 
64
62
  subprocess.run(command, check=True)
65
63
 
@@ -79,7 +77,6 @@ codex_config.write_text(tomlkit.dumps(config), encoding="utf-8")
79
77
  print(f"Installed {SERVER_NAME} with {codex}")
80
78
  print(f"Python: {Path(sys.executable).resolve()}")
81
79
  print(f"Working directory: {repo}")
82
- print(f"PYTHONPATH: {repo}")
83
80
  print(f"Codex config: {codex_config}")
84
81
  print(f"Environment variables registered with codex --env: {len(env_items)}")
85
82
  print(f"tool_timeout_sec: {args.timeout}")
@@ -1 +1 @@
1
- Create a coding plan based on the paper blueprint in workspace/paper_blueprint.md and the experiment plan in workspace/experiment_plan.md.
1
+ Create a coding plan based on the paper blueprint in workspace/plan/paper_blueprint.md and the experiment plan in workspace/plan/experiment_plan.md.
@@ -1 +1 @@
1
- Create an experiment plan based on the paper blueprint in workspace/paper_blueprint.md.
1
+ Create an experiment plan based on the paper blueprint in workspace/plan/paper_blueprint.md.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "academic-army",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
4
4
  "description": "Agent workflows and skills for AcademicArmy.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -23,10 +23,8 @@
23
23
  "skills",
24
24
  "metaskills",
25
25
  "runs",
26
- "mcp-server/__main__.py",
27
- "mcp-server/requirements.txt",
28
- "mcp-server/deepresearch/*.py",
29
- "mcp-server/writing_master/*.py",
26
+ "academic_army_mcp_tools/**/*.py",
27
+ "pyproject.toml",
30
28
  "install_mcp.py",
31
29
  "README.md",
32
30
  "README.zh-CN.md",
@@ -47,8 +45,8 @@
47
45
  "evolve-skill": "tsx src/cli.ts evolve-skill"
48
46
  },
49
47
  "dependencies": {
50
- "coding-agent-forge": ">=1.3.5",
51
- "developing-agent-forge": ">=2.8.3"
48
+ "coding-agent-forge": ">=1.5.0",
49
+ "developing-agent-forge": ">=2.10.0"
52
50
  },
53
51
  "devDependencies": {
54
52
  "@eslint/js": "^10.0.1",
package/pyproject.toml ADDED
@@ -0,0 +1,21 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "academic-army-mcp-tools"
7
+ version = "0.0.1"
8
+ description = "MCP tools for AcademicArmy workflows."
9
+ requires-python = ">=3.11"
10
+ dependencies = [
11
+ "mcp[cli]>=1.27.1",
12
+ "openai>=2.38.0",
13
+ "python-dotenv>=1.2.2",
14
+ "tomlkit>=0.13.3",
15
+ ]
16
+
17
+ [project.scripts]
18
+ academic-army-mcp-tools = "academic_army_mcp_tools.__main__:main"
19
+
20
+ [tool.setuptools.packages.find]
21
+ include = ["academic_army_mcp_tools*"]
@@ -5,12 +5,15 @@ npm run developing-skill -- \
5
5
  --config "agent-forge.yaml" \
6
6
  --config "secret.yaml" \
7
7
  --target-path "workspace/codebase" \
8
- --achive-dir "workspace/developing-archives" \
9
- --project-progress-memory-path "workspace/developing-memory/project-progress-memory" \
10
- --code-design-memory-path "workspace/developing-memory/code-design-memory" \
8
+ --achive-dir "workspace/archives" \
9
+ --project-progress-memory-path "workspace/memory/project-progress" \
10
+ --code-design-memory-path "workspace/memory/code-design" \
11
11
  --coding-style-skill-path "skills/academic-army-coding-style" \
12
12
  --metaskill-path "metaskills/academic-army-coding-style/METASKILL.md" \
13
- --goal-path "workspace/goal.md" \
13
+ --goal-path "workspace/plan/paper_blueprint.md" \
14
+ --goal-path "workspace/plan/experiment_plan.md" \
15
+ --goal-path "workspace/plan/coding_plan.md" \
16
+ --goal-path "workspace/plan/goal.md" \
14
17
  --max-iterations "100" \
15
18
  --max-task-devloop-iterations "10" \
16
19
  --max-memory-rounds "3"
package/runs/develop.sh CHANGED
@@ -5,10 +5,13 @@ npm run developing -- \
5
5
  --config "agent-forge.yaml" \
6
6
  --config "secret.yaml" \
7
7
  --target-path "workspace/codebase" \
8
- --achive-dir "workspace/developing-archives" \
9
- --project-progress-memory-path "workspace/developing-memory/project-progress-memory" \
10
- --code-design-memory-path "workspace/developing-memory/code-design-memory" \
11
- --goal-path "workspace/goal.md" \
8
+ --achive-dir "workspace/archives" \
9
+ --project-progress-memory-path "workspace/memory/project-progress" \
10
+ --code-design-memory-path "workspace/memory/code-design" \
11
+ --goal-path "workspace/plan/paper_blueprint.md" \
12
+ --goal-path "workspace/plan/experiment_plan.md" \
13
+ --goal-path "workspace/plan/coding_plan.md" \
14
+ --goal-path "workspace/plan/goal.md" \
12
15
  --max-iterations "100" \
13
16
  --max-task-devloop-iterations "10" \
14
17
  --max-memory-rounds "3"