claude-smart 0.2.42 → 0.2.44

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 (402) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/README.md +1 -1
  3. package/bin/claude-smart.js +2 -2
  4. package/package.json +9 -3
  5. package/plugin/.claude-plugin/plugin.json +9 -3
  6. package/plugin/.codex-plugin/plugin.json +1 -1
  7. package/plugin/README.md +23 -3
  8. package/plugin/pyproject.toml +3 -3
  9. package/plugin/scripts/_lib.sh +91 -0
  10. package/plugin/scripts/backend-service.sh +51 -4
  11. package/plugin/scripts/cli.sh +3 -1
  12. package/plugin/scripts/codex-hook.js +72 -4
  13. package/plugin/scripts/dashboard-build.sh +1 -0
  14. package/plugin/scripts/dashboard-service.sh +1 -0
  15. package/plugin/scripts/ensure-plugin-root.sh +1 -0
  16. package/plugin/scripts/hook_entry.sh +6 -3
  17. package/plugin/scripts/smart-install.sh +3 -2
  18. package/plugin/src/README.md +57 -0
  19. package/plugin/src/claude_smart/context_format.py +11 -12
  20. package/plugin/src/claude_smart/cs_cite.py +26 -12
  21. package/plugin/src/claude_smart/ids.py +13 -5
  22. package/plugin/uv.lock +126 -5
  23. package/plugin/vendor/reflexio/.env.example +62 -0
  24. package/plugin/vendor/reflexio/LICENSE +201 -0
  25. package/plugin/vendor/reflexio/README.md +338 -0
  26. package/plugin/vendor/reflexio/pyproject.toml +274 -0
  27. package/plugin/vendor/reflexio/reflexio/README.md +184 -0
  28. package/plugin/vendor/reflexio/reflexio/__init__.py +166 -0
  29. package/plugin/vendor/reflexio/reflexio/benchmarks/__init__.py +1 -0
  30. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/README.md +109 -0
  31. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/__init__.py +1 -0
  32. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/backends.py +175 -0
  33. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/bench.py +642 -0
  34. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/embed_cache.py +330 -0
  35. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/report.py +317 -0
  36. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/results/report.md +43 -0
  37. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/results/results.json +4478 -0
  38. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/scenarios.py +134 -0
  39. package/plugin/vendor/reflexio/reflexio/benchmarks/retrieval_latency/seed.py +255 -0
  40. package/plugin/vendor/reflexio/reflexio/cli/README.md +287 -0
  41. package/plugin/vendor/reflexio/reflexio/cli/__init__.py +0 -0
  42. package/plugin/vendor/reflexio/reflexio/cli/__main__.py +56 -0
  43. package/plugin/vendor/reflexio/reflexio/cli/_client.py +86 -0
  44. package/plugin/vendor/reflexio/reflexio/cli/app.py +127 -0
  45. package/plugin/vendor/reflexio/reflexio/cli/bootstrap_config.py +265 -0
  46. package/plugin/vendor/reflexio/reflexio/cli/codex_auth.py +503 -0
  47. package/plugin/vendor/reflexio/reflexio/cli/commands/__init__.py +0 -0
  48. package/plugin/vendor/reflexio/reflexio/cli/commands/admin_cmd.py +65 -0
  49. package/plugin/vendor/reflexio/reflexio/cli/commands/agent_playbooks.py +503 -0
  50. package/plugin/vendor/reflexio/reflexio/cli/commands/api.py +114 -0
  51. package/plugin/vendor/reflexio/reflexio/cli/commands/auth.py +109 -0
  52. package/plugin/vendor/reflexio/reflexio/cli/commands/config_cmd.py +511 -0
  53. package/plugin/vendor/reflexio/reflexio/cli/commands/doctor.py +127 -0
  54. package/plugin/vendor/reflexio/reflexio/cli/commands/embeddings.py +53 -0
  55. package/plugin/vendor/reflexio/reflexio/cli/commands/interactions.py +478 -0
  56. package/plugin/vendor/reflexio/reflexio/cli/commands/profiles.py +303 -0
  57. package/plugin/vendor/reflexio/reflexio/cli/commands/services.py +289 -0
  58. package/plugin/vendor/reflexio/reflexio/cli/commands/setup_cmd.py +964 -0
  59. package/plugin/vendor/reflexio/reflexio/cli/commands/shortcuts.py +285 -0
  60. package/plugin/vendor/reflexio/reflexio/cli/commands/status_cmd.py +143 -0
  61. package/plugin/vendor/reflexio/reflexio/cli/commands/user_playbooks.py +373 -0
  62. package/plugin/vendor/reflexio/reflexio/cli/env_loader.py +284 -0
  63. package/plugin/vendor/reflexio/reflexio/cli/errors.py +217 -0
  64. package/plugin/vendor/reflexio/reflexio/cli/log_format.py +247 -0
  65. package/plugin/vendor/reflexio/reflexio/cli/output.py +867 -0
  66. package/plugin/vendor/reflexio/reflexio/cli/paths.py +41 -0
  67. package/plugin/vendor/reflexio/reflexio/cli/run_services.py +391 -0
  68. package/plugin/vendor/reflexio/reflexio/cli/state.py +204 -0
  69. package/plugin/vendor/reflexio/reflexio/cli/stop_services.py +96 -0
  70. package/plugin/vendor/reflexio/reflexio/cli/utils.py +329 -0
  71. package/plugin/vendor/reflexio/reflexio/client/__init__.py +3 -0
  72. package/plugin/vendor/reflexio/reflexio/client/cache.py +150 -0
  73. package/plugin/vendor/reflexio/reflexio/client/client.py +2613 -0
  74. package/plugin/vendor/reflexio/reflexio/defaults.py +23 -0
  75. package/plugin/vendor/reflexio/reflexio/integrations/__init__.py +0 -0
  76. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/.clawhubignore +7 -0
  77. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/README.md +274 -0
  78. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/TESTING.md +517 -0
  79. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/hook/handler.js +473 -0
  80. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/package-lock.json +2156 -0
  81. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/package.json +18 -0
  82. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/hook/handler.ts +241 -0
  83. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/hook/setup.ts +140 -0
  84. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/index.ts +130 -0
  85. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/publish.ts +113 -0
  86. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/search.ts +52 -0
  87. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/server.ts +103 -0
  88. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/sqlite-buffer.ts +156 -0
  89. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/lib/user-id.ts +134 -0
  90. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/openclaw.plugin.json +41 -0
  91. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/package.json +17 -0
  92. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/rules/reflexio.md +24 -0
  93. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/plugin/skills/reflexio/SKILL.md +48 -0
  94. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/publish_clawhub.sh +278 -0
  95. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/references/HOOK.md +164 -0
  96. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/scripts/install.sh +36 -0
  97. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/scripts/uninstall.sh +35 -0
  98. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/publish.test.ts +27 -0
  99. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/search.test.ts +31 -0
  100. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/server.test.ts +42 -0
  101. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/setup.test.ts +49 -0
  102. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/sqlite-buffer.test.ts +91 -0
  103. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tests/user-id.test.ts +50 -0
  104. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/tsconfig.json +16 -0
  105. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/types/openclaw.d.ts +230 -0
  106. package/plugin/vendor/reflexio/reflexio/integrations/openclaw/vitest.config.ts +13 -0
  107. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/README.md +120 -0
  108. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/TESTING.md +168 -0
  109. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/package-lock.json +1657 -0
  110. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/package.json +16 -0
  111. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/HEARTBEAT.md +6 -0
  112. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/README.md +84 -0
  113. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/SKILL.md +194 -0
  114. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/_meta.json +6 -0
  115. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/agents/reflexio-extractor.md +45 -0
  116. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/hook/handler.ts +214 -0
  117. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/hook/setup.ts +55 -0
  118. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/index.ts +327 -0
  119. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/lib/consolidate.ts +233 -0
  120. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/lib/dedup.ts +80 -0
  121. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/lib/io.ts +155 -0
  122. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/lib/openclaw-cli.ts +67 -0
  123. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/lib/search.ts +33 -0
  124. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/lib/write-playbook.ts +76 -0
  125. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/lib/write-profile.ts +79 -0
  126. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/openclaw.plugin.json +46 -0
  127. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/package.json +18 -0
  128. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/prompts/README.md +36 -0
  129. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/prompts/full_consolidation.md +56 -0
  130. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/prompts/playbook_extraction.md +217 -0
  131. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/prompts/profile_extraction.md +132 -0
  132. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/skills/reflexio-consolidate/SKILL.md +33 -0
  133. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/plugin/skills/reflexio-embedded/SKILL.md +194 -0
  134. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/references/HOOK.md +18 -0
  135. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/references/architecture.md +49 -0
  136. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/references/comparison.md +31 -0
  137. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/references/future-work.md +47 -0
  138. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/references/porting-notes.md +52 -0
  139. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/scripts/install.sh +52 -0
  140. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/scripts/uninstall.sh +36 -0
  141. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tests/consolidate.test.ts +135 -0
  142. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tests/dedup.test.ts +104 -0
  143. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tests/io.test.ts +175 -0
  144. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tests/search.test.ts +66 -0
  145. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tests/smoke-test.ts +140 -0
  146. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tests/write-playbook.test.ts +93 -0
  147. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tests/write-profile.test.ts +174 -0
  148. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/tsconfig.json +16 -0
  149. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/types/openclaw.d.ts +230 -0
  150. package/plugin/vendor/reflexio/reflexio/integrations/openclaw-embedded/vitest.config.ts +7 -0
  151. package/plugin/vendor/reflexio/reflexio/lib/__init__.py +23 -0
  152. package/plugin/vendor/reflexio/reflexio/lib/_agent_playbook.py +310 -0
  153. package/plugin/vendor/reflexio/reflexio/lib/_base.py +225 -0
  154. package/plugin/vendor/reflexio/reflexio/lib/_config.py +83 -0
  155. package/plugin/vendor/reflexio/reflexio/lib/_dashboard.py +266 -0
  156. package/plugin/vendor/reflexio/reflexio/lib/_generation.py +176 -0
  157. package/plugin/vendor/reflexio/reflexio/lib/_interactions.py +334 -0
  158. package/plugin/vendor/reflexio/reflexio/lib/_operations.py +153 -0
  159. package/plugin/vendor/reflexio/reflexio/lib/_profiles.py +545 -0
  160. package/plugin/vendor/reflexio/reflexio/lib/_reflection.py +52 -0
  161. package/plugin/vendor/reflexio/reflexio/lib/_search.py +167 -0
  162. package/plugin/vendor/reflexio/reflexio/lib/_storage_labels.py +103 -0
  163. package/plugin/vendor/reflexio/reflexio/lib/_user_playbook.py +288 -0
  164. package/plugin/vendor/reflexio/reflexio/lib/reflexio_lib.py +27 -0
  165. package/plugin/vendor/reflexio/reflexio/models/__init__.py +0 -0
  166. package/plugin/vendor/reflexio/reflexio/models/api_schema/__init__.py +0 -0
  167. package/plugin/vendor/reflexio/reflexio/models/api_schema/braintrust_schema.py +141 -0
  168. package/plugin/vendor/reflexio/reflexio/models/api_schema/common.py +41 -0
  169. package/plugin/vendor/reflexio/reflexio/models/api_schema/domain/__init__.py +3 -0
  170. package/plugin/vendor/reflexio/reflexio/models/api_schema/domain/entities.py +1112 -0
  171. package/plugin/vendor/reflexio/reflexio/models/api_schema/domain/enums.py +63 -0
  172. package/plugin/vendor/reflexio/reflexio/models/api_schema/eval_overview_schema.py +487 -0
  173. package/plugin/vendor/reflexio/reflexio/models/api_schema/internal_schema.py +28 -0
  174. package/plugin/vendor/reflexio/reflexio/models/api_schema/pending_tool_call_schema.py +83 -0
  175. package/plugin/vendor/reflexio/reflexio/models/api_schema/retriever_schema.py +768 -0
  176. package/plugin/vendor/reflexio/reflexio/models/api_schema/service_schemas.py +9 -0
  177. package/plugin/vendor/reflexio/reflexio/models/api_schema/stall_state_schema.py +32 -0
  178. package/plugin/vendor/reflexio/reflexio/models/api_schema/ui/__init__.py +3 -0
  179. package/plugin/vendor/reflexio/reflexio/models/api_schema/ui/converters.py +177 -0
  180. package/plugin/vendor/reflexio/reflexio/models/api_schema/ui/entities.py +129 -0
  181. package/plugin/vendor/reflexio/reflexio/models/api_schema/ui/enums.py +25 -0
  182. package/plugin/vendor/reflexio/reflexio/models/api_schema/validators.py +333 -0
  183. package/plugin/vendor/reflexio/reflexio/models/config_schema.py +908 -0
  184. package/plugin/vendor/reflexio/reflexio/models/py.typed +0 -0
  185. package/plugin/vendor/reflexio/reflexio/server/OVERVIEW.md +90 -0
  186. package/plugin/vendor/reflexio/reflexio/server/README.md +622 -0
  187. package/plugin/vendor/reflexio/reflexio/server/__init__.py +210 -0
  188. package/plugin/vendor/reflexio/reflexio/server/__main__.py +132 -0
  189. package/plugin/vendor/reflexio/reflexio/server/_auth.py +25 -0
  190. package/plugin/vendor/reflexio/reflexio/server/api.py +2868 -0
  191. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/README.md +34 -0
  192. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/account_api.py +143 -0
  193. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/health_api.py +91 -0
  194. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/pending_tool_call_api.py +572 -0
  195. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/precondition_checks.py +66 -0
  196. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/publisher_api.py +562 -0
  197. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/request_context.py +50 -0
  198. package/plugin/vendor/reflexio/reflexio/server/api_endpoints/stall_state_api.py +100 -0
  199. package/plugin/vendor/reflexio/reflexio/server/cache/__init__.py +15 -0
  200. package/plugin/vendor/reflexio/reflexio/server/cache/reflexio_cache.py +208 -0
  201. package/plugin/vendor/reflexio/reflexio/server/correlation.py +46 -0
  202. package/plugin/vendor/reflexio/reflexio/server/llm/__init__.py +30 -0
  203. package/plugin/vendor/reflexio/reflexio/server/llm/embedding_service.py +359 -0
  204. package/plugin/vendor/reflexio/reflexio/server/llm/image_utils.py +55 -0
  205. package/plugin/vendor/reflexio/reflexio/server/llm/litellm_client.py +1871 -0
  206. package/plugin/vendor/reflexio/reflexio/server/llm/llm_utils.py +140 -0
  207. package/plugin/vendor/reflexio/reflexio/server/llm/model_defaults.py +479 -0
  208. package/plugin/vendor/reflexio/reflexio/server/llm/providers/__init__.py +1 -0
  209. package/plugin/vendor/reflexio/reflexio/server/llm/providers/claude_code_provider.py +1122 -0
  210. package/plugin/vendor/reflexio/reflexio/server/llm/providers/claude_code_stream_parser.py +197 -0
  211. package/plugin/vendor/reflexio/reflexio/server/llm/providers/embedding_service_provider.py +338 -0
  212. package/plugin/vendor/reflexio/reflexio/server/llm/providers/local_embedding_provider.py +213 -0
  213. package/plugin/vendor/reflexio/reflexio/server/llm/providers/nomic_embedding_provider.py +288 -0
  214. package/plugin/vendor/reflexio/reflexio/server/llm/rerank/__init__.py +6 -0
  215. package/plugin/vendor/reflexio/reflexio/server/llm/rerank/cross_encoder_reranker.py +187 -0
  216. package/plugin/vendor/reflexio/reflexio/server/llm/rerank/llm_reranker.py +148 -0
  217. package/plugin/vendor/reflexio/reflexio/server/llm/tools.py +716 -0
  218. package/plugin/vendor/reflexio/reflexio/server/operation_limiter.py +179 -0
  219. package/plugin/vendor/reflexio/reflexio/server/prompt/__init__.py +0 -0
  220. package/plugin/vendor/reflexio/reflexio/server/prompt/_dispatchers.py +54 -0
  221. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/README.md +121 -0
  222. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/agent_success_evaluation/v1.0.0.prompt.md +58 -0
  223. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/agent_success_evaluation_with_comparison/v1.0.0.prompt.md +76 -0
  224. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/answer_synthesis/v1.5.2.prompt.md +88 -0
  225. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/compress_session_for_query/v1.3.0.prompt.md +31 -0
  226. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/document_expansion/v1.0.0.prompt.md +20 -0
  227. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.0.0.prompt.md +53 -0
  228. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.1.0.prompt.md +57 -0
  229. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.2.0.prompt.md +68 -0
  230. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.3.0.prompt.md +70 -0
  231. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.4.0.prompt.md +77 -0
  232. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.5.0.prompt.md +82 -0
  233. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/memory_reflection/v1.6.0.prompt.md +83 -0
  234. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_aggregation/v2.1.0.prompt.md +193 -0
  235. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_aggregation/v2.2.0.prompt.md +206 -0
  236. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v1.0.0-deprecated.prompt.md +66 -0
  237. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v1.0.0.prompt.md +43 -0
  238. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v1.1.0.prompt.md +46 -0
  239. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.0.0-deprecated.prompt.md +64 -0
  240. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.0.0.prompt.md +39 -0
  241. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.1.0.prompt.md +39 -0
  242. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.2.0.prompt.md +47 -0
  243. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.3.0.prompt.md +58 -0
  244. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.3.1.prompt.md +69 -0
  245. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_consolidation/v2.3.2.prompt.md +71 -0
  246. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.0.2.prompt.md +254 -0
  247. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.1.0.prompt.md +274 -0
  248. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.2.0.prompt.md +283 -0
  249. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.2.2.prompt.md +234 -0
  250. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.2.3.prompt.md +244 -0
  251. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v1.0.0.prompt.md +73 -0
  252. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v2.0.0.prompt.md +86 -0
  253. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v3.0.0.prompt.md +97 -0
  254. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v3.1.0.prompt.md +119 -0
  255. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v3.2.0.prompt.md +123 -0
  256. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context_expert/v3.3.0.prompt.md +137 -0
  257. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main/v1.0.0.prompt.md +14 -0
  258. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main/v1.1.0.prompt.md +24 -0
  259. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main/v1.2.0.prompt.md +29 -0
  260. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main_expert/v1.0.0.prompt.md +11 -0
  261. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main_expert/v1.1.0.prompt.md +21 -0
  262. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_main_expert/v1.2.0.prompt.md +25 -0
  263. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_optimizer_judge/v1.0.0.prompt.md +37 -0
  264. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_optimizer_judge/v1.1.0.prompt.md +40 -0
  265. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_optimizer_judge/v1.2.0.prompt.md +36 -0
  266. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_should_generate/v1.0.0.prompt.md +45 -0
  267. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_should_generate/v2.0.0.prompt.md +81 -0
  268. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_should_generate/v3.0.0.prompt.md +80 -0
  269. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_should_generate_expert/v1.0.0.prompt.md +34 -0
  270. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_deduplication/v1.0.0.prompt.md +116 -0
  271. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_should_generate/v1.0.0.prompt.md +33 -0
  272. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_should_generate_override/v1.0.0.prompt.md +16 -0
  273. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_update_instruction_start/v1.0.0.prompt.md +140 -0
  274. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_update_instruction_start/v1.1.0.prompt.md +160 -0
  275. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/profile_update_main/v1.0.0.prompt.md +14 -0
  276. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/query_reformulation/v1.0.0.prompt.md +19 -0
  277. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/rerank_relevance/v1.1.0.prompt.md +44 -0
  278. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/shadow_comparison/v1.0.0.prompt.md +43 -0
  279. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/shadow_content_evaluation/v1.0.0.prompt.md +33 -0
  280. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_evaluation/prompt_evaluation_dataset/feedback_extraction_main_v1.jsonl +10 -0
  281. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_evaluation/prompt_evaluation_dataset/profile_update_main_v1.jsonl +10 -0
  282. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_manager.py +280 -0
  283. package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_schema.py +11 -0
  284. package/plugin/vendor/reflexio/reflexio/server/services/README.md +58 -0
  285. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/_eval_health.py +131 -0
  286. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/agent_success_evaluation_constants.py +60 -0
  287. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/agent_success_evaluation_service.py +228 -0
  288. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/agent_success_evaluation_utils.py +87 -0
  289. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/agent_success_evaluator.py +372 -0
  290. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/delayed_group_evaluator.py +156 -0
  291. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/group_evaluation_runner.py +336 -0
  292. package/plugin/vendor/reflexio/reflexio/server/services/agent_success_evaluation/regen_jobs.py +471 -0
  293. package/plugin/vendor/reflexio/reflexio/server/services/base_generation_service.py +1668 -0
  294. package/plugin/vendor/reflexio/reflexio/server/services/braintrust/__init__.py +0 -0
  295. package/plugin/vendor/reflexio/reflexio/server/services/braintrust/_cron.py +196 -0
  296. package/plugin/vendor/reflexio/reflexio/server/services/braintrust/_encryption.py +101 -0
  297. package/plugin/vendor/reflexio/reflexio/server/services/braintrust/client.py +167 -0
  298. package/plugin/vendor/reflexio/reflexio/server/services/braintrust/service.py +281 -0
  299. package/plugin/vendor/reflexio/reflexio/server/services/configurator/base_configurator.py +179 -0
  300. package/plugin/vendor/reflexio/reflexio/server/services/configurator/config_storage.py +62 -0
  301. package/plugin/vendor/reflexio/reflexio/server/services/configurator/configurator.py +87 -0
  302. package/plugin/vendor/reflexio/reflexio/server/services/configurator/local_file_config_storage.py +187 -0
  303. package/plugin/vendor/reflexio/reflexio/server/services/configurator/test_config_storage.py +162 -0
  304. package/plugin/vendor/reflexio/reflexio/server/services/deduplication_utils.py +112 -0
  305. package/plugin/vendor/reflexio/reflexio/server/services/embedding_text.py +62 -0
  306. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/__init__.py +0 -0
  307. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/distribution.py +33 -0
  308. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/eval_sampler.py +126 -0
  309. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/group_aggregation.py +192 -0
  310. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/hero_state.py +75 -0
  311. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/rule_attribution.py +97 -0
  312. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/service.py +515 -0
  313. package/plugin/vendor/reflexio/reflexio/server/services/evaluation_overview/shadow_aggregation.py +90 -0
  314. package/plugin/vendor/reflexio/reflexio/server/services/extraction/__init__.py +0 -0
  315. package/plugin/vendor/reflexio/reflexio/server/services/extraction/agent_run_records.py +91 -0
  316. package/plugin/vendor/reflexio/reflexio/server/services/extraction/invariants.py +303 -0
  317. package/plugin/vendor/reflexio/reflexio/server/services/extraction/outcome.py +25 -0
  318. package/plugin/vendor/reflexio/reflexio/server/services/extraction/pending_tool_call_dispatch.py +358 -0
  319. package/plugin/vendor/reflexio/reflexio/server/services/extraction/plan.py +138 -0
  320. package/plugin/vendor/reflexio/reflexio/server/services/extraction/prior_answer_search.py +217 -0
  321. package/plugin/vendor/reflexio/reflexio/server/services/extraction/resumable_agent.py +535 -0
  322. package/plugin/vendor/reflexio/reflexio/server/services/extraction/resume_scheduler.py +171 -0
  323. package/plugin/vendor/reflexio/reflexio/server/services/extraction/resume_worker.py +779 -0
  324. package/plugin/vendor/reflexio/reflexio/server/services/extraction/tools.py +1125 -0
  325. package/plugin/vendor/reflexio/reflexio/server/services/extractor_config_utils.py +94 -0
  326. package/plugin/vendor/reflexio/reflexio/server/services/extractor_interaction_utils.py +251 -0
  327. package/plugin/vendor/reflexio/reflexio/server/services/generation_service.py +702 -0
  328. package/plugin/vendor/reflexio/reflexio/server/services/operation_state_utils.py +835 -0
  329. package/plugin/vendor/reflexio/reflexio/server/services/playbook/README.md +89 -0
  330. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_aggregator.py +1388 -0
  331. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_consolidator.py +1045 -0
  332. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_extractor.py +436 -0
  333. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_generation_service.py +808 -0
  334. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_service_constants.py +28 -0
  335. package/plugin/vendor/reflexio/reflexio/server/services/playbook/playbook_service_utils.py +362 -0
  336. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/__init__.py +24 -0
  337. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/assistant_webhook.py +246 -0
  338. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/gepa_adapter.py +291 -0
  339. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/judge.py +97 -0
  340. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/models.py +96 -0
  341. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/optimizer.py +645 -0
  342. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/rollout.py +35 -0
  343. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/scenario_resolver.py +93 -0
  344. package/plugin/vendor/reflexio/reflexio/server/services/playbook_optimizer/scheduler.py +174 -0
  345. package/plugin/vendor/reflexio/reflexio/server/services/pre_retrieval/__init__.py +26 -0
  346. package/plugin/vendor/reflexio/reflexio/server/services/pre_retrieval/_document_expander.py +179 -0
  347. package/plugin/vendor/reflexio/reflexio/server/services/pre_retrieval/_query_reformulator.py +297 -0
  348. package/plugin/vendor/reflexio/reflexio/server/services/profile/profile_deduplicator.py +772 -0
  349. package/plugin/vendor/reflexio/reflexio/server/services/profile/profile_extractor.py +462 -0
  350. package/plugin/vendor/reflexio/reflexio/server/services/profile/profile_generation_service.py +737 -0
  351. package/plugin/vendor/reflexio/reflexio/server/services/profile/profile_generation_service_utils.py +290 -0
  352. package/plugin/vendor/reflexio/reflexio/server/services/reflection/__init__.py +17 -0
  353. package/plugin/vendor/reflexio/reflexio/server/services/reflection/reflection_extractor.py +247 -0
  354. package/plugin/vendor/reflexio/reflexio/server/services/reflection/reflection_service.py +803 -0
  355. package/plugin/vendor/reflexio/reflexio/server/services/reflection/reflection_service_utils.py +146 -0
  356. package/plugin/vendor/reflexio/reflexio/server/services/retrieval/__init__.py +0 -0
  357. package/plugin/vendor/reflexio/reflexio/server/services/retrieval/relevance_floor.py +80 -0
  358. package/plugin/vendor/reflexio/reflexio/server/services/search/__init__.py +0 -0
  359. package/plugin/vendor/reflexio/reflexio/server/services/service_utils.py +756 -0
  360. package/plugin/vendor/reflexio/reflexio/server/services/shadow_comparison/__init__.py +1 -0
  361. package/plugin/vendor/reflexio/reflexio/server/services/shadow_comparison/judge.py +184 -0
  362. package/plugin/vendor/reflexio/reflexio/server/services/shadow_comparison/outcome.py +81 -0
  363. package/plugin/vendor/reflexio/reflexio/server/services/storage/constants.py +2 -0
  364. package/plugin/vendor/reflexio/reflexio/server/services/storage/error.py +11 -0
  365. package/plugin/vendor/reflexio/reflexio/server/services/storage/retention.py +154 -0
  366. package/plugin/vendor/reflexio/reflexio/server/services/storage/retention_mixin.py +155 -0
  367. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/__init__.py +59 -0
  368. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_agent_run.py +1298 -0
  369. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_base.py +1945 -0
  370. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_extras.py +600 -0
  371. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_operations.py +346 -0
  372. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_playbook.py +1378 -0
  373. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_profiles.py +747 -0
  374. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_requests.py +263 -0
  375. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_shadow_verdicts.py +193 -0
  376. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_share_links.py +166 -0
  377. package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_stall_state.py +217 -0
  378. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/__init__.py +153 -0
  379. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_agent_run.py +384 -0
  380. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_base.py +71 -0
  381. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_extras.py +235 -0
  382. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_operations.py +170 -0
  383. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_playbook.py +677 -0
  384. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_profiles.py +250 -0
  385. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_requests.py +154 -0
  386. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_shadow_verdicts.py +130 -0
  387. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_share_links.py +93 -0
  388. package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_stall_state.py +76 -0
  389. package/plugin/vendor/reflexio/reflexio/server/services/unified_search_service.py +572 -0
  390. package/plugin/vendor/reflexio/reflexio/server/site_var/README.md +77 -0
  391. package/plugin/vendor/reflexio/reflexio/server/site_var/feature_flags.py +116 -0
  392. package/plugin/vendor/reflexio/reflexio/server/site_var/site_var_manager.py +263 -0
  393. package/plugin/vendor/reflexio/reflexio/server/site_var/site_var_sources/feature_flags.json +13 -0
  394. package/plugin/vendor/reflexio/reflexio/server/site_var/site_var_sources/llm_model_setting.json +7 -0
  395. package/plugin/vendor/reflexio/reflexio/server/tracing.py +158 -0
  396. package/plugin/vendor/reflexio/reflexio/server/usage_metrics.py +113 -0
  397. package/plugin/vendor/reflexio/reflexio/server/uvicorn_logging.py +76 -0
  398. package/plugin/vendor/reflexio/reflexio/test_support/__init__.py +1 -0
  399. package/plugin/vendor/reflexio/reflexio/test_support/llm_fixtures.py +62 -0
  400. package/plugin/vendor/reflexio/reflexio/test_support/llm_mock.py +242 -0
  401. package/plugin/vendor/reflexio/reflexio/test_support/llm_model_registry.py +129 -0
  402. package/plugin/vendor/reflexio/reflexio/test_support/skip_decorators.py +43 -0
@@ -0,0 +1,53 @@
1
+ ---
2
+ active: false
3
+ description: "Sliding-window critique-and-revise pass over user-profile / user-playbook items the agent cited within the recent interaction window. Defaults strongly to no_change."
4
+ changelog: "Initial version. Wired in by ReflectionService. Added 'too specific' as a valid replace trigger; only allow widening when multiple window interactions demonstrate the broader pattern."
5
+ variables:
6
+ - agent_context
7
+ - window_interactions_json
8
+ - cited_profiles_json
9
+ - cited_user_playbooks_json
10
+ ---
11
+ You are reviewing how the agent applied a small set of remembered facts and rules across a recent slice of conversation. Your job is to decide, for each cited item, whether the item itself should be left alone, or replaced with revised content.
12
+
13
+ [Agent context]
14
+ {agent_context}
15
+
16
+ [Recent interaction window (oldest first; each interaction may include `citations` showing which items it relied on)]
17
+ {window_interactions_json}
18
+
19
+ [Cited user profile rows that are still current]
20
+ {cited_profiles_json}
21
+
22
+ [Cited user playbook rows that are still current]
23
+ {cited_user_playbooks_json}
24
+
25
+ # Decision rules
26
+
27
+ For each cited item above, return exactly one decision in `decisions`:
28
+
29
+ - `action = "no_change"` — the cited item still looks correct after seeing how it was applied across the window. **This is the default.** Choose it whenever you are not sure.
30
+ - `action = "replace"` — the cited item should be revised in light of what the window shows. Valid triggers:
31
+ - **Wrong / outdated / harmful**: the user pushed back against advice clearly produced by this item, or the agent's use of the item revealed a factual contradiction with what the user said in the window.
32
+ - **Too specific**: the window shows the same underlying preference or rule applies more broadly than the cited item captures (e.g. a profile says "likes spicy ramen" but the window shows the user ordering spicy food across multiple cuisines, or a playbook trigger fires only on one phrasing the user clearly uses interchangeably with others). The replacement should widen the item just enough to cover what the window actually demonstrates — do not invent breadth the window does not support.
33
+
34
+ When you choose `no_change`:
35
+
36
+ - Set only `target_kind`, `target_id`, and `action`. Leave `new_content`, `new_trigger`, `new_rationale`, `new_profile_time_to_live`, and `reason` null / empty — they are discarded.
37
+
38
+ When you choose `replace`:
39
+
40
+ - Set `target_kind` and `target_id` to exactly the values from the cited item.
41
+ - Always set `new_content` (the corrected text).
42
+ - For playbook items only, you MAY set `new_trigger` and/or `new_rationale` if those need to change. Leave them null to keep the existing values.
43
+ - For profile items only, you MAY set `new_profile_time_to_live` (one of: `infinity`, `one_year`, `one_quarter`, `one_month`, `one_week`, `one_day`). Leave null to keep the existing TTL.
44
+ - Always set `reason` to a short (one-sentence) justification.
45
+
46
+ # Hard constraints
47
+
48
+ - Do **not** invent new playbook rules or profile rows. If something new should be remembered, that is a different system's job — return `no_change` here.
49
+ - Do **not** generalize beyond what the window actually demonstrates. Widening is only valid when multiple interactions in the window show the broader pattern; a single occurrence is not enough.
50
+ - Do **not** propose decisions for items not present in the cited lists above.
51
+ - If both cited lists are empty, return `decisions: []`.
52
+
53
+ Output strictly conforming to the `ReflectionOutput` schema (a JSON object with a single key `decisions`).
@@ -0,0 +1,57 @@
1
+ ---
2
+ active: false
3
+ description: "Sliding-window critique-and-revise pass over user-profile / user-playbook items the agent cited within the recent interaction window. Adds per-citation post-horizon context and structured polarity for playbook flips. Defaults strongly to no_change."
4
+ changelog: "v1.1.0: per-citation has_full_horizon flag; ReflectionDecision drops action enum in favor of field-presence revision; new_polarity is a typed enum for playbook polarity flips; flip requires new_rationale."
5
+ variables:
6
+ - agent_context
7
+ - window_interactions_json
8
+ - cited_profiles_json
9
+ - cited_user_playbooks_json
10
+ - per_citation_context_json
11
+ ---
12
+ You are reviewing how the agent applied a small set of remembered facts and rules across a recent slice of conversation, with the benefit of seeing what happened *after* the agent used them. Your job is to decide, for each cited item, whether to leave it alone, tighten its phrasing, rewrite it, or — for playbooks only — flip its polarity.
13
+
14
+ [Agent context]
15
+ {agent_context}
16
+
17
+ [Recent interaction window (oldest first; each interaction may include `citations` showing which items it relied on)]
18
+ {window_interactions_json}
19
+
20
+ [Per-citation context]
21
+ For each citation below, a JSON object indicating whether we have a full post-citation horizon. When `has_full_horizon` is false, the post-citation context for that citation is incomplete; bias even more strongly toward no_change for it.
22
+ {per_citation_context_json}
23
+
24
+ [Cited user profile rows that are still current]
25
+ {cited_profiles_json}
26
+
27
+ [Cited user playbook rows that are still current]
28
+ {cited_user_playbooks_json}
29
+
30
+ # Decision rules
31
+
32
+ For each cited item above, emit one ReflectionDecision in `decisions`. A decision is either **no_change** (default) or a **revision** — there is no `action` enum; the LLM signals revision by setting one or more of the optional fields. Default is no_change.
33
+
34
+ ## no_change
35
+
36
+ Set only `target_kind` and `target_id`. Leave every other field null/empty. Choose this whenever you are not sure, AND whenever `has_full_horizon` is false unless the cited turn itself contains very clear evidence (e.g., user explicitly pushed back inside the cited turn's exchange, or the cited row contradicted what the user said earlier in the window).
37
+
38
+ ## Revision modes (set the appropriate fields; the LLM does not emit a category label)
39
+
40
+ - **Tighten phrasing (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning. Use when the row was over-retrieved or misapplied but the underlying rule/fact is still correct. Do not change polarity.
41
+ - **Rewrite substance.** Set `new_content` (and `new_rationale` for playbooks). Use when the row is factually wrong or outdated. Do not change polarity unless this is also a flip (then follow flip rules below).
42
+ - **Flip polarity** (playbooks only). Set `new_polarity` to the opposite value of the cited row's polarity. **MUST** set `new_rationale` naming the failure pattern observed in the post-citation context. Also set `new_content` framed as a negative rule starting with `Avoid`, `Do not`, `Don't`, or `Never` (this is a soft convention for the downstream agent that reads the rule; the structural signal is `new_polarity`).
43
+
44
+ Use flip only when the post-citation window shows the cited rule pushed the agent into a failure trap: user pushback against the recommended action, agent self-correction away from it, an external check refuting it, or the user explicitly disliking the outcome.
45
+
46
+ Use no_change when evidence is unclear or absent.
47
+
48
+ # Hard constraints
49
+
50
+ - Do **not** set `new_polarity` for a profile decision.
51
+ - Do **not** flip a profile's polarity (profiles have no polarity field).
52
+ - Do **not** invent new playbook rules or profile rows. If something new should be remembered, that is a different system's job — return no_change here.
53
+ - Do **not** generalize beyond what the window actually demonstrates.
54
+ - Do **not** propose decisions for items not present in the cited lists above.
55
+ - If both cited lists are empty, return `decisions: []`.
56
+
57
+ Output strictly conforming to the `ReflectionOutput` schema (a JSON object with a single key `decisions`).
@@ -0,0 +1,68 @@
1
+ ---
2
+ active: false
3
+ description: "Sliding-window critique-and-revise pass over user-profile / user-playbook items the agent cited within the recent interaction window. Adds per-citation post-horizon context and structured polarity for playbook flips. Defaults strongly to no_change."
4
+ changelog: "v1.2.0: restore widen mode (mirror of tighten, multi-interaction evidence bar, reuses new_trigger); add over-specialization guard for tighten/rewrite and a minimal-edit principle. No schema change."
5
+ variables:
6
+ - agent_context
7
+ - window_interactions_json
8
+ - cited_profiles_json
9
+ - cited_user_playbooks_json
10
+ - per_citation_context_json
11
+ ---
12
+ You are reviewing how the agent applied a small set of remembered facts and rules across a recent slice of conversation, with the benefit of seeing what happened *after* the agent used them. Your job is to decide, for each cited item, whether to leave it alone, tighten its phrasing, widen its scope, rewrite it, or — for playbooks only — flip its polarity.
13
+
14
+ [Agent context]
15
+ {agent_context}
16
+
17
+ [Recent interaction window (oldest first; each interaction may include `citations` showing which items it relied on)]
18
+ {window_interactions_json}
19
+
20
+ [Per-citation context]
21
+ For each citation below, a JSON object indicating whether we have a full post-citation horizon. When `has_full_horizon` is false, the post-citation context for that citation is incomplete; bias even more strongly toward no_change for it.
22
+ {per_citation_context_json}
23
+
24
+ [Cited user profile rows that are still current]
25
+ {cited_profiles_json}
26
+
27
+ [Cited user playbook rows that are still current]
28
+ {cited_user_playbooks_json}
29
+
30
+ # Decision rules
31
+
32
+ For each cited item above, emit one ReflectionDecision in `decisions`. A decision is either **no_change** (default) or a **revision** — there is no `action` enum; the LLM signals revision by setting one or more of the optional fields. Default is no_change.
33
+
34
+ Apply the **minimal-edit principle** to every revision: make the smallest edit the window demonstrates, preserve the parts of the item the window did not touch, and avoid accreting detail the window does not support.
35
+
36
+ ## no_change
37
+
38
+ Set only `target_kind` and `target_id`. Leave every other field null/empty. Choose this whenever you are not sure, AND whenever `has_full_horizon` is false unless the cited turn itself contains very clear evidence (e.g., user explicitly pushed back inside the cited turn's exchange, or the cited row contradicted what the user said earlier in the window).
39
+
40
+ ## Revision modes (set the appropriate fields; the LLM does not emit a category label)
41
+
42
+ - **Tighten (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning. Use when the row was over-retrieved or misapplied but the underlying rule/fact is still correct. Narrow *just enough* to address what the window demonstrates, and keep the rule general enough to cover the cases the window still supports. Do not change polarity.
43
+ - **Widen (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning, broadening the trigger/scope. Use when the window shows the rule applies *more broadly* than its current trigger captures — for example, a profile says "likes spicy ramen" but the window shows the user ordering spicy food across multiple cuisines, or a playbook trigger fires on one phrasing the user clearly uses interchangeably with others. Broaden *just enough* to cover what the window actually demonstrates, and keep it within what the window shows. Do not change polarity.
44
+ - **Rewrite substance.** Set `new_content` (and `new_rationale` for playbooks). Use when the row is factually wrong or outdated. Edit *just enough* to correct what the window demonstrates, and preserve the still-correct parts of the row. Do not change polarity unless this is also a flip (then follow flip rules below).
45
+ - **Flip polarity** (playbooks only). Set `new_polarity` to the opposite value of the cited row's polarity. **MUST** set `new_rationale` naming the failure pattern observed in the post-citation context. Also set `new_content` framed as a negative rule starting with `Avoid`, `Do not`, `Don't`, or `Never` (this is a soft convention for the downstream agent that reads the rule; the structural signal is `new_polarity`).
46
+
47
+ Use flip only when the post-citation window shows the cited rule pushed the agent into a failure trap: user pushback against the recommended action, agent self-correction away from it, an external check refuting it, or the user explicitly disliking the outcome.
48
+
49
+ Use no_change when evidence is unclear or absent.
50
+
51
+ # Over-specialization guard (tighten and rewrite)
52
+
53
+ When you tighten or rewrite, edit *just enough* to address what the window demonstrates, and keep the rule applicable to the cases the window still supports. Frame the result as the smallest correct generalization the window justifies. Keep the rule covering the range of situations the window shows it applies to.
54
+
55
+ # Evidence bar for widening
56
+
57
+ Widen only when multiple interactions in the window demonstrate the broader pattern; treat a single occurrence as insufficient and choose no_change instead. Keep the broadened scope within what the window demonstrates.
58
+
59
+ # Hard constraints
60
+
61
+ - Do **not** set `new_polarity` for a profile decision.
62
+ - Do **not** flip a profile's polarity (profiles have no polarity field).
63
+ - Do **not** invent new playbook rules or profile rows. If something new should be remembered, that is a different system's job — return no_change here.
64
+ - Do **not** generalize beyond what the window actually demonstrates.
65
+ - Do **not** propose decisions for items not present in the cited lists above.
66
+ - If both cited lists are empty, return `decisions: []`.
67
+
68
+ Output strictly conforming to the `ReflectionOutput` schema (a JSON object with a single key `decisions`).
@@ -0,0 +1,70 @@
1
+ ---
2
+ active: false
3
+ description: "Sliding-window critique-and-revise pass over user-profile / user-playbook items the agent cited within the recent interaction window. Adds per-citation post-horizon context; playbook flips are expressed by rewriting the rule in the opposite orientation (polarity is derived from wording, never a separate field). Defaults strongly to no_change."
4
+ changelog: "v1.3.0: flip is wording-based — to flip a playbook, rewrite new_content in the opposite orientation and set new_rationale; removed the new_polarity field (polarity is derived from wording at apply time). No other mode changed."
5
+ variables:
6
+ - agent_context
7
+ - window_interactions_json
8
+ - cited_profiles_json
9
+ - cited_user_playbooks_json
10
+ - per_citation_context_json
11
+ ---
12
+ You are reviewing how the agent applied a small set of remembered facts and rules across a recent slice of conversation, with the benefit of seeing what happened *after* the agent used them. Your job is to decide, for each cited item, whether to leave it alone, tighten its phrasing, widen its scope, rewrite it, or — for playbooks only — flip its polarity.
13
+
14
+ [Agent context]
15
+ {agent_context}
16
+
17
+ [Recent interaction window (oldest first; each interaction may include `citations` showing which items it relied on)]
18
+ {window_interactions_json}
19
+
20
+ [Per-citation context]
21
+ For each citation below, a JSON object indicating whether we have a full post-citation horizon. When `has_full_horizon` is false, the post-citation context for that citation is incomplete; bias even more strongly toward no_change for it.
22
+ {per_citation_context_json}
23
+
24
+ [Cited user profile rows that are still current]
25
+ {cited_profiles_json}
26
+
27
+ [Cited user playbook rows that are still current]
28
+ {cited_user_playbooks_json}
29
+
30
+ # Decision rules
31
+
32
+ For each cited item above, emit one ReflectionDecision in `decisions`. A decision is either **no_change** (default) or a **revision** — there is no `action` enum; the LLM signals revision by setting one or more of the optional fields. Default is no_change.
33
+
34
+ Apply the **minimal-edit principle** to every revision: make the smallest edit the window demonstrates, preserve the parts of the item the window did not touch, and avoid accreting detail the window does not support.
35
+
36
+ ## no_change
37
+
38
+ Set only `target_kind` and `target_id`. Leave every other field null/empty. Choose this whenever you are not sure, AND whenever `has_full_horizon` is false unless the cited turn itself contains very clear evidence (e.g., user explicitly pushed back inside the cited turn's exchange, or the cited row contradicted what the user said earlier in the window).
39
+
40
+ ## Revision modes (set the appropriate fields; the LLM does not emit a category label)
41
+
42
+ - **Tighten (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning. Use when the row was over-retrieved or misapplied but the underlying rule/fact is still correct. Narrow *just enough* to address what the window demonstrates, and keep the rule general enough to cover the cases the window still supports. Do not change orientation.
43
+ - **Widen (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning, broadening the trigger/scope. Use when the window shows the rule applies *more broadly* than its current trigger captures — for example, a profile says "likes spicy ramen" but the window shows the user ordering spicy food across multiple cuisines, or a playbook trigger fires on one phrasing the user clearly uses interchangeably with others. Broaden *just enough* to cover what the window actually demonstrates, and keep it within what the window shows. Do not change orientation.
44
+ - **Rewrite substance.** Set `new_content` (and `new_rationale` for playbooks). Use when the row is factually wrong or outdated. Edit *just enough* to correct what the window demonstrates, and preserve the still-correct parts of the row. Do not change orientation unless this is also a flip (then follow flip rules below).
45
+ - **Flip orientation** (playbooks only). To flip a rule, **rewrite `new_content`** as the opposite-orientation rule:
46
+ - For a **success → failure** flip, write `new_content` as avoidance guidance starting with `Avoid`, `Do not`, `Don't`, or `Never`.
47
+ - For a **failure → success** flip, write `new_content` as affirmative action guidance.
48
+ Always **set `new_rationale`** naming the failure/observation in the post-citation context that motivates the flip. There is no separate polarity field — the flip is recognized from the rewritten wording plus the failure named in `new_rationale`.
49
+
50
+ Use flip only when the post-citation window shows the cited rule pushed the agent into a failure trap: user pushback against the recommended action, agent self-correction away from it, an external check refuting it, or the user explicitly disliking the outcome.
51
+
52
+ Use no_change when evidence is unclear or absent.
53
+
54
+ # Over-specialization guard (tighten and rewrite)
55
+
56
+ When you tighten or rewrite, edit *just enough* to address what the window demonstrates, and keep the rule applicable to the cases the window still supports. Frame the result as the smallest correct generalization the window justifies. Keep the rule covering the range of situations the window shows it applies to.
57
+
58
+ # Evidence bar for widening
59
+
60
+ Widen only when multiple interactions in the window demonstrate the broader pattern; treat a single occurrence as insufficient and choose no_change instead. Keep the broadened scope within what the window demonstrates.
61
+
62
+ # Hard constraints
63
+
64
+ - Do **not** flip a profile's orientation (profiles have no polarity) — only rewrite/tighten/widen/ttl apply to profiles.
65
+ - Do **not** invent new playbook rules or profile rows. If something new should be remembered, that is a different system's job — return no_change here.
66
+ - Do **not** generalize beyond what the window actually demonstrates.
67
+ - Do **not** propose decisions for items not present in the cited lists above.
68
+ - If both cited lists are empty, return `decisions: []`.
69
+
70
+ Output strictly conforming to the `ReflectionOutput` schema (a JSON object with a single key `decisions`).
@@ -0,0 +1,77 @@
1
+ ---
2
+ active: false
3
+ description: "Sliding-window critique-and-revise pass over user-profile / user-playbook items the agent cited within the recent interaction window. Adds per-citation post-horizon context; playbook flips are expressed by rewriting the rule in the opposite orientation (polarity is derived from wording, never a separate field). When a cited item holds multiple rules, localizes the edit to the rule(s) the window's evidence bears on. Defaults strongly to no_change."
4
+ changelog: "v1.4.0: rule-localization — when a cited playbook holds several rules in free-form content, identify which rule(s) the window's execution evidence (agent responses, tool calls, post-citation horizon) bears on and revise only those, leaving the rest unchanged. No output schema, variable, or other mode changed."
5
+ variables:
6
+ - agent_context
7
+ - window_interactions_json
8
+ - cited_profiles_json
9
+ - cited_user_playbooks_json
10
+ - per_citation_context_json
11
+ ---
12
+ You are reviewing how the agent applied a small set of remembered facts and rules across a recent slice of conversation, with the benefit of seeing what happened *after* the agent used them. Your job is to decide, for each cited item, whether to leave it alone, tighten its phrasing, widen its scope, rewrite it, or — for playbooks only — flip its polarity.
13
+
14
+ [Agent context]
15
+ {agent_context}
16
+
17
+ [Recent interaction window (oldest first; each interaction may include `citations` showing which items it relied on)]
18
+ {window_interactions_json}
19
+
20
+ [Per-citation context]
21
+ For each citation below, a JSON object indicating whether we have a full post-citation horizon. When `has_full_horizon` is false, the post-citation context for that citation is incomplete; bias even more strongly toward no_change for it.
22
+ {per_citation_context_json}
23
+
24
+ [Cited user profile rows that are still current]
25
+ {cited_profiles_json}
26
+
27
+ [Cited user playbook rows that are still current]
28
+ {cited_user_playbooks_json}
29
+
30
+ # Decision rules
31
+
32
+ For each cited item above, emit one ReflectionDecision in `decisions`. A decision is either **no_change** (default) or a **revision** — there is no `action` enum; the LLM signals revision by setting one or more of the optional fields. Default is no_change.
33
+
34
+ Apply the **minimal-edit principle** to every revision: make the smallest edit the window demonstrates, preserve the parts of the item the window did not touch, and avoid accreting detail the window does not support.
35
+
36
+ ## When a cited item contains multiple rules
37
+
38
+ A cited playbook may hold several rules — a few do/avoid points covering the steps of a task. The agent pulled in the whole item because it was relevant, then chose which rules to act on. Identify which rule(s) the window's evidence actually bears on — read the agent's responses, its tool calls, and what happened after it relied on the item (pushback, self-correction, an external check) — and revise only those rule(s), leaving the rest of the content unchanged (minimal-edit).
39
+
40
+ - If the window does not clearly show which rule was applied or how it fared, return `no_change` rather than editing the wrong rule.
41
+ - When you change a rule's orientation (a "do" rule becomes an "avoid" rule or vice versa), set `new_rationale` naming the failure/observation that motivates the flip.
42
+
43
+ ## no_change
44
+
45
+ Set only `target_kind` and `target_id`. Leave every other field null/empty. Choose this whenever you are not sure, AND whenever `has_full_horizon` is false unless the cited turn itself contains very clear evidence (e.g., user explicitly pushed back inside the cited turn's exchange, or the cited row contradicted what the user said earlier in the window).
46
+
47
+ ## Revision modes (set the appropriate fields; the LLM does not emit a category label)
48
+
49
+ - **Tighten (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning. Use when the row was over-retrieved or misapplied but the underlying rule/fact is still correct. Narrow *just enough* to address what the window demonstrates, and keep the rule general enough to cover the cases the window still supports. Do not change orientation.
50
+ - **Widen (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning, broadening the trigger/scope. Use when the window shows the rule applies *more broadly* than its current trigger captures — for example, a profile says "likes spicy ramen" but the window shows the user ordering spicy food across multiple cuisines, or a playbook trigger fires on one phrasing the user clearly uses interchangeably with others. Broaden *just enough* to cover what the window actually demonstrates, and keep it within what the window shows. Do not change orientation.
51
+ - **Rewrite substance.** Set `new_content` (and `new_rationale` for playbooks). Use when the row is factually wrong or outdated. Edit *just enough* to correct what the window demonstrates, and preserve the still-correct parts of the row. Do not change orientation unless this is also a flip (then follow flip rules below).
52
+ - **Flip orientation** (playbooks only). To flip a rule, **rewrite `new_content`** as the opposite-orientation rule:
53
+ - For a **success → failure** flip, write `new_content` as avoidance guidance starting with `Avoid`, `Do not`, `Don't`, or `Never`.
54
+ - For a **failure → success** flip, write `new_content` as affirmative action guidance.
55
+ Always **set `new_rationale`** naming the failure/observation in the post-citation context that motivates the flip. There is no separate polarity field — the flip is recognized from the rewritten wording plus the failure named in `new_rationale`.
56
+
57
+ Use flip only when the post-citation window shows the cited rule pushed the agent into a failure trap: user pushback against the recommended action, agent self-correction away from it, an external check refuting it, or the user explicitly disliking the outcome.
58
+
59
+ Use no_change when evidence is unclear or absent.
60
+
61
+ # Over-specialization guard (tighten and rewrite)
62
+
63
+ When you tighten or rewrite, edit *just enough* to address what the window demonstrates, and keep the rule applicable to the cases the window still supports. Frame the result as the smallest correct generalization the window justifies. Keep the rule covering the range of situations the window shows it applies to.
64
+
65
+ # Evidence bar for widening
66
+
67
+ Widen only when multiple interactions in the window demonstrate the broader pattern; treat a single occurrence as insufficient and choose no_change instead. Keep the broadened scope within what the window demonstrates.
68
+
69
+ # Hard constraints
70
+
71
+ - Do **not** flip a profile's orientation (profiles have no polarity) — only rewrite/tighten/widen/ttl apply to profiles.
72
+ - Do **not** invent new playbook rules or profile rows. If something new should be remembered, that is a different system's job — return no_change here.
73
+ - Do **not** generalize beyond what the window actually demonstrates.
74
+ - Do **not** propose decisions for items not present in the cited lists above.
75
+ - If both cited lists are empty, return `decisions: []`.
76
+
77
+ Output strictly conforming to the `ReflectionOutput` schema (a JSON object with a single key `decisions`).
@@ -0,0 +1,82 @@
1
+ ---
2
+ active: false
3
+ description: "Sliding-window critique-and-revise pass over user-profile / user-playbook items the agent cited within the recent interaction window. Adds per-citation post-horizon context; playbook flips are expressed by rewriting the rule in the opposite orientation (polarity is derived from wording, never a separate field). When a cited item holds multiple rules, localizes the edit to the rule(s) the window's evidence bears on. Any playbook content rewrite (tighten / widen / rewrite / flip) must carry a new_rationale. Defaults strongly to no_change."
4
+ changelog: "v1.5.0: uniform rationale rule — whenever a playbook revision sets new_content (tighten / widen / rewrite / flip), it MUST also set new_rationale naming why; trigger-only and TTL-only edits stay exempt. This aligns the prompt with the validator (which rejects any new_content playbook revision lacking new_rationale). Cited-playbook JSON no longer carries a derived polarity hint — orientation is read from the rule wording. No output schema, variable, or mode changed."
5
+ variables:
6
+ - agent_context
7
+ - window_interactions_json
8
+ - cited_profiles_json
9
+ - cited_user_playbooks_json
10
+ - per_citation_context_json
11
+ ---
12
+ You are reviewing how the agent applied a small set of remembered facts and rules across a recent slice of conversation, with the benefit of seeing what happened *after* the agent used them. Your job is to decide, for each cited item, whether to leave it alone, tighten its phrasing, widen its scope, rewrite it, or — for playbooks only — flip its polarity.
13
+
14
+ [Agent context]
15
+ {agent_context}
16
+
17
+ [Recent interaction window (oldest first; each interaction may include `citations` showing which items it relied on)]
18
+ {window_interactions_json}
19
+
20
+ [Per-citation context]
21
+ For each citation below, a JSON object indicating whether we have a full post-citation horizon. When `has_full_horizon` is false, the post-citation context for that citation is incomplete; bias even more strongly toward no_change for it.
22
+ {per_citation_context_json}
23
+
24
+ [Cited user profile rows that are still current]
25
+ {cited_profiles_json}
26
+
27
+ [Cited user playbook rows that are still current]
28
+ For each cited playbook you receive its `content`, `trigger`, and `rationale`. Read the rule's **orientation** (whether it tells the agent to do something or to avoid something) directly from the wording of `content` — there is no separate polarity field.
29
+ {cited_user_playbooks_json}
30
+
31
+ # Decision rules
32
+
33
+ For each cited item above, emit one ReflectionDecision in `decisions`. A decision is either **no_change** (default) or a **revision** — there is no `action` enum; the LLM signals revision by setting one or more of the optional fields. Default is no_change.
34
+
35
+ Apply the **minimal-edit principle** to every revision: make the smallest edit the window demonstrates, preserve the parts of the item the window did not touch, and avoid accreting detail the window does not support.
36
+
37
+ ## Rationale rule for playbook content edits (all modes)
38
+
39
+ Whenever you set `new_content` on a **playbook** revision — for *any* mode: tighten, widen, rewrite, or flip — you MUST also set `new_rationale` naming the window observation (misapplication, pushback, self-correction, external check, outdated fact, failure trap) that motivates the edit. This is a uniform rule across all content edits, not just flips. A `new_content` playbook revision without `new_rationale` is invalid. Trigger-only and TTL-only edits (no `new_content`) are exempt — they require no `new_rationale`.
40
+
41
+ ## When a cited item contains multiple rules
42
+
43
+ A cited playbook may hold several rules — a few do/avoid points covering the steps of a task. The agent pulled in the whole item because it was relevant, then chose which rules to act on. Identify which rule(s) the window's evidence actually bears on — read the agent's responses, its tool calls, and what happened after it relied on the item (pushback, self-correction, an external check) — and revise only those rule(s), leaving the rest of the content unchanged (minimal-edit).
44
+
45
+ - If the window does not clearly show which rule was applied or how it fared, return `no_change` rather than editing the wrong rule.
46
+ - When you change a rule's orientation (a "do" rule becomes an "avoid" rule or vice versa), set `new_rationale` naming the failure/observation that motivates the flip.
47
+
48
+ ## no_change
49
+
50
+ Set only `target_kind` and `target_id`. Leave every other field null/empty. Choose this whenever you are not sure, AND whenever `has_full_horizon` is false unless the cited turn itself contains very clear evidence (e.g., user explicitly pushed back inside the cited turn's exchange, or the cited row contradicted what the user said earlier in the window).
51
+
52
+ ## Revision modes (set the appropriate fields; the LLM does not emit a category label)
53
+
54
+ - **Tighten (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning. Use when the row was over-retrieved or misapplied but the underlying rule/fact is still correct. Narrow *just enough* to address what the window demonstrates, and keep the rule general enough to cover the cases the window still supports. Do not change orientation. If you set `new_content`, set `new_rationale` (see rule above).
55
+ - **Widen (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning, broadening the trigger/scope. Use when the window shows the rule applies *more broadly* than its current trigger captures — for example, a profile says "likes spicy ramen" but the window shows the user ordering spicy food across multiple cuisines, or a playbook trigger fires on one phrasing the user clearly uses interchangeably with others. Broaden *just enough* to cover what the window actually demonstrates, and keep it within what the window shows. Do not change orientation. If you set `new_content`, set `new_rationale` (see rule above).
56
+ - **Rewrite substance.** Set `new_content` (and `new_rationale` for playbooks). Use when the row is factually wrong or outdated. Edit *just enough* to correct what the window demonstrates, and preserve the still-correct parts of the row. Do not change orientation unless this is also a flip (then follow flip rules below).
57
+ - **Flip orientation** (playbooks only). To flip a rule, **rewrite `new_content`** as the opposite-orientation rule:
58
+ - For a **success → failure** flip, write `new_content` as avoidance guidance starting with `Avoid`, `Do not`, `Don't`, or `Never`.
59
+ - For a **failure → success** flip, write `new_content` as affirmative action guidance.
60
+ Always **set `new_rationale`** naming the failure/observation in the post-citation context that motivates the flip. There is no separate polarity field — the flip is recognized from the rewritten wording plus the failure named in `new_rationale`.
61
+
62
+ Use flip only when the post-citation window shows the cited rule pushed the agent into a failure trap: user pushback against the recommended action, agent self-correction away from it, an external check refuting it, or the user explicitly disliking the outcome.
63
+
64
+ Use no_change when evidence is unclear or absent.
65
+
66
+ # Over-specialization guard (tighten and rewrite)
67
+
68
+ When you tighten or rewrite, edit *just enough* to address what the window demonstrates, and keep the rule applicable to the cases the window still supports. Frame the result as the smallest correct generalization the window justifies. Keep the rule covering the range of situations the window shows it applies to.
69
+
70
+ # Evidence bar for widening
71
+
72
+ Widen only when multiple interactions in the window demonstrate the broader pattern; treat a single occurrence as insufficient and choose no_change instead. Keep the broadened scope within what the window demonstrates.
73
+
74
+ # Hard constraints
75
+
76
+ - Do **not** flip a profile's orientation (profiles have no polarity) — only rewrite/tighten/widen/ttl apply to profiles.
77
+ - Do **not** invent new playbook rules or profile rows. If something new should be remembered, that is a different system's job — return no_change here.
78
+ - Do **not** generalize beyond what the window actually demonstrates.
79
+ - Do **not** propose decisions for items not present in the cited lists above.
80
+ - If both cited lists are empty, return `decisions: []`.
81
+
82
+ Output strictly conforming to the `ReflectionOutput` schema (a JSON object with a single key `decisions`).
@@ -0,0 +1,83 @@
1
+ ---
2
+ active: true
3
+ description: "Sliding-window critique-and-revise pass over user-profile / user-playbook items the agent cited within the recent interaction window. Adds per-citation post-horizon context; playbook flips are expressed by rewriting the rule in the opposite orientation (polarity is derived from wording, never a separate field). When a cited item holds multiple rules, localizes the edit to the rule(s) the window's evidence bears on. Any playbook content rewrite (tighten / widen / rewrite / flip) must carry a new_rationale. Defaults strongly to no_change."
4
+ changelog: "v1.6.0: add an explicit 'Change profile TTL' revision-mode bullet instructing the model to set new_profile_time_to_live when the window shows the profile's current time-to-live is wrong for the stability of the fact (TTL-only edits remain exempt from the new_rationale rule). Closes an instruction gap: ReflectionDecision already supported new_profile_time_to_live and Hard constraints already allowed ttl on profiles, but Revision modes never told the model to use it. No output schema, variable, or other mode changed. v1.5.0: uniform rationale rule — whenever a playbook revision sets new_content (tighten / widen / rewrite / flip), it MUST also set new_rationale naming why; trigger-only and TTL-only edits stay exempt. This aligns the prompt with the validator (which rejects any new_content playbook revision lacking new_rationale). Cited-playbook JSON no longer carries a derived polarity hint — orientation is read from the rule wording. No output schema, variable, or mode changed."
5
+ variables:
6
+ - agent_context
7
+ - window_interactions_json
8
+ - cited_profiles_json
9
+ - cited_user_playbooks_json
10
+ - per_citation_context_json
11
+ ---
12
+ You are reviewing how the agent applied a small set of remembered facts and rules across a recent slice of conversation, with the benefit of seeing what happened *after* the agent used them. Your job is to decide, for each cited item, whether to leave it alone, tighten its phrasing, widen its scope, rewrite it, or — for playbooks only — flip its polarity.
13
+
14
+ [Agent context]
15
+ {agent_context}
16
+
17
+ [Recent interaction window (oldest first; each interaction may include `citations` showing which items it relied on)]
18
+ {window_interactions_json}
19
+
20
+ [Per-citation context]
21
+ For each citation below, a JSON object indicating whether we have a full post-citation horizon. When `has_full_horizon` is false, the post-citation context for that citation is incomplete; bias even more strongly toward no_change for it.
22
+ {per_citation_context_json}
23
+
24
+ [Cited user profile rows that are still current]
25
+ {cited_profiles_json}
26
+
27
+ [Cited user playbook rows that are still current]
28
+ For each cited playbook you receive its `content`, `trigger`, and `rationale`. Read the rule's **orientation** (whether it tells the agent to do something or to avoid something) directly from the wording of `content` — there is no separate polarity field.
29
+ {cited_user_playbooks_json}
30
+
31
+ # Decision rules
32
+
33
+ For each cited item above, emit one ReflectionDecision in `decisions`. A decision is either **no_change** (default) or a **revision** — there is no `action` enum; the LLM signals revision by setting one or more of the optional fields. Default is no_change.
34
+
35
+ Apply the **minimal-edit principle** to every revision: make the smallest edit the window demonstrates, preserve the parts of the item the window did not touch, and avoid accreting detail the window does not support.
36
+
37
+ ## Rationale rule for playbook content edits (all modes)
38
+
39
+ Whenever you set `new_content` on a **playbook** revision — for *any* mode: tighten, widen, rewrite, or flip — you MUST also set `new_rationale` naming the window observation (misapplication, pushback, self-correction, external check, outdated fact, failure trap) that motivates the edit. This is a uniform rule across all content edits, not just flips. A `new_content` playbook revision without `new_rationale` is invalid. Trigger-only and TTL-only edits (no `new_content`) are exempt — they require no `new_rationale`.
40
+
41
+ ## When a cited item contains multiple rules
42
+
43
+ A cited playbook may hold several rules — a few do/avoid points covering the steps of a task. The agent pulled in the whole item because it was relevant, then chose which rules to act on. Identify which rule(s) the window's evidence actually bears on — read the agent's responses, its tool calls, and what happened after it relied on the item (pushback, self-correction, an external check) — and revise only those rule(s), leaving the rest of the content unchanged (minimal-edit).
44
+
45
+ - If the window does not clearly show which rule was applied or how it fared, return `no_change` rather than editing the wrong rule.
46
+ - When you change a rule's orientation (a "do" rule becomes an "avoid" rule or vice versa), set `new_rationale` naming the failure/observation that motivates the flip.
47
+
48
+ ## no_change
49
+
50
+ Set only `target_kind` and `target_id`. Leave every other field null/empty. Choose this whenever you are not sure, AND whenever `has_full_horizon` is false unless the cited turn itself contains very clear evidence (e.g., user explicitly pushed back inside the cited turn's exchange, or the cited row contradicted what the user said earlier in the window).
51
+
52
+ ## Revision modes (set the appropriate fields; the LLM does not emit a category label)
53
+
54
+ - **Tighten (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning. Use when the row was over-retrieved or misapplied but the underlying rule/fact is still correct. Narrow *just enough* to address what the window demonstrates, and keep the rule general enough to cover the cases the window still supports. Do not change orientation. If you set `new_content`, set `new_rationale` (see rule above).
55
+ - **Widen (substance preserved).** Set `new_trigger` (playbook) or rewrite `new_content` keeping the same meaning, broadening the trigger/scope. Use when the window shows the rule applies *more broadly* than its current trigger captures — for example, a profile says "likes spicy ramen" but the window shows the user ordering spicy food across multiple cuisines, or a playbook trigger fires on one phrasing the user clearly uses interchangeably with others. Broaden *just enough* to cover what the window actually demonstrates, and keep it within what the window shows. Do not change orientation. If you set `new_content`, set `new_rationale` (see rule above).
56
+ - **Rewrite substance.** Set `new_content` (and `new_rationale` for playbooks). Use when the row is factually wrong or outdated. Edit *just enough* to correct what the window demonstrates, and preserve the still-correct parts of the row. Do not change orientation unless this is also a flip (then follow flip rules below).
57
+ - **Change profile TTL** (profiles only). Set `new_profile_time_to_live` when the window shows the profile's current time-to-live is wrong for the stability of the fact (e.g. a fact that proved durable should persist longer; a fact that already went stale should expire sooner). Do not also change the profile content unless the window separately demonstrates a content correction. (This is a TTL-only edit when no `new_content` is set — exempt from the `new_rationale` rule.)
58
+ - **Flip orientation** (playbooks only). To flip a rule, **rewrite `new_content`** as the opposite-orientation rule:
59
+ - For a **success → failure** flip, write `new_content` as avoidance guidance starting with `Avoid`, `Do not`, `Don't`, or `Never`.
60
+ - For a **failure → success** flip, write `new_content` as affirmative action guidance.
61
+ Always **set `new_rationale`** naming the failure/observation in the post-citation context that motivates the flip. There is no separate polarity field — the flip is recognized from the rewritten wording plus the failure named in `new_rationale`.
62
+
63
+ Use flip only when the post-citation window shows the cited rule pushed the agent into a failure trap: user pushback against the recommended action, agent self-correction away from it, an external check refuting it, or the user explicitly disliking the outcome.
64
+
65
+ Use no_change when evidence is unclear or absent.
66
+
67
+ # Over-specialization guard (tighten and rewrite)
68
+
69
+ When you tighten or rewrite, edit *just enough* to address what the window demonstrates, and keep the rule applicable to the cases the window still supports. Frame the result as the smallest correct generalization the window justifies. Keep the rule covering the range of situations the window shows it applies to.
70
+
71
+ # Evidence bar for widening
72
+
73
+ Widen only when multiple interactions in the window demonstrate the broader pattern; treat a single occurrence as insufficient and choose no_change instead. Keep the broadened scope within what the window demonstrates.
74
+
75
+ # Hard constraints
76
+
77
+ - Do **not** flip a profile's orientation (profiles have no polarity) — only rewrite/tighten/widen/ttl apply to profiles.
78
+ - Do **not** invent new playbook rules or profile rows. If something new should be remembered, that is a different system's job — return no_change here.
79
+ - Do **not** generalize beyond what the window actually demonstrates.
80
+ - Do **not** propose decisions for items not present in the cited lists above.
81
+ - If both cited lists are empty, return `decisions: []`.
82
+
83
+ Output strictly conforming to the `ReflectionOutput` schema (a JSON object with a single key `decisions`).