ProtectedbuildThe file header: banner + the aggregated import set. A Manual-only file imports just
BaseRemotableOperation. A file containing any AI/Default body also imports the body essentials
(IMetadataProvider, UserInfo, RegisterClass), the DEFAULT_REMOTE_OP_LIBRARY_ITEMS, and
every library each authored body declared in its LibrariesObject (de-duped + merged across operations).
ProtectedbuildThe readonly members common to every operation class, derived from the metadata columns.
ProtectedcollectEmits every distinct Input/Output type definition ONCE (de-duped by content), as a shared block above
the classes. Operations frequently share a type (e.g. the pause/resume/cancel control ops all use
ProcessRunControlInput); emitting each op's definition inline would produce duplicate-identifier errors.
Emits remote_operations.ts into directory, one typed base per Active operation.
All MJ: Remote Operations rows (any status; non-Active rows are skipped).
The target output directory (resolved from the RemoteOperations output config).
Emits one operation: its TInput/TOutput type definitions (verbatim) followed by the class.
ProtectedhasTrue when the row carries an approved, generated body (so the emitted class is complete + registered).
ProtectedoperationDerives the TypeScript class name from the dotted key: RecordProcess.RunNow → RecordProcessRunNowOperation.
Generates the strongly-typed base class for each
MJ: Remote Operationsrow — the CodeGen half of the Remote Operations primitive (the typed peer of generated entity subclasses). Each row becomes a subclass ofBaseRemotableOperation<TInput, TOutput>whoseOperationKey,ExecutionMode,RequiredScope,RequiresSystemUser, andTInput/TOutputinterfaces are derived entirely from the metadata.Output shape depends on the operation's
GenerationType:@RegisterClass). A hand-authored server subclass extends this base, suppliesInternalExecute, and registers under the key. The base provides the typed contract the browser imports (so it never pulls the server engine).CodeApprovalStatus = 'Approved'and non-emptyCode) → a COMPLETE class:@RegisterClass(BaseRemotableOperation, key)plus anInternalExecutebody emitted fromCode. No hand-authored subclass is needed.Mirrors
ActionSubClassGeneratorBase(the other "read a custom entity's rows → emit TypeScript" generator).