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:
-
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.
-
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.
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.mdand is submitted here perdocs/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 aGOAL GRAPHprompt extension installed at load:telos-goal-addgoal_id scope owner statusscopeisindividualorcollective;statusisactive,proposed,achievedorabandoned.telos-goal-statusgoal_id statustelos-rel-addrelation source targetsupports,conflicts,subsumesordepends-on.telos-reporttelos-goals-owned-byownerArguments 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 totelos-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 theGOAL GRAPHsection in its prompt.Two findings from that verification that the team may want, both independent of this plugin:
The published image and
maindisagree on the plugin entry point.singnet/Omega's loader callsloadOmegaPlugin, asdocs/reference-plugin-api.mddocuments; the OmegaClaw build published assingularitynet/omega:latestrenamed it toloadOmegaClawPluginand 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.A plugin that fails to load takes the agent down silently. When
loadMettaPluginfails,initPluginsfails,(omega)fails, and the process exits with status 0 and nothing in the log after"Loading MeTTa plugin <name> …"— noERROR, no"Plugin … loading failed". Reproducible onsingularitynet/omega:latestby adding any plugin whose entry point is namedloadOmegaPlugin. Happy to open a separate issue for either of these if useful.