@ouro.bot/cli 0.1.0-alpha.62 → 0.1.0-alpha.637

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 (432) 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 +4087 -13
  13. package/dist/arc/attention-types.js +8 -0
  14. package/dist/arc/cares.js +144 -0
  15. package/dist/arc/episodes.js +118 -0
  16. package/dist/arc/evolution.js +487 -0
  17. package/dist/arc/intentions.js +134 -0
  18. package/dist/arc/json-store.js +117 -0
  19. package/dist/arc/obligations.js +270 -0
  20. package/dist/arc/packets.js +288 -0
  21. package/dist/arc/presence.js +185 -0
  22. package/dist/arc/task-lifecycle.js +57 -0
  23. package/dist/heart/active-work.js +860 -43
  24. package/dist/heart/agent-entry.js +69 -3
  25. package/dist/heart/attachments/image-normalize.js +194 -0
  26. package/dist/heart/attachments/materialize.js +97 -0
  27. package/dist/heart/attachments/originals.js +88 -0
  28. package/dist/heart/attachments/render.js +29 -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 +100 -0
  40. package/dist/heart/awaiting/await-scheduler.js +377 -0
  41. package/dist/heart/background-operations.js +281 -0
  42. package/dist/heart/bridges/manager.js +137 -17
  43. package/dist/heart/bridges/store.js +14 -2
  44. package/dist/heart/bundle-state.js +168 -0
  45. package/dist/heart/commitments.js +135 -0
  46. package/dist/heart/config-registry.js +322 -0
  47. package/dist/heart/config.js +114 -119
  48. package/dist/heart/core.js +1028 -248
  49. package/dist/heart/cross-chat-delivery.js +3 -18
  50. package/dist/heart/daemon/agent-config-check.js +419 -0
  51. package/dist/heart/daemon/agent-discovery.js +102 -3
  52. package/dist/heart/daemon/agent-service.js +522 -0
  53. package/dist/heart/daemon/agentic-repair.js +547 -0
  54. package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
  55. package/dist/heart/daemon/boot-sync-probe.js +197 -0
  56. package/dist/heart/daemon/cadence.js +70 -0
  57. package/dist/heart/daemon/cli-defaults.js +776 -0
  58. package/dist/heart/daemon/cli-desk.js +322 -0
  59. package/dist/heart/daemon/cli-exec.js +7468 -0
  60. package/dist/heart/daemon/cli-help.js +505 -0
  61. package/dist/heart/daemon/cli-parse.js +1554 -0
  62. package/dist/heart/daemon/cli-render-doctor.js +57 -0
  63. package/dist/heart/daemon/cli-render.js +763 -0
  64. package/dist/heart/daemon/cli-types.js +8 -0
  65. package/dist/heart/daemon/connect-bay.js +323 -0
  66. package/dist/heart/daemon/daemon-cli.js +29 -1700
  67. package/dist/heart/daemon/daemon-entry.js +485 -2
  68. package/dist/heart/daemon/daemon-health.js +176 -0
  69. package/dist/heart/daemon/daemon-rollup.js +57 -0
  70. package/dist/heart/daemon/daemon-runtime-sync.js +88 -13
  71. package/dist/heart/daemon/daemon-tombstone.js +236 -0
  72. package/dist/heart/daemon/daemon.js +906 -71
  73. package/dist/heart/daemon/dns-workflow.js +394 -0
  74. package/dist/heart/daemon/doctor-types.js +8 -0
  75. package/dist/heart/daemon/doctor.js +873 -0
  76. package/dist/heart/daemon/health-monitor.js +122 -1
  77. package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
  78. package/dist/heart/daemon/hooks/bundle-meta.js +115 -1
  79. package/dist/heart/daemon/http-health-probe.js +80 -0
  80. package/dist/heart/daemon/human-command-screens.js +234 -0
  81. package/dist/heart/daemon/human-readiness.js +114 -0
  82. package/dist/heart/daemon/inner-status.js +89 -0
  83. package/dist/heart/daemon/interactive-repair.js +394 -0
  84. package/dist/heart/daemon/launchd.js +37 -8
  85. package/dist/heart/daemon/log-tailer.js +79 -10
  86. package/dist/heart/daemon/logs-prune.js +110 -0
  87. package/dist/heart/daemon/mcp-canary.js +297 -0
  88. package/dist/heart/daemon/migrate-to-desk.js +848 -0
  89. package/dist/heart/daemon/os-cron-deps.js +135 -0
  90. package/dist/heart/daemon/os-cron.js +14 -12
  91. package/dist/heart/daemon/ouro-bot-entry.js +4 -2
  92. package/dist/heart/daemon/ouro-entry.js +3 -1
  93. package/dist/heart/daemon/plugin-cli.js +432 -0
  94. package/dist/heart/daemon/process-manager.js +501 -35
  95. package/dist/heart/daemon/provider-discovery.js +137 -0
  96. package/dist/heart/daemon/provider-ping-progress.js +83 -0
  97. package/dist/heart/daemon/pulse.js +475 -0
  98. package/dist/heart/daemon/readiness-repair.js +365 -0
  99. package/dist/heart/daemon/run-hooks.js +2 -0
  100. package/dist/heart/daemon/runtime-logging.js +11 -3
  101. package/dist/heart/daemon/runtime-metadata.js +2 -30
  102. package/dist/heart/daemon/safe-mode.js +161 -0
  103. package/dist/heart/daemon/sense-manager.js +493 -38
  104. package/dist/heart/daemon/session-id-resolver.js +131 -0
  105. package/dist/heart/daemon/skill-management-installer.js +22 -9
  106. package/dist/heart/daemon/socket-client.js +158 -11
  107. package/dist/heart/daemon/stale-bundle-prune.js +96 -0
  108. package/dist/heart/daemon/startup-tui.js +330 -0
  109. package/dist/heart/daemon/task-scheduler.js +117 -39
  110. package/dist/heart/daemon/terminal-ui.js +499 -0
  111. package/dist/heart/daemon/thoughts.js +229 -17
  112. package/dist/heart/daemon/up-progress.js +366 -0
  113. package/dist/heart/daemon/vault-items.js +56 -0
  114. package/dist/heart/delegation.js +1 -4
  115. package/dist/heart/habits/habit-migration.js +189 -0
  116. package/dist/heart/habits/habit-parser.js +140 -0
  117. package/dist/heart/habits/habit-runtime-state.js +100 -0
  118. package/dist/heart/habits/habit-scheduler.js +372 -0
  119. package/dist/heart/{daemon → hatch}/hatch-flow.js +32 -56
  120. package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
  121. package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
  122. package/dist/heart/{daemon → hatch}/specialist-tools.js +37 -14
  123. package/dist/heart/identity.js +168 -57
  124. package/dist/heart/kept-notes.js +357 -0
  125. package/dist/heart/kicks.js +1 -1
  126. package/dist/heart/machine-identity.js +161 -0
  127. package/dist/heart/mail-import-discovery.js +353 -0
  128. package/dist/heart/mailbox/mailbox-http-hooks.js +66 -0
  129. package/dist/heart/mailbox/mailbox-http-response.js +7 -0
  130. package/dist/heart/mailbox/mailbox-http-routes.js +246 -0
  131. package/dist/heart/mailbox/mailbox-http-static.js +103 -0
  132. package/dist/heart/mailbox/mailbox-http-transport.js +116 -0
  133. package/dist/heart/mailbox/mailbox-http.js +99 -0
  134. package/dist/heart/mailbox/mailbox-read.js +31 -0
  135. package/dist/heart/mailbox/mailbox-types.js +27 -0
  136. package/dist/heart/mailbox/mailbox-view.js +197 -0
  137. package/dist/heart/mailbox/readers/agent-machine.js +418 -0
  138. package/dist/heart/mailbox/readers/continuity-readers.js +319 -0
  139. package/dist/heart/mailbox/readers/mail.js +375 -0
  140. package/dist/heart/mailbox/readers/runtime-readers.js +756 -0
  141. package/dist/heart/mailbox/readers/sessions.js +232 -0
  142. package/dist/heart/mailbox/readers/shared.js +111 -0
  143. package/dist/heart/mcp/mcp-server.js +692 -0
  144. package/dist/heart/migrate-config.js +100 -0
  145. package/dist/heart/model-capabilities.js +19 -0
  146. package/dist/heart/orientation-frame.js +217 -0
  147. package/dist/heart/platform.js +81 -0
  148. package/dist/heart/provider-attempt.js +134 -0
  149. package/dist/heart/provider-binding-resolver.js +272 -0
  150. package/dist/heart/provider-credentials.js +425 -0
  151. package/dist/heart/provider-failover.js +301 -0
  152. package/dist/heart/provider-models.js +81 -0
  153. package/dist/heart/provider-ping.js +262 -0
  154. package/dist/heart/provider-readiness-cache.js +40 -0
  155. package/dist/heart/provider-visibility.js +188 -0
  156. package/dist/heart/providers/anthropic-token.js +131 -0
  157. package/dist/heart/providers/anthropic.js +139 -52
  158. package/dist/heart/providers/azure.js +23 -11
  159. package/dist/heart/providers/error-classification.js +127 -0
  160. package/dist/heart/providers/github-copilot.js +145 -0
  161. package/dist/heart/providers/minimax-vlm.js +189 -0
  162. package/dist/heart/providers/minimax.js +26 -8
  163. package/dist/heart/providers/openai-codex.js +55 -40
  164. package/dist/heart/runtime-capability-check.js +170 -0
  165. package/dist/heart/runtime-credentials.js +367 -0
  166. package/dist/heart/runtime-cwd.js +87 -0
  167. package/dist/heart/sense-truth.js +13 -4
  168. package/dist/heart/session-activity.js +48 -24
  169. package/dist/heart/session-events.js +1163 -0
  170. package/dist/heart/session-playback-cli-main.js +5 -0
  171. package/dist/heart/session-playback-cli.js +36 -0
  172. package/dist/heart/session-playback.js +231 -0
  173. package/dist/heart/session-stats-cli-main.js +5 -0
  174. package/dist/heart/session-stats.js +182 -0
  175. package/dist/heart/session-transcript.js +133 -0
  176. package/dist/heart/start-of-turn-packet.js +345 -0
  177. package/dist/heart/streaming.js +44 -27
  178. package/dist/heart/structured-output.js +196 -0
  179. package/dist/heart/sync-classification.js +176 -0
  180. package/dist/heart/sync.js +449 -0
  181. package/dist/heart/target-resolution.js +9 -5
  182. package/dist/heart/tempo.js +93 -0
  183. package/dist/heart/temporal-view.js +41 -0
  184. package/dist/heart/timeouts.js +101 -0
  185. package/dist/heart/tool-activity-callbacks.js +59 -0
  186. package/dist/heart/tool-description.js +143 -0
  187. package/dist/heart/tool-friction.js +55 -0
  188. package/dist/heart/tool-loop.js +200 -0
  189. package/dist/heart/turn-context.js +389 -0
  190. package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +6 -5
  191. package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
  192. package/dist/heart/versioning/ouro-path-installer.js +426 -0
  193. package/dist/heart/versioning/ouro-version-manager.js +295 -0
  194. package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
  195. package/dist/heart/{daemon → versioning}/update-checker.js +6 -1
  196. package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
  197. package/dist/mailbox-ui/assets/index-9-AxCxuB.js +61 -0
  198. package/dist/mailbox-ui/assets/index-CWzt267f.css +1 -0
  199. package/dist/mailbox-ui/index.html +15 -0
  200. package/dist/mailroom/attention.js +167 -0
  201. package/dist/mailroom/autonomy.js +209 -0
  202. package/dist/mailroom/blob-store.js +715 -0
  203. package/dist/mailroom/body-cache.js +61 -0
  204. package/dist/mailroom/core.js +788 -0
  205. package/dist/mailroom/entry.js +160 -0
  206. package/dist/mailroom/file-store.js +568 -0
  207. package/dist/mailroom/mbox-import.js +393 -0
  208. package/dist/mailroom/migration.js +164 -0
  209. package/dist/mailroom/outbound.js +380 -0
  210. package/dist/mailroom/policy.js +263 -0
  211. package/dist/mailroom/reader.js +233 -0
  212. package/dist/mailroom/search-cache.js +334 -0
  213. package/dist/mailroom/search-relevance.js +319 -0
  214. package/dist/mailroom/smtp-ingress.js +176 -0
  215. package/dist/mailroom/source-state.js +176 -0
  216. package/dist/mailroom/thread.js +109 -0
  217. package/dist/mailroom/travel-extract.js +89 -0
  218. package/dist/mind/bundle-manifest.js +14 -1
  219. package/dist/mind/context.js +251 -101
  220. package/dist/mind/desk-section.js +310 -0
  221. package/dist/mind/diary-integrity.js +60 -0
  222. package/dist/mind/{memory.js → diary.js} +68 -76
  223. package/dist/mind/embedding-provider.js +60 -0
  224. package/dist/mind/file-state.js +179 -0
  225. package/dist/mind/friends/channel.js +39 -0
  226. package/dist/mind/friends/resolver.js +54 -2
  227. package/dist/mind/friends/store-file.js +48 -4
  228. package/dist/mind/friends/types.js +2 -2
  229. package/dist/mind/journal-index.js +162 -0
  230. package/dist/mind/note-search.js +268 -0
  231. package/dist/mind/obligation-steering.js +221 -0
  232. package/dist/mind/pending.js +6 -1
  233. package/dist/mind/prompt-refresh.js +3 -2
  234. package/dist/mind/prompt.js +1075 -146
  235. package/dist/mind/provenance-trust.js +26 -0
  236. package/dist/mind/scrutiny.js +173 -0
  237. package/dist/nerves/cli-logging.js +7 -1
  238. package/dist/nerves/coverage/audit-rules.js +15 -6
  239. package/dist/nerves/coverage/audit.js +28 -2
  240. package/dist/nerves/coverage/cli.js +1 -1
  241. package/dist/nerves/coverage/contract.js +5 -5
  242. package/dist/nerves/coverage/file-completeness.js +139 -5
  243. package/dist/nerves/event-buffer.js +111 -0
  244. package/dist/nerves/index.js +224 -4
  245. package/dist/nerves/observation.js +20 -0
  246. package/dist/nerves/redact.js +79 -0
  247. package/dist/nerves/review/cli-main.js +5 -0
  248. package/dist/nerves/review/cli.js +156 -0
  249. package/dist/nerves/review/core.js +152 -0
  250. package/dist/nerves/runtime.js +5 -1
  251. package/dist/repertoire/ado-client.js +15 -56
  252. package/dist/repertoire/ado-semantic.js +16 -10
  253. package/dist/repertoire/api-client.js +97 -0
  254. package/dist/repertoire/bitwarden-store.js +1040 -0
  255. package/dist/repertoire/bundle-templates.js +72 -0
  256. package/dist/repertoire/bw-installer.js +180 -0
  257. package/dist/repertoire/coding/codex-jsonl.js +64 -0
  258. package/dist/repertoire/coding/context-pack.js +331 -0
  259. package/dist/repertoire/coding/feedback.js +197 -30
  260. package/dist/repertoire/coding/manager.js +166 -10
  261. package/dist/repertoire/coding/spawner.js +55 -9
  262. package/dist/repertoire/coding/tools.js +219 -7
  263. package/dist/repertoire/commerce-errors.js +109 -0
  264. package/dist/repertoire/commerce-self-test.js +156 -0
  265. package/dist/repertoire/credential-access.js +178 -0
  266. package/dist/repertoire/desk/classifier.js +362 -0
  267. package/dist/repertoire/duffel-client.js +185 -0
  268. package/dist/repertoire/github-client.js +14 -55
  269. package/dist/repertoire/graph-client.js +11 -52
  270. package/dist/repertoire/guardrails.js +385 -0
  271. package/dist/repertoire/mcp-client.js +295 -0
  272. package/dist/repertoire/mcp-manager.js +403 -0
  273. package/dist/repertoire/mcp-tools.js +83 -0
  274. package/dist/repertoire/plugin-mcp.js +175 -0
  275. package/dist/repertoire/plugins.js +253 -0
  276. package/dist/repertoire/shell-sessions.js +133 -0
  277. package/dist/repertoire/skills.js +48 -4
  278. package/dist/repertoire/stripe-client.js +131 -0
  279. package/dist/repertoire/tool-results.js +29 -0
  280. package/dist/repertoire/tools-attachments.js +317 -0
  281. package/dist/repertoire/tools-awaiting.js +372 -0
  282. package/dist/repertoire/tools-base.js +59 -1082
  283. package/dist/repertoire/tools-bluebubbles.js +2 -0
  284. package/dist/repertoire/tools-bridge.js +144 -0
  285. package/dist/repertoire/tools-bundle.js +993 -0
  286. package/dist/repertoire/tools-config.js +186 -0
  287. package/dist/repertoire/tools-continuity.js +252 -0
  288. package/dist/repertoire/tools-credential.js +383 -0
  289. package/dist/repertoire/tools-evolution.js +527 -0
  290. package/dist/repertoire/tools-files.js +344 -0
  291. package/dist/repertoire/tools-flight.js +227 -0
  292. package/dist/repertoire/tools-flow.js +119 -0
  293. package/dist/repertoire/tools-github.js +3 -8
  294. package/dist/repertoire/tools-mail.js +1975 -0
  295. package/dist/repertoire/tools-notes.js +438 -0
  296. package/dist/repertoire/tools-obligations.js +143 -0
  297. package/dist/repertoire/tools-orientation.js +31 -0
  298. package/dist/repertoire/tools-record.js +464 -0
  299. package/dist/repertoire/tools-runtime.js +150 -0
  300. package/dist/repertoire/tools-session.js +766 -0
  301. package/dist/repertoire/tools-shell.js +120 -0
  302. package/dist/repertoire/tools-stripe.js +182 -0
  303. package/dist/repertoire/tools-surface.js +344 -0
  304. package/dist/repertoire/tools-teams.js +12 -39
  305. package/dist/repertoire/tools-travel.js +125 -0
  306. package/dist/repertoire/tools-trip.js +982 -0
  307. package/dist/repertoire/tools-user-profile.js +146 -0
  308. package/dist/repertoire/tools-vault.js +40 -0
  309. package/dist/repertoire/tools-voice.js +145 -0
  310. package/dist/repertoire/tools.js +215 -103
  311. package/dist/repertoire/travel-api-client.js +360 -0
  312. package/dist/repertoire/user-profile.js +131 -0
  313. package/dist/repertoire/vault-setup.js +246 -0
  314. package/dist/repertoire/vault-unlock.js +594 -0
  315. package/dist/scripts/claude-code-hook.js +41 -0
  316. package/dist/scripts/claude-code-stop-hook.js +47 -0
  317. package/dist/senses/attention-queue.js +186 -0
  318. package/dist/senses/await-turn-message.js +58 -0
  319. package/dist/senses/bluebubbles/active-turns.js +216 -0
  320. package/dist/senses/bluebubbles/attachment-cache.js +53 -0
  321. package/dist/senses/bluebubbles/attachment-download.js +137 -0
  322. package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +219 -18
  323. package/dist/senses/bluebubbles/entry.js +77 -0
  324. package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
  325. package/dist/senses/bluebubbles/index.js +2737 -0
  326. package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -71
  327. package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
  328. package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
  329. package/dist/senses/bluebubbles/processed-log.js +133 -0
  330. package/dist/senses/bluebubbles/replay.js +137 -0
  331. package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +30 -2
  332. package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
  333. package/dist/senses/bluebubbles-meta-guard.js +40 -0
  334. package/dist/senses/cli/bracketed-paste.js +82 -0
  335. package/dist/senses/cli/image-paste.js +287 -0
  336. package/dist/senses/cli/image-ref-navigation.js +75 -0
  337. package/dist/senses/cli/ink-app.js +156 -0
  338. package/dist/senses/cli/inline-diff.js +64 -0
  339. package/dist/senses/cli/input-keys.js +174 -0
  340. package/dist/senses/cli/kill-ring.js +86 -0
  341. package/dist/senses/cli/message-list.js +51 -0
  342. package/dist/senses/cli/ouro-tui.js +607 -0
  343. package/dist/senses/cli/spinner-imperative.js +135 -0
  344. package/dist/senses/cli/spinner.js +101 -0
  345. package/dist/senses/cli/status-line.js +60 -0
  346. package/dist/senses/cli/streaming-markdown.js +526 -0
  347. package/dist/senses/cli/tool-display.js +85 -0
  348. package/dist/senses/cli/tool-render.js +85 -0
  349. package/dist/senses/cli/tui-store.js +240 -0
  350. package/dist/senses/cli/virtual-list.js +35 -0
  351. package/dist/senses/cli-entry.js +60 -8
  352. package/dist/senses/cli-layout.js +100 -0
  353. package/dist/senses/cli.js +517 -204
  354. package/dist/senses/commands.js +66 -3
  355. package/dist/senses/habit-turn-message.js +108 -0
  356. package/dist/senses/inner-dialog-worker.js +254 -22
  357. package/dist/senses/inner-dialog.js +505 -40
  358. package/dist/senses/mail-entry.js +66 -0
  359. package/dist/senses/mail.js +379 -0
  360. package/dist/senses/pipeline.js +666 -181
  361. package/dist/senses/proactive-content-guard.js +51 -0
  362. package/dist/senses/shared-turn.js +393 -0
  363. package/dist/senses/surface-tool.js +108 -0
  364. package/dist/senses/teams-entry.js +60 -8
  365. package/dist/senses/teams.js +388 -98
  366. package/dist/senses/trust-gate.js +100 -5
  367. package/dist/senses/voice/audio-playback.js +237 -0
  368. package/dist/senses/voice/audio-routing.js +119 -0
  369. package/dist/senses/voice/elevenlabs.js +202 -0
  370. package/dist/senses/voice/floor-control.js +431 -0
  371. package/dist/senses/voice/floor-controller.js +115 -0
  372. package/dist/senses/voice/golden-path.js +116 -0
  373. package/dist/senses/voice/index.js +29 -0
  374. package/dist/senses/voice/meeting.js +113 -0
  375. package/dist/senses/voice/outbound.js +190 -0
  376. package/dist/senses/voice/phone.js +33 -0
  377. package/dist/senses/voice/playback.js +139 -0
  378. package/dist/senses/voice/realtime-eval.js +496 -0
  379. package/dist/senses/voice/realtime-trace.js +531 -0
  380. package/dist/senses/voice/transcript.js +70 -0
  381. package/dist/senses/voice/turn.js +191 -0
  382. package/dist/senses/voice/twilio-phone-runtime.js +807 -0
  383. package/dist/senses/voice/twilio-phone.js +5079 -0
  384. package/dist/senses/voice/types.js +2 -0
  385. package/dist/senses/voice/whisper.js +161 -0
  386. package/dist/senses/voice-entry.js +81 -0
  387. package/dist/senses/voice-realtime-eval-command.js +99 -0
  388. package/dist/senses/voice-realtime-eval-entry.js +21 -0
  389. package/dist/senses/voice-twilio-entry.js +87 -0
  390. package/dist/trips/core.js +138 -0
  391. package/dist/trips/store.js +265 -0
  392. package/dist/util/frontmatter.js +53 -0
  393. package/package.json +48 -8
  394. package/skills/agent-commerce.md +106 -0
  395. package/skills/browser-navigation.md +117 -0
  396. package/skills/commerce-setup-guide.md +116 -0
  397. package/skills/commerce-setup.md +84 -0
  398. package/skills/configure-dev-tools.md +99 -0
  399. package/skills/travel-planning.md +138 -0
  400. package/dist/heart/daemon/auth-flow.js +0 -351
  401. package/dist/heart/daemon/ouro-path-installer.js +0 -178
  402. package/dist/heart/safe-workspace.js +0 -228
  403. package/dist/heart/session-recall.js +0 -116
  404. package/dist/mind/associative-recall.js +0 -209
  405. package/dist/repertoire/tasks/board.js +0 -134
  406. package/dist/repertoire/tasks/index.js +0 -224
  407. package/dist/repertoire/tasks/lifecycle.js +0 -80
  408. package/dist/repertoire/tasks/middleware.js +0 -65
  409. package/dist/repertoire/tasks/parser.js +0 -173
  410. package/dist/repertoire/tasks/scanner.js +0 -132
  411. package/dist/repertoire/tasks/transitions.js +0 -144
  412. package/dist/senses/bluebubbles-entry.js +0 -13
  413. package/dist/senses/bluebubbles.js +0 -1177
  414. package/dist/senses/debug-activity.js +0 -148
  415. package/subagents/README.md +0 -7
  416. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
  417. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
  418. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
  419. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
  420. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
  421. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
  422. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
  423. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
  424. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
  425. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
  426. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
  427. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
  428. /package/dist/{repertoire/tasks/types.js → heart/attachments/sources/adapter.js} +0 -0
  429. /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
  430. /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
  431. /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
  432. /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
@@ -37,15 +37,18 @@ var __importStar = (this && this.__importStar) || (function () {
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.formatSurfacedValue = formatSurfacedValue;
39
39
  exports.deriveInnerDialogStatus = deriveInnerDialogStatus;
40
+ exports.deriveInnerJob = deriveInnerJob;
40
41
  exports.formatInnerDialogStatus = formatInnerDialogStatus;
41
42
  exports.extractThoughtResponseFromMessages = extractThoughtResponseFromMessages;
42
43
  exports.parseInnerDialogSession = parseInnerDialogSession;
43
44
  exports.formatThoughtTurns = formatThoughtTurns;
44
45
  exports.getInnerDialogSessionPath = getInnerDialogSessionPath;
45
46
  exports.readInnerDialogStatus = readInnerDialogStatus;
47
+ exports.readInnerDialogRawData = readInnerDialogRawData;
46
48
  exports.followThoughts = followThoughts;
47
49
  const fs = __importStar(require("fs"));
48
50
  const path = __importStar(require("path"));
51
+ const session_events_1 = require("../session-events");
49
52
  const runtime_1 = require("../../nerves/runtime");
50
53
  function contentToText(content) {
51
54
  if (typeof content === "string")
@@ -91,7 +94,7 @@ function extractToolNames(messages) {
91
94
  if (msg.role === "assistant" && Array.isArray(msg.tool_calls)) {
92
95
  for (const tc of msg.tool_calls) {
93
96
  const toolFunction = extractToolFunction(tc);
94
- if (toolFunction?.name && toolFunction.name !== "final_answer")
97
+ if (toolFunction?.name && toolFunction.name !== "settle")
95
98
  names.push(toolFunction.name);
96
99
  }
97
100
  }
@@ -149,6 +152,21 @@ function formatSurfacedValue(text, maxLength = 120) {
149
152
  return `"${firstLine}"`;
150
153
  return `"${firstLine.slice(0, maxLength - 3)}..."`;
151
154
  }
155
+ function extractEnrichedFields(pendingMessages) {
156
+ const delegated = pendingMessages.find((msg) => msg.delegatedFrom);
157
+ if (!delegated?.delegatedFrom)
158
+ return {};
159
+ const snippet = delegated.content.length > 80 ? delegated.content.slice(0, 77) + "..." : delegated.content;
160
+ return {
161
+ origin: {
162
+ friendId: delegated.delegatedFrom.friendId,
163
+ channel: delegated.delegatedFrom.channel,
164
+ key: delegated.delegatedFrom.key,
165
+ },
166
+ contentSnippet: snippet,
167
+ ...(delegated.obligationStatus === "pending" ? { obligationPending: true } : {}),
168
+ };
169
+ }
152
170
  function deriveInnerDialogStatus(pendingMessages, turns, runtimeState) {
153
171
  if (runtimeState?.status === "running") {
154
172
  if (pendingMessages.length > 0) {
@@ -157,6 +175,7 @@ function deriveInnerDialogStatus(pendingMessages, turns, runtimeState) {
157
175
  wake: "queued behind active turn",
158
176
  processing: "pending",
159
177
  surfaced: "nothing yet",
178
+ ...extractEnrichedFields(pendingMessages),
160
179
  };
161
180
  }
162
181
  return {
@@ -172,6 +191,7 @@ function deriveInnerDialogStatus(pendingMessages, turns, runtimeState) {
172
191
  wake: "awaiting inner session",
173
192
  processing: "pending",
174
193
  surfaced: "nothing yet",
194
+ ...extractEnrichedFields(pendingMessages),
175
195
  };
176
196
  }
177
197
  const latestProcessedPendingTurn = [...turns]
@@ -192,23 +212,125 @@ function deriveInnerDialogStatus(pendingMessages, turns, runtimeState) {
192
212
  surfaced: formatSurfacedValue(latestProcessedPendingTurn.response),
193
213
  };
194
214
  }
215
+ function deriveInnerJob(pendingMessages, turns, runtimeState) {
216
+ const isRunning = runtimeState?.status === "running";
217
+ const delegated = pendingMessages.find((msg) => msg.delegatedFrom);
218
+ const enriched = extractEnrichedFields(pendingMessages);
219
+ const pendingMode = delegated && "mode" in delegated && delegated.mode ? delegated.mode : "reflect";
220
+ const origin = enriched.origin ?? null;
221
+ const content = delegated?.content ?? null;
222
+ const obligationStatus = delegated?.obligationStatus ?? null;
223
+ const queuedAt = delegated?.timestamp ?? null;
224
+ if (isRunning) {
225
+ (0, runtime_1.emitNervesEvent)({
226
+ component: "engine",
227
+ event: "engine.inner_job_derive",
228
+ message: "derived inner job state",
229
+ meta: { status: "running", mode: pendingMode, hasOrigin: origin !== null, hasObligation: obligationStatus !== null },
230
+ });
231
+ return {
232
+ status: "running",
233
+ content,
234
+ origin,
235
+ mode: pendingMode,
236
+ obligationStatus,
237
+ surfacedResult: null,
238
+ queuedAt,
239
+ startedAt: runtimeState?.startedAt ?? null,
240
+ surfacedAt: null,
241
+ };
242
+ }
243
+ if (pendingMessages.length > 0) {
244
+ (0, runtime_1.emitNervesEvent)({
245
+ component: "engine",
246
+ event: "engine.inner_job_derive",
247
+ message: "derived inner job state",
248
+ meta: { status: "queued", mode: pendingMode, hasOrigin: origin !== null, hasObligation: obligationStatus !== null },
249
+ });
250
+ return {
251
+ status: "queued",
252
+ content,
253
+ origin,
254
+ mode: pendingMode,
255
+ obligationStatus,
256
+ surfacedResult: null,
257
+ queuedAt,
258
+ startedAt: null,
259
+ surfacedAt: null,
260
+ };
261
+ }
262
+ // No pending, not running -- check for surfaced result
263
+ const latestProcessedPendingTurn = [...turns]
264
+ .reverse()
265
+ .find((turn) => extractPendingPromptMessages(turn.prompt).length > 0);
266
+ if (latestProcessedPendingTurn) {
267
+ const surfacedResult = extractThoughtResponseFromMessages([
268
+ { role: "assistant", content: latestProcessedPendingTurn.response },
269
+ ]);
270
+ (0, runtime_1.emitNervesEvent)({
271
+ component: "engine",
272
+ event: "engine.inner_job_derive",
273
+ message: "derived inner job state",
274
+ meta: { status: "surfaced", mode: "reflect", hasOrigin: false, hasObligation: false },
275
+ });
276
+ return {
277
+ status: "surfaced",
278
+ content: null,
279
+ origin: null,
280
+ mode: "reflect",
281
+ obligationStatus: null,
282
+ /* v8 ignore next -- defensive: surfacedResult fallback @preserve */
283
+ surfacedResult: surfacedResult || null,
284
+ queuedAt: null,
285
+ startedAt: null,
286
+ surfacedAt: null,
287
+ };
288
+ }
289
+ (0, runtime_1.emitNervesEvent)({
290
+ component: "engine",
291
+ event: "engine.inner_job_derive",
292
+ message: "derived inner job state",
293
+ meta: { status: "idle", mode: "reflect", hasOrigin: false, hasObligation: false },
294
+ });
295
+ return {
296
+ status: "idle",
297
+ content: null,
298
+ origin: null,
299
+ mode: "reflect",
300
+ obligationStatus: null,
301
+ surfacedResult: null,
302
+ queuedAt: null,
303
+ startedAt: null,
304
+ surfacedAt: null,
305
+ };
306
+ }
195
307
  function formatInnerDialogStatus(status) {
196
- return [
308
+ const lines = [
197
309
  `queue: ${status.queue}`,
198
310
  `wake: ${status.wake}`,
199
311
  `processing: ${status.processing}`,
200
312
  `surfaced: ${status.surfaced}`,
201
- ].join("\n");
313
+ ];
314
+ if (status.origin) {
315
+ lines.push(`origin: ${status.origin.friendId}/${status.origin.channel}/${status.origin.key}`);
316
+ }
317
+ if (status.contentSnippet) {
318
+ lines.push(`asked: ${status.contentSnippet}`);
319
+ }
320
+ if (status.obligationPending) {
321
+ lines.push("obligation: pending");
322
+ }
323
+ return lines.join("\n");
202
324
  }
203
- /** Extract text from a final_answer tool call's arguments. */
204
- function extractFinalAnswer(messages) {
325
+ /** Extract text from a settle tool call's arguments. */
326
+ function extractSettleAnswer(messages) {
205
327
  for (let k = messages.length - 1; k >= 0; k--) {
206
328
  const msg = messages[k];
207
329
  if (msg.role !== "assistant" || !Array.isArray(msg.tool_calls))
208
330
  continue;
209
331
  for (const tc of msg.tool_calls) {
210
332
  const toolFunction = extractToolFunction(tc);
211
- if (toolFunction?.name !== "final_answer")
333
+ if (toolFunction?.name !== "settle")
212
334
  continue;
213
335
  try {
214
336
  const parsed = JSON.parse(toolFunction.arguments ?? "{}");
@@ -222,12 +344,79 @@ function extractFinalAnswer(messages) {
222
344
  }
223
345
  return "";
224
346
  }
347
+ function parseToolArguments(argumentsValue) {
348
+ if (!argumentsValue)
349
+ return {};
350
+ try {
351
+ const parsed = JSON.parse(argumentsValue);
352
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed)
353
+ ? parsed
354
+ : {};
355
+ }
356
+ catch {
357
+ return {};
358
+ }
359
+ }
360
+ function toolArgumentText(args, keys) {
361
+ for (const key of keys) {
362
+ const value = args[key];
363
+ if (typeof value === "string" && value.trim()) {
364
+ return value.trim();
365
+ }
366
+ }
367
+ return "";
368
+ }
369
+ function truncateToolSummary(summary) {
370
+ if (summary.length <= 220)
371
+ return summary;
372
+ return `${summary.slice(0, 217)}...`;
373
+ }
374
+ function summarizeToolAction(name, argumentsValue) {
375
+ if (!name)
376
+ return null;
377
+ const args = parseToolArguments(argumentsValue);
378
+ if (name === "surface") {
379
+ const message = toolArgumentText(args, ["message", "text", "content"]);
380
+ return message ? `surfaced: ${message}` : null;
381
+ }
382
+ if (name === "ponder") {
383
+ const thought = toolArgumentText(args, ["summary", "question", "topic", "prompt"]);
384
+ return thought ? `pondered: ${thought}` : null;
385
+ }
386
+ if (name === "diary_write") {
387
+ const note = toolArgumentText(args, ["text", "content", "note", "entry"]);
388
+ return note ? `diary: ${note}` : null;
389
+ }
390
+ if (name === "let_go") {
391
+ const reason = toolArgumentText(args, ["reason", "note", "status"]);
392
+ return reason ? `let go: ${reason}` : null;
393
+ }
394
+ if (name === "rest") {
395
+ const note = toolArgumentText(args, ["note", "status"]);
396
+ return note ? `rested: ${note}` : null;
397
+ }
398
+ return null;
399
+ }
400
+ function extractToolActionSummary(messages) {
401
+ for (let k = messages.length - 1; k >= 0; k--) {
402
+ const msg = messages[k];
403
+ if (msg.role !== "assistant" || !Array.isArray(msg.tool_calls))
404
+ continue;
405
+ for (let i = msg.tool_calls.length - 1; i >= 0; i--) {
406
+ const toolFunction = extractToolFunction(msg.tool_calls[i]);
407
+ const summary = summarizeToolAction(toolFunction?.name, toolFunction?.arguments);
408
+ if (summary)
409
+ return truncateToolSummary(summary);
410
+ }
411
+ }
412
+ return "";
413
+ }
225
414
  function extractThoughtResponseFromMessages(messages) {
226
415
  const assistantMsgs = messages.filter((message) => message.role === "assistant");
227
416
  const lastAssistant = assistantMsgs.reverse().find((message) => contentToText(message.content).trim().length > 0);
228
417
  return lastAssistant
229
418
  ? contentToText(lastAssistant.content).trim()
230
- : extractFinalAnswer(messages);
419
+ : extractSettleAnswer(messages) || extractToolActionSummary(messages);
231
420
  }
232
421
  function parseInnerDialogSession(sessionPath) {
233
422
  (0, runtime_1.emitNervesEvent)({
@@ -243,21 +432,34 @@ function parseInnerDialogSession(sessionPath) {
243
432
  catch {
244
433
  return [];
245
434
  }
246
- let data;
435
+ let parsedRaw;
247
436
  try {
248
- data = JSON.parse(raw);
437
+ parsedRaw = JSON.parse(raw);
249
438
  }
250
439
  catch {
251
440
  return [];
252
441
  }
253
- if (data.version !== 1 || !Array.isArray(data.messages))
442
+ const legacyRecord = parsedRaw && typeof parsedRaw === "object"
443
+ ? parsedRaw
444
+ : null;
445
+ const messages = legacyRecord?.version === 1 && Array.isArray(legacyRecord.messages)
446
+ ? legacyRecord.messages
447
+ : (() => {
448
+ const envelope = (0, session_events_1.parseSessionEnvelope)(parsedRaw, {
449
+ recordedAt: new Date().toISOString(),
450
+ });
451
+ if (!envelope)
452
+ return null;
453
+ return (0, session_events_1.projectProviderMessages)(envelope);
454
+ })();
455
+ if (!messages)
254
456
  return [];
457
+ const normalizedMessages = messages;
255
458
  const turns = [];
256
- const messages = data.messages;
257
459
  // Walk messages, pairing user → (tool calls) → assistant sequences
258
460
  let i = 0;
259
- while (i < messages.length) {
260
- const msg = messages[i];
461
+ while (i < normalizedMessages.length) {
462
+ const msg = normalizedMessages[i];
261
463
  if (msg.role === "system") {
262
464
  i++;
263
465
  continue;
@@ -271,12 +473,12 @@ function parseInnerDialogSession(sessionPath) {
271
473
  // Collect all messages until the next user message (or end)
272
474
  const turnMessages = [];
273
475
  let j = i + 1;
274
- while (j < messages.length && messages[j].role !== "user") {
275
- turnMessages.push(messages[j]);
476
+ while (j < normalizedMessages.length && normalizedMessages[j].role !== "user") {
477
+ turnMessages.push(normalizedMessages[j]);
276
478
  j++;
277
479
  }
278
480
  // Find the last assistant text response in this turn.
279
- // With tool_choice="required", the response may be inside a final_answer tool call.
481
+ // With tool_choice="required", the response may be inside a settle tool call.
280
482
  const response = extractThoughtResponseFromMessages(turnMessages);
281
483
  const tools = extractToolNames(turnMessages);
282
484
  turns.push({
@@ -347,6 +549,13 @@ function readInnerDialogStatus(sessionPath, pendingDir, runtimePath = getInnerDi
347
549
  const runtimeState = readInnerDialogRuntimeState(runtimePath);
348
550
  return deriveInnerDialogStatus(pendingMessages, turns, runtimeState);
349
551
  }
552
+ function readInnerDialogRawData(sessionPath, pendingDir) {
553
+ const runtimePath = getInnerDialogRuntimeStatePath(sessionPath);
554
+ const pendingMessages = readPendingMessagesForStatus(pendingDir);
555
+ const turns = parseInnerDialogSession(sessionPath);
556
+ const runtimeState = readInnerDialogRuntimeState(runtimePath);
557
+ return { pendingMessages, turns, runtimeState };
558
+ }
350
559
  /**
351
560
  * Watch a session file and emit new turns as they appear.
352
561
  * Returns a cleanup function that stops the watcher.
@@ -369,9 +578,12 @@ function followThoughts(sessionPath, onNewTurns, pollIntervalMs = 1000) {
369
578
  });
370
579
  return () => {
371
580
  fs.unwatchFile(sessionPath);
581
+ // Must be named `_end` (not `_stop`) to satisfy the nerves audit's
582
+ // start/end pairing rule — see src/nerves/coverage/audit-rules.ts which
583
+ // pairs `<prefix>_start` with `<prefix>_end` or `<prefix>_error`.
372
584
  (0, runtime_1.emitNervesEvent)({
373
585
  component: "daemon",
374
- event: "daemon.thoughts_follow_stop",
586
+ event: "daemon.thoughts_follow_end",
375
587
  message: "stopped following inner dialog session",
376
588
  meta: { sessionPath, totalTurns: displayedCount },
377
589
  });