powercontext 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. powercontext-0.0.1/.agents/plugins/marketplace.json +19 -0
  2. powercontext-0.0.1/.dockerignore +28 -0
  3. powercontext-0.0.1/.env.example +39 -0
  4. powercontext-0.0.1/.github/ISSUE_TEMPLATE/1-bug-report.yml +66 -0
  5. powercontext-0.0.1/.github/ISSUE_TEMPLATE/2-feature-request.yml +51 -0
  6. powercontext-0.0.1/.github/ISSUE_TEMPLATE/config.yml +5 -0
  7. powercontext-0.0.1/.github/actions/setup-python-env/action.yml +30 -0
  8. powercontext-0.0.1/.github/pull_request_template.md +41 -0
  9. powercontext-0.0.1/.github/workflows/build-artifacts.yml +422 -0
  10. powercontext-0.0.1/.github/workflows/build-docker.yml +128 -0
  11. powercontext-0.0.1/.github/workflows/e2e-harness.yml +185 -0
  12. powercontext-0.0.1/.github/workflows/master.yml +66 -0
  13. powercontext-0.0.1/.github/workflows/release.yml +103 -0
  14. powercontext-0.0.1/.gitignore +217 -0
  15. powercontext-0.0.1/.pre-commit-config.yaml +23 -0
  16. powercontext-0.0.1/AGENTS.md +68 -0
  17. powercontext-0.0.1/CONTRIBUTING.md +117 -0
  18. powercontext-0.0.1/LICENSE +202 -0
  19. powercontext-0.0.1/Makefile +132 -0
  20. powercontext-0.0.1/PKG-INFO +149 -0
  21. powercontext-0.0.1/README.md +92 -0
  22. powercontext-0.0.1/benchmark/README.md +7 -0
  23. powercontext-0.0.1/benchmark/__init__.py +1 -0
  24. powercontext-0.0.1/benchmark/locomo/.env.example +22 -0
  25. powercontext-0.0.1/benchmark/locomo/.gitignore +2 -0
  26. powercontext-0.0.1/benchmark/locomo/LICENSE +206 -0
  27. powercontext-0.0.1/benchmark/locomo/README.md +190 -0
  28. powercontext-0.0.1/benchmark/locomo/__init__.py +1 -0
  29. powercontext-0.0.1/benchmark/locomo/__main__.py +6 -0
  30. powercontext-0.0.1/benchmark/locomo/cli.py +298 -0
  31. powercontext-0.0.1/benchmark/locomo/dataset/locomo10.json +66751 -0
  32. powercontext-0.0.1/benchmark/locomo/dataset.py +255 -0
  33. powercontext-0.0.1/benchmark/locomo/metrics.py +282 -0
  34. powercontext-0.0.1/benchmark/locomo/prompts.py +176 -0
  35. powercontext-0.0.1/benchmark/locomo/results/.gitkeep +0 -0
  36. powercontext-0.0.1/benchmark/locomo/runner.py +1316 -0
  37. powercontext-0.0.1/docker/Dockerfile +57 -0
  38. powercontext-0.0.1/docker/README.md +31 -0
  39. powercontext-0.0.1/docs/en/blog/index.md +21 -0
  40. powercontext-0.0.1/docs/en/changelog/index.md +24 -0
  41. powercontext-0.0.1/docs/en/development/core-protocol.md +139 -0
  42. powercontext-0.0.1/docs/en/development/memory-layer.md +161 -0
  43. powercontext-0.0.1/docs/en/development/pydantic-ai-inference.md +116 -0
  44. powercontext-0.0.1/docs/en/development/remote-access-implementation.md +177 -0
  45. powercontext-0.0.1/docs/en/development/server-web-ui.md +136 -0
  46. powercontext-0.0.1/docs/en/docs/how-to/configure-codex.md +89 -0
  47. powercontext-0.0.1/docs/en/docs/how-to/install-and-run.md +78 -0
  48. powercontext-0.0.1/docs/en/docs/how-to/trace-with-phoenix.md +107 -0
  49. powercontext-0.0.1/docs/en/docs/how-to/troubleshoot.md +137 -0
  50. powercontext-0.0.1/docs/en/docs/index.md +23 -0
  51. powercontext-0.0.1/docs/en/docs/reference/configuration.md +227 -0
  52. powercontext-0.0.1/docs/en/docs/reference/interfaces.md +200 -0
  53. powercontext-0.0.1/docs/en/docs/tutorials/codex-quickstart.md +83 -0
  54. powercontext-0.0.1/docs/en/index.md +9 -0
  55. powercontext-0.0.1/docs/en/modules.md +36 -0
  56. powercontext-0.0.1/docs/en/rfcs/0000_example.md +63 -0
  57. powercontext-0.0.1/docs/en/rfcs/0001_product_definition_and_vision.md +445 -0
  58. powercontext-0.0.1/docs/en/rfcs/0002_core_sdk_product_model.md +266 -0
  59. powercontext-0.0.1/docs/en/rfcs/0011_remote_access_architecture.md +211 -0
  60. powercontext-0.0.1/docs/en/rfcs/0014_memory_layer_design.md +1269 -0
  61. powercontext-0.0.1/docs/en/rfcs/0016_pydantic_ai_inference_integration.md +301 -0
  62. powercontext-0.0.1/docs/en/rfcs/0019_local_source_memory_runtime.md +582 -0
  63. powercontext-0.0.1/docs/en/rfcs/0020_runtime_backed_memory_remote_access.md +571 -0
  64. powercontext-0.0.1/docs/en/rfcs/0028_context_pack.md +785 -0
  65. powercontext-0.0.1/docs/en/rfcs/0046_observability_foundations.md +331 -0
  66. powercontext-0.0.1/docs/en/rfcs/0048_handoff_artifact.md +380 -0
  67. powercontext-0.0.1/docs/en/rfcs/0050_artifact_candidate_review_inbox.md +339 -0
  68. powercontext-0.0.1/docs/en/rfcs/0051_experience_skill_artifact_families.md +616 -0
  69. powercontext-0.0.1/docs/en/rfcs/0072_scoped_statistics_and_usage.md +210 -0
  70. powercontext-0.0.1/docs/en/rfcs/0080_memory_search_reranking.md +210 -0
  71. powercontext-0.0.1/docs/en/rfcs/0081_end_to_end_evaluation_architecture.md +280 -0
  72. powercontext-0.0.1/docs/en/rfcs/0082_handoff_report.md +941 -0
  73. powercontext-0.0.1/docs/en/rfcs/README.md +67 -0
  74. powercontext-0.0.1/docs/index.md +9 -0
  75. powercontext-0.0.1/docs/zh/blog/index.md +21 -0
  76. powercontext-0.0.1/docs/zh/changelog/index.md +24 -0
  77. powercontext-0.0.1/docs/zh/development/core-protocol.md +132 -0
  78. powercontext-0.0.1/docs/zh/development/memory-layer.md +156 -0
  79. powercontext-0.0.1/docs/zh/development/pydantic-ai-inference.md +110 -0
  80. powercontext-0.0.1/docs/zh/development/remote-access-implementation.md +175 -0
  81. powercontext-0.0.1/docs/zh/development/server-web-ui.md +132 -0
  82. powercontext-0.0.1/docs/zh/docs/how-to/configure-codex.md +86 -0
  83. powercontext-0.0.1/docs/zh/docs/how-to/install-and-run.md +75 -0
  84. powercontext-0.0.1/docs/zh/docs/how-to/trace-with-phoenix.md +101 -0
  85. powercontext-0.0.1/docs/zh/docs/how-to/troubleshoot.md +131 -0
  86. powercontext-0.0.1/docs/zh/docs/index.md +23 -0
  87. powercontext-0.0.1/docs/zh/docs/reference/configuration.md +222 -0
  88. powercontext-0.0.1/docs/zh/docs/reference/interfaces.md +192 -0
  89. powercontext-0.0.1/docs/zh/docs/tutorials/codex-quickstart.md +76 -0
  90. powercontext-0.0.1/docs/zh/index.md +9 -0
  91. powercontext-0.0.1/docs/zh/modules.md +35 -0
  92. powercontext-0.0.1/docs/zh/rfcs/0000_example.md +63 -0
  93. powercontext-0.0.1/docs/zh/rfcs/0001_product_definition_and_vision.md +445 -0
  94. powercontext-0.0.1/docs/zh/rfcs/0002_core_sdk_product_model.md +245 -0
  95. powercontext-0.0.1/docs/zh/rfcs/0011_remote_access_architecture.md +197 -0
  96. powercontext-0.0.1/docs/zh/rfcs/0014_memory_layer_design.md +1109 -0
  97. powercontext-0.0.1/docs/zh/rfcs/0016_pydantic_ai_inference_integration.md +267 -0
  98. powercontext-0.0.1/docs/zh/rfcs/0019_local_source_memory_runtime.md +542 -0
  99. powercontext-0.0.1/docs/zh/rfcs/0020_runtime_backed_memory_remote_access.md +559 -0
  100. powercontext-0.0.1/docs/zh/rfcs/0028_context_pack.md +710 -0
  101. powercontext-0.0.1/docs/zh/rfcs/0046_observability_foundations.md +321 -0
  102. powercontext-0.0.1/docs/zh/rfcs/0048_handoff_artifact.md +348 -0
  103. powercontext-0.0.1/docs/zh/rfcs/0050_artifact_candidate_review_inbox.md +308 -0
  104. powercontext-0.0.1/docs/zh/rfcs/0051_experience_skill_artifact_families.md +573 -0
  105. powercontext-0.0.1/docs/zh/rfcs/0072_scoped_statistics_and_usage.md +203 -0
  106. powercontext-0.0.1/docs/zh/rfcs/0080_memory_search_reranking.md +191 -0
  107. powercontext-0.0.1/docs/zh/rfcs/0081_end_to_end_evaluation_architecture.md +261 -0
  108. powercontext-0.0.1/docs/zh/rfcs/0082_handoff_report.md +953 -0
  109. powercontext-0.0.1/docs/zh/rfcs/README.md +66 -0
  110. powercontext-0.0.1/e2e/bub/Dockerfile +22 -0
  111. powercontext-0.0.1/e2e/bub/README.md +57 -0
  112. powercontext-0.0.1/e2e/bub/compose.oceanbase.yaml +35 -0
  113. powercontext-0.0.1/e2e/bub/compose.yaml +65 -0
  114. powercontext-0.0.1/e2e/bub/pyproject.toml +48 -0
  115. powercontext-0.0.1/e2e/bub/run.sh +140 -0
  116. powercontext-0.0.1/e2e/bub/scenarios/locomo-support-group.yaml +45 -0
  117. powercontext-0.0.1/e2e/bub/scenarios/project-database-decision.yaml +20 -0
  118. powercontext-0.0.1/e2e/bub/src/powercontext_e2e/__init__.py +1 -0
  119. powercontext-0.0.1/e2e/bub/src/powercontext_e2e/__main__.py +45 -0
  120. powercontext-0.0.1/e2e/bub/src/powercontext_e2e/models.py +110 -0
  121. powercontext-0.0.1/e2e/bub/src/powercontext_e2e/runner.py +467 -0
  122. powercontext-0.0.1/e2e/bub/src/powercontext_e2e/tracing.py +59 -0
  123. powercontext-0.0.1/e2e/bub/tests/test_evidence_redaction.py +205 -0
  124. powercontext-0.0.1/e2e/bub/tests/test_run_script.py +199 -0
  125. powercontext-0.0.1/e2e/bub/uv.lock +1746 -0
  126. powercontext-0.0.1/integrations/bub/README.md +26 -0
  127. powercontext-0.0.1/integrations/bub/pyproject.toml +19 -0
  128. powercontext-0.0.1/integrations/bub/src/powercontext_bub/__init__.py +6 -0
  129. powercontext-0.0.1/integrations/bub/src/powercontext_bub/plugin.py +137 -0
  130. powercontext-0.0.1/integrations/bub/src/powercontext_bub/tools.py +90 -0
  131. powercontext-0.0.1/integrations/codex/.agents/plugins/marketplace.json +19 -0
  132. powercontext-0.0.1/integrations/codex/README.md +36 -0
  133. powercontext-0.0.1/integrations/codex/plugins/powercontext/.codex-plugin/plugin.json +40 -0
  134. powercontext-0.0.1/integrations/codex/plugins/powercontext/.mcp.json +12 -0
  135. powercontext-0.0.1/integrations/codex/plugins/powercontext/README.md +90 -0
  136. powercontext-0.0.1/integrations/codex/plugins/powercontext/hooks/hooks.json +17 -0
  137. powercontext-0.0.1/integrations/codex/plugins/powercontext/hooks/prepared_context.py +49 -0
  138. powercontext-0.0.1/integrations/codex/plugins/powercontext/hooks/recall.py +348 -0
  139. powercontext-0.0.1/integrations/codex/plugins/powercontext/pyproject.toml +10 -0
  140. powercontext-0.0.1/integrations/codex/plugins/powercontext/scripts/project_scope.py +109 -0
  141. powercontext-0.0.1/integrations/codex/plugins/powercontext/settings.py +150 -0
  142. powercontext-0.0.1/integrations/codex/plugins/powercontext/skills/project-context/SKILL.md +78 -0
  143. powercontext-0.0.1/integrations/codex/plugins/powercontext/skills/project-context/agents/openai.yaml +4 -0
  144. powercontext-0.0.1/integrations/codex/plugins/powercontext/uv.lock +184 -0
  145. powercontext-0.0.1/openapi/powercontext.yaml +4072 -0
  146. powercontext-0.0.1/pyproject.toml +159 -0
  147. powercontext-0.0.1/scripts/generate_api.py +372 -0
  148. powercontext-0.0.1/skills-lock.json +38 -0
  149. powercontext-0.0.1/src/powercontext/__init__.py +72 -0
  150. powercontext-0.0.1/src/powercontext/_logging.py +25 -0
  151. powercontext-0.0.1/src/powercontext/artifacts/__init__.py +13 -0
  152. powercontext-0.0.1/src/powercontext/artifacts/models.py +86 -0
  153. powercontext-0.0.1/src/powercontext/artifacts/protocols.py +45 -0
  154. powercontext-0.0.1/src/powercontext/builtin/__init__.py +8 -0
  155. powercontext-0.0.1/src/powercontext/builtin/artifacts/__init__.py +1 -0
  156. powercontext-0.0.1/src/powercontext/builtin/artifacts/experience/__init__.py +73 -0
  157. powercontext-0.0.1/src/powercontext/builtin/artifacts/experience/generation.py +49 -0
  158. powercontext-0.0.1/src/powercontext/builtin/artifacts/experience/incubation.py +176 -0
  159. powercontext-0.0.1/src/powercontext/builtin/artifacts/experience/models.py +48 -0
  160. powercontext-0.0.1/src/powercontext/builtin/artifacts/experience/prompts.py +46 -0
  161. powercontext-0.0.1/src/powercontext/builtin/artifacts/experience/search.py +42 -0
  162. powercontext-0.0.1/src/powercontext/builtin/artifacts/generation.py +42 -0
  163. powercontext-0.0.1/src/powercontext/builtin/artifacts/handoff/__init__.py +117 -0
  164. powercontext-0.0.1/src/powercontext/builtin/artifacts/handoff/errors.py +65 -0
  165. powercontext-0.0.1/src/powercontext/builtin/artifacts/handoff/generation.py +239 -0
  166. powercontext-0.0.1/src/powercontext/builtin/artifacts/handoff/models.py +412 -0
  167. powercontext-0.0.1/src/powercontext/builtin/artifacts/handoff/prompts.py +24 -0
  168. powercontext-0.0.1/src/powercontext/builtin/artifacts/handoff/protocols.py +67 -0
  169. powercontext-0.0.1/src/powercontext/builtin/artifacts/handoff/service.py +305 -0
  170. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/__init__.py +148 -0
  171. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/canonical.py +294 -0
  172. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/errors.py +85 -0
  173. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/extraction.py +243 -0
  174. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/fusion.py +99 -0
  175. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/models.py +162 -0
  176. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/prompts.py +95 -0
  177. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/protocols.py +163 -0
  178. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/reranking.py +180 -0
  179. powercontext-0.0.1/src/powercontext/builtin/artifacts/memory/service.py +1297 -0
  180. powercontext-0.0.1/src/powercontext/builtin/artifacts/search.py +86 -0
  181. powercontext-0.0.1/src/powercontext/builtin/artifacts/skill/__init__.py +77 -0
  182. powercontext-0.0.1/src/powercontext/builtin/artifacts/skill/external.py +316 -0
  183. powercontext-0.0.1/src/powercontext/builtin/artifacts/skill/generation.py +49 -0
  184. powercontext-0.0.1/src/powercontext/builtin/artifacts/skill/models.py +74 -0
  185. powercontext-0.0.1/src/powercontext/builtin/artifacts/skill/prompts.py +22 -0
  186. powercontext-0.0.1/src/powercontext/builtin/artifacts/skill/registry.py +109 -0
  187. powercontext-0.0.1/src/powercontext/builtin/context.py +42 -0
  188. powercontext-0.0.1/src/powercontext/builtin/handoff_report/__init__.py +174 -0
  189. powercontext-0.0.1/src/powercontext/builtin/handoff_report/adapters.py +55 -0
  190. powercontext-0.0.1/src/powercontext/builtin/handoff_report/application.py +443 -0
  191. powercontext-0.0.1/src/powercontext/builtin/handoff_report/canonical.py +139 -0
  192. powercontext-0.0.1/src/powercontext/builtin/handoff_report/catalog.py +209 -0
  193. powercontext-0.0.1/src/powercontext/builtin/handoff_report/catalog_store.py +734 -0
  194. powercontext-0.0.1/src/powercontext/builtin/handoff_report/errors.py +182 -0
  195. powercontext-0.0.1/src/powercontext/builtin/handoff_report/models.py +469 -0
  196. powercontext-0.0.1/src/powercontext/builtin/handoff_report/protocols.py +40 -0
  197. powercontext-0.0.1/src/powercontext/builtin/handoff_report/rendering.py +357 -0
  198. powercontext-0.0.1/src/powercontext/builtin/handoff_report/report.py +321 -0
  199. powercontext-0.0.1/src/powercontext/builtin/handoff_report/repository.py +135 -0
  200. powercontext-0.0.1/src/powercontext/builtin/handoff_report/selection.py +77 -0
  201. powercontext-0.0.1/src/powercontext/builtin/handoff_report/service.py +238 -0
  202. powercontext-0.0.1/src/powercontext/builtin/handoff_report/sqlite.py +440 -0
  203. powercontext-0.0.1/src/powercontext/builtin/handoff_report/workspace.py +87 -0
  204. powercontext-0.0.1/src/powercontext/builtin/handoff_report/workspace_store.py +307 -0
  205. powercontext-0.0.1/src/powercontext/builtin/inference/__init__.py +38 -0
  206. powercontext-0.0.1/src/powercontext/builtin/inference/errors.py +39 -0
  207. powercontext-0.0.1/src/powercontext/builtin/inference/models.py +32 -0
  208. powercontext-0.0.1/src/powercontext/builtin/inference/protocols.py +33 -0
  209. powercontext-0.0.1/src/powercontext/builtin/inference/pydantic_ai.py +312 -0
  210. powercontext-0.0.1/src/powercontext/builtin/inference/tokens.py +59 -0
  211. powercontext-0.0.1/src/powercontext/builtin/inference/usage.py +91 -0
  212. powercontext-0.0.1/src/powercontext/builtin/persistence/__init__.py +43 -0
  213. powercontext-0.0.1/src/powercontext/builtin/persistence/artifacts.py +401 -0
  214. powercontext-0.0.1/src/powercontext/builtin/persistence/candidates.py +429 -0
  215. powercontext-0.0.1/src/powercontext/builtin/persistence/codec.py +35 -0
  216. powercontext-0.0.1/src/powercontext/builtin/persistence/cursors.py +129 -0
  217. powercontext-0.0.1/src/powercontext/builtin/persistence/database.py +103 -0
  218. powercontext-0.0.1/src/powercontext/builtin/persistence/errors.py +84 -0
  219. powercontext-0.0.1/src/powercontext/builtin/persistence/experience_index.py +230 -0
  220. powercontext-0.0.1/src/powercontext/builtin/persistence/external_skills.py +129 -0
  221. powercontext-0.0.1/src/powercontext/builtin/persistence/handoff.py +143 -0
  222. powercontext-0.0.1/src/powercontext/builtin/persistence/memory.py +601 -0
  223. powercontext-0.0.1/src/powercontext/builtin/persistence/memory_index.py +208 -0
  224. powercontext-0.0.1/src/powercontext/builtin/persistence/oceanbase/__init__.py +13 -0
  225. powercontext-0.0.1/src/powercontext/builtin/persistence/oceanbase/experience_index.py +100 -0
  226. powercontext-0.0.1/src/powercontext/builtin/persistence/oceanbase/memory_index.py +407 -0
  227. powercontext-0.0.1/src/powercontext/builtin/persistence/oceanbase/profile.py +142 -0
  228. powercontext-0.0.1/src/powercontext/builtin/persistence/schema.py +25 -0
  229. powercontext-0.0.1/src/powercontext/builtin/persistence/sources.py +268 -0
  230. powercontext-0.0.1/src/powercontext/builtin/persistence/sqlite/__init__.py +5 -0
  231. powercontext-0.0.1/src/powercontext/builtin/persistence/sqlite/experience_index.py +137 -0
  232. powercontext-0.0.1/src/powercontext/builtin/persistence/sqlite/memory_index.py +544 -0
  233. powercontext-0.0.1/src/powercontext/builtin/persistence/sqlite/profile.py +151 -0
  234. powercontext-0.0.1/src/powercontext/builtin/persistence/statistics.py +299 -0
  235. powercontext-0.0.1/src/powercontext/builtin/persistence/tables.py +421 -0
  236. powercontext-0.0.1/src/powercontext/builtin/review/__init__.py +35 -0
  237. powercontext-0.0.1/src/powercontext/builtin/review/errors.py +55 -0
  238. powercontext-0.0.1/src/powercontext/builtin/review/generation.py +216 -0
  239. powercontext-0.0.1/src/powercontext/builtin/review/models.py +88 -0
  240. powercontext-0.0.1/src/powercontext/builtin/review/service.py +423 -0
  241. powercontext-0.0.1/src/powercontext/builtin/runtime/__init__.py +265 -0
  242. powercontext-0.0.1/src/powercontext/builtin/runtime/application.py +1207 -0
  243. powercontext-0.0.1/src/powercontext/builtin/runtime/composition.py +529 -0
  244. powercontext-0.0.1/src/powercontext/builtin/runtime/config.py +136 -0
  245. powercontext-0.0.1/src/powercontext/builtin/runtime/errors.py +25 -0
  246. powercontext-0.0.1/src/powercontext/builtin/runtime/models.py +336 -0
  247. powercontext-0.0.1/src/powercontext/builtin/runtime/prepared_context.py +273 -0
  248. powercontext-0.0.1/src/powercontext/builtin/runtime/protocols.py +30 -0
  249. powercontext-0.0.1/src/powercontext/builtin/runtime/readiness.py +174 -0
  250. powercontext-0.0.1/src/powercontext/builtin/runtime/recall.py +128 -0
  251. powercontext-0.0.1/src/powercontext/builtin/runtime/relational.py +818 -0
  252. powercontext-0.0.1/src/powercontext/builtin/runtime/scheduler.py +193 -0
  253. powercontext-0.0.1/src/powercontext/builtin/runtime/statistics.py +364 -0
  254. powercontext-0.0.1/src/powercontext/builtin/sources/__init__.py +39 -0
  255. powercontext-0.0.1/src/powercontext/builtin/sources/content.py +60 -0
  256. powercontext-0.0.1/src/powercontext/builtin/sources/external_skill.py +79 -0
  257. powercontext-0.0.1/src/powercontext/builtin/sources/journal.py +33 -0
  258. powercontext-0.0.1/src/powercontext/builtin/statistics/__init__.py +53 -0
  259. powercontext-0.0.1/src/powercontext/builtin/statistics/models.py +251 -0
  260. powercontext-0.0.1/src/powercontext/builtin/triggers/__init__.py +23 -0
  261. powercontext-0.0.1/src/powercontext/builtin/triggers/handoff.py +45 -0
  262. powercontext-0.0.1/src/powercontext/builtin/triggers/source_window.py +46 -0
  263. powercontext-0.0.1/src/powercontext/cli/__init__.py +1 -0
  264. powercontext-0.0.1/src/powercontext/cli/app.py +99 -0
  265. powercontext-0.0.1/src/powercontext/cli/system.py +443 -0
  266. powercontext-0.0.1/src/powercontext/client/__init__.py +12 -0
  267. powercontext-0.0.1/src/powercontext/client/cli.py +829 -0
  268. powercontext-0.0.1/src/powercontext/client/client.py +589 -0
  269. powercontext-0.0.1/src/powercontext/client/errors.py +49 -0
  270. powercontext-0.0.1/src/powercontext/client/projections/__init__.py +38 -0
  271. powercontext-0.0.1/src/powercontext/client/projections/codex.py +84 -0
  272. powercontext-0.0.1/src/powercontext/client/settings.py +38 -0
  273. powercontext-0.0.1/src/powercontext/client/tracing.py +72 -0
  274. powercontext-0.0.1/src/powercontext/context.py +103 -0
  275. powercontext-0.0.1/src/powercontext/errors.py +128 -0
  276. powercontext-0.0.1/src/powercontext/http/__init__.py +319 -0
  277. powercontext-0.0.1/src/powercontext/http/_generated/__init__.py +20 -0
  278. powercontext-0.0.1/src/powercontext/http/_generated/models.py +1642 -0
  279. powercontext-0.0.1/src/powercontext/http/_generated/operations.py +1222 -0
  280. powercontext-0.0.1/src/powercontext/http/_generated/schema.py +3327 -0
  281. powercontext-0.0.1/src/powercontext/limits.py +12 -0
  282. powercontext-0.0.1/src/powercontext/paths.py +46 -0
  283. powercontext-0.0.1/src/powercontext/py.typed +0 -0
  284. powercontext-0.0.1/src/powercontext/server/__init__.py +1 -0
  285. powercontext-0.0.1/src/powercontext/server/access.py +143 -0
  286. powercontext-0.0.1/src/powercontext/server/app.py +1556 -0
  287. powercontext-0.0.1/src/powercontext/server/cli.py +57 -0
  288. powercontext-0.0.1/src/powercontext/server/context.py +42 -0
  289. powercontext-0.0.1/src/powercontext/server/factory.py +255 -0
  290. powercontext-0.0.1/src/powercontext/server/logging.py +116 -0
  291. powercontext-0.0.1/src/powercontext/server/mapping.py +823 -0
  292. powercontext-0.0.1/src/powercontext/server/mcp.py +138 -0
  293. powercontext-0.0.1/src/powercontext/server/metrics.py +177 -0
  294. powercontext-0.0.1/src/powercontext/server/middleware.py +67 -0
  295. powercontext-0.0.1/src/powercontext/server/settings.py +166 -0
  296. powercontext-0.0.1/src/powercontext/server/static/LICENSE.oceanbase-design +22 -0
  297. powercontext-0.0.1/src/powercontext/server/static/auth.js +37 -0
  298. powercontext-0.0.1/src/powercontext/server/static/dashboard.js +592 -0
  299. powercontext-0.0.1/src/powercontext/server/static/handoff-period.js +144 -0
  300. powercontext-0.0.1/src/powercontext/server/static/handoff-report.js +834 -0
  301. powercontext-0.0.1/src/powercontext/server/static/oceanbase-logo.svg +10 -0
  302. powercontext-0.0.1/src/powercontext/server/static/page-ui.js +104 -0
  303. powercontext-0.0.1/src/powercontext/server/static/site.css +1347 -0
  304. powercontext-0.0.1/src/powercontext/server/templates/base.html +40 -0
  305. powercontext-0.0.1/src/powercontext/server/templates/components/activity_heatmap.html +19 -0
  306. powercontext-0.0.1/src/powercontext/server/templates/components/footer.html +11 -0
  307. powercontext-0.0.1/src/powercontext/server/templates/components/header.html +21 -0
  308. powercontext-0.0.1/src/powercontext/server/templates/components/login.html +12 -0
  309. powercontext-0.0.1/src/powercontext/server/templates/components/recall_trend.html +28 -0
  310. powercontext-0.0.1/src/powercontext/server/templates/components/status.html +7 -0
  311. powercontext-0.0.1/src/powercontext/server/templates/pages/dashboard.html +82 -0
  312. powercontext-0.0.1/src/powercontext/server/templates/pages/handoff_report.html +149 -0
  313. powercontext-0.0.1/src/powercontext/server/tracing.py +310 -0
  314. powercontext-0.0.1/src/powercontext/server/web.py +113 -0
  315. powercontext-0.0.1/src/powercontext/sources/__init__.py +14 -0
  316. powercontext-0.0.1/src/powercontext/sources/adapters.py +32 -0
  317. powercontext-0.0.1/src/powercontext/sources/catalog.py +105 -0
  318. powercontext-0.0.1/src/powercontext/sources/models.py +46 -0
  319. powercontext-0.0.1/src/powercontext/sources/protocols.py +26 -0
  320. powercontext-0.0.1/src/powercontext/triggers/__init__.py +9 -0
  321. powercontext-0.0.1/src/powercontext/triggers/models.py +17 -0
  322. powercontext-0.0.1/src/powercontext/triggers/protocols.py +30 -0
  323. powercontext-0.0.1/tests/__init__.py +1 -0
  324. powercontext-0.0.1/tests/builtin/__init__.py +1 -0
  325. powercontext-0.0.1/tests/builtin/artifacts/experience/__init__.py +1 -0
  326. powercontext-0.0.1/tests/builtin/artifacts/experience/test_incubation.py +114 -0
  327. powercontext-0.0.1/tests/builtin/artifacts/experience/test_models.py +50 -0
  328. powercontext-0.0.1/tests/builtin/artifacts/handoff/__init__.py +1 -0
  329. powercontext-0.0.1/tests/builtin/artifacts/handoff/test_generation.py +138 -0
  330. powercontext-0.0.1/tests/builtin/artifacts/handoff/test_models.py +201 -0
  331. powercontext-0.0.1/tests/builtin/artifacts/handoff/test_service.py +388 -0
  332. powercontext-0.0.1/tests/builtin/artifacts/memory/__init__.py +16 -0
  333. powercontext-0.0.1/tests/builtin/artifacts/memory/test_canonical.py +160 -0
  334. powercontext-0.0.1/tests/builtin/artifacts/memory/test_extraction.py +85 -0
  335. powercontext-0.0.1/tests/builtin/artifacts/memory/test_fusion.py +100 -0
  336. powercontext-0.0.1/tests/builtin/artifacts/memory/test_models.py +58 -0
  337. powercontext-0.0.1/tests/builtin/artifacts/memory/test_prompts.py +29 -0
  338. powercontext-0.0.1/tests/builtin/artifacts/memory/test_reranking.py +75 -0
  339. powercontext-0.0.1/tests/builtin/artifacts/memory/test_service.py +168 -0
  340. powercontext-0.0.1/tests/builtin/artifacts/skill/__init__.py +1 -0
  341. powercontext-0.0.1/tests/builtin/artifacts/skill/test_external.py +112 -0
  342. powercontext-0.0.1/tests/builtin/artifacts/skill/test_models.py +37 -0
  343. powercontext-0.0.1/tests/builtin/artifacts/skill/test_registry.py +98 -0
  344. powercontext-0.0.1/tests/builtin/inference/__init__.py +0 -0
  345. powercontext-0.0.1/tests/builtin/inference/test_pydantic_ai.py +383 -0
  346. powercontext-0.0.1/tests/builtin/inference/test_tokens.py +14 -0
  347. powercontext-0.0.1/tests/builtin/persistence/__init__.py +1 -0
  348. powercontext-0.0.1/tests/builtin/persistence/contract.py +116 -0
  349. powercontext-0.0.1/tests/builtin/persistence/test_artifacts.py +155 -0
  350. powercontext-0.0.1/tests/builtin/persistence/test_cursors.py +44 -0
  351. powercontext-0.0.1/tests/builtin/persistence/test_experience_index.py +188 -0
  352. powercontext-0.0.1/tests/builtin/persistence/test_external_skills.py +86 -0
  353. powercontext-0.0.1/tests/builtin/persistence/test_memory.py +177 -0
  354. powercontext-0.0.1/tests/builtin/persistence/test_mysql_schema.py +65 -0
  355. powercontext-0.0.1/tests/builtin/persistence/test_oceanbase_profile.py +151 -0
  356. powercontext-0.0.1/tests/builtin/persistence/test_provider.py +153 -0
  357. powercontext-0.0.1/tests/builtin/persistence/test_sources.py +137 -0
  358. powercontext-0.0.1/tests/builtin/persistence/test_sqlite_profile.py +66 -0
  359. powercontext-0.0.1/tests/builtin/review/__init__.py +0 -0
  360. powercontext-0.0.1/tests/builtin/review/test_generation.py +243 -0
  361. powercontext-0.0.1/tests/builtin/review/test_models.py +43 -0
  362. powercontext-0.0.1/tests/builtin/review/test_persistence.py +71 -0
  363. powercontext-0.0.1/tests/builtin/review/test_service.py +491 -0
  364. powercontext-0.0.1/tests/builtin/runtime/test_experience_incubation.py +179 -0
  365. powercontext-0.0.1/tests/builtin/runtime/test_external_skills.py +195 -0
  366. powercontext-0.0.1/tests/builtin/runtime/test_prepared_context.py +211 -0
  367. powercontext-0.0.1/tests/builtin/runtime/test_readiness.py +29 -0
  368. powercontext-0.0.1/tests/builtin/runtime/test_scheduler.py +228 -0
  369. powercontext-0.0.1/tests/builtin/runtime/test_statistics.py +137 -0
  370. powercontext-0.0.1/tests/codex_plugin/__init__.py +1 -0
  371. powercontext-0.0.1/tests/codex_plugin/conftest.py +34 -0
  372. powercontext-0.0.1/tests/codex_plugin/test_contract.py +137 -0
  373. powercontext-0.0.1/tests/codex_plugin/test_recall.py +523 -0
  374. powercontext-0.0.1/tests/codex_plugin/test_skill_projection.py +77 -0
  375. powercontext-0.0.1/tests/conftest.py +45 -0
  376. powercontext-0.0.1/tests/e2e/__init__.py +1 -0
  377. powercontext-0.0.1/tests/e2e/real_experience_skill/__init__.py +1 -0
  378. powercontext-0.0.1/tests/e2e/real_experience_skill/harness.py +2299 -0
  379. powercontext-0.0.1/tests/e2e/real_experience_skill/recall_evaluation.py +507 -0
  380. powercontext-0.0.1/tests/e2e/real_experience_skill/test_journey.py +28 -0
  381. powercontext-0.0.1/tests/e2e/real_experience_skill/test_recall_evaluation.py +21 -0
  382. powercontext-0.0.1/tests/e2e/test_builtin_runtime.py +108 -0
  383. powercontext-0.0.1/tests/e2e/test_candidate_review.py +434 -0
  384. powercontext-0.0.1/tests/e2e/test_codex_service_chain.py +245 -0
  385. powercontext-0.0.1/tests/e2e/test_external_skill_registry.py +140 -0
  386. powercontext-0.0.1/tests/e2e/test_handoff_runtime.py +332 -0
  387. powercontext-0.0.1/tests/e2e/test_mcp_transport.py +241 -0
  388. powercontext-0.0.1/tests/e2e/test_observability.py +170 -0
  389. powercontext-0.0.1/tests/e2e/test_reviewed_generation.py +128 -0
  390. powercontext-0.0.1/tests/e2e/test_runtime_server.py +576 -0
  391. powercontext-0.0.1/tests/e2e/test_scheduled_experience_incubation.py +117 -0
  392. powercontext-0.0.1/tests/e2e/test_server_cli.py +67 -0
  393. powercontext-0.0.1/tests/e2e/test_sqlite_vec1.py +87 -0
  394. powercontext-0.0.1/tests/e2e/test_statistics_flow.py +284 -0
  395. powercontext-0.0.1/tests/evaluation/test_locomo_benchmark.py +360 -0
  396. powercontext-0.0.1/tests/evaluation/test_locomo_prompts.py +46 -0
  397. powercontext-0.0.1/tests/test_api_contract.py +439 -0
  398. powercontext-0.0.1/tests/test_artifacts.py +142 -0
  399. powercontext-0.0.1/tests/test_capabilities.py +28 -0
  400. powercontext-0.0.1/tests/test_cli.py +602 -0
  401. powercontext-0.0.1/tests/test_client.py +190 -0
  402. powercontext-0.0.1/tests/test_dashboard.py +120 -0
  403. powercontext-0.0.1/tests/test_handoff_report_canonical.py +72 -0
  404. powercontext-0.0.1/tests/test_handoff_report_catalog.py +234 -0
  405. powercontext-0.0.1/tests/test_handoff_report_http.py +248 -0
  406. powercontext-0.0.1/tests/test_handoff_report_models.py +185 -0
  407. powercontext-0.0.1/tests/test_handoff_report_repository.py +266 -0
  408. powercontext-0.0.1/tests/test_handoff_report_selection.py +194 -0
  409. powercontext-0.0.1/tests/test_handoff_report_service.py +420 -0
  410. powercontext-0.0.1/tests/test_handoff_report_workspace.py +159 -0
  411. powercontext-0.0.1/tests/test_mcp.py +190 -0
  412. powercontext-0.0.1/tests/test_server.py +619 -0
  413. powercontext-0.0.1/tests/test_server_embedding.py +56 -0
  414. powercontext-0.0.1/tests/test_server_logging.py +68 -0
  415. powercontext-0.0.1/tests/test_server_metrics.py +125 -0
  416. powercontext-0.0.1/tests/test_server_tracing.py +145 -0
  417. powercontext-0.0.1/tests/test_sources.py +270 -0
  418. powercontext-0.0.1/tests/test_system_cli.py +344 -0
  419. powercontext-0.0.1/theme/powercontext/assets/images/LICENSE.oceanbase-design +22 -0
  420. powercontext-0.0.1/theme/powercontext/assets/images/oceanbase-logo.svg +10 -0
  421. powercontext-0.0.1/theme/powercontext/assets/javascripts/landing-visual.js +477 -0
  422. powercontext-0.0.1/theme/powercontext/assets/javascripts/language-switcher.js +38 -0
  423. powercontext-0.0.1/theme/powercontext/assets/stylesheets/powercontext.css +1007 -0
  424. powercontext-0.0.1/theme/powercontext/assets/stylesheets/pygments-github-dark.css +87 -0
  425. powercontext-0.0.1/theme/powercontext/home.html +57 -0
  426. powercontext-0.0.1/theme/powercontext/listing.html +23 -0
  427. powercontext-0.0.1/theme/powercontext/main.html +12 -0
  428. powercontext-0.0.1/theme/powercontext/partials/footer.html +67 -0
  429. powercontext-0.0.1/theme/powercontext/partials/header.html +51 -0
  430. powercontext-0.0.1/theme/powercontext/partials/language.html +4 -0
  431. powercontext-0.0.1/theme/powercontext/partials/logo.html +1 -0
  432. powercontext-0.0.1/theme/powercontext/partials/nav.html +50 -0
  433. powercontext-0.0.1/theme/powercontext/partials/path.html +14 -0
  434. powercontext-0.0.1/theme/powercontext/partials/source.html +7 -0
  435. powercontext-0.0.1/tox.ini +18 -0
  436. powercontext-0.0.1/uv.lock +3525 -0
  437. powercontext-0.0.1/zensical.toml +161 -0
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "powercontext",
3
+ "interface": {
4
+ "displayName": "PowerContext"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "powercontext",
9
+ "source": {
10
+ "source": "local",
11
+ "path": "./integrations/codex/plugins/powercontext"
12
+ },
13
+ "policy": {
14
+ "installation": "AVAILABLE"
15
+ },
16
+ "category": "Productivity"
17
+ }
18
+ ]
19
+ }
@@ -0,0 +1,28 @@
1
+ .git
2
+ .github
3
+ .agents
4
+ .venv
5
+ **/.venv
6
+ .tox
7
+ .pytest_cache
8
+ **/.pytest_cache
9
+ .ruff_cache
10
+ **/.ruff_cache
11
+ .mypy_cache
12
+ .powercontext
13
+ __pycache__
14
+ **/__pycache__
15
+ *.py[cod]
16
+ *.db
17
+ *.sqlite*
18
+ .env
19
+ .env.*
20
+ build
21
+ dist
22
+ site
23
+ docs
24
+ integrations/*
25
+ !integrations/bub
26
+ !integrations/bub/**
27
+ openapi
28
+ tests
@@ -0,0 +1,39 @@
1
+ # Copy this file to .env, replace the API key, then load it with:
2
+ # set -a; . ./.env; set +a
3
+
4
+ # Server transport
5
+ POWERCONTEXT_SERVER_HTTP_HOST=127.0.0.1
6
+ POWERCONTEXT_SERVER_HTTP_PORT=8000
7
+ POWERCONTEXT_SERVER_MCP_ENABLED=true
8
+ POWERCONTEXT_SERVER_MCP_PATH=/mcp
9
+
10
+ # Built-in SQLite database. Use an absolute Vec1 path in deployed environments.
11
+ POWERCONTEXT_SERVER_DATABASE_KIND=sqlite
12
+ POWERCONTEXT_SERVER_DATABASE_URL=sqlite+aiosqlite:///.powercontext/powercontext.db
13
+ POWERCONTEXT_SERVER_DATABASE_VEC1_EXTENSION=.powercontext/vec1.so
14
+
15
+ # To use OceanBase instead, replace the SQLite database values:
16
+ # POWERCONTEXT_SERVER_DATABASE_KIND=oceanbase
17
+ # POWERCONTEXT_SERVER_DATABASE_URL=mysql+aoceanbase://user:password@host:2881/powercontext?charset=utf8mb4
18
+
19
+ # Source windows are flushed explicitly unless the optional interval is set.
20
+ POWERCONTEXT_SERVER_RUNTIME_SOURCE_WINDOW_LIMIT=100
21
+ # POWERCONTEXT_SERVER_RUNTIME_SCHEDULE_SECONDS=60
22
+
23
+ # OpenRouter generation and embeddings
24
+ POWERCONTEXT_SERVER_INFERENCE_GENERATION_MODEL=openrouter:deepseek/deepseek-v4-pro
25
+ POWERCONTEXT_SERVER_INFERENCE_GENERATION_TIMEOUT_SECONDS=30
26
+ POWERCONTEXT_SERVER_INFERENCE_GENERATION_MAX_REQUESTS=2
27
+ POWERCONTEXT_SERVER_INFERENCE_EMBEDDING_MODEL=openrouter:qwen/qwen3-embedding-4b
28
+ POWERCONTEXT_SERVER_INFERENCE_EMBEDDING_PROFILE_ID=openrouter-qwen3-embedding-4b-2560-unit
29
+ POWERCONTEXT_SERVER_INFERENCE_EMBEDDING_DIMENSION=2560
30
+ POWERCONTEXT_SERVER_INFERENCE_EMBEDDING_NORMALIZATION=unit
31
+ POWERCONTEXT_SERVER_INFERENCE_EMBEDDING_TIMEOUT_SECONDS=30
32
+
33
+ OPENROUTER_API_KEY=replace-me
34
+ OPENROUTER_APP_TITLE=PowerContext
35
+ # OPENROUTER_APP_URL=https://your-application.example
36
+
37
+ # Client CLI
38
+ POWERCONTEXT_CLIENT_SERVER_URL=http://127.0.0.1:8000
39
+ POWERCONTEXT_CLIENT_TIMEOUT=10
@@ -0,0 +1,66 @@
1
+ name: Bug Report
2
+ description: Report a reproducible problem in PowerContext
3
+ title: "bug: "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: "Thank you for taking the time to report a bug. Please provide enough detail for maintainers to reproduce and diagnose the issue."
9
+
10
+ - type: textarea
11
+ id: describe-bug
12
+ attributes:
13
+ label: Describe the bug
14
+ description: "A clear and concise description of the problem."
15
+ placeholder: "Describe what went wrong..."
16
+ validations:
17
+ required: true
18
+
19
+ - type: textarea
20
+ id: steps-to-reproduce
21
+ attributes:
22
+ label: Steps to reproduce
23
+ description: "List the exact steps, commands, inputs, or environment state needed to reproduce the behavior."
24
+ placeholder: |
25
+ 1. ...
26
+ 2. ...
27
+ 3. ...
28
+ validations:
29
+ required: true
30
+
31
+ - type: textarea
32
+ id: expected-behavior
33
+ attributes:
34
+ label: Expected behavior
35
+ description: "Describe what you expected to happen."
36
+ placeholder: "Explain the expected result..."
37
+ validations:
38
+ required: true
39
+
40
+ - type: textarea
41
+ id: actual-behavior
42
+ attributes:
43
+ label: Actual behavior
44
+ description: "Describe what actually happened. Include relevant logs, stack traces, or screenshots."
45
+ placeholder: "Paste logs or error output here..."
46
+ validations:
47
+ required: false
48
+
49
+ - type: textarea
50
+ id: environment
51
+ attributes:
52
+ label: Environment
53
+ description: "Share the version, Python runtime, operating system, and any relevant dependency versions."
54
+ placeholder: |
55
+ - PowerContext version:
56
+ - Python version:
57
+ - OS:
58
+ validations:
59
+ required: false
60
+
61
+ - type: checkboxes
62
+ id: willing-to-submit-pr
63
+ attributes:
64
+ label: Are you willing to submit a PR to fix this bug?
65
+ options:
66
+ - label: "Yes, I would like to submit a PR."
@@ -0,0 +1,51 @@
1
+ name: Feature Request
2
+ description: Suggest an improvement or new capability for PowerContext
3
+ title: "feat: "
4
+ labels: ["enhancement"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: "Thank you for suggesting an improvement. Substantial changes may be asked to go through the RFC process under `docs/rfcs` before implementation."
9
+
10
+ - type: textarea
11
+ id: feature-description
12
+ attributes:
13
+ label: Feature description
14
+ description: "Describe the capability you would like to see."
15
+ placeholder: "Describe the feature..."
16
+ validations:
17
+ required: true
18
+
19
+ - type: textarea
20
+ id: problem-solution
21
+ attributes:
22
+ label: Problem and proposed solution
23
+ description: "Explain the problem this solves and how you expect the solution to work."
24
+ placeholder: "What problem does this solve? What should the user experience or API look like?"
25
+ validations:
26
+ required: true
27
+
28
+ - type: textarea
29
+ id: alternatives
30
+ attributes:
31
+ label: Alternatives considered
32
+ description: "List any alternative designs, workarounds, or tradeoffs you have considered."
33
+ placeholder: "Describe alternatives or explain why they are not enough..."
34
+ validations:
35
+ required: false
36
+
37
+ - type: textarea
38
+ id: additional-context
39
+ attributes:
40
+ label: Additional context
41
+ description: "Add any other context, examples, screenshots, or links."
42
+ placeholder: "Add supporting details here..."
43
+ validations:
44
+ required: false
45
+
46
+ - type: checkboxes
47
+ id: willing-to-contribute
48
+ attributes:
49
+ label: Are you willing to contribute to this feature?
50
+ options:
51
+ - label: "Yes, I am willing to contribute code, docs, or design feedback."
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Discussions
4
+ url: https://github.com/oceanbase/powercontext/discussions
5
+ about: Ask questions and discuss ideas before filing an issue.
@@ -0,0 +1,30 @@
1
+ name: "Setup Python Environment"
2
+ description: "Set up Python environment for the given Python version"
3
+
4
+ inputs:
5
+ python-version:
6
+ description: "Python version to use"
7
+ required: true
8
+ default: "3.12"
9
+ uv-version:
10
+ description: "uv version to use"
11
+ required: true
12
+ default: "0.10.12"
13
+
14
+ runs:
15
+ using: "composite"
16
+ steps:
17
+ - uses: actions/setup-python@v6
18
+ with:
19
+ python-version: ${{ inputs.python-version }}
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v9.0.0
23
+ with:
24
+ version: ${{ inputs.uv-version }}
25
+ enable-cache: 'true'
26
+ cache-suffix: ${{ matrix.python-version }}
27
+
28
+ - name: Install Python dependencies
29
+ run: uv sync --frozen
30
+ shell: bash
@@ -0,0 +1,41 @@
1
+ # Which issue or RFC does this PR close?
2
+
3
+ <!--
4
+ Link the related issue or RFC using GitHub syntax.
5
+ For example, `Closes #123` indicates that this PR will close issue #123.
6
+ If this PR implements an RFC, link the RFC and any existing tracking issue.
7
+ -->
8
+
9
+ Closes #.
10
+
11
+ # Rationale for this change
12
+
13
+ <!--
14
+ Explain why this change is needed. If the linked issue or RFC already explains the rationale clearly, a short summary is enough.
15
+ -->
16
+
17
+ # What changes are included in this PR?
18
+
19
+ <!--
20
+ Summarize the important changes. Focus on behavior, API, docs, tests, and migration impact.
21
+ -->
22
+
23
+ # Are there any user-facing changes?
24
+
25
+ <!--
26
+ If there are user-facing changes, documentation may need to be updated before approval.
27
+ If there are breaking changes to public APIs or persisted formats, call them out explicitly.
28
+ -->
29
+
30
+ # How was this change tested?
31
+
32
+ <!--
33
+ List commands run, tests added or updated, and any manual validation performed.
34
+ -->
35
+
36
+ # AI usage statement
37
+
38
+ <!--
39
+ If AI tools were used to build this PR, describe the tool and model where possible.
40
+ If not applicable, write `Not used`.
41
+ -->