lambda-erp 0.8.30__tar.gz → 0.8.32__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 (96) hide show
  1. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/PKG-INFO +10 -10
  2. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/README.md +9 -8
  3. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/chat.py +271 -105
  4. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/demo_limits.py +1 -1
  5. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/providers.py +20 -41
  6. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/admin.py +2 -2
  7. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/analytics.py +138 -6
  8. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/pyproject.toml +1 -2
  9. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/terraform/README.md +11 -14
  10. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/.gitignore +0 -0
  11. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/LICENSE +0 -0
  12. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/__init__.py +0 -0
  13. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/attachments.py +0 -0
  14. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/auth.py +0 -0
  15. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/bootstrap.py +0 -0
  16. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/deps.py +0 -0
  17. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/errors.py +0 -0
  18. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/list_values.py +0 -0
  19. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/main.py +0 -0
  20. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/oauth.py +0 -0
  21. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/pdf.py +0 -0
  22. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/remarks_md.py +0 -0
  23. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/__init__.py +0 -0
  24. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/accounting.py +0 -0
  25. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/actions.py +0 -0
  26. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/availability.py +0 -0
  27. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/bank_reconciliation.py +0 -0
  28. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/bank_statements.py +0 -0
  29. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/chat_api.py +0 -0
  30. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/documents.py +0 -0
  31. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/masters.py +0 -0
  32. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/mcp.py +0 -0
  33. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/proposals.py +0 -0
  34. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/reports.py +0 -0
  35. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/routers/setup.py +0 -0
  36. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/services.py +0 -0
  37. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/templates/document.html +0 -0
  38. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/templates/proposal.html +0 -0
  39. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/api/tool_permissions.py +0 -0
  40. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/docs/agents/README.md +0 -0
  41. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/frontend/LICENSE +0 -0
  42. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/frontend/README.md +0 -0
  43. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/frontend/src/api/client.ts +0 -0
  44. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/__init__.py +0 -0
  45. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/__init__.py +0 -0
  46. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/bank_account.py +0 -0
  47. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/bank_reconciliation.py +0 -0
  48. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/bank_statement_import.py +0 -0
  49. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/bank_transaction.py +0 -0
  50. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/budget.py +0 -0
  51. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/camt.py +0 -0
  52. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/chart_of_accounts.py +0 -0
  53. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/general_ledger.py +0 -0
  54. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/journal_entry.py +0 -0
  55. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/payment_entry.py +0 -0
  56. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/pos_invoice.py +0 -0
  57. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/purchase_invoice.py +0 -0
  58. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/revaluation.py +0 -0
  59. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/sales_invoice.py +0 -0
  60. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/__init__.py +0 -0
  61. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/engine.py +0 -0
  62. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/pack.py +0 -0
  63. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/packs/__init__.py +0 -0
  64. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/packs/ch.py +0 -0
  65. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/packs/de_common.py +0 -0
  66. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/packs/de_skr03.py +0 -0
  67. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/packs/de_skr04.py +0 -0
  68. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/packs/generic.py +0 -0
  69. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/profiles.py +0 -0
  70. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/setup/spine.py +0 -0
  71. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/accounting/subscription.py +0 -0
  72. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/assets/__init__.py +0 -0
  73. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/assets/asset.py +0 -0
  74. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/assets/reservation.py +0 -0
  75. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/buying/__init__.py +0 -0
  76. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/buying/purchase_order.py +0 -0
  77. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/controllers/__init__.py +0 -0
  78. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/controllers/currency.py +0 -0
  79. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/controllers/defaults.py +0 -0
  80. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/controllers/pricing_rule.py +0 -0
  81. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/controllers/taxes_and_totals.py +0 -0
  82. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/database.py +0 -0
  83. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/exceptions.py +0 -0
  84. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/hooks.py +0 -0
  85. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/model.py +0 -0
  86. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/selling/__init__.py +0 -0
  87. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/selling/proposal.py +0 -0
  88. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/selling/quotation.py +0 -0
  89. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/selling/sales_order.py +0 -0
  90. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/simulation.py +0 -0
  91. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/stock/__init__.py +0 -0
  92. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/stock/delivery_note.py +0 -0
  93. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/stock/purchase_receipt.py +0 -0
  94. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/stock/stock_entry.py +0 -0
  95. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/stock/stock_ledger.py +0 -0
  96. {lambda_erp-0.8.30 → lambda_erp-0.8.32}/lambda_erp/utils.py +0 -0
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: lambda-erp
3
- Version: 0.8.30
3
+ Version: 0.8.32
4
4
  Summary: Core ERP logic - accounting, sales, purchasing, inventory
5
5
  Author: TORUS INVESTMENTS AG
6
6
  License-Expression: Apache-2.0
7
7
  License-File: LICENSE
8
8
  Requires-Python: >=3.10
9
- Requires-Dist: anthropic>=0.40
10
9
  Requires-Dist: bcrypt>=5
11
10
  Requires-Dist: defusedxml>=0.7
12
11
  Requires-Dist: fastapi>=0.115
@@ -96,8 +95,8 @@ Each of those is hours of skilled work today. With a capable LLM in the loop, th
96
95
  │ - GPT-5.6 drives the reasoning loop │
97
96
  │ - Tool-use: document CRUD, search, │
98
97
  │ reports, aggregations, analytics │
99
- │ - Delegates report specs to Anthropic │
100
- │ report-specialist model │
98
+ │ - Delegates report specs to a separate │
99
+ │ GPT-5.6 Terra specialist call │
101
100
  └──────────────────┬───────────────────────┘
102
101
  │
103
102
  ▼
@@ -133,7 +132,7 @@ Each of those is hours of skilled work today. With a capable LLM in the loop, th
133
132
  | Frontend | React + Vite + TypeScript + Tailwind + Recharts |
134
133
  | Chat transport | WebSocket |
135
134
  | LLM orchestrator | OpenAI (configurable) |
136
- | Code specialist | Anthropic (configurable) |
135
+ | Report specialist | OpenAI GPT-5.6 Terra (configurable) |
137
136
  | Auth | JWT httponly cookie, three roles + demo |
138
137
 
139
138
  ---
@@ -217,7 +216,7 @@ You need Docker and Compose v2. The canonical installs:
217
216
  Then, from the repo root:
218
217
 
219
218
  ```bash
220
- cp .env.example .env # add your OPENAI_API_KEY and ANTHROPIC_API_KEY (for custom analytics)
219
+ cp .env.example .env # add your OPENAI_API_KEY
221
220
  docker compose up --build
222
221
  ```
223
222
 
@@ -262,14 +261,15 @@ Open `http://localhost:5173`. Vite proxies `/api/*` to the backend.
262
261
 
263
262
  ```
264
263
  OPENAI_API_KEY=sk-...
265
- ANTHROPIC_API_KEY=sk-ant-... # optional, used for the report-specialist model
266
- ANTHROPIC_CODE_MODEL=claude-opus-4-7 # optional, default shown
264
+ LAMBDA_ERP_REPORT_MODEL=gpt-5.6-terra # optional specialist override; default shown
267
265
  LAMBDA_ERP_ADMIN_EMAIL=admin@example.com # optional, seeds the admin at boot
268
266
  LAMBDA_ERP_ADMIN_PASSWORD=... # optional, required with the line above
269
267
  LAMBDA_ERP_ADMIN_NAME=Administrator # optional, display name for the seeded admin
270
268
  ```
271
269
 
272
- Chat needs `OPENAI_API_KEY`. Custom-report specification generation uses `ANTHROPIC_API_KEY` when set; otherwise the chat will tell you it can't generate reports.
270
+ Chat and custom-report specification generation share `OPENAI_API_KEY`. Both
271
+ the orchestrator and report specialist default to GPT-5.6 Terra; the specialist
272
+ can be overridden with `LAMBDA_ERP_REPORT_MODEL`.
273
273
 
274
274
  **Seeded admin.** By default the first person to register becomes the admin. Set `LAMBDA_ERP_ADMIN_EMAIL` + `LAMBDA_ERP_ADMIN_PASSWORD` to instead provision that admin automatically at startup — useful when the database is recreated on every deploy, so a redeployed instance can't be claimed by whoever visits first. It's create-if-missing and idempotent (an existing account with that email is promoted to an enabled admin; its password is left untouched), and the password is only ever read from the environment.
275
275
 
@@ -487,4 +487,4 @@ Release notes live in [CHANGELOG.md](./CHANGELOG.md). Releases are tagged
487
487
 
488
488
  ## Trademarks and affiliations
489
489
 
490
- Lambda ERP and [lambda.dev](https://lambda.dev/) are product and trade names of **TORUS INVESTMENTS AG**. It is not affiliated with, endorsed by, or sponsored by OpenAI, Anthropic, SAP, Oracle, Microsoft, or any other company named in this repository. SAP, Business One, S/4HANA, Oracle, NetSuite, Microsoft, Dynamics, OpenAI, GPT, Anthropic, and Claude are trademarks of their respective owners and are referenced here only for descriptive and comparative purposes (nominative fair use). We interoperate with OpenAI and Anthropic APIs as a customer like anyone else; you supply your own API keys.
490
+ Lambda ERP and [lambda.dev](https://lambda.dev/) are product and trade names of **TORUS INVESTMENTS AG**. It is not affiliated with, endorsed by, or sponsored by OpenAI, Anthropic, SAP, Oracle, Microsoft, or any other company named in this repository. SAP, Business One, S/4HANA, Oracle, NetSuite, Microsoft, Dynamics, OpenAI, GPT, Anthropic, and Claude are trademarks of their respective owners and are referenced here only for descriptive and comparative purposes (nominative fair use). The ERP uses the OpenAI API as a customer; you supply your own API key.
@@ -67,8 +67,8 @@ Each of those is hours of skilled work today. With a capable LLM in the loop, th
67
67
  │ - GPT-5.6 drives the reasoning loop │
68
68
  │ - Tool-use: document CRUD, search, │
69
69
  │ reports, aggregations, analytics │
70
- │ - Delegates report specs to Anthropic │
71
- │ report-specialist model │
70
+ │ - Delegates report specs to a separate │
71
+ │ GPT-5.6 Terra specialist call │
72
72
  └──────────────────┬───────────────────────┘
73
73
  │
74
74
  ▼
@@ -104,7 +104,7 @@ Each of those is hours of skilled work today. With a capable LLM in the loop, th
104
104
  | Frontend | React + Vite + TypeScript + Tailwind + Recharts |
105
105
  | Chat transport | WebSocket |
106
106
  | LLM orchestrator | OpenAI (configurable) |
107
- | Code specialist | Anthropic (configurable) |
107
+ | Report specialist | OpenAI GPT-5.6 Terra (configurable) |
108
108
  | Auth | JWT httponly cookie, three roles + demo |
109
109
 
110
110
  ---
@@ -188,7 +188,7 @@ You need Docker and Compose v2. The canonical installs:
188
188
  Then, from the repo root:
189
189
 
190
190
  ```bash
191
- cp .env.example .env # add your OPENAI_API_KEY and ANTHROPIC_API_KEY (for custom analytics)
191
+ cp .env.example .env # add your OPENAI_API_KEY
192
192
  docker compose up --build
193
193
  ```
194
194
 
@@ -233,14 +233,15 @@ Open `http://localhost:5173`. Vite proxies `/api/*` to the backend.
233
233
 
234
234
  ```
235
235
  OPENAI_API_KEY=sk-...
236
- ANTHROPIC_API_KEY=sk-ant-... # optional, used for the report-specialist model
237
- ANTHROPIC_CODE_MODEL=claude-opus-4-7 # optional, default shown
236
+ LAMBDA_ERP_REPORT_MODEL=gpt-5.6-terra # optional specialist override; default shown
238
237
  LAMBDA_ERP_ADMIN_EMAIL=admin@example.com # optional, seeds the admin at boot
239
238
  LAMBDA_ERP_ADMIN_PASSWORD=... # optional, required with the line above
240
239
  LAMBDA_ERP_ADMIN_NAME=Administrator # optional, display name for the seeded admin
241
240
  ```
242
241
 
243
- Chat needs `OPENAI_API_KEY`. Custom-report specification generation uses `ANTHROPIC_API_KEY` when set; otherwise the chat will tell you it can't generate reports.
242
+ Chat and custom-report specification generation share `OPENAI_API_KEY`. Both
243
+ the orchestrator and report specialist default to GPT-5.6 Terra; the specialist
244
+ can be overridden with `LAMBDA_ERP_REPORT_MODEL`.
244
245
 
245
246
  **Seeded admin.** By default the first person to register becomes the admin. Set `LAMBDA_ERP_ADMIN_EMAIL` + `LAMBDA_ERP_ADMIN_PASSWORD` to instead provision that admin automatically at startup — useful when the database is recreated on every deploy, so a redeployed instance can't be claimed by whoever visits first. It's create-if-missing and idempotent (an existing account with that email is promoted to an enabled admin; its password is left untouched), and the password is only ever read from the environment.
246
247
 
@@ -458,4 +459,4 @@ Release notes live in [CHANGELOG.md](./CHANGELOG.md). Releases are tagged
458
459
 
459
460
  ## Trademarks and affiliations
460
461
 
461
- Lambda ERP and [lambda.dev](https://lambda.dev/) are product and trade names of **TORUS INVESTMENTS AG**. It is not affiliated with, endorsed by, or sponsored by OpenAI, Anthropic, SAP, Oracle, Microsoft, or any other company named in this repository. SAP, Business One, S/4HANA, Oracle, NetSuite, Microsoft, Dynamics, OpenAI, GPT, Anthropic, and Claude are trademarks of their respective owners and are referenced here only for descriptive and comparative purposes (nominative fair use). We interoperate with OpenAI and Anthropic APIs as a customer like anyone else; you supply your own API keys.
462
+ Lambda ERP and [lambda.dev](https://lambda.dev/) are product and trade names of **TORUS INVESTMENTS AG**. It is not affiliated with, endorsed by, or sponsored by OpenAI, Anthropic, SAP, Oracle, Microsoft, or any other company named in this repository. SAP, Business One, S/4HANA, Oracle, NetSuite, Microsoft, Dynamics, OpenAI, GPT, Anthropic, and Claude are trademarks of their respective owners and are referenced here only for descriptive and comparative purposes (nominative fair use). The ERP uses the OpenAI API as a customer; you supply your own API key.