@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,125 @@
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
+ /*
37
+ * Story 3.6 — multi-host install docs parity regression test.
38
+ *
39
+ * Asserts:
40
+ * 1. INSTALL.md mentions all three hosts (claude-code, gemini-cli, codex)
41
+ * 2. INSTALL.md mentions `openlife init`, `openlife system setup`, `openlife system uninstall`
42
+ * 3. INSTALL.md mentions at least one host-detection env var (CLAUDECODE, GEMINI_CONFIG_DIR, CODEX_HOME)
43
+ * 4. README.md links to INSTALL.md
44
+ * 5. docs/install/{claude-code,gemini-cli,codex}.md all exist
45
+ * 6. Each per-host doc has > 500 characters (not a stub-of-a-stub)
46
+ * 7. Each per-host doc mentions its own host name
47
+ * 8. gemini-cli + codex docs mention `HOST_NOT_YET_SUPPORTED` or "reserved for v1.1" so the
48
+ * deferral is explicit and the doc cannot drift into claiming support that does not exist.
49
+ */
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ function assert(cond, msg) {
53
+ if (!cond)
54
+ throw new Error(`ASSERTION_FAILED: ${msg}`);
55
+ }
56
+ const ROOT = path.resolve(__dirname, '..');
57
+ const INSTALL_MD = path.join(ROOT, 'INSTALL.md');
58
+ const README_MD = path.join(ROOT, 'README.md');
59
+ const INSTALL_DOCS_DIR = path.join(ROOT, 'docs', 'install');
60
+ function readFile(file) {
61
+ assert(fs.existsSync(file), `${file} must exist`);
62
+ return fs.readFileSync(file, 'utf-8');
63
+ }
64
+ function testInstallMdMentionsAllHosts() {
65
+ const content = readFile(INSTALL_MD);
66
+ for (const host of ['claude-code', 'gemini-cli', 'codex']) {
67
+ assert(content.includes(host), `INSTALL.md must mention host "${host}"`);
68
+ }
69
+ }
70
+ function testInstallMdMentionsKeyCommands() {
71
+ const content = readFile(INSTALL_MD);
72
+ for (const cmd of ['openlife init', 'openlife system setup', 'openlife system uninstall']) {
73
+ assert(content.includes(cmd), `INSTALL.md must mention command "${cmd}"`);
74
+ }
75
+ }
76
+ function testInstallMdMentionsDetectionEnvVar() {
77
+ const content = readFile(INSTALL_MD);
78
+ const envVars = ['CLAUDECODE', 'GEMINI_CONFIG_DIR', 'CODEX_HOME'];
79
+ const found = envVars.filter((v) => content.includes(v));
80
+ assert(found.length >= 1, `INSTALL.md must mention at least one host-detection env var (one of ${envVars.join(', ')}); got 0`);
81
+ }
82
+ function testReadmeLinksToInstallMd() {
83
+ const content = readFile(README_MD);
84
+ // Accept any of: bare link, markdown link, or relative reference
85
+ const linkPatterns = ['INSTALL.md', '(INSTALL.md)', '[INSTALL.md]'];
86
+ const matched = linkPatterns.some((p) => content.includes(p));
87
+ assert(matched, 'README.md must link to INSTALL.md');
88
+ }
89
+ function testPerHostDocsExist() {
90
+ for (const host of ['claude-code', 'gemini-cli', 'codex']) {
91
+ const file = path.join(INSTALL_DOCS_DIR, `${host}.md`);
92
+ assert(fs.existsSync(file), `docs/install/${host}.md must exist`);
93
+ }
94
+ }
95
+ function testPerHostDocsSubstantive() {
96
+ for (const host of ['claude-code', 'gemini-cli', 'codex']) {
97
+ const file = path.join(INSTALL_DOCS_DIR, `${host}.md`);
98
+ const content = readFile(file);
99
+ assert(content.length > 500, `docs/install/${host}.md too short (${content.length} chars) — should be > 500`);
100
+ assert(content.includes(host), `docs/install/${host}.md must mention its own host name "${host}"`);
101
+ }
102
+ }
103
+ function testReservedHostsAreExplicit() {
104
+ for (const host of ['gemini-cli', 'codex']) {
105
+ const file = path.join(INSTALL_DOCS_DIR, `${host}.md`);
106
+ const content = readFile(file);
107
+ const hasDeferralMarker = content.includes('HOST_NOT_YET_SUPPORTED') ||
108
+ /reserved for v1\.1/i.test(content);
109
+ assert(hasDeferralMarker, `docs/install/${host}.md must explicitly mark deferral (HOST_NOT_YET_SUPPORTED or "reserved for v1.1")`);
110
+ }
111
+ }
112
+ async function main() {
113
+ testInstallMdMentionsAllHosts();
114
+ testInstallMdMentionsKeyCommands();
115
+ testInstallMdMentionsDetectionEnvVar();
116
+ testReadmeLinksToInstallMd();
117
+ testPerHostDocsExist();
118
+ testPerHostDocsSubstantive();
119
+ testReservedHostsAreExplicit();
120
+ console.log('TEST_MULTI_HOST_DOCS_PARITY_OK');
121
+ }
122
+ main().catch((err) => {
123
+ console.error('TEST_MULTI_HOST_DOCS_PARITY_FAIL:', err?.message || err);
124
+ process.exit(1);
125
+ });
@@ -0,0 +1,69 @@
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
+ const assert_1 = require("assert");
37
+ const child_process_1 = require("child_process");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const slug = `quantum-biofabrication-${Date.now()}`;
41
+ const goal = `orquestrar ${slug} com pesquisa, agente especialista, squad e skill operacional`;
42
+ const runJson = (args) => {
43
+ const r = (0, child_process_1.spawnSync)('node', ['bin/openlife.js', ...args], { cwd: process.cwd(), encoding: 'utf-8' });
44
+ assert_1.strict.equal(r.status, 0, `${args.join(' ')} failed: ${r.stderr || r.stdout}`);
45
+ return JSON.parse(r.stdout);
46
+ };
47
+ const route = runJson(['route', 'intent', goal, '--auto-create', '--min-score', '999', '--create-prefix', slug, '--limit', '3']);
48
+ assert_1.strict.equal(route.ok, true);
49
+ assert_1.strict.equal(route.autoCreate.enabled, true);
50
+ assert_1.strict.ok(route.autoCreate.created.length >= 3, 'should create agent, squad and skill drafts when coverage is insufficient');
51
+ assert_1.strict.ok(route.autoCreate.created.some((x) => x.type === 'agent'));
52
+ assert_1.strict.ok(route.autoCreate.created.some((x) => x.type === 'squad'));
53
+ assert_1.strict.ok(route.autoCreate.created.some((x) => x.type === 'skill'));
54
+ assert_1.strict.ok(route.autoCreate.created.some((x) => x.id.includes('squad')), 'slug normalization must preserve the letter u in squad');
55
+ for (const item of route.autoCreate.created) {
56
+ assert_1.strict.ok(fs.existsSync(item.path), `created path missing: ${item.path}`);
57
+ const body = fs.readFileSync(item.path, 'utf-8');
58
+ assert_1.strict.ok(body.includes('source: aiobuilder-auto-route'));
59
+ assert_1.strict.ok(body.includes(goal));
60
+ }
61
+ const strict = runJson(['catalog', 'doctor', '--strict']);
62
+ assert_1.strict.equal(strict.ok, true);
63
+ assert_1.strict.equal(strict.summary.agents.demo + strict.summary.agents.test, 0);
64
+ assert_1.strict.equal(strict.summary.squads.demo + strict.summary.squads.test, 0);
65
+ assert_1.strict.equal(strict.summary.skills.demo + strict.summary.skills.test, 0);
66
+ for (const item of route.autoCreate.created) {
67
+ fs.rmSync(path.dirname(item.path), { recursive: true, force: true });
68
+ }
69
+ console.log('TEST_OPENLIFE_AUTO_CREATOR_ROUTING_OK');
@@ -0,0 +1,77 @@
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
+ const assert_1 = require("assert");
37
+ const child_process_1 = require("child_process");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const runJson = (args) => {
41
+ const r = (0, child_process_1.spawnSync)('node', ['bin/openlife.js', ...args], { cwd: process.cwd(), encoding: 'utf-8' });
42
+ assert_1.strict.equal(r.status, 0, `${args.join(' ')} failed: ${r.stderr || r.stdout}`);
43
+ return JSON.parse(r.stdout);
44
+ };
45
+ const catalog = runJson(['catalog', 'doctor']);
46
+ assert_1.strict.equal(catalog.ok, true);
47
+ assert_1.strict.equal(catalog.warnings.length, 0, 'catalog doctor should not warn about demo/test assets after cleanup');
48
+ assert_1.strict.ok(catalog.summary.agents.total >= 300, `expected >=300 agents, got ${catalog.summary.agents.total}`);
49
+ const strictPayload = runJson(['catalog', 'doctor', '--strict']);
50
+ assert_1.strict.equal(strictPayload.strict, true);
51
+ assert_1.strict.equal(strictPayload.ok, true);
52
+ assert_1.strict.ok(catalog.summary.squads.total >= 40, `expected >=40 squads, got ${catalog.summary.squads.total}`);
53
+ const mediaDoctor = runJson(['media', 'doctor']);
54
+ assert_1.strict.equal(mediaDoctor.ok, true);
55
+ assert_1.strict.equal(mediaDoctor.checks.some((c) => c.name === 'media:prefer-gemini-default' && c.ok), true);
56
+ const agents = runJson(['agents', 'list']);
57
+ assert_1.strict.ok(agents.total >= 300, `expected runtime agents >=300, got ${agents.total}`);
58
+ assert_1.strict.ok(String(agents.source).includes('.catalog/agents'));
59
+ const swarm = runJson(['swarm', 'run', 'teste de superfície evolutiva']);
60
+ assert_1.strict.equal(swarm.ok, true);
61
+ assert_1.strict.ok(fs.existsSync(swarm.artifactPath));
62
+ assert_1.strict.deepEqual(swarm.pipeline, ['planner', 'executor', 'reviewer', 'synthesizer']);
63
+ const aiobuilder = runJson(['aiobuilder', 'validate-catalog']);
64
+ assert_1.strict.equal(aiobuilder.ok, true);
65
+ assert_1.strict.ok(aiobuilder.agents.total >= 300);
66
+ const serviceId = `surface-${Date.now()}`;
67
+ const service = runJson(['service', 'create', serviceId, '--objective', 'Teste de superfície service-centric']);
68
+ assert_1.strict.equal(service.ok, true);
69
+ const services = runJson(['service', 'list']);
70
+ assert_1.strict.ok(Array.isArray(services));
71
+ assert_1.strict.ok(services.some((s) => s.serviceId === serviceId));
72
+ const task = runJson(['task', 'run', 'validar task run', '--service', serviceId]);
73
+ assert_1.strict.equal(task.ok, true);
74
+ assert_1.strict.ok(task.taskId);
75
+ const taskPath = path.join(process.cwd(), '.artifacts', 'missions', `${task.taskId}.json`);
76
+ assert_1.strict.ok(fs.existsSync(taskPath));
77
+ console.log('TEST_OPENLIFE_EVOLUTION_SURFACE_OK');
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const child_process_1 = require("child_process");
5
+ const r = (0, child_process_1.spawnSync)('node', ['bin/openlife.js', 'ask', 'roteie esta missão: criar landing page com design copy e deploy no github'], {
6
+ cwd: process.cwd(),
7
+ encoding: 'utf-8',
8
+ env: { ...process.env, OPENLIFE_ASK_TIMEOUT_MS: '30000' }
9
+ });
10
+ assert_1.strict.equal(r.status, 0, r.stderr || r.stdout);
11
+ assert_1.strict.ok(r.stdout.includes('Roteamento OpenLife:'), r.stdout);
12
+ assert_1.strict.ok(r.stdout.includes('Squad:'), r.stdout);
13
+ assert_1.strict.ok(r.stdout.includes('Agente:'), r.stdout);
14
+ assert_1.strict.ok(r.stdout.includes('Skill:'), r.stdout);
15
+ console.log('TEST_OPENLIFE_GATEKEEPER_ROUTING_OK');
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const child_process_1 = require("child_process");
5
+ const runJson = (args) => {
6
+ const r = (0, child_process_1.spawnSync)('node', ['bin/openlife.js', ...args], { cwd: process.cwd(), encoding: 'utf-8' });
7
+ assert_1.strict.equal(r.status, 0, `${args.join(' ')} failed: ${r.stderr || r.stdout}`);
8
+ return JSON.parse(r.stdout);
9
+ };
10
+ const catalog = runJson(['catalog', 'doctor', '--strict']);
11
+ assert_1.strict.equal(catalog.ok, true);
12
+ assert_1.strict.ok(catalog.summary.skills.total >= 50, `expected >=50 imported skills, got ${catalog.summary.skills.total}`);
13
+ const skills = runJson(['skills', 'list']);
14
+ assert_1.strict.ok(skills.total >= 50, `expected runtime skills >=50, got ${skills.total}`);
15
+ assert_1.strict.ok(String(skills.source || skills.sources || '').includes('.catalog/skills'));
16
+ assert_1.strict.ok(skills.items.some((s) => s.id === 'github'));
17
+ assert_1.strict.ok(skills.items.some((s) => s.id === 'gemini'));
18
+ const route = runJson(['route', 'intent', 'criar landing page com design, copy e deploy no github']);
19
+ assert_1.strict.equal(route.ok, true);
20
+ assert_1.strict.equal(route.type, 'openlife.route.intent');
21
+ assert_1.strict.ok(route.intent);
22
+ assert_1.strict.ok(Array.isArray(route.squads) && route.squads.length > 0, 'expected squad recommendations');
23
+ assert_1.strict.ok(Array.isArray(route.agents) && route.agents.length > 0, 'expected agent recommendations');
24
+ assert_1.strict.ok(Array.isArray(route.skills) && route.skills.length > 0, 'expected skill recommendations');
25
+ assert_1.strict.ok(route.squads[0].score >= route.squads[route.squads.length - 1].score);
26
+ assert_1.strict.ok(route.skills.some((s) => ['github', 'gemini', 'canvas', 'coding-agent'].includes(s.id)));
27
+ console.log('TEST_OPENLIFE_ROUTING_SURFACE_OK');
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const AgentRegistry_1 = require("./orchestrator/AgentRegistry");
5
+ const SquadRegistry_1 = require("./orchestrator/SquadRegistry");
6
+ const WorldClassCommands_1 = require("./cli/WorldClassCommands");
7
+ const forbidden = 'Life_Tech_IA/Segundo Cerebro_Rafael_Local/LARA';
8
+ delete process.env.OPENLIFE_AGENT_ROOTS;
9
+ delete process.env.OPENLIFE_SQUAD_ROOT;
10
+ delete process.env.OPENLIFE_CLOUD_AGENTS_FILE;
11
+ delete process.env.OPENLIFE_CLOUD_SQUADS_FILE;
12
+ const agents = new AgentRegistry_1.AgentRegistry().all();
13
+ const squads = new SquadRegistry_1.SquadRegistry().all();
14
+ const world = new WorldClassCommands_1.WorldClassCommands();
15
+ const agentList = world.agentsListReal();
16
+ const squadList = world.squadsListReal();
17
+ (0, assert_1.strict)(!agentList.source.includes(forbidden), `agents list source must not default to Obsidian/LARA: ${agentList.source}`);
18
+ (0, assert_1.strict)(!squadList.source.includes(forbidden), `squads list source must not default to Obsidian/LARA: ${squadList.source}`);
19
+ for (const agent of agents) {
20
+ (0, assert_1.strict)(!agent.sourcePath.includes(forbidden), `agent sourcePath must not default to Obsidian/LARA: ${agent.sourcePath}`);
21
+ }
22
+ for (const squad of squads) {
23
+ (0, assert_1.strict)(!squad.sourcePath.includes(forbidden), `squad sourcePath must not default to Obsidian/LARA: ${squad.sourcePath}`);
24
+ }
25
+ console.log('TEST_OPENLIFE_RUNTIME_SOURCE_TRUTH_OK');
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ExecutionBoard_1 = require("./orchestrator/ExecutionBoard");
4
+ const RoleHandoff_1 = require("./orchestrator/RoleHandoff");
5
+ const CadenceEngine_1 = require("./orchestrator/CadenceEngine");
6
+ const OperatingSystem_1 = require("./orchestrator/OperatingSystem");
7
+ function assert(condition, message) {
8
+ if (!condition)
9
+ throw new Error(message);
10
+ }
11
+ async function main() {
12
+ const board = new ExecutionBoard_1.ExecutionBoard();
13
+ const handoff = new RoleHandoff_1.RoleHandoff();
14
+ const cadence = new CadenceEngine_1.CadenceEngine();
15
+ const ops = new OperatingSystem_1.OperatingSystem();
16
+ board.add({
17
+ id: 'ops-mission-1',
18
+ title: 'Missão operacional',
19
+ ownerRole: 'cpo',
20
+ status: 'done',
21
+ priority: 'medium',
22
+ dependencies: [],
23
+ slaHours: 48,
24
+ notes: 'teste ops'
25
+ });
26
+ handoff.create({
27
+ id: 'ops-handoff-1',
28
+ fromRole: 'cpo',
29
+ toRole: 'cto',
30
+ missionId: 'ops-mission-1',
31
+ summary: 'Executar a decisão técnica',
32
+ status: 'accepted'
33
+ });
34
+ cadence.schedule('review', 'Review ops-mission-1', 'cto', 'ops-mission-1');
35
+ const decision = ops.decide('ops-mission-1');
36
+ assert(decision.effectiveOwnerRole === 'cto', 'handoff should influence owner role');
37
+ assert(decision.shouldRelease === true, 'done mission with review and no blockers should be releasable');
38
+ const weekly = ops.scheduleWeeklyCadence();
39
+ assert(weekly.length === 3, 'weekly cadence should create planning/review/release events');
40
+ console.log('TEST_OPERATING_SYSTEM_OK');
41
+ }
42
+ main().catch((error) => {
43
+ console.error(error.message || error);
44
+ process.exit(1);
45
+ });
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const PerformanceScorecard_1 = require("./orchestrator/PerformanceScorecard");
4
+ const OptimizationLoop_1 = require("./orchestrator/OptimizationLoop");
5
+ function assert(condition, message) {
6
+ if (!condition)
7
+ throw new Error(message);
8
+ }
9
+ async function main() {
10
+ const scorecard = new PerformanceScorecard_1.PerformanceScorecard();
11
+ const optimization = new OptimizationLoop_1.OptimizationLoop();
12
+ scorecard.record({
13
+ entityId: 'skill-research',
14
+ entityType: 'skill',
15
+ status: 'failed',
16
+ durationMs: 14000,
17
+ reviewScore: 4,
18
+ fallbackUsed: true,
19
+ timestamp: new Date().toISOString()
20
+ });
21
+ scorecard.record({
22
+ entityId: 'skill-research',
23
+ entityType: 'skill',
24
+ status: 'partial',
25
+ durationMs: 12000,
26
+ reviewScore: 5,
27
+ fallbackUsed: true,
28
+ timestamp: new Date().toISOString()
29
+ });
30
+ const suggestions = optimization.generateSuggestions();
31
+ assert(suggestions.length >= 1, 'should generate at least one optimization suggestion');
32
+ assert(suggestions.some((item) => item.entityId === 'skill-research'), 'should flag low-performing entity');
33
+ console.log('TEST_OPTIMIZATION_LOOP_OK');
34
+ }
35
+ main().catch((error) => {
36
+ console.error(error.message || error);
37
+ process.exit(1);
38
+ });
@@ -0,0 +1,78 @@
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
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const SquadAutoCreator_1 = require("./orchestrator/SquadAutoCreator");
39
+ const SubagentLifecycle_1 = require("./orchestrator/SubagentLifecycle");
40
+ function assert(condition, message) {
41
+ if (!condition)
42
+ throw new Error(message);
43
+ }
44
+ function cleanup(target) {
45
+ if (fs.existsSync(target))
46
+ fs.rmSync(target, { recursive: true, force: true });
47
+ }
48
+ async function main() {
49
+ const root = path.join(process.cwd(), '.artifacts', 'test-orchestration-assets-lifecycle');
50
+ const assetsDir = path.join(root, 'cloud-assets');
51
+ const lifecycleFile = path.join(root, 'cloud-subagents.json');
52
+ cleanup(root);
53
+ fs.mkdirSync(root, { recursive: true });
54
+ const creator = new SquadAutoCreator_1.SquadAutoCreator(assetsDir);
55
+ creator.create('goal one', 'squad-test');
56
+ creator.create('goal two', 'squad-test');
57
+ const squadDir = path.join(assetsDir, 'squads', 'squad-test');
58
+ assert(fs.existsSync(path.join(squadDir, 'principal-agent.json')), 'should create principal-agent.json');
59
+ assert(fs.existsSync(path.join(squadDir, 'usage-index.json')), 'should create usage-index.json');
60
+ assert(fs.existsSync(path.join(squadDir, 'workflow-initial.json')), 'should create workflow-initial.json');
61
+ assert(fs.existsSync(path.join(squadDir, 'operational-note.json')), 'should create operational-note.json');
62
+ assert(fs.existsSync(path.join(squadDir, 'versions')), 'should create versioned snapshots on repeated create');
63
+ const lifecycle = new SubagentLifecycle_1.SubagentLifecycle(lifecycleFile);
64
+ const item = lifecycle.create('Agent A', ['analyze']);
65
+ const trial = lifecycle.transition(item.id, 'trial');
66
+ assert(trial?.state === 'trial', 'should transition proposed -> trial');
67
+ const active = lifecycle.transition(item.id, 'active');
68
+ assert(active?.state === 'active', 'should transition trial -> active');
69
+ const invalid = lifecycle.transition(item.id, 'proposed');
70
+ assert(invalid === null, 'should reject invalid backward transition active -> proposed');
71
+ const archived = lifecycle.transition(item.id, 'archived');
72
+ assert(archived?.state === 'archived', 'should transition active -> archived');
73
+ console.log('TEST_ORCHESTRATION_ASSETS_LIFECYCLE_OK');
74
+ }
75
+ main().catch((error) => {
76
+ console.error(error.message || error);
77
+ process.exit(1);
78
+ });
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const OutcomeSimulator_1 = require("./orchestrator/OutcomeSimulator");
4
+ function assert(condition, message) {
5
+ if (!condition)
6
+ throw new Error(message);
7
+ }
8
+ async function main() {
9
+ const simulator = new OutcomeSimulator_1.OutcomeSimulator();
10
+ const highRisk = simulator.simulate({
11
+ goal: 'deploy prod com força',
12
+ governanceRisk: 'high',
13
+ preferredExecutors: ['codex', 'claude'],
14
+ basePolicy: { executionMode: 'elite', swarmMode: 'consensus', maxBranches: 4, rationale: 'base' }
15
+ });
16
+ assert(highRisk.predictedOutcome === 'blocked', 'high risk should predict blocked');
17
+ assert(highRisk.recommendedPolicy.swarmMode === 'none', 'high risk should reduce swarm mode');
18
+ const noFallback = simulator.simulate({
19
+ goal: 'task',
20
+ governanceRisk: 'low',
21
+ preferredExecutors: ['gemini'],
22
+ basePolicy: { executionMode: 'performance', swarmMode: 'parallel', maxBranches: 3, rationale: 'base' }
23
+ });
24
+ assert(noFallback.predictedOutcome === 'partial', 'single executor should predict partial');
25
+ const healthy = simulator.simulate({
26
+ goal: 'task',
27
+ governanceRisk: 'low',
28
+ preferredExecutors: ['gemini', 'claude', 'codex'],
29
+ basePolicy: { executionMode: 'balanced', swarmMode: 'light', maxBranches: 2, rationale: 'base' }
30
+ });
31
+ assert(healthy.predictedOutcome === 'success', 'multi fallback should predict success');
32
+ assert(healthy.recommendedExecutors[0] === 'codex', 'should prioritize codex in recommended order');
33
+ console.log('TEST_OUTCOME_SIMULATOR_OK');
34
+ }
35
+ main().catch((error) => {
36
+ console.error(error.message || error);
37
+ process.exit(1);
38
+ });