lambda-erp 0.1.38__tar.gz → 0.1.40__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.
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/PKG-INFO +5 -5
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/README.md +4 -4
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/chat.py +7 -2
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/providers.py +2 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/pyproject.toml +1 -1
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/.gitignore +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/LICENSE +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/attachments.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/auth.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/bootstrap.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/demo_limits.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/deps.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/errors.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/main.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/oauth.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/pdf.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/remarks_md.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/accounting.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/admin.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/analytics.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/bank_reconciliation.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/chat_api.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/documents.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/masters.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/proposals.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/reports.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/routers/setup.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/services.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/templates/document.html +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/api/templates/proposal.html +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/docs/agents/README.md +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/frontend/README.md +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/frontend/src/api/client.ts +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/bank_transaction.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/budget.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/chart_of_accounts.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/general_ledger.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/journal_entry.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/payment_entry.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/pos_invoice.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/purchase_invoice.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/revaluation.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/sales_invoice.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/accounting/subscription.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/buying/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/buying/purchase_order.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/controllers/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/controllers/currency.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/controllers/defaults.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/controllers/pricing_rule.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/controllers/taxes_and_totals.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/database.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/exceptions.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/hooks.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/model.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/selling/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/selling/proposal.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/selling/quotation.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/selling/sales_order.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/simulation.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/stock/__init__.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/stock/delivery_note.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/stock/purchase_receipt.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/stock/stock_entry.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/stock/stock_ledger.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/lambda_erp/utils.py +0 -0
- {lambda_erp-0.1.38 → lambda_erp-0.1.40}/terraform/README.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lambda-erp
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.40
|
|
4
4
|
Summary: Core ERP logic - accounting, sales, purchasing, inventory
|
|
5
5
|
Author: TORUS INVESTMENTS AG
|
|
6
6
|
License-Expression: MIT
|
|
@@ -29,7 +29,7 @@ Description-Content-Type: text/markdown
|
|
|
29
29
|
|
|
30
30
|
**Open-source ERP you can run through chat — configurable in plain language**
|
|
31
31
|
|
|
32
|
-
Lambda ERP is a
|
|
32
|
+
Lambda ERP is a simpler ERP: create invoices, check inventory, answer accounting questions, and change reports by asking for what you need in plain language.
|
|
33
33
|
|
|
34
34
|
https://github.com/user-attachments/assets/1b2749ef-10e7-42f5-9cce-df5628292667
|
|
35
35
|
|
|
@@ -54,7 +54,7 @@ The two packages publish in lockstep on every release:
|
|
|
54
54
|
<a href="https://www.npmjs.com/package/@lambda-development/erp-core"><img alt="@lambda-development/erp-core on npm" src="https://img.shields.io/npm/v/@lambda-development/erp-core?label=npm%20%7C%20%40lambda-development%2Ferp-core&logo=npm"></a>
|
|
55
55
|
</p>
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
Want to see them wired together? **[lambda-erp-example](https://github.com/lambdadevelopment/lambda-erp-example)** is a minimal reference deployment that consumes both packages via version pins (no fork, no vendoring) — a ready-made template for your own deployment.
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -126,7 +126,7 @@ Each of those is hours of skilled work today. With a capable LLM in the loop, th
|
|
|
126
126
|
|---|---|
|
|
127
127
|
| Backend business logic | Pure Python, no framework (`lambda_erp/`) |
|
|
128
128
|
| Web API | FastAPI + Pydantic |
|
|
129
|
-
| Storage | SQLite
|
|
129
|
+
| Storage | SQLite by default; Postgres for production |
|
|
130
130
|
| Frontend | React + Vite + TypeScript + Tailwind + Recharts |
|
|
131
131
|
| Chat transport | WebSocket |
|
|
132
132
|
| LLM orchestrator | OpenAI (configurable) |
|
|
@@ -453,7 +453,7 @@ Release notes live in [CHANGELOG.md](./CHANGELOG.md). Releases are tagged
|
|
|
453
453
|
|
|
454
454
|
## Status
|
|
455
455
|
|
|
456
|
-
Version 0
|
|
456
|
+
Version 0, and it already implements the vision: invoicing, inventory, accounting, and reporting — all driven by chat. Good for demos, internal tools, and real day-to-day work. It's under active development and improving fast.
|
|
457
457
|
|
|
458
458
|
If you try it, we'd love to know what broke.
|
|
459
459
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Open-source ERP you can run through chat — configurable in plain language**
|
|
4
4
|
|
|
5
|
-
Lambda ERP is a
|
|
5
|
+
Lambda ERP is a simpler ERP: create invoices, check inventory, answer accounting questions, and change reports by asking for what you need in plain language.
|
|
6
6
|
|
|
7
7
|
https://github.com/user-attachments/assets/1b2749ef-10e7-42f5-9cce-df5628292667
|
|
8
8
|
|
|
@@ -27,7 +27,7 @@ The two packages publish in lockstep on every release:
|
|
|
27
27
|
<a href="https://www.npmjs.com/package/@lambda-development/erp-core"><img alt="@lambda-development/erp-core on npm" src="https://img.shields.io/npm/v/@lambda-development/erp-core?label=npm%20%7C%20%40lambda-development%2Ferp-core&logo=npm"></a>
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
Want to see them wired together? **[lambda-erp-example](https://github.com/lambdadevelopment/lambda-erp-example)** is a minimal reference deployment that consumes both packages via version pins (no fork, no vendoring) — a ready-made template for your own deployment.
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
@@ -99,7 +99,7 @@ Each of those is hours of skilled work today. With a capable LLM in the loop, th
|
|
|
99
99
|
|---|---|
|
|
100
100
|
| Backend business logic | Pure Python, no framework (`lambda_erp/`) |
|
|
101
101
|
| Web API | FastAPI + Pydantic |
|
|
102
|
-
| Storage | SQLite
|
|
102
|
+
| Storage | SQLite by default; Postgres for production |
|
|
103
103
|
| Frontend | React + Vite + TypeScript + Tailwind + Recharts |
|
|
104
104
|
| Chat transport | WebSocket |
|
|
105
105
|
| LLM orchestrator | OpenAI (configurable) |
|
|
@@ -426,7 +426,7 @@ Release notes live in [CHANGELOG.md](./CHANGELOG.md). Releases are tagged
|
|
|
426
426
|
|
|
427
427
|
## Status
|
|
428
428
|
|
|
429
|
-
Version 0
|
|
429
|
+
Version 0, and it already implements the vision: invoicing, inventory, accounting, and reporting — all driven by chat. Good for demos, internal tools, and real day-to-day work. It's under active development and improving fast.
|
|
430
430
|
|
|
431
431
|
If you try it, we'd love to know what broke.
|
|
432
432
|
|
|
@@ -2271,7 +2271,7 @@ async def run_thinking_loop(
|
|
|
2271
2271
|
):
|
|
2272
2272
|
"""Run the agentic reasoning loop.
|
|
2273
2273
|
|
|
2274
|
-
The orchestrator is always OpenAI (gpt-5.
|
|
2274
|
+
The orchestrator is always OpenAI (gpt-5.6-terra). When GPT decides to call
|
|
2275
2275
|
`create_custom_analytics_report` or `update_custom_analytics_report`
|
|
2276
2276
|
with an intent/feedback hint, the tool handler itself delegates the
|
|
2277
2277
|
code-generation step to Anthropic (ANTHROPIC_CODE_MODEL). We emit an
|
|
@@ -2368,7 +2368,7 @@ async def run_thinking_loop(
|
|
|
2368
2368
|
# on ANY exit path — including asyncio.CancelledError raised after
|
|
2369
2369
|
# the SDK call has already returned but before settle() ran.
|
|
2370
2370
|
settled = False
|
|
2371
|
-
model_name = "gpt-5.
|
|
2371
|
+
model_name = "gpt-5.6-terra"
|
|
2372
2372
|
try:
|
|
2373
2373
|
print(f"[chat_llm] provider=openai model={model_name} session_id={session_id or '-'} iter={iteration + 1}", flush=True)
|
|
2374
2374
|
await on_event({"type": "llm_provider", "provider": "openai", "model": model_name})
|
|
@@ -2380,6 +2380,11 @@ async def run_thinking_loop(
|
|
|
2380
2380
|
tools=TOOLS,
|
|
2381
2381
|
tool_choice="auto",
|
|
2382
2382
|
max_completion_tokens=max_completion,
|
|
2383
|
+
# gpt-5.6-terra rejects function tools on /v1/chat/completions
|
|
2384
|
+
# unless reasoning_effort is "none" (400 otherwise). Tool
|
|
2385
|
+
# calls run without hidden reasoning until this loop migrates
|
|
2386
|
+
# to the Responses API.
|
|
2387
|
+
reasoning_effort="none",
|
|
2383
2388
|
)
|
|
2384
2389
|
except Exception as e:
|
|
2385
2390
|
await on_event({"type": "error", "content": f"Error calling LLM: {e}"})
|
|
@@ -25,6 +25,8 @@ OPENAI_PRICING: dict[str, dict[str, Any]] = {
|
|
|
25
25
|
{"max_input_tokens": None, "input": 5.00, "cached_input": 0.50, "output": 22.50},
|
|
26
26
|
],
|
|
27
27
|
},
|
|
28
|
+
# GPT-5.6 Terra — flat pricing (no 272K tier step-up, unlike gpt-5.4).
|
|
29
|
+
"gpt-5.6-terra": {"input": 2.50, "cached_input": 0.25, "output": 15.00},
|
|
28
30
|
"gpt-4.1-nano": {"input": 0.10, "cached_input": 0.025, "output": 0.40},
|
|
29
31
|
"gpt-4.1-mini": {"input": 0.40, "cached_input": 0.10, "output": 1.60},
|
|
30
32
|
"gpt-4.1": {"input": 2.00, "cached_input": 0.50, "output": 8.00},
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|