AGENTS.md@pkg/types · git:20260715.158c111 · 2026-07-15 · sha256 99e4b03e6fa1ba26

AGENTS.md@pkg/types git:20260715.158c111A

Immutable. This exact content is served forever at /api/v1/blob/99e4b03e6fa1ba26.

# Types Package

Core type definitions: rulesets, message payloads, protocol types, KV helpers.

## Structure

```
types/
├── types.go           # Ruler interface, RulesetType
├── kv.go              # KV map with accessor methods (String, Int64, Map)
├── msg.go             # MsgPayload interface
├── errors.go          # Error types, NewError, constant sentinels (ErrNotFound, ...)
├── context.go         # Context type with metadata fields
├── event.go           # DataEvent type definitions
├── task.go            # Task type definitions
├── workflow.go        # Workflow type definitions
├── agent.go           # Agent instruct protocol types
├── uid.go             # Unique ID generation
├── id.go              # Compact ID encoding/decoding
├── filter.go          # Event filter types
├── filter_cache.go    # In-memory filter cache for source/event type dropdowns
├── file.go            # File type definitions
├── pipeline_stats.go  # Pipeline statistics types
├── token_usage_source.go  # Token usage source constants
├── token_usage_range.go   # Token usage time-range helpers
├── token_usage_stats.go   # Token usage aggregate stats
├── protocol/          # Platform-agnostic types
│   ├── action.go      # Request/Response, error codes (10xxx–60xxx)
│   ├── message.go     # Message type definition
│   ├── event.go       # Event type definition
│   ├── user.go        # User type definition
│   ├── command.go     # Command type definition
│   └── platform.go    # Driver, Adapter, Action interfaces
├── ruleset/           # Rule implementations
│   ├── command/       # Command rule types
│   ├── form/          # Form rule types
│   └── webservice/    # Webservice rule types
├── audit/             # Audit trail types
└── model/             # Persistence/DTO models (agent session/skill/subagent/scheduled task, notify_*, token, config, …)
```

## Rules

- Prefer `KV` type over raw `map[string]any` for structured key-value access. `map[string]any` is acceptable in interface signatures (e.g. `capability.Invoke` params), protocol definitions, and generated code.
- Never define new message types outside this package
- Always implement `MsgPayload.Convert()` for new message types

## Commands

```bash
go test ./pkg/types/...
```