@ouro.bot/cli 0.1.0-alpha.68 → 0.1.0-alpha.681

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 (477) hide show
  1. package/README.md +133 -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 +4341 -13
  13. package/dist/a2a/card.js +57 -0
  14. package/dist/a2a/client.js +180 -0
  15. package/dist/a2a/config.js +50 -0
  16. package/dist/a2a/delegation-stores.js +56 -0
  17. package/dist/a2a/did-resolution.js +93 -0
  18. package/dist/a2a/identity.js +170 -0
  19. package/dist/a2a/inbound-share.js +107 -0
  20. package/dist/a2a/mission-result-wire.js +196 -0
  21. package/dist/a2a/onboarding.js +115 -0
  22. package/dist/a2a/pin-store.js +132 -0
  23. package/dist/a2a/seen-ledger.js +120 -0
  24. package/dist/a2a/server.js +604 -0
  25. package/dist/a2a/task-store.js +69 -0
  26. package/dist/a2a/transport.js +45 -0
  27. package/dist/a2a/types.js +3 -0
  28. package/dist/arc/attention-types.js +8 -0
  29. package/dist/arc/cares.js +144 -0
  30. package/dist/arc/episodes.js +118 -0
  31. package/dist/arc/evolution.js +490 -0
  32. package/dist/arc/flight-recorder.js +810 -0
  33. package/dist/arc/intentions.js +134 -0
  34. package/dist/arc/json-store.js +117 -0
  35. package/dist/arc/obligations.js +326 -0
  36. package/dist/arc/packets.js +288 -0
  37. package/dist/arc/presence.js +185 -0
  38. package/dist/arc/task-lifecycle.js +57 -0
  39. package/dist/commerce/store.js +755 -0
  40. package/dist/commerce/types.js +3 -0
  41. package/dist/heart/active-work.js +860 -43
  42. package/dist/heart/agent-entry.js +69 -3
  43. package/dist/heart/attachments/image-normalize.js +194 -0
  44. package/dist/heart/attachments/materialize.js +97 -0
  45. package/dist/heart/attachments/originals.js +88 -0
  46. package/dist/heart/attachments/render.js +29 -0
  47. package/dist/heart/attachments/sources/bluebubbles.js +156 -0
  48. package/dist/heart/attachments/sources/cli-local-file.js +78 -0
  49. package/dist/heart/attachments/sources/index.js +16 -0
  50. package/dist/heart/attachments/store.js +103 -0
  51. package/dist/heart/attachments/types.js +93 -0
  52. package/dist/heart/auth/auth-flow.js +479 -0
  53. package/dist/heart/awaiting/await-alert.js +146 -0
  54. package/dist/heart/awaiting/await-expiry.js +108 -0
  55. package/dist/heart/awaiting/await-loader.js +91 -0
  56. package/dist/heart/awaiting/await-parser.js +141 -0
  57. package/dist/heart/awaiting/await-runtime-state.js +100 -0
  58. package/dist/heart/awaiting/await-scheduler.js +378 -0
  59. package/dist/heart/background-operations.js +281 -0
  60. package/dist/heart/bridges/manager.js +137 -17
  61. package/dist/heart/bridges/store.js +14 -2
  62. package/dist/heart/bundle-state.js +168 -0
  63. package/dist/heart/commitments.js +135 -0
  64. package/dist/heart/config-registry.js +331 -0
  65. package/dist/heart/config.js +118 -119
  66. package/dist/heart/context-loss-gauntlet.js +354 -0
  67. package/dist/heart/context-loss-sentinel.js +913 -0
  68. package/dist/heart/core.js +1297 -269
  69. package/dist/heart/cross-chat-delivery.js +8 -22
  70. package/dist/heart/daemon/agent-config-check.js +451 -0
  71. package/dist/heart/daemon/agent-discovery.js +152 -3
  72. package/dist/heart/daemon/agent-service.js +523 -0
  73. package/dist/heart/daemon/agentic-repair.js +547 -0
  74. package/dist/heart/daemon/await-private-wake.js +59 -0
  75. package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
  76. package/dist/heart/daemon/boot-sync-probe.js +197 -0
  77. package/dist/heart/daemon/cadence.js +70 -0
  78. package/dist/heart/daemon/cli-defaults.js +780 -0
  79. package/dist/heart/daemon/cli-desk.js +322 -0
  80. package/dist/heart/daemon/cli-exec.js +8100 -0
  81. package/dist/heart/daemon/cli-help.js +601 -0
  82. package/dist/heart/daemon/cli-parse.js +1995 -0
  83. package/dist/heart/daemon/cli-render-doctor.js +57 -0
  84. package/dist/heart/daemon/cli-render.js +764 -0
  85. package/dist/heart/daemon/cli-types.js +8 -0
  86. package/dist/heart/daemon/connect-bay.js +323 -0
  87. package/dist/heart/daemon/daemon-cli.js +29 -1750
  88. package/dist/heart/daemon/daemon-entry.js +643 -6
  89. package/dist/heart/daemon/daemon-health.js +176 -0
  90. package/dist/heart/daemon/daemon-rollup.js +57 -0
  91. package/dist/heart/daemon/daemon-runtime-sync.js +88 -13
  92. package/dist/heart/daemon/daemon-tombstone.js +236 -0
  93. package/dist/heart/daemon/daemon.js +1212 -81
  94. package/dist/heart/daemon/dns-workflow.js +394 -0
  95. package/dist/heart/daemon/doctor-types.js +8 -0
  96. package/dist/heart/daemon/doctor.js +873 -0
  97. package/dist/heart/daemon/habit-private-wake.js +56 -0
  98. package/dist/heart/daemon/health-monitor.js +131 -3
  99. package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
  100. package/dist/heart/daemon/hooks/bundle-meta.js +135 -1
  101. package/dist/heart/daemon/http-health-probe.js +80 -0
  102. package/dist/heart/daemon/human-command-screens.js +234 -0
  103. package/dist/heart/daemon/human-readiness.js +114 -0
  104. package/dist/heart/daemon/inner-status.js +78 -0
  105. package/dist/heart/daemon/interactive-repair.js +394 -0
  106. package/dist/heart/daemon/launchd.js +37 -8
  107. package/dist/heart/daemon/log-tailer.js +79 -10
  108. package/dist/heart/daemon/logs-prune.js +110 -0
  109. package/dist/heart/daemon/mcp-canary.js +297 -0
  110. package/dist/heart/daemon/message-router.js +45 -5
  111. package/dist/heart/daemon/migrate-to-desk.js +848 -0
  112. package/dist/heart/daemon/os-cron-deps.js +135 -0
  113. package/dist/heart/daemon/os-cron.js +14 -12
  114. package/dist/heart/daemon/ouro-bot-entry.js +4 -2
  115. package/dist/heart/daemon/ouro-entry.js +3 -1
  116. package/dist/heart/daemon/plugin-cli.js +432 -0
  117. package/dist/heart/daemon/process-manager.js +519 -40
  118. package/dist/heart/daemon/provider-discovery.js +137 -0
  119. package/dist/heart/daemon/provider-ping-progress.js +83 -0
  120. package/dist/heart/daemon/pulse.js +511 -0
  121. package/dist/heart/daemon/readiness-repair.js +365 -0
  122. package/dist/heart/daemon/run-hooks.js +2 -0
  123. package/dist/heart/daemon/runtime-logging.js +41 -14
  124. package/dist/heart/daemon/runtime-metadata.js +2 -30
  125. package/dist/heart/daemon/safe-mode.js +161 -0
  126. package/dist/heart/daemon/sense-manager.js +583 -43
  127. package/dist/heart/daemon/session-id-resolver.js +131 -0
  128. package/dist/heart/daemon/skill-management-installer.js +1 -1
  129. package/dist/heart/daemon/socket-client.js +171 -12
  130. package/dist/heart/daemon/stale-bundle-prune.js +96 -0
  131. package/dist/heart/daemon/startup-tui.js +338 -0
  132. package/dist/heart/daemon/task-scheduler.js +117 -39
  133. package/dist/heart/daemon/terminal-ui.js +499 -0
  134. package/dist/heart/daemon/thoughts.js +255 -43
  135. package/dist/heart/daemon/up-progress.js +366 -0
  136. package/dist/heart/daemon/vault-items.js +56 -0
  137. package/dist/heart/delegation.js +1 -4
  138. package/dist/heart/external-events/router.js +121 -0
  139. package/dist/heart/habits/habit-migration.js +189 -0
  140. package/dist/heart/habits/habit-parser.js +211 -0
  141. package/dist/heart/habits/habit-runtime-state.js +114 -0
  142. package/dist/heart/habits/habit-scheduler.js +411 -0
  143. package/dist/heart/habits/habit-session-summary.js +318 -0
  144. package/dist/heart/habits/habit-session.js +618 -0
  145. package/dist/heart/{daemon → hatch}/hatch-flow.js +42 -56
  146. package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
  147. package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
  148. package/dist/heart/{daemon → hatch}/specialist-tools.js +45 -18
  149. package/dist/heart/identity.js +174 -57
  150. package/dist/heart/kept-notes.js +289 -0
  151. package/dist/heart/kicks.js +1 -1
  152. package/dist/heart/machine-identity.js +161 -0
  153. package/dist/heart/mail-import-discovery.js +353 -0
  154. package/dist/heart/mailbox/mailbox-http-hooks.js +96 -0
  155. package/dist/heart/mailbox/mailbox-http-response.js +7 -0
  156. package/dist/heart/mailbox/mailbox-http-routes.js +375 -0
  157. package/dist/heart/mailbox/mailbox-http-static.js +103 -0
  158. package/dist/heart/mailbox/mailbox-http-transport.js +116 -0
  159. package/dist/heart/mailbox/mailbox-http.js +99 -0
  160. package/dist/heart/mailbox/mailbox-read.js +37 -0
  161. package/dist/heart/mailbox/mailbox-types.js +27 -0
  162. package/dist/heart/mailbox/mailbox-view.js +197 -0
  163. package/dist/heart/mailbox/readers/agent-machine.js +428 -0
  164. package/dist/heart/mailbox/readers/continuity-readers.js +329 -0
  165. package/dist/heart/mailbox/readers/mail.js +375 -0
  166. package/dist/heart/mailbox/readers/runtime-readers.js +815 -0
  167. package/dist/heart/mailbox/readers/sessions.js +232 -0
  168. package/dist/heart/mailbox/readers/shared.js +111 -0
  169. package/dist/heart/mcp/mcp-server.js +696 -0
  170. package/dist/heart/migrate-config.js +100 -0
  171. package/dist/heart/model-capabilities.js +19 -0
  172. package/dist/heart/orientation-frame.js +217 -0
  173. package/dist/heart/platform.js +81 -0
  174. package/dist/heart/primitives.js +1 -1
  175. package/dist/heart/private-runtime/decision-renderer.js +156 -0
  176. package/dist/heart/private-runtime/index.js +18 -0
  177. package/dist/heart/private-runtime/ledger.js +218 -0
  178. package/dist/heart/private-runtime/policy.js +214 -0
  179. package/dist/heart/private-runtime/types.js +2 -0
  180. package/dist/heart/progress-story.js +1 -1
  181. package/dist/heart/provider-attempt.js +134 -0
  182. package/dist/heart/provider-binding-resolver.js +273 -0
  183. package/dist/heart/provider-credentials.js +425 -0
  184. package/dist/heart/provider-failover.js +311 -0
  185. package/dist/heart/provider-models.js +81 -0
  186. package/dist/heart/provider-ping.js +262 -0
  187. package/dist/heart/provider-readiness-cache.js +119 -0
  188. package/dist/heart/provider-visibility.js +188 -0
  189. package/dist/heart/providers/anthropic-token.js +131 -0
  190. package/dist/heart/providers/anthropic.js +139 -52
  191. package/dist/heart/providers/azure.js +23 -11
  192. package/dist/heart/providers/error-classification.js +127 -0
  193. package/dist/heart/providers/github-copilot.js +145 -0
  194. package/dist/heart/providers/minimax-vlm.js +189 -0
  195. package/dist/heart/providers/minimax.js +26 -8
  196. package/dist/heart/providers/openai-codex-token.js +349 -0
  197. package/dist/heart/providers/openai-codex.js +55 -40
  198. package/dist/heart/runtime-capability-check.js +170 -0
  199. package/dist/heart/runtime-credentials.js +389 -0
  200. package/dist/heart/runtime-cwd.js +87 -0
  201. package/dist/heart/sense-truth.js +17 -4
  202. package/dist/heart/session-activity.js +48 -24
  203. package/dist/heart/session-events.js +1133 -0
  204. package/dist/heart/session-playback-cli-main.js +5 -0
  205. package/dist/heart/session-playback-cli.js +36 -0
  206. package/dist/heart/session-playback.js +231 -0
  207. package/dist/heart/session-stats-cli-main.js +5 -0
  208. package/dist/heart/session-stats.js +182 -0
  209. package/dist/heart/session-transcript.js +133 -0
  210. package/dist/heart/start-of-turn-packet.js +360 -0
  211. package/dist/heart/streaming.js +44 -27
  212. package/dist/heart/structured-output.js +196 -0
  213. package/dist/heart/sync-classification.js +176 -0
  214. package/dist/heart/sync.js +449 -0
  215. package/dist/heart/target-resolution.js +11 -7
  216. package/dist/heart/tempo.js +93 -0
  217. package/dist/heart/temporal-view.js +41 -0
  218. package/dist/heart/timeouts.js +101 -0
  219. package/dist/heart/tool-activity-callbacks.js +59 -0
  220. package/dist/heart/tool-description.js +155 -0
  221. package/dist/heart/tool-friction.js +55 -0
  222. package/dist/heart/tool-loop.js +200 -0
  223. package/dist/heart/turn-context.js +450 -0
  224. package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +6 -5
  225. package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
  226. package/dist/heart/versioning/ouro-path-installer.js +426 -0
  227. package/dist/heart/versioning/ouro-version-manager.js +409 -0
  228. package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
  229. package/dist/heart/{daemon → versioning}/update-checker.js +6 -1
  230. package/dist/heart/versioning/update-hooks.js +154 -0
  231. package/dist/heart/work-card.js +390 -0
  232. package/dist/mailbox-ui/assets/index-Du_9G9WO.css +1 -0
  233. package/dist/mailbox-ui/assets/index-J8zDwHmE.js +1 -0
  234. package/dist/mailbox-ui/assets/vendor-CcN1XpQ9.js +61 -0
  235. package/dist/mailbox-ui/index.html +16 -0
  236. package/dist/mailroom/attention.js +167 -0
  237. package/dist/mailroom/autonomy.js +209 -0
  238. package/dist/mailroom/blob-store.js +715 -0
  239. package/dist/mailroom/body-cache.js +61 -0
  240. package/dist/mailroom/core.js +788 -0
  241. package/dist/mailroom/entry.js +160 -0
  242. package/dist/mailroom/file-store.js +568 -0
  243. package/dist/mailroom/mbox-import.js +393 -0
  244. package/dist/mailroom/migration.js +164 -0
  245. package/dist/mailroom/outbound.js +380 -0
  246. package/dist/mailroom/policy.js +263 -0
  247. package/dist/mailroom/reader.js +233 -0
  248. package/dist/mailroom/search-cache.js +334 -0
  249. package/dist/mailroom/search-relevance.js +319 -0
  250. package/dist/mailroom/smtp-ingress.js +176 -0
  251. package/dist/mailroom/source-state.js +176 -0
  252. package/dist/mailroom/thread.js +109 -0
  253. package/dist/mailroom/travel-extract.js +89 -0
  254. package/dist/mind/bundle-manifest.js +24 -2
  255. package/dist/mind/context.js +250 -101
  256. package/dist/mind/desk-section.js +362 -0
  257. package/dist/mind/diary-integrity.js +60 -0
  258. package/dist/mind/{memory.js → diary.js} +68 -77
  259. package/dist/mind/embedding-provider.js +60 -0
  260. package/dist/mind/file-state.js +179 -0
  261. package/dist/mind/{associative-recall.js → note-search.js} +47 -58
  262. package/dist/mind/obligation-steering.js +221 -0
  263. package/dist/mind/pending.js +18 -6
  264. package/dist/mind/prompt-refresh.js +3 -2
  265. package/dist/mind/prompt.js +1017 -156
  266. package/dist/mind/provenance-trust.js +26 -0
  267. package/dist/mind/record-paths.js +312 -0
  268. package/dist/mind/scrutiny.js +173 -0
  269. package/dist/nerves/cli-logging.js +7 -1
  270. package/dist/nerves/coverage/audit-rules.js +15 -6
  271. package/dist/nerves/coverage/audit.js +28 -2
  272. package/dist/nerves/coverage/cli.js +1 -1
  273. package/dist/nerves/coverage/contract.js +5 -5
  274. package/dist/nerves/coverage/file-completeness.js +139 -5
  275. package/dist/nerves/event-buffer.js +111 -0
  276. package/dist/nerves/index.js +224 -4
  277. package/dist/nerves/observation.js +20 -0
  278. package/dist/nerves/redact.js +79 -0
  279. package/dist/nerves/review/cli-main.js +5 -0
  280. package/dist/nerves/review/cli.js +156 -0
  281. package/dist/nerves/review/core.js +152 -0
  282. package/dist/nerves/runtime.js +5 -1
  283. package/dist/repertoire/ado-client.js +15 -56
  284. package/dist/repertoire/ado-semantic.js +16 -10
  285. package/dist/repertoire/api-client.js +97 -0
  286. package/dist/repertoire/bitwarden-store.js +1042 -0
  287. package/dist/repertoire/bundle-templates.js +71 -0
  288. package/dist/repertoire/bw-installer.js +180 -0
  289. package/dist/repertoire/coding/codex-jsonl.js +64 -0
  290. package/dist/repertoire/coding/context-pack.js +331 -0
  291. package/dist/repertoire/coding/feedback.js +218 -30
  292. package/dist/repertoire/coding/manager.js +166 -10
  293. package/dist/repertoire/coding/spawner.js +55 -9
  294. package/dist/repertoire/coding/tools.js +219 -7
  295. package/dist/repertoire/commerce-errors.js +109 -0
  296. package/dist/repertoire/commerce-self-test.js +156 -0
  297. package/dist/repertoire/credential-access.js +178 -0
  298. package/dist/repertoire/desk/classifier.js +362 -0
  299. package/dist/repertoire/duffel-client.js +185 -0
  300. package/dist/repertoire/github-client.js +14 -55
  301. package/dist/repertoire/graph-client.js +11 -52
  302. package/dist/repertoire/guardrails.js +161 -27
  303. package/dist/repertoire/mcp-client.js +295 -0
  304. package/dist/repertoire/mcp-manager.js +434 -0
  305. package/dist/repertoire/mcp-tools.js +83 -0
  306. package/dist/repertoire/plugin-mcp.js +175 -0
  307. package/dist/repertoire/plugins.js +253 -0
  308. package/dist/repertoire/shell-sessions.js +133 -0
  309. package/dist/repertoire/skills.js +48 -4
  310. package/dist/repertoire/stripe-client.js +131 -0
  311. package/dist/repertoire/tool-results.js +29 -0
  312. package/dist/repertoire/tools-a2a.js +699 -0
  313. package/dist/repertoire/tools-attachments.js +317 -0
  314. package/dist/repertoire/tools-awaiting.js +372 -0
  315. package/dist/repertoire/tools-base.js +63 -1095
  316. package/dist/repertoire/tools-bluebubbles.js +2 -0
  317. package/dist/repertoire/tools-bridge.js +144 -0
  318. package/dist/repertoire/tools-bundle.js +993 -0
  319. package/dist/repertoire/tools-commerce.js +253 -0
  320. package/dist/repertoire/tools-config.js +186 -0
  321. package/dist/repertoire/tools-continuity.js +252 -0
  322. package/dist/repertoire/tools-credential.js +383 -0
  323. package/dist/repertoire/tools-evolution.js +527 -0
  324. package/dist/repertoire/tools-files.js +344 -0
  325. package/dist/repertoire/tools-flight.js +290 -0
  326. package/dist/repertoire/tools-flow.js +119 -0
  327. package/dist/repertoire/tools-github.js +3 -8
  328. package/dist/repertoire/tools-mail.js +1975 -0
  329. package/dist/repertoire/tools-notes.js +459 -0
  330. package/dist/repertoire/tools-obligations.js +143 -0
  331. package/dist/repertoire/tools-orientation.js +31 -0
  332. package/dist/repertoire/tools-record.js +482 -0
  333. package/dist/repertoire/tools-runtime.js +150 -0
  334. package/dist/repertoire/tools-session.js +881 -0
  335. package/dist/repertoire/tools-shell.js +120 -0
  336. package/dist/repertoire/tools-stripe.js +224 -0
  337. package/dist/repertoire/tools-surface.js +355 -0
  338. package/dist/repertoire/tools-teams.js +12 -39
  339. package/dist/repertoire/tools-travel.js +125 -0
  340. package/dist/repertoire/tools-trip.js +982 -0
  341. package/dist/repertoire/tools-user-profile.js +146 -0
  342. package/dist/repertoire/tools-vault.js +40 -0
  343. package/dist/repertoire/tools-voice.js +145 -0
  344. package/dist/repertoire/tools.js +250 -80
  345. package/dist/repertoire/travel-api-client.js +360 -0
  346. package/dist/repertoire/user-profile.js +131 -0
  347. package/dist/repertoire/vault-setup.js +246 -0
  348. package/dist/repertoire/vault-unlock.js +594 -0
  349. package/dist/scripts/claude-code-hook.js +41 -0
  350. package/dist/scripts/claude-code-stop-hook.js +47 -0
  351. package/dist/senses/a2a-entry.js +115 -0
  352. package/dist/senses/attention-queue.js +186 -0
  353. package/dist/senses/await-turn-message.js +58 -0
  354. package/dist/senses/bluebubbles/active-turns.js +216 -0
  355. package/dist/senses/bluebubbles/attachment-cache.js +53 -0
  356. package/dist/senses/bluebubbles/attachment-download.js +137 -0
  357. package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +219 -18
  358. package/dist/senses/bluebubbles/entry.js +77 -0
  359. package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
  360. package/dist/senses/bluebubbles/index.js +2732 -0
  361. package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -71
  362. package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
  363. package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
  364. package/dist/senses/bluebubbles/processed-log.js +133 -0
  365. package/dist/senses/bluebubbles/replay.js +137 -0
  366. package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +30 -2
  367. package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
  368. package/dist/senses/bluebubbles-meta-guard.js +40 -0
  369. package/dist/senses/cli/bracketed-paste.js +82 -0
  370. package/dist/senses/cli/image-paste.js +287 -0
  371. package/dist/senses/cli/image-ref-navigation.js +75 -0
  372. package/dist/senses/cli/ink-app.js +156 -0
  373. package/dist/senses/cli/inline-diff.js +64 -0
  374. package/dist/senses/cli/input-keys.js +174 -0
  375. package/dist/senses/cli/kill-ring.js +86 -0
  376. package/dist/senses/cli/message-list.js +51 -0
  377. package/dist/senses/cli/ouro-tui.js +607 -0
  378. package/dist/senses/cli/spinner-imperative.js +135 -0
  379. package/dist/senses/cli/spinner.js +101 -0
  380. package/dist/senses/cli/status-line.js +60 -0
  381. package/dist/senses/cli/streaming-markdown.js +526 -0
  382. package/dist/senses/cli/tool-display.js +85 -0
  383. package/dist/senses/cli/tool-render.js +85 -0
  384. package/dist/senses/cli/tui-store.js +240 -0
  385. package/dist/senses/cli/virtual-list.js +35 -0
  386. package/dist/senses/cli-entry.js +60 -8
  387. package/dist/senses/cli-layout.js +100 -0
  388. package/dist/senses/cli.js +524 -214
  389. package/dist/senses/commands.js +66 -3
  390. package/dist/senses/habit-turn-message.js +160 -0
  391. package/dist/senses/inner-dialog-worker.js +52 -81
  392. package/dist/senses/inner-dialog.js +10 -464
  393. package/dist/senses/mail-entry.js +66 -0
  394. package/dist/senses/mail.js +395 -0
  395. package/dist/senses/pipeline.js +870 -179
  396. package/dist/senses/private-runtime-worker.js +578 -0
  397. package/dist/senses/private-runtime.js +1145 -0
  398. package/dist/senses/proactive-content-guard.js +51 -0
  399. package/dist/senses/shared-turn.js +416 -0
  400. package/dist/senses/surface-tool.js +109 -0
  401. package/dist/senses/teams-entry.js +60 -8
  402. package/dist/senses/teams.js +400 -112
  403. package/dist/senses/trust-gate.js +104 -9
  404. package/dist/senses/voice/audio-playback.js +237 -0
  405. package/dist/senses/voice/audio-routing.js +119 -0
  406. package/dist/senses/voice/elevenlabs.js +202 -0
  407. package/dist/senses/voice/floor-control.js +431 -0
  408. package/dist/senses/voice/floor-controller.js +115 -0
  409. package/dist/senses/voice/golden-path.js +116 -0
  410. package/dist/senses/voice/index.js +29 -0
  411. package/dist/senses/voice/meeting.js +113 -0
  412. package/dist/senses/voice/outbound.js +190 -0
  413. package/dist/senses/voice/phone.js +33 -0
  414. package/dist/senses/voice/playback.js +139 -0
  415. package/dist/senses/voice/realtime-eval.js +496 -0
  416. package/dist/senses/voice/realtime-trace.js +531 -0
  417. package/dist/senses/voice/transcript.js +70 -0
  418. package/dist/senses/voice/turn.js +191 -0
  419. package/dist/senses/voice/twilio-phone-runtime.js +807 -0
  420. package/dist/senses/voice/twilio-phone.js +5077 -0
  421. package/dist/senses/voice/types.js +2 -0
  422. package/dist/senses/voice/whisper.js +161 -0
  423. package/dist/senses/voice-entry.js +81 -0
  424. package/dist/senses/voice-realtime-eval-command.js +99 -0
  425. package/dist/senses/voice-realtime-eval-entry.js +21 -0
  426. package/dist/senses/voice-twilio-entry.js +87 -0
  427. package/dist/trips/core.js +138 -0
  428. package/dist/trips/store.js +265 -0
  429. package/dist/util/frontmatter.js +69 -0
  430. package/package.json +57 -12
  431. package/skills/agent-commerce.md +113 -0
  432. package/skills/browser-navigation.md +117 -0
  433. package/skills/commerce-setup-guide.md +116 -0
  434. package/skills/commerce-setup.md +84 -0
  435. package/skills/configure-dev-tools.md +99 -0
  436. package/skills/travel-planning.md +138 -0
  437. package/dist/heart/daemon/auth-flow.js +0 -351
  438. package/dist/heart/daemon/ouro-path-installer.js +0 -178
  439. package/dist/heart/daemon/update-hooks.js +0 -138
  440. package/dist/heart/safe-workspace.js +0 -228
  441. package/dist/heart/session-recall.js +0 -116
  442. package/dist/mind/friends/channel.js +0 -84
  443. package/dist/mind/friends/group-context.js +0 -144
  444. package/dist/mind/friends/resolver.js +0 -84
  445. package/dist/mind/friends/store-file.js +0 -190
  446. package/dist/mind/friends/store.js +0 -4
  447. package/dist/mind/friends/tokens.js +0 -26
  448. package/dist/mind/friends/trust-explanation.js +0 -74
  449. package/dist/mind/friends/types.js +0 -29
  450. package/dist/repertoire/tasks/board.js +0 -134
  451. package/dist/repertoire/tasks/index.js +0 -224
  452. package/dist/repertoire/tasks/lifecycle.js +0 -80
  453. package/dist/repertoire/tasks/middleware.js +0 -65
  454. package/dist/repertoire/tasks/parser.js +0 -173
  455. package/dist/repertoire/tasks/scanner.js +0 -132
  456. package/dist/repertoire/tasks/transitions.js +0 -144
  457. package/dist/senses/bluebubbles-entry.js +0 -13
  458. package/dist/senses/bluebubbles.js +0 -1177
  459. package/dist/senses/debug-activity.js +0 -148
  460. package/subagents/README.md +0 -7
  461. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
  462. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
  463. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
  464. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
  465. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
  466. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
  467. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
  468. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
  469. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
  470. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
  471. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
  472. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
  473. /package/dist/{repertoire/tasks/types.js → heart/attachments/sources/adapter.js} +0 -0
  474. /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
  475. /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
  476. /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
  477. /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
@@ -10,468 +10,14 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
35
16
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.loadInnerDialogInstincts = loadInnerDialogInstincts;
37
- exports.buildInnerDialogBootstrapMessage = buildInnerDialogBootstrapMessage;
38
- exports.buildNonCanonicalCleanupNudge = buildNonCanonicalCleanupNudge;
39
- exports.buildInstinctUserMessage = buildInstinctUserMessage;
40
- exports.readTaskFile = readTaskFile;
41
- exports.buildTaskTriggeredMessage = buildTaskTriggeredMessage;
42
- exports.deriveResumeCheckpoint = deriveResumeCheckpoint;
43
- exports.innerDialogSessionPath = innerDialogSessionPath;
44
- exports.runInnerDialogTurn = runInnerDialogTurn;
45
- const fs = __importStar(require("fs"));
46
- const path = __importStar(require("path"));
47
- const config_1 = require("../heart/config");
48
- const core_1 = require("../heart/core");
49
- const identity_1 = require("../heart/identity");
50
- const context_1 = require("../mind/context");
51
- const prompt_1 = require("../mind/prompt");
52
- const bundle_manifest_1 = require("../mind/bundle-manifest");
53
- const pending_1 = require("../mind/pending");
54
- const channel_1 = require("../mind/friends/channel");
55
- const trust_gate_1 = require("./trust-gate");
56
- const tokens_1 = require("../mind/friends/tokens");
57
- const pipeline_1 = require("./pipeline");
58
- const nerves_1 = require("../nerves");
59
- const runtime_1 = require("../nerves/runtime");
60
- const manager_1 = require("../heart/bridges/manager");
61
- const session_activity_1 = require("../heart/session-activity");
62
- const bluebubbles_1 = require("./bluebubbles");
63
- const DEFAULT_INNER_DIALOG_INSTINCTS = [
64
- {
65
- id: "heartbeat_checkin",
66
- prompt: "...time passing. anything stirring?",
67
- enabled: true,
68
- },
69
- ];
70
- function readAspirations(agentRoot) {
71
- try {
72
- return fs.readFileSync(path.join(agentRoot, "psyche", "ASPIRATIONS.md"), "utf8").trim();
73
- }
74
- catch {
75
- return "";
76
- }
77
- }
78
- function loadInnerDialogInstincts() {
79
- return [...DEFAULT_INNER_DIALOG_INSTINCTS];
80
- }
81
- function buildInnerDialogBootstrapMessage(aspirations, stateSummary) {
82
- const lines = ["waking up."];
83
- if (aspirations) {
84
- lines.push("", "## what matters to me", aspirations);
85
- }
86
- if (stateSummary) {
87
- lines.push("", "## what i know so far", stateSummary);
88
- }
89
- lines.push("", "what needs my attention?");
90
- return lines.join("\n");
91
- }
92
- function buildNonCanonicalCleanupNudge(nonCanonicalPaths) {
93
- if (nonCanonicalPaths.length === 0)
94
- return "";
95
- const listed = nonCanonicalPaths.slice(0, 20).map((entry) => `- ${entry}`);
96
- if (nonCanonicalPaths.length > 20) {
97
- listed.push(`- ... (${nonCanonicalPaths.length - 20} more)`);
98
- }
99
- return [
100
- "## canonical cleanup nudge",
101
- "I found non-canonical files in my bundle. I should distill anything valuable into your memory system and remove these files.",
102
- ...listed,
103
- ].join("\n");
104
- }
105
- function buildInstinctUserMessage(instincts, _reason, state) {
106
- const active = instincts.find((instinct) => instinct.enabled !== false) ?? DEFAULT_INNER_DIALOG_INSTINCTS[0];
107
- const checkpoint = state.checkpoint?.trim();
108
- const lines = [active.prompt];
109
- if (checkpoint) {
110
- lines.push(`\nlast i remember: ${checkpoint}`);
111
- }
112
- return lines.join("\n");
113
- }
114
- function readTaskFile(agentRoot, taskId) {
115
- // Task files live in collection subdirectories (one-shots, ongoing, habits).
116
- // Try each collection, then fall back to root tasks/ for legacy layout.
117
- const collections = ["one-shots", "ongoing", "habits", ""];
118
- for (const collection of collections) {
119
- try {
120
- return fs.readFileSync(path.join(agentRoot, "tasks", collection, `${taskId}.md`), "utf8").trim();
121
- }
122
- catch {
123
- // not in this collection — try next
124
- }
125
- }
126
- return "";
127
- }
128
- function buildTaskTriggeredMessage(taskId, taskContent, checkpoint) {
129
- const lines = ["a task needs my attention."];
130
- if (taskContent) {
131
- lines.push("", `## task: ${taskId}`, taskContent);
132
- }
133
- else {
134
- lines.push("", `## task: ${taskId}`, "(task file not found)");
135
- }
136
- if (checkpoint) {
137
- lines.push("", `last i remember: ${checkpoint}`);
138
- }
139
- return lines.join("\n");
140
- }
141
- function contentToText(content) {
142
- if (typeof content === "string")
143
- return content.trim();
144
- if (!Array.isArray(content))
145
- return "";
146
- const text = content
147
- .map((part) => {
148
- if (typeof part === "string")
149
- return part;
150
- if (!part || typeof part !== "object")
151
- return "";
152
- if ("text" in part && typeof part.text === "string") {
153
- return part.text;
154
- }
155
- return "";
156
- })
157
- .join("\n");
158
- return text.trim();
159
- }
160
- function deriveResumeCheckpoint(messages) {
161
- const lastAssistant = [...messages].reverse().find((message) => message.role === "assistant");
162
- if (!lastAssistant)
163
- return "no prior checkpoint recorded";
164
- const assistantText = contentToText(lastAssistant.content);
165
- if (!assistantText)
166
- return "no prior checkpoint recorded";
167
- const explicitCheckpoint = assistantText
168
- .split("\n")
169
- .map((line) => line.trim())
170
- .find((line) => /^checkpoint\s*:/i.test(line));
171
- if (explicitCheckpoint) {
172
- const parsed = explicitCheckpoint.replace(/^checkpoint\s*:\s*/i, "").trim();
173
- return parsed || "no prior checkpoint recorded";
174
- }
175
- const firstLine = assistantText
176
- .split("\n")
177
- .map((line) => line.trim())
178
- .find((line) => line.length > 0);
179
- /* v8 ignore next -- unreachable: contentToText().trim() guarantees a non-empty line @preserve */
180
- if (!firstLine)
181
- return "no prior checkpoint recorded";
182
- if (firstLine.length <= 220)
183
- return firstLine;
184
- return `${firstLine.slice(0, 217)}...`;
185
- }
186
- function extractAssistantPreview(messages, maxLength = 120) {
187
- const lastAssistant = [...messages].reverse().find((m) => m.role === "assistant");
188
- if (!lastAssistant)
189
- return "";
190
- const text = contentToText(lastAssistant.content);
191
- if (!text)
192
- return "";
193
- /* v8 ignore next -- unreachable: contentToText().trim() guarantees a non-empty line @preserve */
194
- const firstLine = text.split("\n").find((line) => line.trim().length > 0) ?? "";
195
- if (firstLine.length <= maxLength)
196
- return firstLine;
197
- return `${firstLine.slice(0, maxLength - 3)}...`;
198
- }
199
- function extractToolCallNames(messages) {
200
- const names = [];
201
- for (const msg of messages) {
202
- if (msg.role === "assistant" && "tool_calls" in msg && Array.isArray(msg.tool_calls)) {
203
- for (const tc of msg.tool_calls) {
204
- if ("function" in tc && tc.function?.name)
205
- names.push(tc.function.name);
206
- }
207
- }
208
- }
209
- return [...new Set(names)];
210
- }
211
- function createInnerDialogCallbacks() {
212
- return {
213
- onModelStart: () => { },
214
- onModelStreamStart: () => { },
215
- onTextChunk: () => { },
216
- onReasoningChunk: () => { },
217
- onToolStart: () => { },
218
- onToolEnd: () => { },
219
- onError: () => { },
220
- };
221
- }
222
- function innerDialogSessionPath() {
223
- return (0, config_1.sessionPath)(pending_1.INNER_DIALOG_PENDING.friendId, pending_1.INNER_DIALOG_PENDING.channel, pending_1.INNER_DIALOG_PENDING.key);
224
- }
225
- function innerDialogRuntimeStatePath(sessionFilePath) {
226
- return path.join(path.dirname(sessionFilePath), "runtime.json");
227
- }
228
- function writeInnerDialogRuntimeState(sessionFilePath, state) {
229
- const filePath = innerDialogRuntimeStatePath(sessionFilePath);
230
- try {
231
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
232
- fs.writeFileSync(filePath, JSON.stringify(state, null, 2) + "\n", "utf8");
233
- }
234
- catch (error) {
235
- (0, runtime_1.emitNervesEvent)({
236
- level: "warn",
237
- component: "senses",
238
- event: "senses.inner_dialog_runtime_state_error",
239
- message: "failed to write inner dialog runtime state",
240
- meta: {
241
- status: state.status,
242
- reason: state.reason ?? null,
243
- path: filePath,
244
- /* v8 ignore next -- Node fs APIs throw Error objects for mkdirSync/writeFileSync failures @preserve */
245
- error: error instanceof Error ? error.message : String(error),
246
- },
247
- });
248
- }
249
- }
250
- function writePendingEnvelope(pendingDir, message) {
251
- fs.mkdirSync(pendingDir, { recursive: true });
252
- const fileName = `${message.timestamp}-${Math.random().toString(36).slice(2, 10)}.json`;
253
- const filePath = path.join(pendingDir, fileName);
254
- fs.writeFileSync(filePath, JSON.stringify(message, null, 2), "utf8");
255
- }
256
- function sessionMatchesActivity(activity, session) {
257
- return activity.friendId === session.friendId
258
- && activity.channel === session.channel
259
- && activity.key === session.key;
260
- }
261
- function resolveBridgePreferredSession(delegatedFrom, sessionActivity) {
262
- if (!delegatedFrom.bridgeId)
263
- return null;
264
- const bridge = (0, manager_1.createBridgeManager)().getBridge(delegatedFrom.bridgeId);
265
- if (!bridge || bridge.lifecycle === "completed" || bridge.lifecycle === "cancelled") {
266
- return null;
267
- }
268
- return sessionActivity.find((activity) => activity.friendId === delegatedFrom.friendId
269
- && activity.channel !== "inner"
270
- && bridge.attachedSessions.some((session) => sessionMatchesActivity(activity, session))) ?? null;
271
- }
272
- async function tryDeliverDelegatedCompletion(target, outboundEnvelope) {
273
- if (target.channel !== "bluebubbles") {
274
- return false;
275
- }
276
- const result = await (0, bluebubbles_1.sendProactiveBlueBubblesMessageToSession)({
277
- friendId: target.friendId,
278
- sessionKey: target.key,
279
- text: outboundEnvelope.content,
280
- });
281
- return result.delivered;
282
- }
283
- async function routeDelegatedCompletion(agentRoot, agentName, completion, drainedPending, timestamp) {
284
- const delegated = (drainedPending ?? []).find((message) => message.delegatedFrom);
285
- if (!delegated?.delegatedFrom || !completion?.answer?.trim()) {
286
- return;
287
- }
288
- const delegatedFrom = delegated.delegatedFrom;
289
- const outboundEnvelope = {
290
- from: agentName,
291
- friendId: delegatedFrom.friendId,
292
- channel: delegatedFrom.channel,
293
- key: delegatedFrom.key,
294
- content: completion.answer.trim(),
295
- timestamp,
296
- delegatedFrom,
297
- };
298
- const sessionActivity = (0, session_activity_1.listSessionActivity)({
299
- sessionsDir: path.join(agentRoot, "state", "sessions"),
300
- friendsDir: path.join(agentRoot, "friends"),
301
- agentName,
302
- });
303
- const bridgeTarget = resolveBridgePreferredSession(delegatedFrom, sessionActivity);
304
- if (bridgeTarget) {
305
- if (await tryDeliverDelegatedCompletion(bridgeTarget, outboundEnvelope)) {
306
- return;
307
- }
308
- writePendingEnvelope((0, pending_1.getPendingDir)(agentName, bridgeTarget.friendId, bridgeTarget.channel, bridgeTarget.key), outboundEnvelope);
309
- return;
310
- }
311
- const freshest = (0, session_activity_1.findFreshestFriendSession)({
312
- sessionsDir: path.join(agentRoot, "state", "sessions"),
313
- friendsDir: path.join(agentRoot, "friends"),
314
- agentName,
315
- friendId: delegatedFrom.friendId,
316
- activeOnly: true,
317
- });
318
- if (freshest && freshest.channel !== "inner") {
319
- if (await tryDeliverDelegatedCompletion(freshest, outboundEnvelope)) {
320
- return;
321
- }
322
- writePendingEnvelope((0, pending_1.getPendingDir)(agentName, freshest.friendId, freshest.channel, freshest.key), outboundEnvelope);
323
- return;
324
- }
325
- writePendingEnvelope((0, pending_1.getDeferredReturnDir)(agentName, delegatedFrom.friendId), outboundEnvelope);
326
- }
327
- // Self-referencing friend record for inner dialog (agent talking to itself).
328
- // No real friend to resolve -- this satisfies the pipeline's friend resolver contract.
329
- function createSelfFriend(agentName) {
330
- return {
331
- id: "self",
332
- name: agentName,
333
- trustLevel: "family",
334
- externalIds: [],
335
- tenantMemberships: [],
336
- toolPreferences: {},
337
- notes: {},
338
- totalTokens: 0,
339
- createdAt: new Date().toISOString(),
340
- updatedAt: new Date().toISOString(),
341
- schemaVersion: 1,
342
- };
343
- }
344
- // No-op friend store for inner dialog. Inner dialog doesn't track token usage per-friend.
345
- function createNoOpFriendStore() {
346
- return {
347
- get: async () => null,
348
- put: async () => { },
349
- delete: async () => { },
350
- findByExternalId: async () => null,
351
- };
352
- }
353
- async function runInnerDialogTurn(options) {
354
- const now = options?.now ?? (() => new Date());
355
- const reason = options?.reason ?? "heartbeat";
356
- const sessionFilePath = innerDialogSessionPath();
357
- const agentName = (0, identity_1.getAgentName)();
358
- const agentRoot = (0, identity_1.getAgentRoot)();
359
- writeInnerDialogRuntimeState(sessionFilePath, {
360
- status: "running",
361
- reason,
362
- startedAt: now().toISOString(),
363
- });
364
- try {
365
- const loaded = (0, context_1.loadSession)(sessionFilePath);
366
- const existingMessages = loaded?.messages ? [...loaded.messages] : [];
367
- const instincts = options?.instincts ?? loadInnerDialogInstincts();
368
- const state = {
369
- cycleCount: 1,
370
- resting: false,
371
- lastHeartbeatAt: now().toISOString(),
372
- };
373
- // ── Adapter concern: build user message ──────────────────────────
374
- let userContent;
375
- if (existingMessages.length === 0) {
376
- // Fresh session: bootstrap message with non-canonical cleanup nudge
377
- const aspirations = readAspirations((0, identity_1.getAgentRoot)());
378
- const nonCanonical = (0, bundle_manifest_1.findNonCanonicalBundlePaths)((0, identity_1.getAgentRoot)());
379
- const cleanupNudge = buildNonCanonicalCleanupNudge(nonCanonical);
380
- userContent = [
381
- buildInnerDialogBootstrapMessage(aspirations, "No prior inner dialog session found."),
382
- cleanupNudge,
383
- ].filter(Boolean).join("\n\n");
384
- }
385
- else {
386
- // Resumed session: task-triggered or instinct message with checkpoint context
387
- const assistantTurns = existingMessages.filter((message) => message.role === "assistant").length;
388
- state.cycleCount = assistantTurns + 1;
389
- state.checkpoint = deriveResumeCheckpoint(existingMessages);
390
- if (options?.taskId) {
391
- const taskContent = readTaskFile((0, identity_1.getAgentRoot)(), options.taskId);
392
- userContent = buildTaskTriggeredMessage(options.taskId, taskContent, state.checkpoint);
393
- }
394
- else {
395
- userContent = buildInstinctUserMessage(instincts, reason, state);
396
- }
397
- }
398
- const userMessage = { role: "user", content: userContent };
399
- // ── Session loader: wraps existing session logic ──────────────────
400
- const innerCapabilities = (0, channel_1.getChannelCapabilities)("inner");
401
- const pendingDir = (0, pending_1.getInnerDialogPendingDir)(agentName);
402
- const selfFriend = createSelfFriend(agentName);
403
- const selfContext = { friend: selfFriend, channel: innerCapabilities };
404
- const sessionLoader = {
405
- loadOrCreate: async () => {
406
- if (existingMessages.length > 0) {
407
- return { messages: existingMessages, sessionPath: sessionFilePath };
408
- }
409
- // Fresh session: build system prompt
410
- const systemPrompt = await (0, prompt_1.buildSystem)("inner", { toolChoiceRequired: true });
411
- return {
412
- messages: [{ role: "system", content: systemPrompt }],
413
- sessionPath: sessionFilePath,
414
- };
415
- },
416
- };
417
- // ── Call shared pipeline ──────────────────────────────────────────
418
- const callbacks = createInnerDialogCallbacks();
419
- const traceId = (0, nerves_1.createTraceId)();
420
- const result = await (0, pipeline_1.handleInboundTurn)({
421
- channel: "inner",
422
- sessionKey: "dialog",
423
- capabilities: innerCapabilities,
424
- messages: [userMessage],
425
- continuityIngressTexts: [],
426
- callbacks,
427
- friendResolver: { resolve: () => Promise.resolve(selfContext) },
428
- sessionLoader,
429
- pendingDir,
430
- friendStore: createNoOpFriendStore(),
431
- enforceTrustGate: trust_gate_1.enforceTrustGate,
432
- drainPending: pending_1.drainPending,
433
- runAgent: core_1.runAgent,
434
- postTurn: context_1.postTurn,
435
- accumulateFriendTokens: tokens_1.accumulateFriendTokens,
436
- signal: options?.signal,
437
- runAgentOptions: {
438
- traceId,
439
- toolChoiceRequired: true,
440
- skipConfirmation: true,
441
- },
442
- });
443
- await routeDelegatedCompletion(agentRoot, agentName, result.completion, result.drainedPending, now().getTime());
444
- const resultMessages = result.messages ?? [];
445
- const assistantPreview = extractAssistantPreview(resultMessages);
446
- const toolCalls = extractToolCallNames(resultMessages);
447
- (0, runtime_1.emitNervesEvent)({
448
- component: "senses",
449
- event: "senses.inner_dialog_turn",
450
- message: "inner dialog turn completed",
451
- meta: {
452
- reason,
453
- session: sessionFilePath,
454
- ...(options?.taskId && { taskId: options.taskId }),
455
- ...(assistantPreview && { assistantPreview }),
456
- ...(toolCalls.length > 0 && { toolCalls }),
457
- ...(result.usage && {
458
- promptTokens: result.usage.input_tokens,
459
- completionTokens: result.usage.output_tokens,
460
- totalTokens: result.usage.total_tokens,
461
- }),
462
- },
463
- });
464
- return {
465
- messages: resultMessages,
466
- usage: result.usage,
467
- sessionPath: result.sessionPath ?? sessionFilePath,
468
- completion: result.completion,
469
- };
470
- }
471
- finally {
472
- writeInnerDialogRuntimeState(sessionFilePath, {
473
- status: "idle",
474
- lastCompletedAt: now().toISOString(),
475
- });
476
- }
477
- }
17
+ exports.runInnerDialogTurn = exports.innerDialogSessionPath = exports.loadInnerDialogInstincts = exports.buildInnerDialogBootstrapMessage = void 0;
18
+ __exportStar(require("./private-runtime"), exports);
19
+ var private_runtime_1 = require("./private-runtime");
20
+ Object.defineProperty(exports, "buildInnerDialogBootstrapMessage", { enumerable: true, get: function () { return private_runtime_1.buildPrivateRuntimeBootstrapMessage; } });
21
+ Object.defineProperty(exports, "loadInnerDialogInstincts", { enumerable: true, get: function () { return private_runtime_1.loadPrivateRuntimeInstincts; } });
22
+ Object.defineProperty(exports, "innerDialogSessionPath", { enumerable: true, get: function () { return private_runtime_1.privateRuntimeSessionPath; } });
23
+ Object.defineProperty(exports, "runInnerDialogTurn", { enumerable: true, get: function () { return private_runtime_1.runPrivateRuntimeTurn; } });
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const agentArgIndex = process.argv.indexOf("--agent");
37
+ const agentName = agentArgIndex >= 0 ? process.argv[agentArgIndex + 1] : undefined;
38
+ if (!agentName) {
39
+ // eslint-disable-next-line no-console -- pre-boot guard: --agent check before imports
40
+ console.error("Missing required --agent <name> argument.\nUsage: node dist/senses/mail-entry.js --agent ouroboros");
41
+ process.exit(1);
42
+ }
43
+ const runtime_logging_1 = require("../heart/daemon/runtime-logging");
44
+ const runtime_1 = require("../nerves/runtime");
45
+ (0, runtime_logging_1.configureDaemonRuntimeLogger)("mail");
46
+ (0, runtime_1.emitNervesEvent)({
47
+ component: "senses",
48
+ event: "senses.entry_boot",
49
+ message: "booting Mail entrypoint",
50
+ meta: { entry: "mail", agentName },
51
+ });
52
+ Promise.resolve().then(() => __importStar(require("./mail"))).then(async ({ startMailSenseApp }) => {
53
+ await startMailSenseApp({ agentName });
54
+ })
55
+ .catch((error) => {
56
+ (0, runtime_1.emitNervesEvent)({
57
+ level: "error",
58
+ component: "senses",
59
+ event: "senses.entry_error",
60
+ message: "Mail entrypoint failed",
61
+ meta: { entry: "mail", agentName, error: error instanceof Error ? error.message : String(error) },
62
+ });
63
+ // eslint-disable-next-line no-console -- fatal startup guard for sense process
64
+ console.error(error instanceof Error ? error.message : String(error));
65
+ process.exit(1);
66
+ });