@innerstacklabs/neuralingual-mcp 0.1.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.
@@ -0,0 +1,254 @@
1
+ import type { ApiEnv, RenderConfigInput, RenderConfig, RenderStatus, SyncAffirmationsInput, SyncAffirmationsResult } from './types.js';
2
+ interface UserDto {
3
+ id: string;
4
+ email: string | null;
5
+ displayName: string | null;
6
+ authProvider: string;
7
+ tonePreference: string;
8
+ completedOnboarding: boolean;
9
+ subscriptionTier: string | null;
10
+ subscriptionStatus: string | null;
11
+ subscriptionExpiresAt: string | null;
12
+ creditBalance: number;
13
+ subscriptionCredits: number;
14
+ purchasedCredits: number;
15
+ creditsResetAt: string | null;
16
+ role: string;
17
+ createdAt?: string;
18
+ }
19
+ interface LibraryItem {
20
+ intent: {
21
+ id: string;
22
+ title: string;
23
+ emoji: string | null;
24
+ sessionContext: string;
25
+ tonePreference: string | null;
26
+ createdAt: string;
27
+ updatedAt: string;
28
+ };
29
+ latestAffirmationSet: {
30
+ id: string;
31
+ intentId: string;
32
+ source: string;
33
+ createdAt: string;
34
+ affirmationCount: number;
35
+ } | null;
36
+ latestRenderConfig: unknown | null;
37
+ latestRenderJob: {
38
+ id: string;
39
+ status: string;
40
+ } | null;
41
+ configs?: Array<{
42
+ renderConfig: unknown;
43
+ latestRenderJob: {
44
+ id: string;
45
+ status: string;
46
+ } | null;
47
+ }>;
48
+ }
49
+ interface IntentDetail {
50
+ id: string;
51
+ title: string;
52
+ emoji: string | null;
53
+ rawText: string;
54
+ tonePreference: string | null;
55
+ sessionContext: string;
56
+ shareToken: string | null;
57
+ sharedAt: string | null;
58
+ createdAt: string;
59
+ updatedAt: string;
60
+ affirmationSets: Array<{
61
+ id: string;
62
+ source: string;
63
+ createdAt: string;
64
+ affirmations: Array<{
65
+ id: string;
66
+ text: string;
67
+ tone: string;
68
+ isEnabled: boolean;
69
+ }>;
70
+ }>;
71
+ renderConfigs: Array<{
72
+ id: string;
73
+ affirmationSetId: string;
74
+ voiceId: string | null;
75
+ voiceProvider: string;
76
+ sessionContext: string;
77
+ paceWpm: number;
78
+ durationSeconds: number;
79
+ backgroundAudioPath: string | null;
80
+ backgroundVolume: number;
81
+ affirmationRepeatCount: number;
82
+ includePreamble: boolean;
83
+ playAll: boolean;
84
+ createdAt: string;
85
+ updatedAt: string;
86
+ renderJobs?: Array<{
87
+ id: string;
88
+ status: string;
89
+ progress: number;
90
+ errorMessage: string | null;
91
+ createdAt: string;
92
+ }>;
93
+ }>;
94
+ }
95
+ interface UpdateIntentInput {
96
+ title?: string;
97
+ emoji?: string | null;
98
+ intentText?: string;
99
+ tonePreference?: string | null;
100
+ }
101
+ interface GenerateResult {
102
+ intent: {
103
+ id: string;
104
+ title: string;
105
+ emoji: string | null;
106
+ rawText: string;
107
+ sessionContext: string;
108
+ };
109
+ affirmationSet: {
110
+ id: string;
111
+ affirmations: Array<{
112
+ id: string;
113
+ text: string;
114
+ tone: string;
115
+ isEnabled: boolean;
116
+ }>;
117
+ };
118
+ }
119
+ interface RenderJob {
120
+ id: string;
121
+ renderConfigId: string;
122
+ status: string;
123
+ progress: number;
124
+ outputKey: string | null;
125
+ errorMessage: string | null;
126
+ createdAt: string;
127
+ updatedAt: string;
128
+ }
129
+ interface CreditTransaction {
130
+ id: string;
131
+ amount: number;
132
+ type: string;
133
+ createdAt: string;
134
+ balanceAfter: number;
135
+ }
136
+ interface ShareResult {
137
+ shareToken: string;
138
+ shareUrl: string;
139
+ }
140
+ interface ContextSettings {
141
+ sessionContext: string;
142
+ paceWpm: number | null;
143
+ pauseMs: number | null;
144
+ durationMinutes: number | null;
145
+ repeatCount: number | null;
146
+ backgroundVolume: number | null;
147
+ }
148
+ /**
149
+ * HTTP client for the Neuralingual user API.
150
+ * Authenticates via X-Access-Token header (JWT).
151
+ * Handles automatic token refresh on 401.
152
+ */
153
+ export declare class UserApiClient {
154
+ private baseUrl;
155
+ private env;
156
+ private accessToken;
157
+ private refreshToken;
158
+ constructor(baseUrl: string, env: ApiEnv, accessToken: string, refreshToken: string);
159
+ /** Create a client from stored auth. Throws if not logged in. */
160
+ static fromAuth(): UserApiClient;
161
+ /** Login with Apple identity token (from browser-based Sign In with Apple). */
162
+ static loginWithApple(env: ApiEnv, idToken: string, displayName?: string): Promise<{
163
+ client: UserApiClient;
164
+ user: UserDto;
165
+ }>;
166
+ private request;
167
+ /** Request that returns no body (for DELETE 204 responses). */
168
+ private requestVoid;
169
+ /** Request that returns raw bytes (for audio download). */
170
+ private requestBuffer;
171
+ private tryRefresh;
172
+ getMe(): Promise<{
173
+ user: UserDto;
174
+ }>;
175
+ logout(): Promise<void>;
176
+ getLibrary(): Promise<{
177
+ items: LibraryItem[];
178
+ }>;
179
+ createAndGenerate(intentText: string, tonePreference?: string): Promise<GenerateResult>;
180
+ getIntent(id: string): Promise<{
181
+ intent: IntentDetail | null;
182
+ }>;
183
+ updateIntent(id: string, input: UpdateIntentInput): Promise<{
184
+ intent: {
185
+ id: string;
186
+ title: string;
187
+ emoji: string | null;
188
+ };
189
+ }>;
190
+ configureRender(intentId: string, input: RenderConfigInput): Promise<{
191
+ renderConfig: RenderConfig;
192
+ }>;
193
+ startRender(intentId: string): Promise<{
194
+ jobId: string;
195
+ status: string;
196
+ }>;
197
+ getRenderStatus(intentId: string): Promise<RenderStatus>;
198
+ getRenderJob(jobId: string): Promise<{
199
+ renderJob: RenderJob;
200
+ }>;
201
+ createRenderJob(renderConfigId: string): Promise<{
202
+ renderJob: RenderJob;
203
+ }>;
204
+ getAudio(renderJobId: string): Promise<Buffer>;
205
+ getCreditTransactions(take?: number): Promise<{
206
+ transactions: CreditTransaction[];
207
+ nextCursor?: string;
208
+ }>;
209
+ shareIntent(intentId: string): Promise<ShareResult>;
210
+ unshareIntent(intentId: string): Promise<void>;
211
+ deleteIntent(intentId: string): Promise<void>;
212
+ updateProfile(data: {
213
+ displayName?: string;
214
+ tonePreference?: string;
215
+ }): Promise<{
216
+ user: UserDto;
217
+ }>;
218
+ getContextSettings(): Promise<{
219
+ settings: ContextSettings[];
220
+ }>;
221
+ updateContextSettings(context: string, data: Partial<Omit<ContextSettings, 'sessionContext'>>): Promise<{
222
+ settings: ContextSettings;
223
+ }>;
224
+ deleteContextSettings(context: string): Promise<void>;
225
+ syncAffirmations(intentId: string, input: SyncAffirmationsInput): Promise<SyncAffirmationsResult>;
226
+ createManualIntent(input: {
227
+ title: string;
228
+ rawText: string;
229
+ tonePreference?: string | null;
230
+ sessionContext?: string | undefined;
231
+ affirmations: Array<{
232
+ text: string;
233
+ }>;
234
+ }): Promise<{
235
+ intent: {
236
+ id: string;
237
+ title: string;
238
+ emoji: string | null;
239
+ rawText: string;
240
+ sessionContext: string;
241
+ };
242
+ affirmationSet: {
243
+ id: string;
244
+ affirmations: Array<{
245
+ id: string;
246
+ text: string;
247
+ tone: string;
248
+ isEnabled: boolean;
249
+ }>;
250
+ };
251
+ }>;
252
+ }
253
+ export {};
254
+ //# sourceMappingURL=user-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-client.d.ts","sourceRoot":"","sources":["../src/user-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ import { API_BASE_URLS } from './types.js';
2
+ import { loadAuth, saveAuth, clearAuth } from './auth-store.js';
3
+ /**
4
+ * HTTP client for the Neuralingual user API.
5
+ * Authenticates via X-Access-Token header (JWT).
6
+ * Handles automatic token refresh on 401.
7
+ */
8
+ export class UserApiClient {
9
+ baseUrl;
10
+ env;
11
+ accessToken;
12
+ refreshToken;
13
+ constructor(baseUrl, env, accessToken, refreshToken) {
14
+ this.baseUrl = baseUrl;
15
+ this.env = env;
16
+ this.accessToken = accessToken;
17
+ this.refreshToken = refreshToken;
18
+ }
19
+ /** Create a client from stored auth. Throws if not logged in. */
20
+ static fromAuth() {
21
+ const auth = loadAuth();
22
+ if (!auth) {
23
+ throw new Error('Not logged in. Run `nl login` first.');
24
+ }
25
+ return new UserApiClient(API_BASE_URLS[auth.env], auth.env, auth.accessToken, auth.refreshToken);
26
+ }
27
+ /** Login with Apple identity token (from browser-based Sign In with Apple). */
28
+ static async loginWithApple(env, idToken, displayName) {
29
+ const baseUrl = API_BASE_URLS[env];
30
+ const body = { idToken };
31
+ if (displayName)
32
+ body['displayName'] = displayName;
33
+ const res = await fetch(`${baseUrl}/auth/apple/callback`, {
34
+ method: 'POST',
35
+ headers: { 'Content-Type': 'application/json' },
36
+ body: JSON.stringify(body),
37
+ });
38
+ if (!res.ok) {
39
+ const data = await res.json().catch(() => null);
40
+ const msg = data && typeof data['error'] === 'string' ? data['error'] : `Login failed (HTTP ${res.status})`;
41
+ throw new Error(msg);
42
+ }
43
+ const result = await res.json();
44
+ saveAuth({
45
+ env,
46
+ accessToken: result.accessToken,
47
+ refreshToken: result.refreshToken,
48
+ userId: result.user.id,
49
+ email: result.user.email,
50
+ });
51
+ const client = new UserApiClient(baseUrl, env, result.accessToken, result.refreshToken);
52
+ return { client, user: result.user };
53
+ }
54
+ async request(method, path, body) {
55
+ const doRequest = async (token) => {
56
+ const url = `${this.baseUrl}${path}`;
57
+ const headers = {
58
+ 'X-Access-Token': token,
59
+ };
60
+ if (body !== undefined) {
61
+ headers['Content-Type'] = 'application/json';
62
+ }
63
+ const init = { method, headers };
64
+ if (body !== undefined) {
65
+ init.body = JSON.stringify(body);
66
+ }
67
+ return fetch(url, init);
68
+ };
69
+ let res = await doRequest(this.accessToken);
70
+ // Auto-refresh on 401
71
+ if (res.status === 401) {
72
+ const refreshed = await this.tryRefresh();
73
+ if (refreshed) {
74
+ res = await doRequest(this.accessToken);
75
+ }
76
+ }
77
+ if (!res.ok) {
78
+ const data = await res.json().catch(() => null);
79
+ const errMsg = data && typeof data['error'] === 'string' ? data['error'] : `HTTP ${res.status}`;
80
+ throw new Error(errMsg);
81
+ }
82
+ return res.json();
83
+ }
84
+ /** Request that returns no body (for DELETE 204 responses). */
85
+ async requestVoid(method, path) {
86
+ const doRequest = async (token) => {
87
+ const url = `${this.baseUrl}${path}`;
88
+ return fetch(url, {
89
+ method,
90
+ headers: { 'X-Access-Token': token },
91
+ });
92
+ };
93
+ let res = await doRequest(this.accessToken);
94
+ if (res.status === 401) {
95
+ const refreshed = await this.tryRefresh();
96
+ if (refreshed) {
97
+ res = await doRequest(this.accessToken);
98
+ }
99
+ }
100
+ if (!res.ok) {
101
+ const text = await res.text();
102
+ let errMsg = `HTTP ${res.status}`;
103
+ try {
104
+ const data = JSON.parse(text);
105
+ if (typeof data['error'] === 'string')
106
+ errMsg = data['error'];
107
+ }
108
+ catch { /* use default */ }
109
+ throw new Error(errMsg);
110
+ }
111
+ }
112
+ /** Request that returns raw bytes (for audio download). */
113
+ async requestBuffer(method, path) {
114
+ const doRequest = async (token) => {
115
+ const url = `${this.baseUrl}${path}`;
116
+ return fetch(url, {
117
+ method,
118
+ headers: { 'X-Access-Token': token },
119
+ });
120
+ };
121
+ let res = await doRequest(this.accessToken);
122
+ if (res.status === 401) {
123
+ const refreshed = await this.tryRefresh();
124
+ if (refreshed) {
125
+ res = await doRequest(this.accessToken);
126
+ }
127
+ }
128
+ if (!res.ok) {
129
+ const text = await res.text();
130
+ throw new Error(`Download failed (${res.status}): ${text}`);
131
+ }
132
+ const ab = await res.arrayBuffer();
133
+ return Buffer.from(ab);
134
+ }
135
+ async tryRefresh() {
136
+ try {
137
+ const res = await fetch(`${this.baseUrl}/auth/refresh`, {
138
+ method: 'POST',
139
+ headers: { 'Content-Type': 'application/json' },
140
+ body: JSON.stringify({ refreshToken: this.refreshToken }),
141
+ });
142
+ if (!res.ok)
143
+ return false;
144
+ const data = await res.json();
145
+ this.accessToken = data.accessToken;
146
+ this.refreshToken = data.refreshToken;
147
+ // Persist the new tokens
148
+ const auth = loadAuth();
149
+ saveAuth({
150
+ env: this.env,
151
+ accessToken: data.accessToken,
152
+ refreshToken: data.refreshToken,
153
+ userId: auth?.userId ?? data.user.id,
154
+ email: auth?.email ?? data.user.email,
155
+ });
156
+ return true;
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ }
162
+ // --- Auth ---
163
+ async getMe() {
164
+ return this.request('GET', '/auth/me');
165
+ }
166
+ async logout() {
167
+ try {
168
+ await this.request('POST', '/auth/logout');
169
+ }
170
+ catch {
171
+ // Best-effort — clear local tokens regardless
172
+ }
173
+ clearAuth();
174
+ }
175
+ // --- Library ---
176
+ async getLibrary() {
177
+ return this.request('GET', '/library');
178
+ }
179
+ // --- Intents ---
180
+ async createAndGenerate(intentText, tonePreference) {
181
+ const body = { intentText };
182
+ if (tonePreference)
183
+ body['tonePreference'] = tonePreference;
184
+ return this.request('POST', '/affirmations/generate', body);
185
+ }
186
+ async getIntent(id) {
187
+ return this.request('GET', `/intents/${encodeURIComponent(id)}`);
188
+ }
189
+ async updateIntent(id, input) {
190
+ return this.request('PATCH', `/intents/${encodeURIComponent(id)}`, input);
191
+ }
192
+ // --- Render ---
193
+ async configureRender(intentId, input) {
194
+ return this.request('PUT', `/intents/${encodeURIComponent(intentId)}/render-config`, input);
195
+ }
196
+ async startRender(intentId) {
197
+ return this.request('POST', `/intents/${encodeURIComponent(intentId)}/render`);
198
+ }
199
+ async getRenderStatus(intentId) {
200
+ return this.request('GET', `/intents/${encodeURIComponent(intentId)}/render-status`);
201
+ }
202
+ async getRenderJob(jobId) {
203
+ return this.request('GET', `/render-jobs/${encodeURIComponent(jobId)}`);
204
+ }
205
+ async createRenderJob(renderConfigId) {
206
+ return this.request('POST', '/render-jobs', { renderConfigId });
207
+ }
208
+ async getAudio(renderJobId) {
209
+ return this.requestBuffer('GET', `/render-jobs/${encodeURIComponent(renderJobId)}/audio`);
210
+ }
211
+ // --- Credits ---
212
+ async getCreditTransactions(take = 20) {
213
+ return this.request('GET', `/credit-transactions?take=${take}`);
214
+ }
215
+ // --- Share ---
216
+ async shareIntent(intentId) {
217
+ return this.request('POST', `/intents/${encodeURIComponent(intentId)}/share`);
218
+ }
219
+ async unshareIntent(intentId) {
220
+ return this.requestVoid('DELETE', `/intents/${encodeURIComponent(intentId)}/share`);
221
+ }
222
+ // --- Delete ---
223
+ async deleteIntent(intentId) {
224
+ return this.requestVoid('DELETE', `/intents/${encodeURIComponent(intentId)}`);
225
+ }
226
+ // --- Profile ---
227
+ async updateProfile(data) {
228
+ return this.request('PATCH', '/auth/me', data);
229
+ }
230
+ // --- Context Settings ---
231
+ async getContextSettings() {
232
+ return this.request('GET', '/context-settings');
233
+ }
234
+ async updateContextSettings(context, data) {
235
+ return this.request('PATCH', `/context-settings/${encodeURIComponent(context)}`, data);
236
+ }
237
+ async deleteContextSettings(context) {
238
+ return this.requestVoid('DELETE', `/context-settings/${encodeURIComponent(context)}`);
239
+ }
240
+ // --- Affirmation sync ---
241
+ async syncAffirmations(intentId, input) {
242
+ return this.request('PUT', `/intents/${encodeURIComponent(intentId)}/affirmations/sync`, input);
243
+ }
244
+ // --- Manual intent creation (with affirmations) ---
245
+ async createManualIntent(input) {
246
+ return this.request('POST', '/intents/manual', input);
247
+ }
248
+ }
249
+ //# sourceMappingURL=user-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-client.js","sourceRoot":"","sources":["../src/user-client.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@innerstacklabs/neuralingual-mcp",
3
+ "version": "0.1.0",
4
+ "description": "Neuralingual CLI — AI-powered affirmation practice sets",
5
+ "type": "module",
6
+ "bin": {
7
+ "neuralingual": "./dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist/"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc -p tsconfig.json && node scripts/postbuild.mjs",
14
+ "typecheck": "tsc -p tsconfig.json --noEmit"
15
+ },
16
+ "dependencies": {
17
+ "commander": "^14.0.0",
18
+ "yaml": "^2.8.3",
19
+ "zod": "^4.3.6"
20
+ },
21
+ "engines": {
22
+ "node": "^20.20.0 || ^22.22.0 || >=24.0.0"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/innerstacklabs/neuralingual-mcp.git"
27
+ },
28
+ "keywords": [
29
+ "neuralingual",
30
+ "mcp",
31
+ "affirmations",
32
+ "ai",
33
+ "claude"
34
+ ],
35
+ "license": "MIT",
36
+ "homepage": "https://github.com/innerstacklabs/neuralingual-mcp#readme",
37
+ "devDependencies": {
38
+ "@types/node": "^22.19.17",
39
+ "typescript": "~5.8.0"
40
+ }
41
+ }