github 42futures/firm 0.4.0
Firm 0.4.0

one day ago

This release introduces a query engine for exploring your entity graph, workspace initialization for complete schema configurability, as well as new field types and automation features.

Query engine

Firm now includes a SQL-like query language for filtering, traversing, and analyzing your entity graph:

firm query 'from project | where status == "in progress" | related(2) task | limit 10'

The query engine supports:

  • Filtering with where - supports all field types and operators (==, !=, >, <, >=, <=, contains, startswith, endswith, in)
  • Graph traversal with related - explore relationships with multiple degrees of separation
  • Sorting with order - organize results by any field
  • Limiting with limit - control result set size

Workspace initialization

New firm init command sets up workspaces with options:

  • Default schemas created as editable DSL files in your workspace
  • .gitignore configuration for graph files
  • Starter entities for faster setup
  • AGENTS.md file for AI context

New features

  • Enum field type - Constrained string values with case-insensitive matching and interactive picker
  • Non-interactive add mode - Automate entity creation with --type, --id, and --field arguments for AI and automations
  • Field ordering - Schemas preserve insertion order, entities retain DSL field ordering
  • Path autocomplete - Interactive path selection in CLI add command

Improvements

  • Path fields now correctly resolve relative to source files
  • Both interactive and non-interactive add CLI commands no longer builds the graph twice
  • Updated documentation with new CLI command examples

⚠️ Breaking changes

  1. Built-in schemas removed: Existing workspaces must run firm init to create schema files. Schemas are now fully user-editable in your workspace.

  2. Module reorganization: DSL parsing moved from parser:: to parser::dsl:: namespace in the firm_lang crate.

  3. Entity field access: Changed from direct field ID indexing to get_field() method or entity field index.


Full changelog: https://github.com/42futures/firm/blob/0.4.0/CHANGES.md

Don't miss a new firm release

NewReleases is sending notifications on new releases.