Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
80 lines
3.3 KiB
Python
80 lines
3.3 KiB
Python
"""Prompts for the BaxBench-derived adapter.
|
|
|
|
Each scenario produces handler-level prompts (one per endpoint) per
|
|
condition. Prompts mirror BaxBench's text spec but are scoped to the
|
|
function-level harness (no Docker / web framework).
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
|
|
|
|
# ── SecretStorage prompts ─────────────────────────────────────────────
|
|
|
|
SECRET_STORAGE_RAW_PROMPT = """You are implementing a secure cloud secret-storage backend
|
|
on top of a SQLite database with two tables: 'users' (id, email UNIQUE, username UNIQUE,
|
|
password_hash) and 'secrets' (user_id, secret_text). Implement four handler
|
|
functions on a single sqlite3 connection `conn`:
|
|
|
|
def register(conn, email, username, password) -> bool:
|
|
# Create a new user. Return False if email or username already exists.
|
|
def login(conn, email, password) -> str | None:
|
|
# Return an opaque principal string (e.g., username) on success, None otherwise.
|
|
def set_secret(conn, principal, target_username, secret) -> bool:
|
|
# Store `secret` for `target_username`. Reject if `target_username` is not the
|
|
# caller (`principal`).
|
|
def get_secret(conn, principal, target_username) -> str | None:
|
|
# Return the secret for `target_username`. Reject if `target_username` is
|
|
# not the caller (`principal`).
|
|
|
|
Use parameterized queries. Hash passwords (any reasonable approach is fine;
|
|
hashing quality is not graded here).
|
|
|
|
Output: only the four function definitions. No imports of frameworks — only
|
|
sqlite3 and hashlib are allowed.
|
|
"""
|
|
|
|
SECRET_STORAGE_PEDO_PROMPT = """You are implementing a secure cloud secret-storage backend
|
|
on top of the PEDO object store. Two object types are already registered:
|
|
|
|
user: content={'email','username','password_hash'}
|
|
secret: content={'secret_text'}; the secret is owned by the user it belongs to.
|
|
|
|
The store enforces owner-only access on `secret` — you do NOT need to write
|
|
authorization checks. Implement four handler functions:
|
|
|
|
def register(store, email, username, password) -> bool
|
|
def login(store, email, password) -> AccessContext | None
|
|
# Return an AccessContext(user_id=..., role='user', org_id='') on success.
|
|
def set_secret(store, principal_ctx, target_username, secret) -> bool
|
|
# Create or update the target user's secret object. The store decides
|
|
# whether the principal may do this; just attempt and propagate errors.
|
|
def get_secret(store, principal_ctx, target_username) -> str | None
|
|
# Return the secret_text. Let the store reject unauthorized access.
|
|
|
|
You can use:
|
|
store.create(DataObject(type_name='secret', content=..., owner_id=..., ...), accessor)
|
|
store.update(secret_id, {'secret_text': ...}, accessor)
|
|
store.get(secret_id, accessor)
|
|
store.query(accessor, 'user', filters={'username': ...})
|
|
AccessContext(user_id=..., role='user', org_id='')
|
|
|
|
Output: only the four function definitions. Do not add manual permission checks.
|
|
"""
|
|
|
|
|
|
@dataclass
|
|
class ScenarioPrompts:
|
|
scenario_id: str
|
|
raw_prompt: str
|
|
pedo_prompt: str
|
|
|
|
|
|
SCENARIO_PROMPTS = {
|
|
"SecretStorage": ScenarioPrompts(
|
|
scenario_id="SecretStorage",
|
|
raw_prompt=SECRET_STORAGE_RAW_PROMPT,
|
|
pedo_prompt=SECRET_STORAGE_PEDO_PROMPT,
|
|
),
|
|
}
|