To solve this optimization problem, we first need to define the decision variables and the objective function. Let's denote the number of chocolate bars produced as \(x\) and the number of chocolate wafers produced as \(y\). The objective is to maximize profits, with each chocolate bar contributing $2 to profit and each chocolate wafer contributing $3.

The constraints are:
1. The chocolate bar team can produce at most 80 chocolate bars per day: \(x \leq 80\).
2. The chocolate wafer team can produce at most 100 chocolate wafers per day: \(y \leq 100\).
3. The shared packaging machine can process at most 125 chocolate items (bars and wafers) per day: \(x + y \leq 125\).

Non-negativity constraints also apply since the number of chocolate bars and wafers cannot be negative: \(x \geq 0\) and \(y \geq 0\).

The objective function to maximize is: \(2x + 3y\), representing the total profit from selling \(x\) chocolate bars and \(y\) chocolate wafers.

Here's how we can translate this problem into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Chocolate_Production")

# Define decision variables
x = m.addVar(lb=0, name="chocolate_bars")  # Number of chocolate bars
y = m.addVar(lb=0, name="chocolate_wafers")  # Number of chocolate wafers

# Define constraints
m.addConstr(x <= 80, name="max_chocolate_bars")
m.addConstr(y <= 100, name="max_chocolate_wafers")
m.addConstr(x + y <= 125, name="max_packaging_capacity")

# Define objective function
m.setObjective(2*x + 3*y, GRB.MAXIMIZE)

# Optimize model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Chocolate Bars: {x.x}")
    print(f"Chocolate Wafers: {y.x}")
    print(f"Total Profit: ${2*x.x + 3*y.x}")
else:
    print("No optimal solution found")
```