langbot-plugin 0.4.7__tar.gz → 0.4.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 (248) hide show
  1. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/PKG-INFO +1 -1
  2. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/pyproject.toml +1 -1
  3. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/nsjail_backend.py +26 -6
  4. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/server.py +11 -1
  5. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_nsjail_backend.py +17 -7
  6. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/.github/workflows/cla.yml +0 -0
  7. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/.github/workflows/publish-pypi.yaml +0 -0
  8. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/.github/workflows/test.yml +0 -0
  9. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/.gitignore +0 -0
  10. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/.python-version +0 -0
  11. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/AGENTS.md +0 -0
  12. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/ARCHITECTURE.md +0 -0
  13. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/CLAUDE.md +0 -0
  14. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/CONTRIBUTING.md +0 -0
  15. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/LICENSE +0 -0
  16. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/README.md +0 -0
  17. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/README_CN.md +0 -0
  18. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/data/.env.example +0 -0
  19. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/docs/Message.md +0 -0
  20. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/docs/PluginPages.md +0 -0
  21. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/docs/communication/apis/lb2rt.md +0 -0
  22. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/docs/communication/runtime_plugin.md +0 -0
  23. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/docs/dependency-management.md +0 -0
  24. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/docs/langbot-plugin-social.png +0 -0
  25. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/scripts/check_action_consistency.py +0 -0
  26. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/__init__.py +0 -0
  27. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/__init__.py +0 -0
  28. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/__init__.py +0 -0
  29. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/abstract/__init__.py +0 -0
  30. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/abstract/platform/__init__.py +0 -0
  31. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/abstract/platform/adapter.py +0 -0
  32. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/abstract/platform/event_logger.py +0 -0
  33. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/__init__.py +0 -0
  34. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/base.py +0 -0
  35. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/command/__init__.py +0 -0
  36. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/command/command.py +0 -0
  37. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/common/__init__.py +0 -0
  38. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/common/event_listener.py +0 -0
  39. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/knowledge_engine/__init__.py +0 -0
  40. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/knowledge_engine/engine.py +0 -0
  41. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/manifest.py +0 -0
  42. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/page/__init__.py +0 -0
  43. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/parser/__init__.py +0 -0
  44. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/parser/parser.py +0 -0
  45. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/tool/__init__.py +0 -0
  46. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/components/tool/tool.py +0 -0
  47. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/definition/plugin.py +0 -0
  48. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/__init__.py +0 -0
  49. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/__init__.py +0 -0
  50. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/command/__init__.py +0 -0
  51. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/command/context.py +0 -0
  52. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/command/errors.py +0 -0
  53. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/pipeline/__init__.py +0 -0
  54. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/pipeline/query.py +0 -0
  55. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/platform/__init__.py +0 -0
  56. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/platform/entities.py +0 -0
  57. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/platform/events.py +0 -0
  58. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/platform/logger.py +0 -0
  59. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/platform/message.py +0 -0
  60. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/provider/__init__.py +0 -0
  61. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/provider/message.py +0 -0
  62. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/provider/prompt.py +0 -0
  63. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/provider/session.py +0 -0
  64. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/rag/__init__.py +0 -0
  65. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/rag/context.py +0 -0
  66. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/rag/enums.py +0 -0
  67. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/rag/errors.py +0 -0
  68. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/rag/models.py +0 -0
  69. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/resource/__init__.py +0 -0
  70. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/builtin/resource/tool.py +0 -0
  71. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/context.py +0 -0
  72. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/entities/events.py +0 -0
  73. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/proxies/__init__.py +0 -0
  74. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/proxies/base.py +0 -0
  75. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/proxies/event_context.py +0 -0
  76. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/proxies/execute_context.py +0 -0
  77. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/proxies/langbot_api.py +0 -0
  78. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/api/proxies/query_based_api.py +0 -0
  79. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/__init__.py +0 -0
  80. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/langbot-page-sdk.js +0 -0
  81. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/.env.example.example +0 -0
  82. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/.github/workflows/release.yml.example +0 -0
  83. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/.gitignore.example +0 -0
  84. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/.vscode/launch.json.example +0 -0
  85. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/README.md.example +0 -0
  86. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/__init__.py +0 -0
  87. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/assets/icon.svg.example +0 -0
  88. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/__init__.py +0 -0
  89. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/commands/__init__.py +0 -0
  90. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/commands/{cmd_name}.py.example +0 -0
  91. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/commands/{cmd_name}.yaml.example +0 -0
  92. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/event_listener/__init__.py +0 -0
  93. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/event_listener/default.py.example +0 -0
  94. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/event_listener/default.yaml.example +0 -0
  95. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/knowledge_engine/__init__.py +0 -0
  96. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/knowledge_engine/{knowledge_engine_name}.py.example +0 -0
  97. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/knowledge_engine/{knowledge_engine_name}.yaml.example +0 -0
  98. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/pages/{page_name}.html.example +0 -0
  99. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/pages/{page_name}.yaml.example +0 -0
  100. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/parser/__init__.py +0 -0
  101. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/parser/{parser_name}.py.example +0 -0
  102. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/parser/{parser_name}.yaml.example +0 -0
  103. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/tools/__init__.py +0 -0
  104. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/tools/{tool_name}.py.example +0 -0
  105. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/components/tools/{tool_name}.yaml.example +0 -0
  106. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/main.py.example +0 -0
  107. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/manifest.yaml.example +0 -0
  108. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/readme/README_zh_Hans.md.example +0 -0
  109. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/assets/templates/requirements.txt.example +0 -0
  110. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/__init__.py +0 -0
  111. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/actions.py +0 -0
  112. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/backend.py +0 -0
  113. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/client.py +0 -0
  114. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/e2b_backend.py +0 -0
  115. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/errors.py +0 -0
  116. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/models.py +0 -0
  117. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/runtime.py +0 -0
  118. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/security.py +0 -0
  119. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/box/skill_store.py +0 -0
  120. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/__init__.py +0 -0
  121. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/__main__.py +0 -0
  122. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/__init__.py +0 -0
  123. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/buildplugin.py +0 -0
  124. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/gencomponent.py +0 -0
  125. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/initplugin.py +0 -0
  126. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/login.py +0 -0
  127. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/logout.py +0 -0
  128. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/publish.py +0 -0
  129. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/commands/runplugin.py +0 -0
  130. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/gen/__init__.py +0 -0
  131. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/gen/renderer.py +0 -0
  132. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/i18n.py +0 -0
  133. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/__init__.py +0 -0
  134. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/en_US.py +0 -0
  135. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/es_ES.py +0 -0
  136. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/ja_JP.py +0 -0
  137. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/th_TH.py +0 -0
  138. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/vi_VN.py +0 -0
  139. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/zh_Hans.py +0 -0
  140. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/locales/zh_Hant.py +0 -0
  141. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/run/__init__.py +0 -0
  142. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/run/controller.py +0 -0
  143. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/run/handler.py +0 -0
  144. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/run/hotreload.py +0 -0
  145. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/utils/__init__.py +0 -0
  146. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/utils/cloudsv.py +0 -0
  147. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/utils/form.py +0 -0
  148. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/cli/utils/page_components.py +0 -0
  149. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/__init__.py +0 -0
  150. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/io/__init__.py +0 -0
  151. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/io/actions/__init__.py +0 -0
  152. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/io/actions/enums.py +0 -0
  153. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/io/errors.py +0 -0
  154. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/io/req.py +0 -0
  155. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/io/resp.py +0 -0
  156. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/entities/marketplace.py +0 -0
  157. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/LICENSE +0 -0
  158. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/README.md +0 -0
  159. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/__init__.py +0 -0
  160. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/app.py +0 -0
  161. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/context.py +0 -0
  162. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/helper/__init__.py +0 -0
  163. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/helper/marketplace.py +0 -0
  164. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/helper/pkgmgr.py +0 -0
  165. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/__init__.py +0 -0
  166. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/connection.py +0 -0
  167. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/connections/__init__.py +0 -0
  168. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/connections/stdio.py +0 -0
  169. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/connections/ws.py +0 -0
  170. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controller.py +0 -0
  171. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controllers/__init__.py +0 -0
  172. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controllers/stdio/__init__.py +0 -0
  173. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controllers/stdio/client.py +0 -0
  174. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controllers/stdio/server.py +0 -0
  175. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controllers/ws/__init__.py +0 -0
  176. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controllers/ws/client.py +0 -0
  177. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/controllers/ws/server.py +0 -0
  178. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/handler.py +0 -0
  179. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/handlers/__init__.py +0 -0
  180. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/handlers/control.py +0 -0
  181. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/io/handlers/plugin.py +0 -0
  182. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/plugin/__init__.py +0 -0
  183. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/plugin/container.py +0 -0
  184. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/plugin/logbuffer.py +0 -0
  185. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/plugin/mgr.py +0 -0
  186. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/runtime/settings.py +0 -0
  187. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/utils/__init__.py +0 -0
  188. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/utils/discover/__init__.py +0 -0
  189. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/utils/discover/engine.py +0 -0
  190. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/utils/importutil.py +0 -0
  191. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/utils/log.py +0 -0
  192. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/utils/platform.py +0 -0
  193. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/src/langbot_plugin/version.py +0 -0
  194. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/__init__.py +0 -0
  195. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/definition/components/test_components.py +0 -0
  196. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/definition/test_manifest.py +0 -0
  197. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/entities/builtin/test_command_context.py +0 -0
  198. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/entities/builtin/test_platform_logger.py +0 -0
  199. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/entities/builtin/test_provider_message.py +0 -0
  200. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/entities/builtin/test_rag_models.py +0 -0
  201. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/entities/test_context.py +0 -0
  202. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/entities/test_events.py +0 -0
  203. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/proxies/test_base.py +0 -0
  204. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/proxies/test_langbot_api.py +0 -0
  205. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/api/proxies/test_query_based_api.py +0 -0
  206. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/__init__.py +0 -0
  207. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_backend.py +0 -0
  208. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_backend_selection.py +0 -0
  209. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_client.py +0 -0
  210. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_e2b_backend.py +0 -0
  211. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_runtime.py +0 -0
  212. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_server.py +0 -0
  213. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/box/test_skill_store.py +0 -0
  214. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/run/test_controller.py +0 -0
  215. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/run/test_hotreload.py +0 -0
  216. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/run/test_runtime_handler.py +0 -0
  217. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_buildplugin.py +0 -0
  218. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_gencomponent.py +0 -0
  219. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_i18n_form.py +0 -0
  220. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_initplugin.py +0 -0
  221. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_login.py +0 -0
  222. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_logout_publish.py +0 -0
  223. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_page_components.py +0 -0
  224. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_renderer.py +0 -0
  225. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/cli/test_runplugin.py +0 -0
  226. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/entities/io/test_dependency_errors.py +0 -0
  227. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/entities/io/test_protocol.py +0 -0
  228. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/helpers/__init__.py +0 -0
  229. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/helpers/protocol.py +0 -0
  230. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/packaging/test_installed_cli_blackbox.py +0 -0
  231. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/helper/test_marketplace.py +0 -0
  232. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/helper/test_pkgmgr.py +0 -0
  233. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/io/handlers/test_control_handler.py +0 -0
  234. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/io/handlers/test_import_contracts.py +0 -0
  235. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/io/handlers/test_plugin_handler.py +0 -0
  236. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/io/test_action_consistency.py +0 -0
  237. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/io/test_connections.py +0 -0
  238. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/io/test_controllers.py +0 -0
  239. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/io/test_handler.py +0 -0
  240. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/plugin/test_container.py +0 -0
  241. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/plugin/test_manager.py +0 -0
  242. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/runtime/test_app.py +0 -0
  243. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/test_log.py +0 -0
  244. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/test_message.py +0 -0
  245. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/test_plugin_logbuffer.py +0 -0
  246. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/utils/test_discovery.py +0 -0
  247. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/utils/test_importutil.py +0 -0
  248. {langbot_plugin-0.4.7 → langbot_plugin-0.4.9}/tests/utils/test_platform.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langbot-plugin
3
- Version: 0.4.7
3
+ Version: 0.4.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.4.7"
3
+ version = "0.4.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 = [
@@ -501,11 +501,12 @@ class NsjailBackend(BaseSandboxBackend):
501
501
  # rlimit fallback – used whenever cgroup v2 delegation is not usable
502
502
  # (private cgroup namespace -> EBUSY, or read-only /sys/fs/cgroup).
503
503
  #
504
- # We deliberately do NOT set --rlimit_as for the memory cap.
505
- # RLIMIT_AS limits *virtual* address space, not resident memory, and
506
- # modern runtimes reserve huge virtual mappings up front: uv/Rust
507
- # (and Go/JVM/Node) mmap gigabytes of address space even to do tiny
508
- # work, so a 512 MB --rlimit_as aborts them instantly with
504
+ # We do NOT set a SMALL --rlimit_as as a memory cap (see the
505
+ # --rlimit_as hard note below). RLIMIT_AS limits *virtual* address
506
+ # space, not resident memory, and modern runtimes reserve huge
507
+ # virtual mappings up front: uv/Rust (and Go/JVM/Node) mmap
508
+ # gigabytes of address space even to do tiny work, so a 512 MB
509
+ # --rlimit_as aborts them instantly with
509
510
  # "memory allocation of N bytes failed" (exit 255) — which is what
510
511
  # silently broke every uvx-based stdio MCP server in containerized
511
512
  # nsjail deployments. There is no RSS-based rlimit on modern Linux
@@ -517,8 +518,27 @@ class NsjailBackend(BaseSandboxBackend):
517
518
  # which is a real rlimit that does not break runtimes.
518
519
  args.extend(["--rlimit_nproc", str(spec.pids_limit)])
519
520
 
521
+ # nsjail defaults --rlimit_as to 512 MB. RLIMIT_AS caps *virtual*
522
+ # address space, and modern runtimes reserve huge virtual mappings up
523
+ # front regardless of actual memory use: Node.js/V8 alone reserves well
524
+ # over 512 MB of address space at startup, and its built-in undici HTTP
525
+ # client instantiates an llhttp WebAssembly module during boot. Under
526
+ # the default 512 MB RLIMIT_AS that WASM allocation fails with
527
+ # "WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm
528
+ # memory for new instance", crashing every node/npx-based stdio MCP
529
+ # server (e.g. firecrawl-mcp) even when cgroup_mem_max is generous.
530
+ # Python/uvx servers reserve far less address space and were unaffected,
531
+ # which made this look like "npx isn't supported".
532
+ #
533
+ # So we explicitly raise RLIMIT_AS to the current hard limit ("hard")
534
+ # rather than leaving it at nsjail's small default. Real memory pressure
535
+ # is still bounded by --cgroup_mem_max (cgroup v2 branch) or by the
536
+ # container-level mem_limit (rlimit fallback branch) — both of which cap
537
+ # RESIDENT memory, the thing that actually matters.
538
+ args.extend(["--rlimit_as", "hard"])
539
+
520
540
  # Always set these rlimits regardless of cgroup mode. These are safe
521
- # for modern runtimes (unlike RLIMIT_AS).
541
+ # for modern runtimes (unlike a small RLIMIT_AS).
522
542
  args.extend(["--rlimit_fsize", "512"]) # max file size 512 MB
523
543
  args.extend(["--rlimit_nofile", "256"]) # max open fds
524
544
 
@@ -304,6 +304,13 @@ class BoxServerHandler(Handler):
304
304
  return ActionResponse.success({})
305
305
 
306
306
 
307
+ # Server-driven WebSocket keepalive interval (seconds) for the managed-process
308
+ # stdio relay. The Box runtime is lightly loaded and answers pings reliably;
309
+ # emitting pings from the server keeps a long-idle relay alive even when the
310
+ # LangBot client's event loop stalls briefly (which would otherwise trip the
311
+ # mcp websocket client's 20s ping/pong timeout and drop the connection).
312
+ _MANAGED_PROCESS_WS_HEARTBEAT_SEC = 30.0
313
+
307
314
  # ── Managed process WebSocket relay ──────────────────────────────────
308
315
 
309
316
 
@@ -339,7 +346,10 @@ async def handle_managed_process_ws(request: web.Request) -> web.StreamResponse:
339
346
  )
340
347
  )
341
348
 
342
- ws = web.WebSocketResponse(protocols=("mcp",))
349
+ ws = web.WebSocketResponse(
350
+ protocols=("mcp",),
351
+ heartbeat=_MANAGED_PROCESS_WS_HEARTBEAT_SEC,
352
+ )
343
353
  await ws.prepare(request)
344
354
 
345
355
  async with managed_process.attach_lock:
@@ -412,6 +412,13 @@ def test_build_resource_limits_cgroup(backend):
412
412
  cpu_idx = args.index("--cgroup_cpu_ms_per_sec")
413
413
  assert args[cpu_idx + 1] == "2000"
414
414
 
415
+ # Virtual address space must be raised to the hard limit so node/V8 WASM
416
+ # (and other runtimes reserving large vaddr) can boot; physical memory is
417
+ # still bounded by --cgroup_mem_max above.
418
+ assert "--rlimit_as" in args
419
+ ras_idx = args.index("--rlimit_as")
420
+ assert args[ras_idx + 1] == "hard"
421
+
415
422
 
416
423
  def test_build_resource_limits_rlimit_fallback(backend):
417
424
  backend._cgroup_v2_available = False
@@ -419,13 +426,16 @@ def test_build_resource_limits_rlimit_fallback(backend):
419
426
 
420
427
  args = backend._build_resource_limits(spec)
421
428
 
422
- # Bug regression: --rlimit_as must NOT be used as the memory cap. It limits
423
- # virtual address space, which uv/node/Rust/JVM reserve in huge amounts, so
424
- # a small --rlimit_as aborts them instantly ("memory allocation failed",
425
- # exit 255) and silently broke every uvx stdio MCP server. There is no
426
- # RSS-based rlimit on modern Linux, so memory capping requires cgroups;
427
- # the fallback runs without a hard memory cap by design.
428
- assert "--rlimit_as" not in args
429
+ # Bug regression: --rlimit_as must be set to "hard" (the current hard
430
+ # limit), NOT a small value. A small RLIMIT_AS caps *virtual* address space,
431
+ # which uv/node/Rust/JVM reserve in huge amounts, so it aborts them
432
+ # instantly ("memory allocation failed" / node WASM "Cannot allocate Wasm
433
+ # memory") and silently broke every uvx/npx stdio MCP server. "hard" leaves
434
+ # virtual address space uncapped; resident memory is bounded by cgroups
435
+ # (cgroup branch) or the container mem_limit (fallback branch).
436
+ assert "--rlimit_as" in args
437
+ ras_idx = args.index("--rlimit_as")
438
+ assert args[ras_idx + 1] == "hard"
429
439
 
430
440
  nproc_idx = args.index("--rlimit_nproc")
431
441
  assert args[nproc_idx + 1] == "128"
File without changes
File without changes
File without changes
File without changes