InboxOps — Email-to-ERP Agent
Receives forwarded emails via webhook, extracts structured action proposals using LLM, and presents them for human-in-the-loop approval.
Found by static analysis of the 0.8.0 source. Links that only appear at runtime are not visible here.
1 of the 1 module outside the starter set that inbox_ops needs in code is missing from its requires.
A newer release exists: inbox_ops in 0.9.0.
Before you enable inbox_ops in 0.8.0
3 modules its code requires
✓ 0 declared⚠ 1 not declared, outside the starter set2 not declared, in every app
Enable these yourself, they are not in every starter app
Already enabled in every starter app: 2 modules.
3 more are optional: the module loses a feature without them.
4 calls could not be resolved. See Couldn't resolve.
Before you disable inbox_ops in 0.8.0
0 modules require it in code
No module requires inbox_ops in code.
4 more use it optionally or for collaboration.
32 calls in this release could not be resolved, so this is not a guarantee.
requires ⚠ Gap into a module every starter app has (lower risk) Optional Collaboration In requires only, not seen in code In every starter appA dot takes its module's area colour. Each side lists the areas in the order of the map.Reads left to right: what uses it → inbox_ops → what it needs. Select a module to go to its row.Needs
| Module | In code | requires | package.json |
|---|---|---|---|
Module: ai_assistant | In code: Required · lib | requires: ⚠ Gap | package.json: ✓ Declared |
1 place
| |||
Module: customers | In code: Optional · api | requires: Not declared | package.json: Same package |
1 place
| |||
Module: dictionaries | In code: Optional · api | requires: Not declared | package.json: Same package |
2 places
| |||
Module: sales | In code: Optional · api | requires: Not declared | package.json: Same package |
3 places
| |||
In every app (2)
| Module | In code | requires | package.json |
|---|---|---|---|
Module: auth | In code: Required · lib | requires: ⚠ Gap in every app | package.json: Same package |
3 places
| |||
Module: notifications | In code: Required · lib, subscriber | requires: ⚠ Gap in every app | package.json: Same package |
3 places
| |||
Used by
| Module | In code | requires | package.json |
|---|---|---|---|
Module: catalog | In code: Collaboration · module-config | requires: Not declared | package.json: Same package |
2 places
| |||
Module: customers | In code: Collaboration · module-config | requires: Not declared | package.json: Same package |
3 places
| |||
Module: sales | In code: Collaboration · module-config | requires: Not declared | package.json: Same package |
2 places
| |||
Module: warranty_claims | In code: Collaboration · subscriber | requires: Not declared | package.json: Same package |
1 place
| |||
Couldn't resolve (4)
These calls pick a service by a variable, so static analysis can't tell which module they need. Check them in the code.
packages/core/src/modules/inbox_ops/ai-tools.ts:53·container.resolve(key)packages/core/src/modules/inbox_ops/lib/executionEngine.ts:491·ctx.container.resolve(key)packages/core/src/modules/inbox_ops/lib/executionHelpers.ts:168·ctx.container.resolve(key)packages/core/src/modules/inbox_ops/subscribers/extractionWorker.ts:66·ctx.resolve<T>(name)
Facts
Registers in DI (5)
InboxSettings·packages/core/src/modules/inbox_ops/di.ts:13InboxEmail·packages/core/src/modules/inbox_ops/di.ts:14InboxProposal·packages/core/src/modules/inbox_ops/di.ts:15InboxProposalAction·packages/core/src/modules/inbox_ops/di.ts:16InboxDiscrepancy·packages/core/src/modules/inbox_ops/di.ts:17
Emits events (16)
inbox_ops.email.reprocessed·packages/core/src/modules/inbox_ops/api/emails/[id]/reprocess/route.ts:67inbox_ops.email.received·packages/core/src/modules/inbox_ops/api/emails/[id]/reprocess/route.ts:72inbox_ops.email.received·packages/core/src/modules/inbox_ops/api/extract/route.ts:67inbox_ops.action.edited·packages/core/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/route.ts:101inbox_ops.reply.sent·packages/core/src/modules/inbox_ops/api/proposals/[id]/replies/[replyId]/send/route.ts:207inbox_ops.email.deduplicated·packages/core/src/modules/inbox_ops/api/webhook/inbound.ts:353inbox_ops.email.received·packages/core/src/modules/inbox_ops/api/webhook/inbound.ts:393inbox_ops.action.executed·packages/core/src/modules/inbox_ops/lib/executionEngine.ts:156inbox_ops.action.failed·packages/core/src/modules/inbox_ops/lib/executionEngine.ts:182inbox_ops.action.rejected·packages/core/src/modules/inbox_ops/lib/executionEngine.ts:234inbox_ops.proposal.rejected·packages/core/src/modules/inbox_ops/lib/executionEngine.ts:281inbox_ops.email.failed·packages/core/src/modules/inbox_ops/subscribers/extractionWorker.ts:196inbox_ops.email.processed·packages/core/src/modules/inbox_ops/subscribers/extractionWorker.ts:576inbox_ops.proposal.created·packages/core/src/modules/inbox_ops/subscribers/extractionWorker.ts:582inbox_ops.email.failed·packages/core/src/modules/inbox_ops/subscribers/extractionWorker.ts:601query_index.upsert_one·packages/core/src/modules/inbox_ops/subscribers/search-reindex-proposal-created.ts:28
Subscribes to events (4)
inbox_ops.action.executed·packages/core/src/modules/inbox_ops/subscribers/executionAuditor.ts:6inbox_ops.email.received·packages/core/src/modules/inbox_ops/subscribers/extractionWorker.ts:29inbox_ops.proposal.created·packages/core/src/modules/inbox_ops/subscribers/proposalNotifier.ts:9inbox_ops.proposal.created·packages/core/src/modules/inbox_ops/subscribers/search-reindex-proposal-created.ts:2
Entities (5)
InboxSettings·packages/core/src/modules/inbox_ops/data/entities.ts:76InboxEmail·packages/core/src/modules/inbox_ops/data/entities.ts:130InboxProposal·packages/core/src/modules/inbox_ops/data/entities.ts:221InboxProposalAction·packages/core/src/modules/inbox_ops/data/entities.ts:298InboxDiscrepancy·packages/core/src/modules/inbox_ops/data/entities.ts:378