PtcRunner.Lisp.Discovery (PtcRunner v0.11.0)

Copy Markdown View Source

Local REPL-style discovery for executable PTC-Lisp capabilities.

This module is deliberately pure and registry-backed: it exposes only implemented PTC/Clojure builtins and curated Java interop entries. It does not reflect over the JVM or discover arbitrary Java members.

Summary

Functions

Returns rendered local apropos lines.

Returns structured local apropos matches for unified MCP/local ordering.

Lists members for a known local namespace or curated Java class.

Returns human-readable docs for a known local function or Java interop ref.

Returns compact metadata for a known local function or Java interop ref.

Returns public vars for local Clojure/PTC namespaces only.

Shared lexical token scoring. Exact matches outrank prefixes; prefixes outrank substrings. No regex matching is used for search.

Sorts unified discovery matches.

Functions

apropos(query, opts \\ %{})

@spec apropos(term(), map()) :: {:ok, [String.t()]} | {:programmer_fault, String.t()}

Returns rendered local apropos lines.

apropos_matches(query, opts \\ %{})

@spec apropos_matches(String.t(), map()) :: [map()]

Returns structured local apropos matches for unified MCP/local ordering.

dir(ref, opts \\ %{})

@spec dir(term(), map()) ::
  {:ok, [String.t()]} | :unknown | {:programmer_fault, String.t()}

Lists members for a known local namespace or curated Java class.

doc(ref)

@spec doc(term()) :: {:ok, String.t()} | :unknown | {:programmer_fault, String.t()}

Returns human-readable docs for a known local function or Java interop ref.

local_ref?(ref)

@spec local_ref?(term()) :: boolean()

meta(ref)

@spec meta(term()) :: {:ok, map()} | :unknown | {:programmer_fault, String.t()}

Returns compact metadata for a known local function or Java interop ref.

ns_publics(ref)

@spec ns_publics(term()) :: {:ok, map()} | :unknown | {:programmer_fault, String.t()}

Returns public vars for local Clojure/PTC namespaces only.

parse_apropos_opts(opts)

@spec parse_apropos_opts(term()) :: {:ok, map()} | {:programmer_fault, String.t()}

parse_dir_opts(opts)

@spec parse_dir_opts(term()) :: {:ok, map()} | {:programmer_fault, String.t()}

render_matches(matches)

@spec render_matches([map()]) :: [String.t()]

score_tokens(query_tokens, target_tokens, name_boost)

@spec score_tokens([String.t()], [String.t()], integer()) :: integer()

Shared lexical token scoring. Exact matches outrank prefixes; prefixes outrank substrings. No regex matching is used for search.

sort_matches(matches)

@spec sort_matches([map()]) :: [map()]

Sorts unified discovery matches.

tokenize(text)

@spec tokenize(term()) :: [String.t()]