@stage-labs/metro 0.1.0-beta.75 → 0.1.0-beta.77

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 (230) hide show
  1. package/dist/cli.js +0 -3
  2. package/dist/runtime.js +1 -1
  3. package/dist/serve.js +0 -1
  4. package/package.json +1 -1
  5. package/runtime/node_modules/@metro-labs/core/package.json +43 -0
  6. package/runtime/node_modules/@metro-labs/core/src/endpoints.ts +7 -0
  7. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/events.ts +1 -1
  8. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/identity.ts +1 -1
  9. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/protocol.ts +1 -1
  10. package/runtime/node_modules/@metro-labs/{mcp → core}/src/stations/account-store.ts +2 -2
  11. package/runtime/node_modules/@metro-labs/{mcp → core}/src/stations/station-runtime.ts +1 -1
  12. package/runtime/node_modules/@metro-labs/daemon/package.json +47 -0
  13. package/runtime/node_modules/@metro-labs/{mcp/src/db → daemon/src/agents}/account-attach.ts +1 -1
  14. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/account-api.ts → daemon/src/agents/accounts-api.ts} +6 -6
  15. package/runtime/node_modules/@metro-labs/{mcp/src/db/agent-admin.ts → daemon/src/agents/admin.ts} +2 -2
  16. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/agent-api.ts → daemon/src/agents/api.ts} +6 -6
  17. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/bundle-api.ts → daemon/src/agents/bundle.ts} +7 -7
  18. package/runtime/node_modules/@metro-labs/{mcp/src/db → daemon/src/agents}/file-admin.ts +9 -9
  19. package/runtime/node_modules/@metro-labs/{mcp/src/db/file-source.ts → daemon/src/agents/files.ts} +4 -4
  20. package/runtime/node_modules/@metro-labs/{mcp/src/db/key-map.ts → daemon/src/agents/keys.ts} +1 -1
  21. package/runtime/node_modules/@metro-labs/{mcp/src/db/agent-scope.ts → daemon/src/agents/scope.ts} +2 -2
  22. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/boot}/boot.ts +23 -51
  23. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/boot}/crash-guard.ts +1 -1
  24. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/boot}/local-owner.ts +2 -2
  25. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/boot}/paths.ts +1 -4
  26. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/channels/addressed.ts +1 -1
  27. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/channels/dedupe.ts +1 -1
  28. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/channels/inbound.ts +1 -1
  29. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/channels/pending.ts +1 -1
  30. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/channels/relay.ts +1 -1
  31. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/claude-api.ts → daemon/src/claude/api.ts} +47 -14
  32. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/claude-files.ts → daemon/src/claude/files.ts} +2 -2
  33. package/runtime/node_modules/@metro-labs/daemon/src/claude/login.ts +167 -0
  34. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/claude-settings.ts → daemon/src/claude/settings.ts} +4 -4
  35. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/connector-api.ts → daemon/src/connectors/api.ts} +6 -6
  36. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/local-cli-api.ts → daemon/src/connectors/cli-api.ts} +5 -5
  37. package/runtime/node_modules/@metro-labs/{mcp/src/db/connector-config.ts → daemon/src/connectors/config.ts} +4 -4
  38. package/runtime/node_modules/@metro-labs/{mcp/src/db/connectors.ts → daemon/src/connectors/model.ts} +3 -3
  39. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/connectors}/oauth-client.ts +2 -2
  40. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/connectors}/oauth-discovery.ts +2 -2
  41. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/connector-oauth-routes.ts → daemon/src/connectors/oauth-routes.ts} +6 -6
  42. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/connector-oauth.ts → daemon/src/connectors/oauth.ts} +3 -3
  43. package/runtime/node_modules/@metro-labs/{mcp/src/db/connector-relay.ts → daemon/src/connectors/relay-target.ts} +1 -1
  44. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/connectors}/relay.ts +4 -4
  45. package/runtime/node_modules/@metro-labs/{mcp/src/db/local-connectors.ts → daemon/src/connectors/store.ts} +12 -12
  46. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/connector-tools.ts → daemon/src/connectors/tools.ts} +1 -1
  47. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/connector-url.ts → daemon/src/connectors/url.ts} +1 -1
  48. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/connector-verify.ts → daemon/src/connectors/verify.ts} +5 -5
  49. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/files}/attach-grant.ts +3 -3
  50. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/files}/attach-owner.ts +3 -3
  51. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/files}/attach-serve.ts +5 -12
  52. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/files}/upload-api.ts +5 -5
  53. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/files}/upload-store.ts +2 -2
  54. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/bedrock.ts +1 -1
  55. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/codex-auth.ts +1 -1
  56. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/codex-device.ts +2 -2
  57. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/codex-stream.ts +1 -1
  58. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/codex-translate.ts +1 -1
  59. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/codex.ts +2 -2
  60. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/gateway.ts +2 -2
  61. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/gateway}/model-api.ts +12 -12
  62. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/model-config.ts +3 -3
  63. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/openrouter.ts +1 -1
  64. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/accounts.ts +3 -7
  65. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/call-tools.ts +3 -3
  66. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/channel-owner.ts +1 -1
  67. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/ctx.ts +4 -4
  68. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/frame-scope.ts +2 -2
  69. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/group-tools.ts +2 -2
  70. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/index.ts +1 -1
  71. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/member-tools.ts +2 -2
  72. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/request-identity.ts +1 -1
  73. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/session-registry.ts +2 -2
  74. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/session.ts +2 -2
  75. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/tool-dispatch.ts +4 -4
  76. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/upload-tool.ts +5 -5
  77. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/monitor/api.ts +5 -5
  78. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/net}/tunnel.ts +6 -10
  79. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/routes}/http.ts +15 -15
  80. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/identity-routes.ts → daemon/src/routes/identity.ts} +5 -5
  81. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/routes}/local-mode.ts +16 -16
  82. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/routes}/session-apis.ts +14 -20
  83. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/session-api.ts → daemon/src/routes/session.ts} +1 -1
  84. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/control-api.ts → daemon/src/server/control.ts} +3 -3
  85. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/machine-api.ts → daemon/src/server/machine.ts} +8 -8
  86. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/update-api.ts → daemon/src/server/update.ts} +5 -5
  87. package/runtime/node_modules/@metro-labs/daemon/src/server.ts +2 -0
  88. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/stations/attach-resolve.ts +3 -3
  89. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/stations}/attach-session.ts +4 -4
  90. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/stations/attach-xmtp.ts +1 -1
  91. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/stations/attach.ts +3 -3
  92. package/runtime/node_modules/@metro-labs/{mcp/src/db → daemon/src/stations}/materialize.ts +9 -14
  93. package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/stations/registry.ts +2 -2
  94. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/stations}/runtime-deps.ts +4 -4
  95. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/stations}/supervisor-io.ts +2 -2
  96. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/stations}/supervisor.ts +4 -4
  97. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/stations}/train-call.ts +1 -1
  98. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/terminal-api.ts → daemon/src/terminal/api.ts} +4 -4
  99. package/runtime/node_modules/@metro-labs/{mcp/src/daemon/terminal-ws.ts → daemon/src/terminal/socket.ts} +3 -3
  100. package/runtime/node_modules/@metro-labs/discord-bot/package.json +1 -1
  101. package/runtime/node_modules/@metro-labs/discord-bot/src/accounts.ts +2 -2
  102. package/runtime/node_modules/@metro-labs/discord-bot/src/actions.ts +3 -3
  103. package/runtime/node_modules/@metro-labs/discord-bot/src/attachments.ts +2 -2
  104. package/runtime/node_modules/@metro-labs/discord-bot/src/group.ts +2 -2
  105. package/runtime/node_modules/@metro-labs/discord-bot/src/index.ts +2 -2
  106. package/runtime/node_modules/@metro-labs/discord-bot/src/members.ts +2 -2
  107. package/runtime/node_modules/@metro-labs/discord-bot/src/send-files.ts +1 -1
  108. package/runtime/node_modules/@metro-labs/discord-bot/src/station.ts +1 -1
  109. package/runtime/node_modules/@metro-labs/discord-bot/src/voice-speak.ts +1 -1
  110. package/runtime/node_modules/@metro-labs/discord-bot/src/voice-transcribe.ts +1 -1
  111. package/runtime/node_modules/@metro-labs/discord-bot/src/voice.ts +1 -1
  112. package/runtime/node_modules/@metro-labs/discord-bot/src/wire.ts +1 -1
  113. package/runtime/node_modules/@metro-labs/http/package.json +33 -0
  114. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/api-http.ts +1 -1
  115. package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/signed-identity.ts +1 -1
  116. package/runtime/node_modules/@metro-labs/telegram/package.json +1 -1
  117. package/runtime/node_modules/@metro-labs/telegram/src/accounts.ts +1 -1
  118. package/runtime/node_modules/@metro-labs/telegram/src/actions.ts +3 -3
  119. package/runtime/node_modules/@metro-labs/telegram/src/attachments.ts +1 -1
  120. package/runtime/node_modules/@metro-labs/telegram/src/client.ts +2 -2
  121. package/runtime/node_modules/@metro-labs/telegram/src/format.ts +1 -1
  122. package/runtime/node_modules/@metro-labs/telegram/src/group.ts +3 -3
  123. package/runtime/node_modules/@metro-labs/telegram/src/inbound.ts +1 -1
  124. package/runtime/node_modules/@metro-labs/telegram/src/index.ts +3 -3
  125. package/runtime/node_modules/@metro-labs/telegram/src/media-actions.ts +1 -1
  126. package/runtime/node_modules/@metro-labs/telegram/src/members.ts +1 -1
  127. package/runtime/node_modules/@metro-labs/telegram/src/normalize.ts +1 -1
  128. package/runtime/node_modules/@metro-labs/telegram/src/reactions.ts +1 -1
  129. package/runtime/node_modules/@metro-labs/telegram/src/station.ts +1 -1
  130. package/runtime/node_modules/@metro-labs/telegram/src/wire.ts +1 -1
  131. package/runtime/node_modules/@metro-labs/telegram-bot/package.json +1 -1
  132. package/runtime/node_modules/@metro-labs/telegram-bot/src/accounts.ts +2 -2
  133. package/runtime/node_modules/@metro-labs/telegram-bot/src/actions.ts +4 -4
  134. package/runtime/node_modules/@metro-labs/telegram-bot/src/attachments.ts +2 -2
  135. package/runtime/node_modules/@metro-labs/telegram-bot/src/format.ts +1 -1
  136. package/runtime/node_modules/@metro-labs/telegram-bot/src/index.ts +2 -2
  137. package/runtime/node_modules/@metro-labs/telegram-bot/src/media-actions.ts +1 -1
  138. package/runtime/node_modules/@metro-labs/telegram-bot/src/members.ts +1 -1
  139. package/runtime/node_modules/@metro-labs/telegram-bot/src/station.ts +1 -1
  140. package/runtime/node_modules/@metro-labs/telegram-bot/src/wire.ts +1 -1
  141. package/runtime/node_modules/@metro-labs/webhook/package.json +1 -1
  142. package/runtime/node_modules/@metro-labs/webhook/src/station.ts +4 -4
  143. package/runtime/node_modules/@metro-labs/whatsapp/package.json +1 -1
  144. package/runtime/node_modules/@metro-labs/whatsapp/src/accounts.ts +1 -1
  145. package/runtime/node_modules/@metro-labs/whatsapp/src/ack.ts +1 -1
  146. package/runtime/node_modules/@metro-labs/whatsapp/src/actions.ts +4 -4
  147. package/runtime/node_modules/@metro-labs/whatsapp/src/attachments.ts +2 -2
  148. package/runtime/node_modules/@metro-labs/whatsapp/src/auth-state.ts +1 -1
  149. package/runtime/node_modules/@metro-labs/whatsapp/src/client.ts +2 -2
  150. package/runtime/node_modules/@metro-labs/whatsapp/src/format.ts +1 -1
  151. package/runtime/node_modules/@metro-labs/whatsapp/src/inbound.ts +1 -1
  152. package/runtime/node_modules/@metro-labs/whatsapp/src/index.ts +3 -3
  153. package/runtime/node_modules/@metro-labs/whatsapp/src/keys.ts +1 -1
  154. package/runtime/node_modules/@metro-labs/whatsapp/src/login.ts +1 -1
  155. package/runtime/node_modules/@metro-labs/whatsapp/src/media.ts +1 -1
  156. package/runtime/node_modules/@metro-labs/whatsapp/src/normalize.ts +1 -1
  157. package/runtime/node_modules/@metro-labs/whatsapp/src/station.ts +1 -1
  158. package/runtime/node_modules/@metro-labs/whatsapp/src/token-store.ts +2 -2
  159. package/runtime/node_modules/@metro-labs/whatsapp/src/wire.ts +1 -1
  160. package/runtime/node_modules/@metro-labs/xmtp/package.json +1 -1
  161. package/runtime/node_modules/@metro-labs/xmtp/src/accounts.ts +2 -2
  162. package/runtime/node_modules/@metro-labs/xmtp/src/actions-close.ts +1 -1
  163. package/runtime/node_modules/@metro-labs/xmtp/src/actions-conv.ts +1 -1
  164. package/runtime/node_modules/@metro-labs/xmtp/src/actions-meta.ts +1 -1
  165. package/runtime/node_modules/@metro-labs/xmtp/src/actions.ts +3 -3
  166. package/runtime/node_modules/@metro-labs/xmtp/src/attachments.ts +3 -3
  167. package/runtime/node_modules/@metro-labs/xmtp/src/conv-helpers.ts +2 -2
  168. package/runtime/node_modules/@metro-labs/xmtp/src/emit-payloads.ts +1 -1
  169. package/runtime/node_modules/@metro-labs/xmtp/src/emit.ts +1 -1
  170. package/runtime/node_modules/@metro-labs/xmtp/src/group-members.ts +1 -1
  171. package/runtime/node_modules/@metro-labs/xmtp/src/group.ts +2 -2
  172. package/runtime/node_modules/@metro-labs/xmtp/src/index.ts +2 -2
  173. package/runtime/node_modules/@metro-labs/xmtp/src/member-args.ts +1 -1
  174. package/runtime/node_modules/@metro-labs/xmtp/src/push.ts +2 -2
  175. package/runtime/node_modules/@metro-labs/xmtp/src/station.ts +1 -1
  176. package/runtime/node_modules/@metro-labs/xmtp/src/tools-handlers.ts +3 -3
  177. package/runtime/node_modules/@metro-labs/xmtp/src/tools.ts +1 -1
  178. package/runtime/node_modules/@metro-labs/xmtp/src/transcribe.ts +1 -1
  179. package/runtime/node_modules/@metro-labs/xmtp/src/wire.ts +1 -1
  180. package/runtime/runtime.json +1 -1
  181. package/dist/bedrock-eventstream.js +0 -120
  182. package/dist/bedrock-proxy.js +0 -260
  183. package/dist/bedrock-upstream.js +0 -72
  184. package/dist/bedrock.js +0 -37
  185. package/runtime/node_modules/@metro-labs/mcp/package.json +0 -64
  186. package/runtime/node_modules/@metro-labs/mcp/src/daemon/server-types.ts +0 -21
  187. package/runtime/node_modules/@metro-labs/mcp/src/daemon/servers-api.ts +0 -80
  188. package/runtime/node_modules/@metro-labs/mcp/src/daemon/vault-api.ts +0 -78
  189. package/runtime/node_modules/@metro-labs/mcp/src/daemon/vault-types.ts +0 -12
  190. package/runtime/node_modules/@metro-labs/mcp/src/db/client.ts +0 -32
  191. package/runtime/node_modules/@metro-labs/mcp/src/db/schema.ts +0 -33
  192. package/runtime/node_modules/@metro-labs/mcp/src/db/servers.ts +0 -83
  193. package/runtime/node_modules/@metro-labs/mcp/src/db/vault.ts +0 -109
  194. package/runtime/node_modules/@metro-labs/mcp/src/server.ts +0 -2
  195. /package/runtime/node_modules/@metro-labs/{mcp/src/db → core/src}/address.ts +0 -0
  196. /package/runtime/node_modules/@metro-labs/{mcp/src/db → core/src}/ids.ts +0 -0
  197. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/is-record.ts +0 -0
  198. /package/runtime/node_modules/@metro-labs/{mcp/src/stations → core/src}/lines.ts +0 -0
  199. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/log.ts +0 -0
  200. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/secure-fs.ts +0 -0
  201. /package/runtime/node_modules/@metro-labs/{mcp/src/db/stations.ts → core/src/station-names.ts} +0 -0
  202. /package/runtime/node_modules/@metro-labs/{mcp → core}/src/stations/attachments.ts +0 -0
  203. /package/runtime/node_modules/@metro-labs/{mcp → core}/src/stations/messaging-normalize.ts +0 -0
  204. /package/runtime/node_modules/@metro-labs/{mcp → core}/src/stations/types.ts +0 -0
  205. /package/runtime/node_modules/@metro-labs/{mcp/src/mcp → core/src}/str.ts +0 -0
  206. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/train-error.ts +0 -0
  207. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → core/src}/version.ts +0 -0
  208. /package/runtime/node_modules/@metro-labs/{mcp/src/db/agent-map.ts → daemon/src/agents/map.ts} +0 -0
  209. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/boot}/connect-hint.ts +0 -0
  210. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/channels/media-note.ts +0 -0
  211. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/channels/webhook-note.ts +0 -0
  212. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon/connector-json.ts → daemon/src/connectors/json.ts} +0 -0
  213. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → daemon/src/connectors}/oauth-pending.ts +0 -0
  214. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/eventstream.ts +0 -0
  215. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/forward.ts +0 -0
  216. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/gateway/served.ts +0 -0
  217. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/event-store.ts +0 -0
  218. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/permission-relay.ts +0 -0
  219. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/raw-get-stream.ts +0 -0
  220. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/session-route.ts +0 -0
  221. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/mcp/tool-schemas.ts +0 -0
  222. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/stations/attach-inline.ts +0 -0
  223. /package/runtime/node_modules/@metro-labs/{mcp → daemon}/src/stations/attach-interactive.ts +0 -0
  224. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon/terminal-tickets.ts → daemon/src/terminal/tickets.ts} +0 -0
  225. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/api-error.ts +0 -0
  226. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/cors.ts +0 -0
  227. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/identity-key.ts +0 -0
  228. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/identity-registry.ts +0 -0
  229. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/mode-api.ts +0 -0
  230. /package/runtime/node_modules/@metro-labs/{mcp/src/daemon → http/src}/return-to.ts +0 -0
package/dist/cli.js CHANGED
@@ -3,7 +3,6 @@ import { mcpServers, whoisAuthorized } from './api.js';
3
3
  import { stopAll } from './control.js';
4
4
  import { tailEvents } from './tail.js';
5
5
  import { launchClaude } from './claude.js';
6
- import { bedrock } from './bedrock.js';
7
6
  import { installPlugin } from './plugin.js';
8
7
  import { update } from './update.js';
9
8
  import { serve } from './serve.js';
@@ -34,7 +33,6 @@ const USAGE = `metro — run your agent on this machine
34
33
  metro plugin set up the Claude Code plugin (connector servers + /metro:refresh)
35
34
  metro claude [args...]
36
35
  open Claude Code with the metro channel; every argument is passed through
37
- metro bedrock [args...]
38
36
  the same, with inference on Amazon Bedrock through a local proxy so the
39
37
  channel still works (needs AWS_BEARER_TOKEN_BEDROCK and AWS_REGION)
40
38
  metro update update to the newest published version (--check only reports)
@@ -79,7 +77,6 @@ const COMMANDS = {
79
77
  },
80
78
  plugin: installPlugin,
81
79
  claude: () => launchClaude(process.argv.slice(3)),
82
- bedrock: () => bedrock(process.argv.slice(3)),
83
80
  update: () => update(process.argv.slice(3)),
84
81
  version: async () => {
85
82
  process.stdout.write(`${currentVersion()}\n`);
package/dist/runtime.js CHANGED
@@ -3,7 +3,7 @@ import { existsSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  const AGENT_RE = /^[A-Za-z0-9][A-Za-z0-9_-]{10}$/;
6
- export const SERVER_ENTRY = join('node_modules', '@metro-labs', 'mcp', 'src', 'server.ts');
6
+ export const SERVER_ENTRY = join('node_modules', '@metro-labs', 'daemon', 'src', 'server.ts');
7
7
  export class MissingRuntime extends Error {
8
8
  }
9
9
  export function runtimeDir() {
package/dist/serve.js CHANGED
@@ -117,7 +117,6 @@ export function servePlan(opts) {
117
117
  cwd: opts.runtime.dir,
118
118
  env: {
119
119
  ...env,
120
- METRO_MODE: 'local',
121
120
  METRO_VERSION: currentVersion(),
122
121
  METRO_CLI_BIN: process.argv[1] ?? '',
123
122
  METRO_WEBHOOK_PORT: String(opts.port),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stage-labs/metro",
3
- "version": "0.1.0-beta.75",
3
+ "version": "0.1.0-beta.77",
4
4
  "description": "The metro command line. Sign in once per machine, then hand your MCP connector list to Claude Code without the credentials touching disk, argv or shell history.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@metro-labs/core",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "description": "What every metro process shares: the logger, the event bus and its types, ids, secure file writes, the train protocol, station types and attachment handling. No HTTP, no policy.",
6
+ "type": "module",
7
+ "exports": {
8
+ "./log": "./src/log.ts",
9
+ "./events": "./src/events.ts",
10
+ "./identity": "./src/identity.ts",
11
+ "./is-record": "./src/is-record.ts",
12
+ "./secure-fs": "./src/secure-fs.ts",
13
+ "./version": "./src/version.ts",
14
+ "./train-error": "./src/train-error.ts",
15
+ "./trains/protocol": "./src/protocol.ts",
16
+ "./ids": "./src/ids.ts",
17
+ "./address": "./src/address.ts",
18
+ "./station-names": "./src/station-names.ts",
19
+ "./str": "./src/str.ts",
20
+ "./lines": "./src/lines.ts",
21
+ "./endpoints": "./src/endpoints.ts",
22
+ "./stations/types": "./src/stations/types.ts",
23
+ "./stations/station-runtime": "./src/stations/station-runtime.ts",
24
+ "./stations/account-store": "./src/stations/account-store.ts",
25
+ "./stations/attachments": "./src/stations/attachments.ts",
26
+ "./stations/messaging-normalize": "./src/stations/messaging-normalize.ts"
27
+ },
28
+ "scripts": {
29
+ "build": "tsc",
30
+ "test": "tsc --noEmit && METRO_STATE_DIR=\"$(mktemp -d /tmp/metro-test.XXXXXX)\" bun test test/"
31
+ },
32
+ "dependencies": {
33
+ "pino": "^9.5.0",
34
+ "pino-pretty": "^13.1.3"
35
+ },
36
+ "devDependencies": {
37
+ "@stage-labs/config": "0.1.0-beta.2",
38
+ "eslint": "^10.3.0",
39
+ "knip": "^6.15.0",
40
+ "madge": "^8.0.0",
41
+ "typescript": "^5"
42
+ }
43
+ }
@@ -0,0 +1,7 @@
1
+ export interface Endpoint {
2
+ id: string;
3
+ webhookId?: string;
4
+ label: string;
5
+ secret?: string;
6
+ createdAt: string;
7
+ }
@@ -1,5 +1,5 @@
1
1
  import { randomBytes } from 'node:crypto';
2
- import { Line } from '../stations/lines.js';
2
+ import { Line } from './lines.js';
3
3
 
4
4
  export { userSelf, daemonSelf } from './identity.js';
5
5
 
@@ -1,4 +1,4 @@
1
- import { Line } from '../stations/lines.js';
1
+ import { Line } from './lines.js';
2
2
 
3
3
  export const userSelf = (): Line =>
4
4
  (process.env.METRO_FROM ?? 'metro://user') as Line;
@@ -3,7 +3,7 @@ import { join, parse as parsePath } from 'node:path';
3
3
  import { errMsg, log } from './log.js';
4
4
  import { coerceErrorInfo, type TrainErrorInfo } from './train-error.js';
5
5
  import type { StructuredEvent } from './events.js';
6
- import type { CallMsg } from '../stations/station-runtime.js';
6
+ import type { CallMsg } from './stations/station-runtime.js';
7
7
 
8
8
  export {
9
9
  TrainError,
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
- import { errMsg } from '../daemon/log.js';
3
- import { chmodIfExists } from '../daemon/secure-fs.js';
2
+ import { errMsg } from '../log.js';
3
+ import { chmodIfExists } from '../secure-fs.js';
4
4
 
5
5
  export type Die = (msg: string) => never;
6
6
 
@@ -1,4 +1,4 @@
1
- import { serializeTrainError, type TrainErrorInfo } from '../daemon/train-error.js';
1
+ import { serializeTrainError, type TrainErrorInfo } from '../train-error.js';
2
2
  import type { Normalized } from './messaging-normalize.js';
3
3
 
4
4
  export const emit = (e: unknown): void =>
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@metro-labs/daemon",
3
+ "version": "0.1.0-beta.15",
4
+ "private": true,
5
+ "description": "The metro daemon a user runs on their own machine with `metro serve`: the MCP server Claude Code connects to, the station subprocesses it supervises, the model gateway, and the signed-identity APIs the page at metro.box talks to.",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/bonustrack/metro.git"
10
+ },
11
+ "homepage": "https://github.com/bonustrack/metro#readme",
12
+ "bugs": "https://github.com/bonustrack/metro/issues",
13
+ "type": "module",
14
+ "engines": {
15
+ "node": ">=22"
16
+ },
17
+ "exports": {
18
+ ".": "./src/mcp/index.ts"
19
+ },
20
+ "scripts": {
21
+ "start": "bun src/server.ts",
22
+ "build": "tsc",
23
+ "test": "tsc --noEmit && DYLD_FALLBACK_LIBRARY_PATH=/usr/lib METRO_STATE_DIR=\"$(mktemp -d /tmp/metro-test.XXXXXX)\" bun test test/"
24
+ },
25
+ "dependencies": {
26
+ "@metro-labs/core": "workspace:*",
27
+ "@metro-labs/http": "workspace:*",
28
+ "@metro-labs/discord-bot": "workspace:*",
29
+ "@metro-labs/telegram": "workspace:*",
30
+ "@metro-labs/telegram-bot": "workspace:*",
31
+ "@metro-labs/webhook": "workspace:*",
32
+ "@metro-labs/whatsapp": "workspace:*",
33
+ "@metro-labs/xmtp": "workspace:*",
34
+ "@modelcontextprotocol/sdk": "^1.12.0",
35
+ "viem": "2.52.2",
36
+ "ws": "^8.18.0",
37
+ "zod": "^3.23.8"
38
+ },
39
+ "devDependencies": {
40
+ "@stage-labs/config": "0.1.0-beta.2",
41
+ "@types/ws": "^8.18.0",
42
+ "eslint": "^10.3.0",
43
+ "knip": "^6.15.0",
44
+ "madge": "^8.0.0",
45
+ "typescript": "^5"
46
+ }
47
+ }
@@ -1,4 +1,4 @@
1
- import { STATIONS, type StationName } from './stations.js';
1
+ import { STATIONS, type StationName } from '@metro-labs/core/station-names';
2
2
 
3
3
  const ACCOUNT_ID_RE = /^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;
4
4
 
@@ -1,19 +1,19 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
- import { errMsg, log } from './log.js';
3
- import { ApiError } from './api-error.js';
2
+ import { errMsg, log } from '@metro-labs/core/log';
3
+ import { ApiError } from '@metro-labs/http/api-error';
4
4
  import {
5
5
  apiFailure,
6
6
  bodyField,
7
7
  readJsonBody,
8
8
  sendJson,
9
9
  type ApiSession,
10
- } from './api-http.js';
10
+ } from '@metro-labs/http/api-http';
11
11
  import {
12
12
  isStationName,
13
13
  parseAccountId,
14
14
  type AccountRef,
15
- } from '../db/account-attach.js';
16
- import type { StationName } from '../db/stations.js';
15
+ } from './account-attach.js';
16
+ import type { StationName } from '@metro-labs/core/station-names';
17
17
  import {
18
18
  ATTACHABLE_STATIONS,
19
19
  isAttachStation,
@@ -30,7 +30,7 @@ import {
30
30
  ATTACH_ID_RE,
31
31
  type AttachOwner,
32
32
  type AttachView,
33
- } from './attach-session.js';
33
+ } from '../stations/attach-session.js';
34
34
 
35
35
  export interface AttachSessionApi {
36
36
  start: (
@@ -1,6 +1,6 @@
1
1
  import { randomBytes } from 'node:crypto';
2
- import { ApiError } from '../daemon/api-error.js';
3
- import { AGENT_NAME_RE } from './ids.js';
2
+ import { ApiError } from '@metro-labs/http/api-error';
3
+ import { AGENT_NAME_RE } from '@metro-labs/core/ids';
4
4
 
5
5
  export class AgentAdminError extends ApiError {}
6
6
 
@@ -1,7 +1,7 @@
1
- import { webhookPort } from './tunnel.js';
1
+ import { webhookPort } from '../net/tunnel.js';
2
2
  import type { IncomingMessage, ServerResponse } from 'node:http';
3
- import { parseId } from '../db/ids.js';
4
- import { errMsg, log } from './log.js';
3
+ import { parseId } from '@metro-labs/core/ids';
4
+ import { errMsg, log } from '@metro-labs/core/log';
5
5
  import {
6
6
  apiFailure,
7
7
  apiSession,
@@ -10,7 +10,7 @@ import {
10
10
  readJsonBody,
11
11
  sendJson,
12
12
  type ApiSession,
13
- } from './api-http.js';
13
+ } from '@metro-labs/http/api-http';
14
14
  import {
15
15
  accountRoute,
16
16
  accountRouteAllows,
@@ -18,13 +18,13 @@ import {
18
18
  handleAccountRoute,
19
19
  type AccountApiDeps,
20
20
  type AccountRoute,
21
- } from './account-api.js';
21
+ } from './accounts-api.js';
22
22
  import {
23
23
  type AgentSummary,
24
24
  type CreatedAgent,
25
25
  type DeletedAgent,
26
26
  type ResetAgentKey,
27
- } from '../db/agent-admin.js';
27
+ } from './admin.js';
28
28
 
29
29
  const PREFIX = '/api/agents';
30
30
  const SERVER_NAME = 'metro';
@@ -1,11 +1,11 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
- import { errMsg, log } from './log.js';
3
- import { apiFailure, apiSession, cors, readJsonBody, sendJson } from './api-http.js';
4
- import { ApiError } from './api-error.js';
5
- import { isRecord } from './is-record.js';
6
- import { parseId } from '../db/ids.js';
7
- import type { LoadedAccount, LoadedAgent, LoadedConnector } from '../db/materialize.js';
8
- import { STATIONS } from '../db/stations.js';
2
+ import { errMsg, log } from '@metro-labs/core/log';
3
+ import { apiFailure, apiSession, cors, readJsonBody, sendJson } from '@metro-labs/http/api-http';
4
+ import { ApiError } from '@metro-labs/http/api-error';
5
+ import { isRecord } from '@metro-labs/core/is-record';
6
+ import { parseId } from '@metro-labs/core/ids';
7
+ import type { LoadedAccount, LoadedAgent, LoadedConnector } from '../stations/materialize.js';
8
+ import { STATIONS } from '@metro-labs/core/station-names';
9
9
 
10
10
  const AGENTS = '/api/agents';
11
11
  const RESTORE_PATH = `${AGENTS}/restore`;
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync, rmdirSync, rmSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { ApiError } from '../daemon/api-error.js';
4
- import { ensureSecureDir, writeSecure } from '../daemon/secure-fs.js';
3
+ import { ApiError } from '@metro-labs/http/api-error';
4
+ import { ensureSecureDir, writeSecure } from '@metro-labs/core/secure-fs';
5
5
  import {
6
6
  AgentAdminError,
7
7
  newApiKey,
@@ -11,7 +11,7 @@ import {
11
11
  type DeletedAgent,
12
12
  type OwnedAgent,
13
13
  type ResetAgentKey,
14
- } from './agent-admin.js';
14
+ } from './admin.js';
15
15
  import type { AccountRef } from './account-attach.js';
16
16
  import {
17
17
  AGENT_FILE,
@@ -21,12 +21,12 @@ import {
21
21
  parseAgentFile,
22
22
  readAgentFile,
23
23
  type AgentFile,
24
- } from './file-source.js';
25
- import { newId } from './ids.js';
26
- import { registerKey, rotateAgentKey, unregisterAgentKey } from './key-map.js';
27
- import { MOVABLE_STATIONS, type LoadedAgent } from './materialize.js';
28
- import type { StationName } from './stations.js';
29
- import { normalizeAddress } from './address.js';
24
+ } from './files.js';
25
+ import { newId } from '@metro-labs/core/ids';
26
+ import { registerKey, rotateAgentKey, unregisterAgentKey } from './keys.js';
27
+ import { MOVABLE_STATIONS, type LoadedAgent } from '../stations/materialize.js';
28
+ import type { StationName } from '@metro-labs/core/station-names';
29
+ import { normalizeAddress } from '@metro-labs/core/address';
30
30
 
31
31
  export const LOCAL_PROJECT_ID = 'localdaemon';
32
32
  const OWNER_FILE = '.owner';
@@ -1,10 +1,10 @@
1
1
  import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { AGENT_NAME_RE, ID_RE } from './ids.js';
5
- import { STATIONS, type StationName } from './stations.js';
6
- import type { LoadedAccount, LoadedAgent, StationSource } from './materialize.js';
7
- import { isRecord } from '../daemon/is-record.js';
4
+ import { AGENT_NAME_RE, ID_RE } from '@metro-labs/core/ids';
5
+ import { STATIONS, type StationName } from '@metro-labs/core/station-names';
6
+ import type { LoadedAccount, LoadedAgent, StationSource } from '../stations/materialize.js';
7
+ import { isRecord } from '@metro-labs/core/is-record';
8
8
 
9
9
  export const AGENT_FILE = 'agent.json';
10
10
 
@@ -1,5 +1,5 @@
1
1
  import { createHash } from 'node:crypto';
2
- import { ID_RE } from './ids.js';
2
+ import { ID_RE } from '@metro-labs/core/ids';
3
3
 
4
4
  const digest = (token: string): string =>
5
5
  createHash('sha256').update(token).digest('hex');
@@ -2,8 +2,8 @@ import {
2
2
  accountFromLine,
3
3
  agentIdForAccount,
4
4
  stationAgentIds,
5
- } from './agent-map.js';
6
- import { STATIONS } from './stations.js';
5
+ } from './map.js';
6
+ import { STATIONS } from '@metro-labs/core/station-names';
7
7
 
8
8
  const ACCOUNT_STATIONS = new Set<string>(STATIONS);
9
9
 
@@ -1,31 +1,30 @@
1
1
  import { join } from 'node:path';
2
2
  import { type Server } from 'node:http';
3
- import { userSelf } from './events.js';
4
- import { setTrainCallBackend } from './train-call.js';
5
- import { errMsg, log, logFatalSync } from './log.js';
6
- import { acquireLock, isLocalMode, STATE_DIR, trainsDir } from './paths.js';
3
+ import { userSelf } from '@metro-labs/core/events';
4
+ import { setTrainCallBackend } from '../stations/train-call.js';
5
+ import { errMsg, log, logFatalSync } from '@metro-labs/core/log';
6
+ import { acquireLock, STATE_DIR, trainsDir } from './paths.js';
7
7
  import { installCrashGuard, markDaemonReady } from './crash-guard.js';
8
- import { METRO_VERSION } from './version.js';
9
- import { funnelDriver, Tunnel, tunnelWanted, webhookPort } from './tunnel.js';
8
+ import { METRO_VERSION } from '@metro-labs/core/version';
9
+ import { funnelDriver, Tunnel, tunnelWanted, webhookPort } from '../net/tunnel.js';
10
10
  import {
11
11
  localConnectHint,
12
12
  publicConnectHint,
13
13
  tunnelPendingHint,
14
14
  } from './connect-hint.js';
15
- import { TrainSupervisor } from './supervisor.js';
15
+ import { TrainSupervisor } from '../stations/supervisor.js';
16
16
  import {
17
17
  makeEmit,
18
18
  startWebhookServer,
19
19
  trainEventToMetroEvent,
20
- } from './http.js';
21
- import { localAgentKey } from '../db/materialize.js';
22
- import { fileSource } from '../db/file-source.js';
20
+ } from '../routes/http.js';
21
+ import { localAgentKey } from '../stations/materialize.js';
22
+ import { fileSource } from '../agents/files.js';
23
23
  import { applyLocalOwner } from './local-owner.js';
24
- import { localOwner } from '../db/file-admin.js';
25
- import { ensureStationDeps } from './runtime-deps.js';
26
- import { localSessionApis } from './local-mode.js';
27
- import type { ModeInfo } from './mode-api.js';
28
- import type { SessionApis } from './session-apis.js';
24
+ import { localOwner } from '../agents/file-admin.js';
25
+ import { ensureStationDeps } from '../stations/runtime-deps.js';
26
+ import { localSessionApis } from '../routes/local-mode.js';
27
+ import type { SessionApis } from '../routes/session-apis.js';
29
28
  import {
30
29
  agentLiveness,
31
30
  closeAgentSession,
@@ -38,9 +37,9 @@ import {
38
37
  stationByName,
39
38
  } from '../stations/registry.js';
40
39
  import { prepareAccount } from '../stations/attach.js';
41
- import { materializeFrom, reloadFrom } from '../db/materialize.js';
42
- import type { StationName } from '../db/stations.js';
43
- import { startUploadReaper } from './upload-store.js';
40
+ import { materializeFrom, reloadFrom } from '../stations/materialize.js';
41
+ import type { StationName } from '@metro-labs/core/station-names';
42
+ import { startUploadReaper } from '../files/upload-store.js';
44
43
 
45
44
  installCrashGuard();
46
45
  acquireLock(join(STATE_DIR, '.tail-lock'));
@@ -96,16 +95,8 @@ async function syncStations(station: StationName): Promise<void> {
96
95
  }
97
96
  }
98
97
 
99
- const hostedMode = (): ModeInfo => ({
100
- mode: 'hosted',
101
- owner: null,
102
- project: null,
103
- version: METRO_VERSION,
104
- });
105
-
106
- async function sessionApis(): Promise<SessionApis> {
107
- if (isLocalMode())
108
- return localSessionApis({
98
+ function sessionApis(): SessionApis {
99
+ return localSessionApis({
109
100
  syncStations,
110
101
  restart: () => {
111
102
  exitCode = RESTART_EXIT;
@@ -121,41 +112,22 @@ async function sessionApis(): Promise<SessionApis> {
121
112
  liveness: agentLiveness,
122
113
  prepareAccount,
123
114
  });
124
- const vault = await import('../db/vault.js');
125
- const servers = await import('../db/servers.js');
126
- return {
127
- vaultApi: {
128
- list: vault.listVaultForOwner,
129
- put: vault.putVaultForOwner,
130
- get: vault.getVaultForOwner,
131
- remove: vault.deleteVaultForOwner,
132
- },
133
- serversApi: {
134
- list: servers.listServersForOwner,
135
- add: servers.addServerForOwner,
136
- rename: servers.renameServerForOwner,
137
- remove: servers.deleteServerForOwner,
138
- },
139
- mode: hostedMode,
140
- };
141
115
  }
142
116
 
143
117
  async function main(): Promise<void> {
144
- if (isLocalMode()) {
145
- applyLocalOwner();
146
- await materializeFrom(fileSource, { allowEmpty: true });
147
- }
118
+ applyLocalOwner();
119
+ await materializeFrom(fileSource, { allowEmpty: true });
148
120
  supervisor.start();
149
121
  const metroMcp = await createMetroMcp();
150
122
  webhookServer = await startWebhookServer(
151
123
  emit,
152
- await sessionApis(),
124
+ sessionApis(),
153
125
  metroMcp.httpHandler,
154
126
  metroCall,
155
127
  );
156
128
  metroMcp.startInbound();
157
129
  startUploadReaper();
158
- if (isLocalMode()) announceLocalEndpoint();
130
+ announceLocalEndpoint();
159
131
  tunnel?.start();
160
132
  log.info(
161
133
  { tunnel: !!tunnel, trainsDir: trainsDir(), mcp: '/', version: METRO_VERSION },
@@ -1,4 +1,4 @@
1
- import { errMsg, log, logFatalSync } from './log.js';
1
+ import { errMsg, log, logFatalSync } from '@metro-labs/core/log';
2
2
 
3
3
  export type CrashKind = 'unhandledRejection' | 'uncaughtException';
4
4
 
@@ -1,5 +1,5 @@
1
- import { localOwner, setLocalOwner } from '../db/file-admin.js';
2
- import { log } from './log.js';
1
+ import { localOwner, setLocalOwner } from '../agents/file-admin.js';
2
+ import { log } from '@metro-labs/core/log';
3
3
 
4
4
  export function applyLocalOwner(): string | null {
5
5
  const wanted = process.env.METRO_OWNER?.trim() ?? '';
@@ -10,7 +10,7 @@ import {
10
10
  import { homedir } from 'node:os';
11
11
  import { join } from 'node:path';
12
12
  import { fileURLToPath } from 'node:url';
13
- import { log } from './log.js';
13
+ import { log } from '@metro-labs/core/log';
14
14
 
15
15
  export const STATE_DIR =
16
16
  process.env.METRO_STATE_DIR ?? join(homedir(), '.cache', 'metro');
@@ -23,9 +23,6 @@ export function trainsDir(): string {
23
23
  return fileURLToPath(new URL('../../trains', import.meta.url));
24
24
  }
25
25
 
26
- export const isLocalMode = (): boolean =>
27
- process.env.METRO_MODE?.trim() === 'local';
28
-
29
26
  function readLockPid(lockFile: string): number {
30
27
  try {
31
28
  return Number(readFileSync(lockFile, 'utf8').trim());
@@ -1,4 +1,4 @@
1
- import { str } from '../mcp/str.js';
1
+ import { str } from '@metro-labs/core/str';
2
2
 
3
3
  export type Addressed = 'direct' | 'mention' | 'reply';
4
4
 
@@ -1,4 +1,4 @@
1
- import { accountFromLine, agentIdForAccount } from '../db/agent-map.js';
1
+ import { accountFromLine, agentIdForAccount } from '../agents/map.js';
2
2
 
3
3
  const accountStrippedLine = (line: string): string => {
4
4
  const parts = line.split('/');
@@ -1,5 +1,5 @@
1
1
  import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
- import { str } from '../mcp/str.js';
2
+ import { str } from '@metro-labs/core/str';
3
3
  import { dedupeKey } from './dedupe.js';
4
4
  import {
5
5
  buildMediaFailureNote,
@@ -1,4 +1,4 @@
1
- import { str } from '../mcp/str.js';
1
+ import { str } from '@metro-labs/core/str';
2
2
 
3
3
  export interface PendingAtt {
4
4
  kind?: string;
@@ -3,7 +3,7 @@ import {
3
3
  currentBusSeq,
4
4
  subscribeEvents,
5
5
  type MetroEvent,
6
- } from '../daemon/events.js';
6
+ } from '@metro-labs/core/events';
7
7
  import type { InboundRelay } from './inbound.js';
8
8
 
9
9
  export interface ReplayLedger {