plm-engine-core 1.0.2__tar.gz → 1.0.3__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 (113) hide show
  1. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/PKG-INFO +1 -1
  2. plm_engine_core-1.0.3/plm_engine_core/llm_catalog/model_list.yaml +57 -0
  3. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core.egg-info/PKG-INFO +1 -1
  4. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core.egg-info/SOURCES.txt +1 -0
  5. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/pyproject.toml +13 -1
  6. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/README.md +0 -0
  7. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/__init__.py +0 -0
  8. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/agent_runtime/__init__.py +0 -0
  9. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/agent_runtime/dispatcher.py +0 -0
  10. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/agent_runtime/selector.py +0 -0
  11. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/cli/__init__.py +0 -0
  12. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/cli/__main__.py +0 -0
  13. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/cli/auth.py +0 -0
  14. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/__init__.py +0 -0
  15. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/_lint_fixtures/__init__.py +0 -0
  16. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/_lint_fixtures/violation_demo.py +0 -0
  17. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/capability_registry/__init__.py +0 -0
  18. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/capability_registry/errors.py +0 -0
  19. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/capability_registry/registry.py +0 -0
  20. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/connectors/__init__.py +0 -0
  21. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/connectors/dispatcher.py +0 -0
  22. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/connectors/runtime.py +0 -0
  23. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/dispatch.py +0 -0
  24. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/hitl/__init__.py +0 -0
  25. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/hitl/errors.py +0 -0
  26. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/hitl/gate.py +0 -0
  27. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/hitl/sql_store.py +0 -0
  28. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/identity/__init__.py +0 -0
  29. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/identity/middleware.py +0 -0
  30. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/identity/provider.py +0 -0
  31. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/identity/system_identity.py +0 -0
  32. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/identity/telemetry.py +0 -0
  33. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/knowledge/__init__.py +0 -0
  34. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/knowledge/curation_index.py +0 -0
  35. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/knowledge/envelope.py +0 -0
  36. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/knowledge/runtime.py +0 -0
  37. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/policies/__init__.py +0 -0
  38. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/policies/authorization.py +0 -0
  39. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/policies/autonomy_gating.py +0 -0
  40. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/policies/base.py +0 -0
  41. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/policies/cost_budget.py +0 -0
  42. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/policies/rate_limit.py +0 -0
  43. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/retry_policy.py +0 -0
  44. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/control_plane/run_task_tracker.py +0 -0
  45. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/core_host/__init__.py +0 -0
  46. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/core_host/__main__.py +0 -0
  47. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/core_host/main.py +0 -0
  48. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/core_host/routers/__init__.py +0 -0
  49. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/core_host/routers/config.py +0 -0
  50. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/core_host/routers/health.py +0 -0
  51. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/core_host/settings.py +0 -0
  52. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/llm_catalog/__init__.py +0 -0
  53. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/llm_catalog/loader.py +0 -0
  54. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/mcp/__init__.py +0 -0
  55. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/mcp/asgi.py +0 -0
  56. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/mcp/errors.py +0 -0
  57. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/mcp/manifest.py +0 -0
  58. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/mcp/openapi.py +0 -0
  59. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/mcp/server.py +0 -0
  60. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/mcp/tools.py +0 -0
  61. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/__init__.py +0 -0
  62. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/agent_telemetry_service.py +0 -0
  63. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/database.py +0 -0
  64. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/database_service.py +0 -0
  65. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/default_bindings.py +0 -0
  66. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/invocation_context.py +0 -0
  67. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/invocation_lifecycle.py +0 -0
  68. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/invocation_telemetry.py +0 -0
  69. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/llm_env.py +0 -0
  70. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/llm_service.py +0 -0
  71. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/plan_analysis_service.py +0 -0
  72. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/pricing_service.py +0 -0
  73. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/retry_orchestrator.py +0 -0
  74. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/retry_policy.py +0 -0
  75. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/run_task_tracker.py +0 -0
  76. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/scoped_state.py +0 -0
  77. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/token_estimator.py +0 -0
  78. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/runtime/workspace_port.py +0 -0
  79. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/studio/__init__.py +0 -0
  80. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/studio/readers/__init__.py +0 -0
  81. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core/studio/readers/mcrc_v1.py +0 -0
  82. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core.egg-info/dependency_links.txt +0 -0
  83. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core.egg-info/entry_points.txt +0 -0
  84. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core.egg-info/requires.txt +0 -0
  85. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/plm_engine_core.egg-info/top_level.txt +0 -0
  86. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/setup.cfg +0 -0
  87. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_authorization_policy.py +0 -0
  88. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_autonomy_gating_policy.py +0 -0
  89. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_capability_registry.py +0 -0
  90. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_cli_auth.py +0 -0
  91. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_connector_dispatcher.py +0 -0
  92. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_core_host_build_app.py +0 -0
  93. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_core_host_wave9_parity_smoke.py +0 -0
  94. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_cost_budget_policy.py +0 -0
  95. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_error_code_mirror.py +0 -0
  96. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_hitl_gate.py +0 -0
  97. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_identity_middleware.py +0 -0
  98. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_identity_provider.py +0 -0
  99. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_import_linter.py +0 -0
  100. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_imports.py +0 -0
  101. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_knowledge_curation_index.py +0 -0
  102. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_knowledge_envelope.py +0 -0
  103. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_knowledge_runtime_adapter.py +0 -0
  104. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_mcp_asgi.py +0 -0
  105. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_mcp_server.py +0 -0
  106. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_mcrc_v1_reader.py +0 -0
  107. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_openapi.py +0 -0
  108. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_policy_pipeline_order.py +0 -0
  109. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_rate_limit_policy.py +0 -0
  110. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_retry_policy.py +0 -0
  111. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_run_task_tracker.py +0 -0
  112. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_skill_selector.py +0 -0
  113. {plm_engine_core-1.0.2 → plm_engine_core-1.0.3}/tests/test_system_identity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plm-engine-core
3
- Version: 1.0.2
3
+ Version: 1.0.3
4
4
  Summary: TracePulse PLM Engine Core — control_plane (governance, autonomy, HITL, run lifecycle, trace propagation) + agent_runtime (selector, dispatcher, retry, escalation). US-CR.1 scaffold; behaviour lands in US-CR.0+. Internal one-way import contract: control_plane MUST NOT import from agent_runtime (mechanical enforcement in US-CR.2).
5
5
  Author: TracePulse
6
6
  License: Proprietary
@@ -0,0 +1,57 @@
1
+ # US-471.15: Single source of truth for the LLM model catalog.
2
+ #
3
+ # Adding, removing, or reconfiguring a model is a one-file pull request — no
4
+ # Python change required. The backend dispatcher, the model picker, and the
5
+ # pricing layer all read from here.
6
+ #
7
+ # Schema:
8
+ # id LiteLLM-prefixed identifier; supports `${ENV_VAR}` tokens.
9
+ # provider One of: azure-openai | gemini | openai
10
+ # api_key_env Documentation-only: which env var gates availability.
11
+ # display_label Human-readable label shown in the picker.
12
+ # description Optional caption shown beneath the label.
13
+ # aliases Optional alternate ids (used to resolve legacy values).
14
+ # is_default At most one per provider should be marked as default.
15
+ # notes Optional free text surfaced in admin tooling.
16
+ # cost_per_input_token / cost_per_output_token Optional overrides used by
17
+ # services/pricing_service.py when LiteLLM has no price; consumed by
18
+ # Slice S8 (US-471.8).
19
+
20
+ version: 1
21
+
22
+ models:
23
+ # ----- Azure OpenAI -----
24
+ - id: azure/${AZURE_OPENAI_DEPLOYMENT}
25
+ provider: azure-openai
26
+ api_key_env: AZURE_OPENAI_API_KEY
27
+ display_label: Azure OpenAI (default deployment)
28
+ description: Primary Azure OpenAI deployment driven by AZURE_OPENAI_DEPLOYMENT
29
+ is_default: true
30
+ aliases:
31
+ - gpt-4 # legacy Agent.model_id
32
+
33
+ - id: azure/gpt-4o-mini
34
+ provider: azure-openai
35
+ api_key_env: AZURE_OPENAI_API_KEY
36
+ display_label: GPT-4o Mini (Azure)
37
+ description: Fast and cost-effective
38
+
39
+ # ----- Gemini -----
40
+ - id: gemini/gemini-1.5-flash
41
+ provider: gemini
42
+ api_key_env: GEMINI_API_KEY
43
+ display_label: Gemini 1.5 Flash
44
+ description: Fast Gemini model
45
+
46
+ - id: gemini/gemini-1.5-pro
47
+ provider: gemini
48
+ api_key_env: GEMINI_API_KEY
49
+ display_label: Gemini 1.5 Pro
50
+ description: Most capable Gemini model
51
+
52
+ # ----- OpenAI -----
53
+ - id: openai/gpt-4o
54
+ provider: openai
55
+ api_key_env: OPENAI_API_KEY
56
+ display_label: GPT-4o (OpenAI)
57
+ description: Most capable OpenAI model
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plm-engine-core
3
- Version: 1.0.2
3
+ Version: 1.0.3
4
4
  Summary: TracePulse PLM Engine Core — control_plane (governance, autonomy, HITL, run lifecycle, trace propagation) + agent_runtime (selector, dispatcher, retry, escalation). US-CR.1 scaffold; behaviour lands in US-CR.0+. Internal one-way import contract: control_plane MUST NOT import from agent_runtime (mechanical enforcement in US-CR.2).
5
5
  Author: TracePulse
6
6
  License: Proprietary
@@ -53,6 +53,7 @@ plm_engine_core/core_host/routers/config.py
53
53
  plm_engine_core/core_host/routers/health.py
54
54
  plm_engine_core/llm_catalog/__init__.py
55
55
  plm_engine_core/llm_catalog/loader.py
56
+ plm_engine_core/llm_catalog/model_list.yaml
56
57
  plm_engine_core/mcp/__init__.py
57
58
  plm_engine_core/mcp/asgi.py
58
59
  plm_engine_core/mcp/errors.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "plm-engine-core"
7
- version = "1.0.2"
7
+ version = "1.0.3"
8
8
  description = "TracePulse PLM Engine Core — control_plane (governance, autonomy, HITL, run lifecycle, trace propagation) + agent_runtime (selector, dispatcher, retry, escalation). US-CR.1 scaffold; behaviour lands in US-CR.0+. Internal one-way import contract: control_plane MUST NOT import from agent_runtime (mechanical enforcement in US-CR.2)."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -227,6 +227,18 @@ ignore_imports = []
227
227
  where = ["."]
228
228
  include = ["plm_engine_core*"]
229
229
 
230
+ # Wave 11 hardening — bundle non-Python data files into the wheel.
231
+ # Without this section setuptools auto-discovers Python modules but
232
+ # skips llm_catalog/model_list.yaml; consumers that resolve the
233
+ # LiteLLM catalogue at startup (LlmService construction, the
234
+ # studio-backend / workbench-backend module imports, etc.) crash with
235
+ # `litellm_config: model_list.yaml missing at ...` on fresh CI runners
236
+ # that pip-install plm-engine-core from PyPI. Mirrors the plm-shared
237
+ # package-data shape (which already correctly bundles its 4 YAML
238
+ # capability + autonomy_gating + skill_auth manifests).
239
+ [tool.setuptools.package-data]
240
+ plm_engine_core = ["llm_catalog/*.yaml"]
241
+
230
242
  [tool.pytest.ini_options]
231
243
  testpaths = ["tests"]
232
244
  asyncio_mode = "auto"