Skip to main content
Version: 0.1.0-alpha.3

Discovery Precedence Flowchart

This diagram shows how commands are discovered and how conflicts are resolved when the same command name appears in multiple locations.

Discovery Flow​

Diagram: architecture/discovery-flow

Conflict Resolution​

When the same command name exists in multiple locations:

Diagram: architecture/discovery-conflict

Resolution Rules​

PrioritySourceExample Path
1 (highest)Current directory invkfile./invkfile.cue
2Local modules./mytools.invkmod/
3User directory~/.invowk/cmds/invkfile.cue
4 (lowest)Configured includes/opt/invowk-modules/

Key principle: Closer to the working directory = higher priority.

Module Discovery Details​

Diagram: architecture/discovery-module-structure

Required Module Fields​

// invkmod.cue
module: "com.example.mymodule" // RDNS naming convention
version: "1.0.0" // Semantic version

// Optional
description: "My useful module"
requires: [
{
git: "https://github.com/org/repo.git"
version: "v1.0.0"
}
]

Dependency Resolution​

Diagram: architecture/discovery-deps

Transitive Dependency Visibility​

FromCan AccessCannot Access
Module AA's commands, B's commandsC's commands (transitive)
Module BB's commands, C's commands-
Root invkfileOwn commands, direct depsTransitive deps

Why this restriction?

  • Prevents implicit coupling to transitive dependencies
  • Makes dependencies explicit in each module
  • Enables dependency upgrades without breaking consumers

Includes Configuration​

Additional invkfiles and modules are configured in ~/.config/invowk/config.cue:

includes: [
{path: "/opt/company-invowk-modules/tools.invkmod"},
{path: "/home/shared/invowk/invkfile.cue"},
]

Entry Processing Order​

Diagram: architecture/discovery-includes

Discovery Caching​

Diagram: architecture/discovery-cache

Common Discovery Issues​

Problem: Command Not Found​

Diagram: architecture/discovery-not-found

Problem: Wrong Command Version​

Diagram: architecture/discovery-wrong-version

Debug Commands​

# List all discovered commands with sources
invowk cmd --invk-verbose

# Validate module structure
invowk module validate ./mymodule.invkmod