@symerian/symi 3.0.21 → 3.0.22

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.
Files changed (688) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/package.json +1 -1
  4. package/docs/.i18n/README.md +0 -31
  5. package/docs/.i18n/glossary.ja-JP.json +0 -14
  6. package/docs/.i18n/glossary.zh-CN.json +0 -210
  7. package/docs/.i18n/ja-JP.tm.jsonl +0 -0
  8. package/docs/.i18n/zh-CN.tm.jsonl +0 -1303
  9. package/docs/CNAME +0 -1
  10. package/docs/assets/install-script.svg +0 -1
  11. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  12. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  13. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  14. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  15. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  16. package/docs/assets/pixel-symi.svg +0 -60
  17. package/docs/assets/showcase/agents-ui.jpg +0 -0
  18. package/docs/assets/showcase/bambu-cli.png +0 -0
  19. package/docs/assets/showcase/codexmonitor.png +0 -0
  20. package/docs/assets/showcase/gohome-grafana.png +0 -0
  21. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  22. package/docs/assets/showcase/oura-health.png +0 -0
  23. package/docs/assets/showcase/padel-cli.svg +0 -11
  24. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  25. package/docs/assets/showcase/papla-tts.jpg +0 -0
  26. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  27. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  28. package/docs/assets/showcase/roborock-status.svg +0 -13
  29. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  30. package/docs/assets/showcase/snag.png +0 -0
  31. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  32. package/docs/assets/showcase/wienerlinien.png +0 -0
  33. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  34. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  35. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  36. package/docs/assets/sponsors/blacksmith.svg +0 -14
  37. package/docs/assets/sponsors/openai.svg +0 -3
  38. package/docs/assets/symi-logo-text-dark.png +0 -0
  39. package/docs/assets/symi-logo-text.png +0 -0
  40. package/docs/automation/auth-monitoring.md +0 -44
  41. package/docs/automation/cron-jobs.md +0 -540
  42. package/docs/automation/cron-vs-heartbeat.md +0 -286
  43. package/docs/automation/gmail-pubsub.md +0 -256
  44. package/docs/automation/hooks.md +0 -998
  45. package/docs/automation/poll.md +0 -61
  46. package/docs/automation/troubleshooting.md +0 -122
  47. package/docs/automation/webhook.md +0 -213
  48. package/docs/brave-search.md +0 -41
  49. package/docs/capabilities.md +0 -151
  50. package/docs/channels/bluebubbles.md +0 -346
  51. package/docs/channels/broadcast-groups.md +0 -441
  52. package/docs/channels/channel-routing.md +0 -112
  53. package/docs/channels/feishu.md +0 -586
  54. package/docs/channels/googlechat.md +0 -253
  55. package/docs/channels/grammy.md +0 -31
  56. package/docs/channels/group-messages.md +0 -82
  57. package/docs/channels/groups.md +0 -364
  58. package/docs/channels/imessage.md +0 -366
  59. package/docs/channels/index.md +0 -46
  60. package/docs/channels/irc.md +0 -234
  61. package/docs/channels/line.md +0 -186
  62. package/docs/channels/location.md +0 -56
  63. package/docs/channels/matrix.md +0 -300
  64. package/docs/channels/mattermost.md +0 -158
  65. package/docs/channels/msteams.md +0 -769
  66. package/docs/channels/nextcloud-talk.md +0 -138
  67. package/docs/channels/nostr.md +0 -233
  68. package/docs/channels/pairing.md +0 -100
  69. package/docs/channels/signal.md +0 -322
  70. package/docs/channels/slack.md +0 -510
  71. package/docs/channels/telegram.md +0 -748
  72. package/docs/channels/tlon.md +0 -148
  73. package/docs/channels/troubleshooting.md +0 -110
  74. package/docs/channels/twitch.md +0 -379
  75. package/docs/channels/whatsapp.md +0 -444
  76. package/docs/channels/zalo.md +0 -192
  77. package/docs/channels/zalouser.md +0 -140
  78. package/docs/ci.md +0 -50
  79. package/docs/cli/acp.md +0 -182
  80. package/docs/cli/agent.md +0 -24
  81. package/docs/cli/agents.md +0 -75
  82. package/docs/cli/approvals.md +0 -50
  83. package/docs/cli/browser.md +0 -107
  84. package/docs/cli/channels.md +0 -73
  85. package/docs/cli/config.md +0 -50
  86. package/docs/cli/configure.md +0 -32
  87. package/docs/cli/cron.md +0 -44
  88. package/docs/cli/dashboard.md +0 -16
  89. package/docs/cli/devices.md +0 -73
  90. package/docs/cli/directory.md +0 -62
  91. package/docs/cli/dns.md +0 -23
  92. package/docs/cli/docs.md +0 -15
  93. package/docs/cli/doctor.md +0 -41
  94. package/docs/cli/gateway.md +0 -202
  95. package/docs/cli/health.md +0 -21
  96. package/docs/cli/hooks.md +0 -313
  97. package/docs/cli/index.md +0 -1029
  98. package/docs/cli/logs.md +0 -28
  99. package/docs/cli/memory.md +0 -45
  100. package/docs/cli/message.md +0 -214
  101. package/docs/cli/models.md +0 -79
  102. package/docs/cli/node.md +0 -112
  103. package/docs/cli/nodes.md +0 -73
  104. package/docs/cli/onboard.md +0 -76
  105. package/docs/cli/pairing.md +0 -21
  106. package/docs/cli/plugins.md +0 -92
  107. package/docs/cli/reset.md +0 -17
  108. package/docs/cli/sandbox.md +0 -152
  109. package/docs/cli/security.md +0 -64
  110. package/docs/cli/sessions.md +0 -16
  111. package/docs/cli/setup.md +0 -29
  112. package/docs/cli/skills.md +0 -26
  113. package/docs/cli/status.md +0 -25
  114. package/docs/cli/system.md +0 -60
  115. package/docs/cli/tui.md +0 -23
  116. package/docs/cli/uninstall.md +0 -17
  117. package/docs/cli/update.md +0 -98
  118. package/docs/cli/voicecall.md +0 -34
  119. package/docs/cli/webhooks.md +0 -25
  120. package/docs/concepts/agent-loop.md +0 -148
  121. package/docs/concepts/agent-workspace.md +0 -234
  122. package/docs/concepts/agent.md +0 -123
  123. package/docs/concepts/architecture.md +0 -135
  124. package/docs/concepts/compaction.md +0 -61
  125. package/docs/concepts/context.md +0 -161
  126. package/docs/concepts/features.md +0 -51
  127. package/docs/concepts/markdown-formatting.md +0 -128
  128. package/docs/concepts/memory.md +0 -729
  129. package/docs/concepts/messages.md +0 -153
  130. package/docs/concepts/model-failover.md +0 -149
  131. package/docs/concepts/model-providers.md +0 -424
  132. package/docs/concepts/models.md +0 -208
  133. package/docs/concepts/multi-agent.md +0 -521
  134. package/docs/concepts/oauth.md +0 -145
  135. package/docs/concepts/presence.md +0 -102
  136. package/docs/concepts/queue.md +0 -86
  137. package/docs/concepts/retry.md +0 -64
  138. package/docs/concepts/session-pruning.md +0 -123
  139. package/docs/concepts/session-tool.md +0 -213
  140. package/docs/concepts/session.md +0 -199
  141. package/docs/concepts/sessions.md +0 -10
  142. package/docs/concepts/streaming.md +0 -129
  143. package/docs/concepts/system-prompt.md +0 -128
  144. package/docs/concepts/timezone.md +0 -90
  145. package/docs/concepts/typebox.md +0 -289
  146. package/docs/concepts/typing-indicators.md +0 -68
  147. package/docs/concepts/usage-tracking.md +0 -35
  148. package/docs/date-time.md +0 -127
  149. package/docs/debug/node-issue.md +0 -85
  150. package/docs/diagnostics/flags.md +0 -91
  151. package/docs/docs.json +0 -1849
  152. package/docs/experiments/onboarding-config-protocol.md +0 -40
  153. package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +0 -229
  154. package/docs/experiments/plans/cron-add-hardening.md +0 -62
  155. package/docs/experiments/plans/group-policy-hardening.md +0 -40
  156. package/docs/experiments/plans/openresponses-gateway.md +0 -123
  157. package/docs/experiments/plans/pty-process-supervision.md +0 -192
  158. package/docs/experiments/plans/session-binding-channel-agnostic.md +0 -202
  159. package/docs/experiments/plans/thread-bound-subagents.md +0 -281
  160. package/docs/experiments/proposals/model-config.md +0 -36
  161. package/docs/experiments/research/memory.md +0 -228
  162. package/docs/gateway/authentication.md +0 -162
  163. package/docs/gateway/background-process.md +0 -96
  164. package/docs/gateway/bonjour.md +0 -177
  165. package/docs/gateway/bridge-protocol.md +0 -91
  166. package/docs/gateway/cli-backends.md +0 -225
  167. package/docs/gateway/configuration-examples.md +0 -610
  168. package/docs/gateway/configuration-reference.md +0 -2465
  169. package/docs/gateway/configuration.md +0 -488
  170. package/docs/gateway/discovery.md +0 -123
  171. package/docs/gateway/doctor.md +0 -282
  172. package/docs/gateway/gateway-lock.md +0 -34
  173. package/docs/gateway/health.md +0 -35
  174. package/docs/gateway/heartbeat.md +0 -374
  175. package/docs/gateway/index.md +0 -254
  176. package/docs/gateway/local-models.md +0 -150
  177. package/docs/gateway/logging.md +0 -113
  178. package/docs/gateway/multiple-gateways.md +0 -112
  179. package/docs/gateway/network-model.md +0 -20
  180. package/docs/gateway/openai-http-api.md +0 -119
  181. package/docs/gateway/openresponses-http-api.md +0 -333
  182. package/docs/gateway/pairing.md +0 -99
  183. package/docs/gateway/protocol.md +0 -221
  184. package/docs/gateway/remote-gateway-readme.md +0 -158
  185. package/docs/gateway/remote.md +0 -131
  186. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -128
  187. package/docs/gateway/sandboxing.md +0 -203
  188. package/docs/gateway/security/index.md +0 -931
  189. package/docs/gateway/tailscale.md +0 -132
  190. package/docs/gateway/tools-invoke-http-api.md +0 -110
  191. package/docs/gateway/troubleshooting.md +0 -317
  192. package/docs/gateway/trusted-proxy-auth.md +0 -270
  193. package/docs/glass-ui-rendering-invariants.md +0 -451
  194. package/docs/help/debugging.md +0 -162
  195. package/docs/help/environment.md +0 -107
  196. package/docs/help/faq.md +0 -2846
  197. package/docs/help/index.md +0 -21
  198. package/docs/help/scripts.md +0 -28
  199. package/docs/help/testing.md +0 -385
  200. package/docs/help/troubleshooting.md +0 -264
  201. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  202. package/docs/images/feishu-step2-create-app.png +0 -0
  203. package/docs/images/feishu-step3-credentials.png +0 -0
  204. package/docs/images/feishu-step4-permissions.png +0 -0
  205. package/docs/images/feishu-step5-bot-capability.png +0 -0
  206. package/docs/images/feishu-step6-event-subscription.png +0 -0
  207. package/docs/images/groups-flow.svg +0 -52
  208. package/docs/images/mobile-ui-screenshot.png +0 -0
  209. package/docs/index.md +0 -186
  210. package/docs/install/ansible.md +0 -207
  211. package/docs/install/bun.md +0 -59
  212. package/docs/install/development-channels.md +0 -75
  213. package/docs/install/docker.md +0 -583
  214. package/docs/install/exe-dev.md +0 -126
  215. package/docs/install/fly.md +0 -472
  216. package/docs/install/gcp.md +0 -499
  217. package/docs/install/hetzner.md +0 -347
  218. package/docs/install/index.md +0 -218
  219. package/docs/install/installer.md +0 -405
  220. package/docs/install/macos-vm.md +0 -281
  221. package/docs/install/migrating.md +0 -192
  222. package/docs/install/nix.md +0 -98
  223. package/docs/install/node.md +0 -138
  224. package/docs/install/northflank.mdx +0 -49
  225. package/docs/install/podman.md +0 -108
  226. package/docs/install/railway.mdx +0 -95
  227. package/docs/install/render.mdx +0 -158
  228. package/docs/install/uninstall.md +0 -128
  229. package/docs/install/updating.md +0 -231
  230. package/docs/ja-JP/AGENTS.md +0 -37
  231. package/docs/ja-JP/index.md +0 -183
  232. package/docs/ja-JP/start/getting-started.md +0 -125
  233. package/docs/ja-JP/start/wizard.md +0 -77
  234. package/docs/logging.md +0 -350
  235. package/docs/nav-tabs-underline.js +0 -100
  236. package/docs/network.md +0 -54
  237. package/docs/nodes/audio.md +0 -133
  238. package/docs/nodes/camera.md +0 -156
  239. package/docs/nodes/images.md +0 -72
  240. package/docs/nodes/index.md +0 -342
  241. package/docs/nodes/location-command.md +0 -113
  242. package/docs/nodes/media-understanding.md +0 -379
  243. package/docs/nodes/talk.md +0 -90
  244. package/docs/nodes/troubleshooting.md +0 -112
  245. package/docs/nodes/voicewake.md +0 -65
  246. package/docs/perplexity.md +0 -80
  247. package/docs/phase-6.5-pre-flight-audit.md +0 -268
  248. package/docs/pi-dev.md +0 -70
  249. package/docs/pi.md +0 -610
  250. package/docs/platforms/android.md +0 -151
  251. package/docs/platforms/digitalocean.md +0 -265
  252. package/docs/platforms/index.md +0 -53
  253. package/docs/platforms/ios.md +0 -108
  254. package/docs/platforms/linux.md +0 -94
  255. package/docs/platforms/mac/bundled-gateway.md +0 -73
  256. package/docs/platforms/mac/canvas.md +0 -125
  257. package/docs/platforms/mac/child-process.md +0 -69
  258. package/docs/platforms/mac/dev-setup.md +0 -104
  259. package/docs/platforms/mac/health.md +0 -34
  260. package/docs/platforms/mac/icon.md +0 -31
  261. package/docs/platforms/mac/logging.md +0 -57
  262. package/docs/platforms/mac/menu-bar.md +0 -81
  263. package/docs/platforms/mac/peekaboo.md +0 -65
  264. package/docs/platforms/mac/permissions.md +0 -50
  265. package/docs/platforms/mac/release.md +0 -85
  266. package/docs/platforms/mac/remote.md +0 -84
  267. package/docs/platforms/mac/signing.md +0 -47
  268. package/docs/platforms/mac/skills.md +0 -33
  269. package/docs/platforms/mac/voice-overlay.md +0 -60
  270. package/docs/platforms/mac/voicewake.md +0 -66
  271. package/docs/platforms/mac/webchat.md +0 -43
  272. package/docs/platforms/mac/xpc.md +0 -61
  273. package/docs/platforms/macos.md +0 -204
  274. package/docs/platforms/oracle.md +0 -303
  275. package/docs/platforms/raspberry-pi.md +0 -358
  276. package/docs/platforms/windows.md +0 -159
  277. package/docs/plugins/agent-tools.md +0 -99
  278. package/docs/plugins/community.md +0 -44
  279. package/docs/plugins/manifest.md +0 -71
  280. package/docs/plugins/voice-call.md +0 -322
  281. package/docs/plugins/zalouser.md +0 -81
  282. package/docs/prose.md +0 -134
  283. package/docs/providers/anthropic.md +0 -174
  284. package/docs/providers/bedrock.md +0 -176
  285. package/docs/providers/claude-max-api-proxy.md +0 -148
  286. package/docs/providers/cloudflare-ai-gateway.md +0 -71
  287. package/docs/providers/deepgram.md +0 -93
  288. package/docs/providers/github-copilot.md +0 -72
  289. package/docs/providers/glm.md +0 -33
  290. package/docs/providers/huggingface.md +0 -209
  291. package/docs/providers/index.md +0 -67
  292. package/docs/providers/litellm.md +0 -153
  293. package/docs/providers/minimax.md +0 -208
  294. package/docs/providers/models.md +0 -52
  295. package/docs/providers/moonshot.md +0 -142
  296. package/docs/providers/nvidia.md +0 -55
  297. package/docs/providers/ollama.md +0 -250
  298. package/docs/providers/openai.md +0 -62
  299. package/docs/providers/opencode.md +0 -36
  300. package/docs/providers/openrouter.md +0 -37
  301. package/docs/providers/qianfan.md +0 -38
  302. package/docs/providers/qwen.md +0 -53
  303. package/docs/providers/synthetic.md +0 -99
  304. package/docs/providers/together.md +0 -65
  305. package/docs/providers/venice.md +0 -267
  306. package/docs/providers/vercel-ai-gateway.md +0 -50
  307. package/docs/providers/vllm.md +0 -92
  308. package/docs/providers/xiaomi.md +0 -64
  309. package/docs/providers/zai.md +0 -38
  310. package/docs/refactor/exec-host.md +0 -316
  311. package/docs/refactor/outbound-session-mirroring.md +0 -83
  312. package/docs/refactor/plugin-sdk.md +0 -214
  313. package/docs/refactor/strict-config.md +0 -93
  314. package/docs/refactor/syminet.md +0 -417
  315. package/docs/reference/AGENTS.default.md +0 -123
  316. package/docs/reference/RELEASING.md +0 -120
  317. package/docs/reference/api-usage-costs.md +0 -138
  318. package/docs/reference/credits.md +0 -28
  319. package/docs/reference/device-models.md +0 -47
  320. package/docs/reference/rpc.md +0 -43
  321. package/docs/reference/session-management-compaction.md +0 -284
  322. package/docs/reference/test.md +0 -51
  323. package/docs/reference/token-use.md +0 -136
  324. package/docs/reference/transcript-hygiene.md +0 -151
  325. package/docs/reference/wizard.md +0 -265
  326. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -89
  327. package/docs/security/README.md +0 -16
  328. package/docs/security/THREAT-MODEL-ATLAS.md +0 -600
  329. package/docs/security/formal-verification.md +0 -164
  330. package/docs/start/bootstrapping.md +0 -41
  331. package/docs/start/docs-directory.md +0 -63
  332. package/docs/start/getting-started.md +0 -135
  333. package/docs/start/hubs.md +0 -196
  334. package/docs/start/lore.md +0 -216
  335. package/docs/start/onboarding-overview.md +0 -51
  336. package/docs/start/onboarding.md +0 -81
  337. package/docs/start/quickstart.md +0 -22
  338. package/docs/start/setup.md +0 -160
  339. package/docs/start/showcase.md +0 -414
  340. package/docs/start/symi.md +0 -211
  341. package/docs/start/wizard-cli-automation.md +0 -158
  342. package/docs/start/wizard-cli-reference.md +0 -255
  343. package/docs/start/wizard.md +0 -109
  344. package/docs/style.css +0 -37
  345. package/docs/tools/agent-send.md +0 -52
  346. package/docs/tools/apply-patch.md +0 -51
  347. package/docs/tools/browser-linux-troubleshooting.md +0 -139
  348. package/docs/tools/browser-login.md +0 -67
  349. package/docs/tools/browser.md +0 -587
  350. package/docs/tools/chrome-extension.md +0 -183
  351. package/docs/tools/creating-skills.md +0 -54
  352. package/docs/tools/elevated.md +0 -55
  353. package/docs/tools/exec-approvals.md +0 -261
  354. package/docs/tools/exec.md +0 -184
  355. package/docs/tools/firecrawl.md +0 -61
  356. package/docs/tools/index.md +0 -540
  357. package/docs/tools/llm-task.md +0 -115
  358. package/docs/tools/loop-detection.md +0 -98
  359. package/docs/tools/multi-agent-sandbox-tools.md +0 -396
  360. package/docs/tools/pipeline.md +0 -340
  361. package/docs/tools/plugin.md +0 -687
  362. package/docs/tools/reactions.md +0 -21
  363. package/docs/tools/skills-config.md +0 -76
  364. package/docs/tools/skills.md +0 -300
  365. package/docs/tools/slash-commands.md +0 -202
  366. package/docs/tools/subagents.md +0 -232
  367. package/docs/tools/symihub.md +0 -256
  368. package/docs/tools/thinking.md +0 -75
  369. package/docs/tools/web.md +0 -265
  370. package/docs/tts.md +0 -398
  371. package/docs/vps.md +0 -43
  372. package/docs/web/control-ui.md +0 -247
  373. package/docs/web/dashboard.md +0 -46
  374. package/docs/web/index.md +0 -118
  375. package/docs/web/tui.md +0 -162
  376. package/docs/web/webchat.md +0 -53
  377. package/docs/whatsapp-symi-ai-zh.jpg +0 -0
  378. package/docs/whatsapp-symi.jpg +0 -0
  379. package/docs/zh-CN/AGENTS.md +0 -59
  380. package/docs/zh-CN/automation/auth-monitoring.md +0 -47
  381. package/docs/zh-CN/automation/cron-jobs.md +0 -422
  382. package/docs/zh-CN/automation/cron-vs-heartbeat.md +0 -286
  383. package/docs/zh-CN/automation/gmail-pubsub.md +0 -249
  384. package/docs/zh-CN/automation/hooks.md +0 -881
  385. package/docs/zh-CN/automation/poll.md +0 -68
  386. package/docs/zh-CN/automation/troubleshooting.md +0 -8
  387. package/docs/zh-CN/automation/webhook.md +0 -161
  388. package/docs/zh-CN/brave-search.md +0 -48
  389. package/docs/zh-CN/channels/bluebubbles.md +0 -271
  390. package/docs/zh-CN/channels/broadcast-groups.md +0 -448
  391. package/docs/zh-CN/channels/channel-routing.md +0 -112
  392. package/docs/zh-CN/channels/feishu.md +0 -629
  393. package/docs/zh-CN/channels/googlechat.md +0 -257
  394. package/docs/zh-CN/channels/grammy.md +0 -38
  395. package/docs/zh-CN/channels/group-messages.md +0 -89
  396. package/docs/zh-CN/channels/groups.md +0 -369
  397. package/docs/zh-CN/channels/imessage.md +0 -300
  398. package/docs/zh-CN/channels/index.md +0 -52
  399. package/docs/zh-CN/channels/line.md +0 -180
  400. package/docs/zh-CN/channels/location.md +0 -63
  401. package/docs/zh-CN/channels/matrix.md +0 -221
  402. package/docs/zh-CN/channels/mattermost.md +0 -144
  403. package/docs/zh-CN/channels/msteams.md +0 -773
  404. package/docs/zh-CN/channels/nextcloud-talk.md +0 -142
  405. package/docs/zh-CN/channels/nostr.md +0 -240
  406. package/docs/zh-CN/channels/pairing.md +0 -86
  407. package/docs/zh-CN/channels/signal.md +0 -207
  408. package/docs/zh-CN/channels/slack.md +0 -529
  409. package/docs/zh-CN/channels/telegram.md +0 -748
  410. package/docs/zh-CN/channels/tlon.md +0 -136
  411. package/docs/zh-CN/channels/troubleshooting.md +0 -34
  412. package/docs/zh-CN/channels/twitch.md +0 -385
  413. package/docs/zh-CN/channels/whatsapp.md +0 -411
  414. package/docs/zh-CN/channels/zalo.md +0 -196
  415. package/docs/zh-CN/channels/zalouser.md +0 -147
  416. package/docs/zh-CN/cli/acp.md +0 -173
  417. package/docs/zh-CN/cli/agent.md +0 -30
  418. package/docs/zh-CN/cli/agents.md +0 -82
  419. package/docs/zh-CN/cli/approvals.md +0 -57
  420. package/docs/zh-CN/cli/browser.md +0 -114
  421. package/docs/zh-CN/cli/channels.md +0 -80
  422. package/docs/zh-CN/cli/config.md +0 -57
  423. package/docs/zh-CN/cli/configure.md +0 -37
  424. package/docs/zh-CN/cli/cron.md +0 -43
  425. package/docs/zh-CN/cli/dashboard.md +0 -23
  426. package/docs/zh-CN/cli/devices.md +0 -74
  427. package/docs/zh-CN/cli/directory.md +0 -69
  428. package/docs/zh-CN/cli/dns.md +0 -30
  429. package/docs/zh-CN/cli/docs.md +0 -22
  430. package/docs/zh-CN/cli/doctor.md +0 -48
  431. package/docs/zh-CN/cli/gateway.md +0 -206
  432. package/docs/zh-CN/cli/health.md +0 -28
  433. package/docs/zh-CN/cli/hooks.md +0 -298
  434. package/docs/zh-CN/cli/index.md +0 -1025
  435. package/docs/zh-CN/cli/logs.md +0 -31
  436. package/docs/zh-CN/cli/memory.md +0 -52
  437. package/docs/zh-CN/cli/message.md +0 -205
  438. package/docs/zh-CN/cli/models.md +0 -85
  439. package/docs/zh-CN/cli/node.md +0 -115
  440. package/docs/zh-CN/cli/nodes.md +0 -80
  441. package/docs/zh-CN/cli/onboard.md +0 -36
  442. package/docs/zh-CN/cli/pairing.md +0 -28
  443. package/docs/zh-CN/cli/plugins.md +0 -66
  444. package/docs/zh-CN/cli/reset.md +0 -24
  445. package/docs/zh-CN/cli/sandbox.md +0 -158
  446. package/docs/zh-CN/cli/security.md +0 -33
  447. package/docs/zh-CN/cli/sessions.md +0 -23
  448. package/docs/zh-CN/cli/setup.md +0 -36
  449. package/docs/zh-CN/cli/skills.md +0 -33
  450. package/docs/zh-CN/cli/status.md +0 -32
  451. package/docs/zh-CN/cli/system.md +0 -63
  452. package/docs/zh-CN/cli/tui.md +0 -30
  453. package/docs/zh-CN/cli/uninstall.md +0 -24
  454. package/docs/zh-CN/cli/update.md +0 -101
  455. package/docs/zh-CN/cli/voicecall.md +0 -41
  456. package/docs/zh-CN/cli/webhooks.md +0 -32
  457. package/docs/zh-CN/concepts/agent-loop.md +0 -146
  458. package/docs/zh-CN/concepts/agent-workspace.md +0 -219
  459. package/docs/zh-CN/concepts/agent.md +0 -115
  460. package/docs/zh-CN/concepts/architecture.md +0 -122
  461. package/docs/zh-CN/concepts/compaction.md +0 -67
  462. package/docs/zh-CN/concepts/context.md +0 -168
  463. package/docs/zh-CN/concepts/features.md +0 -57
  464. package/docs/zh-CN/concepts/markdown-formatting.md +0 -115
  465. package/docs/zh-CN/concepts/memory.md +0 -412
  466. package/docs/zh-CN/concepts/messages.md +0 -140
  467. package/docs/zh-CN/concepts/model-failover.md +0 -145
  468. package/docs/zh-CN/concepts/model-providers.md +0 -320
  469. package/docs/zh-CN/concepts/models.md +0 -196
  470. package/docs/zh-CN/concepts/multi-agent.md +0 -371
  471. package/docs/zh-CN/concepts/oauth.md +0 -151
  472. package/docs/zh-CN/concepts/presence.md +0 -99
  473. package/docs/zh-CN/concepts/queue.md +0 -91
  474. package/docs/zh-CN/concepts/retry.md +0 -71
  475. package/docs/zh-CN/concepts/session-pruning.md +0 -129
  476. package/docs/zh-CN/concepts/session-tool.md +0 -198
  477. package/docs/zh-CN/concepts/session.md +0 -158
  478. package/docs/zh-CN/concepts/sessions.md +0 -17
  479. package/docs/zh-CN/concepts/streaming.md +0 -131
  480. package/docs/zh-CN/concepts/system-prompt.md +0 -99
  481. package/docs/zh-CN/concepts/timezone.md +0 -94
  482. package/docs/zh-CN/concepts/typebox.md +0 -284
  483. package/docs/zh-CN/concepts/typing-indicators.md +0 -74
  484. package/docs/zh-CN/concepts/usage-tracking.md +0 -42
  485. package/docs/zh-CN/date-time.md +0 -128
  486. package/docs/zh-CN/debug/node-issue.md +0 -90
  487. package/docs/zh-CN/diagnostics/flags.md +0 -98
  488. package/docs/zh-CN/experiments/onboarding-config-protocol.md +0 -47
  489. package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -69
  490. package/docs/zh-CN/experiments/plans/group-policy-hardening.md +0 -45
  491. package/docs/zh-CN/experiments/plans/openresponses-gateway.md +0 -121
  492. package/docs/zh-CN/experiments/proposals/model-config.md +0 -42
  493. package/docs/zh-CN/experiments/research/memory.md +0 -235
  494. package/docs/zh-CN/gateway/authentication.md +0 -142
  495. package/docs/zh-CN/gateway/background-process.md +0 -100
  496. package/docs/zh-CN/gateway/bonjour.md +0 -174
  497. package/docs/zh-CN/gateway/bridge-protocol.md +0 -86
  498. package/docs/zh-CN/gateway/cli-backends.md +0 -213
  499. package/docs/zh-CN/gateway/configuration-examples.md +0 -580
  500. package/docs/zh-CN/gateway/configuration.md +0 -3284
  501. package/docs/zh-CN/gateway/discovery.md +0 -123
  502. package/docs/zh-CN/gateway/doctor.md +0 -238
  503. package/docs/zh-CN/gateway/gateway-lock.md +0 -41
  504. package/docs/zh-CN/gateway/health.md +0 -42
  505. package/docs/zh-CN/gateway/heartbeat.md +0 -272
  506. package/docs/zh-CN/gateway/index.md +0 -335
  507. package/docs/zh-CN/gateway/local-models.md +0 -157
  508. package/docs/zh-CN/gateway/logging.md +0 -114
  509. package/docs/zh-CN/gateway/multiple-gateways.md +0 -119
  510. package/docs/zh-CN/gateway/network-model.md +0 -23
  511. package/docs/zh-CN/gateway/openai-http-api.md +0 -125
  512. package/docs/zh-CN/gateway/openresponses-http-api.md +0 -317
  513. package/docs/zh-CN/gateway/pairing.md +0 -99
  514. package/docs/zh-CN/gateway/protocol.md +0 -220
  515. package/docs/zh-CN/gateway/remote-gateway-readme.md +0 -164
  516. package/docs/zh-CN/gateway/remote.md +0 -133
  517. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -135
  518. package/docs/zh-CN/gateway/sandboxing.md +0 -188
  519. package/docs/zh-CN/gateway/security/index.md +0 -772
  520. package/docs/zh-CN/gateway/tailscale.md +0 -124
  521. package/docs/zh-CN/gateway/tools-invoke-http-api.md +0 -92
  522. package/docs/zh-CN/gateway/troubleshooting.md +0 -758
  523. package/docs/zh-CN/help/debugging.md +0 -160
  524. package/docs/zh-CN/help/environment.md +0 -88
  525. package/docs/zh-CN/help/faq.md +0 -2613
  526. package/docs/zh-CN/help/index.md +0 -28
  527. package/docs/zh-CN/help/scripts.md +0 -35
  528. package/docs/zh-CN/help/testing.md +0 -375
  529. package/docs/zh-CN/help/troubleshooting.md +0 -104
  530. package/docs/zh-CN/index.md +0 -183
  531. package/docs/zh-CN/install/ansible.md +0 -214
  532. package/docs/zh-CN/install/bun.md +0 -65
  533. package/docs/zh-CN/install/development-channels.md +0 -81
  534. package/docs/zh-CN/install/docker.md +0 -525
  535. package/docs/zh-CN/install/exe-dev.md +0 -127
  536. package/docs/zh-CN/install/fly.md +0 -476
  537. package/docs/zh-CN/install/gcp.md +0 -509
  538. package/docs/zh-CN/install/hetzner.md +0 -336
  539. package/docs/zh-CN/install/index.md +0 -193
  540. package/docs/zh-CN/install/installer.md +0 -128
  541. package/docs/zh-CN/install/macos-vm.md +0 -288
  542. package/docs/zh-CN/install/migrating.md +0 -199
  543. package/docs/zh-CN/install/nix.md +0 -99
  544. package/docs/zh-CN/install/node.md +0 -8
  545. package/docs/zh-CN/install/northflank.mdx +0 -56
  546. package/docs/zh-CN/install/railway.mdx +0 -102
  547. package/docs/zh-CN/install/render.mdx +0 -168
  548. package/docs/zh-CN/install/uninstall.md +0 -135
  549. package/docs/zh-CN/install/updating.md +0 -233
  550. package/docs/zh-CN/logging.md +0 -329
  551. package/docs/zh-CN/network.md +0 -59
  552. package/docs/zh-CN/nodes/audio.md +0 -120
  553. package/docs/zh-CN/nodes/camera.md +0 -162
  554. package/docs/zh-CN/nodes/images.md +0 -79
  555. package/docs/zh-CN/nodes/index.md +0 -348
  556. package/docs/zh-CN/nodes/location-command.md +0 -120
  557. package/docs/zh-CN/nodes/media-understanding.md +0 -380
  558. package/docs/zh-CN/nodes/talk.md +0 -97
  559. package/docs/zh-CN/nodes/troubleshooting.md +0 -8
  560. package/docs/zh-CN/nodes/voicewake.md +0 -72
  561. package/docs/zh-CN/perplexity.md +0 -84
  562. package/docs/zh-CN/pi-dev.md +0 -77
  563. package/docs/zh-CN/pi.md +0 -617
  564. package/docs/zh-CN/platforms/android.md +0 -155
  565. package/docs/zh-CN/platforms/digitalocean.md +0 -268
  566. package/docs/zh-CN/platforms/index.md +0 -60
  567. package/docs/zh-CN/platforms/ios.md +0 -114
  568. package/docs/zh-CN/platforms/linux.md +0 -101
  569. package/docs/zh-CN/platforms/mac/bundled-gateway.md +0 -75
  570. package/docs/zh-CN/platforms/mac/canvas.md +0 -128
  571. package/docs/zh-CN/platforms/mac/child-process.md +0 -73
  572. package/docs/zh-CN/platforms/mac/dev-setup.md +0 -109
  573. package/docs/zh-CN/platforms/mac/health.md +0 -41
  574. package/docs/zh-CN/platforms/mac/icon.md +0 -38
  575. package/docs/zh-CN/platforms/mac/logging.md +0 -64
  576. package/docs/zh-CN/platforms/mac/menu-bar.md +0 -88
  577. package/docs/zh-CN/platforms/mac/peekaboo.md +0 -62
  578. package/docs/zh-CN/platforms/mac/permissions.md +0 -46
  579. package/docs/zh-CN/platforms/mac/release.md +0 -92
  580. package/docs/zh-CN/platforms/mac/remote.md +0 -90
  581. package/docs/zh-CN/platforms/mac/signing.md +0 -54
  582. package/docs/zh-CN/platforms/mac/skills.md +0 -40
  583. package/docs/zh-CN/platforms/mac/voice-overlay.md +0 -67
  584. package/docs/zh-CN/platforms/mac/voicewake.md +0 -73
  585. package/docs/zh-CN/platforms/mac/webchat.md +0 -43
  586. package/docs/zh-CN/platforms/mac/xpc.md +0 -68
  587. package/docs/zh-CN/platforms/macos.md +0 -193
  588. package/docs/zh-CN/platforms/oracle.md +0 -310
  589. package/docs/zh-CN/platforms/raspberry-pi.md +0 -365
  590. package/docs/zh-CN/platforms/windows.md +0 -156
  591. package/docs/zh-CN/plugins/agent-tools.md +0 -99
  592. package/docs/zh-CN/plugins/manifest.md +0 -68
  593. package/docs/zh-CN/plugins/voice-call.md +0 -250
  594. package/docs/zh-CN/plugins/zalouser.md +0 -88
  595. package/docs/zh-CN/prose.md +0 -141
  596. package/docs/zh-CN/providers/anthropic.md +0 -159
  597. package/docs/zh-CN/providers/bedrock.md +0 -170
  598. package/docs/zh-CN/providers/claude-max-api-proxy.md +0 -155
  599. package/docs/zh-CN/providers/deepgram.md +0 -97
  600. package/docs/zh-CN/providers/github-copilot.md +0 -67
  601. package/docs/zh-CN/providers/glm.md +0 -39
  602. package/docs/zh-CN/providers/index.md +0 -66
  603. package/docs/zh-CN/providers/minimax.md +0 -206
  604. package/docs/zh-CN/providers/models.md +0 -55
  605. package/docs/zh-CN/providers/moonshot.md +0 -145
  606. package/docs/zh-CN/providers/ollama.md +0 -230
  607. package/docs/zh-CN/providers/openai.md +0 -68
  608. package/docs/zh-CN/providers/opencode.md +0 -41
  609. package/docs/zh-CN/providers/openrouter.md +0 -43
  610. package/docs/zh-CN/providers/qianfan.md +0 -8
  611. package/docs/zh-CN/providers/qwen.md +0 -55
  612. package/docs/zh-CN/providers/synthetic.md +0 -102
  613. package/docs/zh-CN/providers/venice.md +0 -274
  614. package/docs/zh-CN/providers/vercel-ai-gateway.md +0 -57
  615. package/docs/zh-CN/providers/xiaomi.md +0 -68
  616. package/docs/zh-CN/providers/zai.md +0 -41
  617. package/docs/zh-CN/refactor/exec-host.md +0 -323
  618. package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -90
  619. package/docs/zh-CN/refactor/plugin-sdk.md +0 -221
  620. package/docs/zh-CN/refactor/strict-config.md +0 -100
  621. package/docs/zh-CN/refactor/syminet.md +0 -424
  622. package/docs/zh-CN/reference/AGENTS.default.md +0 -130
  623. package/docs/zh-CN/reference/RELEASING.md +0 -122
  624. package/docs/zh-CN/reference/api-usage-costs.md +0 -136
  625. package/docs/zh-CN/reference/credits.md +0 -34
  626. package/docs/zh-CN/reference/device-models.md +0 -54
  627. package/docs/zh-CN/reference/rpc.md +0 -48
  628. package/docs/zh-CN/reference/session-management-compaction.md +0 -286
  629. package/docs/zh-CN/reference/templates/AGENTS.dev.md +0 -89
  630. package/docs/zh-CN/reference/templates/AGENTS.md +0 -234
  631. package/docs/zh-CN/reference/templates/BOOT.md +0 -17
  632. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +0 -68
  633. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +0 -54
  634. package/docs/zh-CN/reference/templates/IDENTITY.md +0 -36
  635. package/docs/zh-CN/reference/templates/SYMICORE.dev.md +0 -83
  636. package/docs/zh-CN/reference/templates/SYMICORE.md +0 -49
  637. package/docs/zh-CN/reference/templates/SYMIPULSE.md +0 -69
  638. package/docs/zh-CN/reference/templates/TOOLS.dev.md +0 -31
  639. package/docs/zh-CN/reference/templates/TOOLS.md +0 -53
  640. package/docs/zh-CN/reference/templates/USER.dev.md +0 -25
  641. package/docs/zh-CN/reference/templates/USER.md +0 -30
  642. package/docs/zh-CN/reference/test.md +0 -57
  643. package/docs/zh-CN/reference/token-use.md +0 -119
  644. package/docs/zh-CN/reference/transcript-hygiene.md +0 -109
  645. package/docs/zh-CN/reference/wizard.md +0 -9
  646. package/docs/zh-CN/security/formal-verification.md +0 -171
  647. package/docs/zh-CN/start/bootstrapping.md +0 -9
  648. package/docs/zh-CN/start/docs-directory.md +0 -69
  649. package/docs/zh-CN/start/getting-started.md +0 -201
  650. package/docs/zh-CN/start/hubs.md +0 -199
  651. package/docs/zh-CN/start/lore.md +0 -223
  652. package/docs/zh-CN/start/onboarding.md +0 -105
  653. package/docs/zh-CN/start/quickstart.md +0 -88
  654. package/docs/zh-CN/start/setup.md +0 -151
  655. package/docs/zh-CN/start/showcase.md +0 -421
  656. package/docs/zh-CN/start/symi.md +0 -244
  657. package/docs/zh-CN/start/wizard.md +0 -326
  658. package/docs/zh-CN/tools/agent-send.md +0 -58
  659. package/docs/zh-CN/tools/apply-patch.md +0 -57
  660. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +0 -144
  661. package/docs/zh-CN/tools/browser-login.md +0 -75
  662. package/docs/zh-CN/tools/browser.md +0 -553
  663. package/docs/zh-CN/tools/chrome-extension.md +0 -183
  664. package/docs/zh-CN/tools/creating-skills.md +0 -61
  665. package/docs/zh-CN/tools/elevated.md +0 -62
  666. package/docs/zh-CN/tools/exec-approvals.md +0 -233
  667. package/docs/zh-CN/tools/exec.md +0 -169
  668. package/docs/zh-CN/tools/firecrawl.md +0 -68
  669. package/docs/zh-CN/tools/index.md +0 -508
  670. package/docs/zh-CN/tools/llm-task.md +0 -117
  671. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +0 -400
  672. package/docs/zh-CN/tools/pipeline.md +0 -349
  673. package/docs/zh-CN/tools/plugin.md +0 -639
  674. package/docs/zh-CN/tools/reactions.md +0 -28
  675. package/docs/zh-CN/tools/skills-config.md +0 -78
  676. package/docs/zh-CN/tools/skills.md +0 -279
  677. package/docs/zh-CN/tools/slash-commands.md +0 -196
  678. package/docs/zh-CN/tools/subagents.md +0 -167
  679. package/docs/zh-CN/tools/symihub.md +0 -209
  680. package/docs/zh-CN/tools/thinking.md +0 -80
  681. package/docs/zh-CN/tools/web.md +0 -257
  682. package/docs/zh-CN/tts.md +0 -373
  683. package/docs/zh-CN/vps.md +0 -47
  684. package/docs/zh-CN/web/control-ui.md +0 -190
  685. package/docs/zh-CN/web/dashboard.md +0 -53
  686. package/docs/zh-CN/web/index.md +0 -118
  687. package/docs/zh-CN/web/tui.md +0 -166
  688. package/docs/zh-CN/web/webchat.md +0 -56
package/docs/pi.md DELETED
@@ -1,610 +0,0 @@
1
- ---
2
- title: "Pi Integration Architecture"
3
- ---
4
-
5
- # Pi Integration Architecture
6
-
7
- This document describes how Symi integrates with [pi-coding-agent](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent) and its sibling packages (`pi-ai`, `pi-agent-core`, `pi-tui`) to power its AI agent capabilities.
8
-
9
- ## Overview
10
-
11
- Symi uses the pi SDK to embed an AI coding agent into its messaging gateway architecture. Instead of spawning pi as a subprocess or using RPC mode, Symi directly imports and instantiates pi's `AgentSession` via `createAgentSession()`. This embedded approach provides:
12
-
13
- - Full control over session lifecycle and event handling
14
- - Custom tool injection (messaging, sandbox, channel-specific actions)
15
- - System prompt customization per channel/context
16
- - Session persistence with branching/compaction support
17
- - Multi-account auth profile rotation with failover
18
- - Provider-agnostic model switching
19
-
20
- ## Package Dependencies
21
-
22
- ```json
23
- {
24
- "@mariozechner/pi-agent-core": "0.49.3",
25
- "@mariozechner/pi-ai": "0.49.3",
26
- "@mariozechner/pi-coding-agent": "0.49.3",
27
- "@mariozechner/pi-tui": "0.49.3"
28
- }
29
- ```
30
-
31
- | Package | Purpose |
32
- | ----------------- | ------------------------------------------------------------------------------------------------------ |
33
- | `pi-ai` | Core LLM abstractions: `Model`, `streamSimple`, message types, provider APIs |
34
- | `pi-agent-core` | Agent loop, tool execution, `AgentMessage` types |
35
- | `pi-coding-agent` | High-level SDK: `createAgentSession`, `SessionManager`, `AuthStorage`, `ModelRegistry`, built-in tools |
36
- | `pi-tui` | Terminal UI components (used in Symi's local TUI mode) |
37
-
38
- ## File Structure
39
-
40
- ```
41
- src/agents/
42
- ├── pi-embedded-runner.ts # Re-exports from pi-embedded-runner/
43
- ├── pi-embedded-runner/
44
- │ ├── run.ts # Main entry: runEmbeddedPiAgent()
45
- │ ├── run/
46
- │ │ ├── attempt.ts # Single attempt logic with session setup
47
- │ │ ├── params.ts # RunEmbeddedPiAgentParams type
48
- │ │ ├── payloads.ts # Build response payloads from run results
49
- │ │ ├── images.ts # Vision model image injection
50
- │ │ └── types.ts # EmbeddedRunAttemptResult
51
- │ ├── abort.ts # Abort error detection
52
- │ ├── cache-ttl.ts # Cache TTL tracking for context pruning
53
- │ ├── compact.ts # Manual/auto compaction logic
54
- │ ├── extensions.ts # Load pi extensions for embedded runs
55
- │ ├── extra-params.ts # Provider-specific stream params
56
- │ ├── google.ts # Google/Gemini turn ordering fixes
57
- │ ├── history.ts # History limiting (DM vs group)
58
- │ ├── lanes.ts # Session/global command lanes
59
- │ ├── logger.ts # Subsystem logger
60
- │ ├── model.ts # Model resolution via ModelRegistry
61
- │ ├── runs.ts # Active run tracking, abort, queue
62
- │ ├── sandbox-info.ts # Sandbox info for system prompt
63
- │ ├── session-manager-cache.ts # SessionManager instance caching
64
- │ ├── session-manager-init.ts # Session file initialization
65
- │ ├── system-prompt.ts # System prompt builder
66
- │ ├── tool-split.ts # Split tools into builtIn vs custom
67
- │ ├── types.ts # EmbeddedPiAgentMeta, EmbeddedPiRunResult
68
- │ └── utils.ts # ThinkLevel mapping, error description
69
- ├── pi-embedded-subscribe.ts # Session event subscription/dispatch
70
- ├── pi-embedded-subscribe.types.ts # SubscribeEmbeddedPiSessionParams
71
- ├── pi-embedded-subscribe.handlers.ts # Event handler factory
72
- ├── pi-embedded-subscribe.handlers.lifecycle.ts
73
- ├── pi-embedded-subscribe.handlers.types.ts
74
- ├── pi-embedded-block-chunker.ts # Streaming block reply chunking
75
- ├── pi-embedded-messaging.ts # Messaging tool sent tracking
76
- ├── pi-embedded-helpers.ts # Error classification, turn validation
77
- ├── pi-embedded-helpers/ # Helper modules
78
- ├── pi-embedded-utils.ts # Formatting utilities
79
- ├── pi-tools.ts # createSymiCodingTools()
80
- ├── pi-tools.abort.ts # AbortSignal wrapping for tools
81
- ├── pi-tools.policy.ts # Tool allowlist/denylist policy
82
- ├── pi-tools.read.ts # Read tool customizations
83
- ├── pi-tools.schema.ts # Tool schema normalization
84
- ├── pi-tools.types.ts # AnyAgentTool type alias
85
- ├── pi-tool-definition-adapter.ts # AgentTool -> ToolDefinition adapter
86
- ├── pi-settings.ts # Settings overrides
87
- ├── pi-extensions/ # Custom pi extensions
88
- │ ├── compaction-safeguard.ts # Safeguard extension
89
- │ ├── compaction-safeguard-runtime.ts
90
- │ ├── context-pruning.ts # Cache-TTL context pruning extension
91
- │ └── context-pruning/
92
- ├── model-auth.ts # Auth profile resolution
93
- ├── auth-profiles.ts # Profile store, cooldown, failover
94
- ├── model-selection.ts # Default model resolution
95
- ├── models-config.ts # models.json generation
96
- ├── model-catalog.ts # Model catalog cache
97
- ├── context-window-guard.ts # Context window validation
98
- ├── failover-error.ts # FailoverError class
99
- ├── defaults.ts # DEFAULT_PROVIDER, DEFAULT_MODEL
100
- ├── system-prompt.ts # buildAgentSystemPrompt()
101
- ├── system-prompt-params.ts # System prompt parameter resolution
102
- ├── system-prompt-report.ts # Debug report generation
103
- ├── tool-summaries.ts # Tool description summaries
104
- ├── tool-policy.ts # Tool policy resolution
105
- ├── transcript-policy.ts # Transcript validation policy
106
- ├── skills.ts # Skill snapshot/prompt building
107
- ├── skills/ # Skill subsystem
108
- ├── sandbox.ts # Sandbox context resolution
109
- ├── sandbox/ # Sandbox subsystem
110
- ├── channel-tools.ts # Channel-specific tool injection
111
- ├── symi-tools.ts # Symi-specific tools
112
- ├── bash-tools.ts # exec/process tools
113
- ├── apply-patch.ts # apply_patch tool (OpenAI)
114
- ├── tools/ # Individual tool implementations
115
- │ ├── browser-tool.ts
116
- │ ├── canvas-tool.ts
117
- │ ├── cron-tool.ts
118
- │ ├── gateway-tool.ts
119
- │ ├── image-tool.ts
120
- │ ├── message-tool.ts
121
- │ ├── nodes-tool.ts
122
- │ ├── session*.ts
123
- │ ├── slack-actions.ts
124
- │ ├── telegram-actions.ts
125
- │ ├── web-*.ts
126
- │ └── whatsapp-actions.ts
127
- └── ...
128
- ```
129
-
130
- ## Core Integration Flow
131
-
132
- ### 1. Running an Embedded Agent
133
-
134
- The main entry point is `runEmbeddedPiAgent()` in `pi-embedded-runner/run.ts`:
135
-
136
- ```typescript
137
- import { runEmbeddedPiAgent } from "./agents/pi-embedded-runner.js";
138
-
139
- const result = await runEmbeddedPiAgent({
140
- sessionId: "user-123",
141
- sessionKey: "main:whatsapp:+1234567890",
142
- sessionFile: "/path/to/session.jsonl",
143
- workspaceDir: "/path/to/workspace",
144
- config: symiConfig,
145
- prompt: "Hello, how are you?",
146
- provider: "anthropic",
147
- model: "claude-sonnet-4-20250514",
148
- timeoutMs: 120_000,
149
- runId: "run-abc",
150
- onBlockReply: async (payload) => {
151
- await sendToChannel(payload.text, payload.mediaUrls);
152
- },
153
- });
154
- ```
155
-
156
- ### 2. Session Creation
157
-
158
- Inside `runEmbeddedAttempt()` (called by `runEmbeddedPiAgent()`), the pi SDK is used:
159
-
160
- ```typescript
161
- import {
162
- createAgentSession,
163
- DefaultResourceLoader,
164
- SessionManager,
165
- SettingsManager,
166
- } from "@mariozechner/pi-coding-agent";
167
-
168
- const resourceLoader = new DefaultResourceLoader({
169
- cwd: resolvedWorkspace,
170
- agentDir,
171
- settingsManager,
172
- additionalExtensionPaths,
173
- });
174
- await resourceLoader.reload();
175
-
176
- const { session } = await createAgentSession({
177
- cwd: resolvedWorkspace,
178
- agentDir,
179
- authStorage: params.authStorage,
180
- modelRegistry: params.modelRegistry,
181
- model: params.model,
182
- thinkingLevel: mapThinkingLevel(params.thinkLevel),
183
- tools: builtInTools,
184
- customTools: allCustomTools,
185
- sessionManager,
186
- settingsManager,
187
- resourceLoader,
188
- });
189
-
190
- applySystemPromptOverrideToSession(session, systemPromptOverride);
191
- ```
192
-
193
- ### 3. Event Subscription
194
-
195
- `subscribeEmbeddedPiSession()` subscribes to pi's `AgentSession` events:
196
-
197
- ```typescript
198
- const subscription = subscribeEmbeddedPiSession({
199
- session: activeSession,
200
- runId: params.runId,
201
- verboseLevel: params.verboseLevel,
202
- reasoningMode: params.reasoningLevel,
203
- toolResultFormat: params.toolResultFormat,
204
- onToolResult: params.onToolResult,
205
- onReasoningStream: params.onReasoningStream,
206
- onBlockReply: params.onBlockReply,
207
- onPartialReply: params.onPartialReply,
208
- onAgentEvent: params.onAgentEvent,
209
- });
210
- ```
211
-
212
- Events handled include:
213
-
214
- - `message_start` / `message_end` / `message_update` (streaming text/thinking)
215
- - `tool_execution_start` / `tool_execution_update` / `tool_execution_end`
216
- - `turn_start` / `turn_end`
217
- - `agent_start` / `agent_end`
218
- - `auto_compaction_start` / `auto_compaction_end`
219
-
220
- ### 4. Prompting
221
-
222
- After setup, the session is prompted:
223
-
224
- ```typescript
225
- await session.prompt(effectivePrompt, { images: imageResult.images });
226
- ```
227
-
228
- The SDK handles the full agent loop: sending to LLM, executing tool calls, streaming responses.
229
-
230
- ## Tool Architecture
231
-
232
- ### Tool Pipeline
233
-
234
- 1. **Base Tools**: pi's `codingTools` (read, bash, edit, write)
235
- 2. **Custom Replacements**: Symi replaces bash with `exec`/`process`, customizes read/edit/write for sandbox
236
- 3. **Symi Tools**: messaging, browser, canvas, sessions, cron, gateway, etc.
237
- 4. **Policy Filtering**: Tools filtered by profile, provider, agent, group, sandbox policies
238
- 5. **Schema Normalization**: Schemas cleaned for Gemini/OpenAI quirks
239
- 6. **AbortSignal Wrapping**: Tools wrapped to respect abort signals
240
-
241
- ### Tool Definition Adapter
242
-
243
- pi-agent-core's `AgentTool` has a different `execute` signature than pi-coding-agent's `ToolDefinition`. The adapter in `pi-tool-definition-adapter.ts` bridges this:
244
-
245
- ```typescript
246
- export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] {
247
- return tools.map((tool) => ({
248
- name: tool.name,
249
- label: tool.label ?? name,
250
- description: tool.description ?? "",
251
- parameters: tool.parameters,
252
- execute: async (toolCallId, params, onUpdate, _ctx, signal) => {
253
- // pi-coding-agent signature differs from pi-agent-core
254
- return await tool.execute(toolCallId, params, signal, onUpdate);
255
- },
256
- }));
257
- }
258
- ```
259
-
260
- ### Tool Split Strategy
261
-
262
- `splitSdkTools()` passes all tools via `customTools`:
263
-
264
- ```typescript
265
- export function splitSdkTools(options: { tools: AnyAgentTool[]; sandboxEnabled: boolean }) {
266
- return {
267
- builtInTools: [], // Empty. We override everything
268
- customTools: toToolDefinitions(options.tools),
269
- };
270
- }
271
- ```
272
-
273
- This ensures Symi's policy filtering, sandbox integration, and extended toolset remain consistent across providers.
274
-
275
- ## System Prompt Construction
276
-
277
- The system prompt is built in `buildAgentSystemPrompt()` (`system-prompt.ts`). It assembles a full prompt with sections including Tooling, Tool Call Style, Safety guardrails, Symi CLI reference, Skills, Docs, Workspace, Sandbox, Messaging, Reply Tags, Voice, Silent Replies, Heartbeats, Runtime metadata, plus Memory and Reactions when enabled, and optional context files and extra system prompt content. Sections are trimmed for minimal prompt mode used by subagents.
278
-
279
- The prompt is applied after session creation via `applySystemPromptOverrideToSession()`:
280
-
281
- ```typescript
282
- const systemPromptOverride = createSystemPromptOverride(appendPrompt);
283
- applySystemPromptOverrideToSession(session, systemPromptOverride);
284
- ```
285
-
286
- ## Session Management
287
-
288
- ### Session Files
289
-
290
- Sessions are JSONL files with tree structure (id/parentId linking). Pi's `SessionManager` handles persistence:
291
-
292
- ```typescript
293
- const sessionManager = SessionManager.open(params.sessionFile);
294
- ```
295
-
296
- Symi wraps this with `guardSessionManager()` for tool result safety.
297
-
298
- ### Session Caching
299
-
300
- `session-manager-cache.ts` caches SessionManager instances to avoid repeated file parsing:
301
-
302
- ```typescript
303
- await prewarmSessionFile(params.sessionFile);
304
- sessionManager = SessionManager.open(params.sessionFile);
305
- trackSessionManagerAccess(params.sessionFile);
306
- ```
307
-
308
- ### History Limiting
309
-
310
- `limitHistoryTurns()` trims conversation history based on channel type (DM vs group).
311
-
312
- ### Compaction
313
-
314
- Auto-compaction triggers on context overflow. `compactEmbeddedPiSessionDirect()` handles manual compaction:
315
-
316
- ```typescript
317
- const compactResult = await compactEmbeddedPiSessionDirect({
318
- sessionId, sessionFile, provider, model, ...
319
- });
320
- ```
321
-
322
- ## Authentication & Model Resolution
323
-
324
- ### Auth Profiles
325
-
326
- Symi maintains an auth profile store with multiple API keys per provider:
327
-
328
- ```typescript
329
- const authStore = ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false });
330
- const profileOrder = resolveAuthProfileOrder({ cfg, store: authStore, provider, preferredProfile });
331
- ```
332
-
333
- Profiles rotate on failures with cooldown tracking:
334
-
335
- ```typescript
336
- await markAuthProfileFailure({ store, profileId, reason, cfg, agentDir });
337
- const rotated = await advanceAuthProfile();
338
- ```
339
-
340
- ### Model Resolution
341
-
342
- ```typescript
343
- import { resolveModel } from "./pi-embedded-runner/model.js";
344
-
345
- const { model, error, authStorage, modelRegistry } = resolveModel(
346
- provider,
347
- modelId,
348
- agentDir,
349
- config,
350
- );
351
-
352
- // Uses pi's ModelRegistry and AuthStorage
353
- authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
354
- ```
355
-
356
- ### Failover
357
-
358
- `FailoverError` triggers model fallback when configured:
359
-
360
- ```typescript
361
- if (fallbackConfigured && isFailoverErrorMessage(errorText)) {
362
- throw new FailoverError(errorText, {
363
- reason: promptFailoverReason ?? "unknown",
364
- provider,
365
- model: modelId,
366
- profileId,
367
- status: resolveFailoverStatus(promptFailoverReason),
368
- });
369
- }
370
- ```
371
-
372
- ## Pi Extensions
373
-
374
- Symi loads custom pi extensions for specialized behavior:
375
-
376
- ### Compaction Safeguard
377
-
378
- `pi-extensions/compaction-safeguard.ts` adds guardrails to compaction, including adaptive token budgeting plus tool failure and file operation summaries:
379
-
380
- ```typescript
381
- if (resolveCompactionMode(params.cfg) === "safeguard") {
382
- setCompactionSafeguardRuntime(params.sessionManager, { maxHistoryShare });
383
- paths.push(resolvePiExtensionPath("compaction-safeguard"));
384
- }
385
- ```
386
-
387
- ### Context Pruning
388
-
389
- `pi-extensions/context-pruning.ts` implements cache-TTL based context pruning:
390
-
391
- ```typescript
392
- if (cfg?.agents?.defaults?.contextPruning?.mode === "cache-ttl") {
393
- setContextPruningRuntime(params.sessionManager, {
394
- settings,
395
- contextWindowTokens,
396
- isToolPrunable,
397
- lastCacheTouchAt,
398
- });
399
- paths.push(resolvePiExtensionPath("context-pruning"));
400
- }
401
- ```
402
-
403
- ## Streaming & Block Replies
404
-
405
- ### Block Chunking
406
-
407
- `EmbeddedBlockChunker` manages streaming text into discrete reply blocks:
408
-
409
- ```typescript
410
- const blockChunker = blockChunking ? new EmbeddedBlockChunker(blockChunking) : null;
411
- ```
412
-
413
- ### Thinking/Final Tag Stripping
414
-
415
- Streaming output is processed to strip `<think>`/`<thinking>` blocks and extract `<final>` content:
416
-
417
- ```typescript
418
- const stripBlockTags = (text: string, state: { thinking: boolean; final: boolean }) => {
419
- // Strip <think>...</think> content
420
- // If enforceFinalTag, only return <final>...</final> content
421
- };
422
- ```
423
-
424
- ### Reply Directives
425
-
426
- Reply directives like `[[media:url]]`, `[[voice]]`, `[[reply:id]]` are parsed and extracted:
427
-
428
- ```typescript
429
- const { text: cleanedText, mediaUrls, audioAsVoice, replyToId } = consumeReplyDirectives(chunk);
430
- ```
431
-
432
- ## Error Handling
433
-
434
- ### Error Classification
435
-
436
- `pi-embedded-helpers.ts` classifies errors for appropriate handling:
437
-
438
- ```typescript
439
- isContextOverflowError(errorText) // Context too large
440
- isCompactionFailureError(errorText) // Compaction failed
441
- isAuthAssistantError(lastAssistant) // Auth failure
442
- isRateLimitAssistantError(...) // Rate limited
443
- isFailoverAssistantError(...) // Should failover
444
- classifyFailoverReason(errorText) // "auth" | "rate_limit" | "quota" | "timeout" | ...
445
- ```
446
-
447
- ### Thinking Level Fallback
448
-
449
- If a thinking level is unsupported, it falls back:
450
-
451
- ```typescript
452
- const fallbackThinking = pickFallbackThinkingLevel({
453
- message: errorText,
454
- attempted: attemptedThinking,
455
- });
456
- if (fallbackThinking) {
457
- thinkLevel = fallbackThinking;
458
- continue;
459
- }
460
- ```
461
-
462
- ## Sandbox Integration
463
-
464
- When sandbox mode is enabled, tools and paths are constrained:
465
-
466
- ```typescript
467
- const sandbox = await resolveSandboxContext({
468
- config: params.config,
469
- sessionKey: sandboxSessionKey,
470
- workspaceDir: resolvedWorkspace,
471
- });
472
-
473
- if (sandboxRoot) {
474
- // Use sandboxed read/edit/write tools
475
- // Exec runs in container
476
- // Browser uses bridge URL
477
- }
478
- ```
479
-
480
- ## Provider-Specific Handling
481
-
482
- ### Anthropic
483
-
484
- - Refusal magic string scrubbing
485
- - Turn validation for consecutive roles
486
- - Claude Code parameter compatibility
487
-
488
- ### Google/Gemini
489
-
490
- - Turn ordering fixes (`applyGoogleTurnOrderingFix`)
491
- - Tool schema sanitization (`sanitizeToolsForGoogle`)
492
- - Session history sanitization (`sanitizeSessionHistory`)
493
-
494
- ### OpenAI
495
-
496
- - `apply_patch` tool for Codex models
497
- - Thinking level downgrade handling
498
-
499
- ## TUI Integration
500
-
501
- Symi also has a local TUI mode that uses pi-tui components directly:
502
-
503
- ```typescript
504
- // src/tui/tui.ts
505
- import { ... } from "@mariozechner/pi-tui";
506
- ```
507
-
508
- This provides the interactive terminal experience similar to pi's native mode.
509
-
510
- ## Key Differences from Pi CLI
511
-
512
- | Aspect | Pi CLI | Symi Embedded |
513
- | --------------- | ----------------------- | -------------------------------------------------------------------------------------- |
514
- | Invocation | `pi` command / RPC | SDK via `createAgentSession()` |
515
- | Tools | Default coding tools | Custom Symi tool suite |
516
- | System prompt | AGENTS.md + prompts | Dynamic per-channel/context |
517
- | Session storage | `~/.pi/agent/sessions/` | `~/.symi/agents/<agentId>/sessions/` (or `$SYMI_STATE_DIR/agents/<agentId>/sessions/`) |
518
- | Auth | Single credential | Multi-profile with rotation |
519
- | Extensions | Loaded from disk | Programmatic + disk paths |
520
- | Event handling | TUI rendering | Callback-based (onBlockReply, etc.) |
521
-
522
- ## Future Considerations
523
-
524
- Areas for potential rework:
525
-
526
- 1. **Tool signature alignment**: Currently adapting between pi-agent-core and pi-coding-agent signatures
527
- 2. **Session manager wrapping**: `guardSessionManager` adds safety but increases complexity
528
- 3. **Extension loading**: Could use pi's `ResourceLoader` more directly
529
- 4. **Streaming handler complexity**: `subscribeEmbeddedPiSession` has grown large
530
- 5. **Provider quirks**: Many provider-specific codepaths that pi could potentially handle
531
-
532
- ## Tests
533
-
534
- All existing tests that cover the pi integration and its extensions:
535
-
536
- - `src/agents/pi-embedded-block-chunker.test.ts`
537
- - `src/agents/pi-embedded-helpers.buildbootstrapcontextfiles.test.ts`
538
- - `src/agents/pi-embedded-helpers.classifyfailoverreason.test.ts`
539
- - `src/agents/pi-embedded-helpers.downgradeopenai-reasoning.test.ts`
540
- - `src/agents/pi-embedded-helpers.formatassistanterrortext.test.ts`
541
- - `src/agents/pi-embedded-helpers.formatrawassistanterrorforui.test.ts`
542
- - `src/agents/pi-embedded-helpers.image-dimension-error.test.ts`
543
- - `src/agents/pi-embedded-helpers.image-size-error.test.ts`
544
- - `src/agents/pi-embedded-helpers.isautherrormessage.test.ts`
545
- - `src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts`
546
- - `src/agents/pi-embedded-helpers.iscloudcodeassistformaterror.test.ts`
547
- - `src/agents/pi-embedded-helpers.iscompactionfailureerror.test.ts`
548
- - `src/agents/pi-embedded-helpers.iscontextoverflowerror.test.ts`
549
- - `src/agents/pi-embedded-helpers.isfailovererrormessage.test.ts`
550
- - `src/agents/pi-embedded-helpers.islikelycontextoverflowerror.test.ts`
551
- - `src/agents/pi-embedded-helpers.ismessagingtoolduplicate.test.ts`
552
- - `src/agents/pi-embedded-helpers.messaging-duplicate.test.ts`
553
- - `src/agents/pi-embedded-helpers.normalizetextforcomparison.test.ts`
554
- - `src/agents/pi-embedded-helpers.resolvebootstrapmaxchars.test.ts`
555
- - `src/agents/pi-embedded-helpers.sanitize-session-messages-images.keeps-tool-call-tool-result-ids-unchanged.test.ts`
556
- - `src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.test.ts`
557
- - `src/agents/pi-embedded-helpers.sanitizegoogleturnordering.test.ts`
558
- - `src/agents/pi-embedded-helpers.sanitizesessionmessagesimages-thought-signature-stripping.test.ts`
559
- - `src/agents/pi-embedded-helpers.sanitizetoolcallid.test.ts`
560
- - `src/agents/pi-embedded-helpers.sanitizeuserfacingtext.test.ts`
561
- - `src/agents/pi-embedded-helpers.stripthoughtsignatures.test.ts`
562
- - `src/agents/pi-embedded-helpers.validate-turns.test.ts`
563
- - `src/agents/pi-embedded-runner-extraparams.live.test.ts` (live)
564
- - `src/agents/pi-embedded-runner-extraparams.test.ts`
565
- - `src/agents/pi-embedded-runner.applygoogleturnorderingfix.test.ts`
566
- - `src/agents/pi-embedded-runner.buildembeddedsandboxinfo.test.ts`
567
- - `src/agents/pi-embedded-runner.createsystempromptoverride.test.ts`
568
- - `src/agents/pi-embedded-runner.get-dm-history-limit-from-session-key.falls-back-provider-default-per-dm-not.test.ts`
569
- - `src/agents/pi-embedded-runner.get-dm-history-limit-from-session-key.returns-undefined-sessionkey-is-undefined.test.ts`
570
- - `src/agents/pi-embedded-runner.google-sanitize-thinking.test.ts`
571
- - `src/agents/pi-embedded-runner.guard.test.ts`
572
- - `src/agents/pi-embedded-runner.limithistoryturns.test.ts`
573
- - `src/agents/pi-embedded-runner.resolvesessionagentids.test.ts`
574
- - `src/agents/pi-embedded-runner.run-embedded-pi-agent.auth-profile-rotation.test.ts`
575
- - `src/agents/pi-embedded-runner.sanitize-session-history.test.ts`
576
- - `src/agents/pi-embedded-runner.splitsdktools.test.ts`
577
- - `src/agents/pi-embedded-runner.test.ts`
578
- - `src/agents/pi-embedded-subscribe.code-span-awareness.test.ts`
579
- - `src/agents/pi-embedded-subscribe.reply-tags.test.ts`
580
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.calls-onblockreplyflush-before-tool-execution-start-preserve.test.ts`
581
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-append-text-end-content-is.test.ts`
582
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-call-onblockreplyflush-callback-is-not.test.ts`
583
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-duplicate-text-end-repeats-full.test.ts`
584
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-emit-duplicate-block-replies-text.test.ts`
585
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-block-replies-text-end-does-not.test.ts`
586
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.emits-reasoning-as-separate-message-enabled.test.ts`
587
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.filters-final-suppresses-output-without-start-tag.test.ts`
588
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.includes-canvas-action-metadata-tool-summaries.test.ts`
589
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.keeps-assistanttexts-final-answer-block-replies-are.test.ts`
590
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.keeps-indented-fenced-blocks-intact.test.ts`
591
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.reopens-fenced-blocks-splitting-inside-them.test.ts`
592
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.splits-long-single-line-fenced-blocks-reopen.test.ts`
593
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.streams-soft-chunks-paragraph-preference.test.ts`
594
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.subscribeembeddedpisession.test.ts`
595
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.suppresses-message-end-block-replies-message-tool.test.ts`
596
- - `src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.waits-multiple-compaction-retries-before-resolving.test.ts`
597
- - `src/agents/pi-embedded-subscribe.tools.test.ts`
598
- - `src/agents/pi-embedded-utils.test.ts`
599
- - `src/agents/pi-extensions/compaction-safeguard.test.ts`
600
- - `src/agents/pi-extensions/context-pruning.test.ts`
601
- - `src/agents/pi-settings.test.ts`
602
- - `src/agents/pi-tool-definition-adapter.test.ts`
603
- - `src/agents/pi-tools-agent-config.test.ts`
604
- - `src/agents/pi-tools.create-symi-coding-tools.adds-claude-style-aliases-schemas-without-dropping-b.test.ts`
605
- - `src/agents/pi-tools.create-symi-coding-tools.adds-claude-style-aliases-schemas-without-dropping-d.test.ts`
606
- - `src/agents/pi-tools.create-symi-coding-tools.adds-claude-style-aliases-schemas-without-dropping-f.test.ts`
607
- - `src/agents/pi-tools.create-symi-coding-tools.adds-claude-style-aliases-schemas-without-dropping.test.ts`
608
- - `src/agents/pi-tools.policy.test.ts`
609
- - `src/agents/pi-tools.safe-bins.test.ts`
610
- - `src/agents/pi-tools.workspace-paths.test.ts`