Autonome Web-Blöcke: Manifest-Prüfung, Lock-Werkzeug und Migration von iris-claude-sessions (iris/Iris#149) #225
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/iris-plugins#225
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Worum es geht
Teil des Features Autonome Web-Blöcke (Spezifikation und alle Entscheidungen: iris/Iris#149). Auf Plugin-Seite: Werkzeuge und Prüfungen für das neue Manifest, dann die Migration der Plugins, die heute einen Wächter als Umweg brauchen. Auslöser war der Praxistest von iris-plugins#203 (Memory-Editor, Wächter, Lessons Learned im PLAN.md von
iris-claude-sessions).Zu tun
iris-plugin-dev,registry-tools): neue Felderactions_api,autonomous_block_types,actions,launchers,runtimeauf Vollständigkeit prüfen (Skript vorhanden, Name deklariert, Zeitlimit,beschreibungnicht leer, Platzhalter-Texte).plugin_dev.py, der aus den Abhängigkeiten eines Plugins die hash-gepinnte Lock-Datei erzeugt (Format nach Entscheidung in #149) und prüft, dass nichts ungepinnt ist.registry-tools/privacy_scan.py) auch überbeschreibungder Aktionen und über die Lock-Datei.beschreibungerscheinen im Klartext (Gegenstück in der App: iris/Iris#149).iris-claude-sessions: Aktionen statt Wächter für Sessions-Canvas und Memory-Editor (speichern,exportieren,importieren,rename,trash,restore,open, …); Zustand überirisSaveState;launchersfür „Claude-Code-Sessions“; Titel von Iris-gestarteten Sessions (aus der ersten echten Nachricht). Der Wächter bleibt, bis das Feature in einem stabilen Release steckt; danach neue Plugin-Version mit höhereriris_min_version.PLUGIN-REGISTRY-REPO.mdund README Kapitel 19/20 nachziehen.Nicht Teil
Die Umsetzung in der App und im Linux-Server (eigene Issues, siehe #149).
Abnahme
pruefenerkennt fehlerhafte Aktionen und ungepinnte Abhängigkeiten; der Memory-Editor läuft nach der Migration ohne Wächter, Speichern/Exportieren/Abbrechen ohne Modell-Lauf; Tests grün.Stand iris/Iris#149: Schritte 1–4 sind gemergt, die Plugin-Seite ist damit nutzbar: Manifest (
actions,autonomous_block_types,runtime),irisCall,irisSaveState,irisFinish,irisPluginInit(block, readOnly, state); Beschreibung indocs/plugin-development/06-plugin-actions.md. Offen für dieses Issue: Manifest-Prüfung im Veröffentlichungsskript, Lock-Werkzeug iniris-plugin-dev, Migration von Memory-Editor und Sessions-Canvas (das wäre der erste echte Test der Aktionen). Der Wächter in iris-claude-sessions bleibt bis dahin.PR #230 gemergt: feat(plugins): Action-Contract tooling — Manifest-Prüfung, Lock-Werkzeug, Privacy-Scan, Store-Seite (iris-plugins#225)
#230
Commits:
Stand — iris-plugins#225, Plugin-Seite of the Action-Contract
Befund
The plugin-side tooling for the new Manifest fields (iris/Iris#149) is built:
registry-tools/plugin_actions.py(new): single source of truth for the Action-Contract —validate_manifestmirrorsPluginActionsCore.swiftdeclaration(fromManifest:)(names, script paths, args, timeout/max_bytes bounds, mandatorybeschreibung,autonomous_block_types⊆provided_block_types, launchers naming a declared action,runtime.python/runtime.lock,platforms);lock_pruefenchecks that every package line of a Lock-File carries--hash=sha256:.pruefen(pd_pruefen) checks the new fields, that every action script exists, and thatruntime.locklies present and fully pinned.registry_index.addrefuses a defective declaration before anything is written, and refuses a missing/unpinned Lock-File in the package.plugin_dev.py lock erzeugenresolves the requirements withuv(uv lock+uv export --frozen) and writes the pinned file to the path ofruntime.lock;lock pruefenreports unpinned lines. Marker- and option-lines are refused (they cannot be pinned).privacy_scan.pynow scans thebeschreibungof every action (they stand in the consent and install dialog) and the Lock-File (.lockadded to the package scan).store_page.pyrenders the Action-Beschreibungen from the Manifest in Klartext (section „Aktionen“, new CSS in the template) — the counterpart of the Installationsdialog in the App.PLUGIN-REGISTRY-REPO.mddecision 13, iris-plugin-dev SKILL.md (lockcommands, pruefen checks).Geprüft
pruefenrecognizes defective actions and unpinned dependencies: 8 new tests intest_pruefen.py(valid declaration passes; missing description/script, autonomous type outside provided, launcher naming an undeclared action, unpinned/missing lock block).registry_index.addrefuses defective declarations and unpinned/missing Lock-Files in the package: 4 new tests; privacy scan covers action beschreibungen and the Lock-File: 2 new tests.test_lock.py(pinned/unpinned, missing file, marker lines, validate_manifest cases).Nicht geprüft
uvrun against PyPI in the tests (theerzeugentests stop before the network; the uv invocation itself is exercised only by the marker-line refusal). A reallock erzeugenon the dev machine with a plugin that has dependencies is not yet run.iris-claude-sessions(Actions instead of Wächter) follows in a later commit.Grenzen / offen
plugin_actions.pylives inregistry-tools/(the test clones copy that directory); the skill modules import it with a fallback path, andbuild-irisplugin.shcopies it into the bundle so the installed plugin stays self-contained.PR #231 gemergt: chore(repo): stand-Datei of #225 was committed by -a — remove it (#225)
#231
Commits: