opencodesync 0.1.5 → 0.1.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
@@ -1,307 +1,181 @@
1
- # opencodesync
1
+ <p align="center">
2
+ <img src="https://img.shields.io/npm/v/opencodesync.svg?style=flat-square&color=blue" alt="npm version" />
3
+ <img src="https://img.shields.io/npm/dm/opencodesync.svg?style=flat-square&color=green" alt="downloads" />
4
+ <img src="https://img.shields.io/badge/license-MIT-yellow.svg?style=flat-square" alt="license" />
5
+ </p>
2
6
 
3
- [![npm version](https://img.shields.io/npm/v/opencodesync.svg)](https://www.npmjs.com/package/opencodesync)
4
- [![npm downloads](https://img.shields.io/npm/dm/opencodesync.svg)](https://www.npmjs.com/package/opencodesync)
5
- [![CI](https://github.com/tctinh/opencode-sync/actions/workflows/ci.yml/badge.svg)](https://github.com/tctinh/opencode-sync/actions/workflows/ci.yml)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ <h1 align="center">opencodesync</h1>
7
8
 
8
- Sync your OpenCode settings and session contexts across devices using GitHub Gist.
9
+ <p align="center">
10
+ <strong>Start coding on your laptop. Continue on your desktop. Never lose context.</strong>
11
+ </p>
9
12
 
10
- ## Features
13
+ <p align="center">
14
+ Seamlessly sync your OpenCode settings, custom agents, and AI session contexts across all your devices.
15
+ </p>
11
16
 
12
- - **Config Sync**: Sync your OpenCode configuration files (opencode.json, custom agents, commands, AGENTS.md)
13
- - **Context Export**: AI-powered session summarization with privacy safeguards
14
- - **Context Import**: Resume work on any device with full context
15
- - **Secure**: End-to-end encryption with AES-256-GCM
16
- - **Private**: Uses private GitHub Gists for storage
17
+ ---
17
18
 
18
- ## Installation
19
+ ## The Problem
19
20
 
20
- ```bash
21
- npm install -g opencodesync
22
- ```
21
+ You're deep in a coding session on your work machine. You've built up context with your AI assistant - it understands your architecture, your decisions, your next steps. Then you need to switch to your home computer.
23
22
 
24
- ## Quick Start
23
+ **Without opencodesync:** Start from scratch. Re-explain everything. Lose momentum.
25
24
 
26
- ### 1. Initialize on your primary device
25
+ **With opencodesync:** One command. Full context restored. Keep building.
27
26
 
28
- ```bash
29
- opencodesync init
30
- ```
31
-
32
- This will:
33
- - Guide you through creating a GitHub Personal Access Token
34
- - Set up your encryption passphrase
35
- - Create your sync storage
27
+ ---
36
28
 
37
- ### 2. Push your settings
29
+ ## Quick Start
38
30
 
39
31
  ```bash
40
- opencodesync push
41
- ```
32
+ # Install globally
33
+ npm install -g opencodesync
42
34
 
43
- ### 3. Set up on another device
35
+ # Set up on your first device
36
+ opencodesync init
44
37
 
45
- ```bash
46
- opencodesync init # Use the SAME token and passphrase
47
- opencodesync pull
38
+ # Push your settings
39
+ opencodesync push
48
40
  ```
49
41
 
50
- ## CLI Commands
51
-
52
- ### `opencodesync init`
53
-
54
- Set up sync credentials (GitHub token and encryption passphrase).
55
-
42
+ On your second device:
56
43
  ```bash
57
- opencodesync init [--force]
44
+ opencodesync init # Same credentials
45
+ opencodesync pull # Everything synced
58
46
  ```
59
47
 
60
- Options:
61
- - `--force`, `-f`: Overwrite existing credentials
48
+ That's it. Your configs, agents, commands, and contexts are now synced.
62
49
 
63
- ### `opencodesync push`
50
+ ---
64
51
 
65
- Push local config files to GitHub Gist.
66
-
67
- ```bash
68
- opencodesync push [--force] [--verbose]
69
- ```
52
+ ## What You Get
70
53
 
71
- Options:
72
- - `--force`, `-f`: Push even if no changes detected
73
- - `--verbose`, `-v`: Show detailed output
54
+ ### Sync Your Entire Setup
74
55
 
75
- ### `opencodesync pull`
56
+ | What | Synced |
57
+ |------|--------|
58
+ | Main config (`opencode.json`) | ✅ |
59
+ | Custom agents (`agent/*.md`) | ✅ |
60
+ | Custom commands (`command/*.md`) | ✅ |
61
+ | Global instructions (`AGENTS.md`) | ✅ |
62
+ | Plugin configs (`*.jsonc`, `oh-my-opencode.json`) | ✅ |
63
+ | Skills directory (`skills/**`) | ✅ |
64
+ | Session contexts | ✅ |
76
65
 
77
- Pull config files from GitHub Gist.
66
+ ### Never Lose Your AI Context
78
67
 
79
- ```bash
80
- opencodesync pull [--force] [--verbose]
68
+ Export your session before switching devices:
81
69
  ```
82
-
83
- Options:
84
- - `--force`, `-f`: Overwrite local files without confirmation
85
- - `--verbose`, `-v`: Show detailed output
86
-
87
- ### `opencodesync status`
88
-
89
- Show sync status and pending changes.
90
-
91
- ```bash
92
- opencodesync status [--verbose]
70
+ /context-export "Auth Implementation" --guidance "focus on OAuth decisions"
93
71
  ```
94
72
 
95
- Options:
96
- - `--verbose`, `-v`: Show detailed file list
97
-
98
- ## Plugin Commands (in OpenCode)
99
-
100
- ### `/context-export`
101
-
102
- Export current session as a privacy-safe context for cross-device sync.
103
-
73
+ Resume on any machine:
104
74
  ```
105
- /context-export [name] [--guidance "focus on..."]
75
+ /context-import "Auth Implementation"
106
76
  ```
107
77
 
108
- Arguments:
109
- - `name`: Custom name for this context (optional, auto-generated if not provided)
110
- - `--guidance`: What to focus on in the summary
78
+ Your AI picks up exactly where you left off.
111
79
 
112
- Example:
113
- ```
114
- /context-export "Auth Implementation" --guidance "focus on OAuth flow, skip database details"
115
- ```
80
+ ### Bank-Grade Security
116
81
 
117
- ### `/context-import`
82
+ - **AES-256-GCM encryption** - Your data is encrypted before it leaves your machine
83
+ - **Private GitHub Gists** - Only you can access your sync storage
84
+ - **Zero plaintext** - Even if someone gets your Gist, they can't read it without your passphrase
118
85
 
119
- Import saved contexts to resume work.
120
-
121
- ```
122
- /context-import [name...]
123
- ```
86
+ ---
124
87
 
125
- Arguments:
126
- - `name...`: Context names or IDs to import (supports partial matching)
88
+ ## Daily Workflow
127
89
 
128
- Example:
129
- ```
130
- /context-import "Auth Implementation"
131
- /context-import auth database # Import multiple contexts
90
+ **Morning at the office:**
91
+ ```bash
92
+ opencodesync pull # Get latest from home
93
+ # ... work on features ...
94
+ /context-export "Feature Progress" # Save your context
95
+ opencodesync push # Sync to cloud
132
96
  ```
133
97
 
134
- ### `/context-list`
135
-
136
- List all saved contexts.
137
-
138
- ```
139
- /context-list [--search query]
98
+ **Evening at home:**
99
+ ```bash
100
+ opencodesync pull # Get settings + context
101
+ /context-import "Feature Progress" # Resume with full context
102
+ # ... continue seamlessly ...
140
103
  ```
141
104
 
142
- ### `/context-prune`
105
+ ---
143
106
 
144
- Delete saved contexts.
107
+ ## CLI Commands
145
108
 
146
- ```
147
- /context-prune <name>
148
- /context-prune --all
149
- ```
109
+ | Command | What it does |
110
+ |---------|--------------|
111
+ | `opencodesync init` | Set up GitHub token and encryption passphrase |
112
+ | `opencodesync push` | Upload your settings to the cloud |
113
+ | `opencodesync pull` | Download settings from the cloud |
114
+ | `opencodesync status` | Check what's changed since last sync |
150
115
 
151
- Arguments:
152
- - `name`: Name or ID of context to delete
153
- - `--all`: Delete all contexts (requires confirmation)
116
+ Use `--verbose` on any command for detailed output.
154
117
 
155
- ## What Gets Synced
118
+ ---
156
119
 
157
- | Item | Synced | Notes |
158
- |------|--------|-------|
159
- | `opencode.json` / `opencode.jsonc` | ✅ Yes | Main config file |
160
- | Custom agents (`agent/*.md`) | ✅ Yes | Your custom agent definitions |
161
- | Custom commands (`command/*.md`) | ✅ Yes | Your custom slash commands |
162
- | `AGENTS.md` | ✅ Yes | Global instructions |
163
- | Plugin configs (`*.jsonc`, `oh-my-opencode.json`) | ✅ Yes | Plugin ecosystem configurations |
164
- | Skills directory (`skills/**`) | ✅ Yes | Skill files (symlinks resolved) |
165
- | Session contexts | ✅ Yes | AI-generated summaries only |
166
- | Auth tokens | ❌ **Never** | Security - never synced |
167
- | Plugin source files | ❌ No | Install from config |
168
- | Project configs (`.opencode/`) | ❌ No | Project-specific |
169
- | Session raw data | ❌ No | Too large, contains sensitive data |
170
- | Blocked files (`*.log`, `*.bak`, etc.) | ❌ No | Excluded by blocklist |
120
+ ## Plugin Commands (inside OpenCode)
171
121
 
172
- ## Security
122
+ | Command | What it does |
123
+ |---------|--------------|
124
+ | `/context-export [name]` | Save current session as a portable context |
125
+ | `/context-import [name]` | Load a saved context into your session |
126
+ | `/context-list` | See all your saved contexts |
127
+ | `/context-prune <name>` | Delete old contexts |
173
128
 
174
- ### Encryption
129
+ ---
175
130
 
176
- - All data is encrypted with **AES-256-GCM** before upload
177
- - Encryption key derived from your passphrase using **PBKDF2** (100,000 iterations)
178
- - Each sync uses a unique random salt and IV
179
- - Your passphrase never leaves your device
131
+ ## Privacy First
180
132
 
181
- ### Privacy
133
+ Context exports are **AI-generated summaries**, not raw data. They capture:
182
134
 
183
- The context export system includes built-in privacy safeguards:
135
+ - Goals and objectives
136
+ - Technical approaches and decisions
137
+ - Progress and next steps
184
138
 
185
- **Never included in exports:**
139
+ They **never** include:
186
140
  - Code snippets or implementations
187
- - API keys, tokens, passwords
188
- - Database connection strings
189
- - Internal URLs or infrastructure details
190
- - File contents or raw data
141
+ - API keys, tokens, or secrets
142
+ - Database strings or internal URLs
143
+ - Raw file contents
191
144
 
192
- **What gets captured:**
193
- - General goals and objectives
194
- - High-level technical approaches
195
- - Architectural decisions
196
- - Progress and next steps (abstract)
145
+ Your intellectual property stays safe.
197
146
 
198
- ### Storage
199
-
200
- - Uses **private** GitHub Gists only
201
- - GitHub token stored locally with encryption
202
- - Gist URL not shared publicly
203
-
204
- ## Configuration Files
205
-
206
- ### Storage Locations
207
-
208
- | Path | Purpose |
209
- |------|---------|
210
- | `~/.config/opencode/` | OpenCode config files |
211
- | `~/.local/share/opencode/sync/` | Sync storage |
212
- | `~/.local/share/opencode/sync/auth.json` | Encrypted credentials |
213
- | `~/.local/share/opencode/sync/state.json` | Sync state |
214
- | `~/.local/share/opencode/sync/contexts.json` | Saved contexts |
147
+ ---
215
148
 
216
149
  ## Troubleshooting
217
150
 
218
- ### "Not configured" error
219
-
220
- Run `opencodesync init` to set up your credentials.
221
-
222
- ### "Decryption failed" error
223
-
224
- Make sure you're using the **same passphrase** as on your other devices. If you've forgotten it, you'll need to start fresh:
225
-
226
- ```bash
227
- opencodesync init --force
228
- opencodesync push --force
229
- ```
230
-
231
- Then re-initialize your other devices with the new passphrase.
232
-
233
- ### "Invalid token" error
234
-
235
- Your GitHub token may have expired or been revoked. Create a new one:
236
-
237
- 1. Go to https://github.com/settings/tokens/new
238
- 2. Create a token with the `gist` scope
239
- 3. Run `opencodesync init --force`
240
-
241
- ### "Rate limit" error
151
+ | Error | Solution |
152
+ |-------|----------|
153
+ | "Not configured" | Run `opencodesync init` |
154
+ | "Decryption failed" | Use the same passphrase as your other devices |
155
+ | "Invalid token" | Create a new GitHub token with `gist` scope |
242
156
 
243
- GitHub API has rate limits. Wait a few minutes and try again.
157
+ Need to start fresh? `opencodesync init --force && opencodesync push --force`
244
158
 
245
- ## Workflow Example
159
+ ---
246
160
 
247
- ### Machine A (Office)
248
-
249
- ```bash
250
- # Morning: Start work
251
- opencodesync pull # Get latest from home
252
-
253
- # Work on feature...
254
-
255
- # End of day: Save context
256
- # In OpenCode:
257
- /context-export "Feature X Progress" --guidance "focus on API design decisions"
258
-
259
- # Push to sync
260
- opencodesync push
261
- ```
262
-
263
- ### Machine B (Home)
264
-
265
- ```bash
266
- # Evening: Continue work
267
- opencodesync pull # Get settings + context from office
268
-
269
- # In OpenCode:
270
- /context-import "Feature X" # Resume with full context
271
-
272
- # Continue working...
273
- ```
274
-
275
- ## API Usage (for plugin developers)
161
+ ## For Plugin Developers
276
162
 
277
163
  ```typescript
278
- import {
279
- createPluginTools,
280
- createEventHooks,
281
- addContext,
282
- getAllContexts,
283
- paths,
284
- } from "opencodesync";
285
-
286
- // Create all tools
287
- const tools = createPluginTools();
288
-
289
- // Set up event hooks
290
- const hooks = createEventHooks();
291
- hooks.setToastHandler((options) => {
292
- // Show toast notification in your UI
293
- });
164
+ import { createPluginTools, addContext, getAllContexts } from "opencodesync";
294
165
 
295
- // Listen for session compaction
296
- hooks.onSessionCompacted((event) => {
297
- // Remind user to export context
298
- });
299
-
300
- // Direct context management
301
- const context = addContext("My Context", "Summary text...");
302
- const allContexts = getAllContexts();
166
+ const tools = createPluginTools();
167
+ const context = addContext("My Context", "Summary...");
168
+ const all = getAllContexts();
303
169
  ```
304
170
 
171
+ ---
172
+
305
173
  ## License
306
174
 
307
175
  MIT
176
+
177
+ ---
178
+
179
+ <p align="center">
180
+ <strong>Stop context-switching. Start syncing.</strong>
181
+ </p>
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJrE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkLrE"}
@@ -6,6 +6,8 @@ import { saveAuth, loadAuth, clearAuth } from "../../storage/auth.js";
6
6
  import { validateToken, getUser, findSyncGist } from "../../core/gist.js";
7
7
  import { generatePassphrase } from "../../core/crypto.js";
8
8
  import { paths } from "../../utils/paths.js";
9
+ import { pushCommand } from "./push.js";
10
+ import { pullCommand } from "./pull.js";
9
11
  export async function initCommand(options) {
10
12
  console.log("\n🔧 OpenCode Sync Setup\n");
11
13
  // Check existing credentials
@@ -123,14 +125,42 @@ export async function initCommand(options) {
123
125
  // Summary
124
126
  console.log("─".repeat(50));
125
127
  console.log("Setup Complete!\n");
126
- console.log("Next steps:");
128
+ // Offer to pull or push based on whether using existing gist
127
129
  if (gistId) {
128
- console.log(" • Run 'opencodesync pull' to download your settings");
130
+ const { shouldPull } = await inquirer.prompt([
131
+ {
132
+ type: "confirm",
133
+ name: "shouldPull",
134
+ message: "Do you want to pull your settings from this Gist now?",
135
+ default: true,
136
+ },
137
+ ]);
138
+ if (shouldPull) {
139
+ console.log("\nPulling settings...\n");
140
+ await pullCommand({ verbose: false });
141
+ }
142
+ else {
143
+ console.log("\nRun 'opencodesync pull' when you're ready to download your settings.");
144
+ }
129
145
  }
130
146
  else {
131
- console.log(" • Run 'opencodesync push' to upload your settings");
147
+ const { shouldPush } = await inquirer.prompt([
148
+ {
149
+ type: "confirm",
150
+ name: "shouldPush",
151
+ message: "Do you want to push your current settings now?",
152
+ default: true,
153
+ },
154
+ ]);
155
+ if (shouldPush) {
156
+ console.log("\nPushing settings...\n");
157
+ await pushCommand({ verbose: false, force: false });
158
+ }
159
+ else {
160
+ console.log("\nRun 'opencodesync push' when you're ready to upload your settings.");
161
+ }
132
162
  }
133
- console.log(" Run 'opencodesync status' to check sync status\n");
163
+ console.log("\nRun 'opencodesync status' to check sync status.\n");
134
164
  console.log("⚠️ IMPORTANT: Remember your passphrase!");
135
165
  console.log(" You'll need it to sync on other devices.\n");
136
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencodesync",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Sync OpenCode settings and session contexts across devices via GitHub Gist",
5
5
  "type": "module",
6
6
  "main": "./dist/plugin/index.js",