lambda-erp 0.6.17__tar.gz → 0.6.18__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 (84) hide show
  1. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/PKG-INFO +1 -1
  2. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/attachments.py +4 -4
  3. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/chat.py +3 -1
  4. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/pyproject.toml +1 -1
  5. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/.gitignore +0 -0
  6. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/LICENSE +0 -0
  7. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/README.md +0 -0
  8. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/__init__.py +0 -0
  9. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/auth.py +0 -0
  10. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/bootstrap.py +0 -0
  11. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/demo_limits.py +0 -0
  12. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/deps.py +0 -0
  13. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/errors.py +0 -0
  14. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/main.py +0 -0
  15. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/oauth.py +0 -0
  16. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/pdf.py +0 -0
  17. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/providers.py +0 -0
  18. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/remarks_md.py +0 -0
  19. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/__init__.py +0 -0
  20. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/accounting.py +0 -0
  21. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/admin.py +0 -0
  22. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/analytics.py +0 -0
  23. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/bank_reconciliation.py +0 -0
  24. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/chat_api.py +0 -0
  25. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/documents.py +0 -0
  26. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/masters.py +0 -0
  27. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/mcp.py +0 -0
  28. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/proposals.py +0 -0
  29. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/reports.py +0 -0
  30. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/routers/setup.py +0 -0
  31. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/services.py +0 -0
  32. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/templates/document.html +0 -0
  33. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/api/templates/proposal.html +0 -0
  34. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/docs/agents/README.md +0 -0
  35. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/frontend/LICENSE +0 -0
  36. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/frontend/README.md +0 -0
  37. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/frontend/src/api/client.ts +0 -0
  38. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/__init__.py +0 -0
  39. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/__init__.py +0 -0
  40. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/bank_transaction.py +0 -0
  41. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/budget.py +0 -0
  42. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/chart_of_accounts.py +0 -0
  43. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/general_ledger.py +0 -0
  44. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/journal_entry.py +0 -0
  45. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/payment_entry.py +0 -0
  46. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/pos_invoice.py +0 -0
  47. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/purchase_invoice.py +0 -0
  48. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/revaluation.py +0 -0
  49. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/sales_invoice.py +0 -0
  50. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/__init__.py +0 -0
  51. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/engine.py +0 -0
  52. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/pack.py +0 -0
  53. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/packs/__init__.py +0 -0
  54. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/packs/ch.py +0 -0
  55. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/packs/de_common.py +0 -0
  56. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/packs/de_skr03.py +0 -0
  57. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/packs/de_skr04.py +0 -0
  58. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/packs/generic.py +0 -0
  59. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/profiles.py +0 -0
  60. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/setup/spine.py +0 -0
  61. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/accounting/subscription.py +0 -0
  62. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/buying/__init__.py +0 -0
  63. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/buying/purchase_order.py +0 -0
  64. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/controllers/__init__.py +0 -0
  65. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/controllers/currency.py +0 -0
  66. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/controllers/defaults.py +0 -0
  67. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/controllers/pricing_rule.py +0 -0
  68. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/controllers/taxes_and_totals.py +0 -0
  69. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/database.py +0 -0
  70. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/exceptions.py +0 -0
  71. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/hooks.py +0 -0
  72. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/model.py +0 -0
  73. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/selling/__init__.py +0 -0
  74. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/selling/proposal.py +0 -0
  75. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/selling/quotation.py +0 -0
  76. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/selling/sales_order.py +0 -0
  77. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/simulation.py +0 -0
  78. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/stock/__init__.py +0 -0
  79. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/stock/delivery_note.py +0 -0
  80. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/stock/purchase_receipt.py +0 -0
  81. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/stock/stock_entry.py +0 -0
  82. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/stock/stock_ledger.py +0 -0
  83. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/lambda_erp/utils.py +0 -0
  84. {lambda_erp-0.6.17 → lambda_erp-0.6.18}/terraform/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lambda-erp
3
- Version: 0.6.17
3
+ Version: 0.6.18
4
4
  Summary: Core ERP logic - accounting, sales, purchasing, inventory
5
5
  Author: TORUS INVESTMENTS AG
6
6
  License-Expression: Apache-2.0
@@ -403,10 +403,10 @@ def build_multimodal_content(attachment: dict) -> dict:
403
403
  }
404
404
  if mime in OFFICE_MIME_TYPES:
405
405
  # Office bytes are read via the Files API (file_id) — but ONLY the
406
- # Responses API accepts non-PDF file inputs. On the default Chat
407
- # Completions backend, degrade gracefully instead of triggering a hard
408
- # 400 (flip ERP_CHAT_API=responses to actually read Office files).
409
- if os.environ.get("ERP_CHAT_API", "chat").strip().lower() != "responses":
406
+ # Responses API accepts non-PDF file inputs. The Responses path is the
407
+ # default; only degrade gracefully (no hard 400) if someone has pinned
408
+ # the legacy Chat Completions backend via ERP_CHAT_API=chat.
409
+ if os.environ.get("ERP_CHAT_API", "responses").strip().lower() == "chat":
410
410
  return {"type": "text",
411
411
  "text": (f"[Attachment “{filename}” is an Office document; the current chat "
412
412
  "backend can only read PDFs and images. Convert it to PDF, or ask an "
@@ -2712,7 +2712,9 @@ ORCHESTRATOR_MODEL = "gpt-5.6-terra"
2712
2712
  # ---------------------------------------------------------------------------
2713
2713
 
2714
2714
  def _use_responses_api() -> bool:
2715
- return os.environ.get("ERP_CHAT_API", "chat").strip().lower() == "responses"
2715
+ # Default: the Responses API (needed for Office attachments + native
2716
+ # reasoning). Set ERP_CHAT_API=chat to fall back to Chat Completions.
2717
+ return os.environ.get("ERP_CHAT_API", "responses").strip().lower() != "chat"
2716
2718
 
2717
2719
 
2718
2720
  # Reasoning effort for the Responses path (native; the Chat path uses "none").
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lambda-erp"
3
- version = "0.6.17"
3
+ version = "0.6.18"
4
4
  description = "Core ERP logic - accounting, sales, purchasing, inventory"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes