@sneub/pair 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -65,6 +65,9 @@ secrets at deploy time.
65
65
  | `pair.workspaceDir` | string | `"~/.pair/workspace"` | Path to workspace directory |
66
66
  | `pair.healthCheckPort` | number | _(unset)_ | Port for HTTP health check endpoint |
67
67
  | `pair.authMode` | string | `"api-key"` | `"api-key"` or `"oauth"` (Claude Max/Pro) |
68
+ | `pair.heartbeatIntervalMinutes` | number | _(unset)_ | If set, wake the agent every N minutes to check `HEARTBEAT.md` (see Heartbeat below) |
69
+ | `pair.defaultChannel` | string | _(unset)_ | Default platform (`"telegram"` / `"slack"`) for proactive `send_message` calls |
70
+ | `pair.defaultChannelId` | string | _(unset)_ | Default chat/channel ID for proactive sends |
68
71
  | `telegram.allowedUsers` | number[] | `[]` | Telegram user IDs allowed to interact |
69
72
  | `slack.allowedUsers` | string[] | `[]` | Slack user IDs allowed to interact |
70
73
  | `mcp.servers` | object | `{}` | MCP server configurations |
@@ -87,6 +90,9 @@ secrets at deploy time.
87
90
  | `PAIR_WORKSPACE_DIR` | No | Override the workspace directory |
88
91
  | `PAIR_HEALTH_PORT` | No | Override the health check port |
89
92
  | `PAIR_HOME` | No | Override the Pair home directory |
93
+ | `PAIR_HEARTBEAT_INTERVAL_MINUTES` | No | Wake the agent every N minutes (enables the proactive heartbeat loop) |
94
+ | `PAIR_DEFAULT_CHANNEL` | No | Default platform for proactive messages (`telegram` / `slack`) |
95
+ | `PAIR_DEFAULT_CHANNEL_ID` | No | Default chat/channel ID for proactive messages |
90
96
 
91
97
  ## Workspace
92
98
 
@@ -94,13 +100,49 @@ After `pair init`, your workspace lives at `./workspace/` (or
94
100
  `~/.pair/workspace/` in global mode) and contains files Claude reads on every
95
101
  turn:
96
102
 
97
- - `SYSTEM.md` — base system prompt and personality
98
- - `USER.md` — information about you
99
- - `MEMORY.md` — persistent memory (Claude can update this)
103
+ - `CLAUDE.md` — canonical instructions; how the agent operates, memory rules, red lines
104
+ - `SOUL.md` — values and personality
105
+ - `IDENTITY.md` — name, vibe, how the agent presents itself
106
+ - `USER.md` — information about you (the agent updates this as it learns)
107
+ - `MEMORY.md` — curated long-term memory (the agent can update this)
100
108
  - `tasks.md` — your current task list
109
+ - `HEARTBEAT.md` — short recurring reminders (see Heartbeat below)
110
+ - `BOOTSTRAP.md` — first-run ritual (self-deletes after use)
101
111
 
102
112
  Edit them freely — they're how you customize Pair's behavior.
103
113
 
114
+ ## Heartbeat (proactive mode)
115
+
116
+ By default Pair is reactive: it only speaks when messaged. Turn on the
117
+ heartbeat to make it proactive — on a fixed interval Pair wakes the agent,
118
+ hands it the workspace context, and lets it decide whether to take action or
119
+ message you out of the blue.
120
+
121
+ ```json
122
+ {
123
+ "pair": {
124
+ "heartbeatIntervalMinutes": 10,
125
+ "defaultChannel": "telegram",
126
+ "defaultChannelId": "123456789"
127
+ }
128
+ }
129
+ ```
130
+
131
+ On each tick the agent reads `HEARTBEAT.md` from your workspace and acts on
132
+ anything that's due. The file is free-form markdown that Pair owns: it adds
133
+ recurring items and one-off reminders there itself (e.g. when you say _"remind
134
+ me in an hour"_) and edits them after firing so they don't re-fire. You can
135
+ hand-edit it too.
136
+
137
+ To reach you from a heartbeat, the agent calls a built-in `send_message` tool
138
+ that pushes directly to the configured `defaultChannel` (or any channel you
139
+ specify). This same tool is available in normal conversation, so the agent can
140
+ also follow up after a long-running task: _"notify me on slack when the
141
+ deployment is done"_.
142
+
143
+ If nothing is due, the agent responds `NOOP` and the tick costs nothing
144
+ user-visible.
145
+
104
146
  ## Tools
105
147
 
106
148
  Tools are the quickest way to add custom capabilities. You have two options:
@@ -2,7 +2,10 @@
2
2
  "pair": {
3
3
  "sessionTimeoutMinutes": 30,
4
4
  "logLevel": "info",
5
- "model": "claude-sonnet-4-6"
5
+ "model": "claude-sonnet-4-6",
6
+ "heartbeatIntervalMinutes": 10,
7
+ "defaultChannel": "telegram",
8
+ "defaultChannelId": ""
6
9
  },
7
10
  "telegram": {
8
11
  "enabled": true,