@ouro.bot/cli 0.1.0-alpha.51 → 0.1.0-alpha.510

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 (372) hide show
  1. package/README.md +133 -19
  2. package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/agent.json +3 -2
  3. package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/SOUL.md +2 -2
  4. package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-serpent.md +1 -1
  5. package/changelog.json +3245 -0
  6. package/dist/arc/attention-types.js +8 -0
  7. package/dist/arc/cares.js +140 -0
  8. package/dist/arc/episodes.js +117 -0
  9. package/dist/arc/intentions.js +133 -0
  10. package/dist/arc/json-store.js +117 -0
  11. package/dist/arc/obligations.js +237 -0
  12. package/dist/arc/packets.js +193 -0
  13. package/dist/arc/presence.js +185 -0
  14. package/dist/arc/task-lifecycle.js +65 -0
  15. package/dist/heart/active-work.js +867 -35
  16. package/dist/heart/agent-entry.js +58 -3
  17. package/dist/heart/attachments/image-normalize.js +194 -0
  18. package/dist/heart/attachments/materialize.js +97 -0
  19. package/dist/heart/attachments/originals.js +88 -0
  20. package/dist/heart/attachments/render.js +29 -0
  21. package/dist/heart/attachments/sources/adapter.js +2 -0
  22. package/dist/heart/attachments/sources/bluebubbles.js +156 -0
  23. package/dist/heart/attachments/sources/cli-local-file.js +78 -0
  24. package/dist/heart/attachments/sources/index.js +16 -0
  25. package/dist/heart/attachments/store.js +103 -0
  26. package/dist/heart/attachments/types.js +93 -0
  27. package/dist/heart/auth/auth-flow.js +426 -0
  28. package/dist/heart/background-operations.js +281 -0
  29. package/dist/heart/bundle-state.js +168 -0
  30. package/dist/heart/commitments.js +111 -0
  31. package/dist/heart/config-registry.js +304 -0
  32. package/dist/heart/config.js +119 -129
  33. package/dist/heart/core.js +878 -244
  34. package/dist/heart/cross-chat-delivery.js +131 -0
  35. package/dist/heart/daemon/agent-config-check.js +490 -0
  36. package/dist/heart/daemon/agent-discovery.js +79 -3
  37. package/dist/heart/daemon/agent-service.js +360 -0
  38. package/dist/heart/daemon/agentic-repair.js +216 -0
  39. package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
  40. package/dist/heart/daemon/cadence.js +70 -0
  41. package/dist/heart/daemon/cli-defaults.js +640 -0
  42. package/dist/heart/daemon/cli-exec.js +7239 -0
  43. package/dist/heart/daemon/cli-help.js +493 -0
  44. package/dist/heart/daemon/cli-parse.js +1533 -0
  45. package/dist/heart/daemon/cli-render-doctor.js +57 -0
  46. package/dist/heart/daemon/cli-render.js +561 -0
  47. package/dist/heart/daemon/cli-types.js +8 -0
  48. package/dist/heart/daemon/connect-bay.js +323 -0
  49. package/dist/heart/daemon/daemon-cli.js +29 -1631
  50. package/dist/heart/daemon/daemon-entry.js +345 -3
  51. package/dist/heart/daemon/daemon-health.js +141 -0
  52. package/dist/heart/daemon/daemon-runtime-sync.js +190 -12
  53. package/dist/heart/daemon/daemon-tombstone.js +236 -0
  54. package/dist/heart/daemon/daemon.js +677 -58
  55. package/dist/heart/daemon/dns-workflow.js +394 -0
  56. package/dist/heart/daemon/doctor-types.js +8 -0
  57. package/dist/heart/daemon/doctor.js +750 -0
  58. package/dist/heart/daemon/health-monitor.js +92 -1
  59. package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
  60. package/dist/heart/daemon/hooks/bundle-meta.js +115 -1
  61. package/dist/heart/daemon/http-health-probe.js +80 -0
  62. package/dist/heart/daemon/human-command-screens.js +234 -0
  63. package/dist/heart/daemon/human-readiness.js +114 -0
  64. package/dist/heart/daemon/inner-status.js +89 -0
  65. package/dist/heart/daemon/interactive-repair.js +394 -0
  66. package/dist/heart/daemon/launchd.js +25 -5
  67. package/dist/heart/daemon/log-tailer.js +82 -12
  68. package/dist/heart/daemon/logs-prune.js +110 -0
  69. package/dist/heart/daemon/message-router.js +2 -2
  70. package/dist/heart/daemon/os-cron-deps.js +134 -0
  71. package/dist/heart/daemon/ouro-bot-entry.js +4 -2
  72. package/dist/heart/daemon/ouro-entry.js +3 -1
  73. package/dist/heart/daemon/process-manager.js +214 -0
  74. package/dist/heart/daemon/provider-discovery.js +137 -0
  75. package/dist/heart/daemon/provider-ping-progress.js +83 -0
  76. package/dist/heart/daemon/pulse.js +475 -0
  77. package/dist/heart/daemon/readiness-repair.js +365 -0
  78. package/dist/heart/daemon/run-hooks.js +2 -0
  79. package/dist/heart/daemon/runtime-logging.js +67 -16
  80. package/dist/heart/daemon/runtime-metadata.js +73 -0
  81. package/dist/heart/daemon/runtime-mode.js +67 -0
  82. package/dist/heart/daemon/safe-mode.js +161 -0
  83. package/dist/heart/daemon/sense-manager.js +178 -37
  84. package/dist/heart/daemon/session-id-resolver.js +131 -0
  85. package/dist/heart/daemon/skill-management-installer.js +94 -0
  86. package/dist/heart/daemon/socket-client.js +109 -4
  87. package/dist/heart/daemon/stale-bundle-prune.js +96 -0
  88. package/dist/heart/daemon/startup-tui.js +264 -0
  89. package/dist/heart/daemon/task-scheduler.js +3 -25
  90. package/dist/heart/daemon/terminal-ui.js +499 -0
  91. package/dist/heart/daemon/thoughts.js +162 -17
  92. package/dist/heart/daemon/up-progress.js +366 -0
  93. package/dist/heart/daemon/vault-items.js +56 -0
  94. package/dist/heart/delegation.js +1 -1
  95. package/dist/heart/habits/habit-migration.js +189 -0
  96. package/dist/heart/habits/habit-parser.js +140 -0
  97. package/dist/heart/habits/habit-runtime-state.js +100 -0
  98. package/dist/heart/habits/habit-scheduler.js +372 -0
  99. package/dist/heart/{daemon → hatch}/hatch-flow.js +52 -117
  100. package/dist/heart/{daemon → hatch}/hatch-specialist.js +3 -3
  101. package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
  102. package/dist/heart/{daemon → hatch}/specialist-tools.js +35 -12
  103. package/dist/heart/identity.js +205 -66
  104. package/dist/heart/kept-notes.js +357 -0
  105. package/dist/heart/kicks.js +1 -1
  106. package/dist/heart/machine-identity.js +161 -0
  107. package/dist/heart/mail-import-discovery.js +353 -0
  108. package/dist/heart/mcp/mcp-server.js +653 -0
  109. package/dist/heart/migrate-config.js +100 -0
  110. package/dist/heart/model-capabilities.js +19 -0
  111. package/dist/heart/outlook/outlook-http-hooks.js +66 -0
  112. package/dist/heart/outlook/outlook-http-response.js +7 -0
  113. package/dist/heart/outlook/outlook-http-routes.js +244 -0
  114. package/dist/heart/outlook/outlook-http-static.js +103 -0
  115. package/dist/heart/outlook/outlook-http-transport.js +116 -0
  116. package/dist/heart/outlook/outlook-http.js +99 -0
  117. package/dist/heart/outlook/outlook-read.js +31 -0
  118. package/dist/heart/outlook/outlook-types.js +27 -0
  119. package/dist/heart/outlook/outlook-view.js +195 -0
  120. package/dist/heart/outlook/readers/agent-machine.js +382 -0
  121. package/dist/heart/outlook/readers/continuity-readers.js +336 -0
  122. package/dist/heart/outlook/readers/mail.js +362 -0
  123. package/dist/heart/outlook/readers/runtime-readers.js +644 -0
  124. package/dist/heart/outlook/readers/sessions.js +232 -0
  125. package/dist/heart/outlook/readers/shared.js +111 -0
  126. package/dist/heart/platform.js +81 -0
  127. package/dist/heart/provider-attempt.js +134 -0
  128. package/dist/heart/provider-binding-resolver.js +255 -0
  129. package/dist/heart/provider-credentials.js +424 -0
  130. package/dist/heart/provider-failover.js +301 -0
  131. package/dist/heart/provider-models.js +81 -0
  132. package/dist/heart/provider-ping.js +262 -0
  133. package/dist/heart/provider-state.js +216 -0
  134. package/dist/heart/provider-visibility.js +188 -0
  135. package/dist/heart/providers/anthropic-token.js +131 -0
  136. package/dist/heart/providers/anthropic.js +139 -52
  137. package/dist/heart/providers/azure.js +97 -13
  138. package/dist/heart/providers/error-classification.js +127 -0
  139. package/dist/heart/providers/github-copilot.js +145 -0
  140. package/dist/heart/providers/minimax-vlm.js +189 -0
  141. package/dist/heart/providers/minimax.js +26 -8
  142. package/dist/heart/providers/openai-codex.js +55 -40
  143. package/dist/heart/runtime-capability-check.js +170 -0
  144. package/dist/heart/runtime-credentials.js +260 -0
  145. package/dist/heart/sense-truth.js +11 -4
  146. package/dist/heart/session-activity.js +43 -22
  147. package/dist/heart/session-events.js +1150 -0
  148. package/dist/heart/session-playback-cli-main.js +5 -0
  149. package/dist/heart/session-playback-cli.js +36 -0
  150. package/dist/heart/session-playback.js +231 -0
  151. package/dist/heart/session-stats-cli-main.js +5 -0
  152. package/dist/heart/session-stats.js +182 -0
  153. package/dist/heart/session-transcript.js +167 -0
  154. package/dist/heart/start-of-turn-packet.js +345 -0
  155. package/dist/heart/streaming.js +44 -27
  156. package/dist/heart/sync.js +332 -0
  157. package/dist/heart/target-resolution.js +127 -0
  158. package/dist/heart/tempo.js +93 -0
  159. package/dist/heart/temporal-view.js +41 -0
  160. package/dist/heart/tool-activity-callbacks.js +36 -0
  161. package/dist/heart/tool-description.js +135 -0
  162. package/dist/heart/tool-friction.js +55 -0
  163. package/dist/heart/tool-loop.js +200 -0
  164. package/dist/heart/turn-context.js +372 -0
  165. package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +1 -1
  166. package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
  167. package/dist/heart/versioning/ouro-path-installer.js +425 -0
  168. package/dist/heart/versioning/ouro-version-manager.js +295 -0
  169. package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
  170. package/dist/heart/{daemon → versioning}/update-checker.js +5 -1
  171. package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
  172. package/dist/mailroom/attention.js +167 -0
  173. package/dist/mailroom/autonomy.js +209 -0
  174. package/dist/mailroom/blob-store.js +606 -0
  175. package/dist/mailroom/body-cache.js +61 -0
  176. package/dist/mailroom/core.js +672 -0
  177. package/dist/mailroom/entry.js +160 -0
  178. package/dist/mailroom/file-store.js +426 -0
  179. package/dist/mailroom/mbox-import.js +382 -0
  180. package/dist/mailroom/outbound.js +380 -0
  181. package/dist/mailroom/policy.js +263 -0
  182. package/dist/mailroom/reader.js +219 -0
  183. package/dist/mailroom/search-cache.js +182 -0
  184. package/dist/mailroom/search-relevance.js +319 -0
  185. package/dist/mailroom/smtp-ingress.js +176 -0
  186. package/dist/mailroom/source-state.js +176 -0
  187. package/dist/mailroom/thread.js +109 -0
  188. package/dist/mailroom/travel-extract.js +89 -0
  189. package/dist/mind/bundle-manifest.js +7 -1
  190. package/dist/mind/context.js +165 -101
  191. package/dist/mind/diary-integrity.js +60 -0
  192. package/dist/mind/{memory.js → diary.js} +74 -93
  193. package/dist/mind/embedding-provider.js +60 -0
  194. package/dist/mind/file-state.js +179 -0
  195. package/dist/mind/friends/channel.js +30 -0
  196. package/dist/mind/friends/group-context.js +144 -0
  197. package/dist/mind/friends/resolver.js +54 -2
  198. package/dist/mind/friends/store-file.js +39 -3
  199. package/dist/mind/friends/trust-explanation.js +74 -0
  200. package/dist/mind/friends/types.js +2 -2
  201. package/dist/mind/journal-index.js +161 -0
  202. package/dist/mind/note-search.js +268 -0
  203. package/dist/mind/obligation-steering.js +221 -0
  204. package/dist/mind/pending.js +4 -0
  205. package/dist/mind/prompt-refresh.js +3 -2
  206. package/dist/mind/prompt.js +940 -111
  207. package/dist/mind/provenance-trust.js +26 -0
  208. package/dist/mind/scrutiny.js +173 -0
  209. package/dist/nerves/cli-logging.js +7 -1
  210. package/dist/nerves/coverage/audit-rules.js +15 -6
  211. package/dist/nerves/coverage/audit.js +28 -2
  212. package/dist/nerves/coverage/cli.js +1 -1
  213. package/dist/nerves/coverage/contract.js +5 -5
  214. package/dist/nerves/coverage/file-completeness.js +114 -5
  215. package/dist/nerves/coverage/run-artifacts.js +1 -1
  216. package/dist/nerves/event-buffer.js +111 -0
  217. package/dist/nerves/index.js +224 -4
  218. package/dist/nerves/observation.js +20 -0
  219. package/dist/nerves/redact.js +79 -0
  220. package/dist/nerves/review/cli-main.js +5 -0
  221. package/dist/nerves/review/cli.js +156 -0
  222. package/dist/nerves/review/core.js +152 -0
  223. package/dist/nerves/runtime.js +5 -1
  224. package/dist/outlook-ui/assets/index-BPr5vNuM.css +1 -0
  225. package/dist/outlook-ui/assets/index-Cm51CY9W.js +61 -0
  226. package/dist/outlook-ui/index.html +15 -0
  227. package/dist/repertoire/ado-client.js +15 -56
  228. package/dist/repertoire/ado-semantic.js +11 -10
  229. package/dist/repertoire/api-client.js +97 -0
  230. package/dist/repertoire/bitwarden-store.js +774 -0
  231. package/dist/repertoire/bundle-templates.js +72 -0
  232. package/dist/repertoire/bw-installer.js +180 -0
  233. package/dist/repertoire/coding/codex-jsonl.js +64 -0
  234. package/dist/repertoire/coding/context-pack.js +330 -0
  235. package/dist/repertoire/coding/feedback.js +197 -30
  236. package/dist/repertoire/coding/manager.js +158 -9
  237. package/dist/repertoire/coding/spawner.js +55 -9
  238. package/dist/repertoire/coding/tools.js +170 -7
  239. package/dist/repertoire/commerce-errors.js +109 -0
  240. package/dist/repertoire/commerce-self-test.js +156 -0
  241. package/dist/repertoire/credential-access.js +111 -0
  242. package/dist/repertoire/duffel-client.js +185 -0
  243. package/dist/repertoire/github-client.js +14 -55
  244. package/dist/repertoire/graph-client.js +11 -52
  245. package/dist/repertoire/guardrails.js +396 -0
  246. package/dist/repertoire/mcp-client.js +255 -0
  247. package/dist/repertoire/mcp-manager.js +305 -0
  248. package/dist/repertoire/mcp-tools.js +63 -0
  249. package/dist/repertoire/shell-sessions.js +133 -0
  250. package/dist/repertoire/skills.js +15 -24
  251. package/dist/repertoire/stripe-client.js +131 -0
  252. package/dist/repertoire/tasks/board.js +31 -5
  253. package/dist/repertoire/tasks/fix.js +182 -0
  254. package/dist/repertoire/tasks/index.js +16 -4
  255. package/dist/repertoire/tasks/lifecycle.js +2 -2
  256. package/dist/repertoire/tasks/parser.js +3 -2
  257. package/dist/repertoire/tasks/scanner.js +194 -37
  258. package/dist/repertoire/tasks/transitions.js +16 -78
  259. package/dist/repertoire/tool-results.js +29 -0
  260. package/dist/repertoire/tools-attachments.js +317 -0
  261. package/dist/repertoire/tools-base.js +46 -955
  262. package/dist/repertoire/tools-bluebubbles.js +1 -0
  263. package/dist/repertoire/tools-bridge.js +141 -0
  264. package/dist/repertoire/tools-bundle.js +984 -0
  265. package/dist/repertoire/tools-config.js +185 -0
  266. package/dist/repertoire/tools-continuity.js +248 -0
  267. package/dist/repertoire/tools-credential.js +381 -0
  268. package/dist/repertoire/tools-files.js +342 -0
  269. package/dist/repertoire/tools-flight.js +224 -0
  270. package/dist/repertoire/tools-flow.js +105 -0
  271. package/dist/repertoire/tools-github.js +1 -7
  272. package/dist/repertoire/tools-mail.js +1477 -0
  273. package/dist/repertoire/tools-notes.js +376 -0
  274. package/dist/repertoire/tools-session.js +749 -0
  275. package/dist/repertoire/tools-shell.js +120 -0
  276. package/dist/repertoire/tools-stripe.js +180 -0
  277. package/dist/repertoire/tools-surface.js +243 -0
  278. package/dist/repertoire/tools-teams.js +9 -39
  279. package/dist/repertoire/tools-travel.js +125 -0
  280. package/dist/repertoire/tools-trip.js +422 -0
  281. package/dist/repertoire/tools-user-profile.js +144 -0
  282. package/dist/repertoire/tools-vault.js +40 -0
  283. package/dist/repertoire/tools.js +107 -100
  284. package/dist/repertoire/travel-api-client.js +360 -0
  285. package/dist/repertoire/user-profile.js +131 -0
  286. package/dist/repertoire/vault-setup.js +246 -0
  287. package/dist/repertoire/vault-unlock.js +561 -0
  288. package/dist/scripts/claude-code-hook.js +41 -0
  289. package/dist/scripts/claude-code-stop-hook.js +47 -0
  290. package/dist/senses/attention-queue.js +116 -0
  291. package/dist/senses/bluebubbles/attachment-cache.js +53 -0
  292. package/dist/senses/bluebubbles/attachment-download.js +137 -0
  293. package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +219 -18
  294. package/dist/senses/bluebubbles/entry.js +73 -0
  295. package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
  296. package/dist/senses/bluebubbles/index.js +1881 -0
  297. package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -70
  298. package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
  299. package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
  300. package/dist/senses/bluebubbles/processed-log.js +111 -0
  301. package/dist/senses/bluebubbles/replay.js +129 -0
  302. package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +2 -2
  303. package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
  304. package/dist/senses/cli/bracketed-paste.js +82 -0
  305. package/dist/senses/cli/image-paste.js +287 -0
  306. package/dist/senses/cli/image-ref-navigation.js +75 -0
  307. package/dist/senses/cli/ink-app.js +156 -0
  308. package/dist/senses/cli/inline-diff.js +64 -0
  309. package/dist/senses/cli/input-keys.js +174 -0
  310. package/dist/senses/cli/kill-ring.js +86 -0
  311. package/dist/senses/cli/message-list.js +51 -0
  312. package/dist/senses/cli/ouro-tui.js +605 -0
  313. package/dist/senses/cli/spinner-imperative.js +135 -0
  314. package/dist/senses/cli/spinner.js +101 -0
  315. package/dist/senses/cli/status-line.js +60 -0
  316. package/dist/senses/cli/streaming-markdown.js +526 -0
  317. package/dist/senses/cli/tool-display.js +83 -0
  318. package/dist/senses/cli/tool-render.js +85 -0
  319. package/dist/senses/cli/tui-store.js +240 -0
  320. package/dist/senses/cli/virtual-list.js +35 -0
  321. package/dist/senses/cli-entry.js +60 -8
  322. package/dist/senses/cli-layout.js +187 -0
  323. package/dist/senses/cli.js +511 -209
  324. package/dist/senses/commands.js +66 -3
  325. package/dist/senses/habit-turn-message.js +108 -0
  326. package/dist/senses/inner-dialog-worker.js +175 -21
  327. package/dist/senses/inner-dialog.js +330 -27
  328. package/dist/senses/mail-entry.js +66 -0
  329. package/dist/senses/mail.js +379 -0
  330. package/dist/senses/pipeline.js +573 -164
  331. package/dist/senses/proactive-content-guard.js +51 -0
  332. package/dist/senses/shared-turn.js +248 -0
  333. package/dist/senses/surface-tool.js +68 -0
  334. package/dist/senses/teams-entry.js +60 -8
  335. package/dist/senses/teams.js +405 -170
  336. package/dist/senses/trust-gate.js +100 -5
  337. package/dist/trips/core.js +138 -0
  338. package/dist/trips/store.js +146 -0
  339. package/package.json +37 -7
  340. package/skills/agent-commerce.md +106 -0
  341. package/skills/browser-navigation.md +117 -0
  342. package/skills/commerce-setup-guide.md +116 -0
  343. package/skills/commerce-setup.md +84 -0
  344. package/skills/configure-dev-tools.md +101 -0
  345. package/skills/travel-planning.md +138 -0
  346. package/dist/heart/daemon/ouro-path-installer.js +0 -178
  347. package/dist/heart/daemon/subagent-installer.js +0 -166
  348. package/dist/heart/session-recall.js +0 -116
  349. package/dist/mind/associative-recall.js +0 -209
  350. package/dist/senses/bluebubbles-entry.js +0 -13
  351. package/dist/senses/bluebubbles.js +0 -1142
  352. package/dist/senses/debug-activity.js +0 -148
  353. package/subagents/README.md +0 -86
  354. package/subagents/work-doer.md +0 -237
  355. package/subagents/work-merger.md +0 -618
  356. package/subagents/work-planner.md +0 -390
  357. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
  358. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
  359. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
  360. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
  361. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
  362. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
  363. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
  364. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
  365. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
  366. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
  367. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
  368. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
  369. /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
  370. /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
  371. /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
  372. /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.summarizeProviderLane = summarizeProviderLane;
4
+ exports.summarizeProvidersForConnect = summarizeProvidersForConnect;
5
+ exports.connectEntryNeedsAttention = connectEntryNeedsAttention;
6
+ exports.renderConnectBay = renderConnectBay;
7
+ const runtime_1 = require("../../nerves/runtime");
8
+ const terminal_ui_1 = require("./terminal-ui");
9
+ const readiness_repair_1 = require("./readiness-repair");
10
+ const CONNECT_STATUS_PRIORITY = {
11
+ "needs attention": 0,
12
+ locked: 1,
13
+ "needs credentials": 2,
14
+ "needs setup": 3,
15
+ missing: 4,
16
+ "not attached": 5,
17
+ ready: 6,
18
+ attached: 6,
19
+ };
20
+ function escapeRegExp(value) {
21
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
22
+ }
23
+ function cleanExtractedCommand(command) {
24
+ const cleaned = command?.trim().replace(/[`'",;:.)]+$/g, "").trim();
25
+ return cleaned && cleaned.length > 0 ? cleaned : undefined;
26
+ }
27
+ function extractCommand(fixHint, commandPrefix) {
28
+ const escapedPrefix = escapeRegExp(commandPrefix);
29
+ const commandBody = `${escapedPrefix}(?=\\s|$)[^\`'"]*`;
30
+ const quoted = fixHint.match(new RegExp(`[\`'"](${commandBody})[\`'"]`, "i"))?.[1];
31
+ const unquoted = fixHint.match(new RegExp(`(${escapedPrefix}(?=\\s|$)[^\\n,;.]+)`, "i"))?.[1];
32
+ return cleanExtractedCommand(quoted) ?? cleanExtractedCommand(unquoted);
33
+ }
34
+ function resolveProviderHealthStatus(providerHealth) {
35
+ if (!providerHealth || providerHealth.ok)
36
+ return undefined;
37
+ const issue = providerHealth.issue;
38
+ if (issue?.kind === "vault-locked")
39
+ return "locked";
40
+ if (issue?.kind === "vault-unconfigured")
41
+ return "needs setup";
42
+ if (issue?.kind === "provider-credentials-missing")
43
+ return "needs credentials";
44
+ if (issue?.kind === "provider-live-check-failed")
45
+ return "needs attention";
46
+ const error = String(providerHealth.error).toLowerCase();
47
+ const fix = String(providerHealth.fix).toLowerCase();
48
+ if (error.includes("failed live check"))
49
+ return "needs attention";
50
+ if (error.includes("has no credentials"))
51
+ return "needs credentials";
52
+ if (error.includes("missing") && error.includes("provider"))
53
+ return "needs setup";
54
+ if (error.includes("vault is locked") || error.includes("vault locked"))
55
+ return "locked";
56
+ if (fix.includes("ouro auth verify"))
57
+ return "needs attention";
58
+ if (fix.includes("ouro auth"))
59
+ return "needs credentials";
60
+ if (fix.includes("ouro use"))
61
+ return "needs setup";
62
+ if (fix.includes("vault unlock"))
63
+ return "locked";
64
+ return "needs attention";
65
+ }
66
+ function resolveProviderHealthCommand(providerHealth, status) {
67
+ const issueCommand = (0, readiness_repair_1.preferredConnectRepairAction)(providerHealth?.issue)?.command;
68
+ if (issueCommand)
69
+ return issueCommand;
70
+ const fixHint = providerHealth?.fix;
71
+ if (!fixHint)
72
+ return undefined;
73
+ const prefixes = status === "locked"
74
+ ? ["ouro vault unlock", "ouro vault replace", "ouro vault recover"]
75
+ : status === "needs credentials"
76
+ ? ["ouro auth", "ouro connect", "ouro provider refresh", "ouro up"]
77
+ : status === "needs setup"
78
+ ? ["ouro use", "ouro connect", "ouro auth", "ouro up"]
79
+ : ["ouro auth verify", "ouro auth", "ouro provider refresh", "ouro use", "ouro connect", "ouro vault unlock", "ouro up"];
80
+ for (const prefix of prefixes) {
81
+ const command = extractCommand(fixHint, prefix);
82
+ if (command)
83
+ return command;
84
+ }
85
+ return undefined;
86
+ }
87
+ function providerHealthTargetLane(providerHealth) {
88
+ const issue = providerHealth?.issue;
89
+ const actionLane = issue?.actions
90
+ .map((action) => "lane" in action && action.lane ? action.lane : undefined)
91
+ .find((lane) => lane === "outward" || lane === "inner");
92
+ if (actionLane)
93
+ return actionLane;
94
+ const text = [issue?.summary, issue?.detail, providerHealth?.error]
95
+ .filter(Boolean)
96
+ .join(" ")
97
+ .toLowerCase();
98
+ if (/\boutward provider\b/.test(text) || /\boutward lane\b/.test(text))
99
+ return "outward";
100
+ if (/\binner provider\b/.test(text) || /\binner lane\b/.test(text))
101
+ return "inner";
102
+ return undefined;
103
+ }
104
+ function providerHealthAppliesToLane(providerHealth, lane) {
105
+ const targetLane = providerHealthTargetLane(providerHealth);
106
+ return !targetLane || targetLane === lane.lane;
107
+ }
108
+ function providerHealthDetail(providerHealth, status) {
109
+ if (status === "locked")
110
+ return "vault locked on this machine";
111
+ if (status === "needs credentials")
112
+ return "credentials missing";
113
+ if (status === "needs setup") {
114
+ return providerHealth?.issue?.detail ?? providerHealth?.error ?? "needs setup";
115
+ }
116
+ const detail = providerHealth?.issue?.detail ?? providerHealth?.error;
117
+ if (!detail)
118
+ return "live check needs attention";
119
+ return /failed live check/i.test(detail) ? detail : `failed live check: ${detail}`;
120
+ }
121
+ function isProblemStatus(status) {
122
+ return status !== "ready" && status !== "attached";
123
+ }
124
+ function providerEntrySummary(entry) {
125
+ return entry.description ?? "Selected provider lanes for this machine.";
126
+ }
127
+ function providerEntryDetailLines(entry) {
128
+ const lines = [];
129
+ if (entry.nextNote && !/^(Outward|Inner) lane: /.test(entry.nextNote)) {
130
+ lines.push(entry.nextNote);
131
+ }
132
+ if (entry.laneSummaries && entry.laneSummaries.length > 0) {
133
+ for (const lane of entry.laneSummaries) {
134
+ const laneLabel = lane.lane === "outward" ? "Outward lane" : "Inner lane";
135
+ lines.push(`${laneLabel}: ${lane.title} — ${lane.detail}`);
136
+ }
137
+ return lines;
138
+ }
139
+ return [...lines, ...(entry.detailLines ?? [])];
140
+ }
141
+ function capabilityEntryDetailLines(entry) {
142
+ return [
143
+ ...(entry.detailLines ?? []),
144
+ ...(entry.nextNote ? [entry.nextNote] : []),
145
+ ];
146
+ }
147
+ function entryToWizardItem(entry) {
148
+ return {
149
+ key: entry.option,
150
+ label: entry.name,
151
+ status: entry.status,
152
+ ...(entry.section === "Providers"
153
+ ? { summary: providerEntrySummary(entry) }
154
+ : entry.description
155
+ ? { summary: entry.description }
156
+ : {}),
157
+ detailLines: entry.section === "Providers"
158
+ ? providerEntryDetailLines(entry)
159
+ : capabilityEntryDetailLines(entry),
160
+ ...(entry.nextAction ? { command: entry.nextAction } : {}),
161
+ };
162
+ }
163
+ function nextStepFor(entries) {
164
+ const nextEntry = entries.find((entry) => isProblemStatus(entry.status));
165
+ if (!nextEntry) {
166
+ return {
167
+ label: "Everything here is already connected.",
168
+ detail: "Pick any capability if you want to review it, refresh it, or change its setup.",
169
+ };
170
+ }
171
+ return {
172
+ label: `Start with ${nextEntry.name}.`,
173
+ detail: nextEntry.nextNote ?? nextEntry.description ?? `Status: ${nextEntry.status}.`,
174
+ command: nextEntry.nextAction,
175
+ };
176
+ }
177
+ function sectionToWizard(entries, section, summary) {
178
+ return {
179
+ title: section,
180
+ summary,
181
+ items: entries.filter((entry) => entry.section === section).map((entry) => entryToWizardItem(entry)),
182
+ };
183
+ }
184
+ function summarizeProviderLane(agent, lane, providerHealth) {
185
+ const providerHealthStatus = resolveProviderHealthStatus(providerHealth);
186
+ const providerHealthCommand = resolveProviderHealthCommand(providerHealth, providerHealthStatus);
187
+ if (lane.status === "unconfigured") {
188
+ return {
189
+ lane: lane.lane,
190
+ status: "needs setup",
191
+ title: "choose provider and model",
192
+ detail: "needs setup",
193
+ action: lane.repairCommand,
194
+ };
195
+ }
196
+ const fallbackAction = providerHealthCommand ?? lane.credential.repairCommand;
197
+ if (providerHealth?.ok) {
198
+ return {
199
+ lane: lane.lane,
200
+ status: "ready",
201
+ title: `${lane.provider} / ${lane.model}`,
202
+ detail: "ready",
203
+ };
204
+ }
205
+ if (providerHealthStatus && providerHealthAppliesToLane(providerHealth, lane)) {
206
+ return {
207
+ lane: lane.lane,
208
+ status: providerHealthStatus,
209
+ title: `${lane.provider} / ${lane.model}`,
210
+ detail: providerHealthDetail(providerHealth, providerHealthStatus),
211
+ action: fallbackAction,
212
+ };
213
+ }
214
+ if (lane.credential.status === "missing") {
215
+ return {
216
+ lane: lane.lane,
217
+ status: "needs credentials",
218
+ title: `${lane.provider} / ${lane.model}`,
219
+ detail: "credentials missing",
220
+ action: fallbackAction,
221
+ };
222
+ }
223
+ if (lane.credential.status === "invalid-pool") {
224
+ return {
225
+ lane: lane.lane,
226
+ status: providerHealthStatus === "locked" ? "locked" : "needs attention",
227
+ title: `${lane.provider} / ${lane.model}`,
228
+ detail: providerHealthStatus === "locked" ? "vault locked on this machine" : "vault unavailable",
229
+ action: fallbackAction,
230
+ };
231
+ }
232
+ if (lane.readiness.status === "failed") {
233
+ return {
234
+ lane: lane.lane,
235
+ status: "needs attention",
236
+ title: `${lane.provider} / ${lane.model}`,
237
+ detail: `failed live check: ${lane.readiness.error ?? "unknown error"}`,
238
+ action: providerHealthCommand ?? providerHealth?.fix ?? `ouro auth --agent ${agent} --provider ${lane.provider}`,
239
+ };
240
+ }
241
+ if (lane.readiness.status === "stale") {
242
+ return {
243
+ lane: lane.lane,
244
+ status: "needs attention",
245
+ title: `${lane.provider} / ${lane.model}`,
246
+ detail: ["live check is stale", lane.readiness.reason].filter(Boolean).join(": "),
247
+ action: providerHealth?.fix,
248
+ };
249
+ }
250
+ if (lane.readiness.status === "ready") {
251
+ return {
252
+ lane: lane.lane,
253
+ status: "ready",
254
+ title: `${lane.provider} / ${lane.model}`,
255
+ detail: "ready",
256
+ };
257
+ }
258
+ return {
259
+ lane: lane.lane,
260
+ status: "needs attention",
261
+ title: `${lane.provider} / ${lane.model}`,
262
+ detail: "live check did not complete yet",
263
+ action: providerHealth?.fix,
264
+ };
265
+ }
266
+ function summarizeProvidersForConnect(agent, visibility, providerHealth) {
267
+ const laneSummaries = visibility.lanes.map((lane) => summarizeProviderLane(agent, lane, providerHealth));
268
+ const worstLaneStatus = laneSummaries.reduce((worst, lane) => CONNECT_STATUS_PRIORITY[lane.status] < CONNECT_STATUS_PRIORITY[worst] ? lane.status : worst, "ready");
269
+ const providerHealthStatus = resolveProviderHealthStatus(providerHealth);
270
+ const providerHealthCommand = resolveProviderHealthCommand(providerHealth, providerHealthStatus);
271
+ const nextLane = laneSummaries.find((lane) => isProblemStatus(lane.status));
272
+ return {
273
+ status: providerHealthStatus ?? worstLaneStatus,
274
+ laneSummaries,
275
+ detailLines: laneSummaries.flatMap((lane) => [
276
+ `${lane.lane === "outward" ? "Outward lane" : "Inner lane"}: ${lane.title}`,
277
+ lane.detail,
278
+ ]),
279
+ nextAction: providerHealthCommand ?? nextLane?.action,
280
+ nextNote: providerHealthStatus === "locked"
281
+ ? "Unlock this agent's credential vault on this machine."
282
+ : nextLane
283
+ ? `${nextLane.lane === "outward" ? "Outward lane" : "Inner lane"}: ${nextLane.detail}`
284
+ : undefined,
285
+ };
286
+ }
287
+ function connectEntryNeedsAttention(entry) {
288
+ return isProblemStatus(entry.status);
289
+ }
290
+ function renderConnectBay(entries, options) {
291
+ (0, runtime_1.emitNervesEvent)({
292
+ component: "daemon",
293
+ event: "daemon.connect_bay_rendered",
294
+ message: "rendered connect bay",
295
+ meta: {
296
+ agent: options.agent,
297
+ isTTY: options.isTTY,
298
+ entryCount: entries.length,
299
+ columns: options.columns ?? null,
300
+ },
301
+ });
302
+ return (0, terminal_ui_1.renderTerminalWizard)({
303
+ isTTY: options.isTTY,
304
+ columns: options.columns,
305
+ masthead: {
306
+ subtitle: "Set up connections one step at a time.",
307
+ },
308
+ title: `Connect ${options.agent}`,
309
+ summary: "Choose one capability to bring online. Each row tells you whether Ouro checked it live just now or is showing saved setup on this machine.",
310
+ nextStep: nextStepFor(entries),
311
+ sections: [
312
+ sectionToWizard(entries, "Providers", "Selected outward and inner lanes for this machine."),
313
+ sectionToWizard(entries, "Portable", "These travel with the agent bundle when their secrets are portable."),
314
+ sectionToWizard(entries, "This machine", "These depend on local attachments or machine-specific setup."),
315
+ ],
316
+ footerLines: [
317
+ "6. Not now",
318
+ "Choose a number, or type the capability name.",
319
+ ],
320
+ prompt: options.prompt,
321
+ suppressEvent: true,
322
+ });
323
+ }