@ouro.bot/cli 0.1.0-alpha.49 → 0.1.0-alpha.491

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 (365) 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 +3126 -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 +989 -0
  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/bridges/manager.js +37 -0
  30. package/dist/heart/bridges/state-machine.js +20 -0
  31. package/dist/heart/bundle-state.js +168 -0
  32. package/dist/heart/commitments.js +111 -0
  33. package/dist/heart/config-registry.js +304 -0
  34. package/dist/heart/config.js +119 -129
  35. package/dist/heart/core.js +845 -229
  36. package/dist/heart/cross-chat-delivery.js +131 -0
  37. package/dist/heart/daemon/agent-config-check.js +490 -0
  38. package/dist/heart/daemon/agent-discovery.js +79 -3
  39. package/dist/heart/daemon/agent-service.js +360 -0
  40. package/dist/heart/daemon/agentic-repair.js +216 -0
  41. package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
  42. package/dist/heart/daemon/cadence.js +70 -0
  43. package/dist/heart/daemon/cli-defaults.js +640 -0
  44. package/dist/heart/daemon/cli-exec.js +7239 -0
  45. package/dist/heart/daemon/cli-help.js +493 -0
  46. package/dist/heart/daemon/cli-parse.js +1533 -0
  47. package/dist/heart/daemon/cli-render-doctor.js +57 -0
  48. package/dist/heart/daemon/cli-render.js +561 -0
  49. package/dist/heart/daemon/cli-types.js +8 -0
  50. package/dist/heart/daemon/connect-bay.js +323 -0
  51. package/dist/heart/daemon/daemon-cli.js +29 -1616
  52. package/dist/heart/daemon/daemon-entry.js +345 -3
  53. package/dist/heart/daemon/daemon-health.js +141 -0
  54. package/dist/heart/daemon/daemon-runtime-sync.js +190 -12
  55. package/dist/heart/daemon/daemon-tombstone.js +236 -0
  56. package/dist/heart/daemon/daemon.js +677 -58
  57. package/dist/heart/daemon/dns-workflow.js +394 -0
  58. package/dist/heart/daemon/doctor-types.js +8 -0
  59. package/dist/heart/daemon/doctor.js +486 -0
  60. package/dist/heart/daemon/health-monitor.js +92 -1
  61. package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
  62. package/dist/heart/daemon/hooks/bundle-meta.js +115 -1
  63. package/dist/heart/daemon/http-health-probe.js +80 -0
  64. package/dist/heart/daemon/human-command-screens.js +234 -0
  65. package/dist/heart/daemon/human-readiness.js +114 -0
  66. package/dist/heart/daemon/inner-status.js +89 -0
  67. package/dist/heart/daemon/interactive-repair.js +394 -0
  68. package/dist/heart/daemon/launchd.js +25 -5
  69. package/dist/heart/daemon/log-tailer.js +82 -12
  70. package/dist/heart/daemon/logs-prune.js +110 -0
  71. package/dist/heart/daemon/message-router.js +2 -2
  72. package/dist/heart/daemon/os-cron-deps.js +134 -0
  73. package/dist/heart/daemon/ouro-bot-entry.js +4 -2
  74. package/dist/heart/daemon/ouro-entry.js +3 -1
  75. package/dist/heart/daemon/process-manager.js +214 -0
  76. package/dist/heart/daemon/provider-discovery.js +137 -0
  77. package/dist/heart/daemon/provider-ping-progress.js +83 -0
  78. package/dist/heart/daemon/pulse.js +475 -0
  79. package/dist/heart/daemon/readiness-repair.js +365 -0
  80. package/dist/heart/daemon/run-hooks.js +2 -0
  81. package/dist/heart/daemon/runtime-logging.js +67 -16
  82. package/dist/heart/daemon/runtime-metadata.js +73 -0
  83. package/dist/heart/daemon/runtime-mode.js +67 -0
  84. package/dist/heart/daemon/safe-mode.js +161 -0
  85. package/dist/heart/daemon/sense-manager.js +178 -37
  86. package/dist/heart/daemon/session-id-resolver.js +131 -0
  87. package/dist/heart/daemon/skill-management-installer.js +94 -0
  88. package/dist/heart/daemon/socket-client.js +109 -4
  89. package/dist/heart/daemon/stale-bundle-prune.js +96 -0
  90. package/dist/heart/daemon/startup-tui.js +264 -0
  91. package/dist/heart/daemon/task-scheduler.js +3 -25
  92. package/dist/heart/daemon/terminal-ui.js +499 -0
  93. package/dist/heart/daemon/thoughts.js +162 -17
  94. package/dist/heart/daemon/up-progress.js +366 -0
  95. package/dist/heart/daemon/vault-items.js +56 -0
  96. package/dist/heart/delegation.js +62 -0
  97. package/dist/heart/habits/habit-migration.js +189 -0
  98. package/dist/heart/habits/habit-parser.js +140 -0
  99. package/dist/heart/habits/habit-runtime-state.js +100 -0
  100. package/dist/heart/habits/habit-scheduler.js +372 -0
  101. package/dist/heart/{daemon → hatch}/hatch-flow.js +52 -117
  102. package/dist/heart/{daemon → hatch}/hatch-specialist.js +3 -3
  103. package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
  104. package/dist/heart/{daemon → hatch}/specialist-tools.js +35 -12
  105. package/dist/heart/identity.js +201 -66
  106. package/dist/heart/kept-notes.js +357 -0
  107. package/dist/heart/kicks.js +1 -1
  108. package/dist/heart/machine-identity.js +161 -0
  109. package/dist/heart/mail-import-discovery.js +353 -0
  110. package/dist/heart/mcp/mcp-server.js +653 -0
  111. package/dist/heart/migrate-config.js +100 -0
  112. package/dist/heart/model-capabilities.js +59 -0
  113. package/dist/heart/outlook/outlook-http-hooks.js +66 -0
  114. package/dist/heart/outlook/outlook-http-response.js +7 -0
  115. package/dist/heart/outlook/outlook-http-routes.js +244 -0
  116. package/dist/heart/outlook/outlook-http-static.js +103 -0
  117. package/dist/heart/outlook/outlook-http-transport.js +116 -0
  118. package/dist/heart/outlook/outlook-http.js +99 -0
  119. package/dist/heart/outlook/outlook-read.js +31 -0
  120. package/dist/heart/outlook/outlook-types.js +27 -0
  121. package/dist/heart/outlook/outlook-view.js +195 -0
  122. package/dist/heart/outlook/readers/agent-machine.js +382 -0
  123. package/dist/heart/outlook/readers/continuity-readers.js +336 -0
  124. package/dist/heart/outlook/readers/mail.js +362 -0
  125. package/dist/heart/outlook/readers/runtime-readers.js +644 -0
  126. package/dist/heart/outlook/readers/sessions.js +232 -0
  127. package/dist/heart/outlook/readers/shared.js +111 -0
  128. package/dist/heart/platform.js +81 -0
  129. package/dist/heart/progress-story.js +42 -0
  130. package/dist/heart/provider-attempt.js +134 -0
  131. package/dist/heart/provider-binding-resolver.js +255 -0
  132. package/dist/heart/provider-credentials.js +424 -0
  133. package/dist/heart/provider-failover.js +301 -0
  134. package/dist/heart/provider-models.js +81 -0
  135. package/dist/heart/provider-ping.js +262 -0
  136. package/dist/heart/provider-state.js +216 -0
  137. package/dist/heart/provider-visibility.js +188 -0
  138. package/dist/heart/providers/anthropic-token.js +131 -0
  139. package/dist/heart/providers/anthropic.js +193 -55
  140. package/dist/heart/providers/azure.js +104 -13
  141. package/dist/heart/providers/error-classification.js +63 -0
  142. package/dist/heart/providers/github-copilot.js +145 -0
  143. package/dist/heart/providers/minimax-vlm.js +189 -0
  144. package/dist/heart/providers/minimax.js +29 -7
  145. package/dist/heart/providers/openai-codex.js +63 -39
  146. package/dist/heart/runtime-capability-check.js +170 -0
  147. package/dist/heart/runtime-credentials.js +260 -0
  148. package/dist/heart/sense-truth.js +11 -4
  149. package/dist/heart/session-activity.js +190 -0
  150. package/dist/heart/session-events.js +981 -0
  151. package/dist/heart/session-transcript.js +167 -0
  152. package/dist/heart/start-of-turn-packet.js +345 -0
  153. package/dist/heart/streaming.js +48 -28
  154. package/dist/heart/sync.js +332 -0
  155. package/dist/heart/target-resolution.js +127 -0
  156. package/dist/heart/tempo.js +93 -0
  157. package/dist/heart/temporal-view.js +41 -0
  158. package/dist/heart/tool-activity-callbacks.js +36 -0
  159. package/dist/heart/tool-description.js +135 -0
  160. package/dist/heart/tool-friction.js +55 -0
  161. package/dist/heart/tool-loop.js +200 -0
  162. package/dist/heart/turn-context.js +372 -0
  163. package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +1 -1
  164. package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
  165. package/dist/heart/versioning/ouro-path-installer.js +425 -0
  166. package/dist/heart/versioning/ouro-version-manager.js +295 -0
  167. package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
  168. package/dist/heart/{daemon → versioning}/update-checker.js +5 -1
  169. package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
  170. package/dist/mailroom/attention.js +167 -0
  171. package/dist/mailroom/autonomy.js +209 -0
  172. package/dist/mailroom/blob-store.js +600 -0
  173. package/dist/mailroom/core.js +658 -0
  174. package/dist/mailroom/entry.js +160 -0
  175. package/dist/mailroom/file-store.js +426 -0
  176. package/dist/mailroom/mbox-import.js +382 -0
  177. package/dist/mailroom/outbound.js +380 -0
  178. package/dist/mailroom/policy.js +263 -0
  179. package/dist/mailroom/reader.js +219 -0
  180. package/dist/mailroom/search-cache.js +182 -0
  181. package/dist/mailroom/search-relevance.js +319 -0
  182. package/dist/mailroom/smtp-ingress.js +176 -0
  183. package/dist/mailroom/source-state.js +176 -0
  184. package/dist/mailroom/travel-extract.js +89 -0
  185. package/dist/mind/bundle-manifest.js +7 -1
  186. package/dist/mind/context.js +164 -93
  187. package/dist/mind/diary-integrity.js +60 -0
  188. package/dist/mind/{memory.js → diary.js} +74 -93
  189. package/dist/mind/embedding-provider.js +60 -0
  190. package/dist/mind/file-state.js +179 -0
  191. package/dist/mind/friends/channel.js +30 -0
  192. package/dist/mind/friends/group-context.js +144 -0
  193. package/dist/mind/friends/resolver.js +54 -2
  194. package/dist/mind/friends/store-file.js +39 -3
  195. package/dist/mind/friends/trust-explanation.js +74 -0
  196. package/dist/mind/friends/types.js +2 -2
  197. package/dist/mind/journal-index.js +161 -0
  198. package/dist/mind/note-search.js +268 -0
  199. package/dist/mind/obligation-steering.js +221 -0
  200. package/dist/mind/pending.js +56 -8
  201. package/dist/mind/prompt-refresh.js +3 -2
  202. package/dist/mind/prompt.js +973 -168
  203. package/dist/mind/provenance-trust.js +26 -0
  204. package/dist/mind/scrutiny.js +173 -0
  205. package/dist/nerves/cli-logging.js +7 -1
  206. package/dist/nerves/coverage/audit-rules.js +15 -6
  207. package/dist/nerves/coverage/audit.js +28 -2
  208. package/dist/nerves/coverage/cli.js +1 -1
  209. package/dist/nerves/coverage/contract.js +5 -5
  210. package/dist/nerves/coverage/file-completeness.js +93 -5
  211. package/dist/nerves/coverage/run-artifacts.js +1 -1
  212. package/dist/nerves/event-buffer.js +111 -0
  213. package/dist/nerves/index.js +224 -4
  214. package/dist/nerves/observation.js +20 -0
  215. package/dist/nerves/redact.js +79 -0
  216. package/dist/nerves/runtime.js +5 -1
  217. package/dist/outlook-ui/assets/index-BPr5vNuM.css +1 -0
  218. package/dist/outlook-ui/assets/index-Cm51CY9W.js +61 -0
  219. package/dist/outlook-ui/index.html +15 -0
  220. package/dist/repertoire/ado-client.js +15 -56
  221. package/dist/repertoire/ado-semantic.js +11 -10
  222. package/dist/repertoire/api-client.js +97 -0
  223. package/dist/repertoire/bitwarden-store.js +774 -0
  224. package/dist/repertoire/bundle-templates.js +72 -0
  225. package/dist/repertoire/bw-installer.js +180 -0
  226. package/dist/repertoire/coding/codex-jsonl.js +64 -0
  227. package/dist/repertoire/coding/context-pack.js +330 -0
  228. package/dist/repertoire/coding/feedback.js +197 -30
  229. package/dist/repertoire/coding/manager.js +158 -9
  230. package/dist/repertoire/coding/spawner.js +55 -9
  231. package/dist/repertoire/coding/tools.js +170 -7
  232. package/dist/repertoire/commerce-errors.js +109 -0
  233. package/dist/repertoire/commerce-self-test.js +156 -0
  234. package/dist/repertoire/credential-access.js +111 -0
  235. package/dist/repertoire/duffel-client.js +185 -0
  236. package/dist/repertoire/github-client.js +14 -55
  237. package/dist/repertoire/graph-client.js +11 -52
  238. package/dist/repertoire/guardrails.js +396 -0
  239. package/dist/repertoire/mcp-client.js +255 -0
  240. package/dist/repertoire/mcp-manager.js +305 -0
  241. package/dist/repertoire/mcp-tools.js +63 -0
  242. package/dist/repertoire/shell-sessions.js +133 -0
  243. package/dist/repertoire/skills.js +15 -24
  244. package/dist/repertoire/stripe-client.js +131 -0
  245. package/dist/repertoire/tasks/board.js +31 -5
  246. package/dist/repertoire/tasks/fix.js +182 -0
  247. package/dist/repertoire/tasks/index.js +16 -4
  248. package/dist/repertoire/tasks/lifecycle.js +2 -2
  249. package/dist/repertoire/tasks/parser.js +3 -2
  250. package/dist/repertoire/tasks/scanner.js +194 -37
  251. package/dist/repertoire/tasks/transitions.js +16 -78
  252. package/dist/repertoire/tool-results.js +29 -0
  253. package/dist/repertoire/tools-attachments.js +317 -0
  254. package/dist/repertoire/tools-base.js +46 -842
  255. package/dist/repertoire/tools-bluebubbles.js +1 -0
  256. package/dist/repertoire/tools-bridge.js +141 -0
  257. package/dist/repertoire/tools-bundle.js +984 -0
  258. package/dist/repertoire/tools-config.js +185 -0
  259. package/dist/repertoire/tools-continuity.js +248 -0
  260. package/dist/repertoire/tools-credential.js +381 -0
  261. package/dist/repertoire/tools-files.js +342 -0
  262. package/dist/repertoire/tools-flight.js +224 -0
  263. package/dist/repertoire/tools-flow.js +105 -0
  264. package/dist/repertoire/tools-github.js +1 -7
  265. package/dist/repertoire/tools-mail.js +1281 -0
  266. package/dist/repertoire/tools-notes.js +376 -0
  267. package/dist/repertoire/tools-session.js +749 -0
  268. package/dist/repertoire/tools-shell.js +120 -0
  269. package/dist/repertoire/tools-stripe.js +180 -0
  270. package/dist/repertoire/tools-surface.js +243 -0
  271. package/dist/repertoire/tools-teams.js +9 -39
  272. package/dist/repertoire/tools-travel.js +125 -0
  273. package/dist/repertoire/tools-trip.js +356 -0
  274. package/dist/repertoire/tools-user-profile.js +144 -0
  275. package/dist/repertoire/tools-vault.js +40 -0
  276. package/dist/repertoire/tools.js +144 -115
  277. package/dist/repertoire/travel-api-client.js +360 -0
  278. package/dist/repertoire/user-profile.js +131 -0
  279. package/dist/repertoire/vault-setup.js +246 -0
  280. package/dist/repertoire/vault-unlock.js +561 -0
  281. package/dist/scripts/claude-code-hook.js +41 -0
  282. package/dist/scripts/claude-code-stop-hook.js +47 -0
  283. package/dist/senses/attention-queue.js +116 -0
  284. package/dist/senses/bluebubbles/attachment-cache.js +53 -0
  285. package/dist/senses/bluebubbles/attachment-download.js +137 -0
  286. package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +219 -18
  287. package/dist/senses/bluebubbles/entry.js +73 -0
  288. package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
  289. package/dist/senses/bluebubbles/index.js +1835 -0
  290. package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -70
  291. package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
  292. package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
  293. package/dist/senses/bluebubbles/processed-log.js +111 -0
  294. package/dist/senses/bluebubbles/replay.js +129 -0
  295. package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +2 -2
  296. package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
  297. package/dist/senses/cli/bracketed-paste.js +82 -0
  298. package/dist/senses/cli/image-paste.js +287 -0
  299. package/dist/senses/cli/image-ref-navigation.js +75 -0
  300. package/dist/senses/cli/ink-app.js +156 -0
  301. package/dist/senses/cli/inline-diff.js +64 -0
  302. package/dist/senses/cli/input-keys.js +174 -0
  303. package/dist/senses/cli/kill-ring.js +86 -0
  304. package/dist/senses/cli/message-list.js +51 -0
  305. package/dist/senses/cli/ouro-tui.js +605 -0
  306. package/dist/senses/cli/spinner-imperative.js +135 -0
  307. package/dist/senses/cli/spinner.js +101 -0
  308. package/dist/senses/cli/status-line.js +60 -0
  309. package/dist/senses/cli/streaming-markdown.js +526 -0
  310. package/dist/senses/cli/tool-display.js +83 -0
  311. package/dist/senses/cli/tool-render.js +85 -0
  312. package/dist/senses/cli/tui-store.js +240 -0
  313. package/dist/senses/cli/virtual-list.js +35 -0
  314. package/dist/senses/cli-entry.js +60 -8
  315. package/dist/senses/cli-layout.js +187 -0
  316. package/dist/senses/cli.js +515 -211
  317. package/dist/senses/commands.js +66 -3
  318. package/dist/senses/habit-turn-message.js +108 -0
  319. package/dist/senses/inner-dialog-worker.js +110 -20
  320. package/dist/senses/inner-dialog.js +408 -21
  321. package/dist/senses/mail-entry.js +66 -0
  322. package/dist/senses/mail.js +379 -0
  323. package/dist/senses/pipeline.js +588 -81
  324. package/dist/senses/proactive-content-guard.js +51 -0
  325. package/dist/senses/shared-turn.js +248 -0
  326. package/dist/senses/surface-tool.js +68 -0
  327. package/dist/senses/teams-entry.js +60 -8
  328. package/dist/senses/teams.js +412 -163
  329. package/dist/senses/trust-gate.js +100 -5
  330. package/dist/trips/core.js +138 -0
  331. package/dist/trips/store.js +146 -0
  332. package/package.json +37 -7
  333. package/skills/agent-commerce.md +106 -0
  334. package/skills/browser-navigation.md +117 -0
  335. package/skills/commerce-setup-guide.md +116 -0
  336. package/skills/commerce-setup.md +84 -0
  337. package/skills/configure-dev-tools.md +101 -0
  338. package/skills/travel-planning.md +138 -0
  339. package/dist/heart/daemon/ouro-path-installer.js +0 -178
  340. package/dist/heart/daemon/subagent-installer.js +0 -166
  341. package/dist/heart/session-recall.js +0 -116
  342. package/dist/mind/associative-recall.js +0 -209
  343. package/dist/senses/bluebubbles-entry.js +0 -13
  344. package/dist/senses/bluebubbles.js +0 -1032
  345. package/dist/senses/debug-activity.js +0 -127
  346. package/subagents/README.md +0 -86
  347. package/subagents/work-doer.md +0 -237
  348. package/subagents/work-merger.md +0 -618
  349. package/subagents/work-planner.md +0 -390
  350. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
  351. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
  352. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
  353. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
  354. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
  355. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
  356. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
  357. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
  358. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
  359. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
  360. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
  361. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
  362. /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
  363. /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
  364. /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
  365. /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
+ }