firmwareloop 0.6.1__tar.gz → 0.6.2__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.6.1 → firmwareloop-0.6.2}/PKG-INFO +3 -3
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/README.md +2 -2
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/firmwareloop.egg-info/PKG-INFO +3 -3
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/pyproject.toml +1 -1
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/__init__.py +1 -1
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/fw_mcp_server.py +28 -10
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/setup-agent-mcp.ps1 +2 -2
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/LICENSE +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/firmwareloop.egg-info/SOURCES.txt +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/firmwareloop.egg-info/dependency_links.txt +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/firmwareloop.egg-info/entry_points.txt +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/firmwareloop.egg-info/requires.txt +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/firmwareloop.egg-info/top_level.txt +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/setup.cfg +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/acceptance-scenario.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/build.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/can.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/check-qoder-mcp.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/common/build-backends.psm1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/common/fw.psm1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/common/uart_probe.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/doctor.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/flash.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/instrument_cli.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/lib/__init__.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/lib/instruments.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/lib/ndtdbg.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/lib/serial_assistant.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/logic_capture.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/logic_decode.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/ndtdbg_bridge.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/ndtdbg_cli.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/reset.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/serial_cli.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/sigrok_csv_to_fwloop.py +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/test-backends.ps1 +0 -0
- {firmwareloop-0.6.1 → firmwareloop-0.6.2}/tools/test.ps1 +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: firmwareloop
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
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
|
|
@@ -382,7 +382,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
382
382
|
├── demo-firmware/ 示例固件(CMake;宿主编译模拟 MCU,闭环验证载体)
|
|
383
383
|
├── demo-make/ 示例固件(Make;构建测试载体)
|
|
384
384
|
├── docs/ DEPENDENCY_MATRIX / REUSE_PLAN / V0.0.2_GAP_VERIFICATION
|
|
385
|
-
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.6.
|
|
385
|
+
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.6.2)
|
|
386
386
|
├── .mcp.example.json 双层 MCP 配置模板(firmwareloop + agentic-hil)
|
|
387
387
|
├── AGENTS.md 通用智能体规范(Antigravity / Qoder / Cursor 等)
|
|
388
388
|
├── CLAUDE.md Claude Code CLI 指南
|
|
@@ -392,7 +392,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
392
392
|
|
|
393
393
|
---
|
|
394
394
|
|
|
395
|
-
## 能力验证状态(v0.6.
|
|
395
|
+
## 能力验证状态(v0.6.2)
|
|
396
396
|
|
|
397
397
|
> 状态定义:`Implemented`(已实现)/ `Simulator Validated`(模拟验证)/
|
|
398
398
|
> `Real Hardware Validated`(真机验证)/ `Experimental` / `Not Implemented`
|
|
@@ -354,7 +354,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
354
354
|
├── demo-firmware/ 示例固件(CMake;宿主编译模拟 MCU,闭环验证载体)
|
|
355
355
|
├── demo-make/ 示例固件(Make;构建测试载体)
|
|
356
356
|
├── docs/ DEPENDENCY_MATRIX / REUSE_PLAN / V0.0.2_GAP_VERIFICATION
|
|
357
|
-
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.6.
|
|
357
|
+
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.6.2)
|
|
358
358
|
├── .mcp.example.json 双层 MCP 配置模板(firmwareloop + agentic-hil)
|
|
359
359
|
├── AGENTS.md 通用智能体规范(Antigravity / Qoder / Cursor 等)
|
|
360
360
|
├── CLAUDE.md Claude Code CLI 指南
|
|
@@ -364,7 +364,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
364
364
|
|
|
365
365
|
---
|
|
366
366
|
|
|
367
|
-
## 能力验证状态(v0.6.
|
|
367
|
+
## 能力验证状态(v0.6.2)
|
|
368
368
|
|
|
369
369
|
> 状态定义:`Implemented`(已实现)/ `Simulator Validated`(模拟验证)/
|
|
370
370
|
> `Real Hardware Validated`(真机验证)/ `Experimental` / `Not Implemented`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: firmwareloop
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
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
|
|
@@ -382,7 +382,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
382
382
|
├── demo-firmware/ 示例固件(CMake;宿主编译模拟 MCU,闭环验证载体)
|
|
383
383
|
├── demo-make/ 示例固件(Make;构建测试载体)
|
|
384
384
|
├── docs/ DEPENDENCY_MATRIX / REUSE_PLAN / V0.0.2_GAP_VERIFICATION
|
|
385
|
-
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.6.
|
|
385
|
+
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.6.2)
|
|
386
386
|
├── .mcp.example.json 双层 MCP 配置模板(firmwareloop + agentic-hil)
|
|
387
387
|
├── AGENTS.md 通用智能体规范(Antigravity / Qoder / Cursor 等)
|
|
388
388
|
├── CLAUDE.md Claude Code CLI 指南
|
|
@@ -392,7 +392,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
392
392
|
|
|
393
393
|
---
|
|
394
394
|
|
|
395
|
-
## 能力验证状态(v0.6.
|
|
395
|
+
## 能力验证状态(v0.6.2)
|
|
396
396
|
|
|
397
397
|
> 状态定义:`Implemented`(已实现)/ `Simulator Validated`(模拟验证)/
|
|
398
398
|
> `Real Hardware Validated`(真机验证)/ `Experimental` / `Not Implemented`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""
|
|
3
|
-
fw_mcp_server.py - FirmwareLoop High-Level Workflow & Device MCP Server (v0.6.
|
|
3
|
+
fw_mcp_server.py - FirmwareLoop High-Level Workflow & Device MCP Server (v0.6.2).
|
|
4
4
|
|
|
5
5
|
Exposes high-level firmware engineering and hardware management tools to AI Coding
|
|
6
6
|
Agents (Antigravity CLI, Claude Code CLI, Qoder IDE, CodeBuddy IDE, Cursor) via the Model Context
|
|
@@ -770,9 +770,25 @@ def _detect_hardware() -> Dict[str, Any]:
|
|
|
770
770
|
if cands:
|
|
771
771
|
detected["ndtdbg_dll_dir"] = os.path.dirname(os.path.abspath(cands[0]))
|
|
772
772
|
else:
|
|
773
|
+
# 外发场景兜底: 文件系统扫不到时回读全局配置 (fwloop-deploy-setup.exe
|
|
774
|
+
# 安装器写入 %APPDATA%\FirmwareLoop\lab.yaml 的 dll_dir)——已有配置直接
|
|
775
|
+
# 预填, 不让项目层 init 退化成"探测失败"
|
|
776
|
+
try:
|
|
777
|
+
appdata = os.environ.get("APPDATA")
|
|
778
|
+
gpath = os.path.join(appdata, "FirmwareLoop", "lab.yaml") if appdata else None
|
|
779
|
+
if gpath and os.path.isfile(gpath) and yaml:
|
|
780
|
+
with open(gpath, encoding="utf-8") as fh:
|
|
781
|
+
g = yaml.safe_load(fh) or {}
|
|
782
|
+
gd = (g.get("ndtdbg") or {}).get("dll_dir")
|
|
783
|
+
if gd:
|
|
784
|
+
detected["ndtdbg_dll_dir"] = str(gd)
|
|
785
|
+
detected["notes"].append(f"ndtdbg.dll_dir 取自全局配置: {gd}")
|
|
786
|
+
except Exception: # noqa: BLE001
|
|
787
|
+
pass
|
|
788
|
+
if not detected["ndtdbg_dll_dir"]:
|
|
773
789
|
detected["notes"].append(
|
|
774
|
-
"常见位置未发现 NdtDebugTool*/lib/USBIOX.DLL
|
|
775
|
-
" (运行 fwloop ndtdebugtool \"<NdtDebugTool 根目录>\" 写入)")
|
|
790
|
+
"常见位置未发现 NdtDebugTool*/lib/USBIOX.DLL 且全局配置无记录——"
|
|
791
|
+
"ndtdbg.dll_dir 需人工提供 (运行 fwloop ndtdebugtool \"<NdtDebugTool 根目录>\" 写入)")
|
|
776
792
|
return detected
|
|
777
793
|
|
|
778
794
|
|
|
@@ -815,7 +831,9 @@ def _build_lab_yaml_from_example(target_dir: str, target_chip: str, build_backen
|
|
|
815
831
|
posix = str(detected_dll_dir).replace("\\", "/")
|
|
816
832
|
out.append(f' dll_dir: "{posix}" # init 探测预填, 请核对')
|
|
817
833
|
else:
|
|
818
|
-
|
|
834
|
+
# 探测不到时整行注释 (不产出显式 null 键): 项目层 dll_dir=null 会在
|
|
835
|
+
# 深合并时架空部署安装器写入的全局 dll_dir; 注释态让合并链回退全局
|
|
836
|
+
out.append(' # dll_dir: null # TODO: 需人工提供 (fwloop ndtdebugtool "<NdtDebugTool 根目录>"); 已通过部署安装器配置全局者无需填写')
|
|
819
837
|
continue
|
|
820
838
|
out.append(ln)
|
|
821
839
|
return "\n".join(out) + "\n"
|
|
@@ -2236,7 +2254,7 @@ def process_request(req: Dict[str, Any]) -> Optional[Dict[str, Any]]:
|
|
|
2236
2254
|
},
|
|
2237
2255
|
"serverInfo": {
|
|
2238
2256
|
"name": "firmwareloop",
|
|
2239
|
-
"version": "0.6.
|
|
2257
|
+
"version": "0.6.2"
|
|
2240
2258
|
}
|
|
2241
2259
|
}
|
|
2242
2260
|
}
|
|
@@ -2371,7 +2389,7 @@ def _settle_stashed_entrypoints(stashed) -> None:
|
|
|
2371
2389
|
def handle_cli_update() -> int:
|
|
2372
2390
|
"""Handle `firmwareloop update` command."""
|
|
2373
2391
|
print("============================================================")
|
|
2374
|
-
print(" FirmwareLoop Auto-Updater (v0.6.
|
|
2392
|
+
print(" FirmwareLoop Auto-Updater (v0.6.2)")
|
|
2375
2393
|
print("============================================================")
|
|
2376
2394
|
|
|
2377
2395
|
is_git_repo = os.path.exists(os.path.join(REPO_ROOT, ".git"))
|
|
@@ -2802,7 +2820,7 @@ def set_ndtdbg_dlldir(dll_path: str) -> str:
|
|
|
2802
2820
|
def handle_cli_setup() -> int:
|
|
2803
2821
|
"""Handle `firmwareloop setup` command: simultaneously configure Antigravity CLI, Claude Code CLI, Qoder IDE, and CodeBuddy IDE."""
|
|
2804
2822
|
print("============================================================")
|
|
2805
|
-
print(" FirmwareLoop Multi-Agent Global Setup Helper (v0.6.
|
|
2823
|
+
print(" FirmwareLoop Multi-Agent Global Setup Helper (v0.6.2)")
|
|
2806
2824
|
print("============================================================")
|
|
2807
2825
|
print("")
|
|
2808
2826
|
|
|
@@ -2927,7 +2945,7 @@ def handle_cli_setup() -> int:
|
|
|
2927
2945
|
def handle_cli_init(chip: Optional[str] = None, upgrade: bool = False) -> int:
|
|
2928
2946
|
"""Handle `firmwareloop init [target_chip]` command."""
|
|
2929
2947
|
print("============================================================")
|
|
2930
|
-
print(" FirmwareLoop Multi-Agent Project Initializer (v0.6.
|
|
2948
|
+
print(" FirmwareLoop Multi-Agent Project Initializer (v0.6.2)")
|
|
2931
2949
|
print("============================================================")
|
|
2932
2950
|
cwd = os.getcwd()
|
|
2933
2951
|
print(f"[*] Initializing multi-agent guidelines & bench config in:\n {cwd}\n")
|
|
@@ -2960,7 +2978,7 @@ def handle_cli_init(chip: Optional[str] = None, upgrade: bool = False) -> int:
|
|
|
2960
2978
|
|
|
2961
2979
|
|
|
2962
2980
|
def print_cli_help() -> None:
|
|
2963
|
-
print("""FirmwareLoop (fwloop) — AI Agent Firmware Engineering & Lab Automation Platform (v0.6.
|
|
2981
|
+
print("""FirmwareLoop (fwloop) — AI Agent Firmware Engineering & Lab Automation Platform (v0.6.2)
|
|
2964
2982
|
|
|
2965
2983
|
Usage:
|
|
2966
2984
|
fwloop [command] (or: firmwareloop [command])
|
|
@@ -3006,7 +3024,7 @@ def main() -> None:
|
|
|
3006
3024
|
sys.exit(2)
|
|
3007
3025
|
sys.exit(handle_cli_ndtdebugtool(args[1]))
|
|
3008
3026
|
elif cmd in ["version", "-v", "--version"]:
|
|
3009
|
-
print("FirmwareLoop v0.6.
|
|
3027
|
+
print("FirmwareLoop v0.6.2")
|
|
3010
3028
|
sys.exit(0)
|
|
3011
3029
|
elif cmd in ["help", "-h", "--help"]:
|
|
3012
3030
|
print_cli_help()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<#
|
|
2
2
|
.SYNOPSIS
|
|
3
|
-
Dual-Tier MCP setup and registration helper (v0.6.
|
|
3
|
+
Dual-Tier MCP setup and registration helper (v0.6.2).
|
|
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.6.
|
|
245
|
+
Write-Host " FirmwareLoop Dual-Tier MCP & Agent Setup Helper (v0.6.2)" -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
|
|
File without changes
|
|
File without changes
|