aindy-runtime 2.28.0__tar.gz → 2.28.2__tar.gz

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 (496) hide show
  1. aindy_runtime-2.28.2/AINDY/_version.py +1 -0
  2. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/native/memory_bridge_rs/Cargo.lock +18 -18
  3. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/native/memory_bridge_rs/Cargo.toml +1 -1
  4. aindy_runtime-2.28.2/AINDY/platform/dist/assets/AdminApiErrorBoundary-DBMFMi8W.js +1 -0
  5. aindy_runtime-2.28.0/AINDY/platform/dist/assets/AdminUsersPanel-CngNbyGF.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/AdminUsersPanel-C_sdt1Pa.js +1 -1
  6. aindy_runtime-2.28.0/AINDY/platform/dist/assets/AgentApprovalInbox-Bf0v2lsE.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/AgentApprovalInbox-C4U8irku.js +1 -1
  7. aindy_runtime-2.28.0/AINDY/platform/dist/assets/AgentConsole-Bpp8KFC_.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/AgentConsole-Dwi320QF.js +1 -1
  8. aindy_runtime-2.28.0/AINDY/platform/dist/assets/AgentRegistry-DtSGTwB8.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/AgentRegistry-LfDcK2aQ.js +1 -1
  9. aindy_runtime-2.28.0/AINDY/platform/dist/assets/BarChart-CVlbmP3Z.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/BarChart-C-07rzun.js +6 -6
  10. aindy_runtime-2.28.0/AINDY/platform/dist/assets/DeadLetterQueuePanel-C9DxiKyK.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/DeadLetterQueuePanel-WCxMi_Bh.js +1 -1
  11. aindy_runtime-2.28.2/AINDY/platform/dist/assets/EmptyState-DBMFMi8W.js +1 -0
  12. aindy_runtime-2.28.0/AINDY/platform/dist/assets/ExecutionConsole-DNXxEb0-.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/ExecutionConsole-av5lFTZx.js +1 -1
  13. aindy_runtime-2.28.0/AINDY/platform/dist/assets/FlowEngineConsole-Dfj5tD0-.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/FlowEngineConsole-D4voDbfs.js +1 -1
  14. aindy_runtime-2.28.0/AINDY/platform/dist/assets/HealthDashboard-CnjnZ6Vh.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/HealthDashboard-BKKGpgH7.js +1 -1
  15. aindy_runtime-2.28.2/AINDY/platform/dist/assets/LoadingPanel-DBMFMi8W.js +1 -0
  16. aindy_runtime-2.28.0/AINDY/platform/dist/assets/ObservabilityDashboard--US12Wah.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/ObservabilityDashboard-Ba4pHoNq.js +1 -1
  17. aindy_runtime-2.28.0/AINDY/platform/dist/assets/RippleTraceViewer-ABa4RpVl.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/RippleTraceViewer-Doz4CUMg.js +1 -1
  18. aindy_runtime-2.28.0/AINDY/platform/dist/assets/SurfacePrimitives-CebMt8Xs.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/SurfacePrimitives-BJD7gKcG.js +1 -1
  19. aindy_runtime-2.28.2/AINDY/platform/dist/assets/Toast-DBMFMi8W.js +1 -0
  20. aindy_runtime-2.28.0/AINDY/platform/dist/assets/WebhooksPanel-K-JOFxU6.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/WebhooksPanel-C2EJCLVX.js +1 -1
  21. aindy_runtime-2.28.2/AINDY/platform/dist/assets/_core-DBMFMi8W.js +1 -0
  22. aindy_runtime-2.28.0/AINDY/platform/dist/assets/agent-CXZNs9Ea.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/agent-DsJodoAt.js +1 -1
  23. aindy_runtime-2.28.2/AINDY/platform/dist/assets/index-sA0UH8NZ.js +12 -0
  24. aindy_runtime-2.28.0/AINDY/platform/dist/assets/operator-Drbp7k81.js → aindy_runtime-2.28.2/AINDY/platform/dist/assets/operator-D50z8T8r.js +1 -1
  25. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform/dist/index.html +1 -1
  26. {aindy_runtime-2.28.0/aindy_runtime.egg-info → aindy_runtime-2.28.2}/PKG-INFO +10 -10
  27. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2/aindy_runtime.egg-info}/PKG-INFO +10 -10
  28. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/aindy_runtime.egg-info/SOURCES.txt +21 -21
  29. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/aindy_runtime.egg-info/requires.txt +9 -9
  30. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/DECISION_LOG.md +9 -0
  31. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SANDBOX_ESCAPE_AUDIT.md +64 -1
  32. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/pyproject.toml +9 -9
  33. aindy_runtime-2.28.0/AINDY/_version.py +0 -1
  34. aindy_runtime-2.28.0/AINDY/platform/dist/assets/AdminApiErrorBoundary-d8luTzjH.js +0 -1
  35. aindy_runtime-2.28.0/AINDY/platform/dist/assets/EmptyState-d8luTzjH.js +0 -1
  36. aindy_runtime-2.28.0/AINDY/platform/dist/assets/LoadingPanel-d8luTzjH.js +0 -1
  37. aindy_runtime-2.28.0/AINDY/platform/dist/assets/Toast-d8luTzjH.js +0 -1
  38. aindy_runtime-2.28.0/AINDY/platform/dist/assets/_core-d8luTzjH.js +0 -1
  39. aindy_runtime-2.28.0/AINDY/platform/dist/assets/index-BwoJwt06.js +0 -12
  40. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/__init__.py +0 -0
  41. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_coordinator.py +0 -0
  42. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_event_service.py +0 -0
  43. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_event_types.py +0 -0
  44. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_message_bus.py +0 -0
  45. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/__init__.py +0 -0
  46. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/approvals.py +0 -0
  47. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/creation.py +0 -0
  48. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/execution.py +0 -0
  49. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/planner_backends.py +0 -0
  50. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/planning.py +0 -0
  51. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/presentation.py +0 -0
  52. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/replay.py +0 -0
  53. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime/shared.py +0 -0
  54. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_runtime.py +0 -0
  55. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/agent_tools.py +0 -0
  56. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/authority_negotiation.py +0 -0
  57. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/autonomous_controller.py +0 -0
  58. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/autonomous_window.py +0 -0
  59. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/capability_policy.py +0 -0
  60. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/capability_service.py +0 -0
  61. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/dead_letter_service.py +0 -0
  62. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/runtime_api.py +0 -0
  63. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/runtime_guardrails.py +0 -0
  64. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/step_references.py +0 -0
  65. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/stuck_run_service.py +0 -0
  66. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/stuck_run_watchdog.py +0 -0
  67. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/tool_registry.py +0 -0
  68. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/tool_session.py +0 -0
  69. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/tool_syscalls.py +0 -0
  70. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/agents/tool_worker.py +0 -0
  71. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/__init__.py +0 -0
  72. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/events.py +0 -0
  73. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/executors/__init__.py +0 -0
  74. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/executors/pool.py +0 -0
  75. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/jobstores/__init__.py +0 -0
  76. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/jobstores/base.py +0 -0
  77. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/schedulers/__init__.py +0 -0
  78. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/schedulers/background.py +0 -0
  79. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/triggers/__init__.py +0 -0
  80. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/triggers/cron.py +0 -0
  81. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/triggers/date.py +0 -0
  82. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/apscheduler/triggers/interval.py +0 -0
  83. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/auth/__init__.py +0 -0
  84. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/auth/api_key_auth.py +0 -0
  85. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/cli.py +0 -0
  86. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/config.py +0 -0
  87. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/__init__.py +0 -0
  88. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/agent_continuation.py +0 -0
  89. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/agent_run_rehydration.py +0 -0
  90. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/distributed_queue.py +0 -0
  91. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/effect_compensation.py +0 -0
  92. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_dispatcher.py +0 -0
  93. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_envelope.py +0 -0
  94. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_environment.py +0 -0
  95. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_gate.py +0 -0
  96. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_guard.py +0 -0
  97. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_helper.py +0 -0
  98. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_pipeline/__init__.py +0 -0
  99. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_pipeline/context.py +0 -0
  100. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_pipeline/pipeline.py +0 -0
  101. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_pipeline/resources.py +0 -0
  102. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_pipeline/runtime_state.py +0 -0
  103. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_pipeline/shared.py +0 -0
  104. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_pipeline/signals.py +0 -0
  105. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_recall.py +0 -0
  106. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_record_service.py +0 -0
  107. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_score.py +0 -0
  108. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_service.py +0 -0
  109. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_signal_helper.py +0 -0
  110. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/execution_unit_service.py +0 -0
  111. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/flow_continuation.py +0 -0
  112. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/flow_history_fold.py +0 -0
  113. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/flow_run_rehydration.py +0 -0
  114. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/health_liveness_signal.py +0 -0
  115. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/memory_capture_guard.py +0 -0
  116. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/next_action.py +0 -0
  117. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/next_action_dispatch.py +0 -0
  118. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/observability_events.py +0 -0
  119. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/pending_request.py +0 -0
  120. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/reasoning_signal.py +0 -0
  121. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/request_metric_writer.py +0 -0
  122. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/response_adapter.py +0 -0
  123. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/result_path.py +0 -0
  124. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/resume_reconstruction.py +0 -0
  125. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/resume_watchdog.py +0 -0
  126. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/retry_policy.py +0 -0
  127. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/route_execution_guard.py +0 -0
  128. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/router_guard.py +0 -0
  129. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/scheduler_queue_signal.py +0 -0
  130. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/system_event_retention.py +0 -0
  131. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/system_event_service.py +0 -0
  132. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/system_event_types.py +0 -0
  133. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/verifier.py +0 -0
  134. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/wait_condition.py +0 -0
  135. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/core/wait_rehydration.py +0 -0
  136. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/__init__.py +0 -0
  137. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/alembic_head.py +0 -0
  138. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/base.py +0 -0
  139. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/create_all.py +0 -0
  140. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/dao/__init__.py +0 -0
  141. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/dao/memory_node_dao.py +0 -0
  142. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/dao/memory_trace_dao.py +0 -0
  143. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/database.py +0 -0
  144. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/model_registry.py +0 -0
  145. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/__init__.py +0 -0
  146. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/agent.py +0 -0
  147. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/agent_event.py +0 -0
  148. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/agent_registry.py +0 -0
  149. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/agent_run.py +0 -0
  150. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/api_key.py +0 -0
  151. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/background_task_lease.py +0 -0
  152. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/capability.py +0 -0
  153. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/dynamic_flow.py +0 -0
  154. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/dynamic_node.py +0 -0
  155. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/effect_record.py +0 -0
  156. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/effect_reversal.py +0 -0
  157. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/event_edge.py +0 -0
  158. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/execution_unit.py +0 -0
  159. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/flow_run.py +0 -0
  160. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/job_log.py +0 -0
  161. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/memory_metrics.py +0 -0
  162. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/memory_node_history.py +0 -0
  163. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/memory_trace.py +0 -0
  164. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/memory_trace_node.py +0 -0
  165. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/nodus_scheduled_job.py +0 -0
  166. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/nodus_workflow.py +0 -0
  167. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/request_metric.py +0 -0
  168. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/system_event.py +0 -0
  169. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/system_health_log.py +0 -0
  170. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/system_state_snapshot.py +0 -0
  171. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/user.py +0 -0
  172. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/user_identity.py +0 -0
  173. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/waiting_flow_run.py +0 -0
  174. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/models/webhook_subscription.py +0 -0
  175. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/mongo_setup.py +0 -0
  176. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/schema_contract.py +0 -0
  177. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/db/schema_ops.py +0 -0
  178. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/deepseek_config.json +0 -0
  179. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/exception_handlers.py +0 -0
  180. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/__init__.py +0 -0
  181. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/cancellation.py +0 -0
  182. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/circuit_breaker.py +0 -0
  183. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/clock.py +0 -0
  184. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/condition_codes.py +0 -0
  185. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/effect_ledger.py +0 -0
  186. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/errors.py +0 -0
  187. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/event_bus.py +0 -0
  188. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/payload_identity.py +0 -0
  189. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/redis_wait_registry.py +0 -0
  190. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/resource_manager.py +0 -0
  191. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/resume_spec.py +0 -0
  192. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/__init__.py +0 -0
  193. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/common.py +0 -0
  194. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/core.py +0 -0
  195. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/cross_instance.py +0 -0
  196. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/dispatch.py +0 -0
  197. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/engine.py +0 -0
  198. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/persistence.py +0 -0
  199. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/recovery.py +0 -0
  200. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler/waits.py +0 -0
  201. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/scheduler_engine.py +0 -0
  202. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/syscall_dispatcher.py +0 -0
  203. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/syscall_handlers.py +0 -0
  204. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/syscall_outcome.py +0 -0
  205. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/syscall_registry.py +0 -0
  206. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/syscall_versioning.py +0 -0
  207. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/kernel/tenant_context.py +0 -0
  208. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/llms-full.txt +0 -0
  209. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/llms.txt +0 -0
  210. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/main.py +0 -0
  211. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/__init__.py +0 -0
  212. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/bridge.py +0 -0
  213. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/cascade_cleanup.py +0 -0
  214. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/embedding_jobs.py +0 -0
  215. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/embedding_migration.py +0 -0
  216. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/embedding_providers.py +0 -0
  217. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/embedding_service.py +0 -0
  218. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/ingest_queue.py +0 -0
  219. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/memory_address_space.py +0 -0
  220. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/memory_capture_engine.py +0 -0
  221. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/memory_helpers.py +0 -0
  222. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/memory_ingest_service.py +0 -0
  223. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/memory_persistence.py +0 -0
  224. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/memory_scoring_service.py +0 -0
  225. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/native/memory_bridge_rs/build.rs +0 -0
  226. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/native/memory_bridge_rs/src/cpp_bridge.rs +0 -0
  227. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/native/memory_bridge_rs/src/lib.rs +0 -0
  228. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/native_bridge.py +0 -0
  229. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/memory/nodus_memory_bridge.py +0 -0
  230. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/middleware.py +0 -0
  231. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/nodus/__init__.py +0 -0
  232. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/nodus/runtime/__init__.py +0 -0
  233. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/nodus/runtime/aindy_runtime.py +0 -0
  234. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/nodus/runtime/embedding.py +0 -0
  235. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/nodus/runtime/memory_bridge.py +0 -0
  236. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/nodus/stdlib/.nodus/deps.json +0 -0
  237. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform/dist/assets/index-D3fHGGwp.css +0 -0
  238. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/__init__.py +0 -0
  239. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/agent_plugin_contracts.py +0 -0
  240. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/anthropic_client.py +0 -0
  241. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/api_key_service.py +0 -0
  242. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/app_runtime.py +0 -0
  243. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/async_execution_context.py +0 -0
  244. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/async_job_service.py +0 -0
  245. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/azure_openai_client.py +0 -0
  246. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/bootstrap_contract.py +0 -0
  247. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/bootstrap_graph.py +0 -0
  248. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/cache_backend.py +0 -0
  249. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/connector_service.py +0 -0
  250. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/deepseek_client.py +0 -0
  251. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/deployment_contract.py +0 -0
  252. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/domain_health.py +0 -0
  253. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/egress_guard.py +0 -0
  254. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/email_channel.py +0 -0
  255. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/event_service.py +0 -0
  256. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/event_trace_service.py +0 -0
  257. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_abi.py +0 -0
  258. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_boundary.py +0 -0
  259. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_capabilities.py +0 -0
  260. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_execution_model.py +0 -0
  261. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_policy.py +0 -0
  262. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_provenance.py +0 -0
  263. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_provenance_inventory.py +0 -0
  264. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_runtime_api.py +0 -0
  265. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_runtime_inventory.py +0 -0
  266. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_signing.py +0 -0
  267. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/extension_worker.py +0 -0
  268. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/external_call_service.py +0 -0
  269. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/fs_guard.py +0 -0
  270. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/genai_telemetry.py +0 -0
  271. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/health_service.py +0 -0
  272. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/job_recovery.py +0 -0
  273. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/kernel_proc_reader.py +0 -0
  274. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/leadership.py +0 -0
  275. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/llm_budget.py +0 -0
  276. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/llm_client.py +0 -0
  277. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/log_config.py +0 -0
  278. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/mcp_client.py +0 -0
  279. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/mcp_server.py +0 -0
  280. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/memory_runtime.py +0 -0
  281. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/metrics.py +0 -0
  282. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/node_registry.py +0 -0
  283. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/nodus_script_store.py +0 -0
  284. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/openai_client.py +0 -0
  285. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/otel.py +0 -0
  286. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/outbound_http.py +0 -0
  287. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/platform_loader.py +0 -0
  288. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/plugin_artifacts.py +0 -0
  289. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/plugin_host.py +0 -0
  290. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/public_contract.py +0 -0
  291. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/rate_limiter.py +0 -0
  292. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/recovery_jobs.py +0 -0
  293. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/registry.py +0 -0
  294. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/registry_contracts.py +0 -0
  295. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/response_adapters.py +0 -0
  296. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/runtime_agent_defaults.py +0 -0
  297. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/runtime_callback_host.py +0 -0
  298. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/runtime_callback_worker.py +0 -0
  299. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/runtime_compatibility.py +0 -0
  300. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/sandbox_certification.py +0 -0
  301. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/sandbox_runner.py +0 -0
  302. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/scheduler_service.py +0 -0
  303. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/secret_broker.py +0 -0
  304. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/support_metrics_service.py +0 -0
  305. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/system_state_service.py +0 -0
  306. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/token_meter.py +0 -0
  307. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/trace_context.py +0 -0
  308. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/user_ids.py +0 -0
  309. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/watcher_contract.py +0 -0
  310. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/platform_layer/watcher_service.py +0 -0
  311. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/plugins/nodes/__init__.py +0 -0
  312. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/route_inventory.json +0 -0
  313. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/__init__.py +0 -0
  314. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/agent_router.py +0 -0
  315. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/auth_router.py +0 -0
  316. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/automation_router.py +0 -0
  317. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/coordination_router.py +0 -0
  318. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/db_verify_router.py +0 -0
  319. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/flow_router.py +0 -0
  320. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/health_router.py +0 -0
  321. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/memory_metrics_router.py +0 -0
  322. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/memory_router.py +0 -0
  323. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/memory_trace_router.py +0 -0
  324. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/observability_router.py +0 -0
  325. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/path_params.py +0 -0
  326. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/__init__.py +0 -0
  327. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/admin_router.py +0 -0
  328. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/agents_router.py +0 -0
  329. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/effects_router.py +0 -0
  330. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/flows_router.py +0 -0
  331. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/keys_router.py +0 -0
  332. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/nodes_router.py +0 -0
  333. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/nodus_flow_router.py +0 -0
  334. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/nodus_router.py +0 -0
  335. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/nodus_schedule_router.py +0 -0
  336. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/nodus_shared.py +0 -0
  337. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/platform_ops_router.py +0 -0
  338. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/queue_router.py +0 -0
  339. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/schemas.py +0 -0
  340. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform/webhooks_router.py +0 -0
  341. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/platform_router.py +0 -0
  342. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/version_router.py +0 -0
  343. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routes/watcher_router.py +0 -0
  344. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/routing.py +0 -0
  345. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/__init__.py +0 -0
  346. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/agent_plan_compiler.py +0 -0
  347. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/execution_loop.py +0 -0
  348. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/execution_registry.py +0 -0
  349. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_definitions.py +0 -0
  350. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_definitions_engine.py +0 -0
  351. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_definitions_extended.py +0 -0
  352. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_definitions_memory.py +0 -0
  353. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_definitions_observability.py +0 -0
  354. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/__init__.py +0 -0
  355. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/entrypoints.py +0 -0
  356. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/event_router.py +0 -0
  357. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/fan_out.py +0 -0
  358. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/graph_signature.py +0 -0
  359. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/node_executor.py +0 -0
  360. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/registry.py +0 -0
  361. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/runner.py +0 -0
  362. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/runner_completion.py +0 -0
  363. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/runner_failure.py +0 -0
  364. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/runner_steps.py +0 -0
  365. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/serialization.py +0 -0
  366. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/shared.py +0 -0
  367. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_engine/state_merge.py +0 -0
  368. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_helpers.py +0 -0
  369. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/flow_registry.py +0 -0
  370. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/__init__.py +0 -0
  371. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/context_builder.py +0 -0
  372. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/filters.py +0 -0
  373. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/memory_feedback.py +0 -0
  374. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/memory_learning.py +0 -0
  375. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/memory_metrics.py +0 -0
  376. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/metrics_store.py +0 -0
  377. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/native_scorer.py +0 -0
  378. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/orchestrator.py +0 -0
  379. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/query_expander.py +0 -0
  380. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/scorer.py +0 -0
  381. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/strategies.py +0 -0
  382. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory/types.py +0 -0
  383. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/memory_loop.py +0 -0
  384. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_adapter.py +0 -0
  385. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_execution_service.py +0 -0
  386. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_flow_compiler.py +0 -0
  387. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_runtime_adapter.py +0 -0
  388. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_schedule_service.py +0 -0
  389. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_security.py +0 -0
  390. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_worker.py +0 -0
  391. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_worker_pool.py +0 -0
  392. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/nodus_workflow_registry.py +0 -0
  393. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime/tool_simulation.py +0 -0
  394. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime_only.py +0 -0
  395. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/runtime_plugins.json +0 -0
  396. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/schemas/__init__.py +0 -0
  397. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/schemas/auth_schemas.py +0 -0
  398. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/services/auth_service.py +0 -0
  399. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/spa_fallback.py +0 -0
  400. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/startup.py +0 -0
  401. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/system_manifest.json +0 -0
  402. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/utils/__init__.py +0 -0
  403. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/utils/normalize_encoding.py +0 -0
  404. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/utils/sanitize_text.py +0 -0
  405. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/utils/text_constraints.py +0 -0
  406. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/utils/uuid_utils.py +0 -0
  407. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/version.json +0 -0
  408. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/watcher/__init__.py +0 -0
  409. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/watcher/constants.py +0 -0
  410. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/worker/__init__.py +0 -0
  411. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/worker/__main__.py +0 -0
  412. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/worker/health_server.py +0 -0
  413. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/worker/memory_ingest_worker.py +0 -0
  414. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/worker/metric_writer_worker.py +0 -0
  415. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/worker/worker_loop.py +0 -0
  416. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/AINDY/worker.py +0 -0
  417. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/CONTRIBUTORS.md +0 -0
  418. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/LICENSE +0 -0
  419. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/MANIFEST.in +0 -0
  420. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/README.md +0 -0
  421. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/aindy_runtime.egg-info/dependency_links.txt +0 -0
  422. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/aindy_runtime.egg-info/entry_points.txt +0 -0
  423. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/aindy_runtime.egg-info/top_level.txt +0 -0
  424. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/AGENT_WORKING_RULES.md +0 -0
  425. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/CHANGE_IMPACT_MATRIX.md +0 -0
  426. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/CI_OWNERSHIP.md +0 -0
  427. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/COMPARATIVE_RESEARCH_INDEX.md +0 -0
  428. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/CROSS_REPO_COMPATIBILITY.md +0 -0
  429. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/DOCSET_CHANGELOG.md +0 -0
  430. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/ERROR_HANDLING_POLICY.md +0 -0
  431. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/GITHUB_SETTINGS_CHECKLIST.md +0 -0
  432. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/INVARIANTS.md +0 -0
  433. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/INVARIANT_TEST_MAPPING.md +0 -0
  434. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/MODEL_OWNERSHIP_POLICY.md +0 -0
  435. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/RELEASE_CHECKLIST.md +0 -0
  436. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/RELEASE_GATES.md +0 -0
  437. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/RELEASE_STAGING.md +0 -0
  438. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/REPO_COMPATIBILITY_POLICY.md +0 -0
  439. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/RUNTIME_DOCSET_GOVERNANCE.md +0 -0
  440. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/SECURITY_POLICY.md +0 -0
  441. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/TEST_STRATEGY.md +0 -0
  442. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/governance/TRUSTING_A_GREEN_CHECK.md +0 -0
  443. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/CONDITION_CODES.md +0 -0
  444. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/DEGRADED_MODE_MATRIX.md +0 -0
  445. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/DEGRADED_RUNTIME_MODES.md +0 -0
  446. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/DEPENDENCY_CRITICALITY_MATRIX.md +0 -0
  447. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/DEPLOYMENT_PROFILES.md +0 -0
  448. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/DEPLOYMENT_TARGETS.md +0 -0
  449. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/INCIDENT_CLASSIFICATION.md +0 -0
  450. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/MACOS_CONTAINER_POLICY.md +0 -0
  451. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/OPERATOR_RUNBOOK.md +0 -0
  452. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/PROFILE_SUPPORT_MATRIX.md +0 -0
  453. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/QUICKSTART.md +0 -0
  454. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/operations/RUNTIME_ONLY_DEPLOYMENT.md +0 -0
  455. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/AGENT_RUNTIME.md +0 -0
  456. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/APP_AGENT_REGISTRATION.md +0 -0
  457. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/ARCHITECTURE.md +0 -0
  458. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/CONNECTOR_CONTRACT.md +0 -0
  459. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/DATA_MODEL_MAP.md +0 -0
  460. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/DB_OWNERSHIP_CONTRACT.md +0 -0
  461. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/DURABLE_STATE_OWNERSHIP_CONTRACT.md +0 -0
  462. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/ECOSYSTEM_CAPABILITY_GAPS.md +0 -0
  463. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/EXECUTION_CONTRACT.md +0 -0
  464. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/EXECUTION_INVARIANTS.md +0 -0
  465. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/EXTENSION_ABI.md +0 -0
  466. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/EXTENSION_CAPABILITIES.md +0 -0
  467. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/EXTENSION_PROVENANCE.md +0 -0
  468. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/EXTENSION_TRUST_MODEL.md +0 -0
  469. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/FOUNDATIONAL_PATTERN.md +0 -0
  470. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/IDEMPOTENCY_CONTRACT.md +0 -0
  471. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/MCP_INTEGRATION.md +0 -0
  472. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/MEMORY_ADDRESS_SPACE.md +0 -0
  473. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/MEMORY_BRIDGE.md +0 -0
  474. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/MEMORY_BRIDGE_CONTRACT.md +0 -0
  475. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/NATIVE_MEMORY_BRIDGE.md +0 -0
  476. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/NODUS_DEVELOPER_GUIDE.md +0 -0
  477. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/NODUS_WORKFLOW_CONTRACT.md +0 -0
  478. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/OS_ISOLATION_LAYER.md +0 -0
  479. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/PUBLIC_API_CONTRACT.md +0 -0
  480. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/PUBLIC_RUNTIME_SURFACES.md +0 -0
  481. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/RETRY_POLICY.md +0 -0
  482. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/ROUTE_OWNERSHIP_INVENTORY.md +0 -0
  483. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/RUNTIME_BEHAVIOR.md +0 -0
  484. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/RUNTIME_BOUNDARY.md +0 -0
  485. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/RUNTIME_MODULE_MAP.md +0 -0
  486. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/RUNTIME_STABILITY_INDEX.md +0 -0
  487. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SANDBOX_CONTRACT.md +0 -0
  488. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SCHEMA_LIFECYCLE.md +0 -0
  489. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SDK_CONTRACT.md +0 -0
  490. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SECURITY_MATRIX.md +0 -0
  491. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SECURITY_POSTURE.md +0 -0
  492. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SYSCALL_REFERENCE.md +0 -0
  493. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/SYSCALL_SYSTEM.md +0 -0
  494. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/UI_CONTRACT.md +0 -0
  495. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/docs/runtime/WHAT_THE_RUNTIME_IS.md +0 -0
  496. {aindy_runtime-2.28.0 → aindy_runtime-2.28.2}/setup.cfg +0 -0
@@ -0,0 +1 @@
1
+ __version__ = "2.28.2"
@@ -37,9 +37,9 @@ checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
37
37
 
38
38
  [[package]]
39
39
  name = "cc"
40
- version = "1.7.0"
40
+ version = "1.10.0"
41
41
  source = "registry+https://github.com/rust-lang/crates.io-index"
42
- checksum = "50a649af8a827553c29fb0cb4bd4a6f1a0dd695bd3232b9bc98bd9c8a3ffbb8b"
42
+ checksum = "86e055fa6e3e40ad6187ba25b6855eeb635d5271f8e0f0e1e9a5826b8d75bea0"
43
43
  dependencies = [
44
44
  "find-msvc-tools",
45
45
  "shlex",
@@ -79,9 +79,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
79
79
 
80
80
  [[package]]
81
81
  name = "find-msvc-tools"
82
- version = "0.1.14"
82
+ version = "0.1.15"
83
83
  source = "registry+https://github.com/rust-lang/crates.io-index"
84
- checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484"
84
+ checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48"
85
85
 
86
86
  [[package]]
87
87
  name = "foldhash"
@@ -258,9 +258,9 @@ dependencies = [
258
258
 
259
259
  [[package]]
260
260
  name = "pyo3"
261
- version = "0.29.3"
261
+ version = "0.30.1"
262
262
  source = "registry+https://github.com/rust-lang/crates.io-index"
263
- checksum = "700d18fa267b73b9b521fd7e13580e2f446916f176cacee1ab63fcc8191f1655"
263
+ checksum = "229ca13b8a15bb0d1487b81ab975bfcd97513416499a8312011b6036e42e0de4"
264
264
  dependencies = [
265
265
  "libc",
266
266
  "once_cell",
@@ -272,18 +272,18 @@ dependencies = [
272
272
 
273
273
  [[package]]
274
274
  name = "pyo3-build-config"
275
- version = "0.29.3"
275
+ version = "0.30.1"
276
276
  source = "registry+https://github.com/rust-lang/crates.io-index"
277
- checksum = "7b3fc0c4d08f6bb10e71fe39dfb9e2f59c6eb6854e22ec8092f50c69a4499adb"
277
+ checksum = "70130e2b6dd1ee589a8788026a429561ca5c40fa7a2fa7914c2282eddae24700"
278
278
  dependencies = [
279
279
  "target-lexicon",
280
280
  ]
281
281
 
282
282
  [[package]]
283
283
  name = "pyo3-ffi"
284
- version = "0.29.3"
284
+ version = "0.30.1"
285
285
  source = "registry+https://github.com/rust-lang/crates.io-index"
286
- checksum = "dfc0b8e19df29aad7086cf977bb0c2a2f143e30567eb113e9cf72b62ca698330"
286
+ checksum = "5e7ff73c555c286d212d4ce7e5fbda845a973c4f61bd5f160f5f2c3c2a04d1c4"
287
287
  dependencies = [
288
288
  "libc",
289
289
  "pyo3-build-config",
@@ -291,26 +291,26 @@ dependencies = [
291
291
 
292
292
  [[package]]
293
293
  name = "pyo3-macros"
294
- version = "0.29.3"
294
+ version = "0.30.1"
295
295
  source = "registry+https://github.com/rust-lang/crates.io-index"
296
- checksum = "6100e8a4b5eba53afaa5ed078364851a0b2499c553a44c31026b929049b49dc6"
296
+ checksum = "c46d2e5862c7bb8207e3b639f713dda3c499933444784154c11d013c5a691b60"
297
297
  dependencies = [
298
298
  "proc-macro2",
299
299
  "pyo3-macros-backend",
300
300
  "quote",
301
- "syn 2.0.116",
301
+ "syn 3.0.2",
302
302
  ]
303
303
 
304
304
  [[package]]
305
305
  name = "pyo3-macros-backend"
306
- version = "0.29.3"
306
+ version = "0.30.1"
307
307
  source = "registry+https://github.com/rust-lang/crates.io-index"
308
- checksum = "6143877a16e82b5a727b7127ff4cd86858a24a28d745d72f43e6f227c7b1bdb3"
308
+ checksum = "38b89f066f2ae72a2aef52d1537ca2fcd104440ebfadee06e97aa90738a25b9b"
309
309
  dependencies = [
310
310
  "heck",
311
311
  "proc-macro2",
312
312
  "quote",
313
- "syn 2.0.116",
313
+ "syn 3.0.2",
314
314
  ]
315
315
 
316
316
  [[package]]
@@ -431,9 +431,9 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
431
431
 
432
432
  [[package]]
433
433
  name = "uuid"
434
- version = "1.28.0"
434
+ version = "1.29.0"
435
435
  source = "registry+https://github.com/rust-lang/crates.io-index"
436
- checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606"
436
+ checksum = "4a0e2d11620c50695fe12bbbfde96b3477fe606e7284c22d505c12ce51214514"
437
437
  dependencies = [
438
438
  "getrandom",
439
439
  "js-sys",
@@ -8,7 +8,7 @@ name = "memory_bridge_rs"
8
8
  crate-type = ["cdylib"]
9
9
 
10
10
  [dependencies]
11
- pyo3 = { version = "0.29", features = ["extension-module"] }
11
+ pyo3 = { version = "0.30", features = ["extension-module"] }
12
12
  serde = { version = "1.0", features = ["derive"] }
13
13
  uuid = { version = "1", features = ["v4"] }
14
14
  chrono = { version = "0.4", features = ["serde"] }
@@ -0,0 +1 @@
1
+ import"./index-sA0UH8NZ.js";
@@ -1 +1 @@
1
- import{a as e,f as t,i as n,p as r,u as i,v as a,w as o,x as s}from"./index-BwoJwt06.js";import"./AdminApiErrorBoundary-d8luTzjH.js";import"./LoadingPanel-d8luTzjH.js";var c=o(s(),1),l=`/platform/admin`;function u(){return t(`${l}/users`,{method:`GET`}).then(e)}function d(n){return t(`${l}/users/${n}/promote`,{method:`POST`}).then(e)}var f=a(),p={bg0:`#0d1117`,bg1:`#161b22`,border0:`#21262d`,border1:`#30363d`,text0:`#c9d1d9`,text1:`#8b949e`,accent:`#6cf`};function m(e){return e?new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}):`—`}function h(){let{isAdmin:e,user:t}=n();if(!e)return(0,f.jsx)(i,{});let[a,o]=(0,c.useState)(null),[s,l]=(0,c.useState)(!1),[h,g]=(0,c.useState)(null),[_,v]=(0,c.useState)(null),[y,b]=(0,c.useState)(null),x=(0,c.useCallback)(()=>{l(!0),g(null),u().then(e=>o(e?.users??[])).catch(e=>g(e?.message||`Failed to load users.`)).finally(()=>l(!1))},[]);(0,c.useEffect)(()=>{x()},[x]);let S=async(e,t)=>{v(e);try{await d(e),b(`${t} promoted to admin.`),setTimeout(()=>b(null),3500),x()}catch(e){g(e?.message||`Promotion failed.`)}finally{v(null)}};return(0,f.jsxs)(`div`,{style:{padding:20,color:p.text0,fontFamily:`sans-serif`,maxWidth:900},children:[(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:20},children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{style:{margin:0,color:`#fff`},children:`Users`}),(0,f.jsx)(`p`,{style:{margin:`4px 0 0`,fontSize:12,color:p.text1},children:`Registered accounts. Admin promotion is grant-only — privileges are never revoked here.`})]}),(0,f.jsx)(`button`,{onClick:x,style:{padding:`6px 14px`,background:`none`,border:`1px solid ${p.border1}`,borderRadius:6,color:p.text1,fontSize:12,cursor:`pointer`},children:`Refresh`})]}),y&&(0,f.jsx)(`div`,{style:{marginBottom:12,padding:`8px 14px`,background:`#0d2a1a`,border:`1px solid #1a5c33`,borderRadius:6,fontSize:12,color:`#4ade80`},children:y}),h&&(0,f.jsx)(`div`,{style:{marginBottom:12,padding:`8px 14px`,background:`#1a0d0d`,border:`1px solid #5c1a1a`,borderRadius:6,fontSize:12,color:`#f87171`},children:h}),s&&(0,f.jsx)(r,{label:`Loading users...`}),!s&&a&&(0,f.jsxs)(`table`,{style:{width:`100%`,borderCollapse:`collapse`,fontSize:13},children:[(0,f.jsx)(`thead`,{children:(0,f.jsx)(`tr`,{style:{borderBottom:`1px solid ${p.border0}`},children:[`Email`,`Joined`,`Status`,``].map(e=>(0,f.jsx)(`th`,{style:{textAlign:`left`,padding:`8px 12px`,color:p.text1,fontWeight:600,fontSize:11,textTransform:`uppercase`,letterSpacing:`0.05em`},children:e},e))})}),(0,f.jsx)(`tbody`,{children:a.map(e=>{let n=e.email===t?.email;return(0,f.jsxs)(`tr`,{style:{borderBottom:`1px solid ${p.border0}`},children:[(0,f.jsxs)(`td`,{style:{padding:`10px 12px`,color:p.text0},children:[e.email,n&&(0,f.jsx)(`span`,{style:{marginLeft:8,fontSize:10,color:p.text1,border:`1px solid ${p.border1}`,borderRadius:4,padding:`1px 5px`},children:`you`})]}),(0,f.jsx)(`td`,{style:{padding:`10px 12px`,color:p.text1,fontSize:12},children:m(e.created_at)}),(0,f.jsx)(`td`,{style:{padding:`10px 12px`},children:e.is_admin?(0,f.jsx)(`span`,{style:{fontSize:11,color:p.accent,border:`1px solid ${p.accent}33`,borderRadius:4,padding:`2px 7px`},children:`admin`}):(0,f.jsx)(`span`,{style:{fontSize:11,color:p.text1,border:`1px solid ${p.border1}`,borderRadius:4,padding:`2px 7px`},children:e.is_active?`active`:`inactive`})}),(0,f.jsx)(`td`,{style:{padding:`10px 12px`,textAlign:`right`},children:!e.is_admin&&!n&&(0,f.jsx)(`button`,{disabled:_===e.id,onClick:()=>S(e.id,e.email),style:{padding:`4px 12px`,background:`none`,border:`1px solid ${p.accent}66`,borderRadius:5,color:p.accent,fontSize:11,cursor:_===e.id?`not-allowed`:`pointer`,opacity:_===e.id?.5:1},children:_===e.id?`Promoting…`:`Promote to admin`})})]},e.id)})})]}),!s&&a?.length===0&&(0,f.jsx)(`p`,{style:{color:p.text1,fontSize:13},children:`No registered users found.`})]})}export{h as default};
1
+ import{a as e,f as t,i as n,p as r,u as i,v as a,w as o,x as s}from"./index-sA0UH8NZ.js";import"./AdminApiErrorBoundary-DBMFMi8W.js";import"./LoadingPanel-DBMFMi8W.js";var c=o(s(),1),l=`/platform/admin`;function u(){return t(`${l}/users`,{method:`GET`}).then(e)}function d(n){return t(`${l}/users/${n}/promote`,{method:`POST`}).then(e)}var f=a(),p={bg0:`#0d1117`,bg1:`#161b22`,border0:`#21262d`,border1:`#30363d`,text0:`#c9d1d9`,text1:`#8b949e`,accent:`#6cf`};function m(e){return e?new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}):`—`}function h(){let{isAdmin:e,user:t}=n();if(!e)return(0,f.jsx)(i,{});let[a,o]=(0,c.useState)(null),[s,l]=(0,c.useState)(!1),[h,g]=(0,c.useState)(null),[_,v]=(0,c.useState)(null),[y,b]=(0,c.useState)(null),x=(0,c.useCallback)(()=>{l(!0),g(null),u().then(e=>o(e?.users??[])).catch(e=>g(e?.message||`Failed to load users.`)).finally(()=>l(!1))},[]);(0,c.useEffect)(()=>{x()},[x]);let S=async(e,t)=>{v(e);try{await d(e),b(`${t} promoted to admin.`),setTimeout(()=>b(null),3500),x()}catch(e){g(e?.message||`Promotion failed.`)}finally{v(null)}};return(0,f.jsxs)(`div`,{style:{padding:20,color:p.text0,fontFamily:`sans-serif`,maxWidth:900},children:[(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:20},children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{style:{margin:0,color:`#fff`},children:`Users`}),(0,f.jsx)(`p`,{style:{margin:`4px 0 0`,fontSize:12,color:p.text1},children:`Registered accounts. Admin promotion is grant-only — privileges are never revoked here.`})]}),(0,f.jsx)(`button`,{onClick:x,style:{padding:`6px 14px`,background:`none`,border:`1px solid ${p.border1}`,borderRadius:6,color:p.text1,fontSize:12,cursor:`pointer`},children:`Refresh`})]}),y&&(0,f.jsx)(`div`,{style:{marginBottom:12,padding:`8px 14px`,background:`#0d2a1a`,border:`1px solid #1a5c33`,borderRadius:6,fontSize:12,color:`#4ade80`},children:y}),h&&(0,f.jsx)(`div`,{style:{marginBottom:12,padding:`8px 14px`,background:`#1a0d0d`,border:`1px solid #5c1a1a`,borderRadius:6,fontSize:12,color:`#f87171`},children:h}),s&&(0,f.jsx)(r,{label:`Loading users...`}),!s&&a&&(0,f.jsxs)(`table`,{style:{width:`100%`,borderCollapse:`collapse`,fontSize:13},children:[(0,f.jsx)(`thead`,{children:(0,f.jsx)(`tr`,{style:{borderBottom:`1px solid ${p.border0}`},children:[`Email`,`Joined`,`Status`,``].map(e=>(0,f.jsx)(`th`,{style:{textAlign:`left`,padding:`8px 12px`,color:p.text1,fontWeight:600,fontSize:11,textTransform:`uppercase`,letterSpacing:`0.05em`},children:e},e))})}),(0,f.jsx)(`tbody`,{children:a.map(e=>{let n=e.email===t?.email;return(0,f.jsxs)(`tr`,{style:{borderBottom:`1px solid ${p.border0}`},children:[(0,f.jsxs)(`td`,{style:{padding:`10px 12px`,color:p.text0},children:[e.email,n&&(0,f.jsx)(`span`,{style:{marginLeft:8,fontSize:10,color:p.text1,border:`1px solid ${p.border1}`,borderRadius:4,padding:`1px 5px`},children:`you`})]}),(0,f.jsx)(`td`,{style:{padding:`10px 12px`,color:p.text1,fontSize:12},children:m(e.created_at)}),(0,f.jsx)(`td`,{style:{padding:`10px 12px`},children:e.is_admin?(0,f.jsx)(`span`,{style:{fontSize:11,color:p.accent,border:`1px solid ${p.accent}33`,borderRadius:4,padding:`2px 7px`},children:`admin`}):(0,f.jsx)(`span`,{style:{fontSize:11,color:p.text1,border:`1px solid ${p.border1}`,borderRadius:4,padding:`2px 7px`},children:e.is_active?`active`:`inactive`})}),(0,f.jsx)(`td`,{style:{padding:`10px 12px`,textAlign:`right`},children:!e.is_admin&&!n&&(0,f.jsx)(`button`,{disabled:_===e.id,onClick:()=>S(e.id,e.email),style:{padding:`4px 12px`,background:`none`,border:`1px solid ${p.accent}66`,borderRadius:5,color:p.accent,fontSize:11,cursor:_===e.id?`not-allowed`:`pointer`,opacity:_===e.id?.5:1},children:_===e.id?`Promoting…`:`Promote to admin`})})]},e.id)})})]}),!s&&a?.length===0&&(0,f.jsx)(`p`,{style:{color:p.text1,fontSize:13},children:`No registered users found.`})]})}export{h as default};
@@ -1 +1 @@
1
- import{i as e,l as t,s as n,u as r,v as i,w as a,x as o,y as s}from"./index-BwoJwt06.js";import"./AdminApiErrorBoundary-d8luTzjH.js";import{a as c,f as l,t as u}from"./agent-CXZNs9Ea.js";import{a as d,c as f,d as p,f as m,i as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,t as C}from"./SurfacePrimitives-CebMt8Xs.js";var w=a(o(),1),T=i();function E(){window.dispatchEvent(new Event(t))}function D(e){let t=e?.plan?.steps||[];return t.length?n(t.slice(0,3),e=>e.description||e.tool||`Unnamed step`).join(` • `):`No plan steps were provided.`}function O({run:e,pendingAction:t,onApprove:r,onReject:i}){let a=e?.plan?.steps||[],o=e?.allowed_capabilities||[],s=e?.granted_tools||[];return(0,T.jsxs)(`article`,{className:`rounded-[22px] border p-5`,style:{background:`rgba(255,255,255,0.02)`,borderColor:`rgba(255,255,255,0.08)`},children:[(0,T.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:[(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsx)(h,{tone:b(e.status),children:e.status.replaceAll(`_`,` `)}),(0,T.jsxs)(h,{tone:b(e.overall_risk),children:[e.overall_risk,` risk`]}),(0,T.jsxs)(h,{tone:`info`,children:[a.length,` steps`]}),e.agent_type?(0,T.jsx)(h,{children:e.agent_type}):null]}),(0,T.jsx)(`h3`,{className:`mt-4 text-xl font-semibold tracking-[-0.03em]`,style:{color:_.text},children:e.goal}),(0,T.jsx)(`p`,{className:`mt-2 text-sm leading-7`,style:{color:_.muted},children:e.executive_summary||D(e)})]}),(0,T.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,T.jsx)(C,{onClick:()=>r(e.run_id),disabled:t===e.run_id,children:t===e.run_id?`Applying`:`Approve`}),(0,T.jsx)(C,{tone:`danger`,onClick:()=>i(e.run_id),disabled:t===e.run_id,children:`Reject`})]})]}),(0,T.jsxs)(`div`,{className:`mt-5 grid gap-4 lg:grid-cols-[minmax(0,1.5fr)_minmax(320px,1fr)]`,children:[(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Planned Steps`}),(0,T.jsx)(`div`,{className:`mt-3 space-y-3`,children:n(a,(t,n)=>(0,T.jsxs)(`div`,{className:`rounded-2xl border p-3`,style:{borderColor:_.border},children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsxs)(h,{tone:`info`,children:[`Step `,n+1]}),(0,T.jsx)(h,{children:t.tool}),(0,T.jsx)(h,{tone:b(t.risk_level),children:t.risk_level})]}),(0,T.jsx)(`div`,{className:`mt-3 text-sm font-medium`,style:{color:_.text},children:t.description||`No description provided.`}),t.args?(0,T.jsx)(`pre`,{className:`mt-3 overflow-x-auto rounded-2xl p-3 text-xs`,style:{background:`rgba(4, 17, 13, 0.9)`,color:`#8fffd0`},children:JSON.stringify(t.args,null,2)}):null]},`${e.run_id}-${n}`))})]}),(0,T.jsxs)(`div`,{className:`space-y-4`,children:[(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Review Metadata`}),(0,T.jsxs)(`dl`,{className:`mt-4 grid grid-cols-1 gap-3 text-sm`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,T.jsx)(`dt`,{style:{color:_.muted},children:`Created`}),(0,T.jsx)(`dd`,{style:{color:_.text},children:p(e.created_at)})]}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,T.jsx)(`dt`,{style:{color:_.muted},children:`Age`}),(0,T.jsx)(`dd`,{style:{color:_.text},children:m(e.created_at)})]}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,T.jsx)(`dt`,{style:{color:_.muted},children:`Run ID`}),(0,T.jsx)(`dd`,{className:`truncate font-mono text-xs`,style:{color:_.text},children:e.run_id})]})]})]}),(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Granted Capabilities`}),(0,T.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:o.length?n(o,e=>(0,T.jsx)(h,{tone:`success`,children:e},e)):(0,T.jsx)(`span`,{className:`text-sm`,style:{color:_.muted},children:`No capabilities embedded yet.`})})]}),(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Tool Access`}),(0,T.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:s.length?n(s,e=>(0,T.jsx)(h,{children:e},e)):(0,T.jsx)(`span`,{className:`text-sm`,style:{color:_.muted},children:`No tools auto-granted.`})})]})]})]})]})}function k(){let{isAdmin:t}=e();if(!t)return(0,T.jsx)(r,{});let[i,a]=(0,w.useState)([]),[o,p]=(0,w.useState)(!0),[m,h]=(0,w.useState)(``),[b,D]=(0,w.useState)(``),k=(0,w.useCallback)(async()=>{p(!0),h(``);try{let e=await c(`pending_approval`,50);a(Array.isArray(e)?e:[]),E()}catch(e){h(e instanceof Error?e.message:`Failed to load approvals.`)}finally{p(!1)}},[]);(0,w.useEffect)(()=>{k()},[k]);let A=(0,w.useCallback)(async(e,t)=>{D(e),h(``);try{t===`approve`?await u(e):await l(e),a(t=>t.filter(t=>t.run_id!==e)),E()}catch(e){h(e instanceof Error?e.message:`Failed to ${t} run.`)}finally{D(``)}},[]),j=(0,w.useMemo)(()=>{let e=i.filter(e=>e.overall_risk===`high`).length,t=i.reduce((e,t)=>e+(t.allowed_capabilities?.length||0),0);return{total:i.length,highRisk:e,queuedCapabilities:t}},[i]);return(0,T.jsxs)(S,{eyebrow:`Agent Governance`,title:`Approval Inbox`,description:`Review every queued agent run before execution. Risk, capability scope, and planned steps are visible inline so approval stays operational instead of ceremonial.`,actions:(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(C,{tone:`ghost`,onClick:k,children:`Refresh Queue`}),(0,T.jsx)(s,{to:`/agent`,className:`rounded-full border px-4 py-2 text-xs font-semibold uppercase tracking-[0.18em]`,style:{borderColor:_.border,color:_.text},children:`Open Agent Console`})]}),children:[(0,T.jsxs)(f,{children:[(0,T.jsx)(`div`,{className:`lg:col-span-4`,children:(0,T.jsx)(y,{label:`Pending Reviews`,value:j.total,hint:`Runs waiting for a human decision.`,tone:`warning`})}),(0,T.jsx)(`div`,{className:`lg:col-span-4`,children:(0,T.jsx)(y,{label:`High-Risk Plans`,value:j.highRisk,hint:`These runs include high-risk operations.`,tone:j.highRisk?`danger`:`neutral`})}),(0,T.jsx)(`div`,{className:`lg:col-span-4`,children:(0,T.jsx)(y,{label:`Queued Capabilities`,value:j.queuedCapabilities,hint:`Capability grants embedded across the queue.`,tone:`info`})})]}),(0,T.jsxs)(g,{title:`Pending Agent Runs`,subtitle:`Approval is required before these runs can execute. Approve to start execution immediately or reject to discard the plan.`,children:[o?(0,T.jsx)(d,{label:`Loading pending approvals`}):null,!o&&m?(0,T.jsx)(x,{message:m,onRetry:k}):null,!o&&!m&&i.length===0?(0,T.jsx)(v,{title:`Approval queue is clear`,description:`No runs are currently waiting for review. New high-risk or gated plans will land here automatically.`}):null,!o&&!m?(0,T.jsx)(`div`,{className:`space-y-4`,children:n(i,e=>(0,T.jsx)(O,{run:e,pendingAction:b,onApprove:e=>A(e,`approve`),onReject:e=>A(e,`reject`)},e.run_id))}):null]})]})}export{t as APPROVAL_EVENT,k as default,E as emitApprovalCountChanged};
1
+ import{i as e,l as t,s as n,u as r,v as i,w as a,x as o,y as s}from"./index-sA0UH8NZ.js";import"./AdminApiErrorBoundary-DBMFMi8W.js";import{a as c,f as l,t as u}from"./agent-DsJodoAt.js";import{a as d,c as f,d as p,f as m,i as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,t as C}from"./SurfacePrimitives-BJD7gKcG.js";var w=a(o(),1),T=i();function E(){window.dispatchEvent(new Event(t))}function D(e){let t=e?.plan?.steps||[];return t.length?n(t.slice(0,3),e=>e.description||e.tool||`Unnamed step`).join(` • `):`No plan steps were provided.`}function O({run:e,pendingAction:t,onApprove:r,onReject:i}){let a=e?.plan?.steps||[],o=e?.allowed_capabilities||[],s=e?.granted_tools||[];return(0,T.jsxs)(`article`,{className:`rounded-[22px] border p-5`,style:{background:`rgba(255,255,255,0.02)`,borderColor:`rgba(255,255,255,0.08)`},children:[(0,T.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:[(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsx)(h,{tone:b(e.status),children:e.status.replaceAll(`_`,` `)}),(0,T.jsxs)(h,{tone:b(e.overall_risk),children:[e.overall_risk,` risk`]}),(0,T.jsxs)(h,{tone:`info`,children:[a.length,` steps`]}),e.agent_type?(0,T.jsx)(h,{children:e.agent_type}):null]}),(0,T.jsx)(`h3`,{className:`mt-4 text-xl font-semibold tracking-[-0.03em]`,style:{color:_.text},children:e.goal}),(0,T.jsx)(`p`,{className:`mt-2 text-sm leading-7`,style:{color:_.muted},children:e.executive_summary||D(e)})]}),(0,T.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,T.jsx)(C,{onClick:()=>r(e.run_id),disabled:t===e.run_id,children:t===e.run_id?`Applying`:`Approve`}),(0,T.jsx)(C,{tone:`danger`,onClick:()=>i(e.run_id),disabled:t===e.run_id,children:`Reject`})]})]}),(0,T.jsxs)(`div`,{className:`mt-5 grid gap-4 lg:grid-cols-[minmax(0,1.5fr)_minmax(320px,1fr)]`,children:[(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Planned Steps`}),(0,T.jsx)(`div`,{className:`mt-3 space-y-3`,children:n(a,(t,n)=>(0,T.jsxs)(`div`,{className:`rounded-2xl border p-3`,style:{borderColor:_.border},children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsxs)(h,{tone:`info`,children:[`Step `,n+1]}),(0,T.jsx)(h,{children:t.tool}),(0,T.jsx)(h,{tone:b(t.risk_level),children:t.risk_level})]}),(0,T.jsx)(`div`,{className:`mt-3 text-sm font-medium`,style:{color:_.text},children:t.description||`No description provided.`}),t.args?(0,T.jsx)(`pre`,{className:`mt-3 overflow-x-auto rounded-2xl p-3 text-xs`,style:{background:`rgba(4, 17, 13, 0.9)`,color:`#8fffd0`},children:JSON.stringify(t.args,null,2)}):null]},`${e.run_id}-${n}`))})]}),(0,T.jsxs)(`div`,{className:`space-y-4`,children:[(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Review Metadata`}),(0,T.jsxs)(`dl`,{className:`mt-4 grid grid-cols-1 gap-3 text-sm`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,T.jsx)(`dt`,{style:{color:_.muted},children:`Created`}),(0,T.jsx)(`dd`,{style:{color:_.text},children:p(e.created_at)})]}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,T.jsx)(`dt`,{style:{color:_.muted},children:`Age`}),(0,T.jsx)(`dd`,{style:{color:_.text},children:m(e.created_at)})]}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,T.jsx)(`dt`,{style:{color:_.muted},children:`Run ID`}),(0,T.jsx)(`dd`,{className:`truncate font-mono text-xs`,style:{color:_.text},children:e.run_id})]})]})]}),(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Granted Capabilities`}),(0,T.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:o.length?n(o,e=>(0,T.jsx)(h,{tone:`success`,children:e},e)):(0,T.jsx)(`span`,{className:`text-sm`,style:{color:_.muted},children:`No capabilities embedded yet.`})})]}),(0,T.jsxs)(`div`,{className:`rounded-[18px] border p-4`,style:{borderColor:_.border},children:[(0,T.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.22em]`,style:{color:_.muted},children:`Tool Access`}),(0,T.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:s.length?n(s,e=>(0,T.jsx)(h,{children:e},e)):(0,T.jsx)(`span`,{className:`text-sm`,style:{color:_.muted},children:`No tools auto-granted.`})})]})]})]})]})}function k(){let{isAdmin:t}=e();if(!t)return(0,T.jsx)(r,{});let[i,a]=(0,w.useState)([]),[o,p]=(0,w.useState)(!0),[m,h]=(0,w.useState)(``),[b,D]=(0,w.useState)(``),k=(0,w.useCallback)(async()=>{p(!0),h(``);try{let e=await c(`pending_approval`,50);a(Array.isArray(e)?e:[]),E()}catch(e){h(e instanceof Error?e.message:`Failed to load approvals.`)}finally{p(!1)}},[]);(0,w.useEffect)(()=>{k()},[k]);let A=(0,w.useCallback)(async(e,t)=>{D(e),h(``);try{t===`approve`?await u(e):await l(e),a(t=>t.filter(t=>t.run_id!==e)),E()}catch(e){h(e instanceof Error?e.message:`Failed to ${t} run.`)}finally{D(``)}},[]),j=(0,w.useMemo)(()=>{let e=i.filter(e=>e.overall_risk===`high`).length,t=i.reduce((e,t)=>e+(t.allowed_capabilities?.length||0),0);return{total:i.length,highRisk:e,queuedCapabilities:t}},[i]);return(0,T.jsxs)(S,{eyebrow:`Agent Governance`,title:`Approval Inbox`,description:`Review every queued agent run before execution. Risk, capability scope, and planned steps are visible inline so approval stays operational instead of ceremonial.`,actions:(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(C,{tone:`ghost`,onClick:k,children:`Refresh Queue`}),(0,T.jsx)(s,{to:`/agent`,className:`rounded-full border px-4 py-2 text-xs font-semibold uppercase tracking-[0.18em]`,style:{borderColor:_.border,color:_.text},children:`Open Agent Console`})]}),children:[(0,T.jsxs)(f,{children:[(0,T.jsx)(`div`,{className:`lg:col-span-4`,children:(0,T.jsx)(y,{label:`Pending Reviews`,value:j.total,hint:`Runs waiting for a human decision.`,tone:`warning`})}),(0,T.jsx)(`div`,{className:`lg:col-span-4`,children:(0,T.jsx)(y,{label:`High-Risk Plans`,value:j.highRisk,hint:`These runs include high-risk operations.`,tone:j.highRisk?`danger`:`neutral`})}),(0,T.jsx)(`div`,{className:`lg:col-span-4`,children:(0,T.jsx)(y,{label:`Queued Capabilities`,value:j.queuedCapabilities,hint:`Capability grants embedded across the queue.`,tone:`info`})})]}),(0,T.jsxs)(g,{title:`Pending Agent Runs`,subtitle:`Approval is required before these runs can execute. Approve to start execution immediately or reject to discard the plan.`,children:[o?(0,T.jsx)(d,{label:`Loading pending approvals`}):null,!o&&m?(0,T.jsx)(x,{message:m,onRetry:k}):null,!o&&!m&&i.length===0?(0,T.jsx)(v,{title:`Approval queue is clear`,description:`No runs are currently waiting for review. New high-risk or gated plans will land here automatically.`}):null,!o&&!m?(0,T.jsx)(`div`,{className:`space-y-4`,children:n(i,e=>(0,T.jsx)(O,{run:e,pendingAction:b,onApprove:e=>A(e,`approve`),onReject:e=>A(e,`reject`)},e.run_id))}):null]})]})}export{t as APPROVAL_EVENT,k as default,E as emitApprovalCountChanged};
@@ -1 +1 @@
1
- import{_ as e,a as t,c as n,d as r,f as i,g as a,h as o,i as s,m as c,o as l,p as u,s as d,u as f,v as p,w as m,x as h}from"./index-BwoJwt06.js";import"./AdminApiErrorBoundary-d8luTzjH.js";import"./LoadingPanel-d8luTzjH.js";import"./_core-d8luTzjH.js";import{a as g,c as ee,f as te,i as _,n as ne,o as re,p as ie,r as ae,s as oe,t as v}from"./agent-CXZNs9Ea.js";import"./EmptyState-d8luTzjH.js";import"./Toast-d8luTzjH.js";var y=m(h(),1);l(`analytics`,e=>i(a.ANALYTICS.LINKEDIN_MANUAL,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,(e,n=null)=>{let r=n?`?group_by=${encodeURIComponent(n)}`:``;return i(`${a.ANALYTICS.MASTERPLAN_SUMMARY(e)}${r}`,{method:`GET`}).then(t)}),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_TWR,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_ENGAGEMENT,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_AI_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_IMPACT_SCORE,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_INCOME_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_REVENUE_SCALING,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_EXECUTION_SPEED,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_ATTENTION_VALUE,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_ENGAGEMENT_RATE,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_BUSINESS_GROWTH,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_MONETIZATION_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_AI_PRODUCTIVITY_BOOST,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_DECISION_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_LOST_POTENTIAL,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,()=>i(a.ANALYTICS.SCORES_ME,{method:`GET`}).then(t)),l(`analytics`,()=>i(a.ANALYTICS.SCORES_RECALCULATE,{method:`POST`}).then(t)),l(`analytics`,(e=30)=>i(`${a.ANALYTICS.SCORES_HISTORY}?limit=${e}`,{method:`GET`}).then(t));var b=l(`analytics`,e=>i(a.ANALYTICS.SCORES_FEEDBACK,{method:`POST`,body:JSON.stringify(e)}).then(t));l(`analytics`,(e=50)=>i(`${a.ANALYTICS.SCORES_FEEDBACK}?limit=${e}`,{method:`GET`}).then(t));var x=p(),S=({risk:e})=>{let t={low:`bg-emerald-500/10 text-emerald-400 border border-emerald-500/20`,medium:`bg-yellow-500/10 text-yellow-400 border border-yellow-500/20`,high:`bg-red-500/10 text-red-400 border border-red-500/20`};return(0,x.jsx)(`span`,{className:`px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider ${t[e]||t.high}`,children:e||`?`})},C=({status:e})=>(0,x.jsx)(`span`,{className:`px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider ${{pending_approval:`bg-yellow-500/10 text-yellow-300 border border-yellow-500/20`,approved:`bg-blue-500/10 text-blue-300 border border-blue-500/20`,executing:`bg-[#00ffaa]/10 text-[#00ffaa] border border-[#00ffaa]/20`,completed:`bg-emerald-500/10 text-emerald-400 border border-emerald-500/20`,failed:`bg-red-500/10 text-red-400 border border-red-500/20`,rejected:`bg-zinc-500/10 text-zinc-400 border border-zinc-500/20`}[e]||``}`,children:{pending_approval:`Awaiting Approval`,approved:`Approved`,executing:`Executing`,completed:`Completed`,failed:`Failed`,rejected:`Rejected`}[e]||e}),w=({step:e,index:t})=>{let[n,r]=(0,y.useState)(!1);return(0,x.jsxs)(`div`,{className:`border border-zinc-800/60 rounded-lg overflow-hidden mb-2`,children:[(0,x.jsxs)(`button`,{onClick:()=>r(!n),className:`w-full flex items-center gap-3 px-4 py-3 text-left hover:bg-zinc-800/30 transition-colors`,children:[(0,x.jsx)(`span`,{className:`text-xs font-mono text-zinc-500 w-5`,children:t+1}),(0,x.jsx)(`span`,{className:`font-mono text-xs text-[#00ffaa] w-36 truncate`,children:e.tool_name}),(0,x.jsx)(S,{risk:e.risk_level}),(0,x.jsx)(`span`,{className:`flex-1 text-xs text-zinc-300 truncate`,children:e.description}),e.status&&(0,x.jsx)(C,{status:e.status}),e.execution_ms&&(0,x.jsxs)(`span`,{className:`text-[10px] text-zinc-500`,children:[e.execution_ms,`ms`]}),(0,x.jsx)(`span`,{className:`text-zinc-500 text-[10px]`,children:n?`▲`:`▼`})]}),n&&(0,x.jsxs)(`div`,{className:`px-4 pb-3 border-t border-zinc-800/60 bg-zinc-950/50`,children:[e.result&&(0,x.jsx)(`pre`,{className:`text-[10px] text-zinc-300 mt-2 overflow-x-auto whitespace-pre-wrap`,children:JSON.stringify(e.result,null,2)}),e.error_message&&(0,x.jsx)(`p`,{className:`text-xs text-red-400 mt-2`,children:e.error_message})]})]})},se=({run:e,onApprove:t,onReject:n,onSelect:r,isSelected:i})=>{let a=e.status===`pending_approval`,o=e.plan?.steps||[];return(0,x.jsxs)(`div`,{className:`border rounded-xl p-4 cursor-pointer transition-all ${i?`border-[#00ffaa]/40 bg-[#00ffaa]/5`:`border-zinc-800/60 hover:border-zinc-700/60 bg-zinc-950/30`}`,onClick:()=>r(e),children:[(0,x.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-2`,children:[(0,x.jsx)(`p`,{className:`text-sm font-medium text-zinc-100 leading-snug flex-1 line-clamp-2`,children:e.goal}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,x.jsx)(S,{risk:e.overall_risk}),(0,x.jsx)(C,{status:e.status})]})]}),e.executive_summary&&(0,x.jsx)(`p`,{className:`text-xs text-zinc-400 mb-3 line-clamp-2`,children:e.executive_summary}),(0,x.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 text-[10px] text-zinc-500`,children:[(0,x.jsxs)(`span`,{children:[o.length,` step`,o.length===1?``:`s`]}),e.steps_completed>0&&(0,x.jsxs)(`span`,{children:[e.steps_completed,`/`,e.steps_total,` done`]}),(0,x.jsx)(`span`,{children:e.created_at?new Date(e.created_at).toLocaleString():``})]}),a&&(0,x.jsxs)(`div`,{className:`flex gap-2`,children:[(0,x.jsx)(`button`,{onClick:n=>{n.stopPropagation(),t(e.run_id)},className:`px-3 py-1 text-[10px] font-bold uppercase tracking-wider rounded bg-[#00ffaa] text-black hover:bg-[#00ffaa]/80 transition-colors`,children:`Approve`}),(0,x.jsx)(`button`,{onClick:t=>{t.stopPropagation(),n(e.run_id)},className:`px-3 py-1 text-[10px] font-bold uppercase tracking-wider rounded border border-zinc-700 text-zinc-400 hover:bg-zinc-800 transition-colors`,children:`Reject`})]})]})]})},T=({runId:e})=>{let[t,n]=(0,y.useState)(null),[r,i]=(0,y.useState)(!1),a=async t=>{i(!0);try{await b({source_type:`agent`,source_id:e,feedback_value:t}),n(t)}finally{i(!1)}};return(0,x.jsxs)(`div`,{className:`mt-4 flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-zinc-500`,children:`Run Outcome`}),(0,x.jsx)(`button`,{onClick:()=>a(1),disabled:r,className:`px-3 py-1 rounded-full border text-[10px] font-bold uppercase tracking-wider transition-colors ${t===1?`border-emerald-500 bg-emerald-500/20 text-emerald-300`:`border-zinc-700 text-zinc-400 hover:bg-zinc-800`}`,children:`Helpful`}),(0,x.jsx)(`button`,{onClick:()=>a(-1),disabled:r,className:`px-3 py-1 rounded-full border text-[10px] font-bold uppercase tracking-wider transition-colors ${t===-1?`border-red-500 bg-red-500/20 text-red-300`:`border-zinc-700 text-zinc-400 hover:bg-zinc-800`}`,children:`Not Helpful`})]})},E=({run:e,steps:t,loading:n,runtimeOnly:r=!1,onApprove:i,onReject:a})=>{if(!e)return null;let o=e.plan?.steps||[],s=e.status===`pending_approval`,[c,l]=(0,y.useState)(!1),[u,f]=(0,y.useState)(null);return(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{className:`mb-4`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,x.jsx)(`h3`,{className:`text-sm font-bold text-zinc-100`,children:`Execution Plan`}),(0,x.jsx)(S,{risk:e.overall_risk}),(0,x.jsx)(C,{status:e.status})]}),(0,x.jsx)(`p`,{className:`text-xs text-zinc-400`,children:e.goal})]}),e.executive_summary&&(0,x.jsxs)(`div`,{className:`bg-zinc-900/50 border border-zinc-800/60 rounded-lg p-3 mb-4`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-1`,children:`Executive Summary`}),(0,x.jsx)(`p`,{className:`text-sm text-zinc-200`,children:e.executive_summary})]}),s&&(0,x.jsxs)(`div`,{className:`flex flex-col gap-2 mb-5 p-4 rounded-xl border border-yellow-500/20 bg-yellow-500/5`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,x.jsxs)(`div`,{className:`flex-1`,children:[(0,x.jsx)(`p`,{className:`text-xs font-semibold text-yellow-300 mb-0.5`,children:`Awaiting your approval`}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500`,children:`Review the plan above, then approve or reject.`})]}),(0,x.jsx)(`button`,{onClick:async()=>{l(!0),f(null);try{await i(e.run_id)}catch(e){f(e?.message||`Failed to approve.`)}finally{l(!1)}},disabled:c,className:`px-4 py-2 text-[11px] font-bold uppercase tracking-wider rounded-lg bg-[#00ffaa] text-black hover:bg-[#00ffaa]/80 transition-colors disabled:opacity-50`,children:`Approve`}),(0,x.jsx)(`button`,{onClick:async()=>{l(!0),f(null);try{await a(e.run_id)}catch(e){f(e?.message||`Failed to reject.`)}finally{l(!1)}},disabled:c,className:`px-4 py-2 text-[11px] font-bold uppercase tracking-wider rounded-lg border border-zinc-700 text-zinc-400 hover:bg-zinc-800 transition-colors disabled:opacity-50`,children:`Reject`})]}),u&&(0,x.jsx)(`p`,{className:`text-xs text-red-400`,children:u})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar`,children:[n?(0,x.jsx)(`p`,{className:`text-xs text-zinc-500`,children:`Loading steps...`}):t.length>0?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Steps`}),d(t,(e,t)=>(0,x.jsx)(w,{step:e,index:t},t))]}):o.length>0?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Planned Steps`}),d(o,(e,t)=>(0,x.jsxs)(`div`,{className:`flex items-start gap-3 px-4 py-3 border border-zinc-800/60 rounded-lg mb-2`,children:[(0,x.jsx)(`span`,{className:`text-xs font-mono text-zinc-500 w-5 pt-0.5`,children:t+1}),(0,x.jsx)(`span`,{className:`font-mono text-xs text-[#00ffaa] w-36 flex-shrink-0`,children:e.tool}),(0,x.jsx)(S,{risk:e.risk_level}),(0,x.jsx)(`span`,{className:`flex-1 text-xs text-zinc-300`,children:e.description})]},t))]}):e.status===`completed`||e.status===`failed`?(0,x.jsxs)(`div`,{className:`bg-zinc-900/40 border border-zinc-800/60 rounded-lg p-4 text-xs text-zinc-500`,children:[(0,x.jsx)(`p`,{className:`font-semibold text-zinc-400 mb-1`,children:`No execution steps recorded.`}),e.error?(0,x.jsxs)(`p`,{className:`text-red-400 mb-2`,children:[`Error: `,e.error]}):null,(0,x.jsx)(`p`,{children:`Possible causes:`}),(0,x.jsxs)(`ul`,{className:`list-disc list-inside mt-1 space-y-0.5`,children:[(0,x.jsxs)(`li`,{children:[(0,x.jsx)(`code`,{className:`text-zinc-400`,children:`OPENAI_API_KEY`}),` is not set — the planner requires an LLM to generate execution steps.`]}),(0,x.jsx)(`li`,{children:`The planner backend returned an empty plan. Check server logs for detail.`})]})]}):null,e.result&&(0,x.jsxs)(`div`,{className:`mt-4`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Result`}),(0,x.jsx)(`pre`,{className:`text-[10px] text-zinc-300 bg-zinc-900/50 border border-zinc-800/60 rounded-lg p-3 overflow-x-auto whitespace-pre-wrap`,children:JSON.stringify(e.result,null,2)})]}),!r&&(e.status===`completed`||e.status===`failed`)&&(0,x.jsx)(T,{runId:e.run_id})]})]})},D=({trust:e,onUpdate:t,tools:n})=>{let[r,i]=(0,y.useState)(e?.auto_execute_low||!1),[a,o]=(0,y.useState)(e?.auto_execute_medium||!1),[s,c]=(0,y.useState)(e?.allowed_auto_grant_tools||[]),[l,u]=(0,y.useState)(!1);(0,y.useEffect)(()=>{i(e?.auto_execute_low||!1),o(e?.auto_execute_medium||!1),c(e?.allowed_auto_grant_tools||[])},[e]);let f=(n||[]).filter(e=>e.risk===`low`||e.risk===`medium`).sort((e,t)=>e.name.localeCompare(t.name)),p=(n||[]).filter(e=>e.name===`genesis.message`),m=e=>{c(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].sort())};return(0,x.jsxs)(`div`,{className:`bg-zinc-900/50 border border-zinc-800/60 rounded-xl p-4`,children:[(0,x.jsx)(`h4`,{className:`text-xs font-bold text-zinc-300 uppercase tracking-wider mb-3`,children:`Trust Settings`}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 mb-4`,children:`High-risk plans always require approval regardless of these settings.`}),(0,x.jsxs)(`div`,{className:`space-y-3`,children:[(0,x.jsxs)(`label`,{className:`flex items-center justify-between`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-300`,children:`Auto-execute low-risk plans`}),(0,x.jsx)(`input`,{type:`checkbox`,checked:r,onChange:e=>i(e.target.checked),className:`accent-[#00ffaa]`})]}),(0,x.jsxs)(`label`,{className:`flex items-center justify-between`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-300`,children:`Auto-execute medium-risk plans`}),(0,x.jsx)(`input`,{type:`checkbox`,checked:a,onChange:e=>o(e.target.checked),className:`accent-yellow-400`})]})]}),(0,x.jsxs)(`div`,{className:`mt-5`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Tool-Level Auto-Grant Policy`}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[d(f,e=>(0,x.jsxs)(`label`,{className:`flex items-center justify-between gap-3 border border-zinc-800/60 rounded-lg px-3 py-2`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-200 font-mono`,children:e.name}),(0,x.jsx)(S,{risk:e.risk})]}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 mt-1`,children:e.description})]}),(0,x.jsx)(`input`,{type:`checkbox`,checked:s.includes(e.name),onChange:()=>m(e.name),className:`accent-[#00ffaa]`})]},e.name)),d(p,e=>(0,x.jsxs)(`label`,{className:`flex items-center justify-between gap-3 border border-red-500/20 rounded-lg px-3 py-2 opacity-80`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-200 font-mono`,children:e.name}),(0,x.jsx)(S,{risk:e.risk})]}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 mt-1`,children:`Locked. High-risk tools cannot be auto-granted.`})]}),(0,x.jsx)(`input`,{type:`checkbox`,checked:!1,disabled:!0,className:`accent-red-500`})]},e.name))]})]}),(0,x.jsx)(`button`,{onClick:async()=>{u(!0);try{await t({auto_execute_low:r,auto_execute_medium:a,allowed_auto_grant_tools:s})}finally{u(!1)}},disabled:l,className:`mt-4 w-full py-2 text-[10px] font-bold uppercase tracking-wider rounded bg-zinc-800 text-zinc-300 hover:bg-zinc-700 transition-colors disabled:opacity-50`,children:l?`Saving...`:`Save Settings`})]})},O=[{title:`Summarize recent activity`,goal:`Summarize what you remember about recent activity and surface any open items`,description:`A safe first run — the agent reads its memory and reports back.`},{title:`Create a follow-up task`,goal:`Create a follow-up task to review the current system configuration`,description:`Creates a trackable item in your workflow using the task tool.`},{title:`Recall a topic from memory`,goal:`Recall everything you know about the current project goals and status`,description:`Tests the memory system — works best after prior runs have built up context.`},{title:`Audit available tools`,goal:`List the tools available to you and describe what each one can do`,description:`Read-only inspection — safe to approve with no side effects.`}],k=({onSelect:e})=>(0,x.jsxs)(`div`,{className:`mb-5`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-600 uppercase tracking-wider mb-3`,children:`Start with a template`}),(0,x.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:O.map(t=>(0,x.jsxs)(`button`,{onClick:()=>e(t.goal),className:`text-left border border-zinc-800/60 hover:border-zinc-700 rounded-xl px-4 py-3 bg-zinc-950/40 hover:bg-zinc-900/60 transition-all group`,children:[(0,x.jsx)(`p`,{className:`text-xs font-semibold text-zinc-300 group-hover:text-zinc-100 mb-1`,children:t.title}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-600 leading-relaxed`,children:t.description})]},t.title))})]}),A={"memory.recall":`border-blue-500/30 text-blue-300 hover:bg-blue-500/10`,"task.create":`border-[#00ffaa]/30 text-[#00ffaa] hover:bg-[#00ffaa]/10`,"arm.analyze":`border-purple-500/30 text-purple-300 hover:bg-purple-500/10`,"genesis.message":`border-yellow-500/30 text-yellow-300 hover:bg-yellow-500/10`},ce=({suggestions:e,onSelect:t})=>!e||e.length===0?null:(0,x.jsxs)(`div`,{className:`mb-4`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-600 uppercase tracking-wider mb-2`,children:`Suggested Actions`}),(0,x.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:d(e,(e,n)=>(0,x.jsxs)(`button`,{title:e.reason,onClick:()=>t(e.suggested_goal),className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full border text-[11px] font-medium transition-colors ${A[e.tool]||`border-zinc-700 text-zinc-400 hover:bg-zinc-800`}`,children:[(0,x.jsx)(`span`,{className:`font-mono text-[10px] opacity-70`,children:e.tool}),(0,x.jsx)(`span`,{className:`truncate max-w-[180px]`,children:e.suggested_goal})]},n))})]});function le(e){return{PLAN_CREATED:`#6366f1`,APPROVED:`#10b981`,REJECTED:`#ef4444`,EXECUTION_STARTED:`#3b82f6`,COMPLETED:`#059669`,EXECUTION_FAILED:`#dc2626`,CAPABILITY_DENIED:`#ea580c`,RECOVERED:`#f59e0b`,REPLAY_CREATED:`#8b5cf6`,STEP_EXECUTED:`#64748b`,STEP_FAILED:`#b91c1c`}[e]||`#6b7280`}function j(){let{isAdmin:t}=s();if(!t)return(0,x.jsx)(f,{});let{system:i}=c(),a=i?.runtime?.boot_mode===`runtime-only`,[l,p]=(0,y.useState)(``),[m,h]=(0,y.useState)(!1),[b,C]=(0,y.useState)(i?.runs||[]),[w,T]=(0,y.useState)(null),[O,A]=(0,y.useState)([]),[j,M]=(0,y.useState)(!1),[N,ue]=(0,y.useState)([]),[de,P]=(0,y.useState)(null),[fe,pe]=(0,y.useState)([]),[F,I]=(0,y.useState)(`runs`),[L,R]=(0,y.useState)(null),[z,B]=(0,y.useState)([]),[V,H]=(0,y.useState)(`steps`),[U,W]=(0,y.useState)(!0),{toast:me,showToast:G,clearToast:he}=o(),K=(0,y.useCallback)(async()=>{W(!0);try{let e=await g()||[];return C(e),e}catch(e){return console.error(`Failed to load runs`,e),G(e?.message||`Failed to load agent runs.`),[]}finally{W(!1)}},[]),q=(0,y.useCallback)(async()=>{try{let e=await oe();ue(e||[])}catch(e){console.error(`Failed to load tools`,e),G(e?.message||`Failed to load agent tools.`)}},[]),J=(0,y.useCallback)(async()=>{try{let e=await ee();P(e)}catch(e){console.error(`Failed to load trust`,e),G(e?.message||`Failed to load trust settings.`)}},[]),Y=(0,y.useCallback)(async()=>{try{let e=await re();pe(e||[])}catch{}},[]);(0,y.useEffect)(()=>{K(),q(),J(),Y()},[K,q,J,Y]),(0,y.useEffect)(()=>{(i?.runs||[]).length>0&&C(i.runs)},[i]);let ge=async e=>{if(T(e),A([]),B([]),H(`steps`),e.status===`completed`||e.status===`failed`){M(!0);try{let t=await _(e.run_id);A(t||[])}catch(e){console.error(`Failed to load steps`,e),G(e?.message||`Failed to load run steps.`)}finally{M(!1)}}ae(e.run_id).then(e=>B(e?.events||[])).catch(()=>B([]))},X=async()=>{if(l.trim()){h(!0),R(null);try{await ne({goal:l.trim()}),p(``);let e=(await K())[0]||null;T(e),A([]),B([]),H(`steps`)}catch(e){R(e.message||`Failed to create agent run`)}finally{h(!1)}}},Z=async e=>{try{let t=await v(e);if(await K(),T(t),t.status===`completed`||t.status===`failed`){let t=await _(e);A(t||[])}}catch(e){R(e.message||`Failed to approve run`)}},Q=async e=>{try{let t=await te(e);await K(),w?.run_id===e&&T(t)}catch(e){R(e.message||`Failed to reject run`)}},_e=async e=>{let t=await ie(e);P(t)},$=b.filter(e=>e.status===`pending_approval`);return(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{className:`mb-6`,children:[(0,x.jsx)(`h2`,{className:`text-xl font-black text-zinc-100 tracking-tight`,children:`Agent Console`}),(0,x.jsx)(`p`,{className:`text-xs text-zinc-500 mt-1`,children:a?`Runtime-only mode. The baseline agent stays available with memory tools and approval controls.`:`Type a goal. A.I.N.D.Y. generates a plan and executes it with your approval.`})]}),(0,x.jsx)(ce,{suggestions:fe,onSelect:e=>p(e)}),b.length===0&&!l&&!U&&(0,x.jsx)(k,{onSelect:e=>p(e)}),(0,x.jsxs)(`div`,{className:`mb-6`,children:[(0,x.jsxs)(`div`,{className:`flex gap-3`,children:[(0,x.jsx)(`input`,{type:`text`,value:l,onChange:e=>p(e.target.value),onKeyDown:e=>e.key===`Enter`&&!m&&X(),placeholder:`e.g. Find leads in the AI consulting space and create a follow-up task`,className:`flex-1 bg-zinc-900 border border-zinc-800 rounded-xl px-4 py-3 text-sm text-zinc-100 placeholder-zinc-600 focus:outline-none focus:border-[#00ffaa]/50 transition-colors`}),(0,x.jsx)(`button`,{onClick:X,disabled:m||!l.trim(),className:`px-6 py-3 bg-[#00ffaa] text-black font-bold text-sm rounded-xl hover:bg-[#00ffaa]/80 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0`,children:m?`Planning...`:`Run Agent`})]}),L&&(0,x.jsx)(`p`,{className:`text-xs text-red-400 mt-2`,children:L})]}),$.length>0&&(0,x.jsx)(`div`,{className:`mb-4 bg-yellow-500/5 border border-yellow-500/20 rounded-xl px-4 py-3`,children:(0,x.jsxs)(`p`,{className:`text-xs text-yellow-300 font-medium`,children:[$.length,` plan`,$.length>1?`s`:``,` awaiting your approval`]})}),(0,x.jsxs)(`div`,{className:`flex gap-6 flex-1 min-h-0`,children:[(0,x.jsxs)(`div`,{className:`w-80 flex flex-col flex-shrink-0`,children:[(0,x.jsx)(`div`,{className:`flex gap-1 mb-4 bg-zinc-900/50 rounded-lg p-1`,children:d([`runs`,`tools`,`trust`],e=>(0,x.jsx)(`button`,{onClick:()=>I(e),className:`flex-1 py-1.5 text-[10px] font-bold uppercase tracking-wider rounded transition-colors ${F===e?`bg-zinc-800 text-zinc-100`:`text-zinc-500 hover:text-zinc-300`}`,children:e===`runs`?(0,x.jsxs)(`span`,{children:[`Runs${b.length?` (${b.length})`:``}`,$.length>0&&(0,x.jsx)(`span`,{style:{background:`#f59e0b`,color:`#fff`,borderRadius:`10px`,padding:`1px 6px`,fontSize:`10px`,marginLeft:`5px`,fontWeight:700},children:$.length})]}):e===`tools`?`Tools`:`Trust`},e))}),F===`runs`&&(0,x.jsx)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar space-y-2`,children:U?(0,x.jsx)(u,{label:`Loading agent runs...`}):b.length===0?(0,x.jsx)(r,{message:`No agent runs yet.`,hint:`Type a goal above or pick a starter template to begin.`}):d(b,e=>(0,x.jsx)(se,{run:e,onApprove:Z,onReject:Q,onSelect:ge,isSelected:w?.run_id===e.run_id},e.run_id))}),F===`tools`&&(0,x.jsx)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar space-y-2`,children:d(N,e=>(0,x.jsxs)(`div`,{className:`border border-zinc-800/60 rounded-lg px-4 py-3`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,x.jsx)(`span`,{className:`font-mono text-xs text-[#00ffaa]`,children:e.name}),(0,x.jsx)(S,{risk:e.risk})]}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500`,children:e.description})]},e.name))}),F===`trust`&&(0,x.jsx)(D,{trust:de,onUpdate:_e,tools:N})]}),(0,x.jsx)(`div`,{className:`flex-1 min-w-0 border border-zinc-800/60 rounded-xl p-5 overflow-y-auto custom-scrollbar`,children:w?(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{style:{display:`flex`,gap:`8px`,marginBottom:`12px`},children:[(0,x.jsx)(`button`,{onClick:()=>H(`steps`),style:{padding:`4px 12px`,borderRadius:`4px`,border:`1px solid #3f3f46`,background:V===`steps`?`#3b82f6`:`transparent`,color:V===`steps`?`#fff`:`#a1a1aa`,cursor:`pointer`,fontSize:`12px`,fontWeight:600},children:`Steps`}),(0,x.jsxs)(`button`,{onClick:()=>H(`timeline`),style:{padding:`4px 12px`,borderRadius:`4px`,border:`1px solid #3f3f46`,background:V===`timeline`?`#3b82f6`:`transparent`,color:V===`timeline`?`#fff`:`#a1a1aa`,cursor:`pointer`,fontSize:`12px`,fontWeight:600},children:[`Timeline `,z.length>0&&`(${z.length})`]})]}),V===`steps`&&(0,x.jsx)(e,{name:`Agent Steps`,children:(0,x.jsx)(E,{run:w,steps:O,loading:j,runtimeOnly:a,onApprove:Z,onReject:Q})}),V===`timeline`&&(0,x.jsx)(e,{name:`Agent Timeline`,children:(0,x.jsx)(`div`,{children:z.length===0?(0,x.jsx)(`p`,{style:{color:`#6b7280`,fontStyle:`italic`,fontSize:`12px`},children:`No events recorded (run may predate N+8).`}):(0,x.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`8px`},children:d(z,(e,t)=>(0,x.jsxs)(`div`,{style:{padding:`8px 12px`,borderRadius:`6px`,border:`1px solid #27272a`,background:`#09090b`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,x.jsx)(`span`,{style:{background:le(e.event_type),color:`#fff`,borderRadius:`4px`,padding:`2px 8px`,fontSize:`11px`,fontWeight:600,letterSpacing:`0.05em`},children:e.event_type}),(0,x.jsx)(`span`,{style:{color:`#6b7280`,fontSize:`12px`},children:e.occurred_at?new Date(e.occurred_at).toLocaleTimeString():``})]}),e.payload&&Object.keys(e.payload).length>0&&(0,x.jsx)(`div`,{style:{marginTop:`4px`,fontSize:`12px`,color:`#a1a1aa`},children:e.event_type===`STEP_EXECUTED`||e.event_type===`STEP_FAILED`?(0,x.jsxs)(`span`,{children:[`Step `,e.payload.step_index,` · `,e.payload.tool_name,e.payload.execution_ms?` · ${e.payload.execution_ms}ms`:``,e.payload.error_message?` · ${e.payload.error_message}`:``]}):(0,x.jsx)(`span`,{children:d(Object.entries(e.payload).filter(([,e])=>e!=null&&e!==``),([e,t])=>`${e}: ${t}`).join(` · `)})})]},e.id||t))})})})]}):(0,x.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,x.jsx)(`p`,{className:`text-xs text-zinc-600`,children:`Select a run to view its plan`})})})]}),(0,x.jsx)(n,{toast:me,onDismiss:he})]})}export{j as default};
1
+ import{_ as e,a as t,c as n,d as r,f as i,g as a,h as o,i as s,m as c,o as l,p as u,s as d,u as f,v as p,w as m,x as h}from"./index-sA0UH8NZ.js";import"./AdminApiErrorBoundary-DBMFMi8W.js";import"./LoadingPanel-DBMFMi8W.js";import"./_core-DBMFMi8W.js";import{a as g,c as ee,f as te,i as _,n as ne,o as re,p as ie,r as ae,s as oe,t as v}from"./agent-DsJodoAt.js";import"./EmptyState-DBMFMi8W.js";import"./Toast-DBMFMi8W.js";var y=m(h(),1);l(`analytics`,e=>i(a.ANALYTICS.LINKEDIN_MANUAL,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,(e,n=null)=>{let r=n?`?group_by=${encodeURIComponent(n)}`:``;return i(`${a.ANALYTICS.MASTERPLAN_SUMMARY(e)}${r}`,{method:`GET`}).then(t)}),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_TWR,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_ENGAGEMENT,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_AI_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_IMPACT_SCORE,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_INCOME_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_REVENUE_SCALING,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_EXECUTION_SPEED,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_ATTENTION_VALUE,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_ENGAGEMENT_RATE,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_BUSINESS_GROWTH,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_MONETIZATION_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_AI_PRODUCTIVITY_BOOST,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_DECISION_EFFICIENCY,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,e=>i(a.ANALYTICS.CALCULATE_LOST_POTENTIAL,{method:`POST`,body:JSON.stringify(e)}).then(t)),l(`analytics`,()=>i(a.ANALYTICS.SCORES_ME,{method:`GET`}).then(t)),l(`analytics`,()=>i(a.ANALYTICS.SCORES_RECALCULATE,{method:`POST`}).then(t)),l(`analytics`,(e=30)=>i(`${a.ANALYTICS.SCORES_HISTORY}?limit=${e}`,{method:`GET`}).then(t));var b=l(`analytics`,e=>i(a.ANALYTICS.SCORES_FEEDBACK,{method:`POST`,body:JSON.stringify(e)}).then(t));l(`analytics`,(e=50)=>i(`${a.ANALYTICS.SCORES_FEEDBACK}?limit=${e}`,{method:`GET`}).then(t));var x=p(),S=({risk:e})=>{let t={low:`bg-emerald-500/10 text-emerald-400 border border-emerald-500/20`,medium:`bg-yellow-500/10 text-yellow-400 border border-yellow-500/20`,high:`bg-red-500/10 text-red-400 border border-red-500/20`};return(0,x.jsx)(`span`,{className:`px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider ${t[e]||t.high}`,children:e||`?`})},C=({status:e})=>(0,x.jsx)(`span`,{className:`px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider ${{pending_approval:`bg-yellow-500/10 text-yellow-300 border border-yellow-500/20`,approved:`bg-blue-500/10 text-blue-300 border border-blue-500/20`,executing:`bg-[#00ffaa]/10 text-[#00ffaa] border border-[#00ffaa]/20`,completed:`bg-emerald-500/10 text-emerald-400 border border-emerald-500/20`,failed:`bg-red-500/10 text-red-400 border border-red-500/20`,rejected:`bg-zinc-500/10 text-zinc-400 border border-zinc-500/20`}[e]||``}`,children:{pending_approval:`Awaiting Approval`,approved:`Approved`,executing:`Executing`,completed:`Completed`,failed:`Failed`,rejected:`Rejected`}[e]||e}),w=({step:e,index:t})=>{let[n,r]=(0,y.useState)(!1);return(0,x.jsxs)(`div`,{className:`border border-zinc-800/60 rounded-lg overflow-hidden mb-2`,children:[(0,x.jsxs)(`button`,{onClick:()=>r(!n),className:`w-full flex items-center gap-3 px-4 py-3 text-left hover:bg-zinc-800/30 transition-colors`,children:[(0,x.jsx)(`span`,{className:`text-xs font-mono text-zinc-500 w-5`,children:t+1}),(0,x.jsx)(`span`,{className:`font-mono text-xs text-[#00ffaa] w-36 truncate`,children:e.tool_name}),(0,x.jsx)(S,{risk:e.risk_level}),(0,x.jsx)(`span`,{className:`flex-1 text-xs text-zinc-300 truncate`,children:e.description}),e.status&&(0,x.jsx)(C,{status:e.status}),e.execution_ms&&(0,x.jsxs)(`span`,{className:`text-[10px] text-zinc-500`,children:[e.execution_ms,`ms`]}),(0,x.jsx)(`span`,{className:`text-zinc-500 text-[10px]`,children:n?`▲`:`▼`})]}),n&&(0,x.jsxs)(`div`,{className:`px-4 pb-3 border-t border-zinc-800/60 bg-zinc-950/50`,children:[e.result&&(0,x.jsx)(`pre`,{className:`text-[10px] text-zinc-300 mt-2 overflow-x-auto whitespace-pre-wrap`,children:JSON.stringify(e.result,null,2)}),e.error_message&&(0,x.jsx)(`p`,{className:`text-xs text-red-400 mt-2`,children:e.error_message})]})]})},se=({run:e,onApprove:t,onReject:n,onSelect:r,isSelected:i})=>{let a=e.status===`pending_approval`,o=e.plan?.steps||[];return(0,x.jsxs)(`div`,{className:`border rounded-xl p-4 cursor-pointer transition-all ${i?`border-[#00ffaa]/40 bg-[#00ffaa]/5`:`border-zinc-800/60 hover:border-zinc-700/60 bg-zinc-950/30`}`,onClick:()=>r(e),children:[(0,x.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-2`,children:[(0,x.jsx)(`p`,{className:`text-sm font-medium text-zinc-100 leading-snug flex-1 line-clamp-2`,children:e.goal}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,x.jsx)(S,{risk:e.overall_risk}),(0,x.jsx)(C,{status:e.status})]})]}),e.executive_summary&&(0,x.jsx)(`p`,{className:`text-xs text-zinc-400 mb-3 line-clamp-2`,children:e.executive_summary}),(0,x.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 text-[10px] text-zinc-500`,children:[(0,x.jsxs)(`span`,{children:[o.length,` step`,o.length===1?``:`s`]}),e.steps_completed>0&&(0,x.jsxs)(`span`,{children:[e.steps_completed,`/`,e.steps_total,` done`]}),(0,x.jsx)(`span`,{children:e.created_at?new Date(e.created_at).toLocaleString():``})]}),a&&(0,x.jsxs)(`div`,{className:`flex gap-2`,children:[(0,x.jsx)(`button`,{onClick:n=>{n.stopPropagation(),t(e.run_id)},className:`px-3 py-1 text-[10px] font-bold uppercase tracking-wider rounded bg-[#00ffaa] text-black hover:bg-[#00ffaa]/80 transition-colors`,children:`Approve`}),(0,x.jsx)(`button`,{onClick:t=>{t.stopPropagation(),n(e.run_id)},className:`px-3 py-1 text-[10px] font-bold uppercase tracking-wider rounded border border-zinc-700 text-zinc-400 hover:bg-zinc-800 transition-colors`,children:`Reject`})]})]})]})},T=({runId:e})=>{let[t,n]=(0,y.useState)(null),[r,i]=(0,y.useState)(!1),a=async t=>{i(!0);try{await b({source_type:`agent`,source_id:e,feedback_value:t}),n(t)}finally{i(!1)}};return(0,x.jsxs)(`div`,{className:`mt-4 flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-zinc-500`,children:`Run Outcome`}),(0,x.jsx)(`button`,{onClick:()=>a(1),disabled:r,className:`px-3 py-1 rounded-full border text-[10px] font-bold uppercase tracking-wider transition-colors ${t===1?`border-emerald-500 bg-emerald-500/20 text-emerald-300`:`border-zinc-700 text-zinc-400 hover:bg-zinc-800`}`,children:`Helpful`}),(0,x.jsx)(`button`,{onClick:()=>a(-1),disabled:r,className:`px-3 py-1 rounded-full border text-[10px] font-bold uppercase tracking-wider transition-colors ${t===-1?`border-red-500 bg-red-500/20 text-red-300`:`border-zinc-700 text-zinc-400 hover:bg-zinc-800`}`,children:`Not Helpful`})]})},E=({run:e,steps:t,loading:n,runtimeOnly:r=!1,onApprove:i,onReject:a})=>{if(!e)return null;let o=e.plan?.steps||[],s=e.status===`pending_approval`,[c,l]=(0,y.useState)(!1),[u,f]=(0,y.useState)(null);return(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{className:`mb-4`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,x.jsx)(`h3`,{className:`text-sm font-bold text-zinc-100`,children:`Execution Plan`}),(0,x.jsx)(S,{risk:e.overall_risk}),(0,x.jsx)(C,{status:e.status})]}),(0,x.jsx)(`p`,{className:`text-xs text-zinc-400`,children:e.goal})]}),e.executive_summary&&(0,x.jsxs)(`div`,{className:`bg-zinc-900/50 border border-zinc-800/60 rounded-lg p-3 mb-4`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-1`,children:`Executive Summary`}),(0,x.jsx)(`p`,{className:`text-sm text-zinc-200`,children:e.executive_summary})]}),s&&(0,x.jsxs)(`div`,{className:`flex flex-col gap-2 mb-5 p-4 rounded-xl border border-yellow-500/20 bg-yellow-500/5`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,x.jsxs)(`div`,{className:`flex-1`,children:[(0,x.jsx)(`p`,{className:`text-xs font-semibold text-yellow-300 mb-0.5`,children:`Awaiting your approval`}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500`,children:`Review the plan above, then approve or reject.`})]}),(0,x.jsx)(`button`,{onClick:async()=>{l(!0),f(null);try{await i(e.run_id)}catch(e){f(e?.message||`Failed to approve.`)}finally{l(!1)}},disabled:c,className:`px-4 py-2 text-[11px] font-bold uppercase tracking-wider rounded-lg bg-[#00ffaa] text-black hover:bg-[#00ffaa]/80 transition-colors disabled:opacity-50`,children:`Approve`}),(0,x.jsx)(`button`,{onClick:async()=>{l(!0),f(null);try{await a(e.run_id)}catch(e){f(e?.message||`Failed to reject.`)}finally{l(!1)}},disabled:c,className:`px-4 py-2 text-[11px] font-bold uppercase tracking-wider rounded-lg border border-zinc-700 text-zinc-400 hover:bg-zinc-800 transition-colors disabled:opacity-50`,children:`Reject`})]}),u&&(0,x.jsx)(`p`,{className:`text-xs text-red-400`,children:u})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar`,children:[n?(0,x.jsx)(`p`,{className:`text-xs text-zinc-500`,children:`Loading steps...`}):t.length>0?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Steps`}),d(t,(e,t)=>(0,x.jsx)(w,{step:e,index:t},t))]}):o.length>0?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Planned Steps`}),d(o,(e,t)=>(0,x.jsxs)(`div`,{className:`flex items-start gap-3 px-4 py-3 border border-zinc-800/60 rounded-lg mb-2`,children:[(0,x.jsx)(`span`,{className:`text-xs font-mono text-zinc-500 w-5 pt-0.5`,children:t+1}),(0,x.jsx)(`span`,{className:`font-mono text-xs text-[#00ffaa] w-36 flex-shrink-0`,children:e.tool}),(0,x.jsx)(S,{risk:e.risk_level}),(0,x.jsx)(`span`,{className:`flex-1 text-xs text-zinc-300`,children:e.description})]},t))]}):e.status===`completed`||e.status===`failed`?(0,x.jsxs)(`div`,{className:`bg-zinc-900/40 border border-zinc-800/60 rounded-lg p-4 text-xs text-zinc-500`,children:[(0,x.jsx)(`p`,{className:`font-semibold text-zinc-400 mb-1`,children:`No execution steps recorded.`}),e.error?(0,x.jsxs)(`p`,{className:`text-red-400 mb-2`,children:[`Error: `,e.error]}):null,(0,x.jsx)(`p`,{children:`Possible causes:`}),(0,x.jsxs)(`ul`,{className:`list-disc list-inside mt-1 space-y-0.5`,children:[(0,x.jsxs)(`li`,{children:[(0,x.jsx)(`code`,{className:`text-zinc-400`,children:`OPENAI_API_KEY`}),` is not set — the planner requires an LLM to generate execution steps.`]}),(0,x.jsx)(`li`,{children:`The planner backend returned an empty plan. Check server logs for detail.`})]})]}):null,e.result&&(0,x.jsxs)(`div`,{className:`mt-4`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Result`}),(0,x.jsx)(`pre`,{className:`text-[10px] text-zinc-300 bg-zinc-900/50 border border-zinc-800/60 rounded-lg p-3 overflow-x-auto whitespace-pre-wrap`,children:JSON.stringify(e.result,null,2)})]}),!r&&(e.status===`completed`||e.status===`failed`)&&(0,x.jsx)(T,{runId:e.run_id})]})]})},D=({trust:e,onUpdate:t,tools:n})=>{let[r,i]=(0,y.useState)(e?.auto_execute_low||!1),[a,o]=(0,y.useState)(e?.auto_execute_medium||!1),[s,c]=(0,y.useState)(e?.allowed_auto_grant_tools||[]),[l,u]=(0,y.useState)(!1);(0,y.useEffect)(()=>{i(e?.auto_execute_low||!1),o(e?.auto_execute_medium||!1),c(e?.allowed_auto_grant_tools||[])},[e]);let f=(n||[]).filter(e=>e.risk===`low`||e.risk===`medium`).sort((e,t)=>e.name.localeCompare(t.name)),p=(n||[]).filter(e=>e.name===`genesis.message`),m=e=>{c(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].sort())};return(0,x.jsxs)(`div`,{className:`bg-zinc-900/50 border border-zinc-800/60 rounded-xl p-4`,children:[(0,x.jsx)(`h4`,{className:`text-xs font-bold text-zinc-300 uppercase tracking-wider mb-3`,children:`Trust Settings`}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 mb-4`,children:`High-risk plans always require approval regardless of these settings.`}),(0,x.jsxs)(`div`,{className:`space-y-3`,children:[(0,x.jsxs)(`label`,{className:`flex items-center justify-between`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-300`,children:`Auto-execute low-risk plans`}),(0,x.jsx)(`input`,{type:`checkbox`,checked:r,onChange:e=>i(e.target.checked),className:`accent-[#00ffaa]`})]}),(0,x.jsxs)(`label`,{className:`flex items-center justify-between`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-300`,children:`Auto-execute medium-risk plans`}),(0,x.jsx)(`input`,{type:`checkbox`,checked:a,onChange:e=>o(e.target.checked),className:`accent-yellow-400`})]})]}),(0,x.jsxs)(`div`,{className:`mt-5`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 uppercase tracking-wider mb-2`,children:`Tool-Level Auto-Grant Policy`}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[d(f,e=>(0,x.jsxs)(`label`,{className:`flex items-center justify-between gap-3 border border-zinc-800/60 rounded-lg px-3 py-2`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-200 font-mono`,children:e.name}),(0,x.jsx)(S,{risk:e.risk})]}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 mt-1`,children:e.description})]}),(0,x.jsx)(`input`,{type:`checkbox`,checked:s.includes(e.name),onChange:()=>m(e.name),className:`accent-[#00ffaa]`})]},e.name)),d(p,e=>(0,x.jsxs)(`label`,{className:`flex items-center justify-between gap-3 border border-red-500/20 rounded-lg px-3 py-2 opacity-80`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-xs text-zinc-200 font-mono`,children:e.name}),(0,x.jsx)(S,{risk:e.risk})]}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500 mt-1`,children:`Locked. High-risk tools cannot be auto-granted.`})]}),(0,x.jsx)(`input`,{type:`checkbox`,checked:!1,disabled:!0,className:`accent-red-500`})]},e.name))]})]}),(0,x.jsx)(`button`,{onClick:async()=>{u(!0);try{await t({auto_execute_low:r,auto_execute_medium:a,allowed_auto_grant_tools:s})}finally{u(!1)}},disabled:l,className:`mt-4 w-full py-2 text-[10px] font-bold uppercase tracking-wider rounded bg-zinc-800 text-zinc-300 hover:bg-zinc-700 transition-colors disabled:opacity-50`,children:l?`Saving...`:`Save Settings`})]})},O=[{title:`Summarize recent activity`,goal:`Summarize what you remember about recent activity and surface any open items`,description:`A safe first run — the agent reads its memory and reports back.`},{title:`Create a follow-up task`,goal:`Create a follow-up task to review the current system configuration`,description:`Creates a trackable item in your workflow using the task tool.`},{title:`Recall a topic from memory`,goal:`Recall everything you know about the current project goals and status`,description:`Tests the memory system — works best after prior runs have built up context.`},{title:`Audit available tools`,goal:`List the tools available to you and describe what each one can do`,description:`Read-only inspection — safe to approve with no side effects.`}],k=({onSelect:e})=>(0,x.jsxs)(`div`,{className:`mb-5`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-600 uppercase tracking-wider mb-3`,children:`Start with a template`}),(0,x.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:O.map(t=>(0,x.jsxs)(`button`,{onClick:()=>e(t.goal),className:`text-left border border-zinc-800/60 hover:border-zinc-700 rounded-xl px-4 py-3 bg-zinc-950/40 hover:bg-zinc-900/60 transition-all group`,children:[(0,x.jsx)(`p`,{className:`text-xs font-semibold text-zinc-300 group-hover:text-zinc-100 mb-1`,children:t.title}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-600 leading-relaxed`,children:t.description})]},t.title))})]}),A={"memory.recall":`border-blue-500/30 text-blue-300 hover:bg-blue-500/10`,"task.create":`border-[#00ffaa]/30 text-[#00ffaa] hover:bg-[#00ffaa]/10`,"arm.analyze":`border-purple-500/30 text-purple-300 hover:bg-purple-500/10`,"genesis.message":`border-yellow-500/30 text-yellow-300 hover:bg-yellow-500/10`},ce=({suggestions:e,onSelect:t})=>!e||e.length===0?null:(0,x.jsxs)(`div`,{className:`mb-4`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-600 uppercase tracking-wider mb-2`,children:`Suggested Actions`}),(0,x.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:d(e,(e,n)=>(0,x.jsxs)(`button`,{title:e.reason,onClick:()=>t(e.suggested_goal),className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full border text-[11px] font-medium transition-colors ${A[e.tool]||`border-zinc-700 text-zinc-400 hover:bg-zinc-800`}`,children:[(0,x.jsx)(`span`,{className:`font-mono text-[10px] opacity-70`,children:e.tool}),(0,x.jsx)(`span`,{className:`truncate max-w-[180px]`,children:e.suggested_goal})]},n))})]});function le(e){return{PLAN_CREATED:`#6366f1`,APPROVED:`#10b981`,REJECTED:`#ef4444`,EXECUTION_STARTED:`#3b82f6`,COMPLETED:`#059669`,EXECUTION_FAILED:`#dc2626`,CAPABILITY_DENIED:`#ea580c`,RECOVERED:`#f59e0b`,REPLAY_CREATED:`#8b5cf6`,STEP_EXECUTED:`#64748b`,STEP_FAILED:`#b91c1c`}[e]||`#6b7280`}function j(){let{isAdmin:t}=s();if(!t)return(0,x.jsx)(f,{});let{system:i}=c(),a=i?.runtime?.boot_mode===`runtime-only`,[l,p]=(0,y.useState)(``),[m,h]=(0,y.useState)(!1),[b,C]=(0,y.useState)(i?.runs||[]),[w,T]=(0,y.useState)(null),[O,A]=(0,y.useState)([]),[j,M]=(0,y.useState)(!1),[N,ue]=(0,y.useState)([]),[de,P]=(0,y.useState)(null),[fe,pe]=(0,y.useState)([]),[F,I]=(0,y.useState)(`runs`),[L,R]=(0,y.useState)(null),[z,B]=(0,y.useState)([]),[V,H]=(0,y.useState)(`steps`),[U,W]=(0,y.useState)(!0),{toast:me,showToast:G,clearToast:he}=o(),K=(0,y.useCallback)(async()=>{W(!0);try{let e=await g()||[];return C(e),e}catch(e){return console.error(`Failed to load runs`,e),G(e?.message||`Failed to load agent runs.`),[]}finally{W(!1)}},[]),q=(0,y.useCallback)(async()=>{try{let e=await oe();ue(e||[])}catch(e){console.error(`Failed to load tools`,e),G(e?.message||`Failed to load agent tools.`)}},[]),J=(0,y.useCallback)(async()=>{try{let e=await ee();P(e)}catch(e){console.error(`Failed to load trust`,e),G(e?.message||`Failed to load trust settings.`)}},[]),Y=(0,y.useCallback)(async()=>{try{let e=await re();pe(e||[])}catch{}},[]);(0,y.useEffect)(()=>{K(),q(),J(),Y()},[K,q,J,Y]),(0,y.useEffect)(()=>{(i?.runs||[]).length>0&&C(i.runs)},[i]);let ge=async e=>{if(T(e),A([]),B([]),H(`steps`),e.status===`completed`||e.status===`failed`){M(!0);try{let t=await _(e.run_id);A(t||[])}catch(e){console.error(`Failed to load steps`,e),G(e?.message||`Failed to load run steps.`)}finally{M(!1)}}ae(e.run_id).then(e=>B(e?.events||[])).catch(()=>B([]))},X=async()=>{if(l.trim()){h(!0),R(null);try{await ne({goal:l.trim()}),p(``);let e=(await K())[0]||null;T(e),A([]),B([]),H(`steps`)}catch(e){R(e.message||`Failed to create agent run`)}finally{h(!1)}}},Z=async e=>{try{let t=await v(e);if(await K(),T(t),t.status===`completed`||t.status===`failed`){let t=await _(e);A(t||[])}}catch(e){R(e.message||`Failed to approve run`)}},Q=async e=>{try{let t=await te(e);await K(),w?.run_id===e&&T(t)}catch(e){R(e.message||`Failed to reject run`)}},_e=async e=>{let t=await ie(e);P(t)},$=b.filter(e=>e.status===`pending_approval`);return(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{className:`mb-6`,children:[(0,x.jsx)(`h2`,{className:`text-xl font-black text-zinc-100 tracking-tight`,children:`Agent Console`}),(0,x.jsx)(`p`,{className:`text-xs text-zinc-500 mt-1`,children:a?`Runtime-only mode. The baseline agent stays available with memory tools and approval controls.`:`Type a goal. A.I.N.D.Y. generates a plan and executes it with your approval.`})]}),(0,x.jsx)(ce,{suggestions:fe,onSelect:e=>p(e)}),b.length===0&&!l&&!U&&(0,x.jsx)(k,{onSelect:e=>p(e)}),(0,x.jsxs)(`div`,{className:`mb-6`,children:[(0,x.jsxs)(`div`,{className:`flex gap-3`,children:[(0,x.jsx)(`input`,{type:`text`,value:l,onChange:e=>p(e.target.value),onKeyDown:e=>e.key===`Enter`&&!m&&X(),placeholder:`e.g. Find leads in the AI consulting space and create a follow-up task`,className:`flex-1 bg-zinc-900 border border-zinc-800 rounded-xl px-4 py-3 text-sm text-zinc-100 placeholder-zinc-600 focus:outline-none focus:border-[#00ffaa]/50 transition-colors`}),(0,x.jsx)(`button`,{onClick:X,disabled:m||!l.trim(),className:`px-6 py-3 bg-[#00ffaa] text-black font-bold text-sm rounded-xl hover:bg-[#00ffaa]/80 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0`,children:m?`Planning...`:`Run Agent`})]}),L&&(0,x.jsx)(`p`,{className:`text-xs text-red-400 mt-2`,children:L})]}),$.length>0&&(0,x.jsx)(`div`,{className:`mb-4 bg-yellow-500/5 border border-yellow-500/20 rounded-xl px-4 py-3`,children:(0,x.jsxs)(`p`,{className:`text-xs text-yellow-300 font-medium`,children:[$.length,` plan`,$.length>1?`s`:``,` awaiting your approval`]})}),(0,x.jsxs)(`div`,{className:`flex gap-6 flex-1 min-h-0`,children:[(0,x.jsxs)(`div`,{className:`w-80 flex flex-col flex-shrink-0`,children:[(0,x.jsx)(`div`,{className:`flex gap-1 mb-4 bg-zinc-900/50 rounded-lg p-1`,children:d([`runs`,`tools`,`trust`],e=>(0,x.jsx)(`button`,{onClick:()=>I(e),className:`flex-1 py-1.5 text-[10px] font-bold uppercase tracking-wider rounded transition-colors ${F===e?`bg-zinc-800 text-zinc-100`:`text-zinc-500 hover:text-zinc-300`}`,children:e===`runs`?(0,x.jsxs)(`span`,{children:[`Runs${b.length?` (${b.length})`:``}`,$.length>0&&(0,x.jsx)(`span`,{style:{background:`#f59e0b`,color:`#fff`,borderRadius:`10px`,padding:`1px 6px`,fontSize:`10px`,marginLeft:`5px`,fontWeight:700},children:$.length})]}):e===`tools`?`Tools`:`Trust`},e))}),F===`runs`&&(0,x.jsx)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar space-y-2`,children:U?(0,x.jsx)(u,{label:`Loading agent runs...`}):b.length===0?(0,x.jsx)(r,{message:`No agent runs yet.`,hint:`Type a goal above or pick a starter template to begin.`}):d(b,e=>(0,x.jsx)(se,{run:e,onApprove:Z,onReject:Q,onSelect:ge,isSelected:w?.run_id===e.run_id},e.run_id))}),F===`tools`&&(0,x.jsx)(`div`,{className:`flex-1 overflow-y-auto custom-scrollbar space-y-2`,children:d(N,e=>(0,x.jsxs)(`div`,{className:`border border-zinc-800/60 rounded-lg px-4 py-3`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,x.jsx)(`span`,{className:`font-mono text-xs text-[#00ffaa]`,children:e.name}),(0,x.jsx)(S,{risk:e.risk})]}),(0,x.jsx)(`p`,{className:`text-[10px] text-zinc-500`,children:e.description})]},e.name))}),F===`trust`&&(0,x.jsx)(D,{trust:de,onUpdate:_e,tools:N})]}),(0,x.jsx)(`div`,{className:`flex-1 min-w-0 border border-zinc-800/60 rounded-xl p-5 overflow-y-auto custom-scrollbar`,children:w?(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{style:{display:`flex`,gap:`8px`,marginBottom:`12px`},children:[(0,x.jsx)(`button`,{onClick:()=>H(`steps`),style:{padding:`4px 12px`,borderRadius:`4px`,border:`1px solid #3f3f46`,background:V===`steps`?`#3b82f6`:`transparent`,color:V===`steps`?`#fff`:`#a1a1aa`,cursor:`pointer`,fontSize:`12px`,fontWeight:600},children:`Steps`}),(0,x.jsxs)(`button`,{onClick:()=>H(`timeline`),style:{padding:`4px 12px`,borderRadius:`4px`,border:`1px solid #3f3f46`,background:V===`timeline`?`#3b82f6`:`transparent`,color:V===`timeline`?`#fff`:`#a1a1aa`,cursor:`pointer`,fontSize:`12px`,fontWeight:600},children:[`Timeline `,z.length>0&&`(${z.length})`]})]}),V===`steps`&&(0,x.jsx)(e,{name:`Agent Steps`,children:(0,x.jsx)(E,{run:w,steps:O,loading:j,runtimeOnly:a,onApprove:Z,onReject:Q})}),V===`timeline`&&(0,x.jsx)(e,{name:`Agent Timeline`,children:(0,x.jsx)(`div`,{children:z.length===0?(0,x.jsx)(`p`,{style:{color:`#6b7280`,fontStyle:`italic`,fontSize:`12px`},children:`No events recorded (run may predate N+8).`}):(0,x.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`8px`},children:d(z,(e,t)=>(0,x.jsxs)(`div`,{style:{padding:`8px 12px`,borderRadius:`6px`,border:`1px solid #27272a`,background:`#09090b`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,x.jsx)(`span`,{style:{background:le(e.event_type),color:`#fff`,borderRadius:`4px`,padding:`2px 8px`,fontSize:`11px`,fontWeight:600,letterSpacing:`0.05em`},children:e.event_type}),(0,x.jsx)(`span`,{style:{color:`#6b7280`,fontSize:`12px`},children:e.occurred_at?new Date(e.occurred_at).toLocaleTimeString():``})]}),e.payload&&Object.keys(e.payload).length>0&&(0,x.jsx)(`div`,{style:{marginTop:`4px`,fontSize:`12px`,color:`#a1a1aa`},children:e.event_type===`STEP_EXECUTED`||e.event_type===`STEP_FAILED`?(0,x.jsxs)(`span`,{children:[`Step `,e.payload.step_index,` · `,e.payload.tool_name,e.payload.execution_ms?` · ${e.payload.execution_ms}ms`:``,e.payload.error_message?` · ${e.payload.error_message}`:``]}):(0,x.jsx)(`span`,{children:d(Object.entries(e.payload).filter(([,e])=>e!=null&&e!==``),([e,t])=>`${e}: ${t}`).join(` · `)})})]},e.id||t))})})})]}):(0,x.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,x.jsx)(`p`,{className:`text-xs text-zinc-600`,children:`Select a run to view its plan`})})})]}),(0,x.jsx)(n,{toast:me,onDismiss:he})]})}export{j as default};
@@ -1 +1 @@
1
- import{i as e,s as t,u as n,v as r,w as i,x as a}from"./index-BwoJwt06.js";import"./AdminApiErrorBoundary-d8luTzjH.js";import{d as o,l as s,u as c}from"./agent-CXZNs9Ea.js";var l=i(a(),1),u=r(),d={arm:{icon:`🧠`,color:`#a78bfa`,label:`ARM`},genesis:{icon:`🌐`,color:`#60a5fa`,label:`Genesis`},nodus:{icon:`⚡`,color:`#ffd93d`,label:`Nodus`},leadgen:{icon:`🎯`,color:`#34d399`,label:`LeadGen`},sylva:{icon:`🔮`,color:`#94a3b8`,label:`SYLVA`}};function f(e){return d[(e||``).toLowerCase().replace(/[^a-z]/g,``)]||{icon:`🤖`,color:`#71717a`,label:e||`Unknown`}}function p({label:e,value:t,color:n}){return(0,u.jsxs)(`div`,{style:{background:`#09090b`,borderRadius:6,padding:`6px 12px`,textAlign:`center`,minWidth:70},children:[(0,u.jsx)(`div`,{style:{color:n||`#e4e4e7`,fontWeight:700,fontSize:18},children:t??0}),(0,u.jsx)(`div`,{style:{color:`#52525b`,fontSize:10,marginTop:1},children:e})]})}function m({agent:e,onClose:n}){let[r,i]=(0,l.useState)(``),[a,s]=(0,l.useState)(null),[c,d]=(0,l.useState)(!1),[p,m]=(0,l.useState)(null),h=f(e.memory_namespace||e.name);async function g(){if(r.trim()){d(!0),m(null),s(null);try{let t=await o(e.memory_namespace||e.name,r.trim(),5);s(t)}catch(e){m(e.message)}finally{d(!1)}}}let _=a?.memories||a?.results||[];return(0,u.jsxs)(`div`,{style:{background:`#18181b`,border:`1px solid ${h.color}44`,borderRadius:10,padding:20,marginTop:8},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:14},children:[(0,u.jsxs)(`span`,{style:{color:h.color,fontSize:13,fontWeight:600},children:[`Recall from `,e.name]}),(0,u.jsx)(`button`,{onClick:n,style:{background:`transparent`,border:`none`,color:`#52525b`,fontSize:16,cursor:`pointer`},children:`✕`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:12},children:[(0,u.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),onKeyDown:e=>e.key===`Enter`&&g(),placeholder:`Search this agent's memory…`,style:{flex:1,background:`#09090b`,border:`1px solid #27272a`,borderRadius:6,color:`#e4e4e7`,fontSize:13,padding:`8px 12px`,outline:`none`}}),(0,u.jsx)(`button`,{onClick:g,disabled:c||!r.trim(),style:{background:h.color,border:`none`,borderRadius:6,color:`#09090b`,fontWeight:700,fontSize:13,padding:`8px 16px`,cursor:c||!r.trim()?`not-allowed`:`pointer`,opacity:c||!r.trim()?.6:1},children:c?`…`:`Recall`})]}),p&&(0,u.jsx)(`div`,{style:{color:`#fca5a5`,fontSize:12,padding:`6px 0`},children:p}),_.length>0&&(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:t(_,(e,t)=>(0,u.jsxs)(`div`,{style:{background:`#09090b`,borderRadius:8,padding:`10px 14px`,borderLeft:`3px solid ${h.color}`},children:[(0,u.jsx)(`div`,{style:{color:`#e4e4e7`,fontSize:13,lineHeight:1.5,marginBottom:4},children:e.content||e.text||JSON.stringify(e)}),e.resonance_score!=null&&(0,u.jsxs)(`div`,{style:{color:`#52525b`,fontSize:11},children:[`resonance `,(e.resonance_score*100).toFixed(0),`%`]})]},e.id||t))}),a&&_.length===0&&(0,u.jsx)(`div`,{style:{color:`#52525b`,fontSize:12,textAlign:`center`,padding:`10px 0`},children:`No memories found for that query.`})]})}function h({agent:e,isSelected:t,onSelect:n}){let r=f(e.memory_namespace||e.name),i=e.memory_stats||{};return(0,u.jsxs)(`div`,{style:{background:`#18181b`,border:`1px solid ${t?r.color:`#27272a`}`,borderRadius:10,padding:20,cursor:`pointer`,transition:`border-color 0.2s`},onClick:n,children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`flex-start`,justifyContent:`space-between`,marginBottom:14},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,u.jsx)(`span`,{style:{fontSize:28},children:r.icon}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{style:{color:r.color,fontWeight:700,fontSize:15},children:e.name}),e.memory_namespace&&(0,u.jsxs)(`div`,{style:{color:`#52525b`,fontSize:11},children:[`ns: `,e.memory_namespace]})]})]}),(0,u.jsx)(`span`,{style:{fontSize:10,padding:`2px 8px`,borderRadius:99,fontWeight:600,background:e.is_active?`#00ffaa22`:`#27272a`,color:e.is_active?`#00ffaa`:`#52525b`,border:`1px solid ${e.is_active?`#00ffaa44`:`#3f3f46`}`},children:e.is_active?`Active`:`Inactive`})]}),e.description&&(0,u.jsx)(`div`,{style:{color:`#71717a`,fontSize:12,lineHeight:1.5,marginBottom:14},children:e.description}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,u.jsx)(p,{label:`Total`,value:i.total_nodes,color:r.color}),(0,u.jsx)(p,{label:`Shared`,value:i.shared_nodes,color:`#00ffaa`}),(0,u.jsx)(p,{label:`Private`,value:i.private_nodes,color:`#71717a`})]}),(0,u.jsx)(`div`,{style:{marginTop:14},children:(0,u.jsx)(`button`,{onClick:e=>{e.stopPropagation(),n()},style:{background:`transparent`,border:`1px solid ${r.color}`,borderRadius:6,color:r.color,fontSize:12,padding:`5px 14px`,cursor:`pointer`},children:t?`▲ Close Recall`:`▼ Recall Memory`})})]})}function g({agents:e}){let[n,r]=(0,l.useState)(``),[i,a]=(0,l.useState)([]),[o,s]=(0,l.useState)(null),[d,p]=(0,l.useState)(!1),[m,h]=(0,l.useState)(null),g=t(e,e=>e.memory_namespace||e.name).filter(Boolean);function _(e){a(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}async function v(){if(n.trim()){p(!0),h(null),s(null);try{let e=i.length>0?i:null,t=await c(n.trim(),e,10);s(t)}catch(e){h(e.message)}finally{p(!1)}}}let y=o?.merged_results||o?.results||o?.memories||[];return(0,u.jsxs)(`div`,{style:{background:`#18181b`,border:`1px solid #27272a`,borderRadius:10,padding:20,marginBottom:24},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:16},children:[(0,u.jsx)(`span`,{style:{fontSize:18},children:`🌐`}),(0,u.jsx)(`span`,{style:{color:`#e4e4e7`,fontWeight:700,fontSize:15},children:`Federated Recall`}),(0,u.jsx)(`span`,{style:{color:`#52525b`,fontSize:12,marginLeft:4},children:`— search across all agents at once`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6,marginBottom:12},children:[t(g,e=>{let t=f(e),n=i.includes(e);return(0,u.jsxs)(`button`,{onClick:()=>_(e),style:{background:n?`${t.color}22`:`transparent`,border:`1px solid ${n?t.color:`#3f3f46`}`,borderRadius:6,color:n?t.color:`#71717a`,fontSize:12,padding:`3px 10px`,cursor:`pointer`},children:[t.icon,` `,e]},e)}),i.length>0&&(0,u.jsx)(`button`,{onClick:()=>a([]),style:{background:`transparent`,border:`1px solid #3f3f46`,borderRadius:6,color:`#52525b`,fontSize:11,padding:`3px 10px`,cursor:`pointer`},children:`Clear filters`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:12},children:[(0,u.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),onKeyDown:e=>e.key===`Enter`&&v(),placeholder:i.length>0?`Search ${i.join(`, `)}…`:`Search all agents…`,style:{flex:1,background:`#09090b`,border:`1px solid #27272a`,borderRadius:6,color:`#e4e4e7`,fontSize:13,padding:`8px 12px`,outline:`none`}}),(0,u.jsx)(`button`,{onClick:v,disabled:d||!n.trim(),style:{background:`#60a5fa`,border:`none`,borderRadius:6,color:`#09090b`,fontWeight:700,fontSize:13,padding:`8px 16px`,cursor:d||!n.trim()?`not-allowed`:`pointer`,opacity:d||!n.trim()?.6:1},children:d?`…`:`Search`})]}),m&&(0,u.jsx)(`div`,{style:{color:`#fca5a5`,fontSize:12,marginBottom:8},children:m}),y.length>0&&(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:t(y,(e,t)=>{let n=f(e.source_agent||``);return(0,u.jsxs)(`div`,{style:{background:`#09090b`,borderRadius:8,padding:`10px 14px`,borderLeft:`3px solid ${n.color}`,display:`flex`,gap:10},children:[(0,u.jsx)(`span`,{style:{fontSize:16,marginTop:1},children:n.icon}),(0,u.jsxs)(`div`,{style:{flex:1},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,marginBottom:4},children:[e.source_agent&&(0,u.jsx)(`span`,{style:{fontSize:10,color:n.color,background:`${n.color}22`,borderRadius:4,padding:`1px 6px`},children:e.source_agent}),e.node_type&&(0,u.jsx)(`span`,{style:{color:`#3f3f46`,fontSize:11},children:e.node_type}),e.resonance_score!=null&&(0,u.jsxs)(`span`,{style:{color:`#52525b`,fontSize:11,marginLeft:`auto`},children:[(e.resonance_score*100).toFixed(0),`%`]})]}),(0,u.jsx)(`div`,{style:{color:`#e4e4e7`,fontSize:13,lineHeight:1.5},children:e.content||e.text||JSON.stringify(e)})]})]},e.id||t)})}),o&&y.length===0&&(0,u.jsx)(`div`,{style:{color:`#52525b`,fontSize:12,textAlign:`center`,padding:`10px 0`},children:`No results across any agent.`})]})}function _(){let{isAdmin:r}=e(),[i,a]=(0,l.useState)([]),[o,c]=(0,l.useState)(!0),[d,f]=(0,l.useState)(null),[p,_]=(0,l.useState)(null),v=(0,l.useCallback)(async()=>{c(!0),f(null);try{let e=await s();a(e.agents||e||[])}catch(e){f(e.message)}finally{c(!1)}},[]);if((0,l.useEffect)(()=>{r&&v()},[r,v]),!r)return(0,u.jsx)(n,{});let y={minHeight:`100vh`,background:`#09090b`,color:`#e4e4e7`,fontFamily:`'Inter', 'Segoe UI', sans-serif`,padding:`28px 32px`,maxWidth:860,margin:`0 auto`};if(o)return(0,u.jsx)(`div`,{style:y,children:(0,u.jsxs)(`div`,{style:{textAlign:`center`,padding:80,color:`#52525b`},children:[(0,u.jsx)(`div`,{style:{fontSize:32,marginBottom:12},children:`🤖`}),(0,u.jsx)(`div`,{children:`Loading agent registry…`})]})});if(d)return(0,u.jsx)(`div`,{style:y,children:(0,u.jsxs)(`div`,{style:{background:`#7f1d1d`,borderRadius:10,padding:`20px 24px`,color:`#fca5a5`,display:`flex`,alignItems:`center`,gap:12},children:[(0,u.jsx)(`span`,{style:{fontSize:20},children:`⚠️`}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{style:{fontWeight:700,marginBottom:4},children:`Failed to load agents`}),(0,u.jsx)(`div`,{style:{fontSize:13},children:d})]}),(0,u.jsx)(`button`,{onClick:v,style:{marginLeft:`auto`,background:`transparent`,border:`1px solid #fca5a5`,borderRadius:6,color:`#fca5a5`,fontSize:12,padding:`6px 14px`,cursor:`pointer`},children:`Retry`})]})});let b=i.filter(e=>e.is_active),x=i.filter(e=>!e.is_active);return(0,u.jsxs)(`div`,{style:y,children:[(0,u.jsxs)(`div`,{style:{marginBottom:28},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,marginBottom:8},children:[(0,u.jsx)(`span`,{style:{fontSize:28},children:`🤖`}),(0,u.jsx)(`h1`,{style:{margin:0,fontSize:24,fontWeight:800,color:`#e4e4e7`},children:`Agent Federation`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,u.jsx)(`span`,{style:{color:`#52525b`,fontSize:13},children:`All registered agents and their shared memory pools`}),(0,u.jsxs)(`span`,{style:{background:`#00ffaa22`,border:`1px solid #00ffaa44`,borderRadius:6,color:`#00ffaa`,fontSize:12,padding:`2px 10px`},children:[b.length,` active`]}),x.length>0&&(0,u.jsxs)(`span`,{style:{background:`#27272a`,border:`1px solid #3f3f46`,borderRadius:6,color:`#52525b`,fontSize:12,padding:`2px 10px`},children:[x.length,` inactive`]})]})]}),i.length>0&&(0,u.jsx)(g,{agents:i}),i.length===0&&(0,u.jsxs)(`div`,{style:{textAlign:`center`,padding:`60px 0`,color:`#52525b`},children:[(0,u.jsx)(`div`,{style:{fontSize:40,marginBottom:12},children:`🤖`}),(0,u.jsx)(`div`,{style:{fontSize:16,fontWeight:600,marginBottom:8,color:`#71717a`},children:`No agents registered`}),(0,u.jsxs)(`div`,{style:{fontSize:13,maxWidth:420,margin:`0 auto`,lineHeight:1.6},children:[`Register a named agent via`,` `,(0,u.jsx)(`code`,{style:{background:`#18181b`,borderRadius:4,padding:`1px 6px`,color:`#00ffaa`,fontSize:12},children:`POST /platform/admin/agents/register`}),` `,`with a name, memory_namespace, and agent_type. System agents (ARM, Genesis, Nodus, SYLVA) are seeded automatically on startup. See`,` `,(0,u.jsx)(`code`,{style:{background:`#18181b`,borderRadius:4,padding:`1px 6px`,color:`#71717a`,fontSize:12},children:`docs/runtime/APP_AGENT_REGISTRATION.md`}),` `,`for the full registration model.`]})]}),b.length>0&&(0,u.jsxs)(`div`,{style:{marginBottom:24},children:[(0,u.jsx)(`div`,{style:{color:`#71717a`,fontSize:12,fontWeight:600,marginBottom:12,textTransform:`uppercase`,letterSpacing:1},children:`Active`}),(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12},children:t(b,e=>{let t=e.memory_namespace||e.name,n=p===t;return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(h,{agent:e,isSelected:n,onSelect:()=>_(n?null:t)}),n&&(0,u.jsx)(m,{agent:e,onClose:()=>_(null)})]},e.id||t)})})]}),x.length>0&&(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{style:{color:`#3f3f46`,fontSize:12,fontWeight:600,marginBottom:12,textTransform:`uppercase`,letterSpacing:1},children:`Inactive`}),(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12},children:t(x,e=>{let t=e.memory_namespace||e.name,n=p===t;return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(h,{agent:e,isSelected:n,onSelect:()=>_(n?null:t)}),n&&(0,u.jsx)(m,{agent:e,onClose:()=>_(null)})]},e.id||t)})})]})]})}export{_ as default};
1
+ import{i as e,s as t,u as n,v as r,w as i,x as a}from"./index-sA0UH8NZ.js";import"./AdminApiErrorBoundary-DBMFMi8W.js";import{d as o,l as s,u as c}from"./agent-DsJodoAt.js";var l=i(a(),1),u=r(),d={arm:{icon:`🧠`,color:`#a78bfa`,label:`ARM`},genesis:{icon:`🌐`,color:`#60a5fa`,label:`Genesis`},nodus:{icon:`⚡`,color:`#ffd93d`,label:`Nodus`},leadgen:{icon:`🎯`,color:`#34d399`,label:`LeadGen`},sylva:{icon:`🔮`,color:`#94a3b8`,label:`SYLVA`}};function f(e){return d[(e||``).toLowerCase().replace(/[^a-z]/g,``)]||{icon:`🤖`,color:`#71717a`,label:e||`Unknown`}}function p({label:e,value:t,color:n}){return(0,u.jsxs)(`div`,{style:{background:`#09090b`,borderRadius:6,padding:`6px 12px`,textAlign:`center`,minWidth:70},children:[(0,u.jsx)(`div`,{style:{color:n||`#e4e4e7`,fontWeight:700,fontSize:18},children:t??0}),(0,u.jsx)(`div`,{style:{color:`#52525b`,fontSize:10,marginTop:1},children:e})]})}function m({agent:e,onClose:n}){let[r,i]=(0,l.useState)(``),[a,s]=(0,l.useState)(null),[c,d]=(0,l.useState)(!1),[p,m]=(0,l.useState)(null),h=f(e.memory_namespace||e.name);async function g(){if(r.trim()){d(!0),m(null),s(null);try{let t=await o(e.memory_namespace||e.name,r.trim(),5);s(t)}catch(e){m(e.message)}finally{d(!1)}}}let _=a?.memories||a?.results||[];return(0,u.jsxs)(`div`,{style:{background:`#18181b`,border:`1px solid ${h.color}44`,borderRadius:10,padding:20,marginTop:8},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:14},children:[(0,u.jsxs)(`span`,{style:{color:h.color,fontSize:13,fontWeight:600},children:[`Recall from `,e.name]}),(0,u.jsx)(`button`,{onClick:n,style:{background:`transparent`,border:`none`,color:`#52525b`,fontSize:16,cursor:`pointer`},children:`✕`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:12},children:[(0,u.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),onKeyDown:e=>e.key===`Enter`&&g(),placeholder:`Search this agent's memory…`,style:{flex:1,background:`#09090b`,border:`1px solid #27272a`,borderRadius:6,color:`#e4e4e7`,fontSize:13,padding:`8px 12px`,outline:`none`}}),(0,u.jsx)(`button`,{onClick:g,disabled:c||!r.trim(),style:{background:h.color,border:`none`,borderRadius:6,color:`#09090b`,fontWeight:700,fontSize:13,padding:`8px 16px`,cursor:c||!r.trim()?`not-allowed`:`pointer`,opacity:c||!r.trim()?.6:1},children:c?`…`:`Recall`})]}),p&&(0,u.jsx)(`div`,{style:{color:`#fca5a5`,fontSize:12,padding:`6px 0`},children:p}),_.length>0&&(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:t(_,(e,t)=>(0,u.jsxs)(`div`,{style:{background:`#09090b`,borderRadius:8,padding:`10px 14px`,borderLeft:`3px solid ${h.color}`},children:[(0,u.jsx)(`div`,{style:{color:`#e4e4e7`,fontSize:13,lineHeight:1.5,marginBottom:4},children:e.content||e.text||JSON.stringify(e)}),e.resonance_score!=null&&(0,u.jsxs)(`div`,{style:{color:`#52525b`,fontSize:11},children:[`resonance `,(e.resonance_score*100).toFixed(0),`%`]})]},e.id||t))}),a&&_.length===0&&(0,u.jsx)(`div`,{style:{color:`#52525b`,fontSize:12,textAlign:`center`,padding:`10px 0`},children:`No memories found for that query.`})]})}function h({agent:e,isSelected:t,onSelect:n}){let r=f(e.memory_namespace||e.name),i=e.memory_stats||{};return(0,u.jsxs)(`div`,{style:{background:`#18181b`,border:`1px solid ${t?r.color:`#27272a`}`,borderRadius:10,padding:20,cursor:`pointer`,transition:`border-color 0.2s`},onClick:n,children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`flex-start`,justifyContent:`space-between`,marginBottom:14},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,u.jsx)(`span`,{style:{fontSize:28},children:r.icon}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{style:{color:r.color,fontWeight:700,fontSize:15},children:e.name}),e.memory_namespace&&(0,u.jsxs)(`div`,{style:{color:`#52525b`,fontSize:11},children:[`ns: `,e.memory_namespace]})]})]}),(0,u.jsx)(`span`,{style:{fontSize:10,padding:`2px 8px`,borderRadius:99,fontWeight:600,background:e.is_active?`#00ffaa22`:`#27272a`,color:e.is_active?`#00ffaa`:`#52525b`,border:`1px solid ${e.is_active?`#00ffaa44`:`#3f3f46`}`},children:e.is_active?`Active`:`Inactive`})]}),e.description&&(0,u.jsx)(`div`,{style:{color:`#71717a`,fontSize:12,lineHeight:1.5,marginBottom:14},children:e.description}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`},children:[(0,u.jsx)(p,{label:`Total`,value:i.total_nodes,color:r.color}),(0,u.jsx)(p,{label:`Shared`,value:i.shared_nodes,color:`#00ffaa`}),(0,u.jsx)(p,{label:`Private`,value:i.private_nodes,color:`#71717a`})]}),(0,u.jsx)(`div`,{style:{marginTop:14},children:(0,u.jsx)(`button`,{onClick:e=>{e.stopPropagation(),n()},style:{background:`transparent`,border:`1px solid ${r.color}`,borderRadius:6,color:r.color,fontSize:12,padding:`5px 14px`,cursor:`pointer`},children:t?`▲ Close Recall`:`▼ Recall Memory`})})]})}function g({agents:e}){let[n,r]=(0,l.useState)(``),[i,a]=(0,l.useState)([]),[o,s]=(0,l.useState)(null),[d,p]=(0,l.useState)(!1),[m,h]=(0,l.useState)(null),g=t(e,e=>e.memory_namespace||e.name).filter(Boolean);function _(e){a(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}async function v(){if(n.trim()){p(!0),h(null),s(null);try{let e=i.length>0?i:null,t=await c(n.trim(),e,10);s(t)}catch(e){h(e.message)}finally{p(!1)}}}let y=o?.merged_results||o?.results||o?.memories||[];return(0,u.jsxs)(`div`,{style:{background:`#18181b`,border:`1px solid #27272a`,borderRadius:10,padding:20,marginBottom:24},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:16},children:[(0,u.jsx)(`span`,{style:{fontSize:18},children:`🌐`}),(0,u.jsx)(`span`,{style:{color:`#e4e4e7`,fontWeight:700,fontSize:15},children:`Federated Recall`}),(0,u.jsx)(`span`,{style:{color:`#52525b`,fontSize:12,marginLeft:4},children:`— search across all agents at once`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6,marginBottom:12},children:[t(g,e=>{let t=f(e),n=i.includes(e);return(0,u.jsxs)(`button`,{onClick:()=>_(e),style:{background:n?`${t.color}22`:`transparent`,border:`1px solid ${n?t.color:`#3f3f46`}`,borderRadius:6,color:n?t.color:`#71717a`,fontSize:12,padding:`3px 10px`,cursor:`pointer`},children:[t.icon,` `,e]},e)}),i.length>0&&(0,u.jsx)(`button`,{onClick:()=>a([]),style:{background:`transparent`,border:`1px solid #3f3f46`,borderRadius:6,color:`#52525b`,fontSize:11,padding:`3px 10px`,cursor:`pointer`},children:`Clear filters`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:12},children:[(0,u.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),onKeyDown:e=>e.key===`Enter`&&v(),placeholder:i.length>0?`Search ${i.join(`, `)}…`:`Search all agents…`,style:{flex:1,background:`#09090b`,border:`1px solid #27272a`,borderRadius:6,color:`#e4e4e7`,fontSize:13,padding:`8px 12px`,outline:`none`}}),(0,u.jsx)(`button`,{onClick:v,disabled:d||!n.trim(),style:{background:`#60a5fa`,border:`none`,borderRadius:6,color:`#09090b`,fontWeight:700,fontSize:13,padding:`8px 16px`,cursor:d||!n.trim()?`not-allowed`:`pointer`,opacity:d||!n.trim()?.6:1},children:d?`…`:`Search`})]}),m&&(0,u.jsx)(`div`,{style:{color:`#fca5a5`,fontSize:12,marginBottom:8},children:m}),y.length>0&&(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:t(y,(e,t)=>{let n=f(e.source_agent||``);return(0,u.jsxs)(`div`,{style:{background:`#09090b`,borderRadius:8,padding:`10px 14px`,borderLeft:`3px solid ${n.color}`,display:`flex`,gap:10},children:[(0,u.jsx)(`span`,{style:{fontSize:16,marginTop:1},children:n.icon}),(0,u.jsxs)(`div`,{style:{flex:1},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,marginBottom:4},children:[e.source_agent&&(0,u.jsx)(`span`,{style:{fontSize:10,color:n.color,background:`${n.color}22`,borderRadius:4,padding:`1px 6px`},children:e.source_agent}),e.node_type&&(0,u.jsx)(`span`,{style:{color:`#3f3f46`,fontSize:11},children:e.node_type}),e.resonance_score!=null&&(0,u.jsxs)(`span`,{style:{color:`#52525b`,fontSize:11,marginLeft:`auto`},children:[(e.resonance_score*100).toFixed(0),`%`]})]}),(0,u.jsx)(`div`,{style:{color:`#e4e4e7`,fontSize:13,lineHeight:1.5},children:e.content||e.text||JSON.stringify(e)})]})]},e.id||t)})}),o&&y.length===0&&(0,u.jsx)(`div`,{style:{color:`#52525b`,fontSize:12,textAlign:`center`,padding:`10px 0`},children:`No results across any agent.`})]})}function _(){let{isAdmin:r}=e(),[i,a]=(0,l.useState)([]),[o,c]=(0,l.useState)(!0),[d,f]=(0,l.useState)(null),[p,_]=(0,l.useState)(null),v=(0,l.useCallback)(async()=>{c(!0),f(null);try{let e=await s();a(e.agents||e||[])}catch(e){f(e.message)}finally{c(!1)}},[]);if((0,l.useEffect)(()=>{r&&v()},[r,v]),!r)return(0,u.jsx)(n,{});let y={minHeight:`100vh`,background:`#09090b`,color:`#e4e4e7`,fontFamily:`'Inter', 'Segoe UI', sans-serif`,padding:`28px 32px`,maxWidth:860,margin:`0 auto`};if(o)return(0,u.jsx)(`div`,{style:y,children:(0,u.jsxs)(`div`,{style:{textAlign:`center`,padding:80,color:`#52525b`},children:[(0,u.jsx)(`div`,{style:{fontSize:32,marginBottom:12},children:`🤖`}),(0,u.jsx)(`div`,{children:`Loading agent registry…`})]})});if(d)return(0,u.jsx)(`div`,{style:y,children:(0,u.jsxs)(`div`,{style:{background:`#7f1d1d`,borderRadius:10,padding:`20px 24px`,color:`#fca5a5`,display:`flex`,alignItems:`center`,gap:12},children:[(0,u.jsx)(`span`,{style:{fontSize:20},children:`⚠️`}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{style:{fontWeight:700,marginBottom:4},children:`Failed to load agents`}),(0,u.jsx)(`div`,{style:{fontSize:13},children:d})]}),(0,u.jsx)(`button`,{onClick:v,style:{marginLeft:`auto`,background:`transparent`,border:`1px solid #fca5a5`,borderRadius:6,color:`#fca5a5`,fontSize:12,padding:`6px 14px`,cursor:`pointer`},children:`Retry`})]})});let b=i.filter(e=>e.is_active),x=i.filter(e=>!e.is_active);return(0,u.jsxs)(`div`,{style:y,children:[(0,u.jsxs)(`div`,{style:{marginBottom:28},children:[(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,marginBottom:8},children:[(0,u.jsx)(`span`,{style:{fontSize:28},children:`🤖`}),(0,u.jsx)(`h1`,{style:{margin:0,fontSize:24,fontWeight:800,color:`#e4e4e7`},children:`Agent Federation`})]}),(0,u.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,u.jsx)(`span`,{style:{color:`#52525b`,fontSize:13},children:`All registered agents and their shared memory pools`}),(0,u.jsxs)(`span`,{style:{background:`#00ffaa22`,border:`1px solid #00ffaa44`,borderRadius:6,color:`#00ffaa`,fontSize:12,padding:`2px 10px`},children:[b.length,` active`]}),x.length>0&&(0,u.jsxs)(`span`,{style:{background:`#27272a`,border:`1px solid #3f3f46`,borderRadius:6,color:`#52525b`,fontSize:12,padding:`2px 10px`},children:[x.length,` inactive`]})]})]}),i.length>0&&(0,u.jsx)(g,{agents:i}),i.length===0&&(0,u.jsxs)(`div`,{style:{textAlign:`center`,padding:`60px 0`,color:`#52525b`},children:[(0,u.jsx)(`div`,{style:{fontSize:40,marginBottom:12},children:`🤖`}),(0,u.jsx)(`div`,{style:{fontSize:16,fontWeight:600,marginBottom:8,color:`#71717a`},children:`No agents registered`}),(0,u.jsxs)(`div`,{style:{fontSize:13,maxWidth:420,margin:`0 auto`,lineHeight:1.6},children:[`Register a named agent via`,` `,(0,u.jsx)(`code`,{style:{background:`#18181b`,borderRadius:4,padding:`1px 6px`,color:`#00ffaa`,fontSize:12},children:`POST /platform/admin/agents/register`}),` `,`with a name, memory_namespace, and agent_type. System agents (ARM, Genesis, Nodus, SYLVA) are seeded automatically on startup. See`,` `,(0,u.jsx)(`code`,{style:{background:`#18181b`,borderRadius:4,padding:`1px 6px`,color:`#71717a`,fontSize:12},children:`docs/runtime/APP_AGENT_REGISTRATION.md`}),` `,`for the full registration model.`]})]}),b.length>0&&(0,u.jsxs)(`div`,{style:{marginBottom:24},children:[(0,u.jsx)(`div`,{style:{color:`#71717a`,fontSize:12,fontWeight:600,marginBottom:12,textTransform:`uppercase`,letterSpacing:1},children:`Active`}),(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12},children:t(b,e=>{let t=e.memory_namespace||e.name,n=p===t;return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(h,{agent:e,isSelected:n,onSelect:()=>_(n?null:t)}),n&&(0,u.jsx)(m,{agent:e,onClose:()=>_(null)})]},e.id||t)})})]}),x.length>0&&(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{style:{color:`#3f3f46`,fontSize:12,fontWeight:600,marginBottom:12,textTransform:`uppercase`,letterSpacing:1},children:`Inactive`}),(0,u.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12},children:t(x,e=>{let t=e.memory_namespace||e.name,n=p===t;return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(h,{agent:e,isSelected:n,onSelect:()=>_(n?null:t)}),n&&(0,u.jsx)(m,{agent:e,onClose:()=>_(null)})]},e.id||t)})})]})]})}export{_ as default};