@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 +45 -3
- package/config.example.json +4 -1
- package/dist/cli.js +14601 -433
- package/package.json +3 -2
- package/workspace-init/BOOTSTRAP.md +58 -0
- package/workspace-init/CLAUDE.md +101 -0
- package/workspace-init/HEARTBEAT.md +7 -0
- package/workspace-init/IDENTITY.md +21 -0
- package/workspace-init/MEMORY.md +4 -2
- package/workspace-init/SOUL.md +48 -0
- package/workspace-init/USER.md +4 -1
- package/workspace-init/SYSTEM.md +0 -44
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
|
-
- `
|
|
98
|
-
- `
|
|
99
|
-
- `
|
|
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:
|
package/config.example.json
CHANGED