memoir-cli 3.1.1 → 3.2.0
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/GAMEPLAN.md +235 -0
- package/README.md +33 -2
- package/bin/memoir.js +78 -3
- package/package.json +9 -4
- package/src/commands/projects.js +240 -0
- package/src/commands/push.js +5 -3
- package/src/commands/restore.js +197 -3
- package/src/commands/share.js +192 -0
- package/src/commands/upgrade.js +107 -0
- package/src/context/capture.js +77 -0
- package/src/mcp.js +429 -0
- package/src/providers/index.js +6 -6
- package/src/security/encryption.js +98 -46
- package/src/workspace/tracker.js +4 -4
package/GAMEPLAN.md
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Memoir Business Game Plan
|
|
2
|
+
**Date:** March 25, 2026 | **Status:** Pre-revenue | **Author:** Boardroom consensus + CEO directive
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Current State
|
|
7
|
+
|
|
8
|
+
| Metric | Value |
|
|
9
|
+
|--------|-------|
|
|
10
|
+
| Version | 3.1.2 (npm) |
|
|
11
|
+
| Revenue | $0 |
|
|
12
|
+
| Users | ~50 npm downloads |
|
|
13
|
+
| AI Tools Supported | 11 (Claude, Gemini, Cursor, Copilot, Windsurf, Zed, Cline, Continue, Aider, Codex, ChatGPT) |
|
|
14
|
+
| Cloud Backend | Supabase (auth + storage + PostgreSQL) |
|
|
15
|
+
| Landing Page | memoir.sh (Vercel, 13 blog posts, no email capture) |
|
|
16
|
+
| Blog Posts | 13 SEO-targeted articles |
|
|
17
|
+
| Analytics | None (CLI or website) |
|
|
18
|
+
| Payment Processing | None |
|
|
19
|
+
| Team Features | None |
|
|
20
|
+
| Shareable Links | None |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## What's Already Built (Don't Rebuild)
|
|
25
|
+
|
|
26
|
+
- **CLI core** — push, restore, snapshot, resume, migrate, diff, profiles, doctor
|
|
27
|
+
- **Cloud sync** — Supabase auth (email/password), gzipped bundles in Storage, PostgreSQL metadata
|
|
28
|
+
- **Free/Pro tiers** — enforced in code (Free: 3 backups, Pro: 50) — but no way to pay for Pro
|
|
29
|
+
- **Version history** — cloud backups versioned, restore from any version
|
|
30
|
+
- **E2E encryption** — AES-256-GCM, async scrypt (just fixed), client-side before upload
|
|
31
|
+
- **Workspace sync** — clones git repos, bundles non-git projects, applies uncommitted patches
|
|
32
|
+
- **Session handoff** — snapshot current session, resume on another machine
|
|
33
|
+
- **Landing page** — memoir.sh with animated terminal demo, tool marquee, FAQ, competitor comparison
|
|
34
|
+
- **13 SEO blog posts** — sync guides for each tool, comparisons, setup guides
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## The Plan: 4 Phases
|
|
39
|
+
|
|
40
|
+
### Phase 1: Monetization Foundation (Week 1-2)
|
|
41
|
+
> **Goal:** Accept money. Capture emails. Track usage.
|
|
42
|
+
|
|
43
|
+
| Task | Priority | Effort | Details |
|
|
44
|
+
|------|----------|--------|---------|
|
|
45
|
+
| Add Stripe integration | P0 | 1 day | Connect to Pro tier ($15/mo individual, already priced in competitor comparison) |
|
|
46
|
+
| `memoir upgrade` command | P0 | 0.5 day | Opens Stripe checkout from CLI, activates Pro |
|
|
47
|
+
| Add pricing page to memoir.sh | P0 | 0.5 day | Free vs Pro vs Teams (coming soon) |
|
|
48
|
+
| Add email capture / waitlist | P0 | 0.5 day | "Get notified for Teams" — collect emails on memoir.sh |
|
|
49
|
+
| Add PostHog analytics to CLI | P1 | 0.5 day | Anonymous: commands used, tool count, machine OS, cloud vs local |
|
|
50
|
+
| Add PostHog to memoir.sh | P1 | 0.5 day | Page views, blog reads, install clicks |
|
|
51
|
+
| `memoir doctor` completion | P2 | 0.5 day | Finish the stubbed diagnostics command |
|
|
52
|
+
|
|
53
|
+
**Phase 1 deliverable:** People can pay. We know who's using what.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### Phase 2: Viral Loop + Shareability (Week 3-4)
|
|
58
|
+
> **Goal:** Every user brings one more user.
|
|
59
|
+
|
|
60
|
+
| Task | Priority | Effort | Details |
|
|
61
|
+
|------|----------|--------|---------|
|
|
62
|
+
| Shareable context links | P0 | 2 days | `memoir share` → generates encrypted link (Supabase signed URL, 24hr expiry). Recipient runs `memoir restore --from <link>` |
|
|
63
|
+
| Share landing page | P0 | 0.5 day | When link is opened in browser (not CLI), show "Install memoir to restore this context" with one-click copy |
|
|
64
|
+
| Team invite flow | P1 | 1 day | `memoir team create`, `memoir team invite <email>` — shared backup namespace in Supabase |
|
|
65
|
+
| Onboarding context | P1 | 0.5 day | `memoir push --share` generates a restore link printed to terminal. Copy-paste to Slack |
|
|
66
|
+
| "Synced with memoir" badge | P2 | 0.5 day | Auto-append to CLAUDE.md / .cursorrules when synced — passive discovery |
|
|
67
|
+
|
|
68
|
+
**Phase 2 deliverable:** Sharing is the viral loop. Every shared link = a new install prompt.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
### Phase 3: Teams Tier (Week 5-8)
|
|
73
|
+
> **Goal:** $29/seat/month revenue from dev teams.
|
|
74
|
+
|
|
75
|
+
| Task | Priority | Effort | Details |
|
|
76
|
+
|------|----------|--------|---------|
|
|
77
|
+
| Organizations in Supabase | P0 | 2 days | `organizations` table, `org_members` table, role-based (admin/member) |
|
|
78
|
+
| Shared team backups | P0 | 2 days | `memoir push --team` syncs to org namespace. All members can restore team context |
|
|
79
|
+
| Team dashboard (web) | P1 | 3 days | memoir.sh/dashboard — see team members, backup history, storage usage |
|
|
80
|
+
| Seat-based billing | P0 | 1 day | Stripe per-seat subscription, enforce in CLI |
|
|
81
|
+
| Context inheritance | P1 | 1 day | `memoir restore --from <teammate>` — pull specific teammate's context with permission |
|
|
82
|
+
| Audit log | P2 | 1 day | Who pushed, who restored, when — enterprise compliance checkbox |
|
|
83
|
+
| SSO (Google/GitHub) | P2 | 1 day | Enterprise teams expect OAuth, not email/password |
|
|
84
|
+
|
|
85
|
+
**Phase 3 deliverable:** Teams can buy seats, share context, see a dashboard.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### Phase 4: Enterprise + Moat (Week 9-12)
|
|
90
|
+
> **Goal:** First $5k MRR. Lock-in through history depth.
|
|
91
|
+
|
|
92
|
+
| Task | Priority | Effort | Details |
|
|
93
|
+
|------|----------|--------|---------|
|
|
94
|
+
| Context time-travel | P1 | 3 days | `memoir restore --version 5 --tool claude` — restore any tool to any point in history |
|
|
95
|
+
| Diff between versions | P1 | 1 day | `memoir diff v3 v7` — show what changed in AI context between versions |
|
|
96
|
+
| Context quality scoring | P2 | 2 days | Auto-tag backups: files changed, decisions made, session length. Surface "important" snapshots |
|
|
97
|
+
| Enterprise pricing page | P1 | 0.5 day | $99/seat/month with SLA, priority support, SSO, audit logs |
|
|
98
|
+
| SOC2 narrative | P2 | 1 day | Document E2E encryption, zero-knowledge architecture, audit trail for compliance conversations |
|
|
99
|
+
| API for integrations | P2 | 3 days | REST API: programmatic backup/restore for CI/CD pipelines, onboarding scripts |
|
|
100
|
+
|
|
101
|
+
**Phase 4 deliverable:** Enterprise-ready product with deep history moat.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Pricing Structure
|
|
106
|
+
|
|
107
|
+
| Tier | Price | Limits | Target |
|
|
108
|
+
|------|-------|--------|--------|
|
|
109
|
+
| **Free** | $0/forever | 3 cloud backups, local unlimited, 1 machine | Solo devs trying it out |
|
|
110
|
+
| **Pro** | $15/month | 50 cloud backups, unlimited machines, version history | Power users, multi-machine devs |
|
|
111
|
+
| **Teams** | $29/seat/month | Shared team context, dashboard, audit log, 200 backups/team | Dev teams (5-20 people) |
|
|
112
|
+
| **Enterprise** | $99/seat/month | SSO, SLA, API access, compliance docs, unlimited backups | Companies (20+) |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Positioning
|
|
117
|
+
|
|
118
|
+
| Audience | Message |
|
|
119
|
+
|----------|---------|
|
|
120
|
+
| Individual dev | "Never lose your AI context again" |
|
|
121
|
+
| Dev team lead | "Onboard devs in 60 seconds with full AI context" |
|
|
122
|
+
| Enterprise buyer | "SOC2-ready AI workflow continuity" |
|
|
123
|
+
| SEO / content | "Git for your AI setup" |
|
|
124
|
+
|
|
125
|
+
**One-liner:** memoir syncs your AI memory across every machine and every teammate.
|
|
126
|
+
|
|
127
|
+
**Anti-positioning (what we're NOT):** Not a dotfiles manager. Not VS Code Sync. Not a cloud IDE. We sync the AI layer — the conversations, decisions, and context that make your tools smart.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## First 100 Users Plan
|
|
132
|
+
|
|
133
|
+
| Week | Action | Target |
|
|
134
|
+
|------|--------|--------|
|
|
135
|
+
| 1 | Ship Stripe + pricing page | Accept payments |
|
|
136
|
+
| 2 | Post on r/programming, r/neovim, r/cursor, Hacker News | 500 page views |
|
|
137
|
+
| 3 | Cold DM 50 developers who tweet about Claude/Cursor context loss | 10 installs |
|
|
138
|
+
| 4 | Ship shareable links, post demo video on X/Twitter | 20 shares |
|
|
139
|
+
| 5-6 | Reach out to 10 companies using Cursor (check their GitHub for .cursorrules) | 3 team pilots |
|
|
140
|
+
| 7-8 | Ship Teams tier, convert pilots to paid | First $290 MRR |
|
|
141
|
+
| 9-12 | Content marketing: "How Company X onboards devs in 60s" case study | 100 users, $1k+ MRR |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Supabase Schema Changes Needed
|
|
146
|
+
|
|
147
|
+
```sql
|
|
148
|
+
-- Organizations
|
|
149
|
+
CREATE TABLE organizations (
|
|
150
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
151
|
+
name TEXT NOT NULL,
|
|
152
|
+
slug TEXT UNIQUE NOT NULL,
|
|
153
|
+
owner_id UUID REFERENCES auth.users(id),
|
|
154
|
+
plan TEXT DEFAULT 'teams',
|
|
155
|
+
stripe_customer_id TEXT,
|
|
156
|
+
stripe_subscription_id TEXT,
|
|
157
|
+
created_at TIMESTAMPTZ DEFAULT now()
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
-- Org members
|
|
161
|
+
CREATE TABLE org_members (
|
|
162
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
163
|
+
org_id UUID REFERENCES organizations(id) ON DELETE CASCADE,
|
|
164
|
+
user_id UUID REFERENCES auth.users(id),
|
|
165
|
+
role TEXT DEFAULT 'member' CHECK (role IN ('admin', 'member')),
|
|
166
|
+
invited_by UUID REFERENCES auth.users(id),
|
|
167
|
+
joined_at TIMESTAMPTZ DEFAULT now(),
|
|
168
|
+
UNIQUE(org_id, user_id)
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
-- Shared links
|
|
172
|
+
CREATE TABLE shared_links (
|
|
173
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
174
|
+
backup_id UUID REFERENCES backups(id),
|
|
175
|
+
created_by UUID REFERENCES auth.users(id),
|
|
176
|
+
token TEXT UNIQUE NOT NULL,
|
|
177
|
+
expires_at TIMESTAMPTZ NOT NULL,
|
|
178
|
+
max_uses INT DEFAULT 1,
|
|
179
|
+
use_count INT DEFAULT 0,
|
|
180
|
+
created_at TIMESTAMPTZ DEFAULT now()
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
-- Add org_id to backups for team backups
|
|
184
|
+
ALTER TABLE backups ADD COLUMN org_id UUID REFERENCES organizations(id);
|
|
185
|
+
|
|
186
|
+
-- Add stripe fields to subscriptions
|
|
187
|
+
ALTER TABLE subscriptions ADD COLUMN stripe_customer_id TEXT;
|
|
188
|
+
ALTER TABLE subscriptions ADD COLUMN stripe_subscription_id TEXT;
|
|
189
|
+
ALTER TABLE subscriptions ADD COLUMN seats INT DEFAULT 1;
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## New CLI Commands Summary
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
memoir upgrade # Open Stripe checkout, activate Pro
|
|
198
|
+
memoir share # Generate encrypted shareable link
|
|
199
|
+
memoir team create # Create a team organization
|
|
200
|
+
memoir team invite # Invite teammate by email
|
|
201
|
+
memoir team list # List team members
|
|
202
|
+
memoir push --team # Push to team namespace
|
|
203
|
+
memoir restore --from # Restore from shared link or teammate
|
|
204
|
+
memoir history --diff # Diff between backup versions
|
|
205
|
+
memoir analytics # Show your usage stats (local)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Risk Register
|
|
211
|
+
|
|
212
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
213
|
+
|------|-----------|--------|------------|
|
|
214
|
+
| AI tools change config paths | High | Medium | Version-gated path detection, community PRs for new tools |
|
|
215
|
+
| Supabase costs spike with users | Medium | Medium | Gzip compression (already done), enforce tier limits, monitor |
|
|
216
|
+
| Nobody pays for Pro | High | High | Validate with shareable links first (free viral), watch conversion |
|
|
217
|
+
| Enterprise competitor (JetBrains, GitHub) builds this | Medium | High | Move fast, own the CLI mindshare, community moat |
|
|
218
|
+
| ToS violations syncing AI configs | Low | High | Only sync user-owned files (configs, not conversations). Document clearly |
|
|
219
|
+
| Data breach of cloud backups | Low | Critical | E2E encryption means we literally can't read user data. Zero-knowledge by design |
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## This Week's Checklist
|
|
224
|
+
|
|
225
|
+
- [ ] Stripe account setup + integration in CLI
|
|
226
|
+
- [ ] `memoir upgrade` command
|
|
227
|
+
- [ ] Pricing page on memoir.sh
|
|
228
|
+
- [ ] Email capture for Teams waitlist on memoir.sh
|
|
229
|
+
- [ ] PostHog analytics on CLI (anonymous, opt-out available)
|
|
230
|
+
- [ ] PostHog analytics on memoir.sh
|
|
231
|
+
- [ ] Post in 3 subreddits about memoir
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
*"The CLI is the funnel. Cloud is the product. Teams is the business."*
|
package/README.md
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
# memoir
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**AI tools forget you. memoir doesn't.**
|
|
6
6
|
|
|
7
7
|
[](https://npmjs.org/package/memoir-cli)
|
|
8
8
|
[](https://npmjs.org/package/memoir-cli)
|
|
9
9
|
[](https://opensource.org/licenses/MIT)
|
|
10
10
|
[](https://nodejs.org)
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Sync memory across 11 AI tools. Search it all from your editor via MCP. One CLI, every device.
|
|
13
13
|
|
|
14
14
|
[Website](https://memoir.sh) • [npm](https://npmjs.org/package/memoir-cli) • [Blog](https://memoir.sh/blog)
|
|
15
15
|
|
|
@@ -111,6 +111,35 @@ memoir push
|
|
|
111
111
|
memoir restore
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
+
## MCP Server (NEW in v3.2)
|
|
115
|
+
|
|
116
|
+
memoir ships an MCP server so your AI tools can search, read, and save memories without leaving the conversation.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Start the server
|
|
120
|
+
memoir mcp
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Claude Code** — add to `~/.mcp.json`:
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"mcpServers": {
|
|
127
|
+
"memoir": { "command": "memoir-mcp" }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Cursor** — add to `.cursor/mcp.json`:
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"mcpServers": {
|
|
136
|
+
"memoir": { "command": "memoir-mcp" }
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Your editor gets 6 tools: `memoir_recall` (search all memories), `memoir_remember` (save context), `memoir_list`, `memoir_read`, `memoir_status`, and `memoir_profiles`. Zero cost — runs locally.
|
|
142
|
+
|
|
114
143
|
## Key Features
|
|
115
144
|
|
|
116
145
|
### Workspace sync
|
|
@@ -195,6 +224,7 @@ Claude's memory paths are automatically remapped between platforms. Projects are
|
|
|
195
224
|
| `memoir cloud restore` | Restore from memoir cloud |
|
|
196
225
|
| `memoir history` | View cloud backup versions |
|
|
197
226
|
| `memoir login` | Sign in to memoir cloud |
|
|
227
|
+
| `memoir mcp` | Start MCP server for editor integration |
|
|
198
228
|
| `memoir update` | Self-update to latest version |
|
|
199
229
|
|
|
200
230
|
## How memoir compares
|
|
@@ -211,6 +241,7 @@ Claude's memory paths are automatically remapped between platforms. Projects are
|
|
|
211
241
|
| Uncommitted work patches | **Yes** | No | No | No |
|
|
212
242
|
| Cloud backup | **Yes** | No | No | Yes ($15/mo) |
|
|
213
243
|
| Profiles | **Yes** | No | No | No |
|
|
244
|
+
| MCP server | **Yes** | No | No | No |
|
|
214
245
|
| Free & open source | **Yes** | Yes | Yes | No |
|
|
215
246
|
|
|
216
247
|
## Common Workflows
|
package/bin/memoir.js
CHANGED
|
@@ -16,7 +16,10 @@ import { resumeCommand } from '../src/commands/resume.js';
|
|
|
16
16
|
import { profileListCommand, profileCreateCommand, profileSwitchCommand, profileDeleteCommand } from '../src/commands/profile.js';
|
|
17
17
|
import { loginCommand, logoutCommand } from '../src/commands/login.js';
|
|
18
18
|
import { cloudPushCommand, cloudRestoreCommand } from '../src/commands/cloud.js';
|
|
19
|
+
import { shareCommand } from '../src/commands/share.js';
|
|
19
20
|
import { historyCommand } from '../src/commands/history.js';
|
|
21
|
+
import { projectsListCommand, projectsTodoCommand } from '../src/commands/projects.js';
|
|
22
|
+
import { upgradeCommand } from '../src/commands/upgrade.js';
|
|
20
23
|
import { createRequire } from 'module';
|
|
21
24
|
|
|
22
25
|
const require = createRequire(import.meta.url);
|
|
@@ -62,12 +65,15 @@ if (process.argv.length <= 2) {
|
|
|
62
65
|
chalk.cyan(' memoir resume ') + chalk.gray('— pick up where you left off') + '\n' +
|
|
63
66
|
chalk.cyan(' memoir status ') + chalk.gray('— see detected AI tools') + '\n' +
|
|
64
67
|
chalk.cyan(' memoir profile ') + chalk.gray('— manage profiles (personal/work)') + '\n' +
|
|
68
|
+
chalk.cyan(' memoir projects ') + chalk.gray('— see all your projects at a glance') + '\n' +
|
|
65
69
|
chalk.cyan(' memoir encrypt ') + chalk.gray('— toggle E2E encryption') + '\n' +
|
|
66
|
-
chalk.cyan(' memoir update ') + chalk.gray('— update to latest version') + '\n
|
|
70
|
+
chalk.cyan(' memoir update ') + chalk.gray('— update to latest version') + '\n' +
|
|
71
|
+
chalk.cyan(' memoir upgrade ') + chalk.gray('— view plans & upgrade') + '\n\n' +
|
|
67
72
|
chalk.white.bold('Cloud (Pro):') + '\n' +
|
|
68
73
|
chalk.cyan(' memoir login ') + chalk.gray('— sign in to memoir cloud') + '\n' +
|
|
69
74
|
chalk.cyan(' memoir cloud push ') + chalk.gray('— back up to the cloud') + '\n' +
|
|
70
75
|
chalk.cyan(' memoir cloud restore ') + chalk.gray('— restore from cloud') + '\n' +
|
|
76
|
+
chalk.cyan(' memoir share ') + chalk.gray('— share memory via secure link') + '\n' +
|
|
71
77
|
chalk.cyan(' memoir history ') + chalk.gray('— view backup versions') + '\n\n' +
|
|
72
78
|
chalk.gray(' Tip: use --profile work to sync a specific profile') + '\n\n' +
|
|
73
79
|
chalk.gray(`v${VERSION}`),
|
|
@@ -120,8 +126,9 @@ program
|
|
|
120
126
|
.alias('pull')
|
|
121
127
|
.description('Restore your AI memory on this machine')
|
|
122
128
|
.option('--only <tools>', 'Only restore specific tools (comma-separated)')
|
|
123
|
-
.option('-
|
|
129
|
+
.option('-i, --interactive', 'Confirm each tool before restoring')
|
|
124
130
|
.option('-p, --profile <name>', 'Use a specific profile')
|
|
131
|
+
.option('--from <token>', 'Restore from a share link token')
|
|
125
132
|
.action(async (options) => {
|
|
126
133
|
try {
|
|
127
134
|
await restoreCommand(options);
|
|
@@ -131,6 +138,21 @@ program
|
|
|
131
138
|
}
|
|
132
139
|
});
|
|
133
140
|
|
|
141
|
+
program
|
|
142
|
+
.command('share')
|
|
143
|
+
.description('Share your AI memory via a secure link')
|
|
144
|
+
.option('--only <tools>', 'Only share specific tools (comma-separated)')
|
|
145
|
+
.option('--expires <hours>', 'Link expiry in hours (default: 24)')
|
|
146
|
+
.option('--uses <number>', 'Max number of uses (default: 5)')
|
|
147
|
+
.action(async (options) => {
|
|
148
|
+
try {
|
|
149
|
+
await shareCommand(options);
|
|
150
|
+
} catch (err) {
|
|
151
|
+
console.error(chalk.red('\n✖ Error during share:'), err.message);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
134
156
|
program
|
|
135
157
|
.command('status')
|
|
136
158
|
.description('See what AI tools are on this machine')
|
|
@@ -219,7 +241,6 @@ program
|
|
|
219
241
|
|
|
220
242
|
program
|
|
221
243
|
.command('update')
|
|
222
|
-
.alias('upgrade')
|
|
223
244
|
.description('Update memoir to the latest version')
|
|
224
245
|
.action(async () => {
|
|
225
246
|
try {
|
|
@@ -257,6 +278,19 @@ program
|
|
|
257
278
|
}
|
|
258
279
|
});
|
|
259
280
|
|
|
281
|
+
program
|
|
282
|
+
.command('upgrade')
|
|
283
|
+
.alias('pro')
|
|
284
|
+
.description('View plans and upgrade your memoir subscription')
|
|
285
|
+
.action(async () => {
|
|
286
|
+
try {
|
|
287
|
+
await upgradeCommand();
|
|
288
|
+
} catch (err) {
|
|
289
|
+
console.error(chalk.red('\n✖ Error:'), err.message);
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
|
|
260
294
|
program
|
|
261
295
|
.command('encrypt')
|
|
262
296
|
.description('Toggle E2E encryption for your backups')
|
|
@@ -432,6 +466,47 @@ profile
|
|
|
432
466
|
}
|
|
433
467
|
});
|
|
434
468
|
|
|
469
|
+
// Project tracker
|
|
470
|
+
const projects = program.command('projects').alias('p').description('Track and manage your projects');
|
|
471
|
+
|
|
472
|
+
projects
|
|
473
|
+
.command('list', { isDefault: true })
|
|
474
|
+
.alias('ls')
|
|
475
|
+
.description('List all projects with recent activity')
|
|
476
|
+
.option('--all', 'Show all projects (default: top 15)')
|
|
477
|
+
.option('-v, --verbose', 'Show more commits and todos')
|
|
478
|
+
.option('--json', 'Output as JSON')
|
|
479
|
+
.action(async (options) => {
|
|
480
|
+
try {
|
|
481
|
+
await projectsListCommand(options);
|
|
482
|
+
} catch (err) {
|
|
483
|
+
console.error(chalk.red('\n✖ Error:'), err.message);
|
|
484
|
+
process.exit(1);
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
projects
|
|
489
|
+
.command('todo <project> [text]')
|
|
490
|
+
.description('Add or manage todos for a project')
|
|
491
|
+
.option('--done <index>', 'Mark a todo as done by number')
|
|
492
|
+
.option('--clear', 'Clear all todos for this project')
|
|
493
|
+
.action(async (project, text, options) => {
|
|
494
|
+
try {
|
|
495
|
+
await projectsTodoCommand(project, text, options);
|
|
496
|
+
} catch (err) {
|
|
497
|
+
console.error(chalk.red('\n✖ Error:'), err.message);
|
|
498
|
+
process.exit(1);
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
|
|
502
|
+
program
|
|
503
|
+
.command('mcp')
|
|
504
|
+
.description('Start the MCP server (for Claude Code, Cursor, VS Code integration)')
|
|
505
|
+
.action(async () => {
|
|
506
|
+
// Import and run the MCP server directly
|
|
507
|
+
await import('../src/mcp.js');
|
|
508
|
+
});
|
|
509
|
+
|
|
435
510
|
program.hook('postAction', async () => {
|
|
436
511
|
await checkForUpdate();
|
|
437
512
|
});
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memoir-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Sync AI memory across devices. Back up and restore Claude, Gemini, Codex, Cursor, Copilot, Windsurf configs. Snapshot coding sessions and resume on another machine. Migrate instructions between AI assistants.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"memoir": "bin/memoir.js"
|
|
8
|
+
"memoir": "bin/memoir.js",
|
|
9
|
+
"memoir-mcp": "src/mcp.js"
|
|
9
10
|
},
|
|
10
11
|
"repository": {
|
|
11
12
|
"type": "git",
|
|
@@ -52,17 +53,21 @@
|
|
|
52
53
|
"context-sync",
|
|
53
54
|
"session-handoff",
|
|
54
55
|
"snapshot",
|
|
55
|
-
"resume"
|
|
56
|
+
"resume",
|
|
57
|
+
"mcp",
|
|
58
|
+
"mcp-server",
|
|
59
|
+
"model-context-protocol"
|
|
56
60
|
],
|
|
57
61
|
"author": "camgitt",
|
|
58
62
|
"license": "MIT",
|
|
59
63
|
"dependencies": {
|
|
64
|
+
"@modelcontextprotocol/sdk": "^1.28.0",
|
|
60
65
|
"boxen": "^7.1.1",
|
|
61
66
|
"chalk": "^5.3.0",
|
|
62
67
|
"commander": "^12.0.0",
|
|
63
68
|
"fs-extra": "^11.2.0",
|
|
64
69
|
"gradient-string": "^3.0.0",
|
|
65
70
|
"inquirer": "^9.2.15",
|
|
66
|
-
"ora": "^7.0.1"
|
|
71
|
+
"ora": "^7.0.1"
|
|
67
72
|
}
|
|
68
73
|
}
|