firmwareloop 0.1.5__tar.gz → 0.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/PKG-INFO +9 -6
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/README.md +8 -5
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/firmwareloop.egg-info/PKG-INFO +9 -6
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/pyproject.toml +1 -1
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/__init__.py +1 -1
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/fw_mcp_server.py +61 -14
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/setup-agent-mcp.ps1 +2 -2
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/LICENSE +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/firmwareloop.egg-info/SOURCES.txt +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/firmwareloop.egg-info/dependency_links.txt +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/firmwareloop.egg-info/entry_points.txt +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/firmwareloop.egg-info/requires.txt +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/firmwareloop.egg-info/top_level.txt +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/setup.cfg +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/acceptance-scenario.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/build.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/can.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/check-qoder-mcp.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/common/build-backends.psm1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/common/fw.psm1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/common/uart_probe.py +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/doctor.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/flash.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/instrument_cli.py +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/lib/__init__.py +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/lib/instruments.py +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/lib/ndtdbg.py +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/logic_capture.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/logic_decode.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/ndtdbg_bridge.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/ndtdbg_cli.py +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/reset.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/sigrok_csv_to_fwloop.py +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/test-backends.ps1 +0 -0
- {firmwareloop-0.1.5 → firmwareloop-0.1.6}/tools/test.ps1 +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: firmwareloop
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: AI Agent Firmware Development and Lab Automation Platform (Dual-Tier MCP Server)
|
|
5
5
|
Author-email: WeilinZhang <19523330249@163.com>
|
|
6
6
|
License: MIT
|
|
@@ -124,7 +124,7 @@ uv tool install agentic-hil
|
|
|
124
124
|
如需用 Agent 直接操作 NdtBox(固件寄存器读写 / 数据采集 / 逻辑分析仪协议验证),安装后执行一次:
|
|
125
125
|
|
|
126
126
|
```bash
|
|
127
|
-
# 1) 全局注册各 AI Agent(Antigravity / Claude Code / Qoder),并生成机器级配置模板
|
|
127
|
+
# 1) 全局注册各 AI Agent(Antigravity / Claude Code / Qoder / CodeBuddy),并生成机器级配置模板
|
|
128
128
|
fwloop setup
|
|
129
129
|
|
|
130
130
|
# 2) 指向你的 NdtDebugTool 分发包【根目录】——命令自动定位其 lib/(含 USBIOX.DLL)并写入配置
|
|
@@ -163,7 +163,10 @@ claude mcp add --scope user agentic-hil -- agentic-hil mcp-stdio
|
|
|
163
163
|
|
|
164
164
|
不要依赖 `qoder.cmd --add-mcp`:它写到 `%APPDATA%\Qoder\User\mcp.json`,设置页看不到。
|
|
165
165
|
|
|
166
|
-
4. **
|
|
166
|
+
4. **CodeBuddy IDE**:
|
|
167
|
+
`fwloop setup` 会合并写入用户级配置 `~/.codebuddy/mcp.json`(`mcpServers` 形状与 Qoder 兼容,含官方 `description` 字段;既有条目与 `env` 自定义字段保留)。`~/.codebuddy` 目录不存在时自动跳过。
|
|
168
|
+
|
|
169
|
+
5. **Cursor / 其他 IDE**(在工程根目录的 `.mcp.json` 中并联配置):
|
|
167
170
|
```json
|
|
168
171
|
{
|
|
169
172
|
"mcpServers": {
|
|
@@ -203,7 +206,7 @@ fwloop init
|
|
|
203
206
|
|
|
204
207
|
| 命令 | 适用级别 | 核心作用 | 使用时机 |
|
|
205
208
|
|---|---|---|---|
|
|
206
|
-
| **`fwloop setup`** | **系统全局级** | 给各大 Agent(Antigravity / Claude Code / Qoder / Qoder CN)配置全局 MCP 与同步技能包 | **全电脑只需跑 1 次** |
|
|
209
|
+
| **`fwloop setup`** | **系统全局级** | 给各大 Agent(Antigravity / Claude Code / Qoder / Qoder CN / CodeBuddy)配置全局 MCP 与同步技能包 | **全电脑只需跑 1 次** |
|
|
207
210
|
| **`fwloop init`** | **工程项目级** | 在当前单片机代码目录下生成 `AGENTS.md`、`GEMINI.md`、`CLAUDE.md` 与台架配置 | **每个新单片机项目跑 1 次** |
|
|
208
211
|
| **`fwloop doctor`** | **环境诊断** | 检查编译器(Keil/GCC)、Python 环境、串口与探针连接健康度 | 随时排查环境时使用 |
|
|
209
212
|
| **`fwloop update`** | **自动更新** | 一键自动拉取最新代码并热重载依赖 | 升级工具版本时使用 |
|
|
@@ -359,7 +362,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
359
362
|
├── demo-firmware/ 示例固件(CMake;宿主编译模拟 MCU,闭环验证载体)
|
|
360
363
|
├── demo-make/ 示例固件(Make;构建测试载体)
|
|
361
364
|
├── docs/ DEPENDENCY_MATRIX / REUSE_PLAN / V0.0.2_GAP_VERIFICATION
|
|
362
|
-
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.1.
|
|
365
|
+
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.1.6)
|
|
363
366
|
├── .mcp.example.json 双层 MCP 配置模板(firmwareloop + agentic-hil)
|
|
364
367
|
├── AGENTS.md 通用智能体规范(Antigravity / Qoder / Cursor 等)
|
|
365
368
|
├── CLAUDE.md Claude Code CLI 指南
|
|
@@ -369,7 +372,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
369
372
|
|
|
370
373
|
---
|
|
371
374
|
|
|
372
|
-
## 能力验证状态(v0.1.
|
|
375
|
+
## 能力验证状态(v0.1.6)
|
|
373
376
|
|
|
374
377
|
> 状态定义:`Implemented`(已实现)/ `Simulator Validated`(模拟验证)/
|
|
375
378
|
> `Real Hardware Validated`(真机验证)/ `Experimental` / `Not Implemented`
|
|
@@ -96,7 +96,7 @@ uv tool install agentic-hil
|
|
|
96
96
|
如需用 Agent 直接操作 NdtBox(固件寄存器读写 / 数据采集 / 逻辑分析仪协议验证),安装后执行一次:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
|
-
# 1) 全局注册各 AI Agent(Antigravity / Claude Code / Qoder),并生成机器级配置模板
|
|
99
|
+
# 1) 全局注册各 AI Agent(Antigravity / Claude Code / Qoder / CodeBuddy),并生成机器级配置模板
|
|
100
100
|
fwloop setup
|
|
101
101
|
|
|
102
102
|
# 2) 指向你的 NdtDebugTool 分发包【根目录】——命令自动定位其 lib/(含 USBIOX.DLL)并写入配置
|
|
@@ -135,7 +135,10 @@ claude mcp add --scope user agentic-hil -- agentic-hil mcp-stdio
|
|
|
135
135
|
|
|
136
136
|
不要依赖 `qoder.cmd --add-mcp`:它写到 `%APPDATA%\Qoder\User\mcp.json`,设置页看不到。
|
|
137
137
|
|
|
138
|
-
4. **
|
|
138
|
+
4. **CodeBuddy IDE**:
|
|
139
|
+
`fwloop setup` 会合并写入用户级配置 `~/.codebuddy/mcp.json`(`mcpServers` 形状与 Qoder 兼容,含官方 `description` 字段;既有条目与 `env` 自定义字段保留)。`~/.codebuddy` 目录不存在时自动跳过。
|
|
140
|
+
|
|
141
|
+
5. **Cursor / 其他 IDE**(在工程根目录的 `.mcp.json` 中并联配置):
|
|
139
142
|
```json
|
|
140
143
|
{
|
|
141
144
|
"mcpServers": {
|
|
@@ -175,7 +178,7 @@ fwloop init
|
|
|
175
178
|
|
|
176
179
|
| 命令 | 适用级别 | 核心作用 | 使用时机 |
|
|
177
180
|
|---|---|---|---|
|
|
178
|
-
| **`fwloop setup`** | **系统全局级** | 给各大 Agent(Antigravity / Claude Code / Qoder / Qoder CN)配置全局 MCP 与同步技能包 | **全电脑只需跑 1 次** |
|
|
181
|
+
| **`fwloop setup`** | **系统全局级** | 给各大 Agent(Antigravity / Claude Code / Qoder / Qoder CN / CodeBuddy)配置全局 MCP 与同步技能包 | **全电脑只需跑 1 次** |
|
|
179
182
|
| **`fwloop init`** | **工程项目级** | 在当前单片机代码目录下生成 `AGENTS.md`、`GEMINI.md`、`CLAUDE.md` 与台架配置 | **每个新单片机项目跑 1 次** |
|
|
180
183
|
| **`fwloop doctor`** | **环境诊断** | 检查编译器(Keil/GCC)、Python 环境、串口与探针连接健康度 | 随时排查环境时使用 |
|
|
181
184
|
| **`fwloop update`** | **自动更新** | 一键自动拉取最新代码并热重载依赖 | 升级工具版本时使用 |
|
|
@@ -331,7 +334,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
331
334
|
├── demo-firmware/ 示例固件(CMake;宿主编译模拟 MCU,闭环验证载体)
|
|
332
335
|
├── demo-make/ 示例固件(Make;构建测试载体)
|
|
333
336
|
├── docs/ DEPENDENCY_MATRIX / REUSE_PLAN / V0.0.2_GAP_VERIFICATION
|
|
334
|
-
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.1.
|
|
337
|
+
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.1.6)
|
|
335
338
|
├── .mcp.example.json 双层 MCP 配置模板(firmwareloop + agentic-hil)
|
|
336
339
|
├── AGENTS.md 通用智能体规范(Antigravity / Qoder / Cursor 等)
|
|
337
340
|
├── CLAUDE.md Claude Code CLI 指南
|
|
@@ -341,7 +344,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
341
344
|
|
|
342
345
|
---
|
|
343
346
|
|
|
344
|
-
## 能力验证状态(v0.1.
|
|
347
|
+
## 能力验证状态(v0.1.6)
|
|
345
348
|
|
|
346
349
|
> 状态定义:`Implemented`(已实现)/ `Simulator Validated`(模拟验证)/
|
|
347
350
|
> `Real Hardware Validated`(真机验证)/ `Experimental` / `Not Implemented`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: firmwareloop
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: AI Agent Firmware Development and Lab Automation Platform (Dual-Tier MCP Server)
|
|
5
5
|
Author-email: WeilinZhang <19523330249@163.com>
|
|
6
6
|
License: MIT
|
|
@@ -124,7 +124,7 @@ uv tool install agentic-hil
|
|
|
124
124
|
如需用 Agent 直接操作 NdtBox(固件寄存器读写 / 数据采集 / 逻辑分析仪协议验证),安装后执行一次:
|
|
125
125
|
|
|
126
126
|
```bash
|
|
127
|
-
# 1) 全局注册各 AI Agent(Antigravity / Claude Code / Qoder),并生成机器级配置模板
|
|
127
|
+
# 1) 全局注册各 AI Agent(Antigravity / Claude Code / Qoder / CodeBuddy),并生成机器级配置模板
|
|
128
128
|
fwloop setup
|
|
129
129
|
|
|
130
130
|
# 2) 指向你的 NdtDebugTool 分发包【根目录】——命令自动定位其 lib/(含 USBIOX.DLL)并写入配置
|
|
@@ -163,7 +163,10 @@ claude mcp add --scope user agentic-hil -- agentic-hil mcp-stdio
|
|
|
163
163
|
|
|
164
164
|
不要依赖 `qoder.cmd --add-mcp`:它写到 `%APPDATA%\Qoder\User\mcp.json`,设置页看不到。
|
|
165
165
|
|
|
166
|
-
4. **
|
|
166
|
+
4. **CodeBuddy IDE**:
|
|
167
|
+
`fwloop setup` 会合并写入用户级配置 `~/.codebuddy/mcp.json`(`mcpServers` 形状与 Qoder 兼容,含官方 `description` 字段;既有条目与 `env` 自定义字段保留)。`~/.codebuddy` 目录不存在时自动跳过。
|
|
168
|
+
|
|
169
|
+
5. **Cursor / 其他 IDE**(在工程根目录的 `.mcp.json` 中并联配置):
|
|
167
170
|
```json
|
|
168
171
|
{
|
|
169
172
|
"mcpServers": {
|
|
@@ -203,7 +206,7 @@ fwloop init
|
|
|
203
206
|
|
|
204
207
|
| 命令 | 适用级别 | 核心作用 | 使用时机 |
|
|
205
208
|
|---|---|---|---|
|
|
206
|
-
| **`fwloop setup`** | **系统全局级** | 给各大 Agent(Antigravity / Claude Code / Qoder / Qoder CN)配置全局 MCP 与同步技能包 | **全电脑只需跑 1 次** |
|
|
209
|
+
| **`fwloop setup`** | **系统全局级** | 给各大 Agent(Antigravity / Claude Code / Qoder / Qoder CN / CodeBuddy)配置全局 MCP 与同步技能包 | **全电脑只需跑 1 次** |
|
|
207
210
|
| **`fwloop init`** | **工程项目级** | 在当前单片机代码目录下生成 `AGENTS.md`、`GEMINI.md`、`CLAUDE.md` 与台架配置 | **每个新单片机项目跑 1 次** |
|
|
208
211
|
| **`fwloop doctor`** | **环境诊断** | 检查编译器(Keil/GCC)、Python 环境、串口与探针连接健康度 | 随时排查环境时使用 |
|
|
209
212
|
| **`fwloop update`** | **自动更新** | 一键自动拉取最新代码并热重载依赖 | 升级工具版本时使用 |
|
|
@@ -359,7 +362,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
359
362
|
├── demo-firmware/ 示例固件(CMake;宿主编译模拟 MCU,闭环验证载体)
|
|
360
363
|
├── demo-make/ 示例固件(Make;构建测试载体)
|
|
361
364
|
├── docs/ DEPENDENCY_MATRIX / REUSE_PLAN / V0.0.2_GAP_VERIFICATION
|
|
362
|
-
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.1.
|
|
365
|
+
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.1.6)
|
|
363
366
|
├── .mcp.example.json 双层 MCP 配置模板(firmwareloop + agentic-hil)
|
|
364
367
|
├── AGENTS.md 通用智能体规范(Antigravity / Qoder / Cursor 等)
|
|
365
368
|
├── CLAUDE.md Claude Code CLI 指南
|
|
@@ -369,7 +372,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
369
372
|
|
|
370
373
|
---
|
|
371
374
|
|
|
372
|
-
## 能力验证状态(v0.1.
|
|
375
|
+
## 能力验证状态(v0.1.6)
|
|
373
376
|
|
|
374
377
|
> 状态定义:`Implemented`(已实现)/ `Simulator Validated`(模拟验证)/
|
|
375
378
|
> `Real Hardware Validated`(真机验证)/ `Experimental` / `Not Implemented`
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""
|
|
3
|
-
fw_mcp_server.py - FirmwareLoop High-Level Workflow & Device MCP Server (v0.1.
|
|
3
|
+
fw_mcp_server.py - FirmwareLoop High-Level Workflow & Device MCP Server (v0.1.6).
|
|
4
4
|
|
|
5
5
|
Exposes high-level firmware engineering and hardware management tools to AI Coding
|
|
6
|
-
Agents (Antigravity CLI, Claude Code CLI, Qoder IDE, Cursor) via the Model Context
|
|
6
|
+
Agents (Antigravity CLI, Claude Code CLI, Qoder IDE, CodeBuddy IDE, Cursor) via the Model Context
|
|
7
7
|
Protocol (JSON-RPC 2.0 stdio).
|
|
8
8
|
|
|
9
9
|
Tools provided:
|
|
@@ -1433,7 +1433,7 @@ def process_request(req: Dict[str, Any]) -> Optional[Dict[str, Any]]:
|
|
|
1433
1433
|
},
|
|
1434
1434
|
"serverInfo": {
|
|
1435
1435
|
"name": "firmwareloop",
|
|
1436
|
-
"version": "0.1.
|
|
1436
|
+
"version": "0.1.6"
|
|
1437
1437
|
}
|
|
1438
1438
|
}
|
|
1439
1439
|
}
|
|
@@ -1525,7 +1525,7 @@ def process_request(req: Dict[str, Any]) -> Optional[Dict[str, Any]]:
|
|
|
1525
1525
|
def handle_cli_update() -> int:
|
|
1526
1526
|
"""Handle `firmwareloop update` command."""
|
|
1527
1527
|
print("============================================================")
|
|
1528
|
-
print(" FirmwareLoop Auto-Updater (v0.1.
|
|
1528
|
+
print(" FirmwareLoop Auto-Updater (v0.1.6)")
|
|
1529
1529
|
print("============================================================")
|
|
1530
1530
|
|
|
1531
1531
|
is_git_repo = os.path.exists(os.path.join(REPO_ROOT, ".git"))
|
|
@@ -1674,6 +1674,39 @@ def configure_qoder_user_mcp(user_home: str) -> List[Dict[str, Any]]:
|
|
|
1674
1674
|
return results
|
|
1675
1675
|
|
|
1676
1676
|
|
|
1677
|
+
CODEBUDDY_USER_MCP_SERVERS = {
|
|
1678
|
+
"firmwareloop": {
|
|
1679
|
+
"command": "fwloop",
|
|
1680
|
+
"type": "stdio",
|
|
1681
|
+
"description": "FirmwareLoop firmware engineering & lab automation MCP server",
|
|
1682
|
+
},
|
|
1683
|
+
"agentic-hil": {
|
|
1684
|
+
"command": "agentic-hil",
|
|
1685
|
+
"args": ["mcp-stdio"],
|
|
1686
|
+
"type": "stdio",
|
|
1687
|
+
"description": "agentic-hil hardware bench MCP server",
|
|
1688
|
+
},
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
def configure_codebuddy_user_mcp(user_home: str) -> Dict[str, Any]:
|
|
1693
|
+
"""Write firmwareloop MCP entries into the CodeBuddy IDE user-level ~/.codebuddy/mcp.json.
|
|
1694
|
+
|
|
1695
|
+
CodeBuddy reads the same mcpServers JSON shape as Qoder (type/command/args,
|
|
1696
|
+
plus an optional per-entry "description" per official docs), so the Qoder
|
|
1697
|
+
merge helper is reused with a CodeBuddy-specific payload.
|
|
1698
|
+
"""
|
|
1699
|
+
mcp_dir = os.path.join(user_home, ".codebuddy")
|
|
1700
|
+
mcp_file = os.path.join(mcp_dir, "mcp.json")
|
|
1701
|
+
if not os.path.isdir(mcp_dir):
|
|
1702
|
+
return {"ok": False, "path": mcp_file, "reason": "not_installed"}
|
|
1703
|
+
try:
|
|
1704
|
+
upsert_qoder_mcp_json(mcp_file, CODEBUDDY_USER_MCP_SERVERS)
|
|
1705
|
+
return {"ok": True, "path": mcp_file}
|
|
1706
|
+
except Exception as exc:
|
|
1707
|
+
return {"ok": False, "path": mcp_file, "reason": str(exc)}
|
|
1708
|
+
|
|
1709
|
+
|
|
1677
1710
|
def resolve_ndtdebugtool_lib(tool_root: str) -> str:
|
|
1678
1711
|
"""Resolve the NdtDebugTool lib directory (must contain USBIOX.DLL)."""
|
|
1679
1712
|
if not tool_root or not os.path.isdir(tool_root):
|
|
@@ -1760,9 +1793,9 @@ def set_ndtdbg_dlldir(dll_path: str) -> str:
|
|
|
1760
1793
|
|
|
1761
1794
|
|
|
1762
1795
|
def handle_cli_setup() -> int:
|
|
1763
|
-
"""Handle `firmwareloop setup` command: simultaneously configure Antigravity CLI, Claude Code CLI, and
|
|
1796
|
+
"""Handle `firmwareloop setup` command: simultaneously configure Antigravity CLI, Claude Code CLI, Qoder IDE, and CodeBuddy IDE."""
|
|
1764
1797
|
print("============================================================")
|
|
1765
|
-
print(" FirmwareLoop Multi-Agent Global Setup Helper (v0.1.
|
|
1798
|
+
print(" FirmwareLoop Multi-Agent Global Setup Helper (v0.1.6)")
|
|
1766
1799
|
print("============================================================")
|
|
1767
1800
|
print("")
|
|
1768
1801
|
|
|
@@ -1834,7 +1867,19 @@ def handle_cli_setup() -> int:
|
|
|
1834
1867
|
continue
|
|
1835
1868
|
print(f" - {item['edition']}: [Warning] Could not write {item['path']}: {item.get('reason')}")
|
|
1836
1869
|
|
|
1837
|
-
# 4.
|
|
1870
|
+
# 4. CodeBuddy IDE user-level MCP (~/.codebuddy/mcp.json)
|
|
1871
|
+
# Same mcpServers JSON shape as Qoder; supports an optional per-entry "description".
|
|
1872
|
+
print("\n[4] CodeBuddy IDE:")
|
|
1873
|
+
cb_result = configure_codebuddy_user_mcp(user_home)
|
|
1874
|
+
if cb_result.get("ok"):
|
|
1875
|
+
print(f" - User MCP: [OK] Written to {cb_result['path']}")
|
|
1876
|
+
configured_agents.append("CodeBuddy")
|
|
1877
|
+
elif cb_result.get("reason") == "not_installed":
|
|
1878
|
+
print(" - User MCP: ~/.codebuddy not found (Workspace .mcp.json still supported)")
|
|
1879
|
+
else:
|
|
1880
|
+
print(f" - User MCP: [Warning] Could not write {cb_result['path']}: {cb_result.get('reason')}")
|
|
1881
|
+
|
|
1882
|
+
# 5. Global Skills Sync for Antigravity and Claude Code
|
|
1838
1883
|
ag_skills_dir = os.path.join(user_home, ".gemini", "antigravity-cli", "skills")
|
|
1839
1884
|
claude_skills_dir = os.path.join(user_home, ".claude", "skills")
|
|
1840
1885
|
source_skills_dir = os.path.join(REPO_ROOT, "skills")
|
|
@@ -1855,14 +1900,14 @@ def handle_cli_setup() -> int:
|
|
|
1855
1900
|
except Exception:
|
|
1856
1901
|
pass
|
|
1857
1902
|
|
|
1858
|
-
print(f"\n[
|
|
1903
|
+
print(f"\n[5] Global Skills:")
|
|
1859
1904
|
print(f" - Synchronized: [OK] {skills_synced} skills (firmwareloop, fwloop-adapter) to Antigravity & Claude Code")
|
|
1860
1905
|
|
|
1861
1906
|
# 5. Machine-level global lab.yaml (ndtdbg config for the globally installed tool)
|
|
1862
1907
|
global_cfg = ensure_global_lab_yaml()
|
|
1863
1908
|
if global_cfg:
|
|
1864
1909
|
exists = " [已存在, 未覆盖]" if os.path.isfile(global_cfg) else " [已创建]"
|
|
1865
|
-
print("\n[
|
|
1910
|
+
print("\n[6] NdtBox 全局配置:")
|
|
1866
1911
|
print(f" - {global_cfg}{exists}")
|
|
1867
1912
|
print(" - 若未配置, 请运行: fwloop ndtdebugtool \"<NdtDebugTool 根目录>\"")
|
|
1868
1913
|
|
|
@@ -1875,7 +1920,7 @@ def handle_cli_setup() -> int:
|
|
|
1875
1920
|
def handle_cli_init() -> int:
|
|
1876
1921
|
"""Handle `firmwareloop init` command."""
|
|
1877
1922
|
print("============================================================")
|
|
1878
|
-
print(" FirmwareLoop Multi-Agent Project Initializer (v0.1.
|
|
1923
|
+
print(" FirmwareLoop Multi-Agent Project Initializer (v0.1.6)")
|
|
1879
1924
|
print("============================================================")
|
|
1880
1925
|
cwd = os.getcwd()
|
|
1881
1926
|
print(f"[*] Initializing multi-agent guidelines & bench config in:\n {cwd}\n")
|
|
@@ -1887,7 +1932,7 @@ def handle_cli_init() -> int:
|
|
|
1887
1932
|
print(" [*] All agent instruction files (AGENTS.md, CLAUDE.md, GEMINI.md, lab.yaml, .mcp.json) already exist.")
|
|
1888
1933
|
print("")
|
|
1889
1934
|
print("============================================================")
|
|
1890
|
-
print("[+] Done! All AI Coding Agents (Claude Code, Qoder, Antigravity, Cursor) are now ready to operate in this repository.")
|
|
1935
|
+
print("[+] Done! All AI Coding Agents (Claude Code, Qoder, Antigravity, CodeBuddy, Cursor) are now ready to operate in this repository.")
|
|
1891
1936
|
print("============================================================")
|
|
1892
1937
|
return 0
|
|
1893
1938
|
else:
|
|
@@ -1896,7 +1941,7 @@ def handle_cli_init() -> int:
|
|
|
1896
1941
|
|
|
1897
1942
|
|
|
1898
1943
|
def print_cli_help() -> None:
|
|
1899
|
-
print("""FirmwareLoop (fwloop) — AI Agent Firmware Engineering & Lab Automation Platform (v0.1.
|
|
1944
|
+
print("""FirmwareLoop (fwloop) — AI Agent Firmware Engineering & Lab Automation Platform (v0.1.6)
|
|
1900
1945
|
|
|
1901
1946
|
Usage:
|
|
1902
1947
|
fwloop [command] (or: firmwareloop [command])
|
|
@@ -1905,7 +1950,9 @@ Commands:
|
|
|
1905
1950
|
init Initialize multi-agent rules (AGENTS.md, CLAUDE.md, GEMINI.md) & lab.yaml in current project
|
|
1906
1951
|
update Check and update FirmwareLoop to the latest version
|
|
1907
1952
|
doctor Run environment & toolchain diagnostics
|
|
1908
|
-
setup
|
|
1953
|
+
setup Register AI Agent MCP globally & generate machine-level config (%APPDATA%\\FirmwareLoop\\lab.yaml)
|
|
1954
|
+
ndtdebugtool DIR Configure NdtBox: point to the NdtDebugTool folder root (auto-resolves its lib/)
|
|
1955
|
+
dlldir DIR Alias of ndtdebugtool (legacy name, pass the lib/ directory directly)
|
|
1909
1956
|
version, -v Show current version
|
|
1910
1957
|
help, -h Show this help message
|
|
1911
1958
|
|
|
@@ -1934,7 +1981,7 @@ def main() -> None:
|
|
|
1934
1981
|
sys.exit(2)
|
|
1935
1982
|
sys.exit(handle_cli_ndtdebugtool(args[1]))
|
|
1936
1983
|
elif cmd in ["version", "-v", "--version"]:
|
|
1937
|
-
print("FirmwareLoop v0.1.
|
|
1984
|
+
print("FirmwareLoop v0.1.6")
|
|
1938
1985
|
sys.exit(0)
|
|
1939
1986
|
elif cmd in ["help", "-h", "--help"]:
|
|
1940
1987
|
print_cli_help()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<#
|
|
2
2
|
.SYNOPSIS
|
|
3
|
-
Dual-Tier MCP setup and registration helper (v0.1.
|
|
3
|
+
Dual-Tier MCP setup and registration helper (v0.1.6).
|
|
4
4
|
Inspects installed AI coding agents (Qoder, Claude Code, Antigravity, Cursor)
|
|
5
5
|
and configures global MCP / skills or prints exact registration commands.
|
|
6
6
|
|
|
@@ -242,7 +242,7 @@ if ($Json) {
|
|
|
242
242
|
Write-FwJson ([pscustomobject]$report)
|
|
243
243
|
} else {
|
|
244
244
|
Write-Host "============================================================" -ForegroundColor Cyan
|
|
245
|
-
Write-Host " FirmwareLoop Dual-Tier MCP & Agent Setup Helper (v0.1.
|
|
245
|
+
Write-Host " FirmwareLoop Dual-Tier MCP & Agent Setup Helper (v0.1.6)" -ForegroundColor Green
|
|
246
246
|
Write-Host "============================================================" -ForegroundColor Cyan
|
|
247
247
|
Write-Host ""
|
|
248
248
|
Write-Host "[1] Google Antigravity / Gemini CLI:" -ForegroundColor Yellow
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|