@openlife/cli 1.7.14 → 1.8.3

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 (473) hide show
  1. package/.catalog/agents/ad-midas/AGENT.md +182 -0
  2. package/.catalog/agents/ads-analyst/AGENT.md +168 -0
  3. package/.catalog/agents/agency-agents/AGENT.md +208 -0
  4. package/.catalog/agents/aha-moment-identifier/AGENT.md +184 -0
  5. package/.catalog/agents/ai-builder-analyst/AGENT.md +214 -0
  6. package/.catalog/agents/ai-builder-builder/AGENT.md +241 -0
  7. package/.catalog/agents/ai-builder-design-director/AGENT.md +216 -0
  8. package/.catalog/agents/ai-builder-infra-data/AGENT.md +228 -0
  9. package/.catalog/agents/ai-builder-orchestrator/AGENT.md +207 -0
  10. package/.catalog/agents/ai-builder-qa-reviewer/AGENT.md +252 -0
  11. package/.catalog/agents/ai-builder-release-manager/AGENT.md +248 -0
  12. package/.catalog/agents/ai-scientist-council/AGENT.md +57 -0
  13. package/.catalog/agents/al-ries/AGENT.md +208 -0
  14. package/.catalog/agents/alert-classifier/AGENT.md +184 -0
  15. package/.catalog/agents/alina-wheeler/AGENT.md +217 -0
  16. package/.catalog/agents/ambient-listener/AGENT.md +153 -0
  17. package/.catalog/agents/analista-de-impacto/AGENT.md +383 -0
  18. package/.catalog/agents/analyst-brief-generator/AGENT.md +189 -0
  19. package/.catalog/agents/andre-chaperon/AGENT.md +239 -0
  20. package/.catalog/agents/anomaly-detector/AGENT.md +172 -0
  21. package/.catalog/agents/arbiter/AGENT.md +43 -0
  22. package/.catalog/agents/archetype-consultant/AGENT.md +248 -0
  23. package/.catalog/agents/architecture-checker/AGENT.md +178 -0
  24. package/.catalog/agents/arquivista/AGENT.md +59 -0
  25. package/.catalog/agents/art-director/AGENT.md +142 -0
  26. package/.catalog/agents/assayer/AGENT.md +49 -0
  27. package/.catalog/agents/atlas/AGENT.md +97 -0
  28. package/.catalog/agents/avaliadora/AGENT.md +66 -0
  29. package/.catalog/agents/avinash-kaushik/AGENT.md +301 -0
  30. package/.catalog/agents/bazaar/AGENT.md +43 -0
  31. package/.catalog/agents/beatriz-monteiro/AGENT.md +76 -0
  32. package/.catalog/agents/ben-settle/AGENT.md +227 -0
  33. package/.catalog/agents/bias-auditor/AGENT.md +177 -0
  34. package/.catalog/agents/blake-snyder/AGENT.md +258 -0
  35. package/.catalog/agents/board-chair/AGENT.md +194 -0
  36. package/.catalog/agents/brad-frost/AGENT.md +218 -0
  37. package/.catalog/agents/brand-chief/AGENT.md +191 -0
  38. package/.catalog/agents/brene-brown/AGENT.md +329 -0
  39. package/.catalog/agents/bridge/AGENT.md +43 -0
  40. package/.catalog/agents/brief-synthesizer/AGENT.md +120 -0
  41. package/.catalog/agents/bruno-cezar/AGENT.md +70 -0
  42. package/.catalog/agents/builder/AGENT.md +115 -0
  43. package/.catalog/agents/busterer/AGENT.md +141 -0
  44. package/.catalog/agents/byron-sharp/AGENT.md +202 -0
  45. package/.catalog/agents/caio-architect/AGENT.md +268 -0
  46. package/.catalog/agents/candidate-summary-agent/AGENT.md +171 -0
  47. package/.catalog/agents/capital-strategist/AGENT.md +55 -0
  48. package/.catalog/agents/cartographer/AGENT.md +147 -0
  49. package/.catalog/agents/catalyst/AGENT.md +43 -0
  50. package/.catalog/agents/chain/AGENT.md +51 -0
  51. package/.catalog/agents/chancellor/AGENT.md +101 -0
  52. package/.catalog/agents/charlie-munger/AGENT.md +623 -0
  53. package/.catalog/agents/checklist-builder/AGENT.md +182 -0
  54. package/.catalog/agents/chris-sanders/AGENT.md +238 -0
  55. package/.catalog/agents/chronicler/AGENT.md +49 -0
  56. package/.catalog/agents/cio-engineer/AGENT.md +242 -0
  57. package/.catalog/agents/claude-hopkins/AGENT.md +215 -0
  58. package/.catalog/agents/clause-extractor/AGENT.md +193 -0
  59. package/.catalog/agents/clayton-makepeace/AGENT.md +258 -0
  60. package/.catalog/agents/clinical-note-drafter/AGENT.md +174 -0
  61. package/.catalog/agents/closer/AGENT.md +71 -0
  62. package/.catalog/agents/cloudflare-archon/AGENT.md +70 -0
  63. package/.catalog/agents/cmo-architect/AGENT.md +241 -0
  64. package/.catalog/agents/command-generator/AGENT.md +154 -0
  65. package/.catalog/agents/community-growth/AGENT.md +180 -0
  66. package/.catalog/agents/conduit/AGENT.md +43 -0
  67. package/.catalog/agents/consul/AGENT.md +43 -0
  68. package/.catalog/agents/context-composer/AGENT.md +149 -0
  69. package/.catalog/agents/context-enricher/AGENT.md +173 -0
  70. package/.catalog/agents/contrarian/AGENT.md +43 -0
  71. package/.catalog/agents/coo-orchestrator/AGENT.md +226 -0
  72. package/.catalog/agents/copy-chief/AGENT.md +199 -0
  73. package/.catalog/agents/creative-analyst/AGENT.md +175 -0
  74. package/.catalog/agents/critias/AGENT.md +43 -0
  75. package/.catalog/agents/crm-manager/AGENT.md +73 -0
  76. package/.catalog/agents/crypto-orchestrator/AGENT.md +205 -0
  77. package/.catalog/agents/cto-architect/AGENT.md +227 -0
  78. package/.catalog/agents/curadora/AGENT.md +65 -0
  79. package/.catalog/agents/curriculum-mapper/AGENT.md +183 -0
  80. package/.catalog/agents/cyber-chief/AGENT.md +153 -0
  81. package/.catalog/agents/dan-harmon/AGENT.md +200 -0
  82. package/.catalog/agents/dan-kennedy/AGENT.md +235 -0
  83. package/.catalog/agents/dan-koe/AGENT.md +256 -0
  84. package/.catalog/agents/dan-mall/AGENT.md +211 -0
  85. package/.catalog/agents/data-chief/AGENT.md +200 -0
  86. package/.catalog/agents/data-profiler/AGENT.md +180 -0
  87. package/.catalog/agents/data-quality-reporter/AGENT.md +209 -0
  88. package/.catalog/agents/dave-malouf/AGENT.md +231 -0
  89. package/.catalog/agents/david-aaker/AGENT.md +199 -0
  90. package/.catalog/agents/david-deutsch/AGENT.md +230 -0
  91. package/.catalog/agents/david-ogilvy/AGENT.md +231 -0
  92. package/.catalog/agents/david-spinks/AGENT.md +310 -0
  93. package/.catalog/agents/defi-launcher/AGENT.md +158 -0
  94. package/.catalog/agents/delivery-tracker/AGENT.md +69 -0
  95. package/.catalog/agents/denise-yohn/AGENT.md +205 -0
  96. package/.catalog/agents/depesh-mandalia/AGENT.md +207 -0
  97. package/.catalog/agents/derek-sivers/AGENT.md +301 -0
  98. package/.catalog/agents/design-chief/AGENT.md +142 -0
  99. package/.catalog/agents/design-system-architect/AGENT.md +142 -0
  100. package/.catalog/agents/destiladora/AGENT.md +71 -0
  101. package/.catalog/agents/diagnostic-assessor/AGENT.md +176 -0
  102. package/.catalog/agents/dirber/AGENT.md +144 -0
  103. package/.catalog/agents/domain-scout/AGENT.md +168 -0
  104. package/.catalog/agents/domain-seer/AGENT.md +46 -0
  105. package/.catalog/agents/donald-miller/AGENT.md +212 -0
  106. package/.catalog/agents/emily-heyward/AGENT.md +180 -0
  107. package/.catalog/agents/engine/AGENT.md +43 -0
  108. package/.catalog/agents/estrategista-de-ciclo/AGENT.md +334 -0
  109. package/.catalog/agents/eugene-schwartz/AGENT.md +271 -0
  110. package/.catalog/agents/extratora/AGENT.md +65 -0
  111. package/.catalog/agents/false-positive-filter/AGENT.md +169 -0
  112. package/.catalog/agents/fenomenologo/AGENT.md +202 -0
  113. package/.catalog/agents/fiscal/AGENT.md +177 -0
  114. package/.catalog/agents/followup-agent/AGENT.md +69 -0
  115. package/.catalog/agents/format-adapter/AGENT.md +87 -0
  116. package/.catalog/agents/frank-kern/AGENT.md +228 -0
  117. package/.catalog/agents/frontend-engineer/AGENT.md +82 -0
  118. package/.catalog/agents/frontier-power-mapper/AGENT.md +56 -0
  119. package/.catalog/agents/fuzzer/AGENT.md +154 -0
  120. package/.catalog/agents/gary-bencivenga/AGENT.md +230 -0
  121. package/.catalog/agents/gary-halbert/AGENT.md +252 -0
  122. package/.catalog/agents/genome/AGENT.md +50 -0
  123. package/.catalog/agents/georgia-weidman/AGENT.md +211 -0
  124. package/.catalog/agents/guide/AGENT.md +43 -0
  125. package/.catalog/agents/hammer/AGENT.md +50 -0
  126. package/.catalog/agents/helena-voss/AGENT.md +79 -0
  127. package/.catalog/agents/helena-voss-v2/AGENT.md +196 -0
  128. package/.catalog/agents/herald/AGENT.md +98 -0
  129. package/.catalog/agents/hermes/AGENT.md +75 -0
  130. package/.catalog/agents/hormozi-ads/AGENT.md +192 -0
  131. package/.catalog/agents/hormozi-advisor/AGENT.md +211 -0
  132. package/.catalog/agents/hormozi-audit/AGENT.md +211 -0
  133. package/.catalog/agents/hormozi-chief/AGENT.md +144 -0
  134. package/.catalog/agents/hormozi-closer/AGENT.md +212 -0
  135. package/.catalog/agents/hormozi-content/AGENT.md +199 -0
  136. package/.catalog/agents/hormozi-copy/AGENT.md +185 -0
  137. package/.catalog/agents/hormozi-hooks/AGENT.md +210 -0
  138. package/.catalog/agents/hormozi-launch/AGENT.md +193 -0
  139. package/.catalog/agents/hormozi-leads/AGENT.md +231 -0
  140. package/.catalog/agents/hormozi-models/AGENT.md +224 -0
  141. package/.catalog/agents/hormozi-offers/AGENT.md +230 -0
  142. package/.catalog/agents/hormozi-pricing/AGENT.md +184 -0
  143. package/.catalog/agents/hormozi-retention/AGENT.md +199 -0
  144. package/.catalog/agents/hormozi-scale/AGENT.md +208 -0
  145. package/.catalog/agents/hormozi-workshop/AGENT.md +193 -0
  146. package/.catalog/agents/hostinger-warden/AGENT.md +46 -0
  147. package/.catalog/agents/html5-builder/AGENT.md +106 -0
  148. package/.catalog/agents/hype-detector/AGENT.md +52 -0
  149. package/.catalog/agents/identitario/AGENT.md +298 -0
  150. package/.catalog/agents/indexadora/AGENT.md +49 -0
  151. package/.catalog/agents/instagram-scout/AGENT.md +94 -0
  152. package/.catalog/agents/interaction-architect/AGENT.md +81 -0
  153. package/.catalog/agents/jean-noel-kapferer/AGENT.md +222 -0
  154. package/.catalog/agents/jim-manico/AGENT.md +215 -0
  155. package/.catalog/agents/jim-rutz/AGENT.md +226 -0
  156. package/.catalog/agents/joe-sugarman/AGENT.md +267 -0
  157. package/.catalog/agents/john-carlton/AGENT.md +236 -0
  158. package/.catalog/agents/jon-benson/AGENT.md +229 -0
  159. package/.catalog/agents/joseph-campbell/AGENT.md +217 -0
  160. package/.catalog/agents/kasim-aslam/AGENT.md +191 -0
  161. package/.catalog/agents/keith-johnstone/AGENT.md +190 -0
  162. package/.catalog/agents/kevin-keller/AGENT.md +232 -0
  163. package/.catalog/agents/kindra-hall/AGENT.md +195 -0
  164. package/.catalog/agents/lara-coordinator/AGENT.md +147 -0
  165. package/.catalog/agents/lead-qualifier/AGENT.md +73 -0
  166. package/.catalog/agents/leitora-critica/AGENT.md +70 -0
  167. package/.catalog/agents/lens/AGENT.md +50 -0
  168. package/.catalog/agents/log-analyzer/AGENT.md +176 -0
  169. package/.catalog/agents/logic-reviewer/AGENT.md +177 -0
  170. package/.catalog/agents/lp-backend-dev/AGENT.md +198 -0
  171. package/.catalog/agents/lp-copywriter/AGENT.md +162 -0
  172. package/.catalog/agents/lp-design-architect/AGENT.md +209 -0
  173. package/.catalog/agents/lp-frontend-dev/AGENT.md +194 -0
  174. package/.catalog/agents/lp-image-creator/AGENT.md +156 -0
  175. package/.catalog/agents/lp-integrator/AGENT.md +182 -0
  176. package/.catalog/agents/lp-researcher/AGENT.md +169 -0
  177. package/.catalog/agents/lp-reviewer/AGENT.md +218 -0
  178. package/.catalog/agents/lp-strategist/AGENT.md +159 -0
  179. package/.catalog/agents/magistrate/AGENT.md +43 -0
  180. package/.catalog/agents/manifestador/AGENT.md +312 -0
  181. package/.catalog/agents/marcus-carey/AGENT.md +233 -0
  182. package/.catalog/agents/marcus-leal/AGENT.md +70 -0
  183. package/.catalog/agents/market-economist/AGENT.md +60 -0
  184. package/.catalog/agents/marshall-ganz/AGENT.md +200 -0
  185. package/.catalog/agents/marty-neumeier/AGENT.md +203 -0
  186. package/.catalog/agents/matthew-dicks/AGENT.md +185 -0
  187. package/.catalog/agents/media-buyer/AGENT.md +192 -0
  188. package/.catalog/agents/medical-coder/AGENT.md +175 -0
  189. package/.catalog/agents/merchant/AGENT.md +43 -0
  190. package/.catalog/agents/mercury/AGENT.md +50 -0
  191. package/.catalog/agents/metadata-artist/AGENT.md +208 -0
  192. package/.catalog/agents/miller-sticky-brand/AGENT.md +213 -0
  193. package/.catalog/agents/mirror/AGENT.md +49 -0
  194. package/.catalog/agents/molly-pittman/AGENT.md +218 -0
  195. package/.catalog/agents/motion-designer/AGENT.md +88 -0
  196. package/.catalog/agents/movement-architect/AGENT.md +243 -0
  197. package/.catalog/agents/movement-chief/AGENT.md +168 -0
  198. package/.catalog/agents/naming-strategist/AGENT.md +204 -0
  199. package/.catalog/agents/nancy-duarte/AGENT.md +187 -0
  200. package/.catalog/agents/naval-ravikant/AGENT.md +284 -0
  201. package/.catalog/agents/nicholas-kusmich/AGENT.md +190 -0
  202. package/.catalog/agents/nick-mehta/AGENT.md +327 -0
  203. package/.catalog/agents/node-scorer/AGENT.md +137 -0
  204. package/.catalog/agents/objection-handler/AGENT.md +73 -0
  205. package/.catalog/agents/omar-santos/AGENT.md +239 -0
  206. package/.catalog/agents/operator-brain/AGENT.md +54 -0
  207. package/.catalog/agents/opportunity-strategist/AGENT.md +61 -0
  208. package/.catalog/agents/ops-coordinator/AGENT.md +75 -0
  209. package/.catalog/agents/oracle/AGENT.md +43 -0
  210. package/.catalog/agents/oren-klaff/AGENT.md +199 -0
  211. package/.catalog/agents/parent-report-agent/AGENT.md +186 -0
  212. package/.catalog/agents/park-howell/AGENT.md +185 -0
  213. package/.catalog/agents/parris-lampropoulos/AGENT.md +221 -0
  214. package/.catalog/agents/pathfinder/AGENT.md +60 -0
  215. package/.catalog/agents/patrick-lencioni/AGENT.md +427 -0
  216. package/.catalog/agents/pattern-analyst/AGENT.md +93 -0
  217. package/.catalog/agents/pedro-sobral/AGENT.md +191 -0
  218. package/.catalog/agents/perfectionist/AGENT.md +136 -0
  219. package/.catalog/agents/performance-analyst/AGENT.md +168 -0
  220. package/.catalog/agents/peter-fader/AGENT.md +279 -0
  221. package/.catalog/agents/peter-kim/AGENT.md +212 -0
  222. package/.catalog/agents/peter-thiel/AGENT.md +302 -0
  223. package/.catalog/agents/pixel-specialist/AGENT.md +177 -0
  224. package/.catalog/agents/playbook-enforcer/AGENT.md +194 -0
  225. package/.catalog/agents/postmortem-writer/AGENT.md +193 -0
  226. package/.catalog/agents/press-kit-hunter/AGENT.md +101 -0
  227. package/.catalog/agents/priority-engine/AGENT.md +71 -0
  228. package/.catalog/agents/proactive-outreach/AGENT.md +211 -0
  229. package/.catalog/agents/progress-tracker/AGENT.md +192 -0
  230. package/.catalog/agents/project-architect/AGENT.md +70 -0
  231. package/.catalog/agents/proposal-writer/AGENT.md +74 -0
  232. package/.catalog/agents/quality-reviewer/AGENT.md +184 -0
  233. package/.catalog/agents/rafa-ads/AGENT.md +236 -0
  234. package/.catalog/agents/rafa-content/AGENT.md +126 -0
  235. package/.catalog/agents/rafa-copy-master/AGENT.md +150 -0
  236. package/.catalog/agents/rafa-growth-router/AGENT.md +168 -0
  237. package/.catalog/agents/rafa-hooks/AGENT.md +106 -0
  238. package/.catalog/agents/rafa-leads/AGENT.md +113 -0
  239. package/.catalog/agents/rafa-lens/AGENT.md +62 -0
  240. package/.catalog/agents/railway-conductor/AGENT.md +70 -0
  241. package/.catalog/agents/ralph-burns/AGENT.md +196 -0
  242. package/.catalog/agents/ray-dalio/AGENT.md +619 -0
  243. package/.catalog/agents/redline-drafter/AGENT.md +198 -0
  244. package/.catalog/agents/reference-hunter/AGENT.md +192 -0
  245. package/.catalog/agents/reid-hoffman/AGENT.md +311 -0
  246. package/.catalog/agents/remediation-suggester/AGENT.md +173 -0
  247. package/.catalog/agents/resume-parser/AGENT.md +171 -0
  248. package/.catalog/agents/retrospective-agent/AGENT.md +70 -0
  249. package/.catalog/agents/review-summary-writer/AGENT.md +177 -0
  250. package/.catalog/agents/ripper/AGENT.md +154 -0
  251. package/.catalog/agents/risk-flagger/AGENT.md +196 -0
  252. package/.catalog/agents/robert-collier/AGENT.md +216 -0
  253. package/.catalog/agents/rogue/AGENT.md +149 -0
  254. package/.catalog/agents/root-cause-correlator/AGENT.md +187 -0
  255. package/.catalog/agents/runbook-executor/AGENT.md +180 -0
  256. package/.catalog/agents/russell-brunson/AGENT.md +262 -0
  257. package/.catalog/agents/ry-schwartz/AGENT.md +218 -0
  258. package/.catalog/agents/sales-strategist/AGENT.md +74 -0
  259. package/.catalog/agents/scale-optimizer/AGENT.md +177 -0
  260. package/.catalog/agents/schema-validator/AGENT.md +173 -0
  261. package/.catalog/agents/scribe/AGENT.md +101 -0
  262. package/.catalog/agents/sculptor/AGENT.md +110 -0
  263. package/.catalog/agents/sean-ellis/AGENT.md +336 -0
  264. package/.catalog/agents/security-auditor/AGENT.md +195 -0
  265. package/.catalog/agents/security-reviewer/AGENT.md +178 -0
  266. package/.catalog/agents/security-sentinel/AGENT.md +47 -0
  267. package/.catalog/agents/sentinel/AGENT.md +54 -0
  268. package/.catalog/agents/shannon-runner/AGENT.md +141 -0
  269. package/.catalog/agents/shawn-coyne/AGENT.md +241 -0
  270. package/.catalog/agents/shield/AGENT.md +43 -0
  271. package/.catalog/agents/shortlist-ranker/AGENT.md +168 -0
  272. package/.catalog/agents/simon-sinek/AGENT.md +324 -0
  273. package/.catalog/agents/skills-matcher/AGENT.md +181 -0
  274. package/.catalog/agents/smelter/AGENT.md +50 -0
  275. package/.catalog/agents/solana-dev/AGENT.md +187 -0
  276. package/.catalog/agents/status-page-updater/AGENT.md +204 -0
  277. package/.catalog/agents/stefan-georgi/AGENT.md +221 -0
  278. package/.catalog/agents/story-chief/AGENT.md +188 -0
  279. package/.catalog/agents/strategist/AGENT.md +113 -0
  280. package/.catalog/agents/style-enforcer/AGENT.md +180 -0
  281. package/.catalog/agents/summary-reporter/AGENT.md +236 -0
  282. package/.catalog/agents/task-decomposer/AGENT.md +138 -0
  283. package/.catalog/agents/task-manager/AGENT.md +75 -0
  284. package/.catalog/agents/terminal/AGENT.md +43 -0
  285. package/.catalog/agents/test-agent/AGENT.md +8 -0
  286. package/.catalog/agents/threat-prioritizer/AGENT.md +183 -0
  287. package/.catalog/agents/todd-brown/AGENT.md +204 -0
  288. package/.catalog/agents/token-architect/AGENT.md +180 -0
  289. package/.catalog/agents/tokenomics-strategist/AGENT.md +172 -0
  290. package/.catalog/agents/tom-breeze/AGENT.md +208 -0
  291. package/.catalog/agents/tooltip-generator/AGENT.md +181 -0
  292. package/.catalog/agents/traffic-chief/AGENT.md +130 -0
  293. package/.catalog/agents/tree-integrator/AGENT.md +151 -0
  294. package/.catalog/agents/tree-orchestrator/AGENT.md +151 -0
  295. package/.catalog/agents/tree-validator/AGENT.md +154 -0
  296. package/.catalog/agents/trend-historian/AGENT.md +82 -0
  297. package/.catalog/agents/tunnel-master/AGENT.md +53 -0
  298. package/.catalog/agents/tutor-agent/AGENT.md +204 -0
  299. package/.catalog/agents/ui-engineer/AGENT.md +135 -0
  300. package/.catalog/agents/user-behavior-tracker/AGENT.md +183 -0
  301. package/.catalog/agents/ux-critic/AGENT.md +82 -0
  302. package/.catalog/agents/ux-designer/AGENT.md +138 -0
  303. package/.catalog/agents/vercel-pilot/AGENT.md +51 -0
  304. package/.catalog/agents/vision-chief/AGENT.md +234 -0
  305. package/.catalog/agents/visual-ads/AGENT.md +115 -0
  306. package/.catalog/agents/visual-director/AGENT.md +79 -0
  307. package/.catalog/agents/visual-generator/AGENT.md +141 -0
  308. package/.catalog/agents/visual-researcher/AGENT.md +100 -0
  309. package/.catalog/agents/voice/AGENT.md +43 -0
  310. package/.catalog/agents/vulcan/AGENT.md +107 -0
  311. package/.catalog/agents/wave-dispatcher/AGENT.md +172 -0
  312. package/.catalog/agents/weaver/AGENT.md +49 -0
  313. package/.catalog/agents/wes-kao/AGENT.md +301 -0
  314. package/.catalog/agents/wire/AGENT.md +43 -0
  315. package/.catalog/agents/yvon-chouinard/AGENT.md +308 -0
  316. package/.catalog/capabilities/deep-research/INDEX.md +26 -0
  317. package/.catalog/capabilities/deep-research/capability.yaml +30 -0
  318. package/.catalog/capabilities/deep-research/skills/advanced-query-planning.md +24 -0
  319. package/.catalog/capabilities/deep-research/skills/contradiction-analysis.md +24 -0
  320. package/.catalog/capabilities/deep-research/skills/evidence-synthesis.md +24 -0
  321. package/.catalog/capabilities/deep-research/skills/executive-briefing.md +24 -0
  322. package/.catalog/capabilities/deep-research/skills/source-credibility-scoring.md +24 -0
  323. package/.catalog/capabilities/deep-research/squads/research-squad/SQUAD.md +18 -0
  324. package/.catalog/capabilities/deep-research/workflows/deep-research-flow.yaml +15 -0
  325. package/.catalog/mcps/my-mcp/REFERENCE.md +7 -0
  326. package/.catalog/mcps/test-mcp/mcp.json +7 -0
  327. package/.catalog/skill-networks.json +29 -0
  328. package/.catalog/skills/1password/SKILL.md +34 -0
  329. package/.catalog/skills/apple-notes/SKILL.md +34 -0
  330. package/.catalog/skills/apple-reminders/SKILL.md +34 -0
  331. package/.catalog/skills/bear-notes/SKILL.md +34 -0
  332. package/.catalog/skills/blogwatcher/SKILL.md +34 -0
  333. package/.catalog/skills/blucli/SKILL.md +34 -0
  334. package/.catalog/skills/bluebubbles/SKILL.md +34 -0
  335. package/.catalog/skills/browser-use/SKILL.md +132 -0
  336. package/.catalog/skills/camsnap/SKILL.md +34 -0
  337. package/.catalog/skills/canvas/SKILL.md +34 -0
  338. package/.catalog/skills/clawhub/SKILL.md +34 -0
  339. package/.catalog/skills/coding-agent/SKILL.md +34 -0
  340. package/.catalog/skills/design-extractor/OPENLIFE_INSTALL.md +24 -0
  341. package/.catalog/skills/design-extractor/SKILL.md +413 -0
  342. package/.catalog/skills/design-extractor/references/css-patterns.md +97 -0
  343. package/.catalog/skills/discord/SKILL.md +34 -0
  344. package/.catalog/skills/eightctl/SKILL.md +34 -0
  345. package/.catalog/skills/gemini/SKILL.md +34 -0
  346. package/.catalog/skills/gh-issues/SKILL.md +34 -0
  347. package/.catalog/skills/gifgrep/SKILL.md +34 -0
  348. package/.catalog/skills/github/SKILL.md +34 -0
  349. package/.catalog/skills/gog/SKILL.md +34 -0
  350. package/.catalog/skills/goplaces/SKILL.md +34 -0
  351. package/.catalog/skills/healthcheck/SKILL.md +34 -0
  352. package/.catalog/skills/himalaya/SKILL.md +34 -0
  353. package/.catalog/skills/imsg/SKILL.md +34 -0
  354. package/.catalog/skills/mcporter/SKILL.md +34 -0
  355. package/.catalog/skills/model-usage/SKILL.md +34 -0
  356. package/.catalog/skills/nano-banana-pro/SKILL.md +34 -0
  357. package/.catalog/skills/nano-pdf/SKILL.md +34 -0
  358. package/.catalog/skills/node-connect/SKILL.md +34 -0
  359. package/.catalog/skills/notion/SKILL.md +34 -0
  360. package/.catalog/skills/obsidian/SKILL.md +34 -0
  361. package/.catalog/skills/openai-image-gen/SKILL.md +34 -0
  362. package/.catalog/skills/openai-whisper/SKILL.md +34 -0
  363. package/.catalog/skills/openai-whisper-api/SKILL.md +34 -0
  364. package/.catalog/skills/openhue/SKILL.md +34 -0
  365. package/.catalog/skills/oracle/SKILL.md +34 -0
  366. package/.catalog/skills/ordercli/SKILL.md +34 -0
  367. package/.catalog/skills/peekaboo/SKILL.md +34 -0
  368. package/.catalog/skills/sag/SKILL.md +34 -0
  369. package/.catalog/skills/sample-from-url/IMPORTED_REFERENCE.md +13 -0
  370. package/.catalog/skills/session-logs/SKILL.md +34 -0
  371. package/.catalog/skills/sherpa-onnx-tts/SKILL.md +34 -0
  372. package/.catalog/skills/skill-creator/SKILL.md +34 -0
  373. package/.catalog/skills/slack/SKILL.md +34 -0
  374. package/.catalog/skills/songsee/SKILL.md +34 -0
  375. package/.catalog/skills/sonoscli/SKILL.md +34 -0
  376. package/.catalog/skills/spotify-player/SKILL.md +34 -0
  377. package/.catalog/skills/summarize/SKILL.md +34 -0
  378. package/.catalog/skills/test-skill/REFERENCE.md +7 -0
  379. package/.catalog/skills/test-skill-autogen/SKILL.md +9 -0
  380. package/.catalog/skills/things-mac/SKILL.md +34 -0
  381. package/.catalog/skills/tmux/SKILL.md +34 -0
  382. package/.catalog/skills/trello/SKILL.md +34 -0
  383. package/.catalog/skills/video-frames/SKILL.md +34 -0
  384. package/.catalog/skills/voice-call/SKILL.md +34 -0
  385. package/.catalog/skills/wacli/SKILL.md +34 -0
  386. package/.catalog/skills/weather/SKILL.md +34 -0
  387. package/.catalog/skills/xurl/SKILL.md +34 -0
  388. package/.catalog/squads/00-governance-advisory-board/SQUAD.md +103 -0
  389. package/.catalog/squads/00-governance-c-level-squad/SQUAD.md +93 -0
  390. package/.catalog/squads/00-governance-capital-ai/SQUAD.md +147 -0
  391. package/.catalog/squads/00-governance-capital-ai-canon-v1-livros-e-grandes-mentes/SQUAD.md +140 -0
  392. package/.catalog/squads/00-governance-capital-ai-definicao-canonica/SQUAD.md +49 -0
  393. package/.catalog/squads/00-governance-conselho/SQUAD.md +116 -0
  394. package/.catalog/squads/00-governance-host-quest/SQUAD.md +132 -0
  395. package/.catalog/squads/00-governance-project-ops-squad/SQUAD.md +97 -0
  396. package/.catalog/squads/00-governance-scrap-master/SQUAD.md +124 -0
  397. package/.catalog/squads/01-meta-framework-ai-builder/SQUAD.md +167 -0
  398. package/.catalog/squads/01-meta-framework-aiobuilder-funcionalidades-inspiradas-em-claude-code/SQUAD.md +119 -0
  399. package/.catalog/squads/01-meta-framework-swarm-tree-orchestration/SQUAD.md +130 -0
  400. package/.catalog/squads/02-product-growth-ads-xpower/SQUAD.md +129 -0
  401. package/.catalog/squads/02-product-growth-awards/SQUAD.md +123 -0
  402. package/.catalog/squads/02-product-growth-brand-squad/SQUAD.md +136 -0
  403. package/.catalog/squads/02-product-growth-copy-squad/SQUAD.md +148 -0
  404. package/.catalog/squads/02-product-growth-design-squad/SQUAD.md +98 -0
  405. package/.catalog/squads/02-product-growth-fabrica-ads/SQUAD.md +157 -0
  406. package/.catalog/squads/02-product-growth-fabrica-imortais-backup/SQUAD.md +148 -0
  407. package/.catalog/squads/02-product-growth-hormozi-squad/SQUAD.md +118 -0
  408. package/.catalog/squads/02-product-growth-movement/SQUAD.md +94 -0
  409. package/.catalog/squads/02-product-growth-saas-onboarding-activator/SQUAD.md +103 -0
  410. package/.catalog/squads/02-product-growth-sales-squad/SQUAD.md +112 -0
  411. package/.catalog/squads/02-product-growth-storytelling/SQUAD.md +106 -0
  412. package/.catalog/squads/02-product-growth-traffic-masters/SQUAD.md +117 -0
  413. package/.catalog/squads/02-product-growth-ultimate-landingpage/SQUAD.md +114 -0
  414. package/.catalog/squads/03-engineering-quality-automated-code-review-squad/SQUAD.md +102 -0
  415. package/.catalog/squads/03-engineering-quality-cloudflare-mini/SQUAD.md +65 -0
  416. package/.catalog/squads/03-engineering-quality-seguranca/SQUAD.md +24 -0
  417. package/.catalog/squads/04-data-security-cybersecurity/SQUAD.md +113 -0
  418. package/.catalog/squads/04-data-security-data-quality-guardian/SQUAD.md +102 -0
  419. package/.catalog/squads/04-data-security-data-squad/SQUAD.md +95 -0
  420. package/.catalog/squads/04-data-security-incident-response-squad/SQUAD.md +103 -0
  421. package/.catalog/squads/04-data-security-soc-alert-triage/SQUAD.md +103 -0
  422. package/.catalog/squads/05-domain-specialists-adaptive-tutor-k12/SQUAD.md +102 -0
  423. package/.catalog/squads/05-domain-specialists-ambient-clinical-scribe/SQUAD.md +102 -0
  424. package/.catalog/squads/05-domain-specialists-bibliotecaria/SQUAD.md +121 -0
  425. package/.catalog/squads/05-domain-specialists-contract-review-squad/SQUAD.md +104 -0
  426. package/.catalog/squads/05-domain-specialists-crypto-token-forge/SQUAD.md +143 -0
  427. package/.catalog/squads/05-domain-specialists-legaltech/SQUAD.md +28 -0
  428. package/.catalog/squads/05-domain-specialists-resume-screener-squad/SQUAD.md +102 -0
  429. package/.catalog/squads/mirofish-intel-mirofish-intel/SQUAD.md +70 -0
  430. package/.catalog/squads/mirofish-mirofish-squad/SQUAD.md +177 -0
  431. package/.catalog/squads/openlife-auto-criar-pipeline-de-revis-o-jur-dica-para-contratos-1777092830690/SQUAD.md +16 -0
  432. package/.catalog/squads/operator-cli/SQUAD.md +33 -0
  433. package/.catalog/squads/telegram-autonomy/SQUAD.md +34 -0
  434. package/.catalog/squads/test-squad/SQUAD.md +8 -0
  435. package/.catalog/teams.json +16 -0
  436. package/INSTALL.md +29 -1
  437. package/dist/cli/ChatTui.js +32 -0
  438. package/dist/cli/InstallModules.js +17 -2
  439. package/dist/cli/InstallWizardV2.js +110 -0
  440. package/dist/cli/install/Multiselect.js +285 -0
  441. package/dist/cli/install/OAuthRunner.js +170 -0
  442. package/dist/cli/install/Phases.js +864 -0
  443. package/dist/cli/install/ProvidersCatalog.js +320 -0
  444. package/dist/cli/install/WizardIO.js +271 -0
  445. package/dist/cli/install/types.js +17 -0
  446. package/dist/index.js +72 -33
  447. package/dist/orchestrator/AgentRegistry.js +45 -1
  448. package/dist/orchestrator/ConsequenceForecaster.js +24 -1
  449. package/dist/orchestrator/DreamGoalStore.js +130 -0
  450. package/dist/orchestrator/Gatekeeper.js +14 -0
  451. package/dist/orchestrator/Gateway.js +149 -10
  452. package/dist/orchestrator/ModelManager.js +7 -1
  453. package/dist/orchestrator/OrchestrationLoop.js +12 -0
  454. package/dist/orchestrator/ParallelOrchestrationLoop.js +12 -2
  455. package/dist/orchestrator/RuntimePolicy.js +4 -1
  456. package/dist/orchestrator/ServiceCompletionPolicy.js +15 -0
  457. package/dist/orchestrator/SkillRegistryV2.js +48 -3
  458. package/dist/orchestrator/SquadRegistry.js +47 -1
  459. package/dist/orchestrator/SynthesizerAgent.js +20 -1
  460. package/dist/orchestrator/TaskExecutor.js +53 -0
  461. package/dist/orchestrator/capability/CapabilityGenesisEngine.js +66 -11
  462. package/dist/test_capability_genesis_engine.js +1 -1
  463. package/dist/test_chat_smoke_command.js +59 -0
  464. package/dist/test_dream_goal_commands.js +76 -0
  465. package/dist/test_gateway_telegram_formatting.js +74 -0
  466. package/dist/test_install_wizard_v2.js +193 -0
  467. package/dist/test_on_demand_voice_reply.js +65 -0
  468. package/dist/test_remaining_sprints_contracts.js +103 -0
  469. package/dist/test_runtime_policy.js +25 -6
  470. package/dist/test_service_completion_policy.js +7 -0
  471. package/dist/test_subsystems_routing_governance.js +13 -3
  472. package/dist/test_task_executor_gemini_api.js +68 -0
  473. package/package.json +6 -3
package/dist/index.js CHANGED
@@ -76,6 +76,7 @@ const SystemDoctor_1 = require("./orchestrator/SystemDoctor");
76
76
  const WorldClassCommands_1 = require("./cli/WorldClassCommands");
77
77
  const InstallBanner_1 = require("./cli/InstallBanner");
78
78
  const DreamOrganizer_1 = require("./cli/DreamOrganizer");
79
+ const DreamGoalStore_1 = require("./orchestrator/DreamGoalStore");
79
80
  const InstallFlow_1 = require("./cli/InstallFlow");
80
81
  const InstallWizard_1 = require("./cli/InstallWizard");
81
82
  const InstallHeadless_1 = require("./cli/InstallHeadless");
@@ -236,6 +237,22 @@ program
236
237
  .name('openlife')
237
238
  .description('OPEN-LIFE Córtex Orquestrador (Dual-Core)')
238
239
  .version(pkgVersion);
240
+ program
241
+ .command('dream [text...]')
242
+ .description('Define ou consulta a visão /dream atual do OpenLife')
243
+ .action((parts) => {
244
+ const store = new DreamGoalStore_1.DreamGoalStore();
245
+ const input = `/dream ${Array.isArray(parts) ? parts.join(' ') : ''}`.trim();
246
+ console.log(store.handleSlashCommand(input));
247
+ });
248
+ program
249
+ .command('goal [text...]')
250
+ .description('Define ou consulta a missão /goal atual do OpenLife')
251
+ .action((parts) => {
252
+ const store = new DreamGoalStore_1.DreamGoalStore();
253
+ const input = `/goal ${Array.isArray(parts) ? parts.join(' ') : ''}`.trim();
254
+ console.log(store.handleSlashCommand(input));
255
+ });
239
256
  program
240
257
  .command('install')
241
258
  .description('Onboarding unificado: instala CLI ou Agente Autônomo')
@@ -296,46 +313,68 @@ program
296
313
  // INIT — Interactive install wizard (Story 3.5)
297
314
  // ============================================================================
298
315
  program.command('init')
299
- .description('Interactive install wizard — guided setup for OpenLife into the chosen host CLI')
300
- .action(async () => {
301
- console.log((0, InstallBanner_1.installationBanner)());
302
- console.log('');
303
- // Lazy require preserves the lazy-import contract (`src/index.ts:11-13`).
304
- const { InstallWizard, ReadlineAnswerProvider } = require('./cli/InstallWizard');
305
- const { InstallFlow } = require('./cli/InstallFlow');
306
- const provider = new ReadlineAnswerProvider();
307
- const wizard = new InstallWizard(process.cwd(), provider);
308
- try {
309
- const result = await wizard.run();
310
- if (!result.ok) {
311
- console.log(JSON.stringify(result, null, 2));
312
- process.exitCode = result.reason === 'user_aborted' ? 0 : 1;
313
- return;
314
- }
315
- const flow = new InstallFlow();
316
- const installResult = flow.run(result.options);
317
- for (const line of flow.renderSummary(installResult))
318
- console.log(line);
319
- if (result.warnings && result.warnings.length) {
316
+ .description('Interactive install wizard — phase-based, sequential, multi-host (v2)')
317
+ .option('--legacy', 'use the v1 (batched-Q&A) wizard instead of v2 (sequential phases)')
318
+ .action(async (options) => {
319
+ if (options.legacy) {
320
+ // v1 wizard kept for users who scripted around the old prompts.
321
+ console.log((0, InstallBanner_1.installationBanner)());
322
+ console.log('');
323
+ const { InstallWizard, ReadlineAnswerProvider } = require('./cli/InstallWizard');
324
+ const { InstallFlow } = require('./cli/InstallFlow');
325
+ const provider = new ReadlineAnswerProvider();
326
+ const wizard = new InstallWizard(process.cwd(), provider);
327
+ try {
328
+ const result = await wizard.run();
329
+ if (!result.ok) {
330
+ console.log(JSON.stringify(result, null, 2));
331
+ process.exitCode = result.reason === 'user_aborted' ? 0 : 1;
332
+ return;
333
+ }
334
+ const flow = new InstallFlow();
335
+ const installResult = flow.run(result.options);
336
+ for (const line of flow.renderSummary(installResult))
337
+ console.log(line);
338
+ if (result.warnings?.length) {
339
+ console.log('');
340
+ console.log('⚠️ Warnings:');
341
+ for (const w of result.warnings)
342
+ console.log(` - ${w}`);
343
+ }
320
344
  console.log('');
321
- console.log('⚠️ Warnings:');
322
- for (const w of result.warnings)
323
- console.log(` - ${w}`);
345
+ console.log('✅ OpenLife ready (v1 wizard).');
324
346
  }
347
+ finally {
348
+ provider.close?.();
349
+ }
350
+ return;
351
+ }
352
+ // v2 wizard — phase-based, sequential, multi-host, multi-product.
353
+ // Banner is rendered by the first phase, not here.
354
+ const { InstallWizardV2 } = require('./cli/InstallWizardV2');
355
+ const wizard = new InstallWizardV2();
356
+ const result = await wizard.run();
357
+ if (!result.ok) {
325
358
  console.log('');
326
- console.log('✅ OpenLife ready.');
327
- console.log('');
328
- console.log('Try:');
359
+ console.log(`Install wizard ended without finishing (${result.reason}${result.detail ? `: ${result.detail}` : ''}).`);
360
+ process.exitCode = result.reason === 'user_aborted' ? 0 : 1;
361
+ return;
362
+ }
363
+ console.log('');
364
+ console.log('✅ OpenLife ready.');
365
+ console.log('');
366
+ console.log('Try:');
367
+ if (result.context.products.includes('openlife-core')) {
329
368
  console.log(' openlife ask "hello, what can you do?"');
330
369
  console.log(' openlife status');
331
- console.log(' openlife --help');
332
- console.log('');
333
- console.log('Docs: https://github.com/GOOODZ/openlife-core');
334
370
  }
335
- finally {
336
- // Release the readline interface so the CLI exits cleanly.
337
- provider.close?.();
371
+ if (result.context.products.includes('openlife-agent')) {
372
+ console.log(' openlife agent start --daemon');
373
+ console.log(' openlife agent status');
338
374
  }
375
+ console.log(' openlife --help');
376
+ console.log('');
377
+ console.log('Docs: https://github.com/GOOODZ/openlife-core');
339
378
  });
340
379
  // ============================================================================
341
380
  // OBSERVABILITY — `openlife status`, `openlife logs`
@@ -1,6 +1,40 @@
1
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.AgentRegistry = void 0;
37
+ const path = __importStar(require("path"));
4
38
  const FileAgentProvider_1 = require("./providers/FileAgentProvider");
5
39
  const CloudAgentProvider_1 = require("./providers/CloudAgentProvider");
6
40
  const CompositeAgentProvider_1 = require("./providers/CompositeAgentProvider");
@@ -8,7 +42,17 @@ const defaultAgentRoots = () => {
8
42
  const roots = process.env.OPENLIFE_AGENT_ROOTS
9
43
  ? process.env.OPENLIFE_AGENT_ROOTS.split(':').filter(Boolean)
10
44
  : [];
11
- return roots.length > 0 ? roots : [process.cwd() + '/.catalog/agents'];
45
+ if (roots.length > 0)
46
+ return roots;
47
+ // Multi-root resolution (v1.8.3+): prefer the user's project-local .catalog
48
+ // (override), fall back to the npm-package-bundled .catalog (defaults that
49
+ // ship with @openlife/cli — the user's 314+ agents, etc.). FileAgentProvider
50
+ // skips non-existent roots, so a clone-of-repo install ends up with both
51
+ // paths resolving to the same dir and FileAgentProvider naturally dedupes
52
+ // by id downstream.
53
+ const cwdRoot = path.join(process.cwd(), '.catalog', 'agents');
54
+ const packageRoot = path.join(__dirname, '..', '..', '.catalog', 'agents');
55
+ return cwdRoot === packageRoot ? [cwdRoot] : [cwdRoot, packageRoot];
12
56
  };
13
57
  class AgentRegistry {
14
58
  provider;
@@ -48,7 +48,9 @@ class ConsequenceForecaster {
48
48
  ];
49
49
  const selectedPath = this.pickBest(paths);
50
50
  const executiveSummary = this.buildExecutiveSummary(selectedPath, governanceRisk, normalizedGoal);
51
- return { selectedPath, consideredPaths: paths, executiveSummary };
51
+ const valueScores = this.scoreValues(selectedPath, governanceRisk, normalizedGoal);
52
+ const horizons = this.buildHorizons(selectedPath, governanceRisk, normalizedGoal);
53
+ return { selectedPath, consideredPaths: paths, executiveSummary, valueScores, horizons };
52
54
  }
53
55
  /**
54
56
  * Story 14.3 (v1.5) — Brain-enriched forecast with persistent cache.
@@ -257,6 +259,27 @@ class ConsequenceForecaster {
257
259
  return 'safety';
258
260
  return 'neutral';
259
261
  }
262
+ scoreValues(selectedPath, risk, normalizedGoal) {
263
+ const safety = risk === 'high' && selectedPath.id === 'conservative' ? 9 : risk === 'high' ? 5 : 7;
264
+ const usefulness = selectedPath.id === 'aggressive' ? 8 : selectedPath.id === 'balanced' ? 8 : 6;
265
+ const reversibility = normalizedGoal.includes('delete') || normalizedGoal.includes('remove') || normalizedGoal.includes('produção') || normalizedGoal.includes('production') ? 5 : 8;
266
+ const cost = selectedPath.policy.maxBranches > 2 ? 5 : 8;
267
+ return [
268
+ { criterion: 'safety', score: safety, rationale: 'Prioriza risco governado e superfície de execução.' },
269
+ { criterion: 'usefulness', score: usefulness, rationale: 'Estima probabilidade de entregar valor útil ao usuário.' },
270
+ { criterion: 'reversibility', score: reversibility, rationale: 'Avalia facilidade de desfazer ou pausar a ação.' },
271
+ { criterion: 'cost', score: cost, rationale: 'Penaliza fan-out e paralelismo quando aumentam custo operacional.' },
272
+ ];
273
+ }
274
+ buildHorizons(selectedPath, risk, normalizedGoal) {
275
+ const safeAction = risk === 'high' ? 'exigir validação explícita antes de efeitos externos' : 'executar com validação padrão';
276
+ return {
277
+ now: { impact: `Rota ${selectedPath.id} selecionada; ${selectedPath.consequences[0]}.`, recommendedAction: safeAction, risk },
278
+ '24h': { impact: 'Evidências e logs devem confirmar ausência de regressão operacional.', recommendedAction: 'revisar serviceEvidence e eventos de governança', risk: risk === 'low' ? 'low' : 'medium' },
279
+ '7d': { impact: 'Padrões de falha ou retrabalho começam a aparecer nos KPIs do serviço.', recommendedAction: 'avaliar scorecard e ajustar capability/workflow se necessário', risk: 'medium' },
280
+ '30d': { impact: 'Efeito acumulado em custo, confiabilidade e confiança do operador fica mensurável.', recommendedAction: 'promover, pausar ou refatorar a capacidade com base em evidência', risk: normalizedGoal.includes('production') || normalizedGoal.includes('produção') ? 'high' : 'medium' },
281
+ };
282
+ }
260
283
  scorePath(risk, policy, executors, normalizedGoal, conservative) {
261
284
  let score = 0;
262
285
  if (executors.length > 1)
@@ -0,0 +1,130 @@
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.DreamGoalStore = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ class DreamGoalStore {
40
+ stateDir;
41
+ constructor(stateDir = process.env.OPENLIFE_STATE_DIR || path.join(process.cwd(), '.openlife')) {
42
+ this.stateDir = stateDir;
43
+ }
44
+ setDream(value) {
45
+ return this.set('dream', value);
46
+ }
47
+ setGoal(value) {
48
+ return this.set('goal', value);
49
+ }
50
+ getDream() {
51
+ return this.load().dream;
52
+ }
53
+ getGoal() {
54
+ return this.load().goal;
55
+ }
56
+ summary() {
57
+ const state = this.load();
58
+ const dream = state.dream?.value || 'não definido';
59
+ const goal = state.goal?.value || 'não definido';
60
+ return [`Dream atual: ${dream}`, `Goal atual: ${goal}`].join('\n');
61
+ }
62
+ handleSlashCommand(input) {
63
+ const trimmed = input.trim();
64
+ const match = trimmed.match(/^\/(dream|goal)(?:\s+([\s\S]+))?$/i);
65
+ if (!match)
66
+ return null;
67
+ const kind = match[1].toLowerCase();
68
+ const value = (match[2] || '').trim();
69
+ if (!value) {
70
+ const current = kind === 'dream' ? this.getDream() : this.getGoal();
71
+ if (!current) {
72
+ return `${this.label(kind)} ainda não definido. Use /${kind} <texto> para registrar.`;
73
+ }
74
+ return `${this.label(kind)} atual:\n${current.value}\n\nAtualizado em: ${current.updatedAt}`;
75
+ }
76
+ const entry = this.set(kind, value);
77
+ const counterpart = kind === 'dream' ? this.getGoal() : this.getDream();
78
+ const nextHint = kind === 'dream'
79
+ ? 'Use /goal para transformar esse sonho em uma missão executável.'
80
+ : 'Use /dream para ajustar a visão maior por trás deste objetivo.';
81
+ return [
82
+ `${this.label(kind)} registrado ✅`,
83
+ '',
84
+ entry.value,
85
+ '',
86
+ counterpart ? this.summary() : nextHint,
87
+ ].join('\n');
88
+ }
89
+ set(kind, rawValue) {
90
+ const value = rawValue.trim();
91
+ if (!value)
92
+ throw new Error(`${kind}_cannot_be_empty`);
93
+ const state = this.load();
94
+ const entry = { kind, value, updatedAt: new Date().toISOString() };
95
+ state[kind] = entry;
96
+ state.history = [...(state.history || []), entry].slice(-50);
97
+ this.save(state);
98
+ this.appendMarkdown(entry);
99
+ return entry;
100
+ }
101
+ label(kind) {
102
+ return kind === 'dream' ? 'Dream' : 'Goal';
103
+ }
104
+ filePath() {
105
+ return path.join(this.stateDir, 'dream-goal.json');
106
+ }
107
+ load() {
108
+ const file = this.filePath();
109
+ if (!fs.existsSync(file))
110
+ return { history: [] };
111
+ try {
112
+ const parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
113
+ return { ...parsed, history: parsed.history || [] };
114
+ }
115
+ catch {
116
+ return { history: [] };
117
+ }
118
+ }
119
+ save(state) {
120
+ fs.mkdirSync(this.stateDir, { recursive: true });
121
+ fs.writeFileSync(this.filePath(), JSON.stringify(state, null, 2), 'utf-8');
122
+ }
123
+ appendMarkdown(entry) {
124
+ const dir = path.join(this.stateDir, 'dream-goal');
125
+ fs.mkdirSync(dir, { recursive: true });
126
+ const file = path.join(dir, `${entry.kind}.md`);
127
+ fs.appendFileSync(file, `## /${entry.kind} ${entry.updatedAt}\n\n${entry.value}\n\n`, 'utf-8');
128
+ }
129
+ }
130
+ exports.DreamGoalStore = DreamGoalStore;
@@ -53,6 +53,7 @@ const ModelManager_1 = require("./ModelManager");
53
53
  const WorldClassCommands_1 = require("../cli/WorldClassCommands");
54
54
  const GovernanceLayer_1 = require("./GovernanceLayer");
55
55
  const child_process_1 = require("child_process");
56
+ const DreamGoalStore_1 = require("./DreamGoalStore");
56
57
  class Gatekeeper {
57
58
  memory;
58
59
  squadManager;
@@ -117,6 +118,12 @@ class Gatekeeper {
117
118
  }
118
119
  async routeTask(task, userInput, userId = "default", options) {
119
120
  console.log(`\n[GATEKEEPER] Intenção: ${task.intent} | Budget: $${task.budgetLimit} | User: ${userId}`);
121
+ const dreamGoalResponse = new DreamGoalStore_1.DreamGoalStore().handleSlashCommand(userInput);
122
+ if (dreamGoalResponse) {
123
+ this.sessionManager.addMessage(userId, 'user', userInput);
124
+ this.sessionManager.addMessage(userId, 'agent', dreamGoalResponse);
125
+ return dreamGoalResponse;
126
+ }
120
127
  const parsedCommand = this.commandLanguage.parse(userInput);
121
128
  const commandResult = this.commandRouter.route(parsedCommand);
122
129
  if (commandResult) {
@@ -280,6 +287,9 @@ ${searchResult ? `Contexto relevante:\n${searchResult.substring(0, 900)}\n` : ''
280
287
  Histórico recente:
281
288
  ${recentHistory.slice(-1200)}
282
289
 
290
+ Dream/Goal atual do usuário:
291
+ ${new DreamGoalStore_1.DreamGoalStore().summary()}
292
+
283
293
  Instruções:
284
294
  - Responda diretamente à última mensagem, em português natural.
285
295
  - Seja rápido e conciso por padrão.
@@ -319,6 +329,10 @@ Instruções:
319
329
  const usedFallback = state.attempts.some(a => a.role === 'executor' && a.status === 'partial');
320
330
  console.log("[SELF-EVALUATION LOOP] Analisando o resultado real do loop multiagente...");
321
331
  const traceMode = String(process.env.OPENLIFE_REASONING_MODE || 'errors').toLowerCase();
332
+ const isResearchTask = task.intent === IntentClassifier_1.TaskIntent.RESEARCH_ANALYSIS && inferredMode === 'task';
333
+ if (isResearchTask) {
334
+ return orchestration.response;
335
+ }
322
336
  const toolTrace = state.attempts.slice(-10).map((a) => {
323
337
  const raw = String(a.summary || '').replace(/\n/g, ' ');
324
338
  const m = raw.match(/^TOOL_TRACE\s+(search_files|read_file|write_file|terminal):\s*(.*)$/i);
@@ -41,6 +41,7 @@ const telegraf_1 = require("telegraf");
41
41
  const filters_1 = require("telegraf/filters");
42
42
  const IntentClassifier_1 = require("./IntentClassifier");
43
43
  const Gatekeeper_1 = require("./Gatekeeper");
44
+ const DreamGoalStore_1 = require("./DreamGoalStore");
44
45
  const VoiceManager_1 = require("./VoiceManager");
45
46
  const axios_1 = __importDefault(require("axios"));
46
47
  const fs = __importStar(require("fs"));
@@ -91,6 +92,21 @@ class Gateway {
91
92
  static redactBotToken(text) {
92
93
  return String(text).replace(/(\d{6,12}):[A-Za-z0-9_-]{20,}/g, '$1:[REDACTED]');
93
94
  }
95
+ static classifyTelegramLaunchError(err) {
96
+ const raw = err instanceof Error ? err.message : String(err || '');
97
+ const detail = Gateway.redactBotToken(raw).slice(0, 500);
98
+ if (raw.includes('409') || raw.includes('terminated by other getUpdates request') || raw.toLowerCase().includes('conflict')) {
99
+ return {
100
+ ok: false,
101
+ error: 'telegram_polling_conflict',
102
+ recoveryOptions: ['stop_conflicting_instance', 'replace_token', 'skip_telegram_for_now'],
103
+ detail,
104
+ };
105
+ }
106
+ if (!raw)
107
+ return { ok: true };
108
+ return { ok: false, error: 'telegram_launch_failed', recoveryOptions: ['check_token', 'switch_to_webhook', 'skip_telegram_for_now'], detail };
109
+ }
94
110
  /**
95
111
  * Validate the configured TELEGRAM_BOT_TOKEN by calling getMe.
96
112
  * Returns `{ ok: true, botId, botUsername }` on success;
@@ -359,7 +375,11 @@ class Gateway {
359
375
  // Register webhook handler on the existing Express app — no separate
360
376
  // HTTP server, no port conflict. Telegraf's webhookCallback returns
361
377
  // an Express-compatible middleware that parses updates.
362
- this.app.use(webhookPath, this.bot.webhookCallback(webhookPath));
378
+ // Important: do not mount the callback at `webhookPath` while also
379
+ // passing `webhookPath` into Telegraf. Express strips the mount
380
+ // prefix before the middleware sees `req.url`, so Telegraf would
381
+ // see `/` and skip the update, causing Telegram to receive 404.
382
+ this.app.use(this.bot.webhookCallback(webhookPath));
363
383
  const rawDomain = process.env.OPENLIFE_WEBHOOK_DOMAIN
364
384
  || process.env.RAILWAY_PUBLIC_DOMAIN
365
385
  || process.env.RAILWAY_STATIC_URL
@@ -384,9 +404,9 @@ class Gateway {
384
404
  // Telegram rejects getUpdates with 409. Best-effort, non-fatal.
385
405
  this.bot.telegram.deleteWebhook({ drop_pending_updates: false }).catch(() => { });
386
406
  this.bot.launch().catch((err) => {
387
- const msg = err instanceof Error ? err.message : String(err);
388
- if (msg.includes('409') || msg.includes('terminated by other getUpdates request')) {
389
- console.error('[GATEWAY] Telegram 409 Conflict: outra instância está conectada com este bot. Mantendo processo vivo para healthcheck; Telegram polling fica desativado nesta instância.');
407
+ const classified = Gateway.classifyTelegramLaunchError(err);
408
+ if ('error' in classified && classified.error === 'telegram_polling_conflict') {
409
+ console.error(`[GATEWAY] Telegram 409 Conflict: outra instância está conectada com este bot. Recovery: ${classified.recoveryOptions.join(' | ')}. Detail: ${classified.detail}`);
390
410
  return;
391
411
  }
392
412
  console.error('[GATEWAY] Falha ao iniciar Telegram bot:', err);
@@ -583,12 +603,131 @@ class Gateway {
583
603
  return true;
584
604
  return userId === this.allowedTelegramUserId;
585
605
  }
606
+ shouldRespondByVoice(text) {
607
+ const normalized = text.toLowerCase().trim();
608
+ if (/^\/voice\b|^\/voz\b/.test(normalized))
609
+ return true;
610
+ return /\b(responda|responder|manda|mande|envia|envie|fale|fala)\b[\s\S]{0,80}\b(por|em)\s+(voz|áudio|audio)\b/i.test(normalized)
611
+ || /\bquero\s+(ouvir|áudio|audio|voz)\b/i.test(normalized);
612
+ }
613
+ stripVoiceDirective(text) {
614
+ let cleaned = text.replace(/^\/(voice|voz)\s*/i, '').trim();
615
+ cleaned = cleaned
616
+ .replace(/\b(responda|responder|manda|mande|envia|envie)\s+(por|em)\s+(voz|áudio|audio)\b[:,\s-]*/ig, '')
617
+ .replace(/\b(por favor,?\s*)?(responda|responder)\s+(isso\s+)?(por|em)\s+(voz|áudio|audio)\b/ig, '')
618
+ .trim();
619
+ return cleaned || text;
620
+ }
621
+ voiceUnavailableMessage(err) {
622
+ const detail = err instanceof Error ? err.message : String(err);
623
+ const safeDetail = this.governance.redact(detail).slice(0, 500);
624
+ return [
625
+ 'Não consegui gerar a voz neste momento, então deixei em texto.',
626
+ `Motivo técnico: ${safeDetail}`,
627
+ 'Para ativar voz sob demanda, configure um provider TTS no Railway: OPENAI_API_KEY ou ELEVENLABS_API_KEY.'
628
+ ].join('\n');
629
+ }
630
+ isMarkdownTableSeparator(line) {
631
+ return /^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/.test(line);
632
+ }
633
+ splitMarkdownTableRow(line) {
634
+ let stripped = line.trim();
635
+ if (stripped.startsWith('|'))
636
+ stripped = stripped.slice(1);
637
+ if (stripped.endsWith('|'))
638
+ stripped = stripped.slice(0, -1);
639
+ return stripped.split('|').map(cell => this.stripInlineMarkdown(cell.trim()));
640
+ }
641
+ renderMarkdownTableForTelegram(tableBlock) {
642
+ if (tableBlock.length < 3)
643
+ return tableBlock.join('\n');
644
+ const headers = this.splitMarkdownTableRow(tableBlock[0]);
645
+ if (headers.length < 2)
646
+ return tableBlock.join('\n');
647
+ const rows = [];
648
+ for (const row of tableBlock.slice(2)) {
649
+ const cells = this.splitMarkdownTableRow(row);
650
+ if (!cells.length)
651
+ continue;
652
+ const heading = cells[0] || 'Item';
653
+ const values = cells.slice(1);
654
+ rows.push(`• ${heading}`);
655
+ for (let i = 1; i < headers.length; i += 1) {
656
+ const label = headers[i];
657
+ const value = values[i - 1] || '';
658
+ if (label && value)
659
+ rows.push(` ${label}: ${value}`);
660
+ }
661
+ }
662
+ return rows.join('\n');
663
+ }
664
+ rewriteMarkdownTablesForTelegram(text) {
665
+ if (!text.includes('|'))
666
+ return text;
667
+ const lines = text.split('\n');
668
+ const output = [];
669
+ let i = 0;
670
+ let inFence = false;
671
+ while (i < lines.length) {
672
+ const line = lines[i];
673
+ if (line.trimStart().startsWith('```')) {
674
+ inFence = !inFence;
675
+ output.push(line);
676
+ i += 1;
677
+ continue;
678
+ }
679
+ if (!inFence && line.includes('|') && i + 1 < lines.length && this.isMarkdownTableSeparator(lines[i + 1])) {
680
+ const tableBlock = [line, lines[i + 1]];
681
+ let j = i + 2;
682
+ while (j < lines.length && lines[j].trim() !== '' && lines[j].includes('|')) {
683
+ tableBlock.push(lines[j]);
684
+ j += 1;
685
+ }
686
+ output.push(this.renderMarkdownTableForTelegram(tableBlock));
687
+ i = j;
688
+ continue;
689
+ }
690
+ output.push(line);
691
+ i += 1;
692
+ }
693
+ return output.join('\n');
694
+ }
695
+ stripInlineMarkdown(text) {
696
+ return text
697
+ .replace(/`([^`]+)`/g, '$1')
698
+ .replace(/\*\*([^*]+)\*\*/g, '$1')
699
+ .replace(/__([^_]+)__/g, '$1')
700
+ .replace(/~~([^~]+)~~/g, '$1')
701
+ .replace(/\*([^*\n]+)\*/g, '$1')
702
+ .replace(/(?<!\w)_([^_\n]+)_(?!\w)/g, '$1');
703
+ }
704
+ formatForTelegramPlainText(text) {
705
+ const withoutTables = this.rewriteMarkdownTablesForTelegram(text);
706
+ return withoutTables
707
+ .split('\n')
708
+ .map(line => line
709
+ .replace(/^\s*#{1,6}\s+/, '')
710
+ .replace(/^\s*>\s?/, ''))
711
+ .filter(line => !/^\s*---+\s*$/.test(line))
712
+ .map(line => this.stripInlineMarkdown(line))
713
+ .join('\n')
714
+ .replace(/\n{3,}/g, '\n\n')
715
+ .trim();
716
+ }
586
717
  async processInput(ctx, userId, text) {
587
718
  if (!this.isAuthorizedUser(userId)) {
588
719
  console.warn(`[GATEWAY] Acesso negado para userId=${userId}`);
589
720
  await this.safeReply(ctx, 'Acesso negado por policy de segurança deste bot.');
590
721
  return;
591
722
  }
723
+ const wantsVoiceReply = this.shouldRespondByVoice(text);
724
+ const effectiveText = wantsVoiceReply ? this.stripVoiceDirective(text) : text;
725
+ const dreamGoalStore = new DreamGoalStore_1.DreamGoalStore();
726
+ const dreamGoalResponse = dreamGoalStore.handleSlashCommand(effectiveText);
727
+ if (dreamGoalResponse) {
728
+ await this.safeReply(ctx, dreamGoalResponse);
729
+ return;
730
+ }
592
731
  // Fast ACK pattern: fire a placeholder reply in parallel with the actual
593
732
  // classifier+gatekeeper work. When the work completes, edit the ACK with
594
733
  // the real answer (Telegraf editMessageText). Falls back to a fresh
@@ -628,21 +767,21 @@ class Gateway {
628
767
  const stopTyping = this.startTypingIndicator(ctx);
629
768
  const trace = [];
630
769
  try {
631
- trace.push(`🔎 classify_intent: "${text.slice(0, 80).replace(/\n/g, ' ')}${text.length > 80 ? '...' : ''}"`);
632
- const task = await this.classifier.classify(text);
770
+ trace.push(`🔎 classify_intent: "${effectiveText.slice(0, 80).replace(/\n/g, ' ')}${effectiveText.length > 80 ? '...' : ''}"`);
771
+ const task = await this.classifier.classify(effectiveText);
633
772
  trace.push(`🧭 route_task: "${String(task.intent)}"`);
634
- const response = await this.gatekeeper.routeTask(task, text, userId);
773
+ const response = await this.gatekeeper.routeTask(task, effectiveText, userId);
635
774
  trace.push(`✅ finalize_reply: "${String(task.intent)}"`);
636
- const safeResponse = this.governance.redact(response);
775
+ const safeResponse = this.formatForTelegramPlainText(this.governance.redact(response));
637
776
  const finalResponse = this.reasoningMode === 'always' ? `${trace.join('\n')}\n\n${safeResponse}` : safeResponse;
638
- if (this.ttsEnabled && typeof ctx.sendVoice === 'function') {
777
+ if ((this.ttsEnabled || wantsVoiceReply) && typeof ctx.sendVoice === 'function') {
639
778
  try {
640
779
  const audioPath = await this.voiceManager.generateSpeech(finalResponse);
641
780
  await ctx.sendVoice({ source: audioPath }, { caption: finalResponse });
642
781
  }
643
782
  catch (ttsError) {
644
783
  console.log("[GATEWAY] Fallback para texto (Erro no TTS).", ttsError);
645
- await sendFinal(finalResponse);
784
+ await sendFinal(wantsVoiceReply ? `${finalResponse}\n\n${this.voiceUnavailableMessage(ttsError)}` : finalResponse);
646
785
  }
647
786
  }
648
787
  else {
@@ -73,7 +73,13 @@ class ModelManager {
73
73
  const parts = input.split('/');
74
74
  const providerStr = parts[0];
75
75
  const name = parts.slice(1).join('/');
76
- const validProviders = ['openai-api', 'openai-cli', 'anthropic', 'gemini-api', 'gemini-cli', 'ollama', 'openrouter'];
76
+ const validProviders = [
77
+ 'openai-api', 'openai-cli', 'anthropic', 'gemini-api', 'gemini-cli', 'ollama', 'openrouter',
78
+ 'xai', 'deepseek', 'groq', 'together', 'mistral',
79
+ 'bedrock', 'qwen', 'kimi', 'minimax', 'glm', 'huggingface', 'nvidia-nim', 'perplexity',
80
+ 'vllm', 'sglang', 'llamacpp', 'lmstudio',
81
+ 'litellm', 'clawrouter', 'custom-openai',
82
+ ];
77
83
  const provider = providerStr.toLowerCase();
78
84
  if (!validProviders.includes(provider)) {
79
85
  throw new Error(`Provedor não suportado: '${provider}'. Provedores válidos: ${validProviders.join(', ')}.`);