langbot-plugin 0.6.7__tar.gz → 0.6.9__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 (371) hide show
  1. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/PKG-INFO +1 -1
  2. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/pyproject.toml +1 -1
  3. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/mgr.py +30 -7
  4. langbot_plugin-0.6.9/src/langbot_plugin/version.py +1 -0
  5. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/packaging/test_release_metadata.py +2 -2
  6. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_installation_manager.py +126 -0
  7. langbot_plugin-0.6.7/src/langbot_plugin/version.py +0 -1
  8. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/.github/workflows/cla.yml +0 -0
  9. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/.github/workflows/publish-pypi.yaml +0 -0
  10. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/.github/workflows/publish.yml +0 -0
  11. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/.github/workflows/test.yml +0 -0
  12. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/.gitignore +0 -0
  13. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/.python-version +0 -0
  14. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/AGENTS.md +0 -0
  15. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/ARCHITECTURE.md +0 -0
  16. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/CLAUDE.md +0 -0
  17. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/CONTRIBUTING.md +0 -0
  18. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/LICENSE +0 -0
  19. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/README.md +0 -0
  20. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/README_CN.md +0 -0
  21. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/data/.env.example +0 -0
  22. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/Message.md +0 -0
  23. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/PluginPages.md +0 -0
  24. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/agent-runner-interactions.md +0 -0
  25. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/agent-runner-pluginization/PROTOCOL_V1.md +0 -0
  26. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/agent-runner-pluginization/README.md +0 -0
  27. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/agent-runner-pluginization/SDK_RUNTIME_PLAN.md +0 -0
  28. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/certified-plugins.md +0 -0
  29. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/communication/apis/lb2rt.md +0 -0
  30. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/communication/runtime_plugin.md +0 -0
  31. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/dependency-management.md +0 -0
  32. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/langbot-plugin-social.png +0 -0
  33. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/docs/runner.md +0 -0
  34. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/mypy.ini +0 -0
  35. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/scripts/check_action_consistency.py +0 -0
  36. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/scripts/runtime_resource_probe.py +0 -0
  37. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/__init__.py +0 -0
  38. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/__init__.py +0 -0
  39. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/__init__.py +0 -0
  40. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/asset_gateway.py +0 -0
  41. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/daemon.py +0 -0
  42. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/decorators.py +0 -0
  43. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/external_tools.py +0 -0
  44. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/mcp_access.py +0 -0
  45. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/mcp_bridge.py +0 -0
  46. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/mcp_config.py +0 -0
  47. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/mcp_protocol.py +0 -0
  48. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/agent_tools/mcp_stdio.py +0 -0
  49. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/__init__.py +0 -0
  50. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/abstract/__init__.py +0 -0
  51. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/abstract/platform/__init__.py +0 -0
  52. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/abstract/platform/adapter.py +0 -0
  53. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/abstract/platform/event_logger.py +0 -0
  54. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/__init__.py +0 -0
  55. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/base.py +0 -0
  56. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/command/__init__.py +0 -0
  57. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/command/command.py +0 -0
  58. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/common/__init__.py +0 -0
  59. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/common/event_listener.py +0 -0
  60. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/knowledge_engine/__init__.py +0 -0
  61. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/knowledge_engine/engine.py +0 -0
  62. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/manifest.py +0 -0
  63. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/page/__init__.py +0 -0
  64. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/parser/__init__.py +0 -0
  65. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/parser/parser.py +0 -0
  66. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/runner/__init__.py +0 -0
  67. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/runner/runner.py +0 -0
  68. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/tool/__init__.py +0 -0
  69. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/components/tool/tool.py +0 -0
  70. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/definition/plugin.py +0 -0
  71. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/__init__.py +0 -0
  72. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/__init__.py +0 -0
  73. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/command/__init__.py +0 -0
  74. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/command/context.py +0 -0
  75. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/command/errors.py +0 -0
  76. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/pipeline/__init__.py +0 -0
  77. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/pipeline/query.py +0 -0
  78. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/platform/__init__.py +0 -0
  79. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/platform/entities.py +0 -0
  80. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/platform/errors.py +0 -0
  81. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/platform/events.py +0 -0
  82. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/platform/logger.py +0 -0
  83. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/platform/message.py +0 -0
  84. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/provider/__init__.py +0 -0
  85. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/provider/message.py +0 -0
  86. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/provider/prompt.py +0 -0
  87. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/provider/reasoning.py +0 -0
  88. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/provider/session.py +0 -0
  89. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/rag/__init__.py +0 -0
  90. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/rag/context.py +0 -0
  91. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/rag/enums.py +0 -0
  92. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/rag/errors.py +0 -0
  93. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/rag/models.py +0 -0
  94. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/resource/__init__.py +0 -0
  95. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/resource/tool.py +0 -0
  96. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/__init__.py +0 -0
  97. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/box.py +0 -0
  98. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/capabilities.py +0 -0
  99. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/compat.py +0 -0
  100. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/context.py +0 -0
  101. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/context_access.py +0 -0
  102. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/delivery.py +0 -0
  103. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/errors.py +0 -0
  104. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/event.py +0 -0
  105. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/input.py +0 -0
  106. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/interaction.py +0 -0
  107. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/manifest.py +0 -0
  108. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/page_results.py +0 -0
  109. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/permissions.py +0 -0
  110. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/resources.py +0 -0
  111. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/result.py +0 -0
  112. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/run_ledger.py +0 -0
  113. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/runtime.py +0 -0
  114. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/runtime_registry.py +0 -0
  115. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/state.py +0 -0
  116. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/stats.py +0 -0
  117. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/steering.py +0 -0
  118. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/transcript.py +0 -0
  119. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/builtin/runner/trigger.py +0 -0
  120. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/context.py +0 -0
  121. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/events.py +0 -0
  122. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/entities/execution.py +0 -0
  123. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/__init__.py +0 -0
  124. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/base.py +0 -0
  125. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/event_context.py +0 -0
  126. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/execute_context.py +0 -0
  127. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/invocation.py +0 -0
  128. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/langbot_api.py +0 -0
  129. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/query_based_api.py +0 -0
  130. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/__init__.py +0 -0
  131. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/admin.py +0 -0
  132. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/api.py +0 -0
  133. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/box.py +0 -0
  134. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/common.py +0 -0
  135. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/context.py +0 -0
  136. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/ledger.py +0 -0
  137. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/platform.py +0 -0
  138. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/reply_stream.py +0 -0
  139. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/resources.py +0 -0
  140. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/state.py +0 -0
  141. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/api/proxies/runner/tracing.py +0 -0
  142. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/__init__.py +0 -0
  143. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/langbot-page-sdk.js +0 -0
  144. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/.env.example.example +0 -0
  145. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/.github/workflows/release.yml.example +0 -0
  146. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/.gitignore.example +0 -0
  147. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/.vscode/launch.json.example +0 -0
  148. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/README.md.example +0 -0
  149. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/__init__.py +0 -0
  150. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/assets/icon.svg.example +0 -0
  151. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/__init__.py +0 -0
  152. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/commands/__init__.py +0 -0
  153. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/commands/{cmd_name}.py.example +0 -0
  154. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/commands/{cmd_name}.yaml.example +0 -0
  155. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/event_listener/__init__.py +0 -0
  156. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/event_listener/default.py.example +0 -0
  157. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/event_listener/default.yaml.example +0 -0
  158. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/knowledge_engine/__init__.py +0 -0
  159. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/knowledge_engine/{knowledge_engine_name}.py.example +0 -0
  160. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/knowledge_engine/{knowledge_engine_name}.yaml.example +0 -0
  161. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/pages/{page_name}.html.example +0 -0
  162. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/pages/{page_name}.yaml.example +0 -0
  163. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/parser/__init__.py +0 -0
  164. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/parser/{parser_name}.py.example +0 -0
  165. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/parser/{parser_name}.yaml.example +0 -0
  166. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/runner/__init__.py +0 -0
  167. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/runner/{runner_name}.py.example +0 -0
  168. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/runner/{runner_name}.yaml.example +0 -0
  169. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/tools/__init__.py +0 -0
  170. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/tools/{tool_name}.py.example +0 -0
  171. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/components/tools/{tool_name}.yaml.example +0 -0
  172. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/main.py.example +0 -0
  173. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/manifest.yaml.example +0 -0
  174. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/readme/README_zh_Hans.md.example +0 -0
  175. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/assets/templates/requirements.txt.example +0 -0
  176. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/__init__.py +0 -0
  177. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/actions.py +0 -0
  178. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/backend.py +0 -0
  179. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/client.py +0 -0
  180. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/e2b_backend.py +0 -0
  181. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/errors.py +0 -0
  182. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/host_backend.py +0 -0
  183. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/models.py +0 -0
  184. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/nsjail_backend.py +0 -0
  185. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/runtime.py +0 -0
  186. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/security.py +0 -0
  187. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/server.py +0 -0
  188. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/skill_store.py +0 -0
  189. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/box/tenancy.py +0 -0
  190. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/certification.py +0 -0
  191. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/__init__.py +0 -0
  192. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/__main__.py +0 -0
  193. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/__init__.py +0 -0
  194. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/buildplugin.py +0 -0
  195. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/gencomponent.py +0 -0
  196. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/initplugin.py +0 -0
  197. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/login.py +0 -0
  198. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/logout.py +0 -0
  199. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/publish.py +0 -0
  200. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/commands/runplugin.py +0 -0
  201. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/gen/__init__.py +0 -0
  202. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/gen/renderer.py +0 -0
  203. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/i18n.py +0 -0
  204. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/__init__.py +0 -0
  205. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/en_US.py +0 -0
  206. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/es_ES.py +0 -0
  207. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/ja_JP.py +0 -0
  208. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/th_TH.py +0 -0
  209. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/vi_VN.py +0 -0
  210. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/zh_Hans.py +0 -0
  211. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/locales/zh_Hant.py +0 -0
  212. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/run/__init__.py +0 -0
  213. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/run/controller.py +0 -0
  214. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/run/handler.py +0 -0
  215. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/run/hotreload.py +0 -0
  216. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/utils/__init__.py +0 -0
  217. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/utils/cloudsv.py +0 -0
  218. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/utils/form.py +0 -0
  219. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/cli/utils/page_components.py +0 -0
  220. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/__init__.py +0 -0
  221. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/io/__init__.py +0 -0
  222. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/io/actions/__init__.py +0 -0
  223. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/io/actions/enums.py +0 -0
  224. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/io/context.py +0 -0
  225. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/io/errors.py +0 -0
  226. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/io/req.py +0 -0
  227. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/io/resp.py +0 -0
  228. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/entities/marketplace.py +0 -0
  229. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/LICENSE +0 -0
  230. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/README.md +0 -0
  231. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/__init__.py +0 -0
  232. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/app.py +0 -0
  233. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/bounded_executor.py +0 -0
  234. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/context.py +0 -0
  235. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/event_loop_monitor.py +0 -0
  236. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/helper/__init__.py +0 -0
  237. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/helper/marketplace.py +0 -0
  238. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/helper/pkgmgr.py +0 -0
  239. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/__init__.py +0 -0
  240. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/connection.py +0 -0
  241. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/connections/__init__.py +0 -0
  242. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/connections/stdio.py +0 -0
  243. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/connections/ws.py +0 -0
  244. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controller.py +0 -0
  245. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controllers/__init__.py +0 -0
  246. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controllers/stdio/__init__.py +0 -0
  247. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controllers/stdio/client.py +0 -0
  248. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controllers/stdio/server.py +0 -0
  249. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controllers/ws/__init__.py +0 -0
  250. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controllers/ws/client.py +0 -0
  251. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/controllers/ws/server.py +0 -0
  252. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/handler.py +0 -0
  253. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/handlers/__init__.py +0 -0
  254. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/handlers/control.py +0 -0
  255. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/io/handlers/plugin.py +0 -0
  256. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/__init__.py +0 -0
  257. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/artifact.py +0 -0
  258. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/container.py +0 -0
  259. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/dependency_environment.py +0 -0
  260. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/logbuffer.py +0 -0
  261. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/restart_coordinator.py +0 -0
  262. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/runner_service.py +0 -0
  263. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/plugin/worker_launcher.py +0 -0
  264. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/security.py +0 -0
  265. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/runtime/settings.py +0 -0
  266. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/storage.py +0 -0
  267. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/utils/__init__.py +0 -0
  268. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/utils/deadline.py +0 -0
  269. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/utils/discover/__init__.py +0 -0
  270. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/utils/discover/engine.py +0 -0
  271. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/utils/importutil.py +0 -0
  272. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/utils/log.py +0 -0
  273. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/src/langbot_plugin/utils/platform.py +0 -0
  274. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/__init__.py +0 -0
  275. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/definition/components/test_components.py +0 -0
  276. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/definition/components/test_imports.py +0 -0
  277. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/definition/test_manifest.py +0 -0
  278. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/runner/test_context_result.py +0 -0
  279. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/runner/test_history_event_entities.py +0 -0
  280. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/runner/test_interaction.py +0 -0
  281. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/runner/test_run_ledger_entities.py +0 -0
  282. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/test_command_context.py +0 -0
  283. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/test_platform_logger.py +0 -0
  284. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/test_provider_message.py +0 -0
  285. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/builtin/test_rag_models.py +0 -0
  286. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/test_context.py +0 -0
  287. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/entities/test_events.py +0 -0
  288. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/__init__.py +0 -0
  289. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/test_agent_run_api_proxy.py +0 -0
  290. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/test_base.py +0 -0
  291. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/test_box_api.py +0 -0
  292. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/test_history_event_api_proxy.py +0 -0
  293. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/test_langbot_api.py +0 -0
  294. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/test_query_based_api.py +0 -0
  295. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/proxies/test_reasoning_parameter.py +0 -0
  296. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/test_agent_tools_mcp_bridge.py +0 -0
  297. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/test_runner_handlers.py +0 -0
  298. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/test_runner_handlers_matrix.py +0 -0
  299. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/api/test_runner_public_apis.py +0 -0
  300. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/__init__.py +0 -0
  301. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_admission.py +0 -0
  302. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_backend.py +0 -0
  303. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_backend_selection.py +0 -0
  304. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_client.py +0 -0
  305. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_e2b_backend.py +0 -0
  306. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_host_backend.py +0 -0
  307. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_nsjail_backend.py +0 -0
  308. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_runtime.py +0 -0
  309. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_server.py +0 -0
  310. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_skill_store.py +0 -0
  311. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/box/test_storage_analysis.py +0 -0
  312. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/run/test_controller.py +0 -0
  313. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/run/test_hotreload.py +0 -0
  314. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/run/test_runtime_handler.py +0 -0
  315. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_buildplugin.py +0 -0
  316. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_gencomponent.py +0 -0
  317. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_i18n_form.py +0 -0
  318. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_initplugin.py +0 -0
  319. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_login.py +0 -0
  320. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_logout_publish.py +0 -0
  321. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_page_components.py +0 -0
  322. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_renderer.py +0 -0
  323. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_runner_usages.py +0 -0
  324. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/cli/test_runplugin.py +0 -0
  325. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/e2e/standalone_runtime_eba_probe.py +0 -0
  326. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/entities/io/test_dependency_errors.py +0 -0
  327. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/entities/io/test_protocol.py +0 -0
  328. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/fixtures/eba_event_probe_plugin/.gitignore +0 -0
  329. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/fixtures/eba_event_probe_plugin/assets/icon.svg +0 -0
  330. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/fixtures/eba_event_probe_plugin/components/event_listener/default.py +0 -0
  331. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/fixtures/eba_event_probe_plugin/components/event_listener/default.yaml +0 -0
  332. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/fixtures/eba_event_probe_plugin/main.py +0 -0
  333. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/fixtures/eba_event_probe_plugin/manifest.yaml +0 -0
  334. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/helpers/__init__.py +0 -0
  335. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/helpers/protocol.py +0 -0
  336. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/packaging/test_installed_cli_blackbox.py +0 -0
  337. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/helper/test_marketplace.py +0 -0
  338. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/helper/test_pkgmgr.py +0 -0
  339. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/handlers/test_control_handler.py +0 -0
  340. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/handlers/test_import_contracts.py +0 -0
  341. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/handlers/test_legacy_file_chunk.py +0 -0
  342. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/handlers/test_plugin_handler.py +0 -0
  343. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/test_action_consistency.py +0 -0
  344. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/test_connections.py +0 -0
  345. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/test_controllers.py +0 -0
  346. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/test_handler.py +0 -0
  347. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/test_heartbeat_admission.py +0 -0
  348. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/io/test_stdio_server.py +0 -0
  349. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_artifact_store.py +0 -0
  350. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_container.py +0 -0
  351. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_dependency_environment.py +0 -0
  352. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_legacy_shadow.py +0 -0
  353. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_manager.py +0 -0
  354. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_mgr_runner.py +0 -0
  355. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_restart_coordinator.py +0 -0
  356. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_shared_worker_subprocess.py +0 -0
  357. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_worker_launcher.py +0 -0
  358. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/plugin/test_workload_isolation.py +0 -0
  359. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/test_app.py +0 -0
  360. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/test_bounded_executor.py +0 -0
  361. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/test_event_loop_monitor.py +0 -0
  362. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/runtime/test_pull_api_handlers.py +0 -0
  363. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/test_certification.py +0 -0
  364. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/test_log.py +0 -0
  365. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/test_message.py +0 -0
  366. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/test_plugin_logbuffer.py +0 -0
  367. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/test_storage.py +0 -0
  368. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/utils/test_deadline.py +0 -0
  369. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/utils/test_discovery.py +0 -0
  370. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/utils/test_importutil.py +0 -0
  371. {langbot_plugin-0.6.7 → langbot_plugin-0.6.9}/tests/utils/test_platform.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: langbot-plugin
3
- Version: 0.6.7
3
+ Version: 0.6.9
4
4
  Summary: This package contains the SDK, CLI for building plugins for LangBot, plus the runtime for hosting LangBot plugins
5
5
  Project-URL: Homepage, https://langbot.app
6
6
  Project-URL: Repository, https://github.com/langbot-app/langbot-plugin-sdk
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langbot-plugin"
3
- version = "0.6.7"
3
+ version = "0.6.9"
4
4
  description = "This package contains the SDK, CLI for building plugins for LangBot, plus the runtime for hosting LangBot plugins"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -149,6 +149,9 @@ class SharedPluginWorkerRuntime:
149
149
  default_factory=dict
150
150
  )
151
151
  plugin_handler: runtime_plugin_handler_cls.PluginConnectionHandler | None = None
152
+ pending_plugin_handler: (
153
+ runtime_plugin_handler_cls.PluginConnectionHandler | None
154
+ ) = None
152
155
  controller: Controller | None = None
153
156
  launch_task: asyncio.Task[None] | None = None
154
157
  transport_registered_event: asyncio.Event = field(default_factory=asyncio.Event)
@@ -552,12 +555,23 @@ class PluginManager:
552
555
  *,
553
556
  plugin_author: str,
554
557
  plugin_name: str,
558
+ expected_shared_handler: runtime_plugin_handler_cls.PluginConnectionHandler
559
+ | None = None,
555
560
  ) -> _PendingPluginRegistration:
556
561
  key = self._find_pending_registration_key(capability)
557
562
  if key is None:
558
563
  raise ValueError(
559
564
  "Plugin registration capability is invalid or already used"
560
565
  )
566
+ registration = self._pending_registrations[key]
567
+ if registration.shared_pool_digest is not None:
568
+ worker = self._shared_workers.get(registration.shared_pool_digest)
569
+ if (
570
+ expected_shared_handler is None
571
+ or worker is None
572
+ or worker.pending_plugin_handler is not expected_shared_handler
573
+ ):
574
+ raise ValueError("Shared plugin worker registration transport changed")
561
575
  registration = self._pending_registrations.pop(key)
562
576
  if (
563
577
  registration.plugin_author != plugin_author
@@ -1967,6 +1981,12 @@ class PluginManager:
1967
1981
  worker.controller = controller
1968
1982
 
1969
1983
  async def new_plugin_connection_callback(connection: Connection):
1984
+ if (
1985
+ worker.pending_plugin_handler is not None
1986
+ or worker.plugin_handler is not None
1987
+ ):
1988
+ await connection.close()
1989
+ return
1970
1990
  shared_transfer_root = (
1971
1991
  self.artifact_store.base_path
1972
1992
  / "shared-transfers"
@@ -1991,13 +2011,7 @@ class PluginManager:
1991
2011
  self.context.worker_policy.max_file_size_mb * 1024 * 1024
1992
2012
  ),
1993
2013
  )
1994
- if (
1995
- worker.plugin_handler is not None
1996
- and worker.plugin_handler is not plugin_handler
1997
- ):
1998
- await connection.close()
1999
- return
2000
- worker.plugin_handler = plugin_handler
2014
+ worker.pending_plugin_handler = plugin_handler
2001
2015
  self.plugin_handlers.append(plugin_handler)
2002
2016
  try:
2003
2017
  await plugin_handler.run()
@@ -2173,6 +2187,9 @@ class PluginManager:
2173
2187
  if handler in self.plugin_handlers:
2174
2188
  self.plugin_handlers.remove(handler)
2175
2189
  for worker in self._shared_workers.values():
2190
+ if worker.pending_plugin_handler is handler:
2191
+ worker.pending_plugin_handler = None
2192
+ return
2176
2193
  if worker.plugin_handler is handler:
2177
2194
  async with worker.lifecycle_lock:
2178
2195
  if worker.plugin_handler is not handler:
@@ -2591,6 +2608,7 @@ class PluginManager:
2591
2608
  registration_capability or "",
2592
2609
  plugin_author=plugin_author,
2593
2610
  plugin_name=plugin_name,
2611
+ expected_shared_handler=handler,
2594
2612
  )
2595
2613
  # From this point forward, use only the identity captured before the
2596
2614
  # child process was launched, never values supplied by plugin code.
@@ -2617,6 +2635,11 @@ class PluginManager:
2617
2635
  registration.shared_pool_digest,
2618
2636
  worker.slots,
2619
2637
  )
2638
+ if worker.pending_plugin_handler is not handler:
2639
+ raise ValueError(
2640
+ "Shared plugin worker registration transport changed"
2641
+ )
2642
+ worker.pending_plugin_handler = None
2620
2643
  worker.plugin_handler = handler
2621
2644
  for slot_runtime in tuple(worker.slots.values()):
2622
2645
  if (
@@ -0,0 +1 @@
1
+ __version__ = "0.6.9"
@@ -11,5 +11,5 @@ def test_stable_release_metadata_is_consistent() -> None:
11
11
  (root / "src/langbot_plugin/version.py").read_text(encoding="utf-8").strip()
12
12
  )
13
13
 
14
- assert project["project"]["version"] == "0.6.7"
15
- assert source_version == '__version__ = "0.6.7"'
14
+ assert project["project"]["version"] == "0.6.9"
15
+ assert source_version == '__version__ = "0.6.9"'
@@ -441,6 +441,7 @@ async def test_failed_sole_shared_slot_retries_with_registered_handler(
441
441
 
442
442
  context.control_handler = Control()
443
443
  handler = Handler()
444
+ worker.pending_plugin_handler = handler
444
445
  capability = manager._issue_registration_capability(
445
446
  plugin_author="tester",
446
447
  plugin_name="demo",
@@ -448,6 +449,15 @@ async def test_failed_sole_shared_slot_retries_with_registered_handler(
448
449
  binding=binding,
449
450
  shared_pool_digest=digest,
450
451
  )
452
+ alt_handler = Handler()
453
+ with pytest.raises(ValueError, match="registration transport changed"):
454
+ await manager.register_plugin(
455
+ alt_handler,
456
+ container.model_dump(),
457
+ registration_capability=capability,
458
+ )
459
+ assert manager.is_registration_capability_pending(capability)
460
+ assert worker.pending_plugin_handler is handler
451
461
  await manager.register_plugin(
452
462
  handler,
453
463
  container.model_dump(),
@@ -545,6 +555,7 @@ async def test_failed_shared_slot_retry_keeps_healthy_sibling_and_worker(
545
555
 
546
556
  context.control_handler = Control()
547
557
  handler = Handler()
558
+ worker.pending_plugin_handler = handler
548
559
  capability = manager._issue_registration_capability(
549
560
  plugin_author="tester",
550
561
  plugin_name="demo",
@@ -771,6 +782,7 @@ async def test_shared_worker_registration_attaches_all_slots_with_exact_settings
771
782
  context.control_handler = Control()
772
783
  handler = Handler()
773
784
  worker = manager.installation_runtimes[binding_a].shared_worker
785
+ worker.pending_plugin_handler = handler
774
786
  capability = manager._issue_registration_capability(
775
787
  plugin_author="tester",
776
788
  plugin_name="demo",
@@ -865,6 +877,7 @@ async def test_shared_registration_waits_for_validated_slot_before_running(
865
877
 
866
878
  context.control_handler = Control()
867
879
  handler = Handler()
880
+ worker.pending_plugin_handler = handler
868
881
  capability = manager._issue_registration_capability(
869
882
  plugin_author="tester",
870
883
  plugin_name="demo",
@@ -972,6 +985,7 @@ async def test_shared_registration_reports_mixed_slot_attach_results(
972
985
 
973
986
  context.control_handler = Control()
974
987
  handler = Handler()
988
+ worker.pending_plugin_handler = handler
975
989
  capability = manager._issue_registration_capability(
976
990
  plugin_author="tester",
977
991
  plugin_name="demo",
@@ -1063,6 +1077,7 @@ async def test_shared_slot_uninitialized_container_is_failed(tmp_path, monkeypat
1063
1077
 
1064
1078
  context.control_handler = Control()
1065
1079
  handler = Handler()
1080
+ worker.pending_plugin_handler = handler
1066
1081
  capability = manager._issue_registration_capability(
1067
1082
  plugin_author="tester",
1068
1083
  plugin_name="demo",
@@ -2067,6 +2082,117 @@ async def test_installation_worker_ready_timeout_cancels_hung_process(
2067
2082
  assert cancelled.is_set()
2068
2083
 
2069
2084
 
2085
+ async def test_shared_connection_does_not_claim_registration_before_capability_validation(
2086
+ tmp_path,
2087
+ monkeypatch,
2088
+ ):
2089
+ _, manager = _manager(tmp_path)
2090
+ package = _package()
2091
+ digest = hashlib.sha256(package).hexdigest()
2092
+ binding = _binding("installation-a", digest, workspace_uuid="workspace-a")
2093
+ monkeypatch.setattr(
2094
+ manager.worker_launcher,
2095
+ "prepare_dependency_environment",
2096
+ _prepare_environment,
2097
+ )
2098
+ monkeypatch.setattr(manager, "_schedule_shared_worker", lambda _worker: None)
2099
+ await manager.apply_plugin_installation(
2100
+ binding,
2101
+ artifact_package=package,
2102
+ execution_mode=PluginExecutionMode.SHARED_CERTIFIED,
2103
+ )
2104
+ worker = manager.installation_runtimes[binding].shared_worker
2105
+ assert worker is not None
2106
+
2107
+ class FakeConnection:
2108
+ async def close(self):
2109
+ return None
2110
+
2111
+ class FakeHandler:
2112
+ async def run(self):
2113
+ await asyncio.Event().wait()
2114
+
2115
+ handler = FakeHandler()
2116
+ callback_started = asyncio.Event()
2117
+
2118
+ class CapturingController:
2119
+ process = None
2120
+
2121
+ async def run(self, callback):
2122
+ task = asyncio.create_task(callback(FakeConnection()))
2123
+ callback_started.set()
2124
+ try:
2125
+ await task
2126
+ finally:
2127
+ if not task.done():
2128
+ task.cancel()
2129
+ await asyncio.gather(task, return_exceptions=True)
2130
+
2131
+ async def close(self):
2132
+ return None
2133
+
2134
+ monkeypatch.setattr(
2135
+ manager.worker_launcher,
2136
+ "create_shared_pool_controller",
2137
+ lambda _spec: CapturingController(),
2138
+ )
2139
+ monkeypatch.setattr(
2140
+ manager_module.runtime_plugin_handler_cls,
2141
+ "PluginConnectionHandler",
2142
+ lambda *args, **kwargs: handler,
2143
+ )
2144
+
2145
+ launch = asyncio.create_task(manager._launch_shared_worker(worker))
2146
+ await asyncio.wait_for(callback_started.wait(), timeout=1)
2147
+ await asyncio.sleep(0)
2148
+
2149
+ assert worker.plugin_handler is None
2150
+ assert worker.pending_plugin_handler is handler
2151
+ assert handler in manager.plugin_handlers
2152
+
2153
+ launch.cancel()
2154
+ await asyncio.gather(launch, return_exceptions=True)
2155
+
2156
+
2157
+ async def test_shared_registration_failure_does_not_clear_new_worker_handler(
2158
+ tmp_path,
2159
+ monkeypatch,
2160
+ ):
2161
+ _, manager = _manager(tmp_path)
2162
+ package = _package()
2163
+ digest = hashlib.sha256(package).hexdigest()
2164
+ binding = _binding("installation-a", digest, workspace_uuid="workspace-a")
2165
+ monkeypatch.setattr(
2166
+ manager.worker_launcher,
2167
+ "prepare_dependency_environment",
2168
+ _prepare_environment,
2169
+ )
2170
+ monkeypatch.setattr(manager, "_schedule_shared_worker", lambda _worker: None)
2171
+ await manager.apply_plugin_installation(
2172
+ binding,
2173
+ artifact_package=package,
2174
+ execution_mode=PluginExecutionMode.SHARED_CERTIFIED,
2175
+ )
2176
+ worker = manager.installation_runtimes[binding].shared_worker
2177
+ assert worker is not None
2178
+
2179
+ class OldHandler:
2180
+ pass
2181
+
2182
+ class NewHandler:
2183
+ pass
2184
+
2185
+ old_handler = OldHandler()
2186
+ new_handler = NewHandler()
2187
+ worker.plugin_handler = new_handler
2188
+ manager.plugin_handlers.extend([old_handler, new_handler])
2189
+
2190
+ await manager.remove_plugin_handler(old_handler)
2191
+
2192
+ assert worker.plugin_handler is new_handler
2193
+ assert new_handler in manager.plugin_handlers
2194
+
2195
+
2070
2196
  async def test_shared_worker_ready_timeout_cancels_hung_controller_and_records_failure(
2071
2197
  tmp_path,
2072
2198
  monkeypatch,
@@ -1 +0,0 @@
1
- __version__ = "0.6.7"
File without changes
File without changes
File without changes
File without changes
File without changes