A VS Code extension that generates interactive HTML reports from YAML files, where each YAML file represents an argumentation framework.
- Interactive graph visualization — generates an interactive HTML report from a YAML file representing an argumentation framework, displayed in a side-by-side webview panel
- Extensions — automatically computes and displays conflict-free, admissible, complete, preferred, grounded, and stable extensions
- Decisions — pose yes/no questions about whether an argument can or must appear in a given extension type (see Decisions)
- Sets — assign arguments to named sets and filter the graph by set (see Sets)
- Step-by-step construction — arguments can be introduced incrementally across steps, with the graph and extensions recomputed at each step (see Step-by-Step Construction)
- Graph layout control —
topandbottomannotations control which arguments are placed at the top or bottom of the graph layout (see Top and Bottom Layout) - Zoom controls — zoom in, zoom out, and fit-to-view buttons on the graph
- Live reload — the report updates automatically whenever the YAML file is saved
- Export to HTML — right-click the report panel and select "Export as HTML" to save a standalone HTML file
- A YAML file that represents an argumentation framework using the
argumentskey (required), and optionally theexhibit,attacks, anddecisionskeys.
- Open a YAML file containing argumentation framework data in VS Code
- Click the "Generate ArgBlazer Report to the right" button (ArgBlazer icon) in the editor title toolbar (top-right corner)
- The HTML report will appear in a webview panel beside your YAML file
- Reports automatically update when you save changes to the YAML file
A YAML file contains the exhibit (optional), arguments (required), and attacks (optional) keys:
exhibit: |
Tweety is a bird.
Tweety is a penguin.
arguments:
a:
summary: Tweety can fly because birds typically can fly
details:
rule: Birds typically can fly
evidence: Tweety is a bird
conclusion: Tweety can fly
b:
summary: Tweety cannot fly because it is a penguin
details:
rule: Penguins cannot fly
evidence: Tweety is a penguin
conclusion: Tweety cannot fly
attacks:
- [b, a]Arguments with no fields can be written with an empty value:
arguments:
a:
b:
attacks:
- [b, a]When attacks is omitted, the report displays the arguments as disconnected nodes.
The decisions key poses yes/no questions about whether a specific argument appears in a given extension. Each decision has three fields:
criterion: the argument to queryquantifier:some(the argument appears in at least one extension, default),all(it appears in every extension), ornone(it appears in no extension)semantics: the extension type to query, one ofconflict_free,admissible,complete,preferred,grounded, orstable(default:preferred)
arguments:
a:
summary: Order fried chicken in
b:
summary: Get fried chicken to go
c:
summary: Fried chicken to go will not be crispy
d:
summary: An air fryer at home can make fried chicken crispy
attacks:
- [b, a]
- [a, b]
- [c, b]
- [d, c]
decisions:
"Can we get fried chicken to go?":
criterion: b
quantifier: some
semantics: preferred
"Must we get fried chicken to go?":
criterion: b
quantifier: all
semantics: preferredThe Decisions panel appears in the report when decisions is present, showing each question with a Yes or No answer that updates as you navigate steps.
The sets annotation assigns an argument to one or more named sets. Arguments without a sets annotation are treated as "unassigned" and can be shown or hidden separately via the dropdown. You can filter the graph to show only arguments belonging to selected sets.
arguments:
a:
summary: Order fried chicken in
sets:
- apt 1
- apt 2
b:
summary: Get fried chicken to go
sets:
- apt 1
- apt 2
c:
summary: To-go chicken will be soggy
details:
rule: Food transported in a box loses crispiness due to trapped steam
evidence: Fried chicken taken to go is transported in a box
conclusion: To-go chicken will be soggy
sets:
- apt 1
- apt 2
d:
summary: An air fryer at home can make fried chicken crispy
details:
rule: An air fryer restores crispiness by circulating hot air
evidence: There is an air fryer at home
conclusion: An air fryer at home can make fried chicken crispy again
sets:
- apt 2
attacks:
- [b, a]
- [a, b]
- [c, b]
- [d, c]Arguments can be introduced incrementally using the step annotation. The graph is built up step by step—each step shows all arguments introduced up to that point, along with any attacks between them. Use the navigation buttons in the report to move between steps.
arguments:
a:
step: 1
b:
step: 1
c:
step: 2
d:
step: 3
attacks:
- [b, a]
- [c, b]
- [d, c]In this example, step 1 shows a and b with the attack [b, a]; step 2 adds c and the attack [c, b]; step 3 adds d and the attack [d, c]. Extensions are recomputed at each step. If the step field is omitted for an argument, steps are assigned automatically based on the order in which the arguments appear in the arguments list. Specifically, each argument is assigned to a new step in sequence.
The top and bottom annotations control the vertical placement of arguments in the graph. Arguments marked top are positioned at the top of the layout, and those marked bottom at the bottom. The graph layout is computed using BFS distances from these root nodes.
arguments:
a:
anchor: top
b:
c:
d:
anchor: bottom
e:
anchor: bottom
attacks:
- [b, a]
- [c, b]
- [d, c]
- [e, b]When no anchor is provided, the first argument defaults to the top root and the last argument defaults to the bottom root.
- Install dependencies:
npm install - Compile TypeScript:
npm run compile - Export as the VSIX file:
npx vsce package
- Decisions — pose yes/no questions about whether an argument appears in a given extension type, with answers updating at each step
- Sets — assign arguments to named sets and filter the graph by set; extensions are recomputed per step and per active set filter
- Simplified YAML format — argument fields (
summary,details,step,anchor,sets) are now direct keys under the argument ID instead of list items;top/bottomreplaced byanchor: top/anchor: bottom - Keyboard shortcut —
Ctrl+/(orCmd+/) to toggle comments on selected lines in the YAML editor
Initial release with interactive report generation for a given argumentation framework.
Early version with Python dependencies (deprecated).