@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,223 @@
1
+ "use strict";
2
+ /**
3
+ * CapabilityPackParser — load + validate capability pack YAML manifests.
4
+ *
5
+ * Story 1.1 — OpenLife v1.3 Agent OS Integration.
6
+ *
7
+ * Mirrors WorkflowParser's pattern: never throws on user input, returns
8
+ * `{ ok, pack?, errors[] }` with stable error codes from CAPABILITY_ERRORS.
9
+ *
10
+ * Validation scope (what this parser CAN check):
11
+ * - YAML well-formedness
12
+ * - Required scalar fields (id, name, description, version, status, objective)
13
+ * - Status enum membership (draft|tested|active|deprecated)
14
+ * - Asset-ref shape (id+source on each item)
15
+ * - Duplicate asset ids within each kind (agents/skills/squads/workflows)
16
+ * - Embedded-ref file existence (when given a directory context)
17
+ *
18
+ * Validation scope (what this parser CANNOT check — done by the registry layer):
19
+ * - Whether `referenced` asset ids resolve in the global agent/skill/squad/workflow registries
20
+ * - Whether the pack name conflicts with existing packs
21
+ * These higher-level checks live in CapabilityPackState (Story 1.4).
22
+ */
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __importStar = (this && this.__importStar) || (function () {
40
+ var ownKeys = function(o) {
41
+ ownKeys = Object.getOwnPropertyNames || function (o) {
42
+ var ar = [];
43
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
44
+ return ar;
45
+ };
46
+ return ownKeys(o);
47
+ };
48
+ return function (mod) {
49
+ if (mod && mod.__esModule) return mod;
50
+ var result = {};
51
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
52
+ __setModuleDefault(result, mod);
53
+ return result;
54
+ };
55
+ })();
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.parseCapabilityPack = parseCapabilityPack;
58
+ exports.parseCapabilityPackFile = parseCapabilityPackFile;
59
+ const fs = __importStar(require("fs"));
60
+ const path = __importStar(require("path"));
61
+ const yaml = __importStar(require("js-yaml"));
62
+ const CapabilityPackSchema_1 = require("./CapabilityPackSchema");
63
+ /** Parse a YAML string. Never throws. */
64
+ function parseCapabilityPack(yamlContent, opts = {}) {
65
+ const errors = [];
66
+ let doc;
67
+ try {
68
+ doc = yaml.load(yamlContent);
69
+ }
70
+ catch (err) {
71
+ return {
72
+ ok: false,
73
+ errors: [{
74
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.INVALID_YAML,
75
+ message: err instanceof Error ? err.message : 'YAML parse failed',
76
+ }],
77
+ };
78
+ }
79
+ if (doc === null || typeof doc !== 'object') {
80
+ return {
81
+ ok: false,
82
+ errors: [{
83
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.MISSING_ROOT,
84
+ message: 'document must be a YAML mapping with a `capability:` root key',
85
+ }],
86
+ };
87
+ }
88
+ const root = doc;
89
+ if (!root.capability || typeof root.capability !== 'object') {
90
+ return {
91
+ ok: false,
92
+ errors: [{
93
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.MISSING_ROOT,
94
+ message: 'top-level `capability:` key is required',
95
+ }],
96
+ };
97
+ }
98
+ const cap = root.capability;
99
+ // Required scalars
100
+ requireString(cap, 'id', errors);
101
+ requireString(cap, 'name', errors);
102
+ requireString(cap, 'description', errors);
103
+ requireString(cap, 'version', errors);
104
+ requireString(cap, 'objective', errors);
105
+ // Status — must be one of the four valid values
106
+ if (typeof cap.status !== 'string') {
107
+ errors.push({
108
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.MISSING_REQUIRED_FIELD,
109
+ message: '`status` is required (draft | tested | active | deprecated)',
110
+ });
111
+ }
112
+ else if (!(0, CapabilityPackSchema_1.isCapabilityStatus)(cap.status)) {
113
+ errors.push({
114
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.INVALID_STATUS,
115
+ message: 'status must be one of: draft, tested, active, deprecated',
116
+ context: { received: cap.status },
117
+ });
118
+ }
119
+ // Asset refs — validate shape + de-duplicate per kind
120
+ validateAssetRefs(cap.agents, 'agents', errors);
121
+ validateAssetRefs(cap.skills, 'skills', errors);
122
+ validateAssetRefs(cap.squads, 'squads', errors);
123
+ validateAssetRefs(cap.workflows, 'workflows', errors);
124
+ // Embedded-ref file existence (when packDir is provided)
125
+ if (opts.packDir) {
126
+ validateEmbeddedFiles(cap.agents, 'agents', opts.packDir, errors);
127
+ validateEmbeddedFiles(cap.skills, 'skills', opts.packDir, errors);
128
+ validateEmbeddedFiles(cap.squads, 'squads', opts.packDir, errors);
129
+ validateEmbeddedFiles(cap.workflows, 'workflows', opts.packDir, errors);
130
+ }
131
+ if (errors.length > 0) {
132
+ return { ok: false, errors };
133
+ }
134
+ return { ok: true, pack: cap, errors: [] };
135
+ }
136
+ /** Parse a YAML file by path. Convenience wrapper. */
137
+ function parseCapabilityPackFile(filePath) {
138
+ if (!fs.existsSync(filePath)) {
139
+ return {
140
+ ok: false,
141
+ errors: [{
142
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.INVALID_YAML,
143
+ message: `capability manifest not found: ${filePath}`,
144
+ context: { filePath },
145
+ }],
146
+ };
147
+ }
148
+ const content = fs.readFileSync(filePath, 'utf-8');
149
+ return parseCapabilityPack(content, { packDir: path.dirname(filePath) });
150
+ }
151
+ // ─── internal helpers ──────────────────────────────────────────────
152
+ function requireString(obj, field, errors) {
153
+ const v = obj[field];
154
+ if (typeof v !== 'string' || v.length === 0) {
155
+ errors.push({
156
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.MISSING_REQUIRED_FIELD,
157
+ message: `\`${field}\` is required and must be a non-empty string`,
158
+ });
159
+ }
160
+ }
161
+ function validateAssetRefs(refs, kind, errors) {
162
+ if (refs === undefined)
163
+ return;
164
+ if (!Array.isArray(refs)) {
165
+ errors.push({
166
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.INVALID_TYPE,
167
+ message: `\`${kind}\` must be an array of asset refs`,
168
+ });
169
+ return;
170
+ }
171
+ const seen = new Set();
172
+ for (let i = 0; i < refs.length; i++) {
173
+ const ref = refs[i];
174
+ if (typeof ref?.id !== 'string' || ref.id.length === 0) {
175
+ errors.push({
176
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.MISSING_REQUIRED_FIELD,
177
+ message: `${kind}[${i}].id is required`,
178
+ });
179
+ continue;
180
+ }
181
+ if (ref.source !== 'embedded' && ref.source !== 'referenced') {
182
+ errors.push({
183
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.INVALID_TYPE,
184
+ message: `${kind}[${i}].source must be 'embedded' or 'referenced'`,
185
+ context: { id: ref.id, received: String(ref.source) },
186
+ });
187
+ }
188
+ if (seen.has(ref.id)) {
189
+ errors.push({
190
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.DUPLICATE_ASSET_REF,
191
+ message: `${kind}: duplicate asset id '${ref.id}'`,
192
+ context: { kind, id: ref.id },
193
+ });
194
+ }
195
+ seen.add(ref.id);
196
+ }
197
+ }
198
+ function validateEmbeddedFiles(refs, kind, packDir, errors) {
199
+ if (!Array.isArray(refs))
200
+ return;
201
+ for (const ref of refs) {
202
+ if (ref?.source !== 'embedded' || typeof ref.id !== 'string')
203
+ continue;
204
+ // Convention: embedded assets live under <packDir>/<kind>/<id>/ (squads, agents)
205
+ // or <packDir>/<kind>/<id>.{md,yaml} (skills, workflows). Accept any of:
206
+ // <kind>/<id>/ (dir)
207
+ // <kind>/<id>.md (single-file skill)
208
+ // <kind>/<id>.yaml (single-file workflow)
209
+ const candidates = [
210
+ path.join(packDir, kind, ref.id),
211
+ path.join(packDir, kind, `${ref.id}.md`),
212
+ path.join(packDir, kind, `${ref.id}.yaml`),
213
+ path.join(packDir, kind, `${ref.id}.yml`),
214
+ ];
215
+ if (!candidates.some((p) => fs.existsSync(p))) {
216
+ errors.push({
217
+ code: CapabilityPackSchema_1.CAPABILITY_ERRORS.EMBEDDED_REF_MISSING_FILE,
218
+ message: `${kind} embedded ref '${ref.id}' has no file under ${path.join(kind, ref.id)}`,
219
+ context: { kind, id: ref.id },
220
+ });
221
+ }
222
+ }
223
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * CapabilityPackSchema — TypeScript types for OpenLife Capability Packs.
4
+ *
5
+ * A Capability Pack is a bundle that ships together: one or more
6
+ * workflows, the squads/agents/skills they depend on, plus checklists,
7
+ * templates, and policies. Packs live under `.catalog/capabilities/<id>/`
8
+ * and follow the established `.catalog/`-as-runtime-SoT contract.
9
+ *
10
+ * Story 1.1 — OpenLife v1.3 Agent OS Integration.
11
+ *
12
+ * Why packs instead of just composing the existing registries on the fly?
13
+ * - Authoring: CapabilityGenesisEngine produces a coherent draft bundle
14
+ * from a brief; callers want a single id to canonize, version, and
15
+ * promote — not 4 separate ids to keep in sync.
16
+ * - Sharing: a pack is the unit of import/export between projects.
17
+ * - Lifecycle: draft → tested → active → deprecated is a pack-level
18
+ * state machine (Story 1.4).
19
+ *
20
+ * The pack manifest is `capability.yaml`. References inside it
21
+ * (agents[], skills[], squads[], workflows[]) point at ids resolved by
22
+ * the existing Agent/Skill/Squad/Workflow registries. References are
23
+ * validated by CapabilityPackParser (Story 1.1 below) — broken refs
24
+ * surface as stable error codes.
25
+ *
26
+ * NEW IDs are tolerated when the pack is in status `draft` (the genesis
27
+ * engine creates skills/squads in the same pass that writes the pack
28
+ * manifest, so a forward-reference is OK). For `active` packs, every
29
+ * reference MUST resolve.
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.CAPABILITY_ERRORS = void 0;
33
+ exports.isCapabilityStatus = isCapabilityStatus;
34
+ exports.isCapabilityAssetRef = isCapabilityAssetRef;
35
+ // ─────────────────────────────────────────────────────────────
36
+ // Stable error codes — exported so callers + tests assert on strings,
37
+ // not error messages.
38
+ // ─────────────────────────────────────────────────────────────
39
+ exports.CAPABILITY_ERRORS = {
40
+ INVALID_YAML: 'capability_invalid_yaml',
41
+ INVALID_SCHEMA: 'capability_invalid_schema',
42
+ MISSING_ROOT: 'capability_missing_root',
43
+ MISSING_REQUIRED_FIELD: 'capability_missing_required_field',
44
+ INVALID_TYPE: 'capability_invalid_type',
45
+ INVALID_STATUS: 'capability_invalid_status',
46
+ DUPLICATE_ASSET_REF: 'capability_duplicate_asset_ref',
47
+ UNKNOWN_ASSET_REF: 'capability_unknown_asset_ref',
48
+ ID_DIR_MISMATCH: 'capability_id_dir_mismatch',
49
+ EMBEDDED_REF_MISSING_FILE: 'capability_embedded_ref_missing_file',
50
+ };
51
+ // ─────────────────────────────────────────────────────────────
52
+ // Type guards
53
+ // ─────────────────────────────────────────────────────────────
54
+ function isCapabilityStatus(s) {
55
+ return s === 'draft' || s === 'tested' || s === 'active' || s === 'deprecated';
56
+ }
57
+ function isCapabilityAssetRef(x) {
58
+ if (x === null || typeof x !== 'object')
59
+ return false;
60
+ const r = x;
61
+ return typeof r.id === 'string' && (r.source === 'embedded' || r.source === 'referenced');
62
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ /**
3
+ * CapabilityPackState — lifecycle store for Capability Packs.
4
+ *
5
+ * Story 1.4 — OpenLife v1.3 Agent OS Integration.
6
+ *
7
+ * Owns the `draft → tested → active → deprecated` state machine and the
8
+ * append-only audit ledger at `.openlife/capability-lifecycle.jsonl`.
9
+ *
10
+ * Promotion rules:
11
+ * draft → tested : requires `validatedBy` (test/checklist name)
12
+ * tested → active : requires explicit `actor` (canonization)
13
+ * active → deprecated: anytime
14
+ * anyState → deprecated: anytime (for emergency disabling)
15
+ *
16
+ * Never auto-promotes — every transition is an explicit call with an actor.
17
+ *
18
+ * Uses AtomicWriter for both the per-pack status file and the JSONL ledger,
19
+ * surviving kill -9 (same contract as MissionCheckpointStore, Story 6.2).
20
+ */
21
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
28
+ }) : (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ o[k2] = m[k];
31
+ }));
32
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
34
+ }) : function(o, v) {
35
+ o["default"] = v;
36
+ });
37
+ var __importStar = (this && this.__importStar) || (function () {
38
+ var ownKeys = function(o) {
39
+ ownKeys = Object.getOwnPropertyNames || function (o) {
40
+ var ar = [];
41
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
+ return ar;
43
+ };
44
+ return ownKeys(o);
45
+ };
46
+ return function (mod) {
47
+ if (mod && mod.__esModule) return mod;
48
+ var result = {};
49
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
+ __setModuleDefault(result, mod);
51
+ return result;
52
+ };
53
+ })();
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.CapabilityPackStateStore = void 0;
56
+ const fs = __importStar(require("fs"));
57
+ const path = __importStar(require("path"));
58
+ const AtomicWriter_1 = require("../util/AtomicWriter");
59
+ /** Valid transition map. Source → set of allowed destinations. */
60
+ const ALLOWED_TRANSITIONS = {
61
+ draft: new Set(['tested', 'deprecated']),
62
+ tested: new Set(['active', 'draft', 'deprecated']),
63
+ active: new Set(['deprecated']),
64
+ deprecated: new Set([]),
65
+ };
66
+ class CapabilityPackStateStore {
67
+ stateDir;
68
+ ledgerFile;
69
+ constructor(opts = {}) {
70
+ this.stateDir = opts.stateDir
71
+ || process.env.OPENLIFE_STATE_DIR
72
+ || path.join(process.cwd(), '.openlife');
73
+ this.ledgerFile = path.join(this.stateDir, 'capability-lifecycle.jsonl');
74
+ }
75
+ statusFile(packId) {
76
+ const safe = packId.replace(/[^a-zA-Z0-9._-]/g, '_');
77
+ return path.join(this.stateDir, 'capabilities', `${safe}.json`);
78
+ }
79
+ read(packId) {
80
+ const f = this.statusFile(packId);
81
+ if (!fs.existsSync(f))
82
+ return null;
83
+ try {
84
+ return JSON.parse(fs.readFileSync(f, 'utf-8'));
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ /**
91
+ * Initialize a pack at status `draft`. Idempotent — if a status file
92
+ * already exists, returns it unchanged.
93
+ */
94
+ init(packId, actor) {
95
+ const existing = this.read(packId);
96
+ if (existing)
97
+ return existing;
98
+ const now = new Date().toISOString();
99
+ const initial = {
100
+ packId,
101
+ status: 'draft',
102
+ updatedAt: now,
103
+ updatedBy: actor,
104
+ history: [],
105
+ };
106
+ (0, AtomicWriter_1.writeJsonAtomic)(this.statusFile(packId), initial);
107
+ (0, AtomicWriter_1.appendJsonlAtomic)(this.ledgerFile, {
108
+ packId, from: '<none>', to: 'draft', actor, at: now, event: 'init',
109
+ });
110
+ return initial;
111
+ }
112
+ promote(opts) {
113
+ const { packId, to, actor, reason, validatedBy } = opts;
114
+ const current = this.read(packId);
115
+ if (!current)
116
+ return { ok: false, error: 'pack_not_initialized' };
117
+ const from = current.status;
118
+ if (!ALLOWED_TRANSITIONS[from].has(to)) {
119
+ return { ok: false, error: `transition_not_allowed:${from}->${to}` };
120
+ }
121
+ // Promotion to `tested` requires evidence — refuse silent promotion.
122
+ if (to === 'tested' && !validatedBy) {
123
+ return { ok: false, error: 'tested_promotion_requires_validated_by' };
124
+ }
125
+ // Promotion to `active` requires an actor distinct from auto-systems.
126
+ if (to === 'active' && (!actor || actor === 'system' || actor === 'auto')) {
127
+ return { ok: false, error: 'active_promotion_requires_human_actor' };
128
+ }
129
+ const now = new Date().toISOString();
130
+ const transition = {
131
+ packId, from, to, actor, reason, validatedBy, at: now,
132
+ };
133
+ const next = {
134
+ packId,
135
+ status: to,
136
+ updatedAt: now,
137
+ updatedBy: actor,
138
+ history: [...current.history, transition],
139
+ };
140
+ (0, AtomicWriter_1.writeJsonAtomic)(this.statusFile(packId), next);
141
+ (0, AtomicWriter_1.appendJsonlAtomic)(this.ledgerFile, { ...transition, event: 'transition' });
142
+ return { ok: true, status: next };
143
+ }
144
+ /** List all known packs and their current lifecycle status. */
145
+ list() {
146
+ const dir = path.join(this.stateDir, 'capabilities');
147
+ if (!fs.existsSync(dir))
148
+ return [];
149
+ const out = [];
150
+ for (const f of fs.readdirSync(dir)) {
151
+ if (!f.endsWith('.json'))
152
+ continue;
153
+ try {
154
+ out.push(JSON.parse(fs.readFileSync(path.join(dir, f), 'utf-8')));
155
+ }
156
+ catch {
157
+ // skip corrupted entries
158
+ }
159
+ }
160
+ return out;
161
+ }
162
+ }
163
+ exports.CapabilityPackStateStore = CapabilityPackStateStore;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * CapabilityProvider — interface contract for capability pack loaders.
4
+ *
5
+ * Story 1.2 — OpenLife v1.3 Agent OS Integration.
6
+ *
7
+ * Mirrors AgentProvider / SkillProvider / SquadProvider pattern. Returns
8
+ * lightweight `CapabilityPackEntry` records (not the full parsed pack) —
9
+ * callers that want the full manifest go back through the parser via the
10
+ * `filePath`.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,55 @@
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.CloudAgentProvider = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ class CloudAgentProvider {
39
+ cloudFile;
40
+ constructor(cloudFile = process.env.OPENLIFE_CLOUD_AGENTS_FILE || '') {
41
+ this.cloudFile = cloudFile;
42
+ }
43
+ load() {
44
+ if (!this.cloudFile || !fs.existsSync(this.cloudFile))
45
+ return [];
46
+ try {
47
+ const raw = JSON.parse(fs.readFileSync(this.cloudFile, 'utf-8'));
48
+ return Array.isArray(raw) ? raw : [];
49
+ }
50
+ catch {
51
+ return [];
52
+ }
53
+ }
54
+ }
55
+ exports.CloudAgentProvider = CloudAgentProvider;
@@ -0,0 +1,55 @@
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.CloudSkillProvider = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ class CloudSkillProvider {
39
+ cloudFile;
40
+ constructor(cloudFile = process.env.OPENLIFE_CLOUD_SKILLS_FILE || '') {
41
+ this.cloudFile = cloudFile;
42
+ }
43
+ load() {
44
+ if (!this.cloudFile || !fs.existsSync(this.cloudFile))
45
+ return [];
46
+ try {
47
+ const raw = JSON.parse(fs.readFileSync(this.cloudFile, 'utf-8'));
48
+ return Array.isArray(raw) ? raw : [];
49
+ }
50
+ catch {
51
+ return [];
52
+ }
53
+ }
54
+ }
55
+ exports.CloudSkillProvider = CloudSkillProvider;
@@ -0,0 +1,55 @@
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.CloudSquadProvider = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ class CloudSquadProvider {
39
+ cloudFile;
40
+ constructor(cloudFile = process.env.OPENLIFE_CLOUD_SQUADS_FILE || '') {
41
+ this.cloudFile = cloudFile;
42
+ }
43
+ load() {
44
+ if (!this.cloudFile || !fs.existsSync(this.cloudFile))
45
+ return [];
46
+ try {
47
+ const raw = JSON.parse(fs.readFileSync(this.cloudFile, 'utf-8'));
48
+ return Array.isArray(raw) ? raw : [];
49
+ }
50
+ catch {
51
+ return [];
52
+ }
53
+ }
54
+ }
55
+ exports.CloudSquadProvider = CloudSquadProvider;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompositeAgentProvider = void 0;
4
+ class CompositeAgentProvider {
5
+ primary;
6
+ fallback;
7
+ constructor(primary, fallback) {
8
+ this.primary = primary;
9
+ this.fallback = fallback;
10
+ }
11
+ load() {
12
+ const data = this.primary.load();
13
+ return data.length ? data : this.fallback.load();
14
+ }
15
+ }
16
+ exports.CompositeAgentProvider = CompositeAgentProvider;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * CompositeCapabilityProvider — primary/fallback composite for capability packs.
4
+ *
5
+ * Story 1.2 — OpenLife v1.3 Agent OS Integration.
6
+ *
7
+ * Mirrors CompositeAgentProvider / CompositeSkillProvider / CompositeSquadProvider.
8
+ * Primary returns its full list if non-empty; otherwise fallback. Used by the
9
+ * registry layer (Story 1.4) to chain file → cloud sources.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CompositeCapabilityProvider = void 0;
13
+ class CompositeCapabilityProvider {
14
+ primary;
15
+ fallback;
16
+ constructor(primary, fallback) {
17
+ this.primary = primary;
18
+ this.fallback = fallback;
19
+ }
20
+ list() {
21
+ const data = this.primary.list();
22
+ return data.length ? data : this.fallback.list();
23
+ }
24
+ }
25
+ exports.CompositeCapabilityProvider = CompositeCapabilityProvider;