claude-smart 0.2.45 → 0.2.46

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 (322) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/README.md +34 -5
  3. package/bin/claude-smart.js +295 -5
  4. package/package.json +22 -3
  5. package/plugin/.claude-plugin/plugin.json +4 -2
  6. package/plugin/.codex-plugin/plugin.json +1 -1
  7. package/plugin/README.md +22 -2
  8. package/plugin/commands/clear-all.md +1 -0
  9. package/plugin/commands/dashboard.md +1 -0
  10. package/plugin/commands/learn.md +1 -0
  11. package/plugin/commands/restart.md +1 -0
  12. package/plugin/commands/show.md +1 -0
  13. package/plugin/dashboard/app/configure/env/page.tsx +40 -14
  14. package/plugin/dashboard/app/configure/server/page.tsx +51 -1
  15. package/plugin/dashboard/app/preferences/[id]/page.tsx +8 -8
  16. package/plugin/dashboard/app/skills/project/[id]/page.tsx +7 -3
  17. package/plugin/dashboard/app/skills/shared/[id]/page.tsx +10 -3
  18. package/plugin/dashboard/lib/claude-settings-file.ts +20 -10
  19. package/plugin/dashboard/lib/reflexio-client.ts +16 -0
  20. package/plugin/dashboard/lib/status.ts +10 -3
  21. package/plugin/dashboard/lib/types.ts +18 -6
  22. package/plugin/hooks/codex-hooks.json +0 -1
  23. package/plugin/opencode/assistant-buffer.ts +108 -0
  24. package/plugin/opencode/dist/assistant-buffer.js +96 -0
  25. package/plugin/opencode/dist/internal.js +12 -0
  26. package/plugin/opencode/dist/payload.js +85 -0
  27. package/plugin/opencode/dist/server.mjs +158 -0
  28. package/plugin/opencode/internal.ts +18 -0
  29. package/plugin/opencode/package.json +3 -0
  30. package/plugin/opencode/payload.ts +90 -0
  31. package/plugin/opencode/server.mts +174 -0
  32. package/plugin/opencode/tsconfig.json +13 -0
  33. package/plugin/pyproject.toml +20 -3
  34. package/plugin/scripts/_lib.sh +5 -1
  35. package/plugin/scripts/backend-service.sh +22 -2
  36. package/plugin/scripts/ensure-plugin-root.sh +4 -4
  37. package/plugin/scripts/hook_entry.sh +1 -1
  38. package/plugin/scripts/opencode-claude-compat +4 -0
  39. package/plugin/scripts/opencode-claude-compat.cmd +3 -0
  40. package/plugin/scripts/opencode-claude-compat.js +225 -0
  41. package/plugin/scripts/smart-install.sh +10 -8
  42. package/plugin/src/README.md +1 -1
  43. package/plugin/src/claude_smart/cli.py +304 -6
  44. package/plugin/src/claude_smart/env_config.py +12 -4
  45. package/plugin/src/claude_smart/events/session_start.py +26 -7
  46. package/plugin/src/claude_smart/events/stop.py +1 -1
  47. package/plugin/src/claude_smart/ids.py +1 -1
  48. package/plugin/src/claude_smart/reflexio_adapter.py +5 -5
  49. package/plugin/src/claude_smart/runtime.py +7 -1
  50. package/plugin/uv.lock +1 -1
  51. package/plugin/vendor/reflexio/.env.example +54 -30
  52. package/plugin/vendor/reflexio/README.md +14 -8
  53. package/plugin/vendor/reflexio/pyproject.toml +13 -1
  54. package/plugin/vendor/reflexio/reflexio/README.md +1 -0
  55. package/plugin/vendor/reflexio/reflexio/cli/README.md +9 -7
  56. package/plugin/vendor/reflexio/reflexio/cli/__main__.py +10 -1
  57. package/plugin/vendor/reflexio/reflexio/cli/bootstrap_config.py +22 -5
  58. package/plugin/vendor/reflexio/reflexio/cli/commands/interactions.py +34 -4
  59. package/plugin/vendor/reflexio/reflexio/cli/commands/profiles.py +12 -7
  60. package/plugin/vendor/reflexio/reflexio/cli/commands/services.py +13 -6
  61. package/plugin/vendor/reflexio/reflexio/cli/commands/setup_cmd.py +210 -50
  62. package/plugin/vendor/reflexio/reflexio/cli/commands/shortcuts.py +15 -2
  63. package/plugin/vendor/reflexio/reflexio/cli/env_loader.py +292 -22
  64. package/plugin/vendor/reflexio/reflexio/cli/log_format.py +29 -4
  65. package/plugin/vendor/reflexio/reflexio/cli/run_services.py +17 -8
  66. package/plugin/vendor/reflexio/reflexio/cli/stop_services.py +13 -10
  67. package/plugin/vendor/reflexio/reflexio/client/client.py +57 -13
  68. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/README.md +135 -257
  69. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/npm/openclaw-smart/bin/openclaw-smart.js +13 -0
  70. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/npm/openclaw-smart/package.json +15 -0
  71. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/README.md +38 -0
  72. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/index.ts +151 -110
  73. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/openclaw.plugin.json +20 -10
  74. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/package.json +28 -6
  75. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/pyproject.toml +42 -0
  76. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/_lib.sh +371 -0
  77. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/backend-log-runner.sh +33 -0
  78. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/backend-service.sh +271 -0
  79. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/cli.sh +68 -0
  80. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/dashboard-open.sh +15 -0
  81. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/ensure-plugin-root.sh +84 -0
  82. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/hook_entry.sh +106 -0
  83. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/npm-cli.js +219 -0
  84. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/scripts/smart-install.sh +269 -0
  85. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/skills/clear-all/SKILL.md +8 -0
  86. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/skills/dashboard/SKILL.md +8 -0
  87. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/skills/learn/SKILL.md +10 -0
  88. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/skills/reflexio/SKILL.md +15 -44
  89. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/skills/restart/SKILL.md +6 -0
  90. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/skills/show/SKILL.md +8 -0
  91. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/cli.py +634 -0
  92. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/context_format.py +224 -0
  93. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/context_inject.py +79 -0
  94. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/events/__init__.py +0 -0
  95. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/events/after_tool_call.py +160 -0
  96. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/events/agent_end.py +187 -0
  97. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/events/before_prompt_build.py +69 -0
  98. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/events/before_tool_call.py +30 -0
  99. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/events/session_end.py +36 -0
  100. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/events/session_start.py +130 -0
  101. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/hook.py +131 -0
  102. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/ids.py +94 -0
  103. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/internal_call.py +75 -0
  104. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/oc_cite.py +196 -0
  105. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/optimizer_assistant.py +272 -0
  106. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/publish.py +96 -0
  107. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/query_compose.py +66 -0
  108. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/reflexio_adapter.py +336 -0
  109. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/runtime.py +47 -0
  110. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/stall_banner.py +61 -0
  111. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/src/openclaw_smart/state.py +323 -0
  112. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/__init__.py +0 -0
  113. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/integration/__init__.py +0 -0
  114. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/integration/test_e2e_session_loop.py +190 -0
  115. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/integration/test_publish_to_local_reflexio_integration.py +112 -0
  116. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/integration/test_recursion_guard_integration.py +86 -0
  117. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/integration/test_search_inject_integration.py +144 -0
  118. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_cli.py +184 -0
  119. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_events_after_tool_call.py +142 -0
  120. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_events_agent_end.py +233 -0
  121. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_events_before_prompt_build.py +116 -0
  122. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_events_before_tool_call.py +35 -0
  123. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_events_session_end.py +47 -0
  124. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_events_session_start.py +109 -0
  125. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_hook_dispatch.py +117 -0
  126. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_ids.py +41 -0
  127. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_internal_call.py +50 -0
  128. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_oc_cite.py +88 -0
  129. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_publish.py +48 -0
  130. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_query_compose.py +48 -0
  131. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_reflexio_adapter.py +188 -0
  132. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_runtime.py +41 -0
  133. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests/test_state.py +235 -0
  134. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests-ts/__mocks__/plugin-entry-stub.ts +6 -0
  135. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests-ts/test_npm_cli.test.ts +56 -0
  136. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tests-ts/test_shim_dispatch.test.ts +171 -0
  137. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/tsconfig.build.json +18 -0
  138. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/{tsconfig.json → plugin/tsconfig.json} +2 -2
  139. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/uv.lock +3835 -0
  140. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/vitest.config.ts +18 -0
  141. package/plugin/vendor/reflexio/reflexio/lib/_agent_playbook.py +238 -10
  142. package/plugin/vendor/reflexio/reflexio/lib/_config.py +11 -4
  143. package/plugin/vendor/reflexio/reflexio/lib/_generation.py +16 -5
  144. package/plugin/vendor/reflexio/reflexio/lib/_lineage_parity_readers.py +187 -0
  145. package/plugin/vendor/reflexio/reflexio/lib/_profiles.py +198 -6
  146. package/plugin/vendor/reflexio/reflexio/lib/_reflection.py +1 -1
  147. package/plugin/vendor/reflexio/reflexio/lib/_search.py +29 -20
  148. package/plugin/vendor/reflexio/reflexio/lib/_user_playbook.py +2 -1
  149. package/plugin/vendor/reflexio/reflexio/models/api_schema/domain/entities.py +127 -38
  150. package/plugin/vendor/reflexio/reflexio/models/api_schema/domain/enums.py +4 -0
  151. package/plugin/vendor/reflexio/reflexio/models/api_schema/eval_overview_schema.py +64 -41
  152. package/plugin/vendor/reflexio/reflexio/models/api_schema/internal_schema.py +19 -0
  153. package/plugin/vendor/reflexio/reflexio/models/api_schema/pending_tool_call_schema.py +12 -5
  154. package/plugin/vendor/reflexio/reflexio/models/api_schema/retriever_schema.py +52 -0
  155. package/plugin/vendor/reflexio/reflexio/models/api_schema/ui/converters.py +5 -1
  156. package/plugin/vendor/reflexio/reflexio/models/api_schema/ui/entities.py +5 -1
  157. package/plugin/vendor/reflexio/reflexio/models/config_schema.py +88 -7
  158. package/plugin/vendor/reflexio/reflexio/models/structured_output.py +148 -0
  159. package/plugin/vendor/reflexio/reflexio/server/OVERVIEW.md +3 -3
  160. package/plugin/vendor/reflexio/reflexio/server/README.md +45 -32
  161. package/plugin/vendor/reflexio/reflexio/server/__init__.py +29 -5
  162. package/plugin/vendor/reflexio/reflexio/server/__main__.py +2 -2
  163. package/plugin/vendor/reflexio/reflexio/server/_auth.py +65 -2
  164. package/plugin/vendor/reflexio/reflexio/server/api.py +734 -85
  165. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/precondition_checks.py +7 -0
  166. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/request_context.py +3 -1
  167. package/plugin/vendor/reflexio/reflexio/server/billing_meter.py +173 -0
  168. package/plugin/vendor/reflexio/reflexio/server/billing_signals.py +64 -0
  169. package/plugin/vendor/reflexio/reflexio/server/cache/reflexio_cache.py +46 -16
  170. package/plugin/vendor/reflexio/reflexio/server/env_utils.py +65 -0
  171. package/plugin/vendor/reflexio/reflexio/server/llm/embedding_service.py +19 -4
  172. package/plugin/vendor/reflexio/reflexio/server/llm/litellm_client.py +264 -77
  173. package/plugin/vendor/reflexio/reflexio/server/llm/llm_utils.py +69 -7
  174. package/plugin/vendor/reflexio/reflexio/server/llm/providers/embedding_service_provider.py +75 -16
  175. package/plugin/vendor/reflexio/reflexio/server/llm/providers/openclaw_provider.py +280 -0
  176. package/plugin/vendor/reflexio/reflexio/server/llm/token_accounting.py +48 -0
  177. package/plugin/vendor/reflexio/reflexio/server/llm/tools.py +107 -17
  178. package/plugin/vendor/reflexio/reflexio/server/operation_limiter.py +360 -4
  179. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.6.0.prompt.md +1 -1
  180. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.7.0.prompt.md +85 -0
  181. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_aggregation/v2.2.0.prompt.md +1 -1
  182. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_aggregation/v2.3.0.prompt.md +253 -0
  183. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.3.2.prompt.md +1 -1
  184. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.3.3.prompt.md +74 -0
  185. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.2.3.prompt.md +1 -1
  186. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.3.0.prompt.md +266 -0
  187. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.4.0.prompt.md +266 -0
  188. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v3.3.0.prompt.md +1 -1
  189. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v3.4.0.prompt.md +137 -0
  190. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main/v1.2.0.prompt.md +1 -1
  191. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main/v1.3.0.prompt.md +34 -0
  192. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_update_instruction_start/v1.0.0.prompt.md +5 -12
  193. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_update_instruction_start/v1.1.0.prompt.md +5 -12
  194. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_update_instruction_start/v1.2.0.prompt.md +155 -0
  195. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/tagging/v1.0.0.prompt.md +23 -0
  196. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_manager.py +89 -32
  197. package/plugin/vendor/reflexio/reflexio/server/services/README.md +26 -11
  198. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/README.md +22 -0
  199. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/__init__.py +1 -0
  200. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/agent_success_evaluation_constants.py +4 -2
  201. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/agent_success_evaluation_utils.py +1 -0
  202. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/components/__init__.py +7 -0
  203. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/{agent_success_evaluator.py → components/evaluator.py} +3 -16
  204. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/regen_jobs.py +28 -72
  205. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/{group_evaluation_runner.py → runner.py} +12 -10
  206. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/{delayed_group_evaluator.py → scheduler.py} +10 -2
  207. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/{agent_success_evaluation_service.py → service.py} +36 -1
  208. package/plugin/vendor/reflexio/reflexio/server/services/base_generation_service.py +160 -0
  209. package/plugin/vendor/reflexio/reflexio/server/services/configurator/base_configurator.py +5 -0
  210. package/plugin/vendor/reflexio/reflexio/server/services/deduplication_utils.py +1 -1
  211. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/README.md +9 -0
  212. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/components/__init__.py +0 -0
  213. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/{rule_attribution.py → components/rule_attribution.py} +10 -9
  214. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/eval_sampler.py +15 -24
  215. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/service.py +238 -164
  216. package/plugin/vendor/reflexio/reflexio/server/services/extraction/README.md +31 -0
  217. package/plugin/vendor/reflexio/reflexio/server/services/extraction/outcome.py +13 -3
  218. package/plugin/vendor/reflexio/reflexio/server/services/extraction/pending_tool_call_dispatch.py +3 -2
  219. package/plugin/vendor/reflexio/reflexio/server/services/extraction/resumable_agent.py +32 -118
  220. package/plugin/vendor/reflexio/reflexio/server/services/extraction/resume_worker.py +39 -16
  221. package/plugin/vendor/reflexio/reflexio/server/services/generation_service.py +105 -23
  222. package/plugin/vendor/reflexio/reflexio/server/services/lineage/__init__.py +0 -0
  223. package/plugin/vendor/reflexio/reflexio/server/services/lineage/gc_scheduler.py +193 -0
  224. package/plugin/vendor/reflexio/reflexio/server/services/lineage/resolve.py +98 -0
  225. package/plugin/vendor/reflexio/reflexio/server/services/operation_state_utils.py +26 -0
  226. package/plugin/vendor/reflexio/reflexio/server/services/playbook/README.md +11 -12
  227. package/plugin/vendor/reflexio/reflexio/server/services/playbook/components/__init__.py +5 -0
  228. package/plugin/vendor/reflexio/reflexio/server/services/playbook/{playbook_aggregator.py → components/aggregator.py} +316 -178
  229. package/plugin/vendor/reflexio/reflexio/server/services/playbook/{playbook_consolidator.py → components/consolidator.py} +168 -62
  230. package/plugin/vendor/reflexio/reflexio/server/services/playbook/{playbook_extractor.py → components/extractor.py} +5 -1
  231. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_edit_apply.py +74 -0
  232. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_service_utils.py +33 -3
  233. package/plugin/vendor/reflexio/reflexio/server/services/playbook/{playbook_generation_service.py → service.py} +121 -19
  234. package/plugin/vendor/reflexio/reflexio/server/services/playbook/user_detail_stripping.py +84 -0
  235. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/README.md +10 -0
  236. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/models.py +2 -1
  237. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/optimizer.py +178 -30
  238. package/plugin/vendor/reflexio/reflexio/server/services/pre_retrieval/README.md +9 -0
  239. package/plugin/vendor/reflexio/reflexio/server/services/profile/components/__init__.py +17 -0
  240. package/plugin/vendor/reflexio/reflexio/server/services/profile/{profile_deduplicator.py → components/consolidator.py} +7 -6
  241. package/plugin/vendor/reflexio/reflexio/server/services/profile/{profile_extractor.py → components/extractor.py} +30 -22
  242. package/plugin/vendor/reflexio/reflexio/server/services/profile/profile_generation_service_utils.py +6 -13
  243. package/plugin/vendor/reflexio/reflexio/server/services/profile/{profile_generation_service.py → service.py} +32 -50
  244. package/plugin/vendor/reflexio/reflexio/server/services/reflection/__init__.py +4 -8
  245. package/plugin/vendor/reflexio/reflexio/server/services/reflection/components/__init__.py +7 -0
  246. package/plugin/vendor/reflexio/reflexio/server/services/reflection/reflection_service_utils.py +12 -1
  247. package/plugin/vendor/reflexio/reflexio/server/services/reflection/{reflection_service.py → service.py} +36 -16
  248. package/plugin/vendor/reflexio/reflexio/server/services/retrieval/relevance_floor.py +83 -6
  249. package/plugin/vendor/reflexio/reflexio/server/services/service_utils.py +36 -1
  250. package/plugin/vendor/reflexio/reflexio/server/services/shadow_comparison/README.md +8 -0
  251. package/plugin/vendor/reflexio/reflexio/server/services/shadow_comparison/outcome.py +1 -2
  252. package/plugin/vendor/reflexio/reflexio/server/services/storage/error.py +27 -0
  253. package/plugin/vendor/reflexio/reflexio/server/services/storage/retention.py +9 -9
  254. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/__init__.py +2 -0
  255. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_agent_run.py +4 -1
  256. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_base.py +642 -197
  257. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_extras.py +61 -104
  258. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_lineage.py +628 -0
  259. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_operations.py +38 -6
  260. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_playbook.py +978 -184
  261. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_profiles.py +519 -128
  262. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_requests.py +77 -3
  263. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_shadow_verdicts.py +23 -9
  264. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_stall_state.py +5 -2
  265. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/__init__.py +131 -20
  266. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_agent_run.py +2 -8
  267. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_base.py +5 -0
  268. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_extras.py +36 -53
  269. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_lineage.py +215 -0
  270. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_operations.py +20 -0
  271. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_playbook.py +243 -7
  272. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_profiles.py +121 -1
  273. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_requests.py +60 -0
  274. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_retrieval_log.py +51 -0
  275. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_shadow_verdicts.py +17 -0
  276. package/plugin/vendor/reflexio/reflexio/server/services/tagging/README.md +8 -0
  277. package/plugin/vendor/reflexio/reflexio/server/services/tagging/__init__.py +1 -0
  278. package/plugin/vendor/reflexio/reflexio/server/services/tagging/service.py +200 -0
  279. package/plugin/vendor/reflexio/reflexio/server/services/tagging/tagging_scheduler.py +149 -0
  280. package/plugin/vendor/reflexio/reflexio/server/services/unified_search_service.py +229 -32
  281. package/plugin/vendor/reflexio/reflexio/server/site_var/README.md +2 -1
  282. package/plugin/vendor/reflexio/reflexio/server/site_var/feature_flags.py +120 -1
  283. package/plugin/vendor/reflexio/reflexio/server/site_var/site_var_sources/feature_flags.json +4 -0
  284. package/plugin/vendor/reflexio/reflexio/server/site_var/site_var_sources/search_settings.json +5 -0
  285. package/plugin/vendor/reflexio/reflexio/server/tracing.py +30 -0
  286. package/plugin/vendor/reflexio/reflexio/server/usage_metrics.py +18 -0
  287. package/plugin/vendor/reflexio/reflexio/test_support/llm_mock.py +61 -26
  288. package/plugin/vendor/reflexio/reflexio/test_support/llm_model_registry.py +41 -4
  289. package/scripts/setup-claude-smart.sh +8 -3
  290. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/TESTING.md +0 -517
  291. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/hook/handler.js +0 -473
  292. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/package-lock.json +0 -2156
  293. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/package.json +0 -18
  294. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/hook/handler.ts +0 -241
  295. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/hook/setup.ts +0 -140
  296. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/publish.ts +0 -113
  297. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/search.ts +0 -52
  298. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/server.ts +0 -103
  299. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/sqlite-buffer.ts +0 -156
  300. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/user-id.ts +0 -134
  301. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/rules/reflexio.md +0 -24
  302. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/publish_clawhub.sh +0 -278
  303. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/references/HOOK.md +0 -164
  304. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/scripts/install.sh +0 -36
  305. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/scripts/uninstall.sh +0 -35
  306. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/publish.test.ts +0 -27
  307. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/search.test.ts +0 -31
  308. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/server.test.ts +0 -42
  309. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/setup.test.ts +0 -49
  310. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/sqlite-buffer.test.ts +0 -91
  311. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/user-id.test.ts +0 -50
  312. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/vitest.config.ts +0 -13
  313. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/group_aggregation.py +0 -192
  314. package/plugin/vendor/reflexio/reflexio/server/services/extraction/invariants.py +0 -303
  315. package/plugin/vendor/reflexio/reflexio/server/services/extraction/plan.py +0 -138
  316. package/plugin/vendor/reflexio/reflexio/server/services/extraction/tools.py +0 -1125
  317. /package/plugin/vendor/reflexio/reflexio/integrations/{__init__.py → openclaw/plugin/src/openclaw_smart/__init__.py} +0 -0
  318. /package/plugin/vendor/reflexio/reflexio/integrations/openclaw/{types → plugin/types}/openclaw.d.ts +0 -0
  319. /package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/{distribution.py → components/distribution.py} +0 -0
  320. /package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/{hero_state.py → components/hero_state.py} +0 -0
  321. /package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/{shadow_aggregation.py → components/shadow_aggregation.py} +0 -0
  322. /package/plugin/vendor/reflexio/reflexio/server/services/reflection/{reflection_extractor.py → components/extractor.py} +0 -0
@@ -12,6 +12,7 @@ from urllib.parse import urljoin
12
12
 
13
13
  import aiohttp
14
14
  import requests
15
+ from pydantic import ConfigDict
15
16
 
16
17
  from reflexio.defaults import DEFAULT_AGENT_VERSION
17
18
  from reflexio.models.api_schema.retriever_schema import (
@@ -119,6 +120,10 @@ from reflexio.models.config_schema import Config
119
120
 
120
121
  from .cache import InMemoryCache
121
122
 
123
+
124
+ class _ClientConfigPayload(Config):
125
+ model_config = ConfigDict(extra="allow")
126
+
122
127
  T = TypeVar("T")
123
128
 
124
129
  logger = logging.getLogger(__name__)
@@ -150,12 +155,12 @@ class ReflexioClient:
150
155
 
151
156
  Args:
152
157
  api_key (str): API key for authentication. Falls back to REFLEXIO_API_KEY env var.
153
- url_endpoint (str): Base URL for the API. Falls back to REFLEXIO_API_URL env var,
158
+ url_endpoint (str): Base URL for the API. Falls back to REFLEXIO_URL env var,
154
159
  then to the default backend URL.
155
160
  timeout (int): Default request timeout in seconds (default 300)
156
161
  """
157
162
  self.base_url = (
158
- url_endpoint or os.environ.get("REFLEXIO_API_URL", "") or BACKEND_URL
163
+ url_endpoint or os.environ.get("REFLEXIO_URL", "") or BACKEND_URL
159
164
  )
160
165
  self.api_key = api_key or os.environ.get("REFLEXIO_API_KEY", "")
161
166
  self.timeout = timeout
@@ -391,8 +396,8 @@ class ReflexioClient:
391
396
  wait_for_response: bool = False,
392
397
  skip_aggregation: bool = False,
393
398
  force_extraction: bool = False,
399
+ evaluation_only: bool = False,
394
400
  override_learning_stall: bool = False,
395
- metadata: dict[str, Any] | None = None,
396
401
  ) -> PublishUserInteractionResponse:
397
402
  """Publish user interactions.
398
403
 
@@ -418,7 +423,7 @@ class ReflexioClient:
418
423
  interactions: List of interaction data.
419
424
  source: The source of the interaction.
420
425
  agent_version: The agent version.
421
- session_id: Optional session ID for grouping requests.
426
+ session_id: Required non-empty session ID for grouping requests.
422
427
  wait_for_response: If True, the **server** waits for
423
428
  extraction to complete before returning (longer HTTP
424
429
  call, response includes real profile/playbook counts).
@@ -430,15 +435,13 @@ class ReflexioClient:
430
435
  force_extraction: If True, bypass all extraction gates
431
436
  (stride_size, cheap pre-filter, LLM should_run) and
432
437
  always run extractors.
438
+ evaluation_only: If True, store the interaction for
439
+ session-level evaluation only and permanently exclude it
440
+ from profile/playbook extraction.
433
441
  override_learning_stall: If True, run extraction even when
434
442
  Reflexio has recorded a provider auth/billing stall. Keep
435
443
  this False for automatic hook publishes; use it only for an
436
444
  explicit retry after reauth or limit reset.
437
- metadata: Optional per-request annotations stamped by the
438
- customer. Mirrored onto the stored ``Request`` row so the
439
- eval pipeline can read them back. Conventional key:
440
- ``reflexio_retrieval_enabled`` (bool) for F2 group
441
- assignment. Values must be JSON-encodable.
442
445
 
443
446
  Returns:
444
447
  PublishUserInteractionResponse: Server response. In
@@ -448,6 +451,9 @@ class ReflexioClient:
448
451
  mode it includes request_id, storage routing, and
449
452
  deltas.
450
453
  """
454
+ if session_id is None or not session_id.strip():
455
+ raise ValueError("session_id is required and cannot be empty")
456
+
451
457
  interaction_data_list = [
452
458
  (
453
459
  InteractionData(**interaction_request)
@@ -464,8 +470,8 @@ class ReflexioClient:
464
470
  agent_version=agent_version,
465
471
  skip_aggregation=skip_aggregation,
466
472
  force_extraction=force_extraction,
473
+ evaluation_only=evaluation_only,
467
474
  override_learning_stall=override_learning_stall,
468
- metadata=metadata or {},
469
475
  )
470
476
  result = self._publish_interaction_sync(
471
477
  request, wait_for_response=wait_for_response
@@ -534,6 +540,7 @@ class ReflexioClient:
534
540
  source: str | None = None,
535
541
  custom_feature: str | None = None,
536
542
  extractor_name: str | None = None,
543
+ tags: list[str] | None = None,
537
544
  threshold: float | None = None,
538
545
  enable_reformulation: bool | None = None,
539
546
  search_mode: SearchMode | None = None,
@@ -551,6 +558,7 @@ class ReflexioClient:
551
558
  source (Optional[str]): Filter by source
552
559
  custom_feature (Optional[str]): Filter by custom feature
553
560
  extractor_name (Optional[str]): Deprecated compatibility field. Accepted but ignored.
561
+ tags (Optional[list[str]]): Match profiles having any of these tags.
554
562
  threshold (Optional[float]): Similarity threshold (default: 0.7)
555
563
  enable_reformulation (Optional[bool]): Enable LLM query reformulation (default: False)
556
564
 
@@ -569,6 +577,7 @@ class ReflexioClient:
569
577
  source=source,
570
578
  custom_feature=custom_feature,
571
579
  extractor_name=extractor_name,
580
+ tags=tags,
572
581
  threshold=threshold,
573
582
  enable_reformulation=enable_reformulation,
574
583
  search_mode=search_mode,
@@ -592,6 +601,7 @@ class ReflexioClient:
592
601
  source: str | None = None,
593
602
  custom_feature: str | None = None,
594
603
  extractor_name: str | None = None,
604
+ tags: list[str] | None = None,
595
605
  threshold: float | None = None,
596
606
  enable_reformulation: bool | None = None,
597
607
  search_mode: SearchMode | None = None,
@@ -614,6 +624,7 @@ class ReflexioClient:
614
624
  source=source,
615
625
  custom_feature=custom_feature,
616
626
  extractor_name=extractor_name,
627
+ tags=tags,
617
628
  threshold=threshold,
618
629
  enable_reformulation=enable_reformulation,
619
630
  search_mode=search_mode,
@@ -690,6 +701,7 @@ class ReflexioClient:
690
701
  start_time: datetime | None = None,
691
702
  end_time: datetime | None = None,
692
703
  status_filter: list[Status | None] | None = None,
704
+ tags: list[str] | None = None,
693
705
  top_k: int | None = None,
694
706
  threshold: float | None = None,
695
707
  enable_reformulation: bool | None = None,
@@ -706,6 +718,7 @@ class ReflexioClient:
706
718
  start_time (Optional[datetime]): Start time for created_at filter
707
719
  end_time (Optional[datetime]): End time for created_at filter
708
720
  status_filter (Optional[list[Optional[Status]]]): Filter by status (None for CURRENT, PENDING, ARCHIVED)
721
+ tags (Optional[list[str]]): Match playbooks having any of these tags.
709
722
  top_k (Optional[int]): Maximum number of results to return (default: 10)
710
723
  threshold (Optional[float]): Similarity threshold for vector search (default: 0.4)
711
724
  enable_reformulation (Optional[bool]): Enable LLM query reformulation (default: False)
@@ -723,6 +736,7 @@ class ReflexioClient:
723
736
  start_time=start_time,
724
737
  end_time=end_time,
725
738
  status_filter=status_filter,
739
+ tags=tags,
726
740
  top_k=top_k,
727
741
  threshold=threshold,
728
742
  enable_reformulation=enable_reformulation,
@@ -744,6 +758,7 @@ class ReflexioClient:
744
758
  end_time: datetime | None = None,
745
759
  status_filter: list[Status | None] | None = None,
746
760
  playbook_status_filter: PlaybookStatus | None = None,
761
+ tags: list[str] | None = None,
747
762
  top_k: int | None = None,
748
763
  threshold: float | None = None,
749
764
  enable_reformulation: bool | None = None,
@@ -760,6 +775,7 @@ class ReflexioClient:
760
775
  end_time (Optional[datetime]): End time for created_at filter
761
776
  status_filter (Optional[list[Optional[Status]]]): Filter by status (None for CURRENT, PENDING, ARCHIVED)
762
777
  playbook_status_filter (Optional[PlaybookStatus]): Filter by playbook status (PENDING, APPROVED, REJECTED)
778
+ tags (Optional[list[str]]): Match playbooks having any of these tags.
763
779
  top_k (Optional[int]): Maximum number of results to return (default: 10)
764
780
  threshold (Optional[float]): Similarity threshold for vector search (default: 0.4)
765
781
  enable_reformulation (Optional[bool]): Enable LLM query reformulation (default: False)
@@ -777,6 +793,7 @@ class ReflexioClient:
777
793
  end_time=end_time,
778
794
  status_filter=status_filter,
779
795
  playbook_status_filter=playbook_status_filter,
796
+ tags=tags,
780
797
  top_k=top_k,
781
798
  threshold=threshold,
782
799
  enable_reformulation=enable_reformulation,
@@ -1140,6 +1157,7 @@ class ReflexioClient:
1140
1157
  end_time: datetime | None = None,
1141
1158
  top_k: int | None = None,
1142
1159
  status_filter: list[Status | str | None] | None = None,
1160
+ tags: list[str] | None = None,
1143
1161
  ) -> GetProfilesViewResponse:
1144
1162
  """Get user profiles.
1145
1163
 
@@ -1151,6 +1169,7 @@ class ReflexioClient:
1151
1169
  end_time (Optional[datetime]): Filter by end time
1152
1170
  top_k (Optional[int]): Maximum number of results to return (default: 30)
1153
1171
  status_filter (Optional[list[Optional[Union[Status, str]]]]): Filter by profile status. Accepts Status enum or string values (e.g., "archived", "pending").
1172
+ tags (Optional[list[str]]): Match profiles having any of these tags.
1154
1173
 
1155
1174
  Returns:
1156
1175
  GetProfilesViewResponse: Response containing list of profiles
@@ -1175,6 +1194,7 @@ class ReflexioClient:
1175
1194
  end_time=end_time,
1176
1195
  top_k=top_k,
1177
1196
  status_filter=converted_status_filter,
1197
+ tags=tags,
1178
1198
  )
1179
1199
 
1180
1200
  # Check cache if not forcing refresh
@@ -1186,6 +1206,7 @@ class ReflexioClient:
1186
1206
  end_time=req.end_time,
1187
1207
  top_k=req.top_k,
1188
1208
  status_filter=req.status_filter,
1209
+ tags=req.tags,
1189
1210
  )
1190
1211
  if cached_result is not None:
1191
1212
  return cached_result
@@ -1207,6 +1228,7 @@ class ReflexioClient:
1207
1228
  end_time=req.end_time,
1208
1229
  top_k=req.top_k,
1209
1230
  status_filter=req.status_filter,
1231
+ tags=req.tags,
1210
1232
  )
1211
1233
 
1212
1234
  return result
@@ -1265,7 +1287,10 @@ class ReflexioClient:
1265
1287
  Returns:
1266
1288
  dict: Response containing success status and message
1267
1289
  """
1268
- config = self._convert_to_model(config, Config) # type: ignore[reportAssignmentType]
1290
+ config = self._convert_to_model( # type: ignore[reportAssignmentType]
1291
+ config,
1292
+ _ClientConfigPayload,
1293
+ )
1269
1294
  return self._make_request(
1270
1295
  "POST",
1271
1296
  "/api/set_config",
@@ -1287,7 +1312,7 @@ class ReflexioClient:
1287
1312
 
1288
1313
  Args:
1289
1314
  partial: Top-level fields to overlay on the existing config.
1290
- Unknown keys are dropped server-side by Pydantic.
1315
+ Unknown keys are rejected server-side.
1291
1316
 
1292
1317
  Returns:
1293
1318
  dict: ``{"success": bool, "msg": str}`` from the server.
@@ -1311,7 +1336,7 @@ class ReflexioClient:
1311
1336
  "GET",
1312
1337
  "/api/get_config",
1313
1338
  )
1314
- return Config(**response)
1339
+ return _ClientConfigPayload(**response)
1315
1340
 
1316
1341
  def invalidate_cache(self, org_id: str | None = None) -> dict:
1317
1342
  """Explicitly evict the server-side per-org Reflexio cache entry.
@@ -1353,6 +1378,7 @@ class ReflexioClient:
1353
1378
  playbook_name: str | None = None,
1354
1379
  agent_version: str | None = None,
1355
1380
  status_filter: list[Status | None] | None = None,
1381
+ tags: list[str] | None = None,
1356
1382
  ) -> GetUserPlaybooksViewResponse:
1357
1383
  """Get user playbooks.
1358
1384
 
@@ -1363,6 +1389,7 @@ class ReflexioClient:
1363
1389
  playbook_name (Optional[str]): Filter by playbook name
1364
1390
  agent_version (Optional[str]): Filter by agent version
1365
1391
  status_filter (Optional[list[Optional[Status]]]): Filter by status
1392
+ tags (Optional[list[str]]): Match playbooks having any of these tags.
1366
1393
 
1367
1394
  Returns:
1368
1395
  GetUserPlaybooksViewResponse: Response containing user playbooks
@@ -1375,6 +1402,7 @@ class ReflexioClient:
1375
1402
  playbook_name=playbook_name,
1376
1403
  agent_version=agent_version,
1377
1404
  status_filter=status_filter,
1405
+ tags=tags,
1378
1406
  )
1379
1407
  response = self._make_request(
1380
1408
  "POST",
@@ -1628,6 +1656,7 @@ class ReflexioClient:
1628
1656
  agent_version: str | None = None,
1629
1657
  status_filter: list[Status | None] | None = None,
1630
1658
  playbook_status_filter: PlaybookStatus | None = None,
1659
+ tags: list[str] | None = None,
1631
1660
  ) -> GetAgentPlaybooksViewResponse:
1632
1661
  """Get agent playbooks.
1633
1662
 
@@ -1639,6 +1668,7 @@ class ReflexioClient:
1639
1668
  agent_version (Optional[str]): Filter by agent version
1640
1669
  status_filter (Optional[list[Optional[Status]]]): Filter by status
1641
1670
  playbook_status_filter (Optional[PlaybookStatus]): Filter by playbook status (default: APPROVED)
1671
+ tags (Optional[list[str]]): Match playbooks having any of these tags.
1642
1672
 
1643
1673
  Returns:
1644
1674
  GetAgentPlaybooksViewResponse: Response containing agent playbooks
@@ -1651,6 +1681,7 @@ class ReflexioClient:
1651
1681
  agent_version=agent_version,
1652
1682
  status_filter=status_filter,
1653
1683
  playbook_status_filter=playbook_status_filter,
1684
+ tags=tags,
1654
1685
  )
1655
1686
 
1656
1687
  # Check cache if not forcing refresh
@@ -1659,8 +1690,10 @@ class ReflexioClient:
1659
1690
  "get_agent_playbooks",
1660
1691
  limit=req.limit,
1661
1692
  playbook_name=req.playbook_name,
1693
+ agent_version=req.agent_version,
1662
1694
  status_filter=req.status_filter,
1663
1695
  playbook_status_filter=req.playbook_status_filter,
1696
+ tags=req.tags,
1664
1697
  )
1665
1698
  if cached_result is not None:
1666
1699
  return cached_result
@@ -1679,8 +1712,10 @@ class ReflexioClient:
1679
1712
  result,
1680
1713
  limit=req.limit,
1681
1714
  playbook_name=req.playbook_name,
1715
+ agent_version=req.agent_version,
1682
1716
  status_filter=req.status_filter,
1683
1717
  playbook_status_filter=req.playbook_status_filter,
1718
+ tags=req.tags,
1684
1719
  )
1685
1720
 
1686
1721
  return result
@@ -2212,6 +2247,9 @@ class ReflexioClient:
2212
2247
  enable_agent_answer: bool | None = None,
2213
2248
  conversation_history: list[ConversationTurn] | list[dict] | None = None,
2214
2249
  search_mode: SearchMode | str | None = None,
2250
+ request_id: str | None = None,
2251
+ session_id: str | None = None,
2252
+ interaction_id: int | None = None,
2215
2253
  ) -> UnifiedSearchViewResponse:
2216
2254
  """Search across all entity types (profiles, agent playbooks, user playbooks).
2217
2255
 
@@ -2235,6 +2273,9 @@ class ReflexioClient:
2235
2273
  the configured search backend supports it (default: False).
2236
2274
  conversation_history (Optional[list[ConversationTurn] | list[dict]]): Prior conversation turns for context-aware query reformulation. Accepts ConversationTurn objects or dicts with "role" and "content" keys.
2237
2275
  search_mode (Optional[SearchMode | str]): Search mode to use. Accepts SearchMode enum or string value ("vector", "fts", "hybrid").
2276
+ request_id (Optional[str]): Caller correlation id for the search turn.
2277
+ session_id (Optional[str]): Caller session id for the search turn.
2278
+ interaction_id (Optional[int]): Caller interaction id for the search turn.
2238
2279
 
2239
2280
  Returns:
2240
2281
  UnifiedSearchViewResponse: Combined search results from all entity types
@@ -2254,6 +2295,9 @@ class ReflexioClient:
2254
2295
  enable_agent_answer=enable_agent_answer,
2255
2296
  conversation_history=conversation_history,
2256
2297
  search_mode=search_mode,
2298
+ request_id=request_id,
2299
+ session_id=session_id,
2300
+ interaction_id=interaction_id,
2257
2301
  )
2258
2302
  response = self._make_request("POST", "/api/search", json=req.model_dump())
2259
2303
  return UnifiedSearchViewResponse(**response)