Skip to content

[Plugin addition request] Telos Goals — goal graph plugin (telos_goals) #340

Description

@arielagor

Plugin Naming

Telos Goals (telos_goals)

Plugin URL

https://github.com/arielagor/omega-telos-goals

Plugin Describtion

What it is. A MeTTa plugin that gives the agent a goal graph it can write to and reason over. Omega is goal-autonomous — it creates goals, pursues them, tracks progress — but the core ships no inspectable model of what the goals are. This adds one in Omega's own idiom: AtomSpace atoms plus derivation rules, so individual and collective goals, their conflicts, their dependencies and their sub-goal structure are represented symbolically instead of re-derived from the conversation on every turn.

What problem it solves. Goal misunderstanding is where an autonomous agent is most dangerous: pursuing the literal request while missing the real goal, serving one person while externalising the cost onto the group, or chasing a goal its owner has already abandoned. Those three failures are exactly what the lenses report — conflict-between, blocked, aligns, abandoned-goal — and the prompt extension instructs the model to surface every conflict and blocker to the user before acting on a goal.

Was it created for this purpose. Yes. It began as PR #335 (superseding #218), which proposed the same goal model as an optional core library. Following @timur-ashkenov's review comment on that PR, it has been rebuilt as a plugin against docs/reference-plugin-api.md and is submitted here per docs/reference-plugins-publishing.md. It is additive and self-contained: no change to Omega, no dependency beyond the documented plugin API.

What it adds. Five skills registered through add-skill, plus a GOAL GRAPH prompt extension installed at load:

Skill Arguments Effect
telos-goal-add goal_id scope owner status Records a goal. scope is individual or collective; status is active, proposed, achieved or abandoned.
telos-goal-status goal_id status Moves a goal already in the graph to a new status, replacing its atom.
telos-rel-add relation source target Records supports, conflicts, subsumes or depends-on.
telos-report The whole graph, read through every lens at once.
telos-goals-owned-by owner The individual goals of one stakeholder.

Arguments are validated before anything is asserted, so a mistyped status comes back as (telos-error unknown-status bogus (active proposed achieved abandoned)) rather than silently entering the graph. A goal id carries exactly one status: re-adding a known id is refused with a pointer to telos-goal-status, because two (goal <id> ...) atoms with different statuses would both answer the lenses.

Benefit. Any agent that serves more than one stakeholder gets an auditable record of who wants what, what collides, and what is waiting on what — inspectable by the user, queryable from MeTTa, and removable by deleting one line from config/plugins.yaml.

Verification. On singularitynet/omega:latest: 81/81 assertions pass (57 unit, 24 driving the real plugin loader), and a live agent run loads the plugin, registers all five skills and carries the GOAL GRAPH section in its prompt.


Two findings from that verification that the team may want, both independent of this plugin:

  1. The published image and main disagree on the plugin entry point. singnet/Omega's loader calls loadOmegaPlugin, as docs/reference-plugin-api.md documents; the OmegaClaw build published as singularitynet/omega:latest renamed it to loadOmegaClawPlugin and its loader matches on that name alone. A plugin written to the documented API is compiled and then dropped on that image. This plugin defines both names against one body, so it loads on either.

  2. A plugin that fails to load takes the agent down silently. When loadMettaPlugin fails, initPlugins fails, (omega) fails, and the process exits with status 0 and nothing in the log after "Loading MeTTa plugin <name> …" — no ERROR, no "Plugin … loading failed". Reproducible on singularitynet/omega:latest by adding any plugin whose entry point is named loadOmegaPlugin. Happy to open a separate issue for either of these if useful.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions