Recipe catalog / action-reversibility
Grade action reversibility
How reversible is action, given any context, from a trivial undo to an irreversible external effect?
You need to decide whether an agent may proceed on its own or must pause for approval before a step that cannot be taken back.
Explore this recipe interactively ยท Source and implementation guide
Use action-reversibility in TypeScript
Install with npm install jev-recipes. Requires Node.js 22.9 or newer and ES modules. Set TYPESAFE_API_KEY in your server environment for live calls, which send input to TypeSafe and use API quota. See the installation guide.
import { actionReversibility } from 'jev-recipes/action-reversibility';
const result = await actionReversibility({
"action": "Send the drafted outage apology email to the 1,200 customers on the affected-accounts list.",
"context": "The draft has been approved. The send goes through the marketing platform, which has no recall feature once a campaign is dispatched.",
"minConfidence": 0.8
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| action | string | Required |
| context | string | Optional |
| minConfidence | number | Optional |
Full input and result schemas
{
"input": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"action": {
"type": "string"
},
"context": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"action"
]
},
"result": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"model": {
"type": "string"
},
"usage": {
"type": "object",
"properties": {
"input_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"input_tokens",
"output_tokens"
],
"additionalProperties": false
},
"status": {
"type": "string",
"enum": [
"ready",
"review"
]
},
"score": {
"type": "number",
"minimum": 0
},
"level": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"probabilities": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"reversibility": {
"type": "string",
"enum": [
"trivial",
"effortful",
"partial",
"practical",
"irreversible"
]
}
},
"required": [
"model",
"usage",
"status",
"score",
"level",
"confidence",
"probabilities",
"reversibility"
],
"additionalProperties": false
}
}Saved example result
This hand-authored response demonstrates the contract. It is not a model accuracy measurement. Run it without an API key: npx jev-recipes demo action-reversibility.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"score": 3.85,
"level": 4,
"confidence": 0.89,
"probabilities": {
"0": 0,
"1": 0.01,
"2": 0.02,
"3": 0.08,
"4": 0.89
},
"reversibility": "irreversible"
}
Evaluation evidence
No verified live accuracy measurement is available. Evaluate representative cases before using this decision in your workflow.
Use the evaluation guide to measure this decision on your own labeled cases.
Limitations
- Grades the action as described. It does not know which undo, backup, or recall facilities your system actually provides unless context says so.
- Reversibility is not permission. An irreversible action may be exactly what the user asked for, and a trivial one may still be out of scope.
Related recipes
- action-scope: Use action-scope to check whether the action stays within the requested work before grading how reversible it is.