Tools catalog
The catalog of every tool shipped with Dédalo v7, grouped by purpose. Each entry has a one-line description; tools that have a dedicated reference page link to it.
This page is the index of the per-tool reference. For the cross-cutting documentation — how to build a tool, the contracts the framework enforces — see:
- Creating new tools — end-to-end tutorial (scaffold → register → authorize)
- register.json reference — every field of the registration file
- Server contract — the
ToolServerModulecontract, API actions, configuration, lifecycle hooks - JS lifecycle — the client tool lifecycle and helpers
- Security — what the framework enforces and what you must do
- Back to the development index
The tool model
A Dédalo tool is an isolated block of code that extends a component, section or area without that element knowing about it. Each tool lives in its own directory tools/tool_<name>/ and has two halves:
- a server package
server/index.tsexporting aToolServerModule(no per-tool class, no autoloader — a tool with no remote actions ships noserver/directory at all), and - a client JS/CSS module under
js/andcss/— vanilla constructor-function/prototype JS, no build step.
A register.json file describes the tool to the framework (label, version, which models it affects, where it surfaces, its configuration and UI hints). New tools use the hand-authorable flat authoring format; the 34 in-repo tools ship as column-keyed matrix-row dumps instead (pass-through, not hand-edited).
Every remotely callable server action is declared as a key of the module's apiActions map — there is no reflection, so an action exists on the API only if it is literally a property of that object. Each entry attaches a declarative permission (section / tipo / record / developer, with a minLevel) that the framework runs before the handler, and before any background fork (permission: null defers the gate to the handler itself, for the few actions whose target can't be expressed declaratively). A handler is (context) => Promise<ToolResponse> returning {result, msg, errors}. Long-running actions additionally list themselves in backgroundRunnable. See the server contract and security.
Where tools surface. A tool attaches to an element when the element's model is in the tool's affected_models (or all_components), its tipo matches affected_tipos, or the element's properties->tool_config names it. Two flags then decide where the button renders:
show_in_inspector— button in the section inspector panelshow_in_component— button inline on the matching component
Section-level tools surface on the section itself. A tool's own isAvailable(context) hook (when its module declares one) gives it the last word on whether to appear for a given element. Many tools are UI-only (all behavior is client-side, no remote API actions — 12 of the 37 in-repo tools ship no server/ package at all); others dispatch server actions through this.tool_request(...).
No base class
There is no tool_common base class on the server — the shared machinery (registry, loader, dispatch, security, config, cache) lives in src/core/tools/ and is invoked BY the framework around a tool's handlers, not inherited by them. On the client, tool_common is a real JS prototype base (client/dedalo/core/tools_common/js/tool_common.js) that every tool wires into via wire_tool.
Catalog
Import
| Tool | Purpose | Reference |
|---|---|---|
tool_import_dedalo_csv |
Imports CSV (notably tool_export dedalo_raw round-trips) into Dédalo, conforming each cell per-component with multi-language support and time-machine tracking |
reference |
tool_import_files |
Ingests uploaded media files into media sections (EXIF/metadata extraction, multiple naming/match modes, custom processors) via ImageMagick/FFmpeg | reference |
tool_import_marc21 |
Parses MARC21 binary (.mrc) files and maps fields/subfields to Dédalo components per ontology config, matching or creating records |
reference |
tool_import_rdf |
Imports RDF/OWL graphs, mapping classes/properties to Dédalo components with resource matching/creation and special handling for iri/geolocation/date | reference |
tool_import_zotero |
Imports a Zotero RDF/XML bibliographic export into Publications (rsc205), mapping predicates to components | reference |
Export & publishing
| Tool | Purpose | Reference |
|---|---|---|
tool_export |
Atoms-based data export of section records to a flat table (CSV/TSV/preview) via the export_tabulator NDJSON protocol, with value/grid_value/dedalo_raw formats and breakdown modes | reference |
tool_print |
Visual print-layout / report designer: arranges a section's components into a paginated document-flow grid (rows of cells) that reflows and splits long tables/text across pages; reusable per-section templates saved in dd25/dd625; browser print (server PDF planned) | reference |
tool_diffusion |
Inspects/resolves diffusion configurations and section→target mappings from the ontology; UI-only, available only on sections with a diffusion definition | reference |
tool_pdf_extractor |
Extracts text from PDF files via an external pdftotext daemon (optional page numbering) for indexing and publication search |
reference |
tool_sitebuilder |
Builds an agent-generated public website over the published diffusion data; engine-side proxy to the standalone site_builder daemon | reference |
Media
| Tool | Purpose | Reference |
|---|---|---|
tool_media_versions |
Manages media file qualities/versions: get info, delete quality/version, build versions, conform headers, rotate, and sync component file metadata | reference |
tool_posterframe |
Extracts a posterframe/thumbnail from AV files (FFmpeg) at a timecode and attaches it as an identifying image to target portal records | reference |
tool_image_rotation |
Applies rotation and proportional crop transformations to image-component files across all quality levels | reference |
tool_upload |
Post-upload processing: moves uploaded files from temp to final storage and triggers component-specific file processing | reference |
Thesaurus & ontology
| Tool | Purpose | Reference |
|---|---|---|
tool_hierarchy |
Generates custom ontologies / virtual sections from existing real sections, creating hierarchy elements and thesaurus general terms | reference |
tool_cataloging |
Drag-and-drop grouping/hierarchization of records from source sections into a target hierarchy; UI-only | reference |
tool_ontology |
Developer-only parsing/sync of ontology section records into the dd_ontology runtime table from single-edit and batch modes |
reference |
tool_ontology_parser |
Developer-only rebuild of dd_ontology against its matrix_ontology source (inspect drift → transactional rebuild) + export to JSON |
reference |
Transcription & indexation
| Tool | Purpose | Reference |
|---|---|---|
tool_transcription |
PDF text extraction and automatic audio transcription (Whisper/Babel), audio format conversion, remote-process monitoring, and subtitle generation | reference |
tool_subtitles |
CKEditor-based subtitle editing/generation tied to AV media transcription text; UI-only | reference |
tool_indexation |
UI entry point for component indexation against thesaurus terms (actual actions run through dd_component_*_api), restricted by affected_tipos; UI-only |
reference |
tool_tc |
Applies an offset adjustment to all timecode tags ([TC_..._TC]) in transcription text, clamping negatives to zero |
reference |
tool_tr_print |
Generates printable/formatted versions of interview transcripts, handling embedded timecode/descriptor/indexation tags; UI-only | reference |
tool_numisdata_epigraphy |
Specialized transcription of coin legends/countermarks/epigraphic elements using epigraphy thesaurus glyph sets into Unicode text components; UI-only | reference |
Data operations
| Tool | Purpose | Reference |
|---|---|---|
tool_identify |
Ranks the records most likely to be the same type as an open record, under the section's identification profile, with a per-criterion breakdown and thumbnails; UI over dd_identify_api, plus a one-action server package (cluster) that exists only to reach the background tier |
reference |
tool_propagate_component_data |
Batch replace/add/delete of component data across records matched by an SQO, with bulk-process audit and time-machine reversion; CLI-runnable | reference |
tool_time_machine |
Audit/history view and reversion of record and component changes over time | reference |
tool_update_cache |
Bulk cache regeneration/clean for components, chunked with progress tracking and background execution | reference |
tool_numisdata_order_coins |
Groups and sorts numismatic objects (coins) by criteria such as weight, diameter and type for visual collection/lot management; UI-only | reference |
Language / i18n
| Tool | Purpose | Reference |
|---|---|---|
tool_lang |
Automatic translation of a component's data from a source to a target language using configured external services (Babel/Google) | reference |
tool_lang_multi |
Translates a source component into multiple target languages at once, delegating to tool_lang's translation logic with its own defense-in-depth gate | reference |
tool_dd_label |
Helper for authoring multi-language tool UI labels across all project languages, generating the component_json (dd1372) labels payload; UI-only | reference |
Admin & system
| Tool | Purpose | Reference |
|---|---|---|
tool_user_admin |
User self-administration panel launched from the username menu, providing administrative actions for the logged-in user; UI-only | reference |
tool_assistant |
In-app AI chat assistant — a thin client over a server-side agent for natural-language search/navigation, ontology queries and confirmed (propose→apply) record create/edit; model selectable per conversation (cloud or local/private) | AI Assistant section |
tool_error_report |
Captures and reports application errors from the client for administrators/developers to inspect | reference |
Misc / internal
| Tool | Purpose | Reference |
|---|---|---|
tool_dev_template |
Production-shaped scaffold/reference for creating new tools (all four permission kinds, backgroundRunnable demo, isAvailable/onRegister/onRemove hooks) |
reference |
tool_qr |
Base/build sample tool (not for production use); UI-only | reference |
Counting the tools
The directory tools/ contains exactly 37 entries, all of them real tools — there is no tool_common directory (the shared machinery lives in src/core/tools/). All 37 are listed in the tables above; tool_dev_template is the developer scaffold/reference implementation, listed under Misc / internal. 25 of the 37 ship a server/index.ts package (including tool_dev_template and tool_identify, whose module holds a single background-only cluster action); the other 12 are client-only (no server/ directory at all): tool_assistant, tool_cataloging, tool_dd_label, tool_diffusion, tool_indexation, tool_numisdata_epigraphy, tool_numisdata_order_coins, tool_print, tool_qr, tool_subtitles, tool_tr_print, tool_user_admin.