@lucasschirm/devin-session-sync 0.1.0 → 0.1.2
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/.devin-plugin/plugin.json +1 -1
- package/README.md +82 -46
- package/bin/devin-sync +129 -126
- package/bin/hook +43 -42
- package/bin/session-end +32 -31
- package/bin/session-start +30 -29
- package/bin/watcher +27 -26
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -4,34 +4,20 @@ A [Devin CLI](https://docs.devin.ai/) plugin that synchronizes your session data
|
|
|
4
4
|
— the local `sessions.db` transcript and telemetry — to S3-compatible storage
|
|
5
5
|
via the [`@lucasschirm/sal-sync`](../../sync) engine.
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
The Devin CLI maintains a local SQLite database at
|
|
10
|
-
`~/.local/share/devin/cli/sessions.db` (or `$XDG_DATA_HOME/devin/cli/sessions.db`).
|
|
11
|
-
This plugin reads that database and produces deterministic, ordered
|
|
12
|
-
`devin-session-jsonl/v1` output, then uploads it through the SAL sync engine so
|
|
13
|
-
the [Agentic Sessions Dashboard](../../../) can analyze it alongside Claude Code
|
|
14
|
-
and other agentic session sources.
|
|
15
|
-
|
|
16
|
-
### Plugin lifecycle
|
|
17
|
-
|
|
18
|
-
The plugin is driven by the Devin CLI hook system (declared in
|
|
19
|
-
[`hooks.json`](hooks.json)):
|
|
20
|
-
|
|
21
|
-
| Event | What happens |
|
|
22
|
-
| -------------- | ----------------------------------------------------------------------------- |
|
|
23
|
-
| `SessionStart` | Records the session and starts the `watcher` to observe incremental state. |
|
|
24
|
-
| `SessionEnd` | Performs the final sync: flushes remaining state, uploads the manifest, and ends cleanly. |
|
|
7
|
+
## Installation
|
|
25
8
|
|
|
26
|
-
|
|
27
|
-
|
|
9
|
+
Devin plugins are installed at the user level and are available across all your
|
|
10
|
+
projects. There is no `marketplace.json` for Devin plugins — installation is
|
|
11
|
+
direct from a git source subdirectory or a local folder.
|
|
28
12
|
|
|
29
|
-
|
|
13
|
+
### Prerequisites
|
|
30
14
|
|
|
31
|
-
Devin
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
15
|
+
- **Devin CLI** installed and on your `PATH` (`devin --version`).
|
|
16
|
+
- **Node.js >= 22.13.0** (or >= 23.4.0) — the plugin reads Devin's local
|
|
17
|
+
`sessions.db` via the built-in `node:sqlite` module, which requires one of
|
|
18
|
+
these versions.
|
|
19
|
+
- **S3-compatible storage** configured (see [Configuration](#configuration)
|
|
20
|
+
below).
|
|
35
21
|
|
|
36
22
|
### From the remote repository
|
|
37
23
|
|
|
@@ -84,8 +70,75 @@ bin/watcher # Watermark / state watcher
|
|
|
84
70
|
bin/devin-sync # Standalone CLI for manual sync/list/download
|
|
85
71
|
```
|
|
86
72
|
|
|
87
|
-
|
|
88
|
-
|
|
73
|
+
### Verifying the installation
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
devin plugins list
|
|
77
|
+
devin plugins info devin-session-sync
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Updating and removing
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
devin plugins update devin-session-sync # re-fetch at the latest version
|
|
84
|
+
devin plugins remove devin-session-sync # uninstall
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Configuration
|
|
88
|
+
|
|
89
|
+
The plugin and its standalone CLI read configuration from environment variables,
|
|
90
|
+
falling back to `.devin/config.local.json` and `.devin/config.json` `env` keys.
|
|
91
|
+
Required variables:
|
|
92
|
+
|
|
93
|
+
| Variable | Description |
|
|
94
|
+
| --------------------------- | ------------------------------------------------ |
|
|
95
|
+
| `SAL_PROJECT_ID` | Unique project identifier. |
|
|
96
|
+
| `SAL_STORAGE_TYPE` | Storage backend (`s3` only today). |
|
|
97
|
+
| `SAL_STORAGE_BUCKET` | S3 bucket name. |
|
|
98
|
+
| `SAL_STORAGE_REGION` | AWS region. |
|
|
99
|
+
| `SAL_STORAGE_ACCESS_KEY_ID` | AWS access key ID. |
|
|
100
|
+
| `SAL_STORAGE_SECRET_ACCESS_KEY` | AWS secret access key. |
|
|
101
|
+
|
|
102
|
+
See the sync engine documentation for the full option list and LocalStack
|
|
103
|
+
configuration.
|
|
104
|
+
|
|
105
|
+
## What it does
|
|
106
|
+
|
|
107
|
+
The Devin CLI maintains a local SQLite database at
|
|
108
|
+
`~/.local/share/devin/cli/sessions.db` (or `$XDG_DATA_HOME/devin/cli/sessions.db`).
|
|
109
|
+
This plugin reads that database and produces deterministic, ordered
|
|
110
|
+
`devin-session-jsonl/v1` output, then uploads it through the SAL sync engine so
|
|
111
|
+
the [Agentic Sessions Dashboard](../../../) can analyze it alongside Claude Code
|
|
112
|
+
and other agentic session sources.
|
|
113
|
+
|
|
114
|
+
### Plugin lifecycle
|
|
115
|
+
|
|
116
|
+
The plugin is driven by the Devin CLI hook system (declared in
|
|
117
|
+
[`hooks.json`](hooks.json)):
|
|
118
|
+
|
|
119
|
+
| Event | What happens |
|
|
120
|
+
| -------------- | ----------------------------------------------------------------------------- |
|
|
121
|
+
| `SessionStart` | Records the session and starts the `watcher` to observe incremental state. |
|
|
122
|
+
| `Stop` | Syncs the current session state (fires every turn, works in both Cloud and local). |
|
|
123
|
+
| `PostCompaction` | Syncs after context compaction. |
|
|
124
|
+
| `SessionEnd` | Performs the final sync: flushes remaining state, uploads the manifest, and ends cleanly. |
|
|
125
|
+
|
|
126
|
+
The `watcher` also keeps a watermark so repeated runs are incremental and do not
|
|
127
|
+
transmit data that has already been synced.
|
|
128
|
+
|
|
129
|
+
### Unattended sessions (Cloud)
|
|
130
|
+
|
|
131
|
+
Devin Cloud sessions never fire `SessionStart`/`SessionEnd` hooks. To cover
|
|
132
|
+
that, the plugin ships a mandatory `bin/watcher` daemon that polls
|
|
133
|
+
`sessions.db` watermarks on an interval and re-syncs changed sessions. Start it
|
|
134
|
+
independently of any hook (e.g. via a process manager or a login shell):
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
node ./packages/plugins/devin-session-sync/bin/watcher
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The bulk `devin-sync sync` CLI command (below) is the manual/scheduled
|
|
141
|
+
catch-up path for the same gap.
|
|
89
142
|
|
|
90
143
|
## Standalone CLI
|
|
91
144
|
|
|
@@ -127,24 +180,6 @@ devin-sync migrate # Dry run: list old-format keys and missing m
|
|
|
127
180
|
|
|
128
181
|
Run `devin-sync --help` for the full command reference.
|
|
129
182
|
|
|
130
|
-
### Configuration
|
|
131
|
-
|
|
132
|
-
The CLI and plugin read configuration from environment variables, falling back to
|
|
133
|
-
`.devin/config.local.json` and `.devin/config.json` `env` keys. Required
|
|
134
|
-
variables are the same as the sync engine:
|
|
135
|
-
|
|
136
|
-
| Variable | Description |
|
|
137
|
-
| --------------------------- | ------------------------------------------------ |
|
|
138
|
-
| `SAL_PROJECT_ID` | Unique project identifier. |
|
|
139
|
-
| `SAL_STORAGE_TYPE` | Storage backend (`s3` only today). |
|
|
140
|
-
| `SAL_STORAGE_BUCKET` | S3 bucket name. |
|
|
141
|
-
| `SAL_STORAGE_REGION` | AWS region. |
|
|
142
|
-
| `SAL_STORAGE_ACCESS_KEY_ID` | AWS access key ID. |
|
|
143
|
-
| `SAL_STORAGE_SECRET_ACCESS_KEY` | AWS secret access key. |
|
|
144
|
-
|
|
145
|
-
See the sync engine documentation for the full option list and LocalStack
|
|
146
|
-
configuration.
|
|
147
|
-
|
|
148
183
|
## Distribution note
|
|
149
184
|
|
|
150
185
|
- The Claude plugin is listed in the repository's
|
|
@@ -160,7 +195,8 @@ configuration.
|
|
|
160
195
|
|
|
161
196
|
This package is auto-published by `.github/workflows/version-patch.yml` on every
|
|
162
197
|
push to `main`, alongside the Claude plugin. It shares the same esbuild-bundled,
|
|
163
|
-
provenance-enabled, public npm publish path.
|
|
198
|
+
provenance-enabled, public npm publish path. Both plugins are kept at the same
|
|
199
|
+
version (aligned and bumped together by the version-patch workflow).
|
|
164
200
|
|
|
165
201
|
## Development
|
|
166
202
|
|