@hasna/contacts 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,2 @@
1
+ export declare function startServer(port: number): void;
2
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAsRA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAsE9C"}
@@ -0,0 +1,375 @@
1
+ export type EmailType = "work" | "personal" | "other";
2
+ export type PhoneType = "mobile" | "work" | "home" | "fax" | "whatsapp" | "other";
3
+ export type AddressType = "physical" | "mailing" | "billing" | "virtual" | "other";
4
+ export type SocialPlatform = "twitter" | "linkedin" | "github" | "instagram" | "telegram" | "discord" | "youtube" | "tiktok" | "bluesky" | "facebook" | "whatsapp" | "snapchat" | "reddit" | "other";
5
+ export type RelationshipType = "colleague" | "friend" | "family" | "reports_to" | "mentor" | "investor" | "partner" | "client" | "vendor" | "other";
6
+ export type ContactSource = "manual" | "import" | "linkedin" | "github" | "twitter" | "email" | "calendar" | "crm" | "other";
7
+ export interface Email {
8
+ id: string;
9
+ contact_id: string | null;
10
+ company_id: string | null;
11
+ address: string;
12
+ type: EmailType;
13
+ is_primary: boolean;
14
+ created_at: string;
15
+ }
16
+ export interface Phone {
17
+ id: string;
18
+ contact_id: string | null;
19
+ company_id: string | null;
20
+ number: string;
21
+ country_code: string | null;
22
+ type: PhoneType;
23
+ is_primary: boolean;
24
+ created_at: string;
25
+ }
26
+ export interface Address {
27
+ id: string;
28
+ contact_id: string | null;
29
+ company_id: string | null;
30
+ type: AddressType;
31
+ street: string | null;
32
+ city: string | null;
33
+ state: string | null;
34
+ zip: string | null;
35
+ country: string | null;
36
+ is_primary: boolean;
37
+ created_at: string;
38
+ }
39
+ export interface SocialProfile {
40
+ id: string;
41
+ contact_id: string | null;
42
+ company_id: string | null;
43
+ platform: SocialPlatform;
44
+ handle: string | null;
45
+ url: string | null;
46
+ is_primary: boolean;
47
+ created_at: string;
48
+ }
49
+ export interface Tag {
50
+ id: string;
51
+ name: string;
52
+ color: string;
53
+ description: string | null;
54
+ created_at: string;
55
+ }
56
+ export interface CreateTagInput {
57
+ name: string;
58
+ color?: string;
59
+ description?: string;
60
+ }
61
+ export interface UpdateTagInput {
62
+ name?: string;
63
+ color?: string;
64
+ description?: string | null;
65
+ }
66
+ export interface Contact {
67
+ id: string;
68
+ first_name: string;
69
+ last_name: string;
70
+ display_name: string;
71
+ nickname: string | null;
72
+ avatar_url: string | null;
73
+ notes: string | null;
74
+ birthday: string | null;
75
+ company_id: string | null;
76
+ job_title: string | null;
77
+ source: ContactSource;
78
+ custom_fields: Record<string, unknown>;
79
+ created_at: string;
80
+ updated_at: string;
81
+ }
82
+ export interface ContactWithDetails extends Contact {
83
+ emails: Email[];
84
+ phones: Phone[];
85
+ addresses: Address[];
86
+ social_profiles: SocialProfile[];
87
+ tags: Tag[];
88
+ company: Company | null;
89
+ }
90
+ export interface CreateContactInput {
91
+ first_name?: string;
92
+ last_name?: string;
93
+ display_name?: string;
94
+ nickname?: string;
95
+ avatar_url?: string;
96
+ notes?: string;
97
+ birthday?: string;
98
+ company_id?: string;
99
+ job_title?: string;
100
+ source?: ContactSource;
101
+ custom_fields?: Record<string, unknown>;
102
+ emails?: CreateEmailInput[];
103
+ phones?: CreatePhoneInput[];
104
+ addresses?: CreateAddressInput[];
105
+ social_profiles?: CreateSocialProfileInput[];
106
+ tag_ids?: string[];
107
+ }
108
+ export interface UpdateContactInput {
109
+ first_name?: string;
110
+ last_name?: string;
111
+ display_name?: string;
112
+ nickname?: string | null;
113
+ avatar_url?: string | null;
114
+ notes?: string | null;
115
+ birthday?: string | null;
116
+ company_id?: string | null;
117
+ job_title?: string | null;
118
+ source?: ContactSource;
119
+ custom_fields?: Record<string, unknown>;
120
+ }
121
+ export interface ContactListOptions {
122
+ limit?: number;
123
+ offset?: number;
124
+ company_id?: string;
125
+ tag_id?: string;
126
+ source?: ContactSource;
127
+ order_by?: "display_name" | "created_at" | "updated_at";
128
+ order_dir?: "asc" | "desc";
129
+ }
130
+ export interface Company {
131
+ id: string;
132
+ name: string;
133
+ domain: string | null;
134
+ logo_url: string | null;
135
+ description: string | null;
136
+ industry: string | null;
137
+ size: string | null;
138
+ founded_year: number | null;
139
+ notes: string | null;
140
+ custom_fields: Record<string, unknown>;
141
+ created_at: string;
142
+ updated_at: string;
143
+ }
144
+ export interface CompanyWithDetails extends Company {
145
+ emails: Email[];
146
+ phones: Phone[];
147
+ addresses: Address[];
148
+ social_profiles: SocialProfile[];
149
+ tags: Tag[];
150
+ employee_count: number;
151
+ }
152
+ export interface CreateCompanyInput {
153
+ name: string;
154
+ domain?: string;
155
+ logo_url?: string;
156
+ description?: string;
157
+ industry?: string;
158
+ size?: string;
159
+ founded_year?: number;
160
+ notes?: string;
161
+ custom_fields?: Record<string, unknown>;
162
+ emails?: CreateEmailInput[];
163
+ phones?: CreatePhoneInput[];
164
+ addresses?: CreateAddressInput[];
165
+ social_profiles?: CreateSocialProfileInput[];
166
+ tag_ids?: string[];
167
+ }
168
+ export interface UpdateCompanyInput {
169
+ name?: string;
170
+ domain?: string | null;
171
+ logo_url?: string | null;
172
+ description?: string | null;
173
+ industry?: string | null;
174
+ size?: string | null;
175
+ founded_year?: number | null;
176
+ notes?: string | null;
177
+ custom_fields?: Record<string, unknown>;
178
+ }
179
+ export interface CompanyListOptions {
180
+ limit?: number;
181
+ offset?: number;
182
+ industry?: string;
183
+ tag_id?: string;
184
+ order_by?: "name" | "created_at" | "updated_at";
185
+ order_dir?: "asc" | "desc";
186
+ }
187
+ export interface CreateEmailInput {
188
+ address: string;
189
+ type?: EmailType;
190
+ is_primary?: boolean;
191
+ }
192
+ export interface CreatePhoneInput {
193
+ number: string;
194
+ country_code?: string;
195
+ type?: PhoneType;
196
+ is_primary?: boolean;
197
+ }
198
+ export interface CreateAddressInput {
199
+ type?: AddressType;
200
+ street?: string;
201
+ city?: string;
202
+ state?: string;
203
+ zip?: string;
204
+ country?: string;
205
+ is_primary?: boolean;
206
+ }
207
+ export interface CreateSocialProfileInput {
208
+ platform: SocialPlatform;
209
+ handle?: string;
210
+ url?: string;
211
+ is_primary?: boolean;
212
+ }
213
+ export interface ContactRelationship {
214
+ id: string;
215
+ contact_a_id: string;
216
+ contact_b_id: string;
217
+ relationship_type: RelationshipType;
218
+ notes: string | null;
219
+ created_at: string;
220
+ }
221
+ export interface CreateRelationshipInput {
222
+ contact_a_id: string;
223
+ contact_b_id: string;
224
+ relationship_type: RelationshipType;
225
+ notes?: string;
226
+ }
227
+ export interface ActivityLog {
228
+ id: string;
229
+ contact_id: string | null;
230
+ company_id: string | null;
231
+ action: string;
232
+ details: string | null;
233
+ created_at: string;
234
+ }
235
+ export interface CreateActivityInput {
236
+ contact_id?: string;
237
+ company_id?: string;
238
+ action: string;
239
+ details?: string;
240
+ }
241
+ export interface Webhook {
242
+ id: string;
243
+ url: string;
244
+ events: string[];
245
+ secret: string | null;
246
+ active: boolean;
247
+ created_at: string;
248
+ }
249
+ export interface CreateWebhookInput {
250
+ url: string;
251
+ events?: string[];
252
+ secret?: string;
253
+ }
254
+ export interface UpdateWebhookInput {
255
+ url?: string;
256
+ events?: string[];
257
+ secret?: string | null;
258
+ active?: boolean;
259
+ }
260
+ export interface ContactRow {
261
+ id: string;
262
+ first_name: string;
263
+ last_name: string;
264
+ display_name: string;
265
+ nickname: string | null;
266
+ avatar_url: string | null;
267
+ notes: string | null;
268
+ birthday: string | null;
269
+ company_id: string | null;
270
+ job_title: string | null;
271
+ source: string;
272
+ custom_fields: string;
273
+ created_at: string;
274
+ updated_at: string;
275
+ }
276
+ export interface CompanyRow {
277
+ id: string;
278
+ name: string;
279
+ domain: string | null;
280
+ logo_url: string | null;
281
+ description: string | null;
282
+ industry: string | null;
283
+ size: string | null;
284
+ founded_year: number | null;
285
+ notes: string | null;
286
+ custom_fields: string;
287
+ created_at: string;
288
+ updated_at: string;
289
+ }
290
+ export interface EmailRow {
291
+ id: string;
292
+ contact_id: string | null;
293
+ company_id: string | null;
294
+ address: string;
295
+ type: string;
296
+ is_primary: number;
297
+ created_at: string;
298
+ }
299
+ export interface PhoneRow {
300
+ id: string;
301
+ contact_id: string | null;
302
+ company_id: string | null;
303
+ number: string;
304
+ country_code: string | null;
305
+ type: string;
306
+ is_primary: number;
307
+ created_at: string;
308
+ }
309
+ export interface AddressRow {
310
+ id: string;
311
+ contact_id: string | null;
312
+ company_id: string | null;
313
+ type: string;
314
+ street: string | null;
315
+ city: string | null;
316
+ state: string | null;
317
+ zip: string | null;
318
+ country: string | null;
319
+ is_primary: number;
320
+ created_at: string;
321
+ }
322
+ export interface SocialProfileRow {
323
+ id: string;
324
+ contact_id: string | null;
325
+ company_id: string | null;
326
+ platform: string;
327
+ handle: string | null;
328
+ url: string | null;
329
+ is_primary: number;
330
+ created_at: string;
331
+ }
332
+ export interface TagRow {
333
+ id: string;
334
+ name: string;
335
+ color: string;
336
+ description: string | null;
337
+ created_at: string;
338
+ }
339
+ export interface RelationshipRow {
340
+ id: string;
341
+ contact_a_id: string;
342
+ contact_b_id: string;
343
+ relationship_type: string;
344
+ notes: string | null;
345
+ created_at: string;
346
+ }
347
+ export interface ActivityRow {
348
+ id: string;
349
+ contact_id: string | null;
350
+ company_id: string | null;
351
+ action: string;
352
+ details: string | null;
353
+ created_at: string;
354
+ }
355
+ export interface WebhookRow {
356
+ id: string;
357
+ url: string;
358
+ events: string;
359
+ secret: string | null;
360
+ active: number;
361
+ created_at: string;
362
+ }
363
+ export declare class ContactNotFoundError extends Error {
364
+ constructor(id: string);
365
+ }
366
+ export declare class CompanyNotFoundError extends Error {
367
+ constructor(id: string);
368
+ }
369
+ export declare class TagNotFoundError extends Error {
370
+ constructor(id: string);
371
+ }
372
+ export declare class DuplicateTagNameError extends Error {
373
+ constructor(name: string);
374
+ }
375
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC;AAElF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnF,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,UAAU,GACV,QAAQ,GACR,WAAW,GACX,UAAU,GACV,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,SAAS,GACT,OAAO,GACP,UAAU,GACV,KAAK,GACL,OAAO,CAAC;AAIZ,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAID,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,eAAe,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;IACxD,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAID,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,eAAe,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;IAChD,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAID,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,EAAE,EAAE,MAAM;CAIvB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,EAAE,EAAE,MAAM;CAIvB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,EAAE,EAAE,MAAM;CAIvB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,IAAI,EAAE,MAAM;CAIzB"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@hasna/contacts",
3
+ "version": "0.1.0",
4
+ "description": "Contact management for AI coding agents — CLI + MCP + Web",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "contacts": "dist/cli/index.js",
10
+ "contacts-mcp": "dist/mcp/index.js",
11
+ "contacts-serve": "dist/server/index.js"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ }
18
+ },
19
+ "files": ["dist", "dashboard/dist", "LICENSE", "README.md"],
20
+ "scripts": {
21
+ "build": "cd dashboard && bun run build && cd .. && bun build src/cli/index.tsx --outdir dist/cli --target bun --external ink --external react --external chalk --external @modelcontextprotocol/sdk && bun build src/mcp/index.ts --outdir dist/mcp --target bun --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun && bun build src/index.ts --outdir dist --target bun && tsc --emitDeclarationOnly --outDir dist",
22
+ "build:core": "bun build src/cli/index.tsx --outdir dist/cli --target bun --external ink --external react --external chalk --external @modelcontextprotocol/sdk && bun build src/mcp/index.ts --outdir dist/mcp --target bun --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun && bun build src/index.ts --outdir dist --target bun && tsc --emitDeclarationOnly --outDir dist",
23
+ "typecheck": "tsc --noEmit",
24
+ "test": "bun test",
25
+ "dev:cli": "bun run src/cli/index.tsx",
26
+ "dev:mcp": "bun run src/mcp/index.ts",
27
+ "dev:serve": "bun run src/server/index.ts",
28
+ "prepublishOnly": "bun run build"
29
+ },
30
+ "keywords": ["contacts", "mcp", "ai", "coding-agent", "claude", "cli", "rolodex", "address-book"],
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/hasna/contacts.git"
37
+ },
38
+ "homepage": "https://github.com/hasna/contacts",
39
+ "bugs": {
40
+ "url": "https://github.com/hasna/contacts/issues"
41
+ },
42
+ "engines": {
43
+ "bun": ">=1.0.0"
44
+ },
45
+ "author": "Andrei Hasna <andrei@hasna.com>",
46
+ "license": "Apache-2.0",
47
+ "dependencies": {
48
+ "@modelcontextprotocol/sdk": "^1.12.1",
49
+ "chalk": "^5.4.1",
50
+ "commander": "^13.1.0",
51
+ "ink": "^5.2.0",
52
+ "react": "^18.3.1",
53
+ "zod": "^3.24.2"
54
+ },
55
+ "devDependencies": {
56
+ "@types/bun": "^1.2.4",
57
+ "@types/react": "^18.3.18",
58
+ "typescript": "^5.7.3"
59
+ }
60
+ }