@hasna/calendar 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,5 @@
1
+ export declare function json(data: unknown, status?: number): Response;
2
+ export declare function error(message: string, status?: number): Response;
3
+ export declare function readBody(req: Request): Promise<Record<string, unknown>>;
4
+ export declare function serve(port: number): Bun.Server<undefined>;
5
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAWA,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,QAAQ,CAK1D;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,QAAQ,CAE7D;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAM7E;AAID,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,yBAiNjC"}
@@ -0,0 +1,243 @@
1
+ export declare const ORG_ROLES: readonly ["admin", "member", "service"];
2
+ export type OrgRole = (typeof ORG_ROLES)[number];
3
+ export interface Org {
4
+ id: string;
5
+ name: string;
6
+ slug: string;
7
+ description: string | null;
8
+ metadata: Record<string, unknown>;
9
+ created_at: string;
10
+ updated_at: string;
11
+ }
12
+ export interface CreateOrgInput {
13
+ name: string;
14
+ slug?: string;
15
+ description?: string;
16
+ metadata?: Record<string, unknown>;
17
+ }
18
+ export interface UpdateOrgInput {
19
+ name?: string;
20
+ description?: string;
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ export type AgentStatus = "active" | "archived";
24
+ export interface Agent {
25
+ id: string;
26
+ name: string;
27
+ description: string | null;
28
+ role: string | null;
29
+ title: string | null;
30
+ level: string | null;
31
+ capabilities: string[];
32
+ status: AgentStatus;
33
+ metadata: Record<string, unknown>;
34
+ created_at: string;
35
+ last_seen_at: string;
36
+ session_id: string | null;
37
+ working_dir: string | null;
38
+ active_org_id: string | null;
39
+ }
40
+ export interface AgentRow {
41
+ id: string;
42
+ name: string;
43
+ description: string | null;
44
+ role: string | null;
45
+ title: string | null;
46
+ level: string | null;
47
+ capabilities: string | null;
48
+ status: string;
49
+ metadata: string | null;
50
+ created_at: string;
51
+ last_seen_at: string;
52
+ session_id: string | null;
53
+ working_dir: string | null;
54
+ active_org_id: string | null;
55
+ }
56
+ export interface RegisterAgentInput {
57
+ name: string;
58
+ description?: string;
59
+ role?: string;
60
+ title?: string;
61
+ level?: string;
62
+ capabilities?: string[];
63
+ metadata?: Record<string, unknown>;
64
+ session_id?: string;
65
+ working_dir?: string;
66
+ org_id?: string;
67
+ force?: boolean;
68
+ }
69
+ export declare const CALENDAR_VISIBILITY: readonly ["public", "org", "private"];
70
+ export type CalendarVisibility = (typeof CALENDAR_VISIBILITY)[number];
71
+ export interface Calendar {
72
+ id: string;
73
+ org_id: string;
74
+ owner_id: string | null;
75
+ slug: string;
76
+ name: string;
77
+ description: string | null;
78
+ color: string | null;
79
+ timezone: string;
80
+ visibility: CalendarVisibility;
81
+ metadata: Record<string, unknown>;
82
+ created_at: string;
83
+ updated_at: string;
84
+ }
85
+ export interface CreateCalendarInput {
86
+ org_id: string;
87
+ owner_id?: string;
88
+ name: string;
89
+ slug?: string;
90
+ description?: string;
91
+ color?: string;
92
+ timezone?: string;
93
+ visibility?: CalendarVisibility;
94
+ metadata?: Record<string, unknown>;
95
+ }
96
+ export interface UpdateCalendarInput {
97
+ name?: string;
98
+ description?: string;
99
+ color?: string;
100
+ timezone?: string;
101
+ visibility?: CalendarVisibility;
102
+ metadata?: Record<string, unknown>;
103
+ }
104
+ export declare const EVENT_STATUSES: readonly ["tentative", "confirmed", "cancelled"];
105
+ export type EventStatus = (typeof EVENT_STATUSES)[number];
106
+ export declare const EVENT_BUSY_TYPES: readonly ["busy", "free", "out_of_office"];
107
+ export type EventBusyType = (typeof EVENT_BUSY_TYPES)[number];
108
+ export declare const EVENT_VISIBILITY: readonly ["default", "private", "confidential"];
109
+ export type EventVisibility = (typeof EVENT_VISIBILITY)[number];
110
+ export interface Event {
111
+ id: string;
112
+ calendar_id: string;
113
+ org_id: string;
114
+ title: string;
115
+ description: string | null;
116
+ location: string | null;
117
+ start_at: string;
118
+ end_at: string;
119
+ all_day: boolean;
120
+ timezone: string;
121
+ status: EventStatus;
122
+ busy_type: EventBusyType;
123
+ visibility: EventVisibility;
124
+ recurrence_rule: string | null;
125
+ recurrence_exception_dates: string[] | null;
126
+ source_task_id: string | null;
127
+ created_by: string | null;
128
+ metadata: Record<string, unknown>;
129
+ created_at: string;
130
+ updated_at: string;
131
+ }
132
+ export interface CreateEventInput {
133
+ calendar_id: string;
134
+ org_id: string;
135
+ title: string;
136
+ description?: string;
137
+ location?: string;
138
+ start_at: string;
139
+ end_at: string;
140
+ all_day?: boolean;
141
+ timezone?: string;
142
+ status?: EventStatus;
143
+ busy_type?: EventBusyType;
144
+ visibility?: EventVisibility;
145
+ recurrence_rule?: string;
146
+ recurrence_exception_dates?: string[];
147
+ source_task_id?: string;
148
+ created_by?: string;
149
+ metadata?: Record<string, unknown>;
150
+ }
151
+ export interface UpdateEventInput {
152
+ title?: string;
153
+ description?: string;
154
+ location?: string;
155
+ start_at?: string;
156
+ end_at?: string;
157
+ all_day?: boolean;
158
+ timezone?: string;
159
+ status?: EventStatus;
160
+ busy_type?: EventBusyType;
161
+ visibility?: EventVisibility;
162
+ recurrence_rule?: string | null;
163
+ recurrence_exception_dates?: string[] | null;
164
+ source_task_id?: string | null;
165
+ metadata?: Record<string, unknown>;
166
+ }
167
+ export declare const ATTENDEE_STATUSES: readonly ["needsAction", "accepted", "declined", "tentative"];
168
+ export type AttendeeStatus = (typeof ATTENDEE_STATUSES)[number];
169
+ export interface EventAttendee {
170
+ id: string;
171
+ event_id: string;
172
+ agent_id: string | null;
173
+ display_name: string | null;
174
+ email: string | null;
175
+ status: AttendeeStatus;
176
+ required: boolean;
177
+ response_comment: string | null;
178
+ responded_at: string | null;
179
+ created_at: string;
180
+ }
181
+ export interface CreateAttendeeInput {
182
+ event_id: string;
183
+ agent_id?: string;
184
+ display_name?: string;
185
+ email?: string;
186
+ status?: AttendeeStatus;
187
+ required?: boolean;
188
+ }
189
+ export interface UpdateAttendeeInput {
190
+ status?: AttendeeStatus;
191
+ response_comment?: string | null;
192
+ required?: boolean;
193
+ }
194
+ export interface Availability {
195
+ id: string;
196
+ agent_id: string;
197
+ org_id: string;
198
+ day_of_week: number;
199
+ start_time: string;
200
+ end_time: string;
201
+ exceptions: string[] | null;
202
+ created_at: string;
203
+ updated_at: string;
204
+ }
205
+ export interface CreateAvailabilityInput {
206
+ agent_id: string;
207
+ org_id: string;
208
+ day_of_week: number;
209
+ start_time: string;
210
+ end_time: string;
211
+ exceptions?: string[];
212
+ }
213
+ export interface OrgMembership {
214
+ id: string;
215
+ org_id: string;
216
+ agent_id: string;
217
+ role: OrgRole;
218
+ created_at: string;
219
+ }
220
+ export interface CreateOrgMembershipInput {
221
+ org_id: string;
222
+ agent_id: string;
223
+ role?: OrgRole;
224
+ }
225
+ export declare class VersionConflictError extends Error {
226
+ entityId: string;
227
+ entityType: string;
228
+ expectedVersion: number;
229
+ actualVersion: number;
230
+ static readonly code = "VERSION_CONFLICT";
231
+ constructor(entityId: string, entityType: string, expectedVersion: number, actualVersion: number);
232
+ }
233
+ export declare class NotFoundError extends Error {
234
+ entityType: string;
235
+ entityId: string;
236
+ static readonly code = "NOT_FOUND";
237
+ constructor(entityType: string, entityId: string);
238
+ }
239
+ export declare class ConflictError extends Error {
240
+ static readonly code = "CONFLICT";
241
+ constructor(message: string);
242
+ }
243
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@hasna/calendar",
3
+ "version": "0.1.0",
4
+ "description": "Universal calendar management for AI coding agents - CLI + MCP server + interactive TUI",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "calendar": "dist/cli/index.js",
10
+ "calendar-mcp": "dist/mcp/index.js",
11
+ "calendar-serve": "dist/server/index.js"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "dashboard/dist",
22
+ "LICENSE",
23
+ "README.md"
24
+ ],
25
+ "scripts": {
26
+ "build": "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",
27
+ "typecheck": "tsc --noEmit",
28
+ "test": "BUN_TEST=1 bun test",
29
+ "dev:cli": "bun run src/cli/index.tsx",
30
+ "dev:mcp": "bun run src/mcp/index.ts",
31
+ "dev:serve": "bun run src/server/index.ts",
32
+ "prepublishOnly": "bun run build",
33
+ "postinstall": "mkdir -p $HOME/.hasna/calendar $HOME/.hasna/calendar/templates 2>/dev/null || true"
34
+ },
35
+ "keywords": [
36
+ "calendar",
37
+ "events",
38
+ "scheduling",
39
+ "mcp",
40
+ "ai",
41
+ "coding-agent",
42
+ "tui",
43
+ "cli"
44
+ ],
45
+ "publishConfig": {
46
+ "registry": "https://registry.npmjs.org",
47
+ "access": "public"
48
+ },
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "https://github.com/hasna/calendar.git"
52
+ },
53
+ "homepage": "https://github.com/hasna/calendar",
54
+ "bugs": {
55
+ "url": "https://github.com/hasna/calendar/issues"
56
+ },
57
+ "engines": {
58
+ "bun": ">=1.0.0"
59
+ },
60
+ "author": "Andrei Hasna <andrei@hasna.com>",
61
+ "license": "Apache-2.0",
62
+ "dependencies": {
63
+ "@hasna/cloud": "0.1.28",
64
+ "@modelcontextprotocol/sdk": "^1.12.1",
65
+ "chalk": "^5.4.1",
66
+ "commander": "^13.1.0",
67
+ "ink": "^5.2.0",
68
+ "react": "^18.3.1",
69
+ "zod": "^3.24.2"
70
+ },
71
+ "devDependencies": {
72
+ "@types/bun": "^1.2.4",
73
+ "@types/react": "^18.3.18",
74
+ "typescript": "^5.7.3"
75
+ }
76
+ }