@symerian/symi 3.0.20 → 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 (737) hide show
  1. package/dist/{audio-preflight-BaCdNfrk.js → audio-preflight-D7BVT-ls.js} +4 -4
  2. package/dist/build-info.json +3 -3
  3. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  4. package/dist/{chrome-UfmVM0xR.js → chrome-B5CO2vB5.js} +7 -7
  5. package/dist/{deliver-BqXdac6W.js → deliver-CrwjsDwv.js} +1 -1
  6. package/dist/extensionAPI.js +7 -7
  7. package/dist/{image-DIWsXYcW.js → image-Csu7WcLW.js} +1 -1
  8. package/dist/{manager-DW3SxcPr.js → manager-BkkVjTO8.js} +1 -1
  9. package/dist/{pi-embedded-BNch0U5F.js → pi-embedded-Dhp64z5l.js} +16 -16
  10. package/dist/{pi-embedded-helpers-IkHl02JF.js → pi-embedded-helpers-840E4hop.js} +4 -4
  11. package/dist/{pw-ai-nMkA-oDJ.js → pw-ai-CBgJf_RR.js} +1 -1
  12. package/dist/{runner-DNEC58JI.js → runner-BbFKo1ne.js} +1 -1
  13. package/dist/{synthesis-BWAr0sZ9.js → synthesis-DoEM0E8_.js} +7 -7
  14. package/dist/{web-7a-m_UxL.js → web-BYXJn-Ps.js} +7 -7
  15. package/package.json +1 -1
  16. package/docs/.i18n/README.md +0 -31
  17. package/docs/.i18n/glossary.ja-JP.json +0 -14
  18. package/docs/.i18n/glossary.zh-CN.json +0 -210
  19. package/docs/.i18n/ja-JP.tm.jsonl +0 -0
  20. package/docs/.i18n/zh-CN.tm.jsonl +0 -1303
  21. package/docs/CNAME +0 -1
  22. package/docs/assets/install-script.svg +0 -1
  23. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  24. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  25. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  26. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  27. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  28. package/docs/assets/pixel-symi.svg +0 -60
  29. package/docs/assets/showcase/agents-ui.jpg +0 -0
  30. package/docs/assets/showcase/bambu-cli.png +0 -0
  31. package/docs/assets/showcase/codexmonitor.png +0 -0
  32. package/docs/assets/showcase/gohome-grafana.png +0 -0
  33. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  34. package/docs/assets/showcase/oura-health.png +0 -0
  35. package/docs/assets/showcase/padel-cli.svg +0 -11
  36. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  37. package/docs/assets/showcase/papla-tts.jpg +0 -0
  38. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  39. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  40. package/docs/assets/showcase/roborock-status.svg +0 -13
  41. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  42. package/docs/assets/showcase/snag.png +0 -0
  43. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  44. package/docs/assets/showcase/wienerlinien.png +0 -0
  45. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  46. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  47. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  48. package/docs/assets/sponsors/blacksmith.svg +0 -14
  49. package/docs/assets/sponsors/openai.svg +0 -3
  50. package/docs/assets/symi-logo-text-dark.png +0 -0
  51. package/docs/assets/symi-logo-text.png +0 -0
  52. package/docs/automation/auth-monitoring.md +0 -44
  53. package/docs/automation/cron-jobs.md +0 -540
  54. package/docs/automation/cron-vs-heartbeat.md +0 -286
  55. package/docs/automation/gmail-pubsub.md +0 -256
  56. package/docs/automation/hooks.md +0 -998
  57. package/docs/automation/poll.md +0 -61
  58. package/docs/automation/troubleshooting.md +0 -122
  59. package/docs/automation/webhook.md +0 -213
  60. package/docs/brave-search.md +0 -41
  61. package/docs/capabilities.md +0 -151
  62. package/docs/channels/bluebubbles.md +0 -346
  63. package/docs/channels/broadcast-groups.md +0 -441
  64. package/docs/channels/channel-routing.md +0 -112
  65. package/docs/channels/feishu.md +0 -586
  66. package/docs/channels/googlechat.md +0 -253
  67. package/docs/channels/grammy.md +0 -31
  68. package/docs/channels/group-messages.md +0 -82
  69. package/docs/channels/groups.md +0 -364
  70. package/docs/channels/imessage.md +0 -366
  71. package/docs/channels/index.md +0 -46
  72. package/docs/channels/irc.md +0 -234
  73. package/docs/channels/line.md +0 -186
  74. package/docs/channels/location.md +0 -56
  75. package/docs/channels/matrix.md +0 -300
  76. package/docs/channels/mattermost.md +0 -158
  77. package/docs/channels/msteams.md +0 -769
  78. package/docs/channels/nextcloud-talk.md +0 -138
  79. package/docs/channels/nostr.md +0 -233
  80. package/docs/channels/pairing.md +0 -100
  81. package/docs/channels/signal.md +0 -322
  82. package/docs/channels/slack.md +0 -510
  83. package/docs/channels/telegram.md +0 -748
  84. package/docs/channels/tlon.md +0 -148
  85. package/docs/channels/troubleshooting.md +0 -110
  86. package/docs/channels/twitch.md +0 -379
  87. package/docs/channels/whatsapp.md +0 -444
  88. package/docs/channels/zalo.md +0 -192
  89. package/docs/channels/zalouser.md +0 -140
  90. package/docs/ci.md +0 -50
  91. package/docs/cli/acp.md +0 -182
  92. package/docs/cli/agent.md +0 -24
  93. package/docs/cli/agents.md +0 -75
  94. package/docs/cli/approvals.md +0 -50
  95. package/docs/cli/browser.md +0 -107
  96. package/docs/cli/channels.md +0 -73
  97. package/docs/cli/config.md +0 -50
  98. package/docs/cli/configure.md +0 -32
  99. package/docs/cli/cron.md +0 -44
  100. package/docs/cli/dashboard.md +0 -16
  101. package/docs/cli/devices.md +0 -73
  102. package/docs/cli/directory.md +0 -62
  103. package/docs/cli/dns.md +0 -23
  104. package/docs/cli/docs.md +0 -15
  105. package/docs/cli/doctor.md +0 -41
  106. package/docs/cli/gateway.md +0 -202
  107. package/docs/cli/health.md +0 -21
  108. package/docs/cli/hooks.md +0 -313
  109. package/docs/cli/index.md +0 -1029
  110. package/docs/cli/logs.md +0 -28
  111. package/docs/cli/memory.md +0 -45
  112. package/docs/cli/message.md +0 -214
  113. package/docs/cli/models.md +0 -79
  114. package/docs/cli/node.md +0 -112
  115. package/docs/cli/nodes.md +0 -73
  116. package/docs/cli/onboard.md +0 -76
  117. package/docs/cli/pairing.md +0 -21
  118. package/docs/cli/plugins.md +0 -92
  119. package/docs/cli/reset.md +0 -17
  120. package/docs/cli/sandbox.md +0 -152
  121. package/docs/cli/security.md +0 -64
  122. package/docs/cli/sessions.md +0 -16
  123. package/docs/cli/setup.md +0 -29
  124. package/docs/cli/skills.md +0 -26
  125. package/docs/cli/status.md +0 -25
  126. package/docs/cli/system.md +0 -60
  127. package/docs/cli/tui.md +0 -23
  128. package/docs/cli/uninstall.md +0 -17
  129. package/docs/cli/update.md +0 -98
  130. package/docs/cli/voicecall.md +0 -34
  131. package/docs/cli/webhooks.md +0 -25
  132. package/docs/concepts/agent-loop.md +0 -148
  133. package/docs/concepts/agent-workspace.md +0 -234
  134. package/docs/concepts/agent.md +0 -123
  135. package/docs/concepts/architecture.md +0 -135
  136. package/docs/concepts/compaction.md +0 -61
  137. package/docs/concepts/context.md +0 -161
  138. package/docs/concepts/features.md +0 -51
  139. package/docs/concepts/markdown-formatting.md +0 -128
  140. package/docs/concepts/memory.md +0 -729
  141. package/docs/concepts/messages.md +0 -153
  142. package/docs/concepts/model-failover.md +0 -149
  143. package/docs/concepts/model-providers.md +0 -424
  144. package/docs/concepts/models.md +0 -208
  145. package/docs/concepts/multi-agent.md +0 -521
  146. package/docs/concepts/oauth.md +0 -145
  147. package/docs/concepts/presence.md +0 -102
  148. package/docs/concepts/queue.md +0 -86
  149. package/docs/concepts/retry.md +0 -64
  150. package/docs/concepts/session-pruning.md +0 -123
  151. package/docs/concepts/session-tool.md +0 -213
  152. package/docs/concepts/session.md +0 -199
  153. package/docs/concepts/sessions.md +0 -10
  154. package/docs/concepts/streaming.md +0 -129
  155. package/docs/concepts/system-prompt.md +0 -128
  156. package/docs/concepts/timezone.md +0 -90
  157. package/docs/concepts/typebox.md +0 -289
  158. package/docs/concepts/typing-indicators.md +0 -68
  159. package/docs/concepts/usage-tracking.md +0 -35
  160. package/docs/date-time.md +0 -127
  161. package/docs/debug/node-issue.md +0 -85
  162. package/docs/diagnostics/flags.md +0 -91
  163. package/docs/docs.json +0 -1849
  164. package/docs/experiments/onboarding-config-protocol.md +0 -40
  165. package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +0 -229
  166. package/docs/experiments/plans/cron-add-hardening.md +0 -62
  167. package/docs/experiments/plans/group-policy-hardening.md +0 -40
  168. package/docs/experiments/plans/openresponses-gateway.md +0 -123
  169. package/docs/experiments/plans/pty-process-supervision.md +0 -192
  170. package/docs/experiments/plans/session-binding-channel-agnostic.md +0 -202
  171. package/docs/experiments/plans/thread-bound-subagents.md +0 -281
  172. package/docs/experiments/proposals/model-config.md +0 -36
  173. package/docs/experiments/research/memory.md +0 -228
  174. package/docs/gateway/authentication.md +0 -162
  175. package/docs/gateway/background-process.md +0 -96
  176. package/docs/gateway/bonjour.md +0 -177
  177. package/docs/gateway/bridge-protocol.md +0 -91
  178. package/docs/gateway/cli-backends.md +0 -225
  179. package/docs/gateway/configuration-examples.md +0 -610
  180. package/docs/gateway/configuration-reference.md +0 -2465
  181. package/docs/gateway/configuration.md +0 -488
  182. package/docs/gateway/discovery.md +0 -123
  183. package/docs/gateway/doctor.md +0 -282
  184. package/docs/gateway/gateway-lock.md +0 -34
  185. package/docs/gateway/health.md +0 -35
  186. package/docs/gateway/heartbeat.md +0 -374
  187. package/docs/gateway/index.md +0 -254
  188. package/docs/gateway/local-models.md +0 -150
  189. package/docs/gateway/logging.md +0 -113
  190. package/docs/gateway/multiple-gateways.md +0 -112
  191. package/docs/gateway/network-model.md +0 -20
  192. package/docs/gateway/openai-http-api.md +0 -119
  193. package/docs/gateway/openresponses-http-api.md +0 -333
  194. package/docs/gateway/pairing.md +0 -99
  195. package/docs/gateway/protocol.md +0 -221
  196. package/docs/gateway/remote-gateway-readme.md +0 -158
  197. package/docs/gateway/remote.md +0 -131
  198. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -128
  199. package/docs/gateway/sandboxing.md +0 -203
  200. package/docs/gateway/security/index.md +0 -931
  201. package/docs/gateway/tailscale.md +0 -132
  202. package/docs/gateway/tools-invoke-http-api.md +0 -110
  203. package/docs/gateway/troubleshooting.md +0 -317
  204. package/docs/gateway/trusted-proxy-auth.md +0 -270
  205. package/docs/glass-ui-rendering-invariants.md +0 -451
  206. package/docs/help/debugging.md +0 -162
  207. package/docs/help/environment.md +0 -107
  208. package/docs/help/faq.md +0 -2846
  209. package/docs/help/index.md +0 -21
  210. package/docs/help/scripts.md +0 -28
  211. package/docs/help/testing.md +0 -385
  212. package/docs/help/troubleshooting.md +0 -264
  213. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  214. package/docs/images/feishu-step2-create-app.png +0 -0
  215. package/docs/images/feishu-step3-credentials.png +0 -0
  216. package/docs/images/feishu-step4-permissions.png +0 -0
  217. package/docs/images/feishu-step5-bot-capability.png +0 -0
  218. package/docs/images/feishu-step6-event-subscription.png +0 -0
  219. package/docs/images/groups-flow.svg +0 -52
  220. package/docs/images/mobile-ui-screenshot.png +0 -0
  221. package/docs/index.md +0 -186
  222. package/docs/install/ansible.md +0 -207
  223. package/docs/install/bun.md +0 -59
  224. package/docs/install/development-channels.md +0 -75
  225. package/docs/install/docker.md +0 -583
  226. package/docs/install/exe-dev.md +0 -126
  227. package/docs/install/fly.md +0 -472
  228. package/docs/install/gcp.md +0 -499
  229. package/docs/install/hetzner.md +0 -347
  230. package/docs/install/index.md +0 -218
  231. package/docs/install/installer.md +0 -405
  232. package/docs/install/macos-vm.md +0 -281
  233. package/docs/install/migrating.md +0 -192
  234. package/docs/install/nix.md +0 -98
  235. package/docs/install/node.md +0 -138
  236. package/docs/install/northflank.mdx +0 -49
  237. package/docs/install/podman.md +0 -108
  238. package/docs/install/railway.mdx +0 -95
  239. package/docs/install/render.mdx +0 -158
  240. package/docs/install/uninstall.md +0 -128
  241. package/docs/install/updating.md +0 -231
  242. package/docs/ja-JP/AGENTS.md +0 -37
  243. package/docs/ja-JP/index.md +0 -183
  244. package/docs/ja-JP/start/getting-started.md +0 -125
  245. package/docs/ja-JP/start/wizard.md +0 -77
  246. package/docs/logging.md +0 -350
  247. package/docs/nav-tabs-underline.js +0 -100
  248. package/docs/network.md +0 -54
  249. package/docs/nodes/audio.md +0 -133
  250. package/docs/nodes/camera.md +0 -156
  251. package/docs/nodes/images.md +0 -72
  252. package/docs/nodes/index.md +0 -342
  253. package/docs/nodes/location-command.md +0 -113
  254. package/docs/nodes/media-understanding.md +0 -379
  255. package/docs/nodes/talk.md +0 -90
  256. package/docs/nodes/troubleshooting.md +0 -112
  257. package/docs/nodes/voicewake.md +0 -65
  258. package/docs/perplexity.md +0 -80
  259. package/docs/phase-6.5-pre-flight-audit.md +0 -268
  260. package/docs/pi-dev.md +0 -70
  261. package/docs/pi.md +0 -610
  262. package/docs/platforms/android.md +0 -151
  263. package/docs/platforms/digitalocean.md +0 -265
  264. package/docs/platforms/index.md +0 -53
  265. package/docs/platforms/ios.md +0 -108
  266. package/docs/platforms/linux.md +0 -94
  267. package/docs/platforms/mac/bundled-gateway.md +0 -73
  268. package/docs/platforms/mac/canvas.md +0 -125
  269. package/docs/platforms/mac/child-process.md +0 -69
  270. package/docs/platforms/mac/dev-setup.md +0 -104
  271. package/docs/platforms/mac/health.md +0 -34
  272. package/docs/platforms/mac/icon.md +0 -31
  273. package/docs/platforms/mac/logging.md +0 -57
  274. package/docs/platforms/mac/menu-bar.md +0 -81
  275. package/docs/platforms/mac/peekaboo.md +0 -65
  276. package/docs/platforms/mac/permissions.md +0 -50
  277. package/docs/platforms/mac/release.md +0 -85
  278. package/docs/platforms/mac/remote.md +0 -84
  279. package/docs/platforms/mac/signing.md +0 -47
  280. package/docs/platforms/mac/skills.md +0 -33
  281. package/docs/platforms/mac/voice-overlay.md +0 -60
  282. package/docs/platforms/mac/voicewake.md +0 -66
  283. package/docs/platforms/mac/webchat.md +0 -43
  284. package/docs/platforms/mac/xpc.md +0 -61
  285. package/docs/platforms/macos.md +0 -204
  286. package/docs/platforms/oracle.md +0 -303
  287. package/docs/platforms/raspberry-pi.md +0 -358
  288. package/docs/platforms/windows.md +0 -159
  289. package/docs/plugins/agent-tools.md +0 -99
  290. package/docs/plugins/community.md +0 -44
  291. package/docs/plugins/manifest.md +0 -71
  292. package/docs/plugins/voice-call.md +0 -322
  293. package/docs/plugins/zalouser.md +0 -81
  294. package/docs/prose.md +0 -134
  295. package/docs/providers/anthropic.md +0 -174
  296. package/docs/providers/bedrock.md +0 -176
  297. package/docs/providers/claude-max-api-proxy.md +0 -148
  298. package/docs/providers/cloudflare-ai-gateway.md +0 -71
  299. package/docs/providers/deepgram.md +0 -93
  300. package/docs/providers/github-copilot.md +0 -72
  301. package/docs/providers/glm.md +0 -33
  302. package/docs/providers/huggingface.md +0 -209
  303. package/docs/providers/index.md +0 -67
  304. package/docs/providers/litellm.md +0 -153
  305. package/docs/providers/minimax.md +0 -208
  306. package/docs/providers/models.md +0 -52
  307. package/docs/providers/moonshot.md +0 -142
  308. package/docs/providers/nvidia.md +0 -55
  309. package/docs/providers/ollama.md +0 -250
  310. package/docs/providers/openai.md +0 -62
  311. package/docs/providers/opencode.md +0 -36
  312. package/docs/providers/openrouter.md +0 -37
  313. package/docs/providers/qianfan.md +0 -38
  314. package/docs/providers/qwen.md +0 -53
  315. package/docs/providers/synthetic.md +0 -99
  316. package/docs/providers/together.md +0 -65
  317. package/docs/providers/venice.md +0 -267
  318. package/docs/providers/vercel-ai-gateway.md +0 -50
  319. package/docs/providers/vllm.md +0 -92
  320. package/docs/providers/xiaomi.md +0 -64
  321. package/docs/providers/zai.md +0 -38
  322. package/docs/refactor/exec-host.md +0 -316
  323. package/docs/refactor/outbound-session-mirroring.md +0 -83
  324. package/docs/refactor/plugin-sdk.md +0 -214
  325. package/docs/refactor/strict-config.md +0 -93
  326. package/docs/refactor/syminet.md +0 -417
  327. package/docs/reference/AGENTS.default.md +0 -123
  328. package/docs/reference/RELEASING.md +0 -120
  329. package/docs/reference/api-usage-costs.md +0 -138
  330. package/docs/reference/credits.md +0 -28
  331. package/docs/reference/device-models.md +0 -47
  332. package/docs/reference/rpc.md +0 -43
  333. package/docs/reference/session-management-compaction.md +0 -284
  334. package/docs/reference/test.md +0 -51
  335. package/docs/reference/token-use.md +0 -136
  336. package/docs/reference/transcript-hygiene.md +0 -151
  337. package/docs/reference/wizard.md +0 -265
  338. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -89
  339. package/docs/security/README.md +0 -16
  340. package/docs/security/THREAT-MODEL-ATLAS.md +0 -600
  341. package/docs/security/formal-verification.md +0 -164
  342. package/docs/start/bootstrapping.md +0 -41
  343. package/docs/start/docs-directory.md +0 -63
  344. package/docs/start/getting-started.md +0 -135
  345. package/docs/start/hubs.md +0 -196
  346. package/docs/start/lore.md +0 -216
  347. package/docs/start/onboarding-overview.md +0 -51
  348. package/docs/start/onboarding.md +0 -81
  349. package/docs/start/quickstart.md +0 -22
  350. package/docs/start/setup.md +0 -160
  351. package/docs/start/showcase.md +0 -414
  352. package/docs/start/symi.md +0 -211
  353. package/docs/start/wizard-cli-automation.md +0 -158
  354. package/docs/start/wizard-cli-reference.md +0 -255
  355. package/docs/start/wizard.md +0 -109
  356. package/docs/style.css +0 -37
  357. package/docs/tools/agent-send.md +0 -52
  358. package/docs/tools/apply-patch.md +0 -51
  359. package/docs/tools/browser-linux-troubleshooting.md +0 -139
  360. package/docs/tools/browser-login.md +0 -67
  361. package/docs/tools/browser.md +0 -587
  362. package/docs/tools/chrome-extension.md +0 -183
  363. package/docs/tools/creating-skills.md +0 -54
  364. package/docs/tools/elevated.md +0 -55
  365. package/docs/tools/exec-approvals.md +0 -261
  366. package/docs/tools/exec.md +0 -184
  367. package/docs/tools/firecrawl.md +0 -61
  368. package/docs/tools/index.md +0 -540
  369. package/docs/tools/llm-task.md +0 -115
  370. package/docs/tools/loop-detection.md +0 -98
  371. package/docs/tools/multi-agent-sandbox-tools.md +0 -396
  372. package/docs/tools/pipeline.md +0 -340
  373. package/docs/tools/plugin.md +0 -687
  374. package/docs/tools/reactions.md +0 -21
  375. package/docs/tools/skills-config.md +0 -76
  376. package/docs/tools/skills.md +0 -300
  377. package/docs/tools/slash-commands.md +0 -202
  378. package/docs/tools/subagents.md +0 -232
  379. package/docs/tools/symihub.md +0 -256
  380. package/docs/tools/thinking.md +0 -75
  381. package/docs/tools/web.md +0 -265
  382. package/docs/tts.md +0 -398
  383. package/docs/vps.md +0 -43
  384. package/docs/web/control-ui.md +0 -247
  385. package/docs/web/dashboard.md +0 -46
  386. package/docs/web/index.md +0 -118
  387. package/docs/web/tui.md +0 -162
  388. package/docs/web/webchat.md +0 -53
  389. package/docs/whatsapp-symi-ai-zh.jpg +0 -0
  390. package/docs/whatsapp-symi.jpg +0 -0
  391. package/docs/zh-CN/AGENTS.md +0 -59
  392. package/docs/zh-CN/automation/auth-monitoring.md +0 -47
  393. package/docs/zh-CN/automation/cron-jobs.md +0 -422
  394. package/docs/zh-CN/automation/cron-vs-heartbeat.md +0 -286
  395. package/docs/zh-CN/automation/gmail-pubsub.md +0 -249
  396. package/docs/zh-CN/automation/hooks.md +0 -881
  397. package/docs/zh-CN/automation/poll.md +0 -68
  398. package/docs/zh-CN/automation/troubleshooting.md +0 -8
  399. package/docs/zh-CN/automation/webhook.md +0 -161
  400. package/docs/zh-CN/brave-search.md +0 -48
  401. package/docs/zh-CN/channels/bluebubbles.md +0 -271
  402. package/docs/zh-CN/channels/broadcast-groups.md +0 -448
  403. package/docs/zh-CN/channels/channel-routing.md +0 -112
  404. package/docs/zh-CN/channels/feishu.md +0 -629
  405. package/docs/zh-CN/channels/googlechat.md +0 -257
  406. package/docs/zh-CN/channels/grammy.md +0 -38
  407. package/docs/zh-CN/channels/group-messages.md +0 -89
  408. package/docs/zh-CN/channels/groups.md +0 -369
  409. package/docs/zh-CN/channels/imessage.md +0 -300
  410. package/docs/zh-CN/channels/index.md +0 -52
  411. package/docs/zh-CN/channels/line.md +0 -180
  412. package/docs/zh-CN/channels/location.md +0 -63
  413. package/docs/zh-CN/channels/matrix.md +0 -221
  414. package/docs/zh-CN/channels/mattermost.md +0 -144
  415. package/docs/zh-CN/channels/msteams.md +0 -773
  416. package/docs/zh-CN/channels/nextcloud-talk.md +0 -142
  417. package/docs/zh-CN/channels/nostr.md +0 -240
  418. package/docs/zh-CN/channels/pairing.md +0 -86
  419. package/docs/zh-CN/channels/signal.md +0 -207
  420. package/docs/zh-CN/channels/slack.md +0 -529
  421. package/docs/zh-CN/channels/telegram.md +0 -748
  422. package/docs/zh-CN/channels/tlon.md +0 -136
  423. package/docs/zh-CN/channels/troubleshooting.md +0 -34
  424. package/docs/zh-CN/channels/twitch.md +0 -385
  425. package/docs/zh-CN/channels/whatsapp.md +0 -411
  426. package/docs/zh-CN/channels/zalo.md +0 -196
  427. package/docs/zh-CN/channels/zalouser.md +0 -147
  428. package/docs/zh-CN/cli/acp.md +0 -173
  429. package/docs/zh-CN/cli/agent.md +0 -30
  430. package/docs/zh-CN/cli/agents.md +0 -82
  431. package/docs/zh-CN/cli/approvals.md +0 -57
  432. package/docs/zh-CN/cli/browser.md +0 -114
  433. package/docs/zh-CN/cli/channels.md +0 -80
  434. package/docs/zh-CN/cli/config.md +0 -57
  435. package/docs/zh-CN/cli/configure.md +0 -37
  436. package/docs/zh-CN/cli/cron.md +0 -43
  437. package/docs/zh-CN/cli/dashboard.md +0 -23
  438. package/docs/zh-CN/cli/devices.md +0 -74
  439. package/docs/zh-CN/cli/directory.md +0 -69
  440. package/docs/zh-CN/cli/dns.md +0 -30
  441. package/docs/zh-CN/cli/docs.md +0 -22
  442. package/docs/zh-CN/cli/doctor.md +0 -48
  443. package/docs/zh-CN/cli/gateway.md +0 -206
  444. package/docs/zh-CN/cli/health.md +0 -28
  445. package/docs/zh-CN/cli/hooks.md +0 -298
  446. package/docs/zh-CN/cli/index.md +0 -1025
  447. package/docs/zh-CN/cli/logs.md +0 -31
  448. package/docs/zh-CN/cli/memory.md +0 -52
  449. package/docs/zh-CN/cli/message.md +0 -205
  450. package/docs/zh-CN/cli/models.md +0 -85
  451. package/docs/zh-CN/cli/node.md +0 -115
  452. package/docs/zh-CN/cli/nodes.md +0 -80
  453. package/docs/zh-CN/cli/onboard.md +0 -36
  454. package/docs/zh-CN/cli/pairing.md +0 -28
  455. package/docs/zh-CN/cli/plugins.md +0 -66
  456. package/docs/zh-CN/cli/reset.md +0 -24
  457. package/docs/zh-CN/cli/sandbox.md +0 -158
  458. package/docs/zh-CN/cli/security.md +0 -33
  459. package/docs/zh-CN/cli/sessions.md +0 -23
  460. package/docs/zh-CN/cli/setup.md +0 -36
  461. package/docs/zh-CN/cli/skills.md +0 -33
  462. package/docs/zh-CN/cli/status.md +0 -32
  463. package/docs/zh-CN/cli/system.md +0 -63
  464. package/docs/zh-CN/cli/tui.md +0 -30
  465. package/docs/zh-CN/cli/uninstall.md +0 -24
  466. package/docs/zh-CN/cli/update.md +0 -101
  467. package/docs/zh-CN/cli/voicecall.md +0 -41
  468. package/docs/zh-CN/cli/webhooks.md +0 -32
  469. package/docs/zh-CN/concepts/agent-loop.md +0 -146
  470. package/docs/zh-CN/concepts/agent-workspace.md +0 -219
  471. package/docs/zh-CN/concepts/agent.md +0 -115
  472. package/docs/zh-CN/concepts/architecture.md +0 -122
  473. package/docs/zh-CN/concepts/compaction.md +0 -67
  474. package/docs/zh-CN/concepts/context.md +0 -168
  475. package/docs/zh-CN/concepts/features.md +0 -57
  476. package/docs/zh-CN/concepts/markdown-formatting.md +0 -115
  477. package/docs/zh-CN/concepts/memory.md +0 -412
  478. package/docs/zh-CN/concepts/messages.md +0 -140
  479. package/docs/zh-CN/concepts/model-failover.md +0 -145
  480. package/docs/zh-CN/concepts/model-providers.md +0 -320
  481. package/docs/zh-CN/concepts/models.md +0 -196
  482. package/docs/zh-CN/concepts/multi-agent.md +0 -371
  483. package/docs/zh-CN/concepts/oauth.md +0 -151
  484. package/docs/zh-CN/concepts/presence.md +0 -99
  485. package/docs/zh-CN/concepts/queue.md +0 -91
  486. package/docs/zh-CN/concepts/retry.md +0 -71
  487. package/docs/zh-CN/concepts/session-pruning.md +0 -129
  488. package/docs/zh-CN/concepts/session-tool.md +0 -198
  489. package/docs/zh-CN/concepts/session.md +0 -158
  490. package/docs/zh-CN/concepts/sessions.md +0 -17
  491. package/docs/zh-CN/concepts/streaming.md +0 -131
  492. package/docs/zh-CN/concepts/system-prompt.md +0 -99
  493. package/docs/zh-CN/concepts/timezone.md +0 -94
  494. package/docs/zh-CN/concepts/typebox.md +0 -284
  495. package/docs/zh-CN/concepts/typing-indicators.md +0 -74
  496. package/docs/zh-CN/concepts/usage-tracking.md +0 -42
  497. package/docs/zh-CN/date-time.md +0 -128
  498. package/docs/zh-CN/debug/node-issue.md +0 -90
  499. package/docs/zh-CN/diagnostics/flags.md +0 -98
  500. package/docs/zh-CN/experiments/onboarding-config-protocol.md +0 -47
  501. package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -69
  502. package/docs/zh-CN/experiments/plans/group-policy-hardening.md +0 -45
  503. package/docs/zh-CN/experiments/plans/openresponses-gateway.md +0 -121
  504. package/docs/zh-CN/experiments/proposals/model-config.md +0 -42
  505. package/docs/zh-CN/experiments/research/memory.md +0 -235
  506. package/docs/zh-CN/gateway/authentication.md +0 -142
  507. package/docs/zh-CN/gateway/background-process.md +0 -100
  508. package/docs/zh-CN/gateway/bonjour.md +0 -174
  509. package/docs/zh-CN/gateway/bridge-protocol.md +0 -86
  510. package/docs/zh-CN/gateway/cli-backends.md +0 -213
  511. package/docs/zh-CN/gateway/configuration-examples.md +0 -580
  512. package/docs/zh-CN/gateway/configuration.md +0 -3284
  513. package/docs/zh-CN/gateway/discovery.md +0 -123
  514. package/docs/zh-CN/gateway/doctor.md +0 -238
  515. package/docs/zh-CN/gateway/gateway-lock.md +0 -41
  516. package/docs/zh-CN/gateway/health.md +0 -42
  517. package/docs/zh-CN/gateway/heartbeat.md +0 -272
  518. package/docs/zh-CN/gateway/index.md +0 -335
  519. package/docs/zh-CN/gateway/local-models.md +0 -157
  520. package/docs/zh-CN/gateway/logging.md +0 -114
  521. package/docs/zh-CN/gateway/multiple-gateways.md +0 -119
  522. package/docs/zh-CN/gateway/network-model.md +0 -23
  523. package/docs/zh-CN/gateway/openai-http-api.md +0 -125
  524. package/docs/zh-CN/gateway/openresponses-http-api.md +0 -317
  525. package/docs/zh-CN/gateway/pairing.md +0 -99
  526. package/docs/zh-CN/gateway/protocol.md +0 -220
  527. package/docs/zh-CN/gateway/remote-gateway-readme.md +0 -164
  528. package/docs/zh-CN/gateway/remote.md +0 -133
  529. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -135
  530. package/docs/zh-CN/gateway/sandboxing.md +0 -188
  531. package/docs/zh-CN/gateway/security/index.md +0 -772
  532. package/docs/zh-CN/gateway/tailscale.md +0 -124
  533. package/docs/zh-CN/gateway/tools-invoke-http-api.md +0 -92
  534. package/docs/zh-CN/gateway/troubleshooting.md +0 -758
  535. package/docs/zh-CN/help/debugging.md +0 -160
  536. package/docs/zh-CN/help/environment.md +0 -88
  537. package/docs/zh-CN/help/faq.md +0 -2613
  538. package/docs/zh-CN/help/index.md +0 -28
  539. package/docs/zh-CN/help/scripts.md +0 -35
  540. package/docs/zh-CN/help/testing.md +0 -375
  541. package/docs/zh-CN/help/troubleshooting.md +0 -104
  542. package/docs/zh-CN/index.md +0 -183
  543. package/docs/zh-CN/install/ansible.md +0 -214
  544. package/docs/zh-CN/install/bun.md +0 -65
  545. package/docs/zh-CN/install/development-channels.md +0 -81
  546. package/docs/zh-CN/install/docker.md +0 -525
  547. package/docs/zh-CN/install/exe-dev.md +0 -127
  548. package/docs/zh-CN/install/fly.md +0 -476
  549. package/docs/zh-CN/install/gcp.md +0 -509
  550. package/docs/zh-CN/install/hetzner.md +0 -336
  551. package/docs/zh-CN/install/index.md +0 -193
  552. package/docs/zh-CN/install/installer.md +0 -128
  553. package/docs/zh-CN/install/macos-vm.md +0 -288
  554. package/docs/zh-CN/install/migrating.md +0 -199
  555. package/docs/zh-CN/install/nix.md +0 -99
  556. package/docs/zh-CN/install/node.md +0 -8
  557. package/docs/zh-CN/install/northflank.mdx +0 -56
  558. package/docs/zh-CN/install/railway.mdx +0 -102
  559. package/docs/zh-CN/install/render.mdx +0 -168
  560. package/docs/zh-CN/install/uninstall.md +0 -135
  561. package/docs/zh-CN/install/updating.md +0 -233
  562. package/docs/zh-CN/logging.md +0 -329
  563. package/docs/zh-CN/network.md +0 -59
  564. package/docs/zh-CN/nodes/audio.md +0 -120
  565. package/docs/zh-CN/nodes/camera.md +0 -162
  566. package/docs/zh-CN/nodes/images.md +0 -79
  567. package/docs/zh-CN/nodes/index.md +0 -348
  568. package/docs/zh-CN/nodes/location-command.md +0 -120
  569. package/docs/zh-CN/nodes/media-understanding.md +0 -380
  570. package/docs/zh-CN/nodes/talk.md +0 -97
  571. package/docs/zh-CN/nodes/troubleshooting.md +0 -8
  572. package/docs/zh-CN/nodes/voicewake.md +0 -72
  573. package/docs/zh-CN/perplexity.md +0 -84
  574. package/docs/zh-CN/pi-dev.md +0 -77
  575. package/docs/zh-CN/pi.md +0 -617
  576. package/docs/zh-CN/platforms/android.md +0 -155
  577. package/docs/zh-CN/platforms/digitalocean.md +0 -268
  578. package/docs/zh-CN/platforms/index.md +0 -60
  579. package/docs/zh-CN/platforms/ios.md +0 -114
  580. package/docs/zh-CN/platforms/linux.md +0 -101
  581. package/docs/zh-CN/platforms/mac/bundled-gateway.md +0 -75
  582. package/docs/zh-CN/platforms/mac/canvas.md +0 -128
  583. package/docs/zh-CN/platforms/mac/child-process.md +0 -73
  584. package/docs/zh-CN/platforms/mac/dev-setup.md +0 -109
  585. package/docs/zh-CN/platforms/mac/health.md +0 -41
  586. package/docs/zh-CN/platforms/mac/icon.md +0 -38
  587. package/docs/zh-CN/platforms/mac/logging.md +0 -64
  588. package/docs/zh-CN/platforms/mac/menu-bar.md +0 -88
  589. package/docs/zh-CN/platforms/mac/peekaboo.md +0 -62
  590. package/docs/zh-CN/platforms/mac/permissions.md +0 -46
  591. package/docs/zh-CN/platforms/mac/release.md +0 -92
  592. package/docs/zh-CN/platforms/mac/remote.md +0 -90
  593. package/docs/zh-CN/platforms/mac/signing.md +0 -54
  594. package/docs/zh-CN/platforms/mac/skills.md +0 -40
  595. package/docs/zh-CN/platforms/mac/voice-overlay.md +0 -67
  596. package/docs/zh-CN/platforms/mac/voicewake.md +0 -73
  597. package/docs/zh-CN/platforms/mac/webchat.md +0 -43
  598. package/docs/zh-CN/platforms/mac/xpc.md +0 -68
  599. package/docs/zh-CN/platforms/macos.md +0 -193
  600. package/docs/zh-CN/platforms/oracle.md +0 -310
  601. package/docs/zh-CN/platforms/raspberry-pi.md +0 -365
  602. package/docs/zh-CN/platforms/windows.md +0 -156
  603. package/docs/zh-CN/plugins/agent-tools.md +0 -99
  604. package/docs/zh-CN/plugins/manifest.md +0 -68
  605. package/docs/zh-CN/plugins/voice-call.md +0 -250
  606. package/docs/zh-CN/plugins/zalouser.md +0 -88
  607. package/docs/zh-CN/prose.md +0 -141
  608. package/docs/zh-CN/providers/anthropic.md +0 -159
  609. package/docs/zh-CN/providers/bedrock.md +0 -170
  610. package/docs/zh-CN/providers/claude-max-api-proxy.md +0 -155
  611. package/docs/zh-CN/providers/deepgram.md +0 -97
  612. package/docs/zh-CN/providers/github-copilot.md +0 -67
  613. package/docs/zh-CN/providers/glm.md +0 -39
  614. package/docs/zh-CN/providers/index.md +0 -66
  615. package/docs/zh-CN/providers/minimax.md +0 -206
  616. package/docs/zh-CN/providers/models.md +0 -55
  617. package/docs/zh-CN/providers/moonshot.md +0 -145
  618. package/docs/zh-CN/providers/ollama.md +0 -230
  619. package/docs/zh-CN/providers/openai.md +0 -68
  620. package/docs/zh-CN/providers/opencode.md +0 -41
  621. package/docs/zh-CN/providers/openrouter.md +0 -43
  622. package/docs/zh-CN/providers/qianfan.md +0 -8
  623. package/docs/zh-CN/providers/qwen.md +0 -55
  624. package/docs/zh-CN/providers/synthetic.md +0 -102
  625. package/docs/zh-CN/providers/venice.md +0 -274
  626. package/docs/zh-CN/providers/vercel-ai-gateway.md +0 -57
  627. package/docs/zh-CN/providers/xiaomi.md +0 -68
  628. package/docs/zh-CN/providers/zai.md +0 -41
  629. package/docs/zh-CN/refactor/exec-host.md +0 -323
  630. package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -90
  631. package/docs/zh-CN/refactor/plugin-sdk.md +0 -221
  632. package/docs/zh-CN/refactor/strict-config.md +0 -100
  633. package/docs/zh-CN/refactor/syminet.md +0 -424
  634. package/docs/zh-CN/reference/AGENTS.default.md +0 -130
  635. package/docs/zh-CN/reference/RELEASING.md +0 -122
  636. package/docs/zh-CN/reference/api-usage-costs.md +0 -136
  637. package/docs/zh-CN/reference/credits.md +0 -34
  638. package/docs/zh-CN/reference/device-models.md +0 -54
  639. package/docs/zh-CN/reference/rpc.md +0 -48
  640. package/docs/zh-CN/reference/session-management-compaction.md +0 -286
  641. package/docs/zh-CN/reference/templates/AGENTS.dev.md +0 -89
  642. package/docs/zh-CN/reference/templates/AGENTS.md +0 -234
  643. package/docs/zh-CN/reference/templates/BOOT.md +0 -17
  644. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +0 -68
  645. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +0 -54
  646. package/docs/zh-CN/reference/templates/IDENTITY.md +0 -36
  647. package/docs/zh-CN/reference/templates/SYMICORE.dev.md +0 -83
  648. package/docs/zh-CN/reference/templates/SYMICORE.md +0 -49
  649. package/docs/zh-CN/reference/templates/SYMIPULSE.md +0 -69
  650. package/docs/zh-CN/reference/templates/TOOLS.dev.md +0 -31
  651. package/docs/zh-CN/reference/templates/TOOLS.md +0 -53
  652. package/docs/zh-CN/reference/templates/USER.dev.md +0 -25
  653. package/docs/zh-CN/reference/templates/USER.md +0 -30
  654. package/docs/zh-CN/reference/test.md +0 -57
  655. package/docs/zh-CN/reference/token-use.md +0 -119
  656. package/docs/zh-CN/reference/transcript-hygiene.md +0 -109
  657. package/docs/zh-CN/reference/wizard.md +0 -9
  658. package/docs/zh-CN/security/formal-verification.md +0 -171
  659. package/docs/zh-CN/start/bootstrapping.md +0 -9
  660. package/docs/zh-CN/start/docs-directory.md +0 -69
  661. package/docs/zh-CN/start/getting-started.md +0 -201
  662. package/docs/zh-CN/start/hubs.md +0 -199
  663. package/docs/zh-CN/start/lore.md +0 -223
  664. package/docs/zh-CN/start/onboarding.md +0 -105
  665. package/docs/zh-CN/start/quickstart.md +0 -88
  666. package/docs/zh-CN/start/setup.md +0 -151
  667. package/docs/zh-CN/start/showcase.md +0 -421
  668. package/docs/zh-CN/start/symi.md +0 -244
  669. package/docs/zh-CN/start/wizard.md +0 -326
  670. package/docs/zh-CN/tools/agent-send.md +0 -58
  671. package/docs/zh-CN/tools/apply-patch.md +0 -57
  672. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +0 -144
  673. package/docs/zh-CN/tools/browser-login.md +0 -75
  674. package/docs/zh-CN/tools/browser.md +0 -553
  675. package/docs/zh-CN/tools/chrome-extension.md +0 -183
  676. package/docs/zh-CN/tools/creating-skills.md +0 -61
  677. package/docs/zh-CN/tools/elevated.md +0 -62
  678. package/docs/zh-CN/tools/exec-approvals.md +0 -233
  679. package/docs/zh-CN/tools/exec.md +0 -169
  680. package/docs/zh-CN/tools/firecrawl.md +0 -68
  681. package/docs/zh-CN/tools/index.md +0 -508
  682. package/docs/zh-CN/tools/llm-task.md +0 -117
  683. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +0 -400
  684. package/docs/zh-CN/tools/pipeline.md +0 -349
  685. package/docs/zh-CN/tools/plugin.md +0 -639
  686. package/docs/zh-CN/tools/reactions.md +0 -28
  687. package/docs/zh-CN/tools/skills-config.md +0 -78
  688. package/docs/zh-CN/tools/skills.md +0 -279
  689. package/docs/zh-CN/tools/slash-commands.md +0 -196
  690. package/docs/zh-CN/tools/subagents.md +0 -167
  691. package/docs/zh-CN/tools/symihub.md +0 -209
  692. package/docs/zh-CN/tools/thinking.md +0 -80
  693. package/docs/zh-CN/tools/web.md +0 -257
  694. package/docs/zh-CN/tts.md +0 -373
  695. package/docs/zh-CN/vps.md +0 -47
  696. package/docs/zh-CN/web/control-ui.md +0 -190
  697. package/docs/zh-CN/web/dashboard.md +0 -53
  698. package/docs/zh-CN/web/index.md +0 -118
  699. package/docs/zh-CN/web/tui.md +0 -166
  700. package/docs/zh-CN/web/webchat.md +0 -56
  701. package/extensions/imessage/index.ts +0 -17
  702. package/extensions/imessage/node_modules/.bin/symi +0 -21
  703. package/extensions/imessage/package.json +0 -15
  704. package/extensions/imessage/src/channel.outbound.test.ts +0 -66
  705. package/extensions/imessage/src/channel.ts +0 -298
  706. package/extensions/imessage/src/runtime.ts +0 -14
  707. package/extensions/imessage/symi.plugin.json +0 -9
  708. package/extensions/line/index.ts +0 -19
  709. package/extensions/line/node_modules/.bin/symi +0 -21
  710. package/extensions/line/package.json +0 -30
  711. package/extensions/line/src/card-command.ts +0 -344
  712. package/extensions/line/src/channel.logout.test.ts +0 -133
  713. package/extensions/line/src/channel.sendPayload.test.ts +0 -312
  714. package/extensions/line/src/channel.startup.test.ts +0 -133
  715. package/extensions/line/src/channel.ts +0 -801
  716. package/extensions/line/src/runtime.ts +0 -14
  717. package/extensions/line/symi.plugin.json +0 -9
  718. package/extensions/signal/index.ts +0 -17
  719. package/extensions/signal/node_modules/.bin/symi +0 -21
  720. package/extensions/signal/package.json +0 -15
  721. package/extensions/signal/src/channel.ts +0 -302
  722. package/extensions/signal/src/runtime.ts +0 -14
  723. package/extensions/signal/symi.plugin.json +0 -9
  724. package/extensions/telegram/index.ts +0 -17
  725. package/extensions/telegram/node_modules/.bin/symi +0 -21
  726. package/extensions/telegram/package.json +0 -15
  727. package/extensions/telegram/src/channel.test.ts +0 -125
  728. package/extensions/telegram/src/channel.ts +0 -560
  729. package/extensions/telegram/src/runtime.ts +0 -14
  730. package/extensions/telegram/symi.plugin.json +0 -9
  731. package/extensions/whatsapp/index.ts +0 -17
  732. package/extensions/whatsapp/node_modules/.bin/symi +0 -21
  733. package/extensions/whatsapp/package.json +0 -15
  734. package/extensions/whatsapp/src/channel.ts +0 -465
  735. package/extensions/whatsapp/src/resolve-target.test.ts +0 -170
  736. package/extensions/whatsapp/src/runtime.ts +0 -14
  737. package/extensions/whatsapp/symi.plugin.json +0 -9
@@ -1,138 +0,0 @@
1
- ---
2
- summary: "Audit what can spend money, which keys are used, and how to view usage"
3
- read_when:
4
- - You want to understand which features may call paid APIs
5
- - You need to audit keys, costs, and usage visibility
6
- - You’re explaining /status or /usage cost reporting
7
- title: "API Usage and Costs"
8
- ---
9
-
10
- # API usage & costs
11
-
12
- This doc lists **features that can invoke API keys** and where their costs show up. It focuses on
13
- Symi features that can generate provider usage or paid API calls.
14
-
15
- ## Where costs show up (chat + CLI)
16
-
17
- **Per-session cost snapshot**
18
-
19
- - `/status` shows the current session model, context usage, and last response tokens.
20
- - If the model uses **API-key auth**, `/status` also shows **estimated cost** for the last reply.
21
-
22
- **Per-message cost footer**
23
-
24
- - `/usage full` appends a usage footer to every reply, including **estimated cost** (API-key only).
25
- - `/usage tokens` shows tokens only; OAuth flows hide dollar cost.
26
-
27
- **CLI usage windows (provider quotas)**
28
-
29
- - `symi status --usage` and `symi channels list` show provider **usage windows**
30
- (quota snapshots, not per-message costs).
31
-
32
- See [Token use & costs](/reference/token-use) for details and examples.
33
-
34
- ## How keys are discovered
35
-
36
- Symi can pick up credentials from:
37
-
38
- - **Auth profiles** (per-agent, stored in `auth-profiles.json`).
39
- - **Environment variables** (e.g. `OPENAI_API_KEY`, `BRAVE_API_KEY`, `FIRECRAWL_API_KEY`).
40
- - **Config** (`models.providers.*.apiKey`, `tools.web.search.*`, `tools.web.fetch.firecrawl.*`,
41
- `memorySearch.*`, `talk.apiKey`).
42
- - **Skills** (`skills.entries.<name>.apiKey`) which may export keys to the skill process env.
43
-
44
- ## Features that can spend keys
45
-
46
- ### 1) Core model responses (chat + tools)
47
-
48
- Every reply or tool call uses the **current model provider** (OpenAI, Anthropic, etc). This is the
49
- primary source of usage and cost.
50
-
51
- See [Models](/providers/models) for pricing config and [Token use & costs](/reference/token-use) for display.
52
-
53
- ### 2) Media understanding (audio/image/video)
54
-
55
- Inbound media can be summarized/transcribed before the reply runs. This uses model/provider APIs.
56
-
57
- - Audio: OpenAI / Groq / Deepgram (now **auto-enabled** when keys exist).
58
- - Image: OpenAI / Anthropic / Google.
59
- - Video: Google.
60
-
61
- See [Media understanding](/nodes/media-understanding).
62
-
63
- ### 3) Memory embeddings + semantic search
64
-
65
- Semantic memory search uses **embedding APIs** when configured for remote providers:
66
-
67
- - `memorySearch.provider = "openai"` → OpenAI embeddings
68
- - `memorySearch.provider = "gemini"` → Gemini embeddings
69
- - `memorySearch.provider = "voyage"` → Voyage embeddings
70
- - Optional fallback to a remote provider if local embeddings fail
71
-
72
- You can keep it local with `memorySearch.provider = "local"` (no API usage).
73
-
74
- See [Memory](/concepts/memory).
75
-
76
- ### 4) Web search tool (Brave / Perplexity via OpenRouter)
77
-
78
- `web_search` uses API keys and may incur usage charges:
79
-
80
- - **Brave Search API**: `BRAVE_API_KEY` or `tools.web.search.apiKey`
81
- - **Perplexity** (via OpenRouter): `PERPLEXITY_API_KEY` or `OPENROUTER_API_KEY`
82
-
83
- **Brave free tier (generous):**
84
-
85
- - **2,000 requests/month**
86
- - **1 request/second**
87
- - **Credit card required** for verification (no charge unless you upgrade)
88
-
89
- See [Web tools](/tools/web).
90
-
91
- ### 5) Web fetch tool (Firecrawl)
92
-
93
- `web_fetch` can call **Firecrawl** when an API key is present:
94
-
95
- - `FIRECRAWL_API_KEY` or `tools.web.fetch.firecrawl.apiKey`
96
-
97
- If Firecrawl isn’t configured, the tool falls back to direct fetch + readability (no paid API).
98
-
99
- See [Web tools](/tools/web).
100
-
101
- ### 6) Provider usage snapshots (status/health)
102
-
103
- Some status commands call **provider usage endpoints** to display quota windows or auth health.
104
- These are typically low-volume calls but still hit provider APIs:
105
-
106
- - `symi status --usage`
107
- - `symi models status --json`
108
-
109
- See [Models CLI](/cli/models).
110
-
111
- ### 7) Compaction safeguard summarization
112
-
113
- The compaction safeguard can summarize session history using the **current model**, which
114
- invokes provider APIs when it runs.
115
-
116
- See [Session management + compaction](/reference/session-management-compaction).
117
-
118
- ### 8) Model scan / probe
119
-
120
- `symi models scan` can probe OpenRouter models and uses `OPENROUTER_API_KEY` when
121
- probing is enabled.
122
-
123
- See [Models CLI](/cli/models).
124
-
125
- ### 9) Talk (speech)
126
-
127
- Talk mode can invoke **ElevenLabs** when configured:
128
-
129
- - `ELEVENLABS_API_KEY` or `talk.apiKey`
130
-
131
- See [Talk mode](/nodes/talk).
132
-
133
- ### 10) Skills (third-party APIs)
134
-
135
- Skills can store `apiKey` in `skills.entries.<name>.apiKey`. If a skill uses that key for external
136
- APIs, it can incur costs according to the skill’s provider.
137
-
138
- See [Skills](/tools/skills).
@@ -1,28 +0,0 @@
1
- ---
2
- summary: "Project origin, contributors, and license."
3
- read_when:
4
- - You want the project backstory or contributor credits
5
- title: "Credits"
6
- ---
7
-
8
- ## The name
9
-
10
- Symi = SHELL + TARDIS, because every space pipeline needs a time and space machine.
11
-
12
- ## Credits
13
-
14
- - **Peter Steinberger** ([@steipete](https://x.com/steipete)) - Creator, pipeline whisperer
15
- - **Mario Zechner** ([@badlogicc](https://x.com/badlogicgames)) - Pi creator, security pen tester
16
- - **Symi** - The space pipeline who demanded a better name
17
-
18
- ## Core contributors
19
-
20
- - **Maxim Vovshin** (@Hyaxia, [36747317+Hyaxia@users.noreply.github.com](mailto:36747317+Hyaxia@users.noreply.github.com)) - Blogwatcher skill
21
- - **Nacho Iacovino** (@nachoiacovino, [nacho.iacovino@gmail.com](mailto:nacho.iacovino@gmail.com)) - Location parsing (Telegram and WhatsApp)
22
- - **Vincent Koc** ([@vincentkoc](https://github.com/vincentkoc), [@vincent_koc](https://x.com/vincent_koc)) - Agents, Telemetry, Hooks, Security
23
-
24
- ## License
25
-
26
- MIT - Free as a pipeline in the ocean.
27
-
28
- > "We are all just playing with our own prompts." (An AI, probably high on tokens)
@@ -1,47 +0,0 @@
1
- ---
2
- summary: "How Symi vendors Apple device model identifiers for friendly names in the macOS app."
3
- read_when:
4
- - Updating device model identifier mappings or NOTICE/license files
5
- - Changing how Instances UI displays device names
6
- title: "Device Model Database"
7
- ---
8
-
9
- # Device model database (friendly names)
10
-
11
- The macOS companion app shows friendly Apple device model names in the **Instances** UI by mapping Apple model identifiers (e.g. `iPad16,6`, `Mac16,6`) to human-readable names.
12
-
13
- The mapping is vendored as JSON under:
14
-
15
- - `apps/macos/Sources/Symi/Resources/DeviceModels/`
16
-
17
- ## Data source
18
-
19
- We currently vendor the mapping from the MIT-licensed repository:
20
-
21
- - `kyle-seongwoo-jun/apple-device-identifiers`
22
-
23
- To keep builds deterministic, the JSON files are pinned to specific upstream commits (recorded in `apps/macos/Sources/Symi/Resources/DeviceModels/NOTICE.md`).
24
-
25
- ## Updating the database
26
-
27
- 1. Pick the upstream commits you want to pin to (one for iOS, one for macOS).
28
- 2. Update the commit hashes in `apps/macos/Sources/Symi/Resources/DeviceModels/NOTICE.md`.
29
- 3. Re-download the JSON files, pinned to those commits:
30
-
31
- ```bash
32
- IOS_COMMIT="<commit sha for ios-device-identifiers.json>"
33
- MAC_COMMIT="<commit sha for mac-device-identifiers.json>"
34
-
35
- curl -fsSL "https://raw.githubusercontent.com/kyle-seongwoo-jun/apple-device-identifiers/${IOS_COMMIT}/ios-device-identifiers.json" \
36
- -o apps/macos/Sources/Symi/Resources/DeviceModels/ios-device-identifiers.json
37
-
38
- curl -fsSL "https://raw.githubusercontent.com/kyle-seongwoo-jun/apple-device-identifiers/${MAC_COMMIT}/mac-device-identifiers.json" \
39
- -o apps/macos/Sources/Symi/Resources/DeviceModels/mac-device-identifiers.json
40
- ```
41
-
42
- 4. Ensure `apps/macos/Sources/Symi/Resources/DeviceModels/LICENSE.apple-device-identifiers.txt` still matches upstream (replace it if the upstream license changes).
43
- 5. Verify the macOS app builds cleanly (no warnings):
44
-
45
- ```bash
46
- swift build --package-path apps/macos
47
- ```
@@ -1,43 +0,0 @@
1
- ---
2
- summary: "RPC adapters for external CLIs (signal-cli, legacy imsg) and gateway patterns"
3
- read_when:
4
- - Adding or changing external CLI integrations
5
- - Debugging RPC adapters (signal-cli, imsg)
6
- title: "RPC Adapters"
7
- ---
8
-
9
- # RPC adapters
10
-
11
- Symi integrates external CLIs via JSON-RPC. Two patterns are used today.
12
-
13
- ## Pattern A: HTTP daemon (signal-cli)
14
-
15
- - `signal-cli` runs as a daemon with JSON-RPC over HTTP.
16
- - Event stream is SSE (`/api/v1/events`).
17
- - Health probe: `/api/v1/check`.
18
- - Symi owns lifecycle when `channels.signal.autoStart=true`.
19
-
20
- See [Signal](/channels/signal) for setup and endpoints.
21
-
22
- ## Pattern B: stdio child process (legacy: imsg)
23
-
24
- > **Note:** For new iMessage setups, use [BlueBubbles](/channels/bluebubbles) instead.
25
-
26
- - Symi spawns `imsg rpc` as a child process (legacy iMessage integration).
27
- - JSON-RPC is line-delimited over stdin/stdout (one JSON object per line).
28
- - No TCP port, no daemon required.
29
-
30
- Core methods used:
31
-
32
- - `watch.subscribe` → notifications (`method: "message"`)
33
- - `watch.unsubscribe`
34
- - `send`
35
- - `chats.list` (probe/diagnostics)
36
-
37
- See [iMessage](/channels/imessage) for legacy setup and addressing (`chat_id` preferred).
38
-
39
- ## Adapter guidelines
40
-
41
- - Gateway owns the process (start/stop tied to provider lifecycle).
42
- - Keep RPC clients resilient: timeouts, restart on exit.
43
- - Prefer stable IDs (e.g., `chat_id`) over display strings.
@@ -1,284 +0,0 @@
1
- ---
2
- summary: "Deep dive: session store + transcripts, lifecycle, and (auto)compaction internals"
3
- read_when:
4
- - You need to debug session ids, transcript JSONL, or sessions.json fields
5
- - You are changing auto-compaction behavior or adding “pre-compaction” housekeeping
6
- - You want to implement memory flushes or silent system turns
7
- title: "Session Management Deep Dive"
8
- ---
9
-
10
- # Session Management & Compaction (Deep Dive)
11
-
12
- This document explains how Symi manages sessions end-to-end:
13
-
14
- - **Session routing** (how inbound messages map to a `sessionKey`)
15
- - **Session store** (`sessions.json`) and what it tracks
16
- - **Transcript persistence** (`*.jsonl`) and its structure
17
- - **Transcript hygiene** (provider-specific fixups before runs)
18
- - **Context limits** (context window vs tracked tokens)
19
- - **Compaction** (manual + auto-compaction) and where to hook pre-compaction work
20
- - **Silent housekeeping** (e.g. memory writes that shouldn’t produce user-visible output)
21
-
22
- If you want a higher-level overview first, start with:
23
-
24
- - [/concepts/session](/concepts/session)
25
- - [/concepts/compaction](/concepts/compaction)
26
- - [/concepts/session-pruning](/concepts/session-pruning)
27
- - [/reference/transcript-hygiene](/reference/transcript-hygiene)
28
-
29
- ---
30
-
31
- ## Source of truth: the Gateway
32
-
33
- Symi is designed around a single **Gateway process** that owns session state.
34
-
35
- - UIs (macOS app, web Control UI, TUI) should query the Gateway for session lists and token counts.
36
- - In remote mode, session files are on the remote host; “checking your local Mac files” won’t reflect what the Gateway is using.
37
-
38
- ---
39
-
40
- ## Two persistence layers
41
-
42
- Symi persists sessions in two layers:
43
-
44
- 1. **Session store (`sessions.json`)**
45
- - Key/value map: `sessionKey -> SessionEntry`
46
- - Small, mutable, safe to edit (or delete entries)
47
- - Tracks session metadata (current session id, last activity, toggles, token counters, etc.)
48
-
49
- 2. **Transcript (`<sessionId>.jsonl`)**
50
- - Append-only transcript with tree structure (entries have `id` + `parentId`)
51
- - Stores the actual conversation + tool calls + compaction summaries
52
- - Used to rebuild the model context for future turns
53
-
54
- ---
55
-
56
- ## On-disk locations
57
-
58
- Per agent, on the Gateway host:
59
-
60
- - Store: `~/.symi/agents/<agentId>/sessions/sessions.json`
61
- - Transcripts: `~/.symi/agents/<agentId>/sessions/<sessionId>.jsonl`
62
- - Telegram topic sessions: `.../<sessionId>-topic-<threadId>.jsonl`
63
-
64
- Symi resolves these via `src/config/sessions.ts`.
65
-
66
- ---
67
-
68
- ## Session keys (`sessionKey`)
69
-
70
- A `sessionKey` identifies _which conversation bucket_ you’re in (routing + isolation).
71
-
72
- Common patterns:
73
-
74
- - Main/direct chat (per agent): `agent:<agentId>:<mainKey>` (default `main`)
75
- - Group: `agent:<agentId>:<channel>:group:<id>`
76
- - Cron: `cron:<job.id>`
77
- - Webhook: `hook:<uuid>` (unless overridden)
78
-
79
- The canonical rules are documented at [/concepts/session](/concepts/session).
80
-
81
- ---
82
-
83
- ## Session ids (`sessionId`)
84
-
85
- Each `sessionKey` points at a current `sessionId` (the transcript file that continues the conversation).
86
-
87
- Rules of thumb:
88
-
89
- - **Reset** (`/new`, `/reset`) creates a new `sessionId` for that `sessionKey`.
90
- - **Daily reset** (default 4:00 AM local time on the gateway host) creates a new `sessionId` on the next message after the reset boundary.
91
- - **Idle expiry** (`session.reset.idleMinutes` or legacy `session.idleMinutes`) creates a new `sessionId` when a message arrives after the idle window. When daily + idle are both configured, whichever expires first wins.
92
-
93
- Implementation detail: the decision happens in `initSessionState()` in `src/auto-reply/reply/session.ts`.
94
-
95
- ---
96
-
97
- ## Session store schema (`sessions.json`)
98
-
99
- The store’s value type is `SessionEntry` in `src/config/sessions.ts`.
100
-
101
- Key fields (not exhaustive):
102
-
103
- - `sessionId`: current transcript id (filename is derived from this unless `sessionFile` is set)
104
- - `updatedAt`: last activity timestamp
105
- - `sessionFile`: optional explicit transcript path override
106
- - `chatType`: `direct | group | room` (helps UIs and send policy)
107
- - `provider`, `subject`, `room`, `space`, `displayName`: metadata for group/channel labeling
108
- - Toggles:
109
- - `thinkingLevel`, `verboseLevel`, `reasoningLevel`, `elevatedLevel`
110
- - `sendPolicy` (per-session override)
111
- - Model selection:
112
- - `providerOverride`, `modelOverride`, `authProfileOverride`
113
- - Token counters (best-effort / provider-dependent):
114
- - `inputTokens`, `outputTokens`, `totalTokens`, `contextTokens`
115
- - `compactionCount`: how often auto-compaction completed for this session key
116
- - `memoryFlushAt`: timestamp for the last pre-compaction memory flush
117
- - `memoryFlushCompactionCount`: compaction count when the last flush ran
118
-
119
- The store is safe to edit, but the Gateway is the authority: it may rewrite or rehydrate entries as sessions run.
120
-
121
- ---
122
-
123
- ## Transcript structure (`*.jsonl`)
124
-
125
- Transcripts are managed by `@mariozechner/pi-coding-agent`’s `SessionManager`.
126
-
127
- The file is JSONL:
128
-
129
- - First line: session header (`type: "session"`, includes `id`, `cwd`, `timestamp`, optional `parentSession`)
130
- - Then: session entries with `id` + `parentId` (tree)
131
-
132
- Notable entry types:
133
-
134
- - `message`: user/assistant/toolResult messages
135
- - `custom_message`: extension-injected messages that _do_ enter model context (can be hidden from UI)
136
- - `custom`: extension state that does _not_ enter model context
137
- - `compaction`: persisted compaction summary with `firstKeptEntryId` and `tokensBefore`
138
- - `branch_summary`: persisted summary when navigating a tree branch
139
-
140
- Symi intentionally does **not** “fix up” transcripts; the Gateway uses `SessionManager` to read/write them.
141
-
142
- ---
143
-
144
- ## Context windows vs tracked tokens
145
-
146
- Two different concepts matter:
147
-
148
- 1. **Model context window**: hard cap per model (tokens visible to the model)
149
- 2. **Session store counters**: rolling stats written into `sessions.json` (used for /status and dashboards)
150
-
151
- If you’re tuning limits:
152
-
153
- - The context window comes from the model catalog (and can be overridden via config).
154
- - `contextTokens` in the store is a runtime estimate/reporting value; don’t treat it as a strict guarantee.
155
-
156
- For more, see [/token-use](/reference/token-use).
157
-
158
- ---
159
-
160
- ## Compaction: what it is
161
-
162
- Compaction summarizes older conversation into a persisted `compaction` entry in the transcript and keeps recent messages intact.
163
-
164
- After compaction, future turns see:
165
-
166
- - The compaction summary
167
- - Messages after `firstKeptEntryId`
168
-
169
- Compaction is **persistent** (unlike session pruning). See [/concepts/session-pruning](/concepts/session-pruning).
170
-
171
- ---
172
-
173
- ## When auto-compaction happens (Pi runtime)
174
-
175
- In the embedded Pi agent, auto-compaction triggers in two cases:
176
-
177
- 1. **Overflow recovery**: the model returns a context overflow error → compact → retry.
178
- 2. **Threshold maintenance**: after a successful turn, when:
179
-
180
- `contextTokens > contextWindow - reserveTokens`
181
-
182
- Where:
183
-
184
- - `contextWindow` is the model’s context window
185
- - `reserveTokens` is headroom reserved for prompts + the next model output
186
-
187
- These are Pi runtime semantics (Symi consumes the events, but Pi decides when to compact).
188
-
189
- ---
190
-
191
- ## Compaction settings (`reserveTokens`, `keepRecentTokens`)
192
-
193
- Pi’s compaction settings live in Pi settings:
194
-
195
- ```json5
196
- {
197
- compaction: {
198
- enabled: true,
199
- reserveTokens: 16384,
200
- keepRecentTokens: 20000,
201
- },
202
- }
203
- ```
204
-
205
- Symi also enforces a safety floor for embedded runs:
206
-
207
- - If `compaction.reserveTokens < reserveTokensFloor`, Symi bumps it.
208
- - Default floor is `20000` tokens.
209
- - Set `agents.defaults.compaction.reserveTokensFloor: 0` to disable the floor.
210
- - If it’s already higher, Symi leaves it alone.
211
-
212
- Why: leave enough headroom for multi-turn “housekeeping” (like memory writes) before compaction becomes unavoidable.
213
-
214
- Implementation: `ensurePiCompactionReserveTokens()` in `src/agents/pi-settings.ts`
215
- (called from `src/agents/pi-embedded-runner.ts`).
216
-
217
- ---
218
-
219
- ## User-visible surfaces
220
-
221
- You can observe compaction and session state via:
222
-
223
- - `/status` (in any chat session)
224
- - `symi status` (CLI)
225
- - `symi sessions` / `sessions --json`
226
- - Verbose mode: `🧹 Auto-compaction complete` + compaction count
227
-
228
- ---
229
-
230
- ## Silent housekeeping (`NO_REPLY`)
231
-
232
- Symi supports “silent” turns for background tasks where the user should not see intermediate output.
233
-
234
- Convention:
235
-
236
- - The assistant starts its output with `NO_REPLY` to indicate “do not deliver a reply to the user”.
237
- - Symi strips/suppresses this in the delivery layer.
238
-
239
- As of `2026.1.10`, Symi also suppresses **draft/typing streaming** when a partial chunk begins with `NO_REPLY`, so silent operations don’t leak partial output mid-turn.
240
-
241
- ---
242
-
243
- ## Pre-compaction “memory flush” (implemented)
244
-
245
- Goal: before auto-compaction happens, run a silent agentic turn that writes durable
246
- state to disk (e.g. `memory/YYYY-MM-DD.md` in the agent workspace) so compaction can’t
247
- erase critical context.
248
-
249
- Symi uses the **pre-threshold flush** approach:
250
-
251
- 1. Monitor session context usage.
252
- 2. When it crosses a “soft threshold” (below Pi’s compaction threshold), run a silent
253
- “write memory now” directive to the agent.
254
- 3. Use `NO_REPLY` so the user sees nothing.
255
-
256
- Config (`agents.defaults.compaction.memoryFlush`):
257
-
258
- - `enabled` (default: `true`)
259
- - `softThresholdTokens` (default: `4000`)
260
- - `prompt` (user message for the flush turn)
261
- - `systemPrompt` (extra system prompt appended for the flush turn)
262
-
263
- Notes:
264
-
265
- - The default prompt/system prompt include a `NO_REPLY` hint to suppress delivery.
266
- - The flush runs once per compaction cycle (tracked in `sessions.json`).
267
- - The flush runs only for embedded Pi sessions (CLI backends skip it).
268
- - The flush is skipped when the session workspace is read-only (`workspaceAccess: "ro"` or `"none"`).
269
- - See [Memory](/concepts/memory) for the workspace file layout and write patterns.
270
-
271
- Pi also exposes a `session_before_compact` hook in the extension API, but Symi’s
272
- flush logic lives on the Gateway side today.
273
-
274
- ---
275
-
276
- ## Troubleshooting checklist
277
-
278
- - Session key wrong? Start with [/concepts/session](/concepts/session) and confirm the `sessionKey` in `/status`.
279
- - Store vs transcript mismatch? Confirm the Gateway host and the store path from `symi status`.
280
- - Compaction spam? Check:
281
- - model context window (too small)
282
- - compaction settings (`reserveTokens` too high for the model window can cause earlier compaction)
283
- - tool-result bloat: enable/tune session pruning
284
- - Silent turns leaking? Confirm the reply starts with `NO_REPLY` (exact token) and you’re on a build that includes the streaming suppression fix.
@@ -1,51 +0,0 @@
1
- ---
2
- summary: "How to run tests locally (vitest) and when to use force/coverage modes"
3
- read_when:
4
- - Running or fixing tests
5
- title: "Tests"
6
- ---
7
-
8
- # Tests
9
-
10
- - Full testing kit (suites, live, Docker): [Testing](/help/testing)
11
-
12
- - `pnpm test:force`: Kills any lingering gateway process holding the default control port, then runs the full Vitest suite with an isolated gateway port so server tests don’t collide with a running instance. Use this when a prior gateway run left port 18789 occupied.
13
- - `pnpm test:coverage`: Runs the unit suite with V8 coverage (via `vitest.unit.config.ts`). Global thresholds are 70% lines/branches/functions/statements. Coverage excludes integration-heavy entrypoints (CLI wiring, gateway/telegram bridges, webchat static server) to keep the target focused on unit-testable logic.
14
- - `pnpm test` on Node 24+: Symi auto-disables Vitest `vmForks` and uses `forks` to avoid `ERR_VM_MODULE_LINK_FAILURE` / `module is already linked`. You can force behavior with `SYMI_TEST_VM_FORKS=0|1`.
15
- - `pnpm test:e2e`: Runs gateway end-to-end smoke tests (multi-instance WS/HTTP/node pairing). Defaults to `vmForks` + adaptive workers in `vitest.e2e.config.ts`; tune with `SYMI_E2E_WORKERS=<n>` and set `SYMI_E2E_VERBOSE=1` for verbose logs.
16
- - `pnpm test:live`: Runs provider live tests (minimax/zai). Requires API keys and `LIVE=1` (or provider-specific `*_LIVE_TEST=1`) to unskip.
17
-
18
- ## Model latency bench (local keys)
19
-
20
- Script: [`scripts/bench-model.ts`](https://github.com/symi/symi/blob/main/scripts/bench-model.ts)
21
-
22
- Usage:
23
-
24
- - `source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10`
25
- - Optional env: `MINIMAX_API_KEY`, `MINIMAX_BASE_URL`, `MINIMAX_MODEL`, `ANTHROPIC_API_KEY`
26
- - Default prompt: “Reply with a single word: ok. No punctuation or extra text.”
27
-
28
- Last run (2025-12-31, 20 runs):
29
-
30
- - minimax median 1279ms (min 1114, max 2431)
31
- - opus median 2454ms (min 1224, max 3170)
32
-
33
- ## Onboarding E2E (Docker)
34
-
35
- Docker is optional; this is only needed for containerized onboarding smoke tests.
36
-
37
- Full cold-start flow in a clean Linux container:
38
-
39
- ```bash
40
- scripts/e2e/onboard-docker.sh
41
- ```
42
-
43
- This script drives the interactive wizard via a pseudo-tty, verifies config/workspace/session files, then starts the gateway and runs `symi health`.
44
-
45
- ## QR import smoke (Docker)
46
-
47
- Ensures `qrcode-terminal` loads under Node 22+ in Docker:
48
-
49
- ```bash
50
- pnpm test:docker:qr
51
- ```