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.
Depends on
Section titled “Depends on”- filmopen_format — uses
EntityType,FileNameParser,JsonShape,JsonShapeException,PlatformFile,ProjectSource,ServerAddress,ShapeLibrary,ShortName,VersionStem,decodeDocument,sameJson,stockPluginAuthor
Third-party: archive, crypto.
Used by
Section titled “Used by”filmopen_app, filmopen_plugin_host
Public API
Section titled “Public API”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.
lib/src/key_id.dart
Section titled “lib/src/key_id.dart”- 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.
lib/src/plugin_api.dart
Section titled “lib/src/plugin_api.dart”- enum
EntityHook— The hooks of §14.4, called on entities the person selected.- values:
transform,analyze,import,export static EntityHook? byName(String name)
- values:
- enum
PlatformHook— What a plug-in provides for a platform.- values:
complete,render,estimateCost,verifyKey static PlatformHook? byName(String name)
- values:
- variable
const appKeyOwner— The reserved key ownerapp, which no plug-in may take as its tag or name as a dependency. - enum
ApiCaller— Who may call a function (the definition’scalledBy).- values:
app,person,plugins static ApiCaller? byName(String name)
- values:
- 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 atfinal 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 namefinal 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’srevisionit arrived in.final String summaryfinal JsonShape? args— What it receives besidectx; null where it takes nothing — it is called withctxalone, 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’splanned).bool get plugInsMayCall— Whether another plug-in may reach it throughctx.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 namefinal bool requiredfinal JsonShape schemafinal 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 namefinal String statefinal String summaryfinal Map<String, ApiDeclaration> declarefinal Map<String, ApiFunction> functionsbool get isPlanned
- class
ApiArgument— One argument of a member ofctxthat is a function.const ApiArgument({required this.name, required this.optional, required this.schema})final String namefinal bool optionalfinal JsonShape schema
- class
ApiMember— One member ofctx: 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 belowctx:http,project.get,l10n.t.final bool isFunctionfinal String statefinal String summaryfinal 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:actionsandoffers.const ApiBeyond({required this.name, required this.summary, this.args, required this.returns})final String namefinal String summaryfinal JsonShape? argsfinal 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’sapi.final int revision— Grows by one whenever anything is added: a manifest’sminRevision.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 actionsfinal ApiBeyond offersfinal Map<String, ApiMember> ctx— Everything the app hands a plug-in, by its name belowctx.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.
lib/src/plugin_archive.dart
Section titled “lib/src/plugin_archive.dart”- 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 isRefusedstatic 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.
lib/src/plugin_digest.dart
Section titled “lib/src/plugin_digest.dart”- 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, orunreadablewhere 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)
lib/src/plugin_issue.dart
Section titled “lib/src/plugin_issue.dart”- 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
- values:
- 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 problemfinal String? fieldfinal Map<String, Object?> args
lib/src/plugin_manifest.dart
Section titled “lib/src/plugin_manifest.dart”- 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 idfinal String platformfinal String? labelfinal 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? helpfinal 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? returnsfinal Map<String, Object?>? argsSchema— The rawargsmap, as the author wrote it, kept only where [args] reads: what an exposed offer announces.final Map<String, Object?>? returnsSchema— The rawreturnsmap, 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 tagfinal 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 tagfinal String authorfinal int vfinal String name— The display name, or a locale key when the plug-in’s strings have one.final String? descriptionfinal String? docs— The guide’s absolute path below/docs/, opened on this build’s documentation site.final int apifinal 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 mostCodeBytesfinal String l10n— The folder of locale files, relative to the plug-in’s folder.final List<KeySlot> keysfinal 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,modelortool.final Map<String, ImplementedInterface> implemented— The interfaces this plug-in implements, by name (implements, §14.4).final int? minRevision— The leastrevisionof 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 tagsx.dependenciesnames, which the Plugins page groups this one under: presentation alone, granting nothing and enabling nothing (Project Specification §14.4).final List<SharingOperation>? sharing— The operationssharingdeclares, 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: itsdeployandwakeoffers, and the interface’sdeployServerandwakeServer.bool get isServerProvider— Whether this plug-in makes servers on demand: it declaresserver-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 throughctx.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> appliesfinal 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> actionsfinal 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 insharing(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 ischaracter.final String function—renderorspeak.final String model— A catalogue id.final String unit—image,secondorcharacter.final int? scale— How many characters one unit is, such as 1000; only withcharacter.
lib/src/plugin_package.dart
Section titled “lib/src/plugin_package.dart”- 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 sourcefinal 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 tagfinal 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 whatimplementsmay name.
lib/src/plugin_strings.dart
Section titled “lib/src/plugin_strings.dart”- 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 ownapp_en.arb.final String locale— The locale the file’s name gives (es,pt-BR).final Map<String, String> stringsfinal List<PluginIssue> issuesstatic 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 tagfinal 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 localesbool 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’snameanddescriptionare shown.static String fill(String template, Map<String, Object?> args)— Fills ICU{name}placeholders; one without a value stays as written.
lib/src/setting_spec.dart
Section titled “lib/src/setting_spec.dart”- 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)
- values:
- enum
SettingScope— Where a setting’s value lives.- values:
project,machine
- values:
- 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 insideplugins.<tag>.final SettingType typefinal 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? helpfinal SettingScope scopefinal List<String> values— For [SettingType.choice]: the tokens written.final num? min— For [SettingType.number].final num? maxfinal 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 machinenumbersetting 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 withctxalone.const ActionSpec({required this.id, required this.label, required this.call})final String idfinal String label— A locale key.final String call— The name of the plug-in object’s function.
lib/src/stock_install.dart
Section titled “lib/src/stock_install.dart”- 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> installedfinal List<String> updatedfinal List<String> removedfinal 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’sunchangeddecision 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.
lib/src/workflow_spec.dart
Section titled “lib/src/workflow_spec.dart”- enum
WorkflowScope— Where a workflow section applies.- values:
project,folder,scene
- values:
- enum
WorkflowFieldKind— The five kinds of input a workflow step may ask for.- values:
text,note,number,choice,flag
- values:
- 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.