catalog · git:20260908.9e6261b · 2026-09-08 · sha256 7ecbf1055f71e014

catalog git:20260908.9e6261bA

Immutable. This exact content is served forever at /api/v1/blob/7ecbf1055f71e014.

---
name: catalog
description: >-
  Constructs catalog products (standard or limited), catalog orders, and
  account-credit enrollment, including product-then-credit scenes.
  Internal catalog slot of the parent pack; do not invoke independently.
license: Apache-2.0
---

# Catalog data-build slot

Vendor-neutral catalog-domain slot. Drop-in under pack `slots/` (already discovered; no extra `slot_roots` / marketplace path).  
`slot.yaml` is the scene config. More specific entities (limited / credit) are listed before generic product.  
Executors talk to `DATA_BUILD_API_BASE` (default local mock on port 8765). The case pipeline binds these executors from `slot.yaml` without an LLM when the match is unique.

## Single-step routing

| User intent | Executor |
|---|---|
| Standard catalog product | `scripts/executors/create_product.ts` |
| Limited catalog product | `scripts/executors/create_limited_product.ts` |
| Catalog order | `scripts/executors/create_order.ts` |
| Account credit on a product / user | `scripts/executors/setup_account_credit.ts` |

Do not invent `productId` / `userId` when the user already supplied them. Optional fields use executor defaults.

```bash
node scripts/executors/create_product.ts --json '{"name":"Northwind Standard","city":"demo-city"}'
```

## Scene orchestration

**credit-ready-product**

1. Create catalog product (or reuse `productId`)
2. Enroll the product and user in account credit
3. Return `productId`, enrollment result, `creditBalance`

**bookable-order**

1. Ensure a product exists
2. Create an order for `userId` + `productId`
3. Return `productId`, `orderId`, `status`

Pass upstream `data` fields into the next executor. Do not skip a later scene step.

## Guardrails

- Start `node ../mock_server.ts` if no enterprise gateway is configured
- Do not invent `productId` / `userId` / `orderId`
- Defaults: `city=demo-city`, `validHours=4`, `fulfillOn=today+2days`, `quantity=1`, `credits=1000`
- See [references/tools-guide.md](references/tools-guide.md) and [../SLOT_SPEC.md](../SLOT_SPEC.md)