@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,156 +0,0 @@
1
- ---
2
- summary: "Camera capture (iOS node + macOS app) for agent use: photos (jpg) and short video clips (mp4)"
3
- read_when:
4
- - Adding or modifying camera capture on iOS nodes or macOS
5
- - Extending agent-accessible MEDIA temp-file workflows
6
- title: "Camera Capture"
7
- ---
8
-
9
- # Camera capture (agent)
10
-
11
- Symi supports **camera capture** for agent workflows:
12
-
13
- - **iOS node** (paired via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
14
- - **Android node** (paired via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
15
- - **macOS app** (node via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
16
-
17
- All camera access is gated behind **user-controlled settings**.
18
-
19
- ## iOS node
20
-
21
- ### User setting (default on)
22
-
23
- - iOS Settings tab → **Camera** → **Allow Camera** (`camera.enabled`)
24
- - Default: **on** (missing key is treated as enabled).
25
- - When off: `camera.*` commands return `CAMERA_DISABLED`.
26
-
27
- ### Commands (via Gateway `node.invoke`)
28
-
29
- - `camera.list`
30
- - Response payload:
31
- - `devices`: array of `{ id, name, position, deviceType }`
32
-
33
- - `camera.snap`
34
- - Params:
35
- - `facing`: `front|back` (default: `front`)
36
- - `maxWidth`: number (optional; default `1600` on the iOS node)
37
- - `quality`: `0..1` (optional; default `0.9`)
38
- - `format`: currently `jpg`
39
- - `delayMs`: number (optional; default `0`)
40
- - `deviceId`: string (optional; from `camera.list`)
41
- - Response payload:
42
- - `format: "jpg"`
43
- - `base64: "<...>"`
44
- - `width`, `height`
45
- - Payload guard: photos are recompressed to keep the base64 payload under 5 MB.
46
-
47
- - `camera.clip`
48
- - Params:
49
- - `facing`: `front|back` (default: `front`)
50
- - `durationMs`: number (default `3000`, clamped to a max of `60000`)
51
- - `includeAudio`: boolean (default `true`)
52
- - `format`: currently `mp4`
53
- - `deviceId`: string (optional; from `camera.list`)
54
- - Response payload:
55
- - `format: "mp4"`
56
- - `base64: "<...>"`
57
- - `durationMs`
58
- - `hasAudio`
59
-
60
- ### Foreground requirement
61
-
62
- Like `canvas.*`, the iOS node only allows `camera.*` commands in the **foreground**. Background invocations return `NODE_BACKGROUND_UNAVAILABLE`.
63
-
64
- ### CLI helper (temp files + MEDIA)
65
-
66
- The easiest way to get attachments is via the CLI helper, which writes decoded media to a temp file and prints `MEDIA:<path>`.
67
-
68
- Examples:
69
-
70
- ```bash
71
- symi nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
72
- symi nodes camera snap --node <id> --facing front
73
- symi nodes camera clip --node <id> --duration 3000
74
- symi nodes camera clip --node <id> --no-audio
75
- ```
76
-
77
- Notes:
78
-
79
- - `nodes camera snap` defaults to **both** facings to give the agent both views.
80
- - Output files are temporary (in the OS temp directory) unless you build your own wrapper.
81
-
82
- ## Android node
83
-
84
- ### Android user setting (default on)
85
-
86
- - Android Settings sheet → **Camera** → **Allow Camera** (`camera.enabled`)
87
- - Default: **on** (missing key is treated as enabled).
88
- - When off: `camera.*` commands return `CAMERA_DISABLED`.
89
-
90
- ### Permissions
91
-
92
- - Android requires runtime permissions:
93
- - `CAMERA` for both `camera.snap` and `camera.clip`.
94
- - `RECORD_AUDIO` for `camera.clip` when `includeAudio=true`.
95
-
96
- If permissions are missing, the app will prompt when possible; if denied, `camera.*` requests fail with a
97
- `*_PERMISSION_REQUIRED` error.
98
-
99
- ### Android foreground requirement
100
-
101
- Like `canvas.*`, the Android node only allows `camera.*` commands in the **foreground**. Background invocations return `NODE_BACKGROUND_UNAVAILABLE`.
102
-
103
- ### Payload guard
104
-
105
- Photos are recompressed to keep the base64 payload under 5 MB.
106
-
107
- ## macOS app
108
-
109
- ### User setting (default off)
110
-
111
- The macOS companion app exposes a checkbox:
112
-
113
- - **Settings → General → Allow Camera** (`symi.cameraEnabled`)
114
- - Default: **off**
115
- - When off: camera requests return “Camera disabled by user”.
116
-
117
- ### CLI helper (node invoke)
118
-
119
- Use the main `symi` CLI to invoke camera commands on the macOS node.
120
-
121
- Examples:
122
-
123
- ```bash
124
- symi nodes camera list --node <id> # list camera ids
125
- symi nodes camera snap --node <id> # prints MEDIA:<path>
126
- symi nodes camera snap --node <id> --max-width 1280
127
- symi nodes camera snap --node <id> --delay-ms 2000
128
- symi nodes camera snap --node <id> --device-id <id>
129
- symi nodes camera clip --node <id> --duration 10s # prints MEDIA:<path>
130
- symi nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<path> (legacy flag)
131
- symi nodes camera clip --node <id> --device-id <id>
132
- symi nodes camera clip --node <id> --no-audio
133
- ```
134
-
135
- Notes:
136
-
137
- - `symi nodes camera snap` defaults to `maxWidth=1600` unless overridden.
138
- - On macOS, `camera.snap` waits `delayMs` (default 2000ms) after warm-up/exposure settle before capturing.
139
- - Photo payloads are recompressed to keep base64 under 5 MB.
140
-
141
- ## Safety + practical limits
142
-
143
- - Camera and microphone access trigger the usual OS permission prompts (and require usage strings in Info.plist).
144
- - Video clips are capped (currently `<= 60s`) to avoid oversized node payloads (base64 overhead + message limits).
145
-
146
- ## macOS screen video (OS-level)
147
-
148
- For _screen_ video (not camera), use the macOS companion:
149
-
150
- ```bash
151
- symi nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
152
- ```
153
-
154
- Notes:
155
-
156
- - Requires macOS **Screen Recording** permission (TCC).
@@ -1,72 +0,0 @@
1
- ---
2
- summary: "Image and media handling rules for send, gateway, and agent replies"
3
- read_when:
4
- - Modifying media pipeline or attachments
5
- title: "Image and Media Support"
6
- ---
7
-
8
- # Image & Media Support — 2025-12-05
9
-
10
- The WhatsApp channel runs via **Baileys Web**. This document captures the current media handling rules for send, gateway, and agent replies.
11
-
12
- ## Goals
13
-
14
- - Send media with optional captions via `symi message send --media`.
15
- - Allow auto-replies from the web inbox to include media alongside text.
16
- - Keep per-type limits sane and predictable.
17
-
18
- ## CLI Surface
19
-
20
- - `symi message send --media <path-or-url> [--message <caption>]`
21
- - `--media` optional; caption can be empty for media-only sends.
22
- - `--dry-run` prints the resolved payload; `--json` emits `{ channel, to, messageId, mediaUrl, caption }`.
23
-
24
- ## WhatsApp Web channel behavior
25
-
26
- - Input: local file path **or** HTTP(S) URL.
27
- - Flow: load into a Buffer, detect media kind, and build the correct payload:
28
- - **Images:** resize & recompress to JPEG (max side 2048px) targeting `agents.defaults.mediaMaxMb` (default 5 MB), capped at 6 MB.
29
- - **Audio/Voice/Video:** pass-through up to 16 MB; audio is sent as a voice note (`ptt: true`).
30
- - **Documents:** anything else, up to 100 MB, with filename preserved when available.
31
- - WhatsApp GIF-style playback: send an MP4 with `gifPlayback: true` (CLI: `--gif-playback`) so mobile clients loop inline.
32
- - MIME detection prefers magic bytes, then headers, then file extension.
33
- - Caption comes from `--message` or `reply.text`; empty caption is allowed.
34
- - Logging: non-verbose shows `↩️`/`✅`; verbose includes size and source path/URL.
35
-
36
- ## Auto-Reply Pipeline
37
-
38
- - `getReplyFromConfig` returns `{ text?, mediaUrl?, mediaUrls? }`.
39
- - When media is present, the web sender resolves local paths or URLs using the same pipeline as `symi message send`.
40
- - Multiple media entries are sent sequentially if provided.
41
-
42
- ## Inbound Media to Commands (Pi)
43
-
44
- - When inbound web messages include media, Symi downloads to a temp file and exposes templating variables:
45
- - `{{MediaUrl}}` pseudo-URL for the inbound media.
46
- - `{{MediaPath}}` local temp path written before running the command.
47
- - When a per-session Docker sandbox is enabled, inbound media is copied into the sandbox workspace and `MediaPath`/`MediaUrl` are rewritten to a relative path like `media/inbound/<filename>`.
48
- - Media understanding (if configured via `tools.media.*` or shared `tools.media.models`) runs before templating and can insert `[Image]`, `[Audio]`, and `[Video]` blocks into `Body`.
49
- - Audio sets `{{Transcript}}` and uses the transcript for command parsing so slash commands still work.
50
- - Video and image descriptions preserve any caption text for command parsing.
51
- - By default only the first matching image/audio/video attachment is processed; set `tools.media.<cap>.attachments` to process multiple attachments.
52
-
53
- ## Limits & Errors
54
-
55
- **Outbound send caps (WhatsApp web send)**
56
-
57
- - Images: ~6 MB cap after recompression.
58
- - Audio/voice/video: 16 MB cap; documents: 100 MB cap.
59
- - Oversize or unreadable media → clear error in logs and the reply is skipped.
60
-
61
- **Media understanding caps (transcription/description)**
62
-
63
- - Image default: 10 MB (`tools.media.image.maxBytes`).
64
- - Audio default: 20 MB (`tools.media.audio.maxBytes`).
65
- - Video default: 50 MB (`tools.media.video.maxBytes`).
66
- - Oversize media skips understanding, but replies still go through with the original body.
67
-
68
- ## Notes for Tests
69
-
70
- - Cover send + reply flows for image/audio/document cases.
71
- - Validate recompression for images (size bound) and voice-note flag for audio.
72
- - Ensure multi-media replies fan out as sequential sends.
@@ -1,342 +0,0 @@
1
- ---
2
- summary: "Nodes: pairing, capabilities, permissions, and CLI helpers for canvas/camera/screen/system"
3
- read_when:
4
- - Pairing iOS/Android nodes to a gateway
5
- - Using node canvas/camera for agent context
6
- - Adding new node commands or CLI helpers
7
- title: "Nodes"
8
- ---
9
-
10
- # Nodes
11
-
12
- A **node** is a companion device (macOS/iOS/Android/headless) that connects to the Gateway **WebSocket** (same port as operators) with `role: "node"` and exposes a command surface (e.g. `canvas.*`, `camera.*`, `system.*`) via `node.invoke`. Protocol details: [Gateway protocol](/gateway/protocol).
13
-
14
- Legacy transport: [Bridge protocol](/gateway/bridge-protocol) (TCP JSONL; deprecated/removed for current nodes).
15
-
16
- macOS can also run in **node mode**: the menubar app connects to the Gateway’s WS server and exposes its local canvas/camera commands as a node (so `symi nodes …` works against this Mac).
17
-
18
- Notes:
19
-
20
- - Nodes are **peripherals**, not gateways. They don’t run the gateway service.
21
- - Telegram/WhatsApp/etc. messages land on the **gateway**, not on nodes.
22
- - Troubleshooting runbook: [/nodes/troubleshooting](/nodes/troubleshooting)
23
-
24
- ## Pairing + status
25
-
26
- **WS nodes use device pairing.** Nodes present a device identity during `connect`; the Gateway
27
- creates a device pairing request for `role: node`. Approve via the devices CLI (or UI).
28
-
29
- Quick CLI:
30
-
31
- ```bash
32
- symi devices list
33
- symi devices approve <requestId>
34
- symi devices reject <requestId>
35
- symi nodes status
36
- symi nodes describe --node <idOrNameOrIp>
37
- ```
38
-
39
- Notes:
40
-
41
- - `nodes status` marks a node as **paired** when its device pairing role includes `node`.
42
- - `node.pair.*` (CLI: `symi nodes pending/approve/reject`) is a separate gateway-owned
43
- node pairing store; it does **not** gate the WS `connect` handshake.
44
-
45
- ## Remote node host (system.run)
46
-
47
- Use a **node host** when your Gateway runs on one machine and you want commands
48
- to execute on another. The model still talks to the **gateway**; the gateway
49
- forwards `exec` calls to the **node host** when `host=node` is selected.
50
-
51
- ### What runs where
52
-
53
- - **Gateway host**: receives messages, runs the model, routes tool calls.
54
- - **Node host**: executes `system.run`/`system.which` on the node machine.
55
- - **Approvals**: enforced on the node host via `~/.symi/exec-approvals.json`.
56
-
57
- ### Start a node host (foreground)
58
-
59
- On the node machine:
60
-
61
- ```bash
62
- symi node run --host <gateway-host> --port 18789 --display-name "Build Node"
63
- ```
64
-
65
- ### Remote gateway via SSH tunnel (loopback bind)
66
-
67
- If the Gateway binds to loopback (`gateway.bind=loopback`, default in local mode),
68
- remote node hosts cannot connect directly. Create an SSH tunnel and point the
69
- node host at the local end of the tunnel.
70
-
71
- Example (node host -> gateway host):
72
-
73
- ```bash
74
- # Terminal A (keep running): forward local 18790 -> gateway 127.0.0.1:18789
75
- ssh -N -L 18790:127.0.0.1:18789 user@gateway-host
76
-
77
- # Terminal B: export the gateway token and connect through the tunnel
78
- export SYMI_GATEWAY_TOKEN="<gateway-token>"
79
- symi node run --host 127.0.0.1 --port 18790 --display-name "Build Node"
80
- ```
81
-
82
- Notes:
83
-
84
- - The token is `gateway.auth.token` from the gateway config (`~/.symi/symi.json` on the gateway host).
85
- - `symi node run` reads `SYMI_GATEWAY_TOKEN` for auth.
86
-
87
- ### Start a node host (service)
88
-
89
- ```bash
90
- symi node install --host <gateway-host> --port 18789 --display-name "Build Node"
91
- symi node restart
92
- ```
93
-
94
- ### Pair + name
95
-
96
- On the gateway host:
97
-
98
- ```bash
99
- symi nodes pending
100
- symi nodes approve <requestId>
101
- symi nodes list
102
- ```
103
-
104
- Naming options:
105
-
106
- - `--display-name` on `symi node run` / `symi node install` (persists in `~/.symi/node.json` on the node).
107
- - `symi nodes rename --node <id|name|ip> --name "Build Node"` (gateway override).
108
-
109
- ### Allowlist the commands
110
-
111
- Exec approvals are **per node host**. Add allowlist entries from the gateway:
112
-
113
- ```bash
114
- symi approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
115
- symi approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
116
- ```
117
-
118
- Approvals live on the node host at `~/.symi/exec-approvals.json`.
119
-
120
- ### Point exec at the node
121
-
122
- Configure defaults (gateway config):
123
-
124
- ```bash
125
- symi config set tools.exec.host node
126
- symi config set tools.exec.security allowlist
127
- symi config set tools.exec.node "<id-or-name>"
128
- ```
129
-
130
- Or per session:
131
-
132
- ```
133
- /exec host=node security=allowlist node=<id-or-name>
134
- ```
135
-
136
- Once set, any `exec` call with `host=node` runs on the node host (subject to the
137
- node allowlist/approvals).
138
-
139
- Related:
140
-
141
- - [Node host CLI](/cli/node)
142
- - [Exec tool](/tools/exec)
143
- - [Exec approvals](/tools/exec-approvals)
144
-
145
- ## Invoking commands
146
-
147
- Low-level (raw RPC):
148
-
149
- ```bash
150
- symi nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'
151
- ```
152
-
153
- Higher-level helpers exist for the common “give the agent a MEDIA attachment” workflows.
154
-
155
- ## Screenshots (canvas snapshots)
156
-
157
- If the node is showing the Canvas (WebView), `canvas.snapshot` returns `{ format, base64 }`.
158
-
159
- CLI helper (writes to a temp file and prints `MEDIA:<path>`):
160
-
161
- ```bash
162
- symi nodes canvas snapshot --node <idOrNameOrIp> --format png
163
- symi nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
164
- ```
165
-
166
- ### Canvas controls
167
-
168
- ```bash
169
- symi nodes canvas present --node <idOrNameOrIp> --target https://example.com
170
- symi nodes canvas hide --node <idOrNameOrIp>
171
- symi nodes canvas navigate https://example.com --node <idOrNameOrIp>
172
- symi nodes canvas eval --node <idOrNameOrIp> --js "document.title"
173
- ```
174
-
175
- Notes:
176
-
177
- - `canvas present` accepts URLs or local file paths (`--target`), plus optional `--x/--y/--width/--height` for positioning.
178
- - `canvas eval` accepts inline JS (`--js`) or a positional arg.
179
-
180
- ### A2UI (Canvas)
181
-
182
- ```bash
183
- symi nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"
184
- symi nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonl
185
- symi nodes canvas a2ui reset --node <idOrNameOrIp>
186
- ```
187
-
188
- Notes:
189
-
190
- - Only A2UI v0.8 JSONL is supported (v0.9/createSurface is rejected).
191
-
192
- ## Photos + videos (node camera)
193
-
194
- Photos (`jpg`):
195
-
196
- ```bash
197
- symi nodes camera list --node <idOrNameOrIp>
198
- symi nodes camera snap --node <idOrNameOrIp> # default: both facings (2 MEDIA lines)
199
- symi nodes camera snap --node <idOrNameOrIp> --facing front
200
- ```
201
-
202
- Video clips (`mp4`):
203
-
204
- ```bash
205
- symi nodes camera clip --node <idOrNameOrIp> --duration 10s
206
- symi nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
207
- ```
208
-
209
- Notes:
210
-
211
- - The node must be **foregrounded** for `canvas.*` and `camera.*` (background calls return `NODE_BACKGROUND_UNAVAILABLE`).
212
- - Clip duration is clamped (currently `<= 60s`) to avoid oversized base64 payloads.
213
- - Android will prompt for `CAMERA`/`RECORD_AUDIO` permissions when possible; denied permissions fail with `*_PERMISSION_REQUIRED`.
214
-
215
- ## Screen recordings (nodes)
216
-
217
- Nodes expose `screen.record` (mp4). Example:
218
-
219
- ```bash
220
- symi nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
221
- symi nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio
222
- ```
223
-
224
- Notes:
225
-
226
- - `screen.record` requires the node app to be foregrounded.
227
- - Android will show the system screen-capture prompt before recording.
228
- - Screen recordings are clamped to `<= 60s`.
229
- - `--no-audio` disables microphone capture (supported on iOS/Android; macOS uses system capture audio).
230
- - Use `--screen <index>` to select a display when multiple screens are available.
231
-
232
- ## Location (nodes)
233
-
234
- Nodes expose `location.get` when Location is enabled in settings.
235
-
236
- CLI helper:
237
-
238
- ```bash
239
- symi nodes location get --node <idOrNameOrIp>
240
- symi nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
241
- ```
242
-
243
- Notes:
244
-
245
- - Location is **off by default**.
246
- - “Always” requires system permission; background fetch is best-effort.
247
- - The response includes lat/lon, accuracy (meters), and timestamp.
248
-
249
- ## SMS (Android nodes)
250
-
251
- Android nodes can expose `sms.send` when the user grants **SMS** permission and the device supports telephony.
252
-
253
- Low-level invoke:
254
-
255
- ```bash
256
- symi nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from Symi"}'
257
- ```
258
-
259
- Notes:
260
-
261
- - The permission prompt must be accepted on the Android device before the capability is advertised.
262
- - Wi-Fi-only devices without telephony will not advertise `sms.send`.
263
-
264
- ## System commands (node host / mac node)
265
-
266
- The macOS node exposes `system.run`, `system.notify`, and `system.execApprovals.get/set`.
267
- The headless node host exposes `system.run`, `system.which`, and `system.execApprovals.get/set`.
268
-
269
- Examples:
270
-
271
- ```bash
272
- symi nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
273
- symi nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
274
- ```
275
-
276
- Notes:
277
-
278
- - `system.run` returns stdout/stderr/exit code in the payload.
279
- - `system.notify` respects notification permission state on the macOS app.
280
- - `system.run` supports `--cwd`, `--env KEY=VAL`, `--command-timeout`, and `--needs-screen-recording`.
281
- - `system.notify` supports `--priority <passive|active|timeSensitive>` and `--delivery <system|overlay|auto>`.
282
- - Node hosts ignore `PATH` overrides. If you need extra PATH entries, configure the node host service environment (or install tools in standard locations) instead of passing `PATH` via `--env`.
283
- - On macOS node mode, `system.run` is gated by exec approvals in the macOS app (Settings → Exec approvals).
284
- Ask/allowlist/full behave the same as the headless node host; denied prompts return `SYSTEM_RUN_DENIED`.
285
- - On headless node host, `system.run` is gated by exec approvals (`~/.symi/exec-approvals.json`).
286
-
287
- ## Exec node binding
288
-
289
- When multiple nodes are available, you can bind exec to a specific node.
290
- This sets the default node for `exec host=node` (and can be overridden per agent).
291
-
292
- Global default:
293
-
294
- ```bash
295
- symi config set tools.exec.node "node-id-or-name"
296
- ```
297
-
298
- Per-agent override:
299
-
300
- ```bash
301
- symi config get agents.list
302
- symi config set agents.list[0].tools.exec.node "node-id-or-name"
303
- ```
304
-
305
- Unset to allow any node:
306
-
307
- ```bash
308
- symi config unset tools.exec.node
309
- symi config unset agents.list[0].tools.exec.node
310
- ```
311
-
312
- ## Permissions map
313
-
314
- Nodes may include a `permissions` map in `node.list` / `node.describe`, keyed by permission name (e.g. `screenRecording`, `accessibility`) with boolean values (`true` = granted).
315
-
316
- ## Headless node host (cross-platform)
317
-
318
- Symi can run a **headless node host** (no UI) that connects to the Gateway
319
- WebSocket and exposes `system.run` / `system.which`. This is useful on Linux/Windows
320
- or for running a minimal node alongside a server.
321
-
322
- Start it:
323
-
324
- ```bash
325
- symi node run --host <gateway-host> --port 18789
326
- ```
327
-
328
- Notes:
329
-
330
- - Pairing is still required (the Gateway will show a node approval prompt).
331
- - The node host stores its node id, token, display name, and gateway connection info in `~/.symi/node.json`.
332
- - Exec approvals are enforced locally via `~/.symi/exec-approvals.json`
333
- (see [Exec approvals](/tools/exec-approvals)).
334
- - On macOS, the headless node host prefers the companion app exec host when reachable and falls
335
- back to local execution if the app is unavailable. Set `SYMI_NODE_EXEC_HOST=app` to require
336
- the app, or `SYMI_NODE_EXEC_FALLBACK=0` to disable fallback.
337
- - Add `--tls` / `--tls-fingerprint` when the Gateway WS uses TLS.
338
-
339
- ## Mac node mode
340
-
341
- - The macOS menubar app connects to the Gateway WS server as a node (so `symi nodes …` works against this Mac).
342
- - In remote mode, the app opens an SSH tunnel for the Gateway port and connects to `localhost`.
@@ -1,113 +0,0 @@
1
- ---
2
- summary: "Location command for nodes (location.get), permission modes, and background behavior"
3
- read_when:
4
- - Adding location node support or permissions UI
5
- - Designing background location + push flows
6
- title: "Location Command"
7
- ---
8
-
9
- # Location command (nodes)
10
-
11
- ## TL;DR
12
-
13
- - `location.get` is a node command (via `node.invoke`).
14
- - Off by default.
15
- - Settings use a selector: Off / While Using / Always.
16
- - Separate toggle: Precise Location.
17
-
18
- ## Why a selector (not just a switch)
19
-
20
- OS permissions are multi-level. We can expose a selector in-app, but the OS still decides the actual grant.
21
-
22
- - iOS/macOS: user can choose **While Using** or **Always** in system prompts/Settings. App can request upgrade, but OS may require Settings.
23
- - Android: background location is a separate permission; on Android 10+ it often requires a Settings flow.
24
- - Precise location is a separate grant (iOS 14+ “Precise”, Android “fine” vs “coarse”).
25
-
26
- Selector in UI drives our requested mode; actual grant lives in OS settings.
27
-
28
- ## Settings model
29
-
30
- Per node device:
31
-
32
- - `location.enabledMode`: `off | whileUsing | always`
33
- - `location.preciseEnabled`: bool
34
-
35
- UI behavior:
36
-
37
- - Selecting `whileUsing` requests foreground permission.
38
- - Selecting `always` first ensures `whileUsing`, then requests background (or sends user to Settings if required).
39
- - If OS denies requested level, revert to the highest granted level and show status.
40
-
41
- ## Permissions mapping (node.permissions)
42
-
43
- Optional. macOS node reports `location` via the permissions map; iOS/Android may omit it.
44
-
45
- ## Command: `location.get`
46
-
47
- Called via `node.invoke`.
48
-
49
- Params (suggested):
50
-
51
- ```json
52
- {
53
- "timeoutMs": 10000,
54
- "maxAgeMs": 15000,
55
- "desiredAccuracy": "coarse|balanced|precise"
56
- }
57
- ```
58
-
59
- Response payload:
60
-
61
- ```json
62
- {
63
- "lat": 48.20849,
64
- "lon": 16.37208,
65
- "accuracyMeters": 12.5,
66
- "altitudeMeters": 182.0,
67
- "speedMps": 0.0,
68
- "headingDeg": 270.0,
69
- "timestamp": "2026-01-03T12:34:56.000Z",
70
- "isPrecise": true,
71
- "source": "gps|wifi|cell|unknown"
72
- }
73
- ```
74
-
75
- Errors (stable codes):
76
-
77
- - `LOCATION_DISABLED`: selector is off.
78
- - `LOCATION_PERMISSION_REQUIRED`: permission missing for requested mode.
79
- - `LOCATION_BACKGROUND_UNAVAILABLE`: app is backgrounded but only While Using allowed.
80
- - `LOCATION_TIMEOUT`: no fix in time.
81
- - `LOCATION_UNAVAILABLE`: system failure / no providers.
82
-
83
- ## Background behavior (future)
84
-
85
- Goal: model can request location even when node is backgrounded, but only when:
86
-
87
- - User selected **Always**.
88
- - OS grants background location.
89
- - App is allowed to run in background for location (iOS background mode / Android foreground service or special allowance).
90
-
91
- Push-triggered flow (future):
92
-
93
- 1. Gateway sends a push to the node (silent push or FCM data).
94
- 2. Node wakes briefly and requests location from the device.
95
- 3. Node forwards payload to Gateway.
96
-
97
- Notes:
98
-
99
- - iOS: Always permission + background location mode required. Silent push may be throttled; expect intermittent failures.
100
- - Android: background location may require a foreground service; otherwise, expect denial.
101
-
102
- ## Model/tooling integration
103
-
104
- - Tool surface: `nodes` tool adds `location_get` action (node required).
105
- - CLI: `symi nodes location get --node <id>`.
106
- - Agent guidelines: only call when user enabled location and understands the scope.
107
-
108
- ## UX copy (suggested)
109
-
110
- - Off: “Location sharing is disabled.”
111
- - While Using: “Only when Symi is open.”
112
- - Always: “Allow background location. Requires system permission.”
113
- - Precise: “Use precise GPS location. Toggle off to share approximate location.”