@ouro.bot/cli 0.1.0-alpha.52 → 0.1.0-alpha.520

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 (375) hide show
  1. package/README.md +133 -19
  2. package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/agent.json +4 -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 +3353 -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 +837 -26
  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 +427 -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 +948 -243
  34. package/dist/heart/cross-chat-delivery.js +3 -18
  35. package/dist/heart/daemon/agent-config-check.js +512 -0
  36. package/dist/heart/daemon/agent-discovery.js +102 -3
  37. package/dist/heart/daemon/agent-service.js +360 -0
  38. package/dist/heart/daemon/agentic-repair.js +554 -0
  39. package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
  40. package/dist/heart/daemon/boot-sync-probe.js +197 -0
  41. package/dist/heart/daemon/cadence.js +70 -0
  42. package/dist/heart/daemon/cli-defaults.js +643 -0
  43. package/dist/heart/daemon/cli-exec.js +7476 -0
  44. package/dist/heart/daemon/cli-help.js +493 -0
  45. package/dist/heart/daemon/cli-parse.js +1557 -0
  46. package/dist/heart/daemon/cli-render-doctor.js +57 -0
  47. package/dist/heart/daemon/cli-render.js +649 -0
  48. package/dist/heart/daemon/cli-types.js +8 -0
  49. package/dist/heart/daemon/connect-bay.js +323 -0
  50. package/dist/heart/daemon/daemon-cli.js +29 -1631
  51. package/dist/heart/daemon/daemon-entry.js +404 -3
  52. package/dist/heart/daemon/daemon-health.js +183 -0
  53. package/dist/heart/daemon/daemon-rollup.js +58 -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 +758 -60
  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 +837 -0
  60. package/dist/heart/daemon/drift-detection.js +146 -0
  61. package/dist/heart/daemon/health-monitor.js +92 -1
  62. package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
  63. package/dist/heart/daemon/hooks/bundle-meta.js +115 -1
  64. package/dist/heart/daemon/http-health-probe.js +80 -0
  65. package/dist/heart/daemon/human-command-screens.js +234 -0
  66. package/dist/heart/daemon/human-readiness.js +114 -0
  67. package/dist/heart/daemon/inner-status.js +102 -0
  68. package/dist/heart/daemon/interactive-repair.js +394 -0
  69. package/dist/heart/daemon/launchd.js +25 -5
  70. package/dist/heart/daemon/log-tailer.js +82 -12
  71. package/dist/heart/daemon/logs-prune.js +110 -0
  72. package/dist/heart/daemon/message-router.js +2 -2
  73. package/dist/heart/daemon/os-cron-deps.js +134 -0
  74. package/dist/heart/daemon/ouro-bot-entry.js +4 -2
  75. package/dist/heart/daemon/ouro-entry.js +3 -1
  76. package/dist/heart/daemon/process-manager.js +381 -26
  77. package/dist/heart/daemon/provider-discovery.js +137 -0
  78. package/dist/heart/daemon/provider-ping-progress.js +83 -0
  79. package/dist/heart/daemon/pulse.js +475 -0
  80. package/dist/heart/daemon/readiness-repair.js +365 -0
  81. package/dist/heart/daemon/run-hooks.js +2 -0
  82. package/dist/heart/daemon/runtime-logging.js +67 -16
  83. package/dist/heart/daemon/runtime-metadata.js +73 -0
  84. package/dist/heart/daemon/runtime-mode.js +67 -0
  85. package/dist/heart/daemon/safe-mode.js +161 -0
  86. package/dist/heart/daemon/sense-manager.js +259 -37
  87. package/dist/heart/daemon/session-id-resolver.js +131 -0
  88. package/dist/heart/daemon/skill-management-installer.js +94 -0
  89. package/dist/heart/daemon/socket-client.js +109 -4
  90. package/dist/heart/daemon/stale-bundle-prune.js +96 -0
  91. package/dist/heart/daemon/startup-tui.js +330 -0
  92. package/dist/heart/daemon/task-scheduler.js +3 -25
  93. package/dist/heart/daemon/terminal-ui.js +499 -0
  94. package/dist/heart/daemon/thoughts.js +162 -17
  95. package/dist/heart/daemon/up-progress.js +366 -0
  96. package/dist/heart/daemon/vault-items.js +56 -0
  97. package/dist/heart/delegation.js +1 -1
  98. package/dist/heart/habits/habit-migration.js +189 -0
  99. package/dist/heart/habits/habit-parser.js +140 -0
  100. package/dist/heart/habits/habit-runtime-state.js +100 -0
  101. package/dist/heart/habits/habit-scheduler.js +372 -0
  102. package/dist/heart/{daemon → hatch}/hatch-flow.js +52 -117
  103. package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
  104. package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
  105. package/dist/heart/{daemon → hatch}/specialist-tools.js +35 -12
  106. package/dist/heart/identity.js +205 -66
  107. package/dist/heart/kept-notes.js +357 -0
  108. package/dist/heart/kicks.js +1 -1
  109. package/dist/heart/machine-identity.js +161 -0
  110. package/dist/heart/mail-import-discovery.js +353 -0
  111. package/dist/heart/mcp/mcp-server.js +653 -0
  112. package/dist/heart/migrate-config.js +100 -0
  113. package/dist/heart/model-capabilities.js +19 -0
  114. package/dist/heart/outlook/outlook-http-hooks.js +66 -0
  115. package/dist/heart/outlook/outlook-http-response.js +7 -0
  116. package/dist/heart/outlook/outlook-http-routes.js +244 -0
  117. package/dist/heart/outlook/outlook-http-static.js +103 -0
  118. package/dist/heart/outlook/outlook-http-transport.js +116 -0
  119. package/dist/heart/outlook/outlook-http.js +99 -0
  120. package/dist/heart/outlook/outlook-read.js +31 -0
  121. package/dist/heart/outlook/outlook-types.js +27 -0
  122. package/dist/heart/outlook/outlook-view.js +195 -0
  123. package/dist/heart/outlook/readers/agent-machine.js +382 -0
  124. package/dist/heart/outlook/readers/continuity-readers.js +336 -0
  125. package/dist/heart/outlook/readers/mail.js +362 -0
  126. package/dist/heart/outlook/readers/runtime-readers.js +650 -0
  127. package/dist/heart/outlook/readers/sessions.js +232 -0
  128. package/dist/heart/outlook/readers/shared.js +111 -0
  129. package/dist/heart/platform.js +81 -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 +425 -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 +139 -52
  140. package/dist/heart/providers/azure.js +97 -13
  141. package/dist/heart/providers/error-classification.js +127 -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 +26 -8
  145. package/dist/heart/providers/openai-codex.js +55 -40
  146. package/dist/heart/runtime-capability-check.js +170 -0
  147. package/dist/heart/runtime-credentials.js +367 -0
  148. package/dist/heart/sense-truth.js +11 -4
  149. package/dist/heart/session-activity.js +43 -22
  150. package/dist/heart/session-events.js +1149 -0
  151. package/dist/heart/session-playback-cli-main.js +5 -0
  152. package/dist/heart/session-playback-cli.js +36 -0
  153. package/dist/heart/session-playback.js +231 -0
  154. package/dist/heart/session-stats-cli-main.js +5 -0
  155. package/dist/heart/session-stats.js +182 -0
  156. package/dist/heart/session-transcript.js +243 -0
  157. package/dist/heart/start-of-turn-packet.js +345 -0
  158. package/dist/heart/streaming.js +44 -27
  159. package/dist/heart/sync-classification.js +176 -0
  160. package/dist/heart/sync.js +449 -0
  161. package/dist/heart/target-resolution.js +9 -5
  162. package/dist/heart/tempo.js +93 -0
  163. package/dist/heart/temporal-view.js +41 -0
  164. package/dist/heart/timeouts.js +101 -0
  165. package/dist/heart/tool-activity-callbacks.js +36 -0
  166. package/dist/heart/tool-description.js +139 -0
  167. package/dist/heart/tool-friction.js +55 -0
  168. package/dist/heart/tool-loop.js +200 -0
  169. package/dist/heart/turn-context.js +381 -0
  170. package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +1 -1
  171. package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
  172. package/dist/heart/versioning/ouro-path-installer.js +425 -0
  173. package/dist/heart/versioning/ouro-version-manager.js +295 -0
  174. package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
  175. package/dist/heart/{daemon → versioning}/update-checker.js +5 -1
  176. package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
  177. package/dist/mailroom/attention.js +167 -0
  178. package/dist/mailroom/autonomy.js +209 -0
  179. package/dist/mailroom/blob-store.js +606 -0
  180. package/dist/mailroom/body-cache.js +61 -0
  181. package/dist/mailroom/core.js +672 -0
  182. package/dist/mailroom/entry.js +160 -0
  183. package/dist/mailroom/file-store.js +426 -0
  184. package/dist/mailroom/mbox-import.js +382 -0
  185. package/dist/mailroom/outbound.js +380 -0
  186. package/dist/mailroom/policy.js +263 -0
  187. package/dist/mailroom/reader.js +228 -0
  188. package/dist/mailroom/search-cache.js +182 -0
  189. package/dist/mailroom/search-relevance.js +319 -0
  190. package/dist/mailroom/smtp-ingress.js +176 -0
  191. package/dist/mailroom/source-state.js +176 -0
  192. package/dist/mailroom/thread.js +109 -0
  193. package/dist/mailroom/travel-extract.js +89 -0
  194. package/dist/mind/bundle-manifest.js +7 -1
  195. package/dist/mind/context.js +165 -101
  196. package/dist/mind/diary-integrity.js +60 -0
  197. package/dist/mind/{memory.js → diary.js} +74 -93
  198. package/dist/mind/embedding-provider.js +60 -0
  199. package/dist/mind/file-state.js +179 -0
  200. package/dist/mind/friends/channel.js +30 -0
  201. package/dist/mind/friends/resolver.js +54 -2
  202. package/dist/mind/friends/store-file.js +39 -3
  203. package/dist/mind/friends/types.js +2 -2
  204. package/dist/mind/journal-index.js +161 -0
  205. package/dist/mind/note-search.js +268 -0
  206. package/dist/mind/obligation-steering.js +221 -0
  207. package/dist/mind/pending.js +4 -0
  208. package/dist/mind/prompt-refresh.js +3 -2
  209. package/dist/mind/prompt.js +942 -122
  210. package/dist/mind/provenance-trust.js +26 -0
  211. package/dist/mind/scrutiny.js +173 -0
  212. package/dist/nerves/cli-logging.js +7 -1
  213. package/dist/nerves/coverage/audit-rules.js +15 -6
  214. package/dist/nerves/coverage/audit.js +28 -2
  215. package/dist/nerves/coverage/cli.js +1 -1
  216. package/dist/nerves/coverage/contract.js +5 -5
  217. package/dist/nerves/coverage/file-completeness.js +139 -5
  218. package/dist/nerves/coverage/run-artifacts.js +1 -1
  219. package/dist/nerves/event-buffer.js +111 -0
  220. package/dist/nerves/index.js +224 -4
  221. package/dist/nerves/observation.js +20 -0
  222. package/dist/nerves/redact.js +79 -0
  223. package/dist/nerves/review/cli-main.js +5 -0
  224. package/dist/nerves/review/cli.js +156 -0
  225. package/dist/nerves/review/core.js +152 -0
  226. package/dist/nerves/runtime.js +5 -1
  227. package/dist/outlook-ui/assets/index-BPr5vNuM.css +1 -0
  228. package/dist/outlook-ui/assets/index-Cm51CY9W.js +61 -0
  229. package/dist/outlook-ui/index.html +15 -0
  230. package/dist/repertoire/ado-client.js +15 -56
  231. package/dist/repertoire/ado-semantic.js +11 -10
  232. package/dist/repertoire/api-client.js +97 -0
  233. package/dist/repertoire/bitwarden-store.js +816 -0
  234. package/dist/repertoire/bundle-templates.js +72 -0
  235. package/dist/repertoire/bw-installer.js +180 -0
  236. package/dist/repertoire/coding/codex-jsonl.js +64 -0
  237. package/dist/repertoire/coding/context-pack.js +330 -0
  238. package/dist/repertoire/coding/feedback.js +197 -30
  239. package/dist/repertoire/coding/manager.js +158 -9
  240. package/dist/repertoire/coding/spawner.js +55 -9
  241. package/dist/repertoire/coding/tools.js +170 -7
  242. package/dist/repertoire/commerce-errors.js +109 -0
  243. package/dist/repertoire/commerce-self-test.js +156 -0
  244. package/dist/repertoire/credential-access.js +111 -0
  245. package/dist/repertoire/duffel-client.js +185 -0
  246. package/dist/repertoire/github-client.js +14 -55
  247. package/dist/repertoire/graph-client.js +11 -52
  248. package/dist/repertoire/guardrails.js +396 -0
  249. package/dist/repertoire/mcp-client.js +255 -0
  250. package/dist/repertoire/mcp-manager.js +305 -0
  251. package/dist/repertoire/mcp-tools.js +63 -0
  252. package/dist/repertoire/shell-sessions.js +133 -0
  253. package/dist/repertoire/skills.js +15 -24
  254. package/dist/repertoire/stripe-client.js +131 -0
  255. package/dist/repertoire/tasks/board.js +31 -5
  256. package/dist/repertoire/tasks/fix.js +182 -0
  257. package/dist/repertoire/tasks/index.js +16 -4
  258. package/dist/repertoire/tasks/lifecycle.js +2 -2
  259. package/dist/repertoire/tasks/parser.js +3 -2
  260. package/dist/repertoire/tasks/scanner.js +194 -37
  261. package/dist/repertoire/tasks/transitions.js +16 -78
  262. package/dist/repertoire/tool-results.js +29 -0
  263. package/dist/repertoire/tools-attachments.js +317 -0
  264. package/dist/repertoire/tools-base.js +47 -1075
  265. package/dist/repertoire/tools-bluebubbles.js +1 -0
  266. package/dist/repertoire/tools-bridge.js +142 -0
  267. package/dist/repertoire/tools-bundle.js +984 -0
  268. package/dist/repertoire/tools-config.js +185 -0
  269. package/dist/repertoire/tools-continuity.js +248 -0
  270. package/dist/repertoire/tools-credential.js +381 -0
  271. package/dist/repertoire/tools-files.js +342 -0
  272. package/dist/repertoire/tools-flight.js +224 -0
  273. package/dist/repertoire/tools-flow.js +119 -0
  274. package/dist/repertoire/tools-github.js +1 -7
  275. package/dist/repertoire/tools-mail.js +1477 -0
  276. package/dist/repertoire/tools-notes.js +421 -0
  277. package/dist/repertoire/tools-session.js +750 -0
  278. package/dist/repertoire/tools-shell.js +120 -0
  279. package/dist/repertoire/tools-stripe.js +180 -0
  280. package/dist/repertoire/tools-surface.js +243 -0
  281. package/dist/repertoire/tools-teams.js +9 -39
  282. package/dist/repertoire/tools-travel.js +125 -0
  283. package/dist/repertoire/tools-trip.js +422 -0
  284. package/dist/repertoire/tools-user-profile.js +144 -0
  285. package/dist/repertoire/tools-vault.js +40 -0
  286. package/dist/repertoire/tools.js +108 -100
  287. package/dist/repertoire/travel-api-client.js +360 -0
  288. package/dist/repertoire/user-profile.js +131 -0
  289. package/dist/repertoire/vault-setup.js +246 -0
  290. package/dist/repertoire/vault-unlock.js +561 -0
  291. package/dist/scripts/claude-code-hook.js +41 -0
  292. package/dist/scripts/claude-code-stop-hook.js +47 -0
  293. package/dist/senses/attention-queue.js +116 -0
  294. package/dist/senses/bluebubbles/attachment-cache.js +53 -0
  295. package/dist/senses/bluebubbles/attachment-download.js +137 -0
  296. package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +219 -18
  297. package/dist/senses/bluebubbles/entry.js +77 -0
  298. package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
  299. package/dist/senses/bluebubbles/index.js +1947 -0
  300. package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -70
  301. package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
  302. package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
  303. package/dist/senses/bluebubbles/processed-log.js +111 -0
  304. package/dist/senses/bluebubbles/replay.js +129 -0
  305. package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +2 -2
  306. package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
  307. package/dist/senses/cli/bracketed-paste.js +82 -0
  308. package/dist/senses/cli/image-paste.js +287 -0
  309. package/dist/senses/cli/image-ref-navigation.js +75 -0
  310. package/dist/senses/cli/ink-app.js +156 -0
  311. package/dist/senses/cli/inline-diff.js +64 -0
  312. package/dist/senses/cli/input-keys.js +174 -0
  313. package/dist/senses/cli/kill-ring.js +86 -0
  314. package/dist/senses/cli/message-list.js +51 -0
  315. package/dist/senses/cli/ouro-tui.js +607 -0
  316. package/dist/senses/cli/spinner-imperative.js +135 -0
  317. package/dist/senses/cli/spinner.js +101 -0
  318. package/dist/senses/cli/status-line.js +60 -0
  319. package/dist/senses/cli/streaming-markdown.js +526 -0
  320. package/dist/senses/cli/tool-display.js +85 -0
  321. package/dist/senses/cli/tool-render.js +85 -0
  322. package/dist/senses/cli/tui-store.js +240 -0
  323. package/dist/senses/cli/virtual-list.js +35 -0
  324. package/dist/senses/cli-entry.js +60 -8
  325. package/dist/senses/cli-layout.js +187 -0
  326. package/dist/senses/cli.js +520 -209
  327. package/dist/senses/commands.js +66 -3
  328. package/dist/senses/habit-turn-message.js +108 -0
  329. package/dist/senses/inner-dialog-worker.js +175 -21
  330. package/dist/senses/inner-dialog.js +330 -27
  331. package/dist/senses/mail-entry.js +66 -0
  332. package/dist/senses/mail.js +379 -0
  333. package/dist/senses/pipeline.js +569 -182
  334. package/dist/senses/proactive-content-guard.js +51 -0
  335. package/dist/senses/shared-turn.js +248 -0
  336. package/dist/senses/surface-tool.js +68 -0
  337. package/dist/senses/teams-entry.js +60 -8
  338. package/dist/senses/teams.js +387 -98
  339. package/dist/senses/trust-gate.js +100 -5
  340. package/dist/trips/core.js +138 -0
  341. package/dist/trips/store.js +146 -0
  342. package/package.json +37 -7
  343. package/skills/agent-commerce.md +106 -0
  344. package/skills/browser-navigation.md +117 -0
  345. package/skills/commerce-setup-guide.md +116 -0
  346. package/skills/commerce-setup.md +84 -0
  347. package/skills/configure-dev-tools.md +101 -0
  348. package/skills/travel-planning.md +138 -0
  349. package/dist/heart/daemon/ouro-path-installer.js +0 -178
  350. package/dist/heart/daemon/subagent-installer.js +0 -166
  351. package/dist/heart/session-recall.js +0 -116
  352. package/dist/mind/associative-recall.js +0 -209
  353. package/dist/senses/bluebubbles-entry.js +0 -13
  354. package/dist/senses/bluebubbles.js +0 -1177
  355. package/dist/senses/debug-activity.js +0 -148
  356. package/subagents/README.md +0 -86
  357. package/subagents/work-doer.md +0 -237
  358. package/subagents/work-merger.md +0 -618
  359. package/subagents/work-planner.md +0 -390
  360. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
  361. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
  362. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
  363. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
  364. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
  365. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
  366. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
  367. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
  368. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
  369. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
  370. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
  371. /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
  372. /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
  373. /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
  374. /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
  375. /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pruneDaemonLogs = pruneDaemonLogs;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const crypto_1 = require("crypto");
7
+ const nerves_1 = require("../../nerves");
8
+ const runtime_1 = require("../../nerves/runtime");
9
+ const identity_1 = require("../identity");
10
+ function isActiveLogStream(name) {
11
+ if (name.endsWith(".ndjson")) {
12
+ return !/\.\d+\.ndjson$/.test(name);
13
+ }
14
+ if (name.endsWith(".log")) {
15
+ return !/\.\d+\.log$/.test(name);
16
+ }
17
+ return false;
18
+ }
19
+ function pruneDaemonLogs(options = {}) {
20
+ /* v8 ignore next -- defensive: tests always pass logsDir to avoid prod paths @preserve */
21
+ const logsDir = options.logsDir ?? (0, identity_1.getAgentDaemonLogsDir)(options.agentName);
22
+ const maxSizeBytes = options.maxSizeBytes ?? nerves_1.DEFAULT_MAX_LOG_SIZE_BYTES;
23
+ const maxGenerations = options.maxGenerations ?? nerves_1.DEFAULT_MAX_GENERATIONS;
24
+ const traceId = (0, crypto_1.randomUUID)();
25
+ (0, runtime_1.emitNervesEvent)({
26
+ component: "nerves",
27
+ event: "nerves.logs_prune_start",
28
+ trace_id: traceId,
29
+ message: "pruning daemon logs",
30
+ meta: { logsDir, maxSizeBytes, maxGenerations },
31
+ });
32
+ let completed = false;
33
+ try {
34
+ if (!(0, fs_1.existsSync)(logsDir)) {
35
+ completed = true;
36
+ (0, runtime_1.emitNervesEvent)({
37
+ component: "nerves",
38
+ event: "nerves.logs_prune_end",
39
+ trace_id: traceId,
40
+ message: "daemon logs dir does not exist",
41
+ meta: { logsDir, filesCompacted: 0, bytesFreed: 0 },
42
+ });
43
+ return { filesCompacted: 0, bytesFreed: 0 };
44
+ }
45
+ let filesCompacted = 0;
46
+ let bytesFreed = 0;
47
+ // Enumerate and rotate each active structured stream plus legacy launchd
48
+ // .log streams. We explicitly skip .gz and other files — only the active
49
+ // stream can be a rotation candidate. Legacy generation files are handled
50
+ // inside rotateIfNeeded's generation-shift step, so we skip them here to
51
+ // avoid double-rotating.
52
+ for (const name of (0, fs_1.readdirSync)(logsDir)) {
53
+ if (!isActiveLogStream(name))
54
+ continue;
55
+ const filePath = (0, path_1.join)(logsDir, name);
56
+ let sizeBefore;
57
+ try {
58
+ sizeBefore = (0, fs_1.statSync)(filePath).size;
59
+ /* v8 ignore start -- defensive: file disappears between readdir and stat @preserve */
60
+ }
61
+ catch {
62
+ continue;
63
+ }
64
+ /* v8 ignore stop */
65
+ if (sizeBefore < maxSizeBytes)
66
+ continue;
67
+ // rotateIfNeeded returns true because we pre-checked sizeBefore >=
68
+ // maxSizeBytes above. The false branch of `if (rotated)` is defensive
69
+ // and unreachable under normal flow; we skip it from coverage so a
70
+ // future refactor that weakens the pre-check still reports correct
71
+ // counts without needing a contrived test.
72
+ const rotated = (0, nerves_1.rotateIfNeeded)(filePath, {
73
+ maxSizeBytes,
74
+ maxGenerations,
75
+ compress: true,
76
+ });
77
+ /* v8 ignore next 3 -- defensive: pre-check guarantees rotated=true @preserve */
78
+ if (!rotated) {
79
+ continue;
80
+ }
81
+ filesCompacted += 1;
82
+ bytesFreed += sizeBefore;
83
+ }
84
+ completed = true;
85
+ (0, runtime_1.emitNervesEvent)({
86
+ component: "nerves",
87
+ event: "nerves.logs_prune_end",
88
+ trace_id: traceId,
89
+ message: "daemon logs pruned",
90
+ meta: { logsDir, filesCompacted, bytesFreed },
91
+ });
92
+ return { filesCompacted, bytesFreed };
93
+ }
94
+ catch (err) {
95
+ /* v8 ignore next -- defensive: completed=true only reached after try returns @preserve */
96
+ if (!completed) {
97
+ /* v8 ignore next -- defensive: rotation always throws real Errors @preserve */
98
+ const reason = err instanceof Error ? err.message : String(err);
99
+ (0, runtime_1.emitNervesEvent)({
100
+ component: "nerves",
101
+ event: "nerves.logs_prune_error",
102
+ trace_id: traceId,
103
+ level: "error",
104
+ message: "daemon logs prune failed",
105
+ meta: { logsDir, error: reason },
106
+ });
107
+ }
108
+ throw err;
109
+ }
110
+ }
@@ -35,9 +35,9 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.FileMessageRouter = void 0;
37
37
  const fs = __importStar(require("fs"));
38
- const os = __importStar(require("os"));
39
38
  const path = __importStar(require("path"));
40
39
  const runtime_1 = require("../../nerves/runtime");
40
+ const identity_1 = require("../identity");
41
41
  function messageId(nowIso) {
42
42
  return `msg-${nowIso.replace(/[^0-9]/g, "")}`;
43
43
  }
@@ -45,7 +45,7 @@ class FileMessageRouter {
45
45
  baseDir;
46
46
  now;
47
47
  constructor(options = {}) {
48
- this.baseDir = options.baseDir ?? path.join(os.homedir(), ".agentstate", "messages");
48
+ this.baseDir = options.baseDir ?? (0, identity_1.getAgentMessagesRoot)();
49
49
  this.now = options.now ?? (() => new Date().toISOString());
50
50
  fs.mkdirSync(this.baseDir, { recursive: true });
51
51
  }
@@ -0,0 +1,134 @@
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
+ exports.createRealOsCronDeps = createRealOsCronDeps;
37
+ exports.createRealCrontabDeps = createRealCrontabDeps;
38
+ exports.resolveOuroBinaryPath = resolveOuroBinaryPath;
39
+ const child_process_1 = require("child_process");
40
+ const fs = __importStar(require("fs"));
41
+ const os = __importStar(require("os"));
42
+ const path = __importStar(require("path"));
43
+ const runtime_1 = require("../../nerves/runtime");
44
+ function createRealOsCronDeps() {
45
+ (0, runtime_1.emitNervesEvent)({
46
+ component: "daemon",
47
+ event: "daemon.os_cron_deps_created",
48
+ message: "created real OS cron deps",
49
+ meta: { platform: process.platform },
50
+ });
51
+ return {
52
+ exec: (cmd) => {
53
+ try {
54
+ (0, child_process_1.execSync)(cmd, { stdio: "ignore" });
55
+ }
56
+ catch {
57
+ /* best effort */
58
+ }
59
+ },
60
+ writeFile: (p, c) => fs.writeFileSync(p, c, "utf-8"),
61
+ removeFile: (p) => {
62
+ try {
63
+ fs.unlinkSync(p);
64
+ }
65
+ catch {
66
+ /* best effort — file may already be gone */
67
+ }
68
+ },
69
+ existsFile: (p) => fs.existsSync(p),
70
+ listDir: (dir) => {
71
+ try {
72
+ return fs.readdirSync(dir);
73
+ }
74
+ catch {
75
+ return [];
76
+ }
77
+ },
78
+ mkdirp: (dir) => fs.mkdirSync(dir, { recursive: true }),
79
+ homeDir: os.homedir(),
80
+ };
81
+ }
82
+ function createRealCrontabDeps() {
83
+ (0, runtime_1.emitNervesEvent)({
84
+ component: "daemon",
85
+ event: "daemon.crontab_deps_created",
86
+ message: "created real crontab deps",
87
+ meta: {},
88
+ });
89
+ /* v8 ignore start -- crontab exec closures: calling these in tests would modify the real system crontab @preserve */
90
+ return {
91
+ execOutput: (cmd) => (0, child_process_1.execSync)(cmd, { encoding: "utf-8" }),
92
+ execWrite: (cmd, stdin) => {
93
+ (0, child_process_1.execSync)(cmd, { input: stdin, stdio: ["pipe", "ignore", "ignore"] });
94
+ },
95
+ };
96
+ /* v8 ignore stop */
97
+ }
98
+ /* v8 ignore start -- ouro path resolution: probes process.argv, filesystem layout, and PATH; branches depend on install method and runtime environment @preserve */
99
+ function resolveOuroBinaryPath() {
100
+ // Try to resolve from process.argv[1] — the script being run
101
+ const scriptPath = process.argv[1];
102
+ if (scriptPath) {
103
+ // If running via node dist/heart/daemon/daemon-entry.js, resolve the ouro wrapper
104
+ // The ouro binary is typically at the package root's bin
105
+ const distDir = path.resolve(path.dirname(scriptPath));
106
+ const packageBin = path.resolve(distDir, "..", "..", "..", "node_modules", ".bin", "ouro");
107
+ if (fs.existsSync(packageBin)) {
108
+ return packageBin;
109
+ }
110
+ // Try the repo-local scripts/ouro.sh
111
+ const repoOuro = path.resolve(distDir, "..", "..", "..", "scripts", "ouro.sh");
112
+ if (fs.existsSync(repoOuro)) {
113
+ return repoOuro;
114
+ }
115
+ }
116
+ // Try which ouro
117
+ try {
118
+ const result = (0, child_process_1.execSync)("which ouro", { encoding: "utf-8" }).trim();
119
+ if (result.length > 0)
120
+ return result;
121
+ }
122
+ catch {
123
+ /* not on PATH */
124
+ }
125
+ // Fallback: use "ouro" and rely on PATH
126
+ (0, runtime_1.emitNervesEvent)({
127
+ component: "daemon",
128
+ event: "daemon.ouro_path_fallback",
129
+ message: "could not resolve full ouro binary path, falling back to 'ouro'",
130
+ meta: {},
131
+ });
132
+ return "ouro";
133
+ }
134
+ /* v8 ignore stop */
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const runtime_1 = require("../../nerves/runtime");
5
5
  const runtime_logging_1 = require("./runtime-logging");
6
- const ouro_bot_wrapper_1 = require("./ouro-bot-wrapper");
6
+ const ouro_bot_wrapper_1 = require("../versioning/ouro-bot-wrapper");
7
7
  (0, runtime_logging_1.configureDaemonRuntimeLogger)("ouro-bot");
8
8
  (0, runtime_1.emitNervesEvent)({
9
9
  component: "daemon",
@@ -12,12 +12,14 @@ const ouro_bot_wrapper_1 = require("./ouro-bot-wrapper");
12
12
  meta: { args: process.argv.slice(2) },
13
13
  });
14
14
  void (0, ouro_bot_wrapper_1.runOuroBotWrapper)(process.argv.slice(2)).catch((error) => {
15
+ const message = error instanceof Error ? error.message : String(error);
16
+ process.stderr.write(`${message}\n`);
15
17
  (0, runtime_1.emitNervesEvent)({
16
18
  level: "error",
17
19
  component: "daemon",
18
20
  event: "daemon.ouro_bot_entry_error",
19
21
  message: "ouro.bot wrapper entrypoint failed",
20
- meta: { error: error instanceof Error ? error.message : String(error) },
22
+ meta: { error: message },
21
23
  });
22
24
  process.exit(1);
23
25
  });
@@ -12,12 +12,14 @@ const runtime_logging_1 = require("./runtime-logging");
12
12
  meta: { args: process.argv.slice(2) },
13
13
  });
14
14
  void (0, daemon_cli_1.runOuroCli)(process.argv.slice(2)).catch((error) => {
15
+ const message = error instanceof Error ? error.message : String(error);
16
+ process.stderr.write(`${message}\n`);
15
17
  (0, runtime_1.emitNervesEvent)({
16
18
  level: "error",
17
19
  component: "daemon",
18
20
  event: "daemon.cli_entry_error",
19
21
  message: "ouro CLI entrypoint failed",
20
- meta: { error: error instanceof Error ? error.message : String(error) },
22
+ meta: { error: message },
21
23
  });
22
24
  process.exit(1);
23
25
  });