@ouro.bot/cli 0.1.0-alpha.60 → 0.1.0-alpha.600

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 (420) hide show
  1. package/README.md +127 -23
  2. package/RepairGuide.ouro/agent.json +5 -0
  3. package/RepairGuide.ouro/psyche/IDENTITY.md +19 -0
  4. package/RepairGuide.ouro/psyche/SOUL.md +55 -0
  5. package/RepairGuide.ouro/skills/diagnose-broken-remote.md +63 -0
  6. package/RepairGuide.ouro/skills/diagnose-stacked-typed-issues.md +35 -0
  7. package/RepairGuide.ouro/skills/diagnose-sync-blocked.md +54 -0
  8. package/RepairGuide.ouro/skills/diagnose-vault-expired.md +60 -0
  9. package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/agent.json +4 -2
  10. package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/SOUL.md +2 -2
  11. package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-serpent.md +1 -1
  12. package/changelog.json +3857 -0
  13. package/dist/arc/attention-types.js +8 -0
  14. package/dist/arc/cares.js +140 -0
  15. package/dist/arc/episodes.js +117 -0
  16. package/dist/arc/intentions.js +133 -0
  17. package/dist/arc/json-store.js +117 -0
  18. package/dist/arc/obligations.js +254 -0
  19. package/dist/arc/packets.js +193 -0
  20. package/dist/arc/presence.js +185 -0
  21. package/dist/arc/task-lifecycle.js +65 -0
  22. package/dist/heart/active-work.js +837 -26
  23. package/dist/heart/agent-entry.js +69 -3
  24. package/dist/heart/attachments/image-normalize.js +194 -0
  25. package/dist/heart/attachments/materialize.js +97 -0
  26. package/dist/heart/attachments/originals.js +88 -0
  27. package/dist/heart/attachments/render.js +29 -0
  28. package/dist/heart/attachments/sources/adapter.js +2 -0
  29. package/dist/heart/attachments/sources/bluebubbles.js +156 -0
  30. package/dist/heart/attachments/sources/cli-local-file.js +78 -0
  31. package/dist/heart/attachments/sources/index.js +16 -0
  32. package/dist/heart/attachments/store.js +103 -0
  33. package/dist/heart/attachments/types.js +93 -0
  34. package/dist/heart/auth/auth-flow.js +479 -0
  35. package/dist/heart/awaiting/await-alert.js +146 -0
  36. package/dist/heart/awaiting/await-expiry.js +108 -0
  37. package/dist/heart/awaiting/await-loader.js +91 -0
  38. package/dist/heart/awaiting/await-parser.js +141 -0
  39. package/dist/heart/awaiting/await-runtime-state.js +97 -0
  40. package/dist/heart/awaiting/await-scheduler.js +377 -0
  41. package/dist/heart/background-operations.js +281 -0
  42. package/dist/heart/bundle-state.js +168 -0
  43. package/dist/heart/commitments.js +142 -0
  44. package/dist/heart/config-registry.js +322 -0
  45. package/dist/heart/config.js +114 -119
  46. package/dist/heart/core.js +909 -246
  47. package/dist/heart/cross-chat-delivery.js +3 -18
  48. package/dist/heart/daemon/agent-config-check.js +419 -0
  49. package/dist/heart/daemon/agent-discovery.js +102 -3
  50. package/dist/heart/daemon/agent-service.js +522 -0
  51. package/dist/heart/daemon/agentic-repair.js +547 -0
  52. package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
  53. package/dist/heart/daemon/boot-sync-probe.js +197 -0
  54. package/dist/heart/daemon/cadence.js +70 -0
  55. package/dist/heart/daemon/cli-defaults.js +776 -0
  56. package/dist/heart/daemon/cli-exec.js +7571 -0
  57. package/dist/heart/daemon/cli-help.js +498 -0
  58. package/dist/heart/daemon/cli-parse.js +1599 -0
  59. package/dist/heart/daemon/cli-render-doctor.js +57 -0
  60. package/dist/heart/daemon/cli-render.js +763 -0
  61. package/dist/heart/daemon/cli-types.js +8 -0
  62. package/dist/heart/daemon/connect-bay.js +323 -0
  63. package/dist/heart/daemon/daemon-cli.js +29 -1703
  64. package/dist/heart/daemon/daemon-entry.js +485 -2
  65. package/dist/heart/daemon/daemon-health.js +176 -0
  66. package/dist/heart/daemon/daemon-rollup.js +57 -0
  67. package/dist/heart/daemon/daemon-runtime-sync.js +88 -13
  68. package/dist/heart/daemon/daemon-tombstone.js +236 -0
  69. package/dist/heart/daemon/daemon.js +842 -69
  70. package/dist/heart/daemon/dns-workflow.js +394 -0
  71. package/dist/heart/daemon/doctor-types.js +8 -0
  72. package/dist/heart/daemon/doctor.js +873 -0
  73. package/dist/heart/daemon/health-monitor.js +122 -1
  74. package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
  75. package/dist/heart/daemon/hooks/bundle-meta.js +115 -1
  76. package/dist/heart/daemon/http-health-probe.js +80 -0
  77. package/dist/heart/daemon/human-command-screens.js +234 -0
  78. package/dist/heart/daemon/human-readiness.js +114 -0
  79. package/dist/heart/daemon/inner-status.js +89 -0
  80. package/dist/heart/daemon/interactive-repair.js +394 -0
  81. package/dist/heart/daemon/launchd.js +37 -8
  82. package/dist/heart/daemon/log-tailer.js +78 -9
  83. package/dist/heart/daemon/logs-prune.js +110 -0
  84. package/dist/heart/daemon/mcp-canary.js +297 -0
  85. package/dist/heart/daemon/os-cron-deps.js +135 -0
  86. package/dist/heart/daemon/os-cron.js +14 -12
  87. package/dist/heart/daemon/ouro-bot-entry.js +4 -2
  88. package/dist/heart/daemon/ouro-entry.js +3 -1
  89. package/dist/heart/daemon/process-manager.js +375 -33
  90. package/dist/heart/daemon/provider-discovery.js +137 -0
  91. package/dist/heart/daemon/provider-ping-progress.js +83 -0
  92. package/dist/heart/daemon/pulse.js +475 -0
  93. package/dist/heart/daemon/readiness-repair.js +365 -0
  94. package/dist/heart/daemon/run-hooks.js +2 -0
  95. package/dist/heart/daemon/runtime-logging.js +10 -2
  96. package/dist/heart/daemon/runtime-metadata.js +2 -30
  97. package/dist/heart/daemon/safe-mode.js +161 -0
  98. package/dist/heart/daemon/sense-manager.js +462 -38
  99. package/dist/heart/daemon/session-id-resolver.js +131 -0
  100. package/dist/heart/daemon/skill-management-installer.js +94 -0
  101. package/dist/heart/daemon/socket-client.js +158 -11
  102. package/dist/heart/daemon/stale-bundle-prune.js +96 -0
  103. package/dist/heart/daemon/startup-tui.js +330 -0
  104. package/dist/heart/daemon/task-scheduler.js +3 -25
  105. package/dist/heart/daemon/terminal-ui.js +499 -0
  106. package/dist/heart/daemon/thoughts.js +162 -17
  107. package/dist/heart/daemon/up-progress.js +366 -0
  108. package/dist/heart/daemon/vault-items.js +56 -0
  109. package/dist/heart/delegation.js +1 -1
  110. package/dist/heart/habits/habit-migration.js +189 -0
  111. package/dist/heart/habits/habit-parser.js +140 -0
  112. package/dist/heart/habits/habit-runtime-state.js +100 -0
  113. package/dist/heart/habits/habit-scheduler.js +372 -0
  114. package/dist/heart/{daemon → hatch}/hatch-flow.js +32 -56
  115. package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
  116. package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
  117. package/dist/heart/{daemon → hatch}/specialist-tools.js +35 -12
  118. package/dist/heart/identity.js +166 -55
  119. package/dist/heart/kept-notes.js +357 -0
  120. package/dist/heart/kicks.js +1 -1
  121. package/dist/heart/machine-identity.js +161 -0
  122. package/dist/heart/mail-import-discovery.js +353 -0
  123. package/dist/heart/mailbox/mailbox-http-hooks.js +66 -0
  124. package/dist/heart/mailbox/mailbox-http-response.js +7 -0
  125. package/dist/heart/mailbox/mailbox-http-routes.js +246 -0
  126. package/dist/heart/mailbox/mailbox-http-static.js +103 -0
  127. package/dist/heart/mailbox/mailbox-http-transport.js +116 -0
  128. package/dist/heart/mailbox/mailbox-http.js +99 -0
  129. package/dist/heart/mailbox/mailbox-read.js +31 -0
  130. package/dist/heart/mailbox/mailbox-types.js +27 -0
  131. package/dist/heart/mailbox/mailbox-view.js +195 -0
  132. package/dist/heart/mailbox/readers/agent-machine.js +382 -0
  133. package/dist/heart/mailbox/readers/continuity-readers.js +338 -0
  134. package/dist/heart/mailbox/readers/mail.js +367 -0
  135. package/dist/heart/mailbox/readers/runtime-readers.js +651 -0
  136. package/dist/heart/mailbox/readers/sessions.js +232 -0
  137. package/dist/heart/mailbox/readers/shared.js +111 -0
  138. package/dist/heart/mcp/mcp-server.js +656 -0
  139. package/dist/heart/migrate-config.js +100 -0
  140. package/dist/heart/model-capabilities.js +19 -0
  141. package/dist/heart/platform.js +81 -0
  142. package/dist/heart/provider-attempt.js +134 -0
  143. package/dist/heart/provider-binding-resolver.js +267 -0
  144. package/dist/heart/provider-credentials.js +425 -0
  145. package/dist/heart/provider-failover.js +301 -0
  146. package/dist/heart/provider-models.js +81 -0
  147. package/dist/heart/provider-ping.js +262 -0
  148. package/dist/heart/provider-readiness-cache.js +40 -0
  149. package/dist/heart/provider-visibility.js +188 -0
  150. package/dist/heart/providers/anthropic-token.js +131 -0
  151. package/dist/heart/providers/anthropic.js +139 -52
  152. package/dist/heart/providers/azure.js +23 -11
  153. package/dist/heart/providers/error-classification.js +127 -0
  154. package/dist/heart/providers/github-copilot.js +145 -0
  155. package/dist/heart/providers/minimax-vlm.js +189 -0
  156. package/dist/heart/providers/minimax.js +26 -8
  157. package/dist/heart/providers/openai-codex.js +55 -40
  158. package/dist/heart/runtime-capability-check.js +170 -0
  159. package/dist/heart/runtime-credentials.js +367 -0
  160. package/dist/heart/runtime-cwd.js +87 -0
  161. package/dist/heart/sense-truth.js +13 -4
  162. package/dist/heart/session-activity.js +43 -22
  163. package/dist/heart/session-events.js +1149 -0
  164. package/dist/heart/session-playback-cli-main.js +5 -0
  165. package/dist/heart/session-playback-cli.js +36 -0
  166. package/dist/heart/session-playback.js +231 -0
  167. package/dist/heart/session-stats-cli-main.js +5 -0
  168. package/dist/heart/session-stats.js +182 -0
  169. package/dist/heart/session-transcript.js +243 -0
  170. package/dist/heart/start-of-turn-packet.js +345 -0
  171. package/dist/heart/streaming.js +44 -27
  172. package/dist/heart/sync-classification.js +176 -0
  173. package/dist/heart/sync.js +449 -0
  174. package/dist/heart/target-resolution.js +9 -5
  175. package/dist/heart/tempo.js +93 -0
  176. package/dist/heart/temporal-view.js +41 -0
  177. package/dist/heart/timeouts.js +101 -0
  178. package/dist/heart/tool-activity-callbacks.js +59 -0
  179. package/dist/heart/tool-description.js +143 -0
  180. package/dist/heart/tool-friction.js +55 -0
  181. package/dist/heart/tool-loop.js +200 -0
  182. package/dist/heart/turn-context.js +421 -0
  183. package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +6 -5
  184. package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
  185. package/dist/heart/versioning/ouro-path-installer.js +426 -0
  186. package/dist/heart/versioning/ouro-version-manager.js +295 -0
  187. package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
  188. package/dist/heart/{daemon → versioning}/update-checker.js +6 -1
  189. package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
  190. package/dist/mailbox-ui/assets/index-B-461hes.js +61 -0
  191. package/dist/mailbox-ui/assets/index-BPr5vNuM.css +1 -0
  192. package/dist/mailbox-ui/index.html +15 -0
  193. package/dist/mailroom/attention.js +167 -0
  194. package/dist/mailroom/autonomy.js +209 -0
  195. package/dist/mailroom/blob-store.js +700 -0
  196. package/dist/mailroom/body-cache.js +61 -0
  197. package/dist/mailroom/core.js +788 -0
  198. package/dist/mailroom/entry.js +160 -0
  199. package/dist/mailroom/file-store.js +457 -0
  200. package/dist/mailroom/mbox-import.js +393 -0
  201. package/dist/mailroom/migration.js +164 -0
  202. package/dist/mailroom/outbound.js +380 -0
  203. package/dist/mailroom/policy.js +263 -0
  204. package/dist/mailroom/reader.js +233 -0
  205. package/dist/mailroom/search-cache.js +268 -0
  206. package/dist/mailroom/search-relevance.js +319 -0
  207. package/dist/mailroom/smtp-ingress.js +176 -0
  208. package/dist/mailroom/source-state.js +176 -0
  209. package/dist/mailroom/thread.js +109 -0
  210. package/dist/mailroom/travel-extract.js +89 -0
  211. package/dist/mind/bundle-manifest.js +7 -1
  212. package/dist/mind/context.js +165 -101
  213. package/dist/mind/diary-integrity.js +60 -0
  214. package/dist/mind/{memory.js → diary.js} +62 -75
  215. package/dist/mind/embedding-provider.js +60 -0
  216. package/dist/mind/file-state.js +179 -0
  217. package/dist/mind/friends/channel.js +39 -0
  218. package/dist/mind/friends/resolver.js +54 -2
  219. package/dist/mind/friends/store-file.js +39 -3
  220. package/dist/mind/friends/types.js +2 -2
  221. package/dist/mind/journal-index.js +161 -0
  222. package/dist/mind/note-search.js +268 -0
  223. package/dist/mind/obligation-steering.js +221 -0
  224. package/dist/mind/pending.js +4 -0
  225. package/dist/mind/prompt-refresh.js +3 -2
  226. package/dist/mind/prompt.js +1050 -135
  227. package/dist/mind/provenance-trust.js +26 -0
  228. package/dist/mind/scrutiny.js +173 -0
  229. package/dist/nerves/cli-logging.js +7 -1
  230. package/dist/nerves/coverage/audit-rules.js +15 -6
  231. package/dist/nerves/coverage/audit.js +28 -2
  232. package/dist/nerves/coverage/cli.js +1 -1
  233. package/dist/nerves/coverage/contract.js +5 -5
  234. package/dist/nerves/coverage/file-completeness.js +129 -5
  235. package/dist/nerves/event-buffer.js +111 -0
  236. package/dist/nerves/index.js +224 -4
  237. package/dist/nerves/observation.js +20 -0
  238. package/dist/nerves/redact.js +79 -0
  239. package/dist/nerves/review/cli-main.js +5 -0
  240. package/dist/nerves/review/cli.js +156 -0
  241. package/dist/nerves/review/core.js +152 -0
  242. package/dist/nerves/runtime.js +5 -1
  243. package/dist/repertoire/ado-client.js +15 -56
  244. package/dist/repertoire/ado-semantic.js +11 -10
  245. package/dist/repertoire/api-client.js +97 -0
  246. package/dist/repertoire/bitwarden-store.js +997 -0
  247. package/dist/repertoire/bundle-templates.js +72 -0
  248. package/dist/repertoire/bw-installer.js +180 -0
  249. package/dist/repertoire/coding/codex-jsonl.js +64 -0
  250. package/dist/repertoire/coding/context-pack.js +330 -0
  251. package/dist/repertoire/coding/feedback.js +197 -30
  252. package/dist/repertoire/coding/manager.js +158 -9
  253. package/dist/repertoire/coding/spawner.js +55 -9
  254. package/dist/repertoire/coding/tools.js +170 -7
  255. package/dist/repertoire/commerce-errors.js +109 -0
  256. package/dist/repertoire/commerce-self-test.js +156 -0
  257. package/dist/repertoire/credential-access.js +178 -0
  258. package/dist/repertoire/duffel-client.js +185 -0
  259. package/dist/repertoire/github-client.js +14 -55
  260. package/dist/repertoire/graph-client.js +11 -52
  261. package/dist/repertoire/guardrails.js +396 -0
  262. package/dist/repertoire/mcp-client.js +295 -0
  263. package/dist/repertoire/mcp-manager.js +362 -0
  264. package/dist/repertoire/mcp-tools.js +63 -0
  265. package/dist/repertoire/shell-sessions.js +133 -0
  266. package/dist/repertoire/skills.js +15 -24
  267. package/dist/repertoire/stripe-client.js +131 -0
  268. package/dist/repertoire/tasks/board.js +31 -5
  269. package/dist/repertoire/tasks/fix.js +182 -0
  270. package/dist/repertoire/tasks/index.js +16 -4
  271. package/dist/repertoire/tasks/lifecycle.js +2 -2
  272. package/dist/repertoire/tasks/parser.js +3 -2
  273. package/dist/repertoire/tasks/scanner.js +194 -37
  274. package/dist/repertoire/tasks/transitions.js +16 -78
  275. package/dist/repertoire/tool-results.js +29 -0
  276. package/dist/repertoire/tools-attachments.js +317 -0
  277. package/dist/repertoire/tools-awaiting.js +360 -0
  278. package/dist/repertoire/tools-base.js +53 -1082
  279. package/dist/repertoire/tools-bluebubbles.js +1 -0
  280. package/dist/repertoire/tools-bridge.js +142 -0
  281. package/dist/repertoire/tools-bundle.js +984 -0
  282. package/dist/repertoire/tools-config.js +185 -0
  283. package/dist/repertoire/tools-continuity.js +248 -0
  284. package/dist/repertoire/tools-credential.js +381 -0
  285. package/dist/repertoire/tools-files.js +342 -0
  286. package/dist/repertoire/tools-flight.js +224 -0
  287. package/dist/repertoire/tools-flow.js +119 -0
  288. package/dist/repertoire/tools-github.js +1 -7
  289. package/dist/repertoire/tools-mail.js +1916 -0
  290. package/dist/repertoire/tools-notes.js +421 -0
  291. package/dist/repertoire/tools-obligations.js +142 -0
  292. package/dist/repertoire/tools-runtime.js +61 -0
  293. package/dist/repertoire/tools-session.js +809 -0
  294. package/dist/repertoire/tools-shell.js +120 -0
  295. package/dist/repertoire/tools-stripe.js +180 -0
  296. package/dist/repertoire/tools-surface.js +345 -0
  297. package/dist/repertoire/tools-teams.js +9 -39
  298. package/dist/repertoire/tools-travel.js +125 -0
  299. package/dist/repertoire/tools-trip.js +604 -0
  300. package/dist/repertoire/tools-user-profile.js +144 -0
  301. package/dist/repertoire/tools-vault.js +40 -0
  302. package/dist/repertoire/tools-voice.js +144 -0
  303. package/dist/repertoire/tools.js +115 -103
  304. package/dist/repertoire/travel-api-client.js +360 -0
  305. package/dist/repertoire/user-profile.js +131 -0
  306. package/dist/repertoire/vault-setup.js +246 -0
  307. package/dist/repertoire/vault-unlock.js +594 -0
  308. package/dist/scripts/claude-code-hook.js +41 -0
  309. package/dist/scripts/claude-code-stop-hook.js +47 -0
  310. package/dist/senses/attention-queue.js +116 -0
  311. package/dist/senses/await-turn-message.js +58 -0
  312. package/dist/senses/bluebubbles/active-turns.js +216 -0
  313. package/dist/senses/bluebubbles/attachment-cache.js +53 -0
  314. package/dist/senses/bluebubbles/attachment-download.js +137 -0
  315. package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +219 -18
  316. package/dist/senses/bluebubbles/entry.js +77 -0
  317. package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
  318. package/dist/senses/bluebubbles/index.js +2548 -0
  319. package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -71
  320. package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
  321. package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
  322. package/dist/senses/bluebubbles/processed-log.js +133 -0
  323. package/dist/senses/bluebubbles/replay.js +137 -0
  324. package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +30 -2
  325. package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
  326. package/dist/senses/bluebubbles-meta-guard.js +40 -0
  327. package/dist/senses/cli/bracketed-paste.js +82 -0
  328. package/dist/senses/cli/image-paste.js +287 -0
  329. package/dist/senses/cli/image-ref-navigation.js +75 -0
  330. package/dist/senses/cli/ink-app.js +156 -0
  331. package/dist/senses/cli/inline-diff.js +64 -0
  332. package/dist/senses/cli/input-keys.js +174 -0
  333. package/dist/senses/cli/kill-ring.js +86 -0
  334. package/dist/senses/cli/message-list.js +51 -0
  335. package/dist/senses/cli/ouro-tui.js +607 -0
  336. package/dist/senses/cli/spinner-imperative.js +135 -0
  337. package/dist/senses/cli/spinner.js +101 -0
  338. package/dist/senses/cli/status-line.js +60 -0
  339. package/dist/senses/cli/streaming-markdown.js +526 -0
  340. package/dist/senses/cli/tool-display.js +85 -0
  341. package/dist/senses/cli/tool-render.js +85 -0
  342. package/dist/senses/cli/tui-store.js +240 -0
  343. package/dist/senses/cli/virtual-list.js +35 -0
  344. package/dist/senses/cli-entry.js +60 -8
  345. package/dist/senses/cli-layout.js +100 -0
  346. package/dist/senses/cli.js +516 -204
  347. package/dist/senses/commands.js +66 -3
  348. package/dist/senses/habit-turn-message.js +108 -0
  349. package/dist/senses/inner-dialog-worker.js +185 -21
  350. package/dist/senses/inner-dialog.js +372 -27
  351. package/dist/senses/mail-entry.js +66 -0
  352. package/dist/senses/mail.js +379 -0
  353. package/dist/senses/pipeline.js +654 -181
  354. package/dist/senses/proactive-content-guard.js +51 -0
  355. package/dist/senses/shared-turn.js +392 -0
  356. package/dist/senses/surface-tool.js +70 -0
  357. package/dist/senses/teams-entry.js +60 -8
  358. package/dist/senses/teams.js +387 -98
  359. package/dist/senses/trust-gate.js +100 -5
  360. package/dist/senses/voice/audio-playback.js +237 -0
  361. package/dist/senses/voice/audio-routing.js +119 -0
  362. package/dist/senses/voice/elevenlabs.js +202 -0
  363. package/dist/senses/voice/floor-control.js +431 -0
  364. package/dist/senses/voice/floor-controller.js +115 -0
  365. package/dist/senses/voice/golden-path.js +116 -0
  366. package/dist/senses/voice/index.js +29 -0
  367. package/dist/senses/voice/meeting.js +113 -0
  368. package/dist/senses/voice/outbound.js +190 -0
  369. package/dist/senses/voice/phone.js +33 -0
  370. package/dist/senses/voice/playback.js +139 -0
  371. package/dist/senses/voice/realtime-eval.js +496 -0
  372. package/dist/senses/voice/realtime-trace.js +531 -0
  373. package/dist/senses/voice/transcript.js +70 -0
  374. package/dist/senses/voice/turn.js +191 -0
  375. package/dist/senses/voice/twilio-phone-runtime.js +807 -0
  376. package/dist/senses/voice/twilio-phone.js +5077 -0
  377. package/dist/senses/voice/types.js +2 -0
  378. package/dist/senses/voice/whisper.js +161 -0
  379. package/dist/senses/voice-entry.js +81 -0
  380. package/dist/senses/voice-realtime-eval-command.js +99 -0
  381. package/dist/senses/voice-realtime-eval-entry.js +21 -0
  382. package/dist/senses/voice-twilio-entry.js +87 -0
  383. package/dist/trips/core.js +138 -0
  384. package/dist/trips/store.js +265 -0
  385. package/package.json +41 -7
  386. package/skills/agent-commerce.md +106 -0
  387. package/skills/browser-navigation.md +117 -0
  388. package/skills/commerce-setup-guide.md +116 -0
  389. package/skills/commerce-setup.md +84 -0
  390. package/skills/configure-dev-tools.md +99 -0
  391. package/skills/travel-planning.md +138 -0
  392. package/dist/heart/daemon/auth-flow.js +0 -351
  393. package/dist/heart/daemon/ouro-path-installer.js +0 -178
  394. package/dist/heart/daemon/subagent-installer.js +0 -166
  395. package/dist/heart/safe-workspace.js +0 -228
  396. package/dist/heart/session-recall.js +0 -116
  397. package/dist/mind/associative-recall.js +0 -209
  398. package/dist/senses/bluebubbles-entry.js +0 -13
  399. package/dist/senses/bluebubbles.js +0 -1177
  400. package/dist/senses/debug-activity.js +0 -148
  401. package/subagents/README.md +0 -86
  402. package/subagents/work-doer.md +0 -237
  403. package/subagents/work-merger.md +0 -618
  404. package/subagents/work-planner.md +0 -390
  405. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
  406. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
  407. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
  408. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
  409. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
  410. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
  411. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
  412. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
  413. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
  414. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
  415. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
  416. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
  417. /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
  418. /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
  419. /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
  420. /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
@@ -35,11 +35,14 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.loadConfig = loadConfig;
37
37
  exports.resetConfigCache = resetConfigCache;
38
+ exports.cacheRuntimeConfigForTests = cacheRuntimeConfigForTests;
39
+ exports.cacheMachineRuntimeConfigForTests = cacheMachineRuntimeConfigForTests;
38
40
  exports.patchRuntimeConfig = patchRuntimeConfig;
39
41
  exports.getAzureConfig = getAzureConfig;
40
42
  exports.getMinimaxConfig = getMinimaxConfig;
41
43
  exports.getAnthropicConfig = getAnthropicConfig;
42
44
  exports.getOpenAICodexConfig = getOpenAICodexConfig;
45
+ exports.getGithubCopilotConfig = getGithubCopilotConfig;
43
46
  exports.getTeamsConfig = getTeamsConfig;
44
47
  exports.getTeamsSecondaryConfig = getTeamsSecondaryConfig;
45
48
  exports.getContextConfig = getContextConfig;
@@ -49,6 +52,7 @@ exports.getTeamsChannelConfig = getTeamsChannelConfig;
49
52
  exports.getBlueBubblesConfig = getBlueBubblesConfig;
50
53
  exports.getBlueBubblesChannelConfig = getBlueBubblesChannelConfig;
51
54
  exports.getIntegrationsConfig = getIntegrationsConfig;
55
+ exports.getSyncConfig = getSyncConfig;
52
56
  exports.getOpenAIEmbeddingsApiKey = getOpenAIEmbeddingsApiKey;
53
57
  exports.getLogsDir = getLogsDir;
54
58
  exports.sanitizeKey = sanitizeKey;
@@ -59,32 +63,10 @@ exports.logPath = logPath;
59
63
  const fs = __importStar(require("fs"));
60
64
  const path = __importStar(require("path"));
61
65
  const identity_1 = require("./identity");
66
+ const provider_credentials_1 = require("./provider-credentials");
67
+ const runtime_credentials_1 = require("./runtime-credentials");
62
68
  const runtime_1 = require("../nerves/runtime");
63
- const DEFAULT_SECRETS_TEMPLATE = {
64
- providers: {
65
- // Keep provider field ordering consistent: model first, then auth credentials,
66
- // then provider-specific transport fields.
67
- azure: {
68
- modelName: "",
69
- apiKey: "",
70
- endpoint: "",
71
- deployment: "",
72
- apiVersion: "2025-04-01-preview",
73
- managedIdentityClientId: "",
74
- },
75
- minimax: {
76
- model: "",
77
- apiKey: "",
78
- },
79
- anthropic: {
80
- model: "claude-opus-4-6",
81
- setupToken: "",
82
- },
83
- "openai-codex": {
84
- model: "gpt-5.4",
85
- oauthAccessToken: "",
86
- },
87
- },
69
+ const DEFAULT_LOCAL_RUNTIME_CONFIG = {
88
70
  teams: {
89
71
  clientId: "",
90
72
  clientSecret: "",
@@ -110,12 +92,16 @@ const DEFAULT_SECRETS_TEMPLATE = {
110
92
  serverUrl: "",
111
93
  password: "",
112
94
  accountId: "default",
95
+ ownHandles: [],
113
96
  },
114
97
  bluebubblesChannel: {
115
98
  port: 18790,
116
99
  webhookPath: "/bluebubbles-webhook",
117
100
  requestTimeoutMs: 30000,
118
101
  },
102
+ vault: {
103
+ masterPassword: "",
104
+ },
119
105
  integrations: {
120
106
  perplexityApiKey: "",
121
107
  openaiEmbeddingsApiKey: "",
@@ -123,27 +109,20 @@ const DEFAULT_SECRETS_TEMPLATE = {
123
109
  };
124
110
  function defaultRuntimeConfig() {
125
111
  return {
126
- providers: {
127
- azure: { ...DEFAULT_SECRETS_TEMPLATE.providers.azure },
128
- minimax: { ...DEFAULT_SECRETS_TEMPLATE.providers.minimax },
129
- anthropic: { ...DEFAULT_SECRETS_TEMPLATE.providers.anthropic },
130
- "openai-codex": { ...DEFAULT_SECRETS_TEMPLATE.providers["openai-codex"] },
131
- },
132
- teams: { ...DEFAULT_SECRETS_TEMPLATE.teams },
133
- teamsSecondary: { ...DEFAULT_SECRETS_TEMPLATE.teamsSecondary },
134
- oauth: { ...DEFAULT_SECRETS_TEMPLATE.oauth },
112
+ teams: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.teams },
113
+ teamsSecondary: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.teamsSecondary },
114
+ oauth: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.oauth },
135
115
  context: { ...identity_1.DEFAULT_AGENT_CONTEXT },
136
- teamsChannel: { ...DEFAULT_SECRETS_TEMPLATE.teamsChannel },
137
- bluebubbles: { ...DEFAULT_SECRETS_TEMPLATE.bluebubbles },
138
- bluebubblesChannel: { ...DEFAULT_SECRETS_TEMPLATE.bluebubblesChannel },
139
- integrations: { ...DEFAULT_SECRETS_TEMPLATE.integrations },
116
+ teamsChannel: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.teamsChannel },
117
+ bluebubbles: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.bluebubbles },
118
+ bluebubblesChannel: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.bluebubblesChannel },
119
+ vault: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.vault },
120
+ integrations: { ...DEFAULT_LOCAL_RUNTIME_CONFIG.integrations },
140
121
  };
141
122
  }
142
123
  let _runtimeConfigOverride = null;
143
124
  let _testContextOverride = null;
144
- function resolveConfigPath() {
145
- return (0, identity_1.getAgentSecretsPath)();
146
- }
125
+ let _providerConfigOverride = null;
147
126
  function deepMerge(defaults, partial) {
148
127
  const result = { ...defaults };
149
128
  for (const key of Object.keys(partial)) {
@@ -160,79 +139,31 @@ function deepMerge(defaults, partial) {
160
139
  }
161
140
  return result;
162
141
  }
142
+ function localRuntimeFields(config) {
143
+ const { providers: _providers, context: _context, ...localFields } = config;
144
+ return localFields;
145
+ }
163
146
  function loadConfig() {
164
- const configPath = resolveConfigPath();
165
- // Auto-create config directory if it doesn't exist
166
- const configDir = path.dirname(configPath);
167
- fs.mkdirSync(configDir, { recursive: true });
168
- let fileData = {};
169
- try {
170
- const raw = fs.readFileSync(configPath, "utf-8");
171
- fileData = JSON.parse(raw);
172
- }
173
- catch (error) {
174
- const errorCode = error &&
175
- typeof error === "object" &&
176
- "code" in error &&
177
- typeof error.code === "string"
178
- ? error.code
179
- : undefined;
180
- if (errorCode === "ENOENT") {
181
- try {
182
- fs.writeFileSync(configPath, JSON.stringify(DEFAULT_SECRETS_TEMPLATE, null, 2) + "\n", "utf-8");
183
- }
184
- catch (writeError) {
185
- (0, runtime_1.emitNervesEvent)({
186
- level: "warn",
187
- event: "config_identity.error",
188
- component: "config/identity",
189
- message: "failed writing default secrets config",
190
- meta: {
191
- phase: "loadConfig",
192
- path: configPath,
193
- reason: writeError instanceof Error ? writeError.message : String(writeError),
194
- },
195
- });
196
- }
197
- }
198
- (0, runtime_1.emitNervesEvent)({
199
- level: "warn",
200
- event: "config_identity.error",
201
- component: "config/identity",
202
- message: "config read failed; defaults applied",
203
- meta: {
204
- phase: "loadConfig",
205
- reason: error instanceof Error ? error.message : String(error),
206
- },
207
- });
208
- // ENOENT or parse error -- use defaults
209
- }
210
- const sanitizedFileData = { ...fileData };
211
- if ("context" in sanitizedFileData) {
212
- delete sanitizedFileData.context;
213
- (0, runtime_1.emitNervesEvent)({
214
- level: "warn",
215
- event: "config_identity.error",
216
- component: "config/identity",
217
- message: "ignored legacy context block in secrets config",
218
- meta: {
219
- phase: "loadConfig",
220
- path: configPath,
221
- },
222
- });
223
- }
224
- const mergedConfig = deepMerge(defaultRuntimeConfig(), sanitizedFileData);
147
+ const agentName = (0, identity_1.getAgentName)();
148
+ const runtimeResult = (0, runtime_credentials_1.readRuntimeCredentialConfig)(agentName);
149
+ const machineRuntimeResult = (0, runtime_credentials_1.readMachineRuntimeCredentialConfig)(agentName);
150
+ const vaultData = runtimeResult.ok ? localRuntimeFields(runtimeResult.config) : {};
151
+ const machineVaultData = machineRuntimeResult.ok ? localRuntimeFields(machineRuntimeResult.config) : {};
152
+ const mergedConfig = deepMerge(defaultRuntimeConfig(), vaultData);
153
+ const mergedWithMachineConfig = deepMerge(mergedConfig, machineVaultData);
225
154
  const config = _runtimeConfigOverride
226
- ? deepMerge(mergedConfig, _runtimeConfigOverride)
227
- : mergedConfig;
155
+ ? deepMerge(mergedWithMachineConfig, _runtimeConfigOverride)
156
+ : mergedWithMachineConfig;
228
157
  (0, runtime_1.emitNervesEvent)({
229
158
  event: "config.load",
230
159
  component: "config/identity",
231
- message: "config loaded from disk",
160
+ message: "config loaded from runtime credential cache",
232
161
  meta: {
233
- source: "disk",
234
- used_defaults_only: Object.keys(fileData).length === 0,
162
+ source: runtimeResult.ok ? "vault-cache" : "defaults",
163
+ used_defaults_only: !runtimeResult.ok,
164
+ machine_runtime_credentials: machineRuntimeResult.ok ? "available" : machineRuntimeResult.reason,
235
165
  override_applied: _runtimeConfigOverride !== null,
166
+ runtime_credentials: runtimeResult.ok ? "available" : runtimeResult.reason,
236
167
  },
237
168
  });
238
169
  return config;
@@ -240,30 +171,74 @@ function loadConfig() {
240
171
  function resetConfigCache() {
241
172
  _runtimeConfigOverride = null;
242
173
  _testContextOverride = null;
174
+ _providerConfigOverride = null;
175
+ (0, provider_credentials_1.resetProviderCredentialCache)();
176
+ (0, runtime_credentials_1.resetRuntimeCredentialConfigCache)();
177
+ }
178
+ function cacheRuntimeConfigForTests(agentName, config) {
179
+ (0, runtime_credentials_1.cacheRuntimeCredentialConfig)(agentName, config, new Date(0));
180
+ }
181
+ function cacheMachineRuntimeConfigForTests(agentName, config) {
182
+ (0, runtime_credentials_1.cacheMachineRuntimeCredentialConfig)(agentName, config, new Date(0), "machine_test");
183
+ }
184
+ function seedProviderCredentialCache(providers) {
185
+ if (!providers)
186
+ return;
187
+ _providerConfigOverride = deepMerge((_providerConfigOverride ?? {}), providers);
188
+ const records = Object.entries(_providerConfigOverride).map(([provider, rawConfig]) => {
189
+ const split = (0, provider_credentials_1.splitProviderCredentialFields)(provider, rawConfig);
190
+ return (0, provider_credentials_1.createProviderCredentialRecord)({
191
+ provider: provider,
192
+ credentials: split.credentials,
193
+ config: split.config,
194
+ provenance: { source: "manual" },
195
+ now: new Date(0),
196
+ });
197
+ });
198
+ (0, provider_credentials_1.cacheProviderCredentialRecords)((0, identity_1.getAgentName)(), records, new Date(0));
243
199
  }
244
200
  function patchRuntimeConfig(partial) {
201
+ const { providers, ...runtimePartial } = partial;
202
+ seedProviderCredentialCache(providers);
245
203
  const contextPatch = partial.context;
246
204
  if (contextPatch) {
247
205
  const base = _testContextOverride ?? identity_1.DEFAULT_AGENT_CONTEXT;
248
206
  _testContextOverride = deepMerge(base, contextPatch);
249
207
  }
250
- _runtimeConfigOverride = deepMerge((_runtimeConfigOverride ?? {}), partial);
208
+ _runtimeConfigOverride = deepMerge((_runtimeConfigOverride ?? {}), runtimePartial);
209
+ }
210
+ function readProviderConfig(provider) {
211
+ const cached = (0, provider_credentials_1.readCachedProviderCredentialRecord)((0, identity_1.getAgentName)(), provider);
212
+ return cached.ok ? { ...cached.record.config, ...cached.record.credentials } : {};
251
213
  }
252
214
  function getAzureConfig() {
253
- const config = loadConfig();
254
- return { ...config.providers.azure };
215
+ const raw = readProviderConfig("azure");
216
+ return {
217
+ apiKey: typeof raw.apiKey === "string" ? raw.apiKey : "",
218
+ endpoint: typeof raw.endpoint === "string" ? raw.endpoint : "",
219
+ deployment: typeof raw.deployment === "string" ? raw.deployment : "",
220
+ apiVersion: typeof raw.apiVersion === "string" ? raw.apiVersion : "2025-04-01-preview",
221
+ managedIdentityClientId: typeof raw.managedIdentityClientId === "string" ? raw.managedIdentityClientId : "",
222
+ };
255
223
  }
256
224
  function getMinimaxConfig() {
257
- const config = loadConfig();
258
- return { ...config.providers.minimax };
225
+ const raw = readProviderConfig("minimax");
226
+ return { apiKey: typeof raw.apiKey === "string" ? raw.apiKey : "" };
259
227
  }
260
228
  function getAnthropicConfig() {
261
- const config = loadConfig();
262
- return { ...config.providers.anthropic };
229
+ const raw = readProviderConfig("anthropic");
230
+ return { setupToken: typeof raw.setupToken === "string" ? raw.setupToken : "" };
263
231
  }
264
232
  function getOpenAICodexConfig() {
265
- const config = loadConfig();
266
- return { ...config.providers["openai-codex"] };
233
+ const raw = readProviderConfig("openai-codex");
234
+ return { oauthAccessToken: typeof raw.oauthAccessToken === "string" ? raw.oauthAccessToken : "" };
235
+ }
236
+ function getGithubCopilotConfig() {
237
+ const raw = readProviderConfig("github-copilot");
238
+ return {
239
+ githubToken: typeof raw.githubToken === "string" ? raw.githubToken : "",
240
+ baseUrl: typeof raw.baseUrl === "string" ? raw.baseUrl : "",
241
+ };
267
242
  }
268
243
  function getTeamsConfig() {
269
244
  const config = loadConfig();
@@ -310,17 +285,24 @@ function getTeamsChannelConfig() {
310
285
  }
311
286
  function getBlueBubblesConfig() {
312
287
  const config = loadConfig();
313
- const { serverUrl, password, accountId } = config.bluebubbles;
288
+ const { serverUrl, password, accountId, ownHandles } = config.bluebubbles;
314
289
  if (!serverUrl.trim()) {
315
- throw new Error("bluebubbles.serverUrl is required in secrets.json to run the BlueBubbles sense.");
290
+ throw new Error("bluebubbles.serverUrl is required in this machine's agent-vault runtime config. Run `ouro connect bluebubbles --agent <agent>`.");
316
291
  }
317
292
  if (!password.trim()) {
318
- throw new Error("bluebubbles.password is required in secrets.json to run the BlueBubbles sense.");
293
+ throw new Error("bluebubbles.password is required in this machine's agent-vault runtime config. Run `ouro connect bluebubbles --agent <agent>`.");
294
+ }
295
+ const normalizedHandles = [];
296
+ for (const handle of ownHandles) {
297
+ const trimmed = handle.trim();
298
+ if (trimmed.length > 0)
299
+ normalizedHandles.push(trimmed);
319
300
  }
320
301
  return {
321
302
  serverUrl: serverUrl.trim(),
322
303
  password: password.trim(),
323
304
  accountId: accountId.trim() || "default",
305
+ ownHandles: normalizedHandles,
324
306
  };
325
307
  }
326
308
  function getBlueBubblesChannelConfig() {
@@ -332,6 +314,19 @@ function getIntegrationsConfig() {
332
314
  const config = loadConfig();
333
315
  return { ...config.integrations };
334
316
  }
317
+ function getSyncConfig() {
318
+ try {
319
+ const agentConfig = (0, identity_1.loadAgentConfig)();
320
+ return {
321
+ enabled: agentConfig.sync?.enabled ?? false,
322
+ remote: agentConfig.sync?.remote ?? "origin",
323
+ };
324
+ }
325
+ catch {
326
+ /* v8 ignore next -- defensive: loadAgentConfig failure in test/bootstrap @preserve */
327
+ return { enabled: false, remote: "origin" };
328
+ }
329
+ }
335
330
  function getOpenAIEmbeddingsApiKey() {
336
331
  return getIntegrationsConfig().openaiEmbeddingsApiKey;
337
332
  }