Commit Graph
94 Commits
Author SHA1 Message Date
dextmorgn 9fcc60ca63 fix(deps): upgrade Python dependencies to patch 27 known vulnerabilities
pip-audit reported 27 vulnerabilities across 12 packages, including
cryptography PYSEC-2026-36 (CVSS 9.8) used by the vault, a starlette
Host-header path bypass, and python-multipart arbitrary file write.

- cryptography 45.0.7 -> 46.0.7 (pin was capped at <46)
- fastapi 0.115 -> 0.136, pulling starlette 0.46 -> 1.2
- python-multipart 0.0.20 -> 0.0.32
- pyjwt, urllib3, aiohttp, lxml, idna, mako and transitive bumps
- dev tools: pytest 8 -> 9 (requires pytest-httpx >=0.36), black 25 -> 26

All four module test suites pass (458 tests). pip-audit now reports
no known vulnerabilities.
2026-06-05 08:57:19 +02:00
Mubashir RahimandClaude Opus 4.8 1fdbdbd094 fix(import): preserve apostrophes in valid JSON imports
parse_json unconditionally replaced every single quote with a double
quote (`.replace("'", '"')`) before calling json.loads. This corrupted
any valid JSON string value containing an apostrophe, e.g. a person's
surname "Sarah O'Brien" became "Sarah O"Brien", causing the parse to
fail with "Invalid JSON" and the whole import to be rejected.

Parse strict JSON first so well-formed payloads (including apostrophes
in string values) import correctly, and only fall back to the lenient
single-quote replacement for Python-dict-style payloads that are not
valid JSON on their own.

Adds regression tests covering an apostrophe-bearing JSON value and the
retained single-quoted fallback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 14:34:22 +05:00
Ghraven 60cfa16b8d fix: use aware timestamp for investigation updates 2026-06-03 08:37:45 +08:00
Ghraven b707961e68 fix: use timezone-aware service timestamps 2026-05-31 02:35:11 +08:00
dextmorgn 1d409d7929 fix(scan): persist results to existing details column, errors to error column
The Scan model exposes details (JSON) and error (Text) columns, but the
enricher/flow tasks assigned to scan.results — a non-mapped attribute.
SQLAlchemy accepted the assignment silently, so commit() never persisted
it and the data was lost. Success paths now write scan.details; failure
paths write scan.error. ScanCreate.results renamed to details to match.

Scan repository tests pass.
2026-05-30 19:02:14 +02:00
dextmorgn 8cd6b237bb fix(core/tests): update failing test 2026-04-11 14:44:29 +02:00
dextmorgn 1a5d164805 feat(core): add RBAC with ADMIN role, collaborator management and auth user data
- Add ADMIN role to Role enum (OWNER > ADMIN > EDITOR > VIEWER)
- Update permission matrix: ADMIN can read/create/update/manage
- Fix get_with_relations bug filtering by owner_id (blocked non-owner collaborators)
- Add collaborator management methods to InvestigationRepository and InvestigationService
- Return user profile data in auth response
2026-04-11 14:44:28 +02:00
dextmorgn 6f3af239b2 feat(core): switch to uv 2026-04-11 13:14:41 +02:00
dextmorgn 972763343e feat(api): add type detection route and service
Add POST /api/types/detect endpoint that detects the type of a text input
by iterating registered types and calling their detect() classmethod.
Returns detected type with fields and primary field pre-filled.
Falls back to Phrase when no type matches.
2026-03-15 12:35:46 +01:00
dextmorgn 6b35cccddb feat(core): add input and output type to template generator 2026-03-09 19:39:08 +01:00
dextmorgnandGitHub ddc36eac4d Merge pull request #125 from gustavorps/feat/soft-delete
feat(core): Soft delete
2026-03-02 20:50:11 +01:00
dextmorgn f49e05eafb fix(core): check if input type is list 2026-02-28 21:29:37 +01:00
dextmorgn 86584ba84e fix(core): prevent sketch break on sick node 2026-02-28 18:35:57 +01:00
gustavorps a574d4ebea feat(core): soft delete 2026-02-20 15:41:46 -03:00
dextmorgn c7275594cb refactor(core): use permissions in base service 2026-02-16 09:15:19 +01:00
dextmorgn c05ad758d8 fix(core): missing sketch_id in relationships 2026-02-15 18:07:34 +01:00
dextmorgn 490878ab06 feat(core): return no enricher for custom types 2026-02-14 18:00:27 +01:00
dextmorgn 9d1991f45f feat(core): use type service 2026-02-14 15:34:58 +01:00
dextmorgn af590675ec fix(core): template generator chat prompt 2026-02-12 23:38:29 +01:00
dextmorgn 3f252ea6ab feat(core): progress on templates 2026-02-12 22:04:28 +01:00
dextmorgn 38cee3759e feat(core): chat_service 2026-02-12 22:04:28 +01:00
dextmorgn 07f32c983a feat: use ai sdk useChat 2026-02-12 22:04:21 +01:00
dextmorgn fbb9666c53 feat(core): poetry.lock 2026-02-12 22:03:28 +01:00
dextmorgn a461f9997d feat: progress on enricher templates 2026-02-12 22:03:28 +01:00
dextmorgn 53a03575cd feat(api): enrichers from templates 2026-02-12 22:03:04 +01:00
dextmorgn 5ff6ba2b1c feat(core): enrichers from templates 2026-02-12 22:03:04 +01:00
dextmorgn 327123a729 feat(core): template enricher v1 2026-02-12 22:03:03 +01:00
dextmorgn 2bb1fdbfc1 feat(core): enricher template 2026-02-12 22:03:03 +01:00
dextmorgn dd0c53f089 feat(core): use repositories in services 2026-02-07 17:22:51 +01:00
dextmorgn 1cc88d1033 feat(core): add dedicated services for business logic 2026-02-05 22:38:00 +01:00
dextmorgn a178ef1bcd feat(chore): update deploy components 2026-01-25 20:45:22 +01:00
dextmorgn c8085c6400 test(core): update test 2026-01-24 19:31:12 +01:00
dextmorgn cbea4c09a8 feat(core): add nodeShape to node property 2026-01-24 19:06:47 +01:00
dextmorgn 3c6a23ebfa feat(core): refactor Neo4jDict to GraphDict 2026-01-22 09:41:01 +01:00
dextmorgn 3c39f9aeb7 feat(core): cleaner code separation + usage of nodeLabel
- big refactor to properly use GraphService, and enforce dependency injection

BREAKING CHANGE: The usage of node.label is no longer supported in the app, a specific node format
is used throughout the app and for inserting in the neo4j.
2026-01-21 17:17:13 +01:00
dextmorgn 6265b4af10 feat(core): default to Individual as default type 2026-01-11 12:19:39 +01:00
dextmorgn baa344f364 feat(core): add json import support 2026-01-10 18:07:33 +01:00
dextmorgn 3d7f63660d feat(core): add thread to celery to run multiple enrichers concurrently
fix #80
2026-01-05 22:28:42 +01:00
dextmorgn 3b6c5f605e feat(core): new update_relationship method 2026-01-05 21:46:40 +01:00
dextmorgn 7562da12a6 feat(core): only support pydantic object insert and manipulation 2025-12-05 15:45:23 +01:00
dextmorgn 901ed15567 feat(core): update dependencies + orchestrator 2025-11-30 12:49:24 +01:00
dextmorgn 95add9c4fd feat(core): type registry + better import 2025-11-28 20:07:48 +01:00
dextmorgn f0e1018b4e feat(core): emit_status_event 2025-11-27 22:21:08 +01:00
dextmorgn df127738f6 feat(core): remove dummy test files 2025-11-27 18:17:45 +01:00
dextmorgn e8e820e03d feat(core): 1.0.0 2025-11-27 17:33:33 +01:00
dextmorgn 2123ea5b8d feat: complete refactor 2025-11-27 17:16:41 +01:00
dextmorgn 64c0a8226c feat(app): actions on edges 2025-11-24 16:42:16 +01:00
dextmorgn 6fcc75346a feat(core): update graph repo and tasks to support passing whole node object to transforms 2025-11-21 12:55:17 +01:00
dextmorgn f63cc11f77 feat(core): update poetry.lock 2025-11-21 12:53:12 +01:00
dextmorgn 054d8b557d fix(core): fix order for batch logs insert 2025-11-21 00:17:37 +01:00