@lucasschirm/devin-session-sync 0.1.0 → 0.1.1

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devin-session-sync",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Sync Devin CLI session data to S3-compatible storage.",
5
5
  "author": {
6
6
  "name": "lucasschirm"
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
- ## What it does
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
- The `watcher` also keeps a watermark so repeated runs are incremental and do not
27
- transmit data that has already been synced.
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
- ## Installation
13
+ ### Prerequisites
30
14
 
31
- Devin plugins are installed directly from a git source subdirectory; there is no
32
- `marketplace.json` file in the Devin install model. The repository's root
33
- [`.claude-plugin/marketplace.json`](../../../.claude-plugin/marketplace.json) is
34
- the Claude Code marketplace and intentionally lists only the Claude plugin.
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
- The npm package also publishes the `devin-session-sync` bin name as an alias for
88
- `devin-sync`.
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