diff --git a/CITATION.cff b/CITATION.cff deleted file mode 100644 index 16b56b5..0000000 --- a/CITATION.cff +++ /dev/null @@ -1,53 +0,0 @@ -# Citation File Format (CFF) v1.2.0 — https://citation-file-format.github.io/ -# GitHub auto-renders this as a "Cite this repository" widget. -cff-version: 1.2.0 -title: "TROPT: Textual Trigger Optimization Toolbox" -message: >- - If you use TROPT in your research, please cite both the software (this file) - and the accompanying paper (see `preferred-citation` once available). -type: software -authors: - - family-names: Ben-Tov - given-names: Matan - # TODO: add orcid, affiliation, email - - family-names: Sharif - given-names: Mahmood - # TODO: add orcid, affiliation, email -repository-code: "https://github.com/matanbt/TROPT" -url: "https://tropt.dev" -license: MIT -version: 0.1.0 -# TODO: date-released (YYYY-MM-DD) once a tagged release is cut. -keywords: - - discrete-optimization - - adversarial-attacks - - jailbreak - - red-teaming - - prompt-optimization - - language-models - - llm - - nlp - - interpretability -abstract: >- - TROPT (Textual Trigger Optimization Toolbox) is an open framework for - unifying and advancing discrete text-trigger optimization. It provides a - modular interface for composing models, losses, optimizers, and - inputs/targets, and ships with 30+ ready-to-run recipes covering LLM - jailbreaks, prompt tuning, and model inspection. - -# TODO (Matan): add `preferred-citation` block when the paper is publicly -# available (e.g. on arXiv or after NeurIPS 2026 acceptance). Template: -# -# preferred-citation: -# type: conference-paper # or: article, misc -# title: "TROPT: An Open Framework for Unifying and Advancing Discrete Text Optimization" -# authors: -# - family-names: Ben-Tov -# given-names: Matan -# - family-names: Sharif -# given-names: Mahmood -# year: 2026 -# # conference: -# # name: "Conference on Neural Information Processing Systems (NeurIPS)" -# # url: "https://arxiv.org/abs/XXXX.XXXXX" -# # doi: "10.XXXX/XXXXX" diff --git a/CLAUDE.md b/CLAUDE.md index ef64816..4063eb9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,6 +33,11 @@ When iterating on docs (`docs/`), use `uv run sphinx-autobuild docs docs/_build/ The project uses Weights & Biases for experiment tracking. Ensure `wandb` is configured if running experiments. +### Releasing (to PyPI) + +1. Bump `version` in `pyproject.toml` (the published version is read from there). +2. GitHub → Releases → new release; in "Choose a tag" enter `v` and pick "Create new tag on publish", then publish. This triggers `.github/workflows/publish.yml` → PyPI. + ## Architecture (orientation) TROPT is built on **four orthogonal components** glued together by an executable **recipe**: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0e52bc4..716169c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -66,6 +66,10 @@ After implementing your addition to TROPT, and running the essential checks, ope 1. Fork → create a topic branch off `main`, preferably with an informative name (e.g. `feature/my-loss`, `fix/gcg-retokenize`). 2. Open a PR against `main`. The description should state *what* and *why*, link the issue, and call out any breaking changes (preferably none) or new dependencies. +### Releasing (maintainers) + +To cut a new release to PyPI: (1) bump `version` in `pyproject.toml` (the published version is read from there), then (2) publish a new GitHub Release, entering a matching `v` tag in "Choose a tag" ("Create new tag on publish"), which triggers the publish workflow. + --- diff --git a/README.md b/README.md index 7f348f4..40510ab 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- TROPT — Textual Trigger Optimization Toolbox + TROPT — Textual Trigger Optimization Toolbox

@@ -11,9 +11,7 @@

Website  |  Quick Start (Examples, Notebook)  |  - Guides  |  - API Ref.  |  - Paper + Paper

@@ -21,6 +19,8 @@ GitHub stars Tests License + Guides + API Reference

@@ -72,7 +72,7 @@ print("Lowest loss:", result.best_loss) ``` -### Compose Your Own Recipe 🫴 +### Compose Your Own Recipe 🪄 Pick any model, loss, and optimizer and assemble them directly — this is how the _recipes_ are built underneath: @@ -108,7 +108,7 @@ Quick examples for a custom optimizer and loss are in [quickstart.ipynb](quickst ## 🤖 Use TROPT with Your Coding Agent -TROPT ships with a skill for coding agents at [`skills/tropt/SKILL.md`](skills/tropt/SKILL.md) that tells any AI coding assistant (Claude Code, Codex, Gemini CLI, Cursor, …) how to install, run, and extend TROPT. Simply point your coding agent at it. +TROPT includes a skill for coding agents at [`skills/tropt/SKILL.md`](skills/tropt/SKILL.md) that tells any AI coding assistant (Claude Code, Codex, Gemini CLI, Cursor, …) how to install, run, and extend TROPT. ## Contributing @@ -136,14 +136,13 @@ and authorized red-teaming of NLP models. ## Citation -[TODO paper cite!] If you find this package useful, please cite our paper as follows: ```bibtex -@misc{tropt2026, - title = {TROPT: An Open Framework for Unifying and Advancing Discrete Text Optimization}, - author = {Ben-Tov, Matan and Sharif, Mahmood}, - year = {2026}, - howpublished = {\url{https://github.com/matanbt/TROPT}}, +@article{tropt2026, + title = {TROPT: An Open Framework for Unifying and Advancing Discrete Text Optimization}, + author = {Ben-Tov, Matan and Sharif, Mahmood}, + journal = {arXiv}, + year = {2026}, } ``` diff --git a/docs/index.md b/docs/index.md index 427d045..c1333ff 100644 --- a/docs/index.md +++ b/docs/index.md @@ -61,7 +61,7 @@ myst: GitHub - + Paper @@ -980,10 +980,11 @@ TROPT is built for *defensive research*: auditing, interpretability, robustness If you find TROPT useful in your research, please cite: ```bibtex -@misc{tropt2026, - title = {TROPT: An Open Framework for Unifying and Advancing Discrete Text Optimization}, - year = {2026}, - howpublished = {\url{https://github.com/matanbt/TROPT}}, +@article{tropt2026, + title = {TROPT: An Open Framework for Unifying and Advancing Discrete Text Optimization}, + author = {Ben-Tov, Matan and Sharif, Mahmood}, + journal = {arXiv}, + year = {2026}, } ``` diff --git a/pyproject.toml b/pyproject.toml index b7d7dfc..155e131 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "tropt" -version = "0.1.0" +version = "0.1.1" description = "A toolbox for optimizing discrete text triggers." readme = "README.md" requires-python = ">=3.10" @@ -25,10 +25,7 @@ keywords = [ "ai-safety", ] classifiers = [ - "Development Status :: 3 - Alpha", - "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12",