plandex-ai/plandex · error

error creating model pack: %w

Error message

error creating model pack: %w

What it means

Returned inside the db.WithTx transaction that persists custom models/providers/model packs, when db.UpsertModelPack fails to insert or update one of the submitted model packs. Because it occurs within the transaction closure, the whole batch of custom model/provider/model pack changes is rolled back rather than partially applied. The underlying %w carries the database-layer cause.

Source

Thrown at app/server/handlers/models.go:305

		return
	}

	err = db.WithTx(r.Context(), "create custom models/providers/model packs", func(tx *sqlx.Tx) error {
		for _, model := range toUpsertCustomModels {
			if err := db.UpsertCustomModel(tx, model); err != nil {
				return fmt.Errorf("error creating custom model: %w", err)
			}
		}

		for _, provider := range toUpsertCustomProviders {
			if err := db.UpsertCustomProvider(tx, provider); err != nil {
				return fmt.Errorf("error creating custom provider: %w", err)
			}
		}

		for _, modelPack := range toUpsertModelPacks {
			if err := db.UpsertModelPack(tx, modelPack); err != nil {
				return fmt.Errorf("error creating model pack: %w", err)
			}
		}

		if len(toDeleteCustomModelIds) > 0 {
			if err := db.DeleteCustomModels(tx, auth.OrgId, toDeleteCustomModelIds); err != nil {
				return fmt.Errorf("error deleting custom models: %w", err)
			}
		}

		if len(toDeleteCustomProviderIds) > 0 {
			if err := db.DeleteCustomProviders(tx, auth.OrgId, toDeleteCustomProviderIds); err != nil {
				return fmt.Errorf("error deleting custom providers: %w", err)
			}
		}

		if len(toDeleteModelPackIds) > 0 {
			if err := db.DeleteModelPacks(tx, auth.OrgId, toDeleteModelPackIds); err != nil {
				return fmt.Errorf("error deleting model packs: %w", err)

View on GitHub (pinned to e2d772072e)

Solutions

  1. Identify the failing model pack from the wrapped error
  2. Check pack name uniqueness and role config validity
  3. Fix the payload and retry the sync
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at app/server/handlers/models.go:305 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05). Data as JSON: /api/errors/7e6c0ccaa3f077c8. Report an issue: GitHub.