Harness spec 3.0.0-draft: where each tool is offered; the chat's tools

Every tool says its `sessions` (chat, agent or both). The file tools read, write,
edit, glob, grep and list are shared; mkdir, mv, rm, search, python and the forge
verbs (commit, branch, pr, merge, tag, release) are the chat's; show and recall
are new and shared. New fields: `requires` (page, display, forge) with the exact
`unavailable` answer, and `confirm: always` for merge, tag and release.
knowledge_*, notes_search, note_view and note_manage leave the chat. Default
rules for the new tools; modes.json says what `confirm` does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
HomerandClaude Opus 5.5 committed 2026-10-27 18:52:24 +00:00
1 parent a03d46cf74
commit 253ef4a8a0
50 files changed
+568 -20

No files matched your search

+50
View File
@@ -0,0 +1,50 @@
{
"name": "python",
"scope": "llembas",
"sessions": "chat",
"risk": "execute",
"exclusive": false,
"block": "shell",
"purpose": "purpose",
"requires": [
"page"
],
"unavailable": "Python cannot run now: no open browser page is attached to this chat.",
"aliases": {
"cli": [],
"llembas": []
},
"variables": {
"packages": "the packages the instance provides beyond the standard library, as a list, or \"none\"",
"seconds": "the time limit of one call, in seconds",
"memory": "the memory limit of one call, with its unit",
"output": "how much printed output comes back, with its unit"
},
"description": "Run Python for calculations and for working with files — parse JSON or CSV, transform text, compute. It runs in the user's browser (Pyodide), sandboxed: no network, no shell, no packages beyond the standard library and these: {{packages}}. Returns what the code printed and the value of its last expression.\n\n- `files` are copied in before the run, at the same paths, from what this session can read.\n- Files the code writes come back only when listed in `save`: each is written as the write tool would write it, with this session's permissions.\n- At most {{seconds}} seconds and {{memory}} of memory per call; printed output past {{output}} is cut.\n- Every call starts fresh: nothing is kept between calls.",
"parameters": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "The Python code to run"
},
"files": {
"type": "array",
"items": {
"type": "string"
},
"description": "Files to copy in before the run"
},
"save": {
"type": "array",
"items": {
"type": "string"
},
"description": "Files the code writes that are to be saved back"
}
},
"required": [
"code"
]
}
}