Skip to content

filmopen_plugins

Generated by scripts/package_digest.py; regenerate, never edit.

What a FilmOpen plug-in is, as pure Dart: the manifest and its schemas (plugin_manifest.dart, setting_spec.dart), key ids and their store names (key_id.dart), the interface definition read (plugin_api.dart: PluginApi, from plugins/filmopen-plugin-api.json) held to by the checker the format package keeps and this barrel re-exports (JsonShape, filmopen_format’s json_shape.dart), the locale files and their namespaces (plugin_strings.dart), the package a plug-in is read through (plugin_package.dart: PluginPackage, SourcePluginPackage, PluginFolder) and the zip it travels in (plugin_archive.dart). Problems are codes (plugin_issue.dart), never sentences.

pure Dart. 12 files, 3,207 lines under lib/; 205 tests in 23 files. Barrel: lib/filmopen_plugins.dart.

  • filmopen_format — uses EntityType, FileNameParser, JsonShape, JsonShapeException, PlatformFile, ProjectSource, ServerAddress, ShapeLibrary, ShortName, VersionStem, decodeDocument, sameJson, stockPluginAuthor

Third-party: archive, crypto.

filmopen_app, filmopen_plugin_host

What the barrel exports, file by file. A name is class, enum, mixin, extension, typedef, a top-level function, getter, setter or variable; under a class, its public constructors, fields, getters, setters and methods.

  • class KeyId — A key’s name: <owner>:<slot>.
    • const KeyId(this.owner, this.slot)
    • final String owner — The tag of the plug-in that declares the key.
    • final String slot — The slot’s name inside its owner.
    • static KeyId? parse(String text) — Reads <owner>:<slot>; null for anything else.
    • String get storeName — The name the credential store keeps the key under.
    • String get preferenceName — The preference that holds what the Provider keys tab shows of the key.
  • enum EntityHook — The hooks of §14.4, called on entities the person selected.
    • values: transform, analyze, import, export
    • static EntityHook? byName(String name)
  • enum PlatformHook — What a plug-in provides for a platform.
    • values: complete, render, estimateCost, verifyKey
    • static PlatformHook? byName(String name)
  • variable const appKeyOwner — The reserved key owner app, which no plug-in may take as its tag or name as a dependency.
  • enum ApiCaller — Who may call a function (the definition’s calledBy).
    • values: app, person, plugins
    • static ApiCaller? byName(String name)
  • class PluginApiException — A definition that could not be read as one: where, in the file’s own terms, and what is wrong.
    • const PluginApiException(this.at, this.problem)
    • final String at
    • final String problem
  • class ApiFunction — One function a plug-in may expose: every plug-in’s own (status), or one of an interface’s.
    • const ApiFunction({ required this.name, required this.interface, required this.required, required this.calledBy, required this.state, required this…
    • final String name
    • final String? interface — The interface it belongs to; null for the function every plug-in has.
    • final bool required — Whether a plug-in that implements the interface must have it.
    • final Set<ApiCaller> calledBy — Who may call it.
    • final String state — built, planned, or the name of the release a function is planned for.
    • final int since — The definition’s revision it arrived in.
    • final String summary
    • final JsonShape? args — What it receives beside ctx; null where it takes nothing — it is called with ctx alone, as an action is.
    • final JsonShape returns — What it answers, which the app holds it to before using it.
    • final Object? example — A value of [args], for a reader and for the developer page’s box.
    • bool get isPlanned — Settled and not callable yet (the definition’s planned).
    • bool get plugInsMayCall — Whether another plug-in may reach it through ctx.call.
  • class ApiDeclaration — What a manifest adds when it declares an interface: platform, models.
    • const ApiDeclaration({required this.name, required this.required, required this.schema, required this.summary})
    • final String name
    • final bool required
    • final JsonShape schema
    • final String summary
  • class ApiInterface — One interface: a named set of functions a plug-in implements, and what a manifest that declares it adds.
    • const ApiInterface({ required this.name, required this.state, required this.summary, required this.declare, required this.functions, })
    • final String name
    • final String state
    • final String summary
    • final Map<String, ApiDeclaration> declare
    • final Map<String, ApiFunction> functions
    • bool get isPlanned
  • class ApiArgument — One argument of a member of ctx that is a function.
    • const ApiArgument({required this.name, required this.optional, required this.schema})
    • final String name
    • final bool optional
    • final JsonShape schema
  • class ApiMember — One member of ctx: a value the call was given, or a function — most of them a door the app answers.
    • const ApiMember({ required this.name, required this.isFunction, required this.state, required this.summary, this.needs, this.schema, this.args = co…
    • final String name — Its name below ctx: http, project.get, l10n.t.
    • final bool isFunction
    • final String state
    • final String summary
    • final String? needs — What a manifest must say for it to answer: capabilities.ai.
    • final JsonShape? schema — A value’s shape.
    • final List<ApiArgument> args — A function’s arguments, in order.
    • final JsonShape? returns — What a function answers.
    • bool get isPlanned
  • class ApiBeyond — What a plug-in may have beyond its interfaces: actions and offers.
    • const ApiBeyond({required this.name, required this.summary, this.args, required this.returns})
    • final String name
    • final String summary
    • final JsonShape? args
    • final JsonShape returns
  • class PluginApi — The definition, read.
    • static const assetPath — Where the definition is, in the repository and in the app’s bundle.
    • static const plannedState — The state of what is settled and not callable yet.
    • final int api — The breaking number: a manifest’s api.
    • final int revision — Grows by one whenever anything is added: a manifest’s minRevision.
    • final ShapeLibrary shapes — The shapes that recur ($defs).
    • final Map<String, ApiFunction> everyPlugin — What every plug-in has, whatever it implements: status.
    • final Map<String, ApiInterface> interfaces — The interfaces, in the file’s order.
    • final ApiBeyond actions
    • final ApiBeyond offers
    • final Map<String, ApiMember> ctx — Everything the app hands a plug-in, by its name below ctx.
    • Iterable<ApiFunction> get functions — Every function a plug-in may expose: every plug-in’s, then each interface’s in the file’s order.
    • ApiFunction? function(String? interface, String name) — [name] of [interface], or of every plug-in where [interface] is null.
    • bool isContractFunction(String name) — Whether [name] is a function of this contract at all: of any interface, or of every plug-in.
    • static PluginApi parse(String text) — Reads the definition.
  • class PluginArchive — A plug-in as it travels: a zip of its folder, <tag>-<author>-v<n>.zip.
    • final String? tag — The plug-in’s tag, from its manifests; null when the archive was refused.
    • final Map<String, Uint8List> files — Every file, by its path inside the plug-in’s folder.
    • final List<PluginIssue> issues — Why the archive was refused, when it was.
    • bool get isRefused
    • static const maxUnpackedBytes — What a plug-in may weigh unpacked.
    • static const maxFiles — How many files a plug-in may have.
    • static PluginArchive read(Uint8List bytes, {String? expectedTag}) — Reads a zip whose entries are the plug-in folder’s contents, at the archive’s top or inside one folder named after the tag.
    • String? text(String path) — A text file of the archive.
  • class PluginFolderDigest — What a plug-in’s folder held when it was read: the hash a person’s Allow is given for, and how much code it holds.
    • const PluginFolderDigest({required this.hash, required this.files, required this.unreadable, this.refused})
    • final String? refused — Why the folder was not read at all, and null where it was read: too-large, or unreadable where it could not even be listed.
    • final String hash — The hash of every file, by path.
    • final Map<String, String> files — Each file’s own hash, by path: the stock record is checked against these.
    • final List<String> unreadable — Paths whose bytes could not be read.
  • variable const mostFolderFiles — Reads every file of [package] and hashes the folder.
  • variable const mostFolderBytes
  • function Future<PluginFolderDigest> pluginFolderDigest(PluginPackage package)
  • enum PluginProblem — The kinds of problem a plug-in’s files can have.
    • values: notObject, missingField, wrongType, notPlugin, badName, apiUnsupported, unknownField, unknownHook, unknownInterface, needsNewerApp, updateRequired, unknownSettingType, badEntry, badKeyId, unknownPlatform, unknownEntityType, notApplied, badHost, badCodeFile, localeMismatch, notLocaleFile, colonInKey, noManifest, unreadable, noEnglish, noCode, folderMismatch, platformConflict, archiveUnreadable, archiveEscapes, archiveTooLarge
  • class PluginIssue — One problem, with the field it concerns and the values its sentence needs.
    • const PluginIssue(this.problem, {this.field, this.args = const {}})
    • final PluginProblem problem
    • final String? field
    • final Map<String, Object?> args
  • class KeySlot — A key a plug-in owns.
    • const KeySlot({required this.id, required this.platform, this.label, this.help, this.auth = 'key'})
    • final String auth — How the slot obtains its credential: a copied key or platform OAuth sign-in.
    • final KeyId id
    • final String platform
    • final String? label
    • final String? help
  • class OfferSpec — A function another plug-in may call (the architecture document’s §4.2), one of the plug-in object’s own, called as (ctx, args) like a hook.
    • const OfferSpec({ required this.name, required this.label, this.help, this.example, this.args, this.returns, this.argsSchema, this.returnsSchema, t…
    • final String name — The function’s name on the plug-in’s object.
    • final String label — A locale key of the offering plug-in’s strings.
    • final String? help
    • final Object? example — A value of the arguments the function takes, for a reader and for a development tool to fill a box with.
    • final JsonShape? args — What the offer takes and what it answers, as schemas the definition writes.
    • final JsonShape? returns
    • final Map<String, Object?>? argsSchema — The raw args map, as the author wrote it, kept only where [args] reads: what an exposed offer announces.
    • final Map<String, Object?>? returnsSchema — The raw returns map, as the author wrote it, kept only where [returns] reads.
    • final String? expose — The public kebab name the app’s command registry offers this function under, or null.
    • final String? description — A locale key of the offering plug-in’s strings describing the function to a model; [label] serves without it.
    • final bool effectful — Whether a call takes an operation key: true unless the author says otherwise; it asks no consent.
    • final bool readOnly — An annotation only: the function changes nothing.
    • final bool destructive — An annotation only: the function may remove something.
  • class CallId — A function of another plug-in this one calls: <tag>:<name>.
    • const CallId(this.tag, this.name)
    • static CallId? parse(String text) — <tag>:<name>, or null for anything that is not that.
    • final String tag
    • final String name
  • function Set<String> reservedOfferNames(PluginApi api) — Names an offer may never take.
  • variable const namesEveryObjectHas — What the language gives every object, and every function.
  • class ImplementedInterface — One interface a manifest declares (implements, Project Specification §14.4).
    • const ImplementedInterface({ required this.name, required this.functions, this.platform, this.models = const [], this.declared = const {}, })
    • final String name — The interface’s name in the definition: render, text, platform.
    • final Set<String> functions — The names of the functions the interface holds that this FilmOpen can call.
    • final String? platform — The platform’s id, where the interface asks for one (render, text, key-check).
    • final List<String> models — The catalogue entries (§14.7) this plug-in speaks for.
    • final Map<String, Object?> declared — What the manifest wrote under this interface, as it wrote it.
  • function bool plugInsMayCall(PluginApi api, PluginManifest owner, String name) — Whether another plug-in may reach [name] on the plug-in whose manifest is [owner], against the contract [api].
  • class PluginManifest — A plug-in’s manifest (Project Specification §14.4), as this host reads it.
    • const PluginManifest({ required this.tag, required this.author, required this.v, required this.name, required this.api, required this.entries, this…
    • final String tag
    • final String author
    • final int v
    • final String name — The display name, or a locale key when the plug-in’s strings have one.
    • final String? description
    • final String? docs — The guide’s absolute path below /docs/, opened on this build’s documentation site.
    • final int api
    • final List<String> entries — The plug-in’s code files, in the order they are loaded into the one engine.
    • String get entry — The first code file, which is the only one for a plug-in written as one; empty where [entries] is.
    • static const mostCodeFiles — At most this many code files, and this much code in all: a plug-in is divided to be read, not to be a build system.
    • static const mostCodeBytes
    • final String l10n — The folder of locale files, relative to the plug-in’s folder.
    • final List<KeySlot> keys
    • final List<KeyId> uses — Keys of other plug-ins, or the app’s, this plug-in asks to use.
    • final String? kind — What sort of plug-in this is: platform, model or tool.
    • final Map<String, ImplementedInterface> implemented — The interfaces this plug-in implements, by name (implements, §14.4).
    • final int? minRevision — The least revision of the interface this plug-in needs (§14.4).
    • Iterable<ImplementedInterface> implementing(String name) — The interfaces that hold a function of [name].
    • bool implementsFunction(String name) — Whether the app may call [name] on this plug-in at all.
    • List<String> get models — The catalogue entries this plug-in speaks for (§14.7), from every interface it implements.
    • final List<OfferSpec> offers — The functions other plug-ins may call (the architecture document’s §4.2).
    • final List<CallId> calls — The functions of other plug-ins this one calls.
    • final List<String> dependencies — The plug-in tags x.dependencies names, which the Plugins page groups this one under: presentation alone, granting nothing and enabling nothing (Project Specification §14.4).
    • final List<SharingOperation>? sharing — The operations sharing declares, which a plug-in that may be shared names: what lending offers others and what another computer’s offer is matched against (Project Specification §14.4).
    • OfferSpec? offer(String name) — The offer [name], or null where the plug-in does not offer it.
    • bool callsPlugin(String tag) — Whether this plug-in declares a call on any function of [tag].
    • static const serverStartingCalls — The calls that start a server or keep one up, which a server provider bills by the hour: its deploy and wake offers, and the interface’s deployServer and wakeServer.
    • bool get isServerProvider — Whether this plug-in makes servers on demand: it declares server-provider, even where the declaration is faulty, so that a draft’s faulty declaration still keeps its deployments to a server’s own screen.
    • String? get workflowPath — The declared workflow file, or null where no usable script-writer declaration exists.
    • bool startsAServer(String name) — Whether calling [name] would start or wake one of this server provider’s servers ([serverStartingCalls]): what only a server’s own screen may ask for, since a server runs up its bill until it is stopped.
    • final bool usesAi — capabilities.ai: the format’s sugar, ctx.ai.complete.
    • final bool usesUpload — capabilities.upload: it sends media of the film to its platform or its server through ctx.upload.
    • final bool usesProcess — Whether this plug-in may run the person’s chosen programs on this computer.
    • final List<String> network — capabilities.network: hosts reachable without credentials.
    • final List<EntityType> applies
    • final List<SettingSpec> settings — The plug-in’s own settings, in the manifest’s order.
    • final Map<EntityType, List<SettingSpec>> entitySettings — Per entity type, the fields stored in that entity’s own file.
    • final List<ActionSpec> actions
    • final Map<String, dynamic> json — The whole manifest as read, so a write of it loses nothing.
    • String get stem — pg_<tag>_<author>_v<n>.
    • bool get isByStockAuthor — Whether the author is the handle FilmOpen’s stock plug-ins are written under.
    • SettingSpec? setting(String key)
    • static PluginManifestParse parse(Object? json, {required PluginApi api, Set<String>? knownPlatforms}) — Reads [json] against [api], the interface definition.
  • class PluginManifestParse — A manifest read, or why it cannot be used, with every problem found.
    • final PluginManifest? manifest — Null when the plug-in cannot run on this host.
    • final List<PluginIssue> issues
  • class SharingOperation — One operation a plug-in that may be shared declares in sharing (Project Specification §14.4).
    • const SharingOperation({required this.function, required this.model, required this.unit, this.scale}) — The operation [function] of [model], counted in [unit], [scale] of them at a time where the unit is character.
    • final String function — render or speak.
    • final String model — A catalogue id.
    • final String unit — image, second or character.
    • final int? scale — How many characters one unit is, such as 1000; only with character.
  • variable const pluginsFolder — The folder every plug-in sits in, in a library, in a project and in the repository.
  • class PluginPackage — How the loader reads a plug-in: the files of one plug-in’s folder, by paths relative to it.
    • String get tag — The folder’s name, which is the plug-in’s tag.
    • Future<List<String>> list() — Every file, relative to the plug-in’s folder, /-separated.
    • Future<String> text(String path) — A text file of the package.
    • Future<Uint8List> bytes(String path) — Any file of the package, as its bytes.
  • class SourcePluginPackage — A plug-in folder, plugins/<tag>/, inside any [ProjectSource].
    • SourcePluginPackage(this.source, this.tag, {this.root = pluginsFolder})
    • final ProjectSource source
    • final String root — Where the plug-in folders are inside [source].
    • static Future<List<SourcePluginPackage>> allIn(ProjectSource source, {String root = pluginsFolder}) — Every plug-in folder directly under [root] in [source], sorted by tag, from one listing of [source].
  • class PluginFolder — One plug-in folder as read.
    • const PluginFolder({ required this.tag, required this.manifests, required this.locales, required this.platforms, required this.issues, })
    • final String tag
    • final Map<String, PluginManifest> manifests — Each usable manifest, by its path in the folder.
    • final Map<String, PluginLocaleFile> locales — Each locale file by its locale.
    • final Map<String, PlatformFile> platforms — The plug-in’s own platform files, for ids the catalogue does not define.
    • final Map<String, List<PluginIssue>> issues — Every problem, by the path in the folder it concerns ('' for the folder itself).
    • PluginStrings strings({AppStringLookup? app, void Function(String key)? onMissing}) — The strings, for a lookup.
    • static Future<PluginFolder> read(PluginPackage package, {required PluginApi api, Set<String>? catalogueIds}) — Reads [package] against [api], the interface definition, which says what implements may name.
  • typedef typedef AppStringLookup — Looks up one of the application’s own strings by its ARB key, with its placeholders filled.
  • class PluginLocaleFile — One locale file of a plug-in: l10n/<locale>.arb, the shape of the app’s own app_en.arb.
    • final String locale — The locale the file’s name gives (es, pt-BR).
    • final Map<String, String> strings
    • final List<PluginIssue> issues
    • static PluginLocaleFile parse(String text, String fileName) — Reads [text] as the file named [fileName].
  • class PluginStrings — A plug-in’s strings in every locale it brings, and the lookup of Software Specification §6.11.
    • PluginStrings(this.tag, Iterable<PluginLocaleFile> files, {this.app, this.onMissing})
    • final String tag
    • final AppStringLookup? app — The application’s strings; null answers none.
    • final void Function(String key)? onMissing — Told once per key a lookup could not find (plugins.missingString).
    • static const appNamespace — The prefix that names the application’s strings.
    • Iterable<String> get locales
    • bool has(String key) — Whether the plug-in defines [key] in any locale.
    • String t(String key, {String locale = 'en', Map<String, Object?> args = const {}}) — [key] in [locale], its {placeholders} filled from [args].
    • String textOr(String key, String fallback, {String locale = 'en'}) — [key] when the plug-in defines it, else [fallback] as written — how a manifest’s name and description are shown.
    • static String fill(String template, Map<String, Object?> args) — Fills ICU {name} placeholders; one without a value stays as written.
  • enum SettingType — The field types of version 1.
    • values: string, text, number, boolean, choice, model, server, program
    • const SettingType([this._token])
    • String get token — The word the manifest writes.
    • static SettingType? byToken(String token)
  • enum SettingScope — Where a setting’s value lives.
    • values: project, machine
  • class SettingSpec — One declared field.
    • const SettingSpec({ required this.key, required this.type, this.defaultValue, this.label, this.help, this.scope = SettingScope.project, this.values…
    • final String key — The field’s key inside plugins.<tag>.
    • final SettingType type
    • final Object? defaultValue — The value used while nothing is stored; already checked against [type].
    • final String? label — Locale keys of the plug-in’s strings (§3.7); null shows [key].
    • final String? help
    • final SettingScope scope
    • final List<String> values — For [SettingType.choice]: the tokens written.
    • final num? min — For [SettingType.number].
    • final num? max
    • final String? category — For [SettingType.model]: the catalogue category (llm, t2i, …).
    • final String? platform — For [SettingType.model]: the platform the entry must be reachable on.
    • final List<String> names — Executable names without extensions to look for on PATH.
    • final String? parallel — For [SettingType.program]: the key of this manifest’s machine number setting holding its number of copies.
    • bool accepts(Object? value) — Whether [value] is one this field may hold.
  • class ActionSpec — A button on the plug-in’s page: [call] is the function of the code that runs with ctx alone.
    • const ActionSpec({required this.id, required this.label, required this.call})
    • final String id
    • final String label — A locale key.
    • final String call — The name of the plug-in object’s function.
  • class StockInstallReport — What installing the stock plug-ins did, for the log (plugins.stock, plugins.stock.decision, plugins.stock.failed).
    • const StockInstallReport({ this.installed = const [], this.updated = const [], this.removed = const [], this.failed = const [], this.decisions = co…
    • final List<String> installed
    • final List<String> updated
    • final List<String> removed
    • final List<String> failed — Paths a write or a read refused; the next start tries again.
    • final List<StockDecision> decisions — Every path the install touched or deliberately left, with the branch’s reason.
    • final List<StockFailure> failures — Each of [failed], with the stage that refused and the error’s type.
    • final int binary — How many of the files written were not text, and their bytes.
    • final int binaryBytes — The bytes of the [binary] files written.
    • final Duration elapsed — How long the install took.
    • bool get changedAnything
  • class StockDecision — One decision of the stock install about a plug-in’s file, or about a whole plug-in where [path] is null.
    • const StockDecision(this.plugin, this.outcome, this.reason, {this.path, this.count})
    • final String plugin — The plug-in’s folder name.
    • final String? path — The file’s path in the library; null for a decision about the whole plug-in.
    • final String outcome — What was done: installed \| updated \| removed \| kept \| left.
    • final String reason — Why: the deciding branch’s own word.
    • final int? count — How many files a plug-in’s unchanged decision covers.
  • class StockFailure — A file the stock install could not bring up to date, at [stage] read \| write \| delete \| record \| list.
    • const StockFailure(this.plugin, this.path, this.stage, this.type, this.message)
    • final String plugin — The plug-in’s folder name; empty for the record and a listing.
    • final String path — The file’s path in the library; empty for a listing, which ends the install.
    • final String stage — Where it failed: read \| write \| delete \| record \| list.
    • final String type — The error’s runtime type.
    • final String message — The error’s message.
  • function bool isPluginText(List<int> bytes) — Whether a file of a plug-in is text: its bytes are valid UTF-8 (Specification §6.11).
  • variable const stockRecordPath — Where the library records the stock files it holds and what each held when the app wrote it.
  • function Future<StockInstallReport> installStockPlugins({ required ProjectSource library, required ProjectSource bundle, required bool Function(String tag)… — Brings the library’s stock plug-ins up to the app’s own, at every start and before any plug-in is read.
  • enum WorkflowScope — Where a workflow section applies.
    • values: project, folder, scene
  • enum WorkflowFieldKind — The five kinds of input a workflow step may ask for.
    • values: text, note, number, choice, flag
  • class WorkflowRefused — A workflow refused whole, with the code and location of its first problem.
    • const WorkflowRefused(this.code, this.at) — Keeps the first problem’s code and location for the host to log.
    • final String code — The reason: tooLarge, json, shape, offer, duplicateId, choices or reservedField.
    • final String at — The location, including the shape problem where applicable; empty for the whole file.
  • class WorkflowLoad — The host’s checked workflow or its logged refusal or failure.
    • const WorkflowLoad({this.spec, this.code, this.at}) — Holds a spec on success or code and location on refusal.
    • final WorkflowSpec? spec — The checked workflow, absent on refusal.
    • final String? code — notEnabled, path, a reader refusal or failed; null on success.
    • final String? at — Where the refusal happened, where known.
  • class WorkflowSpec — A checked workflow and the decoded JSON accepted by its reader.
    • final Map<String, Object?> json — The complete decoded map, kept for the app’s plain-JSON seam.
    • final List<WorkflowSection> sections — Sections in file order.
    • List<WorkflowStep> get steps — Every step, in file order.
    • WorkflowStep? step(String id) — The step with this file-wide id, or null for none.
    • List<WorkflowSection> sectionsFor(WorkflowScope scope, {String? kind}) — Sections of this scope, with folders matching either all kinds or the given kind.
    • static WorkflowSpec read(String text, {required PluginApi api, required PluginManifest manifest}) — Checks size, JSON, schema, offers, ids, choices and reserved fields, in that order.
  • class WorkflowSection — One heading and its ordered steps at a workflow scope.
    • final WorkflowScope scope — Where this heading applies.
    • final String? kind — The folder kind, or null for every kind.
    • final String heading — A matching string key or the heading as written.
    • final String? help — Optional help, resolved as a string key or text.
    • final int level — The heading level, from one to three.
    • final List<WorkflowStep> steps — The section’s steps in file order.
  • class WorkflowStep — One offer invocation, its inputs, model preferences and completion condition.
    • final String id — The file-wide unique id.
    • final String label — A matching string key or the label as written.
    • final String? help — Optional help, resolved as a string key or text.
    • final String offer — The manifest’s offer name.
    • final Map<String, Object?> args — Arguments before the filled fields and app-owned focus are added.
    • final List<WorkflowField> fields — Inputs to ask for in file order.
    • final List<String> llms — Preferred catalogue ids, in order, subject to Use the LLM.
    • final WorkflowEstimate? estimate — The plug-in’s estimate, where declared.
    • final int? minutes — The declared wall time, from one to thirty minutes.
    • int get wallMinutes — The wall time, ten minutes where none is declared.
    • final WorkflowDone? done — The project-derived completion condition, or no checkbox where absent.
  • class WorkflowField — One input on a workflow step’s run dialog.
    • final String name — The argument name, never the reserved focus.
    • final String label — A matching string key or the label as written.
    • final WorkflowFieldKind kind — The input’s presentation.
    • final bool required — Whether the field must be filled, false by default.
    • final List<String> choices — Choices in declared order, as string keys or text.
  • class WorkflowEstimate — The declared call and token estimate used to quote a step.
    • final int calls — The estimated call count.
    • final int inputTokens — Estimated input tokens.
    • final int outputTokens — Estimated output tokens.
  • class WorkflowDone — A completion condition read from the project’s current snapshot.
  • class WorkflowDoneEntities — Counts entities beneath the focus, or characters, locations and documents project-wide.
    • final String type — The entity type: fo, sc, ch, lo or dc.
    • final String? kind — An optional kind filter.
    • final String? tag — An optional tag filter.
    • final int min — The minimum matching count.
  • class WorkflowDoneField — Tests whether the focus has a non-empty field at this path.
    • final String path — The field path to read from the focus.