@openlife/cli 1.7.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 (394) hide show
  1. package/INSTALL.md +266 -0
  2. package/LICENSE +21 -0
  3. package/README.md +142 -0
  4. package/bin/openlife.js +3 -0
  5. package/dist/admin_panel_server.js +66 -0
  6. package/dist/cli/AgentManager.js +109 -0
  7. package/dist/cli/AutonomousInstaller.js +134 -0
  8. package/dist/cli/DreamOrganizer.js +88 -0
  9. package/dist/cli/HostInstaller.js +426 -0
  10. package/dist/cli/InstallBanner.js +16 -0
  11. package/dist/cli/InstallFlow.js +256 -0
  12. package/dist/cli/InstallHeadless.js +47 -0
  13. package/dist/cli/InstallModules.js +148 -0
  14. package/dist/cli/InstallStateStore.js +75 -0
  15. package/dist/cli/InstallWizard.js +364 -0
  16. package/dist/cli/ProfileManager.js +163 -0
  17. package/dist/cli/SystemInstaller.js +89 -0
  18. package/dist/cli/WorldClassCommands.js +208 -0
  19. package/dist/design/DesignMdImporter.js +82 -0
  20. package/dist/design/DesignMdMode.js +93 -0
  21. package/dist/design/DesignMdRegistry.js +67 -0
  22. package/dist/index.js +2575 -0
  23. package/dist/memory/ConversationMemory.js +33 -0
  24. package/dist/memory/LocalMemoryProvider.js +86 -0
  25. package/dist/memory/Mem0Provider.js +16 -0
  26. package/dist/memory/MemoryNamespacePolicy.js +27 -0
  27. package/dist/memory/MemoryOrchestrator.js +65 -0
  28. package/dist/memory/MemoryPromotionFlow.js +32 -0
  29. package/dist/memory/MemoryProvider.js +2 -0
  30. package/dist/memory/MemoryProviderRegistry.js +27 -0
  31. package/dist/memory/MemoryRetentionPolicy.js +60 -0
  32. package/dist/memory/MempalaceProvider.js +72 -0
  33. package/dist/memory/OmniMemory.js +106 -0
  34. package/dist/memory/RedisAgentMemoryProvider.js +16 -0
  35. package/dist/memory/SessionManager.js +86 -0
  36. package/dist/memory/ZepGraphitiProvider.js +16 -0
  37. package/dist/orchestrator/AgentRegistry.js +56 -0
  38. package/dist/orchestrator/AgentScoring.js +82 -0
  39. package/dist/orchestrator/AgentTeam.js +22 -0
  40. package/dist/orchestrator/ArbitrationAgent.js +43 -0
  41. package/dist/orchestrator/ArbitrationScorecard.js +17 -0
  42. package/dist/orchestrator/AssetPromotionEngine.js +65 -0
  43. package/dist/orchestrator/AssetReuseRouter.js +63 -0
  44. package/dist/orchestrator/BenchmarkEngine.js +75 -0
  45. package/dist/orchestrator/Brain.js +298 -0
  46. package/dist/orchestrator/CadenceEngine.js +76 -0
  47. package/dist/orchestrator/CapabilityRouter.js +36 -0
  48. package/dist/orchestrator/CommandLanguage.js +27 -0
  49. package/dist/orchestrator/CommandRouter.js +70 -0
  50. package/dist/orchestrator/ConsequenceForecaster.js +286 -0
  51. package/dist/orchestrator/CronManager.js +286 -0
  52. package/dist/orchestrator/DynamicAgentBuilder.js +48 -0
  53. package/dist/orchestrator/DynamicAgentExecutor.js +15 -0
  54. package/dist/orchestrator/EnterpriseAgenticCore.js +276 -0
  55. package/dist/orchestrator/ExecutionBoard.js +86 -0
  56. package/dist/orchestrator/ExecutionIntent.js +13 -0
  57. package/dist/orchestrator/ExecutionModePolicy.js +48 -0
  58. package/dist/orchestrator/ExecutionRouter.js +9 -0
  59. package/dist/orchestrator/ExecutionState.js +20 -0
  60. package/dist/orchestrator/ExecutorHealth.js +86 -0
  61. package/dist/orchestrator/ExternalCatalogRegistry.js +83 -0
  62. package/dist/orchestrator/Gatekeeper.js +414 -0
  63. package/dist/orchestrator/Gateway.js +508 -0
  64. package/dist/orchestrator/GovernanceConsentStore.js +66 -0
  65. package/dist/orchestrator/GovernanceLayer.js +179 -0
  66. package/dist/orchestrator/GovernancePolicyStore.js +53 -0
  67. package/dist/orchestrator/GovernanceScopeLedger.js +134 -0
  68. package/dist/orchestrator/GovernanceScopePolicy.js +67 -0
  69. package/dist/orchestrator/IntentClassifier.js +45 -0
  70. package/dist/orchestrator/JobLifecycle.js +91 -0
  71. package/dist/orchestrator/LearningRouter.js +24 -0
  72. package/dist/orchestrator/MediaManager.js +92 -0
  73. package/dist/orchestrator/MemoryCuratorAgent.js +41 -0
  74. package/dist/orchestrator/MissionState.js +155 -0
  75. package/dist/orchestrator/ModelManager.js +84 -0
  76. package/dist/orchestrator/OperatingSystem.js +71 -0
  77. package/dist/orchestrator/OperationalMemoryStore.js +94 -0
  78. package/dist/orchestrator/OptimizationLoop.js +72 -0
  79. package/dist/orchestrator/OrchestrationLoop.js +905 -0
  80. package/dist/orchestrator/OrgStructure.js +88 -0
  81. package/dist/orchestrator/OutcomeSimulator.js +46 -0
  82. package/dist/orchestrator/ParallelOrchestrationLoop.js +36 -0
  83. package/dist/orchestrator/PerformanceScorecard.js +105 -0
  84. package/dist/orchestrator/PlannerAgent.js +46 -0
  85. package/dist/orchestrator/ProcessSandbox.js +129 -0
  86. package/dist/orchestrator/PromotionPipeline.js +74 -0
  87. package/dist/orchestrator/PromotionReviewGate.js +11 -0
  88. package/dist/orchestrator/QueueScheduler.js +260 -0
  89. package/dist/orchestrator/ReleaseGate.js +36 -0
  90. package/dist/orchestrator/ReleaseWorkflow.js +68 -0
  91. package/dist/orchestrator/RemotePublisher.js +139 -0
  92. package/dist/orchestrator/ReuseEngine.js +89 -0
  93. package/dist/orchestrator/ReviewerAgent.js +49 -0
  94. package/dist/orchestrator/RoleHandoff.js +65 -0
  95. package/dist/orchestrator/RuntimeHealthMonitor.js +143 -0
  96. package/dist/orchestrator/RuntimePolicy.js +105 -0
  97. package/dist/orchestrator/RuntimeProbe.js +97 -0
  98. package/dist/orchestrator/RuntimeRegistry.js +73 -0
  99. package/dist/orchestrator/SandboxPolicy.js +22 -0
  100. package/dist/orchestrator/SecurityDownloadGuard.js +169 -0
  101. package/dist/orchestrator/SecurityEventStore.js +58 -0
  102. package/dist/orchestrator/ServiceCompletionPolicy.js +36 -0
  103. package/dist/orchestrator/ServiceState.js +195 -0
  104. package/dist/orchestrator/SkillCreator.js +404 -0
  105. package/dist/orchestrator/SkillLearningLoop.js +57 -0
  106. package/dist/orchestrator/SkillManager.js +75 -0
  107. package/dist/orchestrator/SkillNetwork.js +29 -0
  108. package/dist/orchestrator/SkillRegistryV2.js +28 -0
  109. package/dist/orchestrator/SkillScoring.js +70 -0
  110. package/dist/orchestrator/SquadAutoCreator.js +64 -0
  111. package/dist/orchestrator/SquadCreator.js +727 -0
  112. package/dist/orchestrator/SquadRegistry.js +28 -0
  113. package/dist/orchestrator/SquadRouter.js +33 -0
  114. package/dist/orchestrator/SquadScoring.js +70 -0
  115. package/dist/orchestrator/SubagentLifecycle.js +90 -0
  116. package/dist/orchestrator/SynthesizerAgent.js +48 -0
  117. package/dist/orchestrator/SystemDoctor.js +224 -0
  118. package/dist/orchestrator/TaskExecutor.js +422 -0
  119. package/dist/orchestrator/TeammateBoard.js +61 -0
  120. package/dist/orchestrator/TestHarness.js +184 -0
  121. package/dist/orchestrator/VoiceManager.js +203 -0
  122. package/dist/orchestrator/VoiceRouter.js +89 -0
  123. package/dist/orchestrator/capability/CapabilityGenesisEngine.js +278 -0
  124. package/dist/orchestrator/capability/CapabilityPackParser.js +223 -0
  125. package/dist/orchestrator/capability/CapabilityPackSchema.js +62 -0
  126. package/dist/orchestrator/capability/CapabilityPackState.js +163 -0
  127. package/dist/orchestrator/providers/AgentProvider.js +2 -0
  128. package/dist/orchestrator/providers/CapabilityProvider.js +12 -0
  129. package/dist/orchestrator/providers/CloudAgentProvider.js +55 -0
  130. package/dist/orchestrator/providers/CloudSkillProvider.js +55 -0
  131. package/dist/orchestrator/providers/CloudSquadProvider.js +55 -0
  132. package/dist/orchestrator/providers/CompositeAgentProvider.js +16 -0
  133. package/dist/orchestrator/providers/CompositeCapabilityProvider.js +25 -0
  134. package/dist/orchestrator/providers/CompositeSkillProvider.js +16 -0
  135. package/dist/orchestrator/providers/CompositeSquadProvider.js +16 -0
  136. package/dist/orchestrator/providers/CompositeWorkflowProvider.js +46 -0
  137. package/dist/orchestrator/providers/FileAgentProvider.js +105 -0
  138. package/dist/orchestrator/providers/FileCapabilityProvider.js +106 -0
  139. package/dist/orchestrator/providers/FileSkillProvider.js +65 -0
  140. package/dist/orchestrator/providers/FileSquadProvider.js +69 -0
  141. package/dist/orchestrator/providers/FileWorkflowProvider.js +103 -0
  142. package/dist/orchestrator/providers/SkillProvider.js +2 -0
  143. package/dist/orchestrator/providers/SquadProvider.js +2 -0
  144. package/dist/orchestrator/toolset/ToolsetGuard.js +69 -0
  145. package/dist/orchestrator/toolset/ToolsetRegistry.js +65 -0
  146. package/dist/orchestrator/toolset/ToolsetSchema.js +21 -0
  147. package/dist/orchestrator/util/AtomicWriter.js +204 -0
  148. package/dist/orchestrator/util/DistributedLock.js +232 -0
  149. package/dist/orchestrator/util/TemplateRenderer.js +87 -0
  150. package/dist/orchestrator/util/WatchdogHeartbeat.js +116 -0
  151. package/dist/orchestrator/workflow/ConditionParser.js +232 -0
  152. package/dist/orchestrator/workflow/WorkflowEngine.js +379 -0
  153. package/dist/orchestrator/workflow/WorkflowParser.js +368 -0
  154. package/dist/orchestrator/workflow/WorkflowSchema.js +65 -0
  155. package/dist/orchestrator/workflow/WorkflowState.js +11 -0
  156. package/dist/reversa/ReversaAgent.js +134 -0
  157. package/dist/reversa/ReversaContracts.js +62 -0
  158. package/dist/reversa/ReversaExecutors.js +65 -0
  159. package/dist/skills/SkillRegistry.js +71 -0
  160. package/dist/squads/SquadManager.js +87 -0
  161. package/dist/test_admin_teams_networks.js +54 -0
  162. package/dist/test_agent_team_skill_network.js +15 -0
  163. package/dist/test_aiobuilder_cli_parity.js +169 -0
  164. package/dist/test_ask_exit.js +73 -0
  165. package/dist/test_atomic_writer.js +209 -0
  166. package/dist/test_autonomous_soak.js +141 -0
  167. package/dist/test_benchmark_engine.js +41 -0
  168. package/dist/test_brain_error_diagnostics.js +51 -0
  169. package/dist/test_brain_fallback_chain.js +93 -0
  170. package/dist/test_capability_genesis_engine.js +225 -0
  171. package/dist/test_capability_pack_schema.js +214 -0
  172. package/dist/test_catalog_quality.js +150 -0
  173. package/dist/test_cli_crud_roundtrip.js +154 -0
  174. package/dist/test_cli_diagnostics.js +131 -0
  175. package/dist/test_cli_doc_parity.js +126 -0
  176. package/dist/test_cli_help_surface.js +106 -0
  177. package/dist/test_cli_service_commands.js +83 -0
  178. package/dist/test_consequence_forecast_brain.js +165 -0
  179. package/dist/test_consequence_forecaster.js +24 -0
  180. package/dist/test_conversation_memory.js +36 -0
  181. package/dist/test_create_entities.js +54 -0
  182. package/dist/test_creator_placeholders_completed.js +177 -0
  183. package/dist/test_cron_manager.js +123 -0
  184. package/dist/test_daemon_sigterm.js +72 -0
  185. package/dist/test_deep_research_capability.js +87 -0
  186. package/dist/test_designmd_import_registry.js +16 -0
  187. package/dist/test_designmd_mode.js +50 -0
  188. package/dist/test_designmd_mode_workspace.js +13 -0
  189. package/dist/test_dist_templates_layout.js +135 -0
  190. package/dist/test_distributed_lock.js +201 -0
  191. package/dist/test_distribution_installability.js +67 -0
  192. package/dist/test_doctor_sandbox_check.js +44 -0
  193. package/dist/test_dream_organizer.js +25 -0
  194. package/dist/test_dual_mode.js +15 -0
  195. package/dist/test_enterprise_agentic_core.js +128 -0
  196. package/dist/test_forecast_brain_wiring.js +87 -0
  197. package/dist/test_gateway_telegram_guardrails.js +52 -0
  198. package/dist/test_governance.js +34 -0
  199. package/dist/test_governance_advanced.js +75 -0
  200. package/dist/test_governance_scope_ledger.js +147 -0
  201. package/dist/test_governance_v13_policies.js +44 -0
  202. package/dist/test_guided_creator_cli.js +100 -0
  203. package/dist/test_host_install_e2e.js +324 -0
  204. package/dist/test_host_installer.js +259 -0
  205. package/dist/test_host_installers_gemini_codex.js +95 -0
  206. package/dist/test_host_uninstaller.js +295 -0
  207. package/dist/test_install_flow.js +70 -0
  208. package/dist/test_install_flow_host_validation.js +143 -0
  209. package/dist/test_install_wizard.js +272 -0
  210. package/dist/test_integration_gemini_live.js +95 -0
  211. package/dist/test_integration_http_trigger_live.js +154 -0
  212. package/dist/test_integration_telegram_live.js +102 -0
  213. package/dist/test_job_lifecycle.js +16 -0
  214. package/dist/test_memory_orchestrator.js +33 -0
  215. package/dist/test_memory_promotion.js +36 -0
  216. package/dist/test_memory_retention.js +37 -0
  217. package/dist/test_mission_checkpoint.js +204 -0
  218. package/dist/test_multi_host_docs_parity.js +125 -0
  219. package/dist/test_openlife_auto_creator_routing.js +69 -0
  220. package/dist/test_openlife_evolution_surface.js +77 -0
  221. package/dist/test_openlife_gatekeeper_routing.js +15 -0
  222. package/dist/test_openlife_routing_surface.js +27 -0
  223. package/dist/test_openlife_runtime_source_truth.js +25 -0
  224. package/dist/test_operating_system.js +45 -0
  225. package/dist/test_optimization_loop.js +38 -0
  226. package/dist/test_orchestration_assets_lifecycle.js +78 -0
  227. package/dist/test_outcome_simulator.js +38 -0
  228. package/dist/test_performance_latency.js +215 -0
  229. package/dist/test_performance_scorecard.js +38 -0
  230. package/dist/test_phase1_check_exit.js +103 -0
  231. package/dist/test_phase6_board.js +31 -0
  232. package/dist/test_phase6_cadence.js +29 -0
  233. package/dist/test_phase6_ops.js +37 -0
  234. package/dist/test_post_mission_evaluation.js +190 -0
  235. package/dist/test_process_sandbox.js +88 -0
  236. package/dist/test_profile_toolset_mcp.js +125 -0
  237. package/dist/test_queue_scheduler.js +239 -0
  238. package/dist/test_release_gate.js +23 -0
  239. package/dist/test_remote_publish.js +193 -0
  240. package/dist/test_reversa_contracts_e2e.js +48 -0
  241. package/dist/test_reversa_export_and_strict.js +51 -0
  242. package/dist/test_reversa_full_execution.js +12 -0
  243. package/dist/test_reversa_lite.js +9 -0
  244. package/dist/test_royal_stack_golden.js +179 -0
  245. package/dist/test_runtime_health_backoff.js +154 -0
  246. package/dist/test_runtime_policy.js +26 -0
  247. package/dist/test_runtime_probe.js +19 -0
  248. package/dist/test_runtime_profile_oauth_only.js +262 -0
  249. package/dist/test_runtime_registry.js +11 -0
  250. package/dist/test_security_download_and_scan.js +103 -0
  251. package/dist/test_security_download_guard.js +14 -0
  252. package/dist/test_service_command_surface.js +12 -0
  253. package/dist/test_service_completion_policy.js +32 -0
  254. package/dist/test_service_guardrails_delete.js +12 -0
  255. package/dist/test_service_mode_explicit_only.js +174 -0
  256. package/dist/test_sources_import_ref.js +46 -0
  257. package/dist/test_sources_scaffold.js +43 -0
  258. package/dist/test_squad_skill_creator.js +305 -0
  259. package/dist/test_squad_skill_design_llm.js +176 -0
  260. package/dist/test_subsystems_org_state.js +271 -0
  261. package/dist/test_subsystems_promotion_memory_assets.js +343 -0
  262. package/dist/test_subsystems_routing_governance.js +234 -0
  263. package/dist/test_task_executor_sandbox_optin.js +127 -0
  264. package/dist/test_teammate_learning.js +15 -0
  265. package/dist/test_telegram_delete_guardrail.js +21 -0
  266. package/dist/test_toolset_enforcement.js +188 -0
  267. package/dist/test_trigger_basic_auth.js +112 -0
  268. package/dist/test_util/doc_parity.js +120 -0
  269. package/dist/test_v15_e2e_integration.js +207 -0
  270. package/dist/test_watchdog_heartbeat.js +152 -0
  271. package/dist/test_workflow_condition_parser.js +63 -0
  272. package/dist/test_workflow_e2e.js +240 -0
  273. package/dist/test_workflow_engine.js +330 -0
  274. package/dist/test_workflow_parser.js +245 -0
  275. package/dist/test_workflow_schema_backward_compat.js +197 -0
  276. package/dist-templates/README.md +91 -0
  277. package/dist-templates/claude-code/agents/openlife-atlas.md +52 -0
  278. package/dist-templates/claude-code/agents/openlife-forge.md +42 -0
  279. package/dist-templates/claude-code/agents/openlife-genesis.md +59 -0
  280. package/dist-templates/claude-code/agents/openlife-lyra.md +40 -0
  281. package/dist-templates/claude-code/agents/openlife-maestro.md +45 -0
  282. package/dist-templates/claude-code/commands/openlife/ask.md +14 -0
  283. package/dist-templates/claude-code/commands/openlife/doctor.md +19 -0
  284. package/dist-templates/claude-code/commands/openlife/dream.md +20 -0
  285. package/dist-templates/claude-code/commands/openlife/status.md +14 -0
  286. package/dist-templates/claude-code/mcp/openlife-orchestrator.json +46 -0
  287. package/dist-templates/codex/README.md +7 -0
  288. package/dist-templates/codex/agents/openlife-atlas.md +52 -0
  289. package/dist-templates/codex/agents/openlife-forge.md +42 -0
  290. package/dist-templates/codex/agents/openlife-genesis.md +59 -0
  291. package/dist-templates/codex/agents/openlife-lyra.md +40 -0
  292. package/dist-templates/codex/agents/openlife-maestro.md +45 -0
  293. package/dist-templates/codex/commands/openlife/ask.md +14 -0
  294. package/dist-templates/codex/commands/openlife/doctor.md +19 -0
  295. package/dist-templates/codex/commands/openlife/dream.md +20 -0
  296. package/dist-templates/codex/commands/openlife/status.md +14 -0
  297. package/dist-templates/codex/mcp/openlife-orchestrator.json +46 -0
  298. package/dist-templates/gemini-cli/README.md +8 -0
  299. package/dist-templates/gemini-cli/agents/openlife-atlas.md +52 -0
  300. package/dist-templates/gemini-cli/agents/openlife-forge.md +42 -0
  301. package/dist-templates/gemini-cli/agents/openlife-genesis.md +59 -0
  302. package/dist-templates/gemini-cli/agents/openlife-lyra.md +40 -0
  303. package/dist-templates/gemini-cli/agents/openlife-maestro.md +45 -0
  304. package/dist-templates/gemini-cli/commands/openlife/ask.md +14 -0
  305. package/dist-templates/gemini-cli/commands/openlife/doctor.md +19 -0
  306. package/dist-templates/gemini-cli/commands/openlife/dream.md +20 -0
  307. package/dist-templates/gemini-cli/commands/openlife/status.md +14 -0
  308. package/dist-templates/gemini-cli/mcp/openlife-orchestrator.json +46 -0
  309. package/dist-templates/skill-template/README.md +34 -0
  310. package/dist-templates/skill-template/SKILL.md.template +59 -0
  311. package/dist-templates/squad-template/README.md +82 -0
  312. package/dist-templates/squad-template/SQUAD.md.template +51 -0
  313. package/dist-templates/squad-template/agent-template.md +51 -0
  314. package/dist-templates/squad-template/checklist-template.md +25 -0
  315. package/dist-templates/squad-template/task-template.md +36 -0
  316. package/dist-templates/workflows/PORTED_WORKFLOWS.md +60 -0
  317. package/dist-templates/workflows/brownfield-discovery.yaml +137 -0
  318. package/dist-templates/workflows/greenfield-fullstack.yaml +132 -0
  319. package/dist-templates/workflows/qa-loop.yaml +125 -0
  320. package/dist-templates/workflows/story-development-cycle.yaml +80 -0
  321. package/docs/CHANGELOG_FEATURE_ROLLOUT_DESIGNMD.md +43 -0
  322. package/docs/EXTERNAL_SOURCES_AND_SECURITY_GUARD.md +33 -0
  323. package/docs/OPENLIFE_AUDIT_2026-05-06.md +170 -0
  324. package/docs/OPENLIFE_CONSOLIDATED_PLAN_2026-05-06.md +299 -0
  325. package/docs/OPENLIFE_DUAL_MODE_IMPLEMENTATION_PLAN.md +205 -0
  326. package/docs/OPENLIFE_EVOLUTION_SURFACE_2026-05-07.md +53 -0
  327. package/docs/OPENLIFE_SKILLS_IMPORT_2026-05-07.json +223 -0
  328. package/docs/OPENLIFE_SQUADS_IMPORT_2026-05-07.json +184 -0
  329. package/docs/PAPERCLIP_OPENLIFE_INVESTIGATION.md +85 -0
  330. package/docs/README.md +28 -0
  331. package/docs/RELEASE_ORGANIZATION_PLAN.md +164 -0
  332. package/docs/audit/CLI-EXECUTION-RESULTS.md +113 -0
  333. package/docs/audit/CLI-MATRIX.md +556 -0
  334. package/docs/audit/DOC-PARITY-GAPS.md +351 -0
  335. package/docs/audit/ORCHESTRATOR-MATRIX.md +136 -0
  336. package/docs/audit/TEST-COVERAGE-GAPS.md +334 -0
  337. package/docs/audit/integrations/SKIPPED.md +101 -0
  338. package/docs/autonomous-install.md +79 -0
  339. package/docs/capability-genesis.md +137 -0
  340. package/docs/capability-pack-schema.md +157 -0
  341. package/docs/commands.md +82 -0
  342. package/docs/deep-research-capability.md +114 -0
  343. package/docs/development/typescript-conventions.md +95 -0
  344. package/docs/host-installers.md +68 -0
  345. package/docs/install/aiobuilder.md +70 -0
  346. package/docs/install/claude-code.md +83 -0
  347. package/docs/install/codex.md +64 -0
  348. package/docs/install/gemini-cli.md +64 -0
  349. package/docs/install/runtime-profiles.md +83 -0
  350. package/docs/openlife-agent-os-blueprint.md +114 -0
  351. package/docs/openlife-install-backlog.md +115 -0
  352. package/docs/openlife-install-spec.md +306 -0
  353. package/docs/operations/CLOUD_CUTOVER_AUDIT.md +37 -0
  354. package/docs/operations/PHASE_PROGRESS_CONTINUATION.md +24 -0
  355. package/docs/performance-benchmarks.md +83 -0
  356. package/docs/planning/v1.3-capability-genesis.md +157 -0
  357. package/docs/plans/2026-05-05-admin-interface-professional-dark-premium-plan.md +84 -0
  358. package/docs/plans/2026-05-05-openlife-autonomous-domain-marketplace-masterplan.md +122 -0
  359. package/docs/quickstart.md +60 -0
  360. package/docs/release-process.md +236 -0
  361. package/docs/roadmap/OPENLIFE_MASTER_PLAN_CLOUD_V3.md +97 -0
  362. package/docs/sandboxing-research.md +117 -0
  363. package/docs/stories/epic-feature-audit/1.1.story.md +84 -0
  364. package/docs/stories/epic-feature-audit/1.2.story.md +102 -0
  365. package/docs/stories/epic-feature-audit/1.3.story.md +93 -0
  366. package/docs/stories/epic-feature-audit/1.5.story.md +121 -0
  367. package/docs/stories/epic-feature-audit/1.6.story.md +80 -0
  368. package/docs/stories/epic-feature-completeness/2.1.story.md +70 -0
  369. package/docs/stories/epic-feature-completeness/2.2.story.md +49 -0
  370. package/docs/stories/epic-feature-completeness/2.3.story.md +74 -0
  371. package/docs/stories/epic-feature-completeness/2.4.story.md +71 -0
  372. package/docs/stories/epic-feature-completeness/3.1.story.md +56 -0
  373. package/docs/stories/epic-feature-completeness/3.2.story.md +80 -0
  374. package/docs/stories/epic-feature-completeness/3.3.story.md +68 -0
  375. package/docs/stories/epic-feature-completeness/3.4.story.md +71 -0
  376. package/docs/stories/epic-feature-completeness/3.5.story.md +72 -0
  377. package/docs/stories/epic-feature-completeness/3.6.story.md +69 -0
  378. package/docs/stories/epic-feature-completeness/3.7.story.md +68 -0
  379. package/docs/stories/epic-feature-completeness/3.8.story.md +57 -0
  380. package/docs/toolset-enforcement.md +122 -0
  381. package/docs/v1.4-changelog.md +159 -0
  382. package/docs/v1.5-changelog.md +106 -0
  383. package/docs/v1.5-roadmap.md +121 -0
  384. package/docs/v1.6-changelog.md +67 -0
  385. package/docs/v1.6-roadmap.md +89 -0
  386. package/docs/v1.7-changelog.md +98 -0
  387. package/docs/workflow-schema.md +177 -0
  388. package/package.json +177 -0
  389. package/scripts/clean-test-pollution.js +61 -0
  390. package/scripts/openlife-agent-start.sh +6 -0
  391. package/scripts/openlife-agent.service.example +13 -0
  392. package/scripts/openlife-agent.supervisord.conf.example +8 -0
  393. package/scripts/openlife-autonomous-install.sh +29 -0
  394. package/scripts/postinstall-check.sh +37 -0
@@ -0,0 +1,92 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MediaManager = void 0;
40
+ const fluent_ffmpeg_1 = __importDefault(require("fluent-ffmpeg"));
41
+ const path = __importStar(require("path"));
42
+ const fs = __importStar(require("fs"));
43
+ class MediaManager {
44
+ outputDir;
45
+ constructor() {
46
+ this.outputDir = path.join(process.cwd(), '.media_output');
47
+ if (!fs.existsSync(this.outputDir)) {
48
+ fs.mkdirSync(this.outputDir, { recursive: true });
49
+ }
50
+ }
51
+ async extractAudio(inputPath, outputFilename = `audio_${Date.now()}.mp3`) {
52
+ const outputPath = path.join(this.outputDir, outputFilename);
53
+ return new Promise((resolve, reject) => {
54
+ console.log(`[MEDIA] Extraindo áudio de ${inputPath}...`);
55
+ (0, fluent_ffmpeg_1.default)(inputPath)
56
+ .output(outputPath)
57
+ .noVideo()
58
+ .audioCodec('libmp3lame')
59
+ .on('end', () => {
60
+ console.log(`[MEDIA] Sucesso! Salvo em: ${outputPath}`);
61
+ resolve(outputPath);
62
+ })
63
+ .on('error', (err) => {
64
+ console.error('[MEDIA] Falha ao extrair áudio:', err);
65
+ reject(err);
66
+ })
67
+ .run();
68
+ });
69
+ }
70
+ async cutVideo(inputPath, startTime, duration, outputFilename = `cut_${Date.now()}.mp4`) {
71
+ const outputPath = path.join(this.outputDir, outputFilename);
72
+ return new Promise((resolve, reject) => {
73
+ console.log(`[MEDIA] Cortando vídeo ${inputPath} (Start: ${startTime}, Dur: ${duration})...`);
74
+ (0, fluent_ffmpeg_1.default)(inputPath)
75
+ .setStartTime(startTime)
76
+ .setDuration(duration)
77
+ .output(outputPath)
78
+ .videoCodec('copy')
79
+ .audioCodec('copy')
80
+ .on('end', () => {
81
+ console.log(`[MEDIA] Corte finalizado! Salvo em: ${outputPath}`);
82
+ resolve(outputPath);
83
+ })
84
+ .on('error', (err) => {
85
+ console.error('[MEDIA] Erro ao cortar vídeo:', err);
86
+ reject(err);
87
+ })
88
+ .run();
89
+ });
90
+ }
91
+ }
92
+ exports.MediaManager = MediaManager;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryCuratorAgent = void 0;
4
+ class MemoryCuratorAgent {
5
+ brain;
6
+ constructor(brain) {
7
+ this.brain = brain;
8
+ }
9
+ async curate(state) {
10
+ const prompt = `
11
+ Você é o Memory Curator do OpenLife.
12
+
13
+ Missão:
14
+ ${state.goal}
15
+
16
+ Plano:
17
+ ${state.plan.join('\n- ')}
18
+
19
+ Agentes usados:
20
+ ${state.chosenAgents.map(a => `${a.id} (${a.role})`).join('\n')}
21
+
22
+ Review findings:
23
+ ${state.reviewFindings.map(r => `${r.score} - ${r.critique}`).join('\n')}
24
+
25
+ Resposta final:
26
+ ${state.finalAnswer || ''}
27
+
28
+ Responda em JSON com um array "memoryCandidates" contendo até 5 aprendizados operacionais curtos e reutilizáveis.
29
+ `;
30
+ const raw = await this.brain.think('Extraia aprendizados operacionais reutilizáveis.', prompt);
31
+ try {
32
+ const jsonStart = raw.indexOf('{');
33
+ const parsed = JSON.parse(jsonStart >= 0 ? raw.slice(jsonStart) : raw);
34
+ return Array.isArray(parsed.memoryCandidates) ? parsed.memoryCandidates.slice(0, 5) : [];
35
+ }
36
+ catch {
37
+ return [];
38
+ }
39
+ }
40
+ }
41
+ exports.MemoryCuratorAgent = MemoryCuratorAgent;
@@ -0,0 +1,155 @@
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.MissionCheckpointStore = exports.MissionStateStore = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const AtomicWriter_1 = require("./util/AtomicWriter");
40
+ class MissionStateStore {
41
+ baseDir;
42
+ constructor() {
43
+ this.baseDir = path.join(process.cwd(), '.artifacts', 'missions');
44
+ if (!fs.existsSync(this.baseDir))
45
+ fs.mkdirSync(this.baseDir, { recursive: true });
46
+ }
47
+ persist(state) {
48
+ const filePath = path.join(this.baseDir, `${state.taskId}.json`);
49
+ (0, AtomicWriter_1.writeJsonAtomic)(filePath, state);
50
+ if (state.consequenceThoughtTrace) {
51
+ const thoughtTracePath = path.join(this.baseDir, `${state.taskId}.thought-trace.json`);
52
+ (0, AtomicWriter_1.writeJsonAtomic)(thoughtTracePath, state.consequenceThoughtTrace);
53
+ }
54
+ return filePath;
55
+ }
56
+ }
57
+ exports.MissionStateStore = MissionStateStore;
58
+ /**
59
+ * Checkpoint persistence backed by atomic writes. Each missionId has at most
60
+ * one active checkpoint file; saveCheckpoint replaces the previous one.
61
+ *
62
+ * Storage: `<stateDir>/checkpoints/<sanitizedMissionId>.json` where
63
+ * `<stateDir>` = `OPENLIFE_STATE_DIR` env var if set, else `.openlife/`
64
+ * relative to the constructor root (or process.cwd()).
65
+ *
66
+ * Why a separate store and not extending MissionStateStore? Checkpoints are
67
+ * autonomy-layer artifacts (lives in `.openlife/`, survives across project
68
+ * workspaces) while MissionStateStore is workspace-scoped under
69
+ * `.artifacts/missions/`. The split matches the v1.2 layering: `.openlife/`
70
+ * is the autonomous runtime layer, `.artifacts/` is the execution-results
71
+ * layer.
72
+ */
73
+ class MissionCheckpointStore {
74
+ baseDir;
75
+ constructor(root = process.cwd()) {
76
+ const stateDir = process.env.OPENLIFE_STATE_DIR || path.join(root, '.openlife');
77
+ this.baseDir = path.join(stateDir, 'checkpoints');
78
+ }
79
+ /**
80
+ * Save (or overwrite) the latest checkpoint for `missionId`. The write is
81
+ * atomic — if the process crashes mid-save the previous checkpoint stays
82
+ * intact.
83
+ */
84
+ saveCheckpoint(missionId, step, state) {
85
+ const ckpt = {
86
+ missionId,
87
+ step,
88
+ state,
89
+ savedAt: new Date().toISOString(),
90
+ };
91
+ (0, AtomicWriter_1.writeJsonAtomic)(this.checkpointPath(missionId), ckpt);
92
+ }
93
+ /**
94
+ * Read the latest checkpoint for `missionId`. Returns null if no checkpoint
95
+ * exists or the file is corrupted (in which case the caller should treat
96
+ * the mission as un-resumable and start fresh).
97
+ */
98
+ getLatestCheckpoint(missionId) {
99
+ const filePath = this.checkpointPath(missionId);
100
+ if (!fs.existsSync(filePath))
101
+ return null;
102
+ try {
103
+ const raw = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
104
+ if (raw && typeof raw === 'object' && typeof raw.step === 'string') {
105
+ return raw;
106
+ }
107
+ return null;
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ }
113
+ /**
114
+ * Read the latest checkpoint and signal intent to resume. Currently
115
+ * identical to getLatestCheckpoint; the separate method exists so that
116
+ * future audit/event hooks (e.g. emit `mission.resume.started` to the
117
+ * security event log) can be attached here without changing call sites.
118
+ */
119
+ resumeFromCheckpoint(missionId) {
120
+ return this.getLatestCheckpoint(missionId);
121
+ }
122
+ /**
123
+ * List all missionIds that currently have a saved checkpoint. Useful for
124
+ * recovery sweeps on daemon boot (find pending resumes after a crash).
125
+ */
126
+ list() {
127
+ if (!fs.existsSync(this.baseDir))
128
+ return [];
129
+ return fs.readdirSync(this.baseDir)
130
+ .filter((f) => f.endsWith('.json'))
131
+ .map((f) => f.replace(/\.json$/, ''));
132
+ }
133
+ /**
134
+ * Remove the checkpoint for `missionId`. Call after a successful resume
135
+ * has consumed the checkpoint, or after the mission has reached a
136
+ * terminal state.
137
+ */
138
+ clear(missionId) {
139
+ const filePath = this.checkpointPath(missionId);
140
+ if (fs.existsSync(filePath)) {
141
+ fs.unlinkSync(filePath);
142
+ }
143
+ }
144
+ /** Exposed for tests so they can assert the resolved storage location. */
145
+ _baseDir() {
146
+ return this.baseDir;
147
+ }
148
+ checkpointPath(missionId) {
149
+ return path.join(this.baseDir, `${this.sanitize(missionId)}.json`);
150
+ }
151
+ sanitize(missionId) {
152
+ return missionId.replace(/[^a-zA-Z0-9._-]/g, '_');
153
+ }
154
+ }
155
+ exports.MissionCheckpointStore = MissionCheckpointStore;
@@ -0,0 +1,84 @@
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.ModelManager = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ class ModelManager {
40
+ configPath;
41
+ defaultModels = {
42
+ primary: { provider: 'gemini-api', name: 'gemini-3.1-flash-lite-preview', raw: 'gemini-api/gemini-3.1-flash-lite-preview' },
43
+ fallbacks: [
44
+ { provider: 'openai-api', name: 'gpt-5.4-mini-2026-03-17', raw: 'openai-api/gpt-5.4-mini-2026-03-17' },
45
+ { provider: 'ollama', name: 'qwen2.5-coder:7b', raw: 'ollama/qwen2.5-coder:7b' }
46
+ ]
47
+ };
48
+ constructor() {
49
+ this.configPath = path.join(process.cwd(), 'models.json');
50
+ this.ensureConfigFile();
51
+ }
52
+ ensureConfigFile() {
53
+ if (!fs.existsSync(this.configPath)) {
54
+ fs.writeFileSync(this.configPath, JSON.stringify(this.defaultModels, null, 2));
55
+ }
56
+ }
57
+ getModelConfig() {
58
+ try {
59
+ const content = fs.readFileSync(this.configPath, 'utf-8');
60
+ return JSON.parse(content);
61
+ }
62
+ catch (e) {
63
+ return this.defaultModels;
64
+ }
65
+ }
66
+ saveConfig(config) {
67
+ fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2));
68
+ }
69
+ parseModelString(input) {
70
+ if (!input.includes('/')) {
71
+ throw new Error(`Formato inválido: '${input}'. O padrão exigido é <provider>/<model> (ex: gemini-cli/gemini-3.1-pro-preview).`);
72
+ }
73
+ const parts = input.split('/');
74
+ const providerStr = parts[0];
75
+ const name = parts.slice(1).join('/');
76
+ const validProviders = ['openai-api', 'openai-cli', 'anthropic', 'gemini-api', 'gemini-cli', 'ollama', 'openrouter'];
77
+ const provider = providerStr.toLowerCase();
78
+ if (!validProviders.includes(provider)) {
79
+ throw new Error(`Provedor não suportado: '${provider}'. Provedores válidos: ${validProviders.join(', ')}.`);
80
+ }
81
+ return { provider, name, raw: input };
82
+ }
83
+ }
84
+ exports.ModelManager = ModelManager;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperatingSystem = void 0;
4
+ const ExecutionBoard_1 = require("./ExecutionBoard");
5
+ const RoleHandoff_1 = require("./RoleHandoff");
6
+ const CadenceEngine_1 = require("./CadenceEngine");
7
+ class OperatingSystem {
8
+ board;
9
+ handoffs;
10
+ cadence;
11
+ constructor() {
12
+ this.board = new ExecutionBoard_1.ExecutionBoard();
13
+ this.handoffs = new RoleHandoff_1.RoleHandoff();
14
+ this.cadence = new CadenceEngine_1.CadenceEngine();
15
+ }
16
+ decide(missionId) {
17
+ const item = this.board.getAll().find((entry) => entry.id === missionId);
18
+ const handoff = this.handoffs.getAll().find((entry) => entry.missionId === missionId && entry.status !== 'completed');
19
+ const blockers = this.collectBlockers(item);
20
+ const effectiveOwnerRole = handoff?.toRole || item?.ownerRole || 'coo';
21
+ const effectivePriority = this.computePriority(item, blockers);
22
+ const cadence = this.cadence.getAll().filter((event) => event.linkedMissionId === missionId);
23
+ const hasReview = cadence.some((event) => event.kind === 'review');
24
+ const shouldRelease = blockers.length === 0 && hasReview && item?.status === 'done';
25
+ return {
26
+ missionId,
27
+ effectiveOwnerRole,
28
+ effectivePriority,
29
+ blockers,
30
+ shouldRelease,
31
+ rationale: `owner=${effectiveOwnerRole}; priority=${effectivePriority}; blockers=${blockers.join('|') || 'none'}; handoff=${handoff ? `${handoff.fromRole}->${handoff.toRole}` : 'none'}`
32
+ };
33
+ }
34
+ scheduleWeeklyCadence(anchor = 'weekly-operating-cycle') {
35
+ const planning = this.cadence.schedule('planning', `${anchor}: planning`, 'coo');
36
+ const review = this.cadence.schedule('review', `${anchor}: review`, 'ceo');
37
+ const release = this.cadence.schedule('release', `${anchor}: release`, 'cto');
38
+ return [planning, review, release];
39
+ }
40
+ collectBlockers(item) {
41
+ const blockers = [];
42
+ if (!item)
43
+ return ['missing-board-item'];
44
+ if (item.blockerReason)
45
+ blockers.push(item.blockerReason);
46
+ if (item.dependencies?.length) {
47
+ const all = this.board.getAll();
48
+ for (const dep of item.dependencies) {
49
+ const depItem = all.find((candidate) => candidate.id === dep);
50
+ if (!depItem || depItem.status !== 'done')
51
+ blockers.push(`dependency:${dep}`);
52
+ }
53
+ }
54
+ if (typeof item.slaHours === 'number' && typeof item.ageHours === 'number' && item.ageHours > item.slaHours) {
55
+ blockers.push('sla-breached');
56
+ }
57
+ return blockers;
58
+ }
59
+ computePriority(item, blockers) {
60
+ if (!item)
61
+ return 'critical';
62
+ if (blockers.includes('sla-breached'))
63
+ return 'critical';
64
+ if (item.priority === 'critical')
65
+ return 'critical';
66
+ if (blockers.length > 0)
67
+ return 'high';
68
+ return item.priority;
69
+ }
70
+ }
71
+ exports.OperatingSystem = OperatingSystem;
@@ -0,0 +1,94 @@
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.OperationalMemoryStore = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const LocalMemoryProvider_1 = require("../memory/LocalMemoryProvider");
40
+ const MemoryOrchestrator_1 = require("../memory/MemoryOrchestrator");
41
+ class OperationalMemoryStore {
42
+ filePath;
43
+ provider;
44
+ orchestrator;
45
+ constructor() {
46
+ this.filePath = path.join(process.cwd(), '.artifacts', 'operational-memory.json');
47
+ const dir = path.dirname(this.filePath);
48
+ if (!fs.existsSync(dir))
49
+ fs.mkdirSync(dir, { recursive: true });
50
+ this.provider = new LocalMemoryProvider_1.LocalMemoryProvider();
51
+ this.orchestrator = new MemoryOrchestrator_1.MemoryOrchestrator();
52
+ }
53
+ add(entry, namespace) {
54
+ const all = this.getAll();
55
+ all.push(entry);
56
+ fs.writeFileSync(this.filePath, JSON.stringify(all, null, 2), 'utf-8');
57
+ const record = {
58
+ id: `mem-${entry.missionId}`,
59
+ type: 'episodic',
60
+ namespace: namespace || {},
61
+ content: `${entry.goal}\n\n${entry.summary}\n\n${entry.lessons.join('\n')}`,
62
+ summary: entry.summary,
63
+ tags: entry.lessons,
64
+ confidence: 0.8,
65
+ sourceMissionId: entry.missionId,
66
+ dedupeKey: entry.missionId,
67
+ createdAt: entry.createdAt,
68
+ updatedAt: entry.createdAt
69
+ };
70
+ void this.provider.save(record);
71
+ void this.orchestrator.save({
72
+ type: 'episodic',
73
+ namespace: namespace || {},
74
+ content: record.content,
75
+ summary: record.summary,
76
+ tags: record.tags,
77
+ confidence: record.confidence,
78
+ sourceMissionId: record.sourceMissionId,
79
+ dedupeKey: record.dedupeKey,
80
+ providers: ['local']
81
+ });
82
+ }
83
+ getAll() {
84
+ if (!fs.existsSync(this.filePath))
85
+ return [];
86
+ try {
87
+ return JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
88
+ }
89
+ catch {
90
+ return [];
91
+ }
92
+ }
93
+ }
94
+ exports.OperationalMemoryStore = OperationalMemoryStore;
@@ -0,0 +1,72 @@
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.OptimizationLoop = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const PerformanceScorecard_1 = require("./PerformanceScorecard");
40
+ class OptimizationLoop {
41
+ filePath;
42
+ scorecard;
43
+ constructor() {
44
+ this.filePath = path.join(process.cwd(), '.artifacts', 'optimization-suggestions.json');
45
+ fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
46
+ this.scorecard = new PerformanceScorecard_1.PerformanceScorecard();
47
+ }
48
+ generateSuggestions() {
49
+ const all = Object.values(this.scorecard.getAll());
50
+ const suggestions = all
51
+ .filter((item) => item.runs >= 2)
52
+ .filter((item) => item.score < 1 || item.fallbackRate > 0.4 || item.avgReviewScore < 6)
53
+ .map((item) => ({
54
+ entityId: item.entityId,
55
+ entityType: item.entityType,
56
+ reason: `score=${item.score.toFixed(2)}, fallbackRate=${item.fallbackRate.toFixed(2)}, avgReviewScore=${item.avgReviewScore.toFixed(2)}`,
57
+ suggestedAction: this.suggestAction(item),
58
+ priority: item.score < 0 || item.avgReviewScore < 5 ? 'high' : 'medium',
59
+ createdAt: new Date().toISOString()
60
+ }));
61
+ fs.writeFileSync(this.filePath, JSON.stringify(suggestions, null, 2), 'utf-8');
62
+ return suggestions;
63
+ }
64
+ suggestAction(item) {
65
+ if (item.fallbackRate > 0.4)
66
+ return 'Reduzir dependência desta rota e testar fallback alternativo ou policy de seleção.';
67
+ if (item.avgReviewScore < 6)
68
+ return 'Revisar qualidade da saída e ajustar prompt/roteamento/skill associada.';
69
+ return 'Reavaliar prioridade desta entidade no roteamento e comparar com alternativas melhores.';
70
+ }
71
+ }
72
+ exports.OptimizationLoop = OptimizationLoop;