{"_id":"@aspect-spy/asm","_rev":"9-ea220cf262f9e819a56feaa76d9d9f1b","name":"@aspect-spy/asm","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.0":{"name":"@aspect-spy/asm","version":"0.1.0","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.0","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"58e57d882107803ecca6e2c7a9c01331d12fa633","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.0.tgz","fileCount":32,"integrity":"sha512-5KBJxL+LZMvKha8obHeUxt0x+1fUiuzLuxnZCrFpKToaO/kP9C2oVt4KgTG69tzpzbSXS5M1l7aG96UAF6FdVg==","signatures":[{"sig":"MEYCIQCwIg3EKNl1Jk+zfu0TsfntMB18xO6OEYax02YljSR8NQIhAKVCsKSZheO92Xr4p2G55PCVcioYsP06DucWR25abH7p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83758},"type":"module","engines":{"node":">=18"},"gitHead":"2b4f2e475b34d240661874c032a41d31b626a7a6","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.0_1781538540310_0.4760835823548255","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aspect-spy/asm","version":"0.1.1","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.1","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"49ce146e6ee838fed5ede26b21facca0b733122c","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.1.tgz","fileCount":32,"integrity":"sha512-FPk15SfzZe89tK+H3kyiLtQC1PK7lrhubhcrFBzIudFxFVaQFZMHxsmQnRdkDvPxPWS27L3Wr70afhC3nCTTjg==","signatures":[{"sig":"MEUCIQDL7A8CCOjMvSAE0f7NdbQhJ3HdvhbwWnuV8RrxRBLWzAIgSmDj49cbdaEw4fYnPn38jD4OdnPfhpqZYEndQ4Tx53s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83756},"type":"module","engines":{"node":">=18"},"gitHead":"2b4f2e475b34d240661874c032a41d31b626a7a6","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.1_1781538603519_0.9997793412659881","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aspect-spy/asm","version":"0.1.2","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.2","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"e06d6b9b096afdc089c805e578ab84f4cffcd5dc","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.2.tgz","fileCount":32,"integrity":"sha512-/hEvPkgs076b9gX/kA8VrJodzrqObTFp+A+Nmson6rLYdhzbY14mMjJPBIXQgc38d/dfZ+m2R9pppE4aCzB6+A==","signatures":[{"sig":"MEQCIATdIa8WQqFoZ/efnqcTz4s4IEI3WB5Tk7XwUQ//kfW1AiBQinSX4jQ98Y9sxWX1Rie3tjmpKj6Gox8f290gzVaKBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83863},"type":"module","engines":{"node":">=18"},"gitHead":"5a0a263af420715ca0cd2db38c3a8cebc89a77e7","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.2_1781540260865_0.5105727520716825","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aspect-spy/asm","version":"0.1.3","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.3","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"7b2baa22c8eea8d5c698d758ad49d61965cb4f8e","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.3.tgz","fileCount":32,"integrity":"sha512-LNCUt+ja2NAqGSuCLOUNDiDcYY7Fo2XGpkVu59iskkIHZ1s6MVnLlweiqoN0d3khsMVHfQNbJbzPzJ3GI/JzCA==","signatures":[{"sig":"MEUCIQCA0hXjZO+wWcEgSa987rabIWU9J+2EZZhO8IFDK84qpwIgXSInXEriDHr/Z4z2fWJdf/6/C9mmQ10a90u7mt8Ul6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84128},"type":"module","engines":{"node":">=18"},"gitHead":"2e60b9972e3ba170ff9a9d2aaa385dececcbb6c9","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.3_1781540446082_0.16717016424739928","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aspect-spy/asm","version":"0.1.4","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.4","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"943c6c2a5699f51fd2f0d218640ef4158950a820","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.4.tgz","fileCount":32,"integrity":"sha512-JoTOtMa3c44hpPG0tqSNBWma1lL/o/C9DTHsdwKcg9PjiOCcIg5HYzq3rFrLDQbr/cNYu2cvJle7Ivp4HY7sKA==","signatures":[{"sig":"MEUCIQCSUuRwt+3Qe4hkPQx3MaXaDcgM4BN/1/sBcaiBKKLgtwIgfdZXaFmCHa8ddmTNK5YYNm1NCMBgVDM4J99Rdi7an1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86611},"type":"module","engines":{"node":">=18"},"gitHead":"5674087622089fa11e5dcdd9ce205eec6b4d8873","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.4_1781542336699_0.3642886792034563","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aspect-spy/asm","version":"0.1.5","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.5","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"78ca0a83a649d06b6bba460f1af3056451341609","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.5.tgz","fileCount":32,"integrity":"sha512-iwGflnMWcb4nfVSw5vdXpGyRfMyHJdg12wbVp93P1PiLK1XtOWxe1wIW1/66xPq8iKjllYg7owYmxqdO+chXHw==","signatures":[{"sig":"MEUCIQDfY6ceGJ2j0s6OBSjTkFWdYfnsGBPj+1//1h5SAYI5MgIgVFKf+Ca/TP0/DvSO59KCyRQftdsd0hwiVj897HTyam4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88522},"type":"module","engines":{"node":">=18"},"gitHead":"44d29026523064352475a40fa707196eaa1bccba","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.5_1781544180653_0.33791716641117686","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aspect-spy/asm","version":"0.1.6","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.6","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"560e2ccc383aa81beaf2c415329dabe941ec7725","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.6.tgz","fileCount":32,"integrity":"sha512-UJM1tXNTr7E0MiVNvcMGvkpQIT/0GPCJT9+Alk9nQl0HAOk/SKQQnq/ncRirY6A7sT9WVy/0lZ7KG7NctZl24g==","signatures":[{"sig":"MEUCIHquhC88fQGEBWZ716/R21uvqY3+ZPgIsw087W0NtyrOAiEA18XZm+oqVqok4Gh+Ny5Py9RGLoUviSGQwk3C5aFgoHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89669},"type":"module","engines":{"node":">=18"},"gitHead":"d921aa0fda7770ffa4859795bf7ea0b4611236c1","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.6_1781544951558_0.8079849678588256","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@aspect-spy/asm","version":"0.1.7","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","_id":"@aspect-spy/asm@0.1.7","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"homepage":"https://github.com/luckcoding78/asm#readme","bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"bin":{"asm":"dist/cli/index.js"},"dist":{"shasum":"a5c49907ea62aea347a6b365f06a37a1a221c869","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.7.tgz","fileCount":32,"integrity":"sha512-vaaiPxvwZbQ5hZ3hFOp3lYxkqH+WVdLPSeRxw+QLRn0Pe6/Aw/9JTZfq88fWs1EBbL4sjT9QkbU1GptWiCHD1g==","signatures":[{"sig":"MEUCIQCpdczmc7ssf+MGZheo7GeZDuV4w+vHmnF5mhRyfU0rwgIgCsCVu5RdOwU71Jqf3uoyhVF6w/dY8nPYh+2w6TCcZ6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89971},"type":"module","engines":{"node":">=18"},"gitHead":"08aad8f6056a86907fa40da14ff30fa56027639d","scripts":{"dev":"tsx src/cli/index.ts","build":"tsc","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"repository":{"url":"git+https://github.com/luckcoding78/asm.git","type":"git"},"_npmVersion":"11.13.0","description":"Agent Status Monitor — unified status monitoring for AI coding agents","directories":{},"_nodeVersion":"24.16.0","dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/asm_0.1.7_1781545740963_0.055933756402382295","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@aspect-spy/asm","version":"0.1.8","description":"Agent Status Monitor — unified status monitoring for AI coding agents","type":"module","bin":{"asm":"dist/cli/index.js"},"scripts":{"build":"tsc","dev":"tsx src/cli/index.ts","start":"node dist/cli/index.js","prepublishOnly":"npm run build"},"keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/luckcoding78/asm.git"},"bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"homepage":"https://github.com/luckcoding78/asm#readme","engines":{"node":">=18"},"dependencies":{"prompts":"^2.4.2","picocolors":"^1.1.1"},"devDependencies":{"@types/node":"^22.0.0","@types/prompts":"^2.4.9","tsx":"^4.19.0","typescript":"^5.6.0"},"gitHead":"8006bd04561fe056f64eedbfc4b5721be643a2fc","_id":"@aspect-spy/asm@0.1.8","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-qL+Swfd3uLsEVFYTmiQn39+oYDImrjYJ8XnJNqJazNbG9gZjZ5+VPdusMexzRXtVHAVFB7XjHWK7ILLfa15oJQ==","shasum":"0c76c59827024072904a049789f5eb7272a14c3d","tarball":"https://registry.npmjs.org/@aspect-spy/asm/-/asm-0.1.8.tgz","fileCount":32,"unpackedSize":91724,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGZ3PODlvQdoJxf+WhcEDkjuYeNKUilxyPZPdA93TYDQAiA/dNa8uf9mR3QvO4ntw4o6HMDc3pGWi6gbwN90rEvNiw=="}]},"_npmUser":{"name":"lucktuite","email":"lucktuite@outlook.com"},"directories":{},"maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/asm_0.1.8_1781591568337_0.207911109297225"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-15T15:49:00.215Z","modified":"2026-06-16T06:32:48.686Z","0.1.0":"2026-06-15T15:49:00.455Z","0.1.1":"2026-06-15T15:50:03.732Z","0.1.2":"2026-06-15T16:17:41.011Z","0.1.3":"2026-06-15T16:20:46.206Z","0.1.4":"2026-06-15T16:52:16.848Z","0.1.5":"2026-06-15T17:23:00.785Z","0.1.6":"2026-06-15T17:35:51.712Z","0.1.7":"2026-06-15T17:49:01.141Z","0.1.8":"2026-06-16T06:32:48.549Z"},"bugs":{"url":"https://github.com/luckcoding78/asm/issues"},"license":"MIT","homepage":"https://github.com/luckcoding78/asm#readme","keywords":["ai-agent","status-monitor","claude-code","codex","copilot","cursor","agent-status","monitoring","developer-tools"],"repository":{"type":"git","url":"git+https://github.com/luckcoding78/asm.git"},"description":"Agent Status Monitor — unified status monitoring for AI coding agents","maintainers":[{"name":"lucktuite","email":"lucktuite@outlook.com"}],"readme":"# ASM — Agent Status Monitor\n\n> AI 编程 Agent 的统一状态监控系统。实时采集 Claude Code、Codex、Copilot、Cursor 等 Agent 的运行状态，通过桌面端和移动端展示交通灯式状态指示。\n\n## 快速开始\n\n```bash\n# 安装\nnpm install -g @aspect-spy/asm\n\n# 或免安装直接使用\nnpx @aspect-spy/asm install\n```\n\n### 三步启动\n\n```bash\n# 1. 安装适配器（自动检测已安装的 Agent，选择要启用的）\nasm install\n\n# 2. 启动守护进程（后台持续采集状态 + 启动局域网数据服务）\nasm daemon\n\n# 3. 查看实时状态\nasm status\n```\n\n## 支持的 Agent\n\n| Agent | 采集方式 | 状态 |\n|-------|---------|------|\n| Claude Code | Hooks 事件驱动 | ✔ 已实现 |\n| OpenAI Codex | app-server / hooks | ✔ 已实现 |\n| GitHub Copilot | REST API 轮询 | ✔ 已实现 |\n| Cursor | Cloud API + 文件监控 | ✔ 已实现 |\n\n## 统一状态模型\n\n所有 Agent 的状态都映射到同一个模型：\n\n- **6 种基础状态**: idle / working / waiting / completed / error / offline\n- **12+ 种语义动作**: editing / testing / searching / thinking / building / git-operating 等\n\n无论数据来自哪个 Agent，消费端（桌面 App、移动 App）只看统一格式。\n\n## 架构\n\n```\nAI Agent (Claude Code / Codex / Copilot / Cursor)\n    │\n    │  Hooks 事件\n    ▼\n~/.asm/events.log  (JSON Lines)\n    │\n    │  asm daemon 持续读取\n    ▼\nStatusEngine  (状态机引擎)\n    │\n    ├──▶ ~/.asm/status.json  ──▶ 桌面端 (Electron 系统托盘)\n    │\n    └──▶ LAN Server (HTTP + SSE) ──▶ 移动端 (Expo APP)\n```\n\n## 组件\n\n### Plugin / CLI (`@aspect-spy/asm`)\n\n核心命令行工具，包含适配器安装、守护进程、状态查询。\n\n```bash\nnpm install -g @aspect-spy/asm\n```\n\n### 桌面端 (`asm-desktop`)\n\nElectron 系统托盘应用，交通灯颜色实时反映 Agent 状态。\n\n```bash\ncd asm-desktop\nnpm install && npm run build\n# Windows: start.bat\n# macOS/Linux: ./start.sh\n```\n\n### 移动端 (`asm-mobile`)\n\nExpo (React Native) APP，通过局域网 SSE 实时接收状态推送。\n\n```bash\ncd asm-mobile\nnpm install\nnpx expo start\n```\n\n## 命令参考\n\n| 命令 | 说明 |\n|------|------|\n| `asm install` | 交互式安装（检测 Agent + 选择适配器） |\n| `asm install --agent claude-code` | 直接安装指定适配器 |\n| `asm status` | 查看所有 Agent 实时状态 |\n| `asm daemon` | 启动守护进程（含 LAN 数据服务） |\n| `asm daemon --lan-port 8080` | 自定义 LAN 服务端口 |\n| `asm daemon --stop` | 停止守护进程 |\n| `asm uninstall` | 卸载适配器 |\n| `asm config` | 查看配置 |\n| `asm config --set notification.enabled=true` | 修改配置 |\n\n## 局域网数据 API\n\nDaemon 启动后自动在 `0.0.0.0:19527` 开启数据服务，供移动端 APP 消费：\n\n| 端点 | 说明 |\n|------|------|\n| `GET /api/status` | 完整全局状态 JSON |\n| `GET /api/agents` | Agent 列表（扁平数组） |\n| `GET /api/stream` | SSE 实时推送 |\n| `GET /api/health` | 健康检查 |\n| `GET /api/discovery` | 服务发现 |\n\n## 适配器安装细节\n\n以 Claude Code 为例，`asm install` 会：\n\n1. 生成 Hook 脚本到 `~/.asm/hooks/claude-code/`\n2. 注入 hooks 配置到 `~/.claude/settings.json`\n3. 生成 Plugin 文件到 `~/.asm/adapters/claude-code/plugin/`\n\nClaude Code 运行时，Hooks 自动将事件写入 `~/.asm/events.log`，由 `asm daemon` 消费。\n\n## 配置\n\n配置文件位于 `~/.asm/config.json`：\n\n```json\n{\n  \"adapters\": [\n    { \"type\": \"claude-code\", \"enabled\": true }\n  ],\n  \"notification\": {\n    \"enabled\": true,\n    \"platform\": \"auto\",\n    \"triggers\": [\n      { \"state\": \"completed\", \"title\": \"任务完成\", \"sound\": true },\n      { \"state\": \"error\", \"title\": \"任务出错\", \"sound\": true, \"urgency\": \"critical\" },\n      { \"state\": \"waiting.permission-waiting\", \"title\": \"需要确认权限\", \"sound\": false }\n    ]\n  },\n  \"webhook\": {\n    \"enabled\": false,\n    \"url\": \"https://your-server/api/status\"\n  }\n}\n```\n\n## 开发\n\n```bash\ngit clone https://github.com/luckcoding78/asm.git\ncd asm\nnpm install\nnpm run dev -- install    # 开发模式运行 install 命令\nnpm run build             # 构建\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}