Skip to content

[feat] Support system messages in governed one-shot runs #55

Description

@willsarg

Problem

ara run exposes only a user prompt. Many instruct models and normal automation workflows distinguish a system instruction from user content, but ARA users must currently flatten both into one user message and lose the model's native chat-role semantics.

Proposed change

Add an optional --system TEXT to ara run across native and Ollama lanes.

ARA should pass the system and user messages through the selected model's supported chat-template/runtime interface. Both messages and all template expansion must be included in the existing governed token accounting.

Acceptance criteria

  • Runs without --system remain byte-for-byte compatible at the public CLI/backend boundary.
  • Supported models receive distinct system and user roles rather than concatenated text presented as equivalent behavior.
  • The fully rendered message sequence is counted before generation and refused if it cannot fit within the effective governed context.
  • A model/template/runtime that cannot represent a system message refuses clearly before generation; ARA does not silently concatenate or drop it.
  • Native transformer, native GGUF, and Ollama adapters use equivalent public semantics while retaining their engine-specific rendering.
  • JSON indicates that a system message was supplied without echoing its content.
  • Tests cover supported templates, unsupported templates, token-expansion refusal, Ollama request construction, and unchanged user-only behavior.

Non-goals

  • Persistent chat sessions or conversation history.
  • A prompt-template registry.
  • Persisting or displaying system-message contents.
  • Changing sampling defaults.

Independence

This is a message-role feature over the current governed run path. It does not require stdin/file prompts, run --ctx, provenance receipts, or any other open issue.

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions