Custom modules
Custom modules keeps the modules your organization writes itself, in Python or TypeScript: their files, their versions and the check of each. It runs none of them itself; a version runs only after a person approved exactly that code.
The page in the app: Custom modules. How to write one: Python and TypeScript modules.
Settings
Section titled “Settings”workspace_id: the workspace where the modules’ files and versions are kept;board: the board where their approvals go. Without one nothing can be approved, so an install is refused.
A custom module itself has no settings: it keeps its parameters in its own documents, and a credential in a connection.
From files to a running module
Section titled “From files to a running module”- Installed: an author names a directory, or sends the files. A bundle holds
module.pyormodule.ts, its protos underproto/, its lock file and its tests undertests/. - Prepared: its packages are installed from the lock file only, each checked by its hash, and its message code is generated from its protos.
- Checked: its code runs with nothing (no network, no other module, an empty folder, 60 seconds in all), and its tests run. A failure refuses the version and is kept in its log.
- Approved: a new module, a new version or wider grants is a decision with the risk
codeon the board. Until a person approves it, the version approved before goes on. - Run: for the whole organization, while the organization runs.
| Tool | What |
|---|---|
dynamic_install |
install a module or a new version of it, from a directory or from files |
dynamic_list |
the organization’s custom modules |
dynamic_get |
a module’s latest files, approved or not, with its check |
dynamic_remove |
remove a module |
Installing runs the bundle’s code in the check, so it is an external action; removing is a write. Changing one file from the page in the app is a person’s, never an agent’s.
What a custom module cannot do
Section titled “What a custom module cannot do”It has no network, starts no process and reads no files of yours; it reaches outside only through the API module, with its connections and its log. It never asks for every module, for installing modules, or for the network, processes or files. Limits per module: 256 MB of memory unless its grants ask for more, 10 seconds a call, 256 open files, 8 calls at once. How many an organization may keep depends on its plan: Plans and limits.