hanoman 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.
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "hanoman",
3
+ "version": "0.1.0",
4
+ "description": "Orchestrator + dashboard workflow docs-driven untuk sesi Claude Code / Codex",
5
+ "type": "module",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/denameidina/hanoman.git"
9
+ },
10
+ "bin": {
11
+ "hanoman": "bin/hanoman.mjs"
12
+ },
13
+ "scripts": {
14
+ "postinstall": "prisma generate --schema prisma/schema.prisma || true"
15
+ },
16
+ "engines": {
17
+ "node": ">=20"
18
+ },
19
+ "files": [
20
+ "bin",
21
+ "dist",
22
+ "web",
23
+ "prisma",
24
+ "README.md"
25
+ ],
26
+ "dependencies": {
27
+ "fastify": "^4.28.0",
28
+ "@fastify/static": "^7.0.0",
29
+ "@fastify/websocket": "^10.0.1",
30
+ "@fastify/cookie": "^9.4.0",
31
+ "@prisma/client": "^6.19.0",
32
+ "node-pty": "^1.1.0",
33
+ "pdfkit": "^0.19.1",
34
+ "prisma": "^6.19.0",
35
+ "pg": "^8.13.1"
36
+ },
37
+ "license": "UNLICENSED"
38
+ }
@@ -0,0 +1,431 @@
1
+ -- CreateTable
2
+ CREATE TABLE "Project" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "name" TEXT NOT NULL,
5
+ "desc" TEXT NOT NULL,
6
+ "kind" TEXT NOT NULL,
7
+ "repoDir" TEXT,
8
+ "gitRemote" TEXT,
9
+ "stack" TEXT NOT NULL DEFAULT '',
10
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
11
+ "version" INTEGER NOT NULL DEFAULT 0,
12
+ "updatedAt" DATETIME NOT NULL,
13
+ "ingestKeyHash" TEXT,
14
+ "ingestKeyPrefix" TEXT,
15
+ "helpEnabled" BOOLEAN NOT NULL DEFAULT false,
16
+ "schedulerOptIn" BOOLEAN NOT NULL DEFAULT false
17
+ );
18
+
19
+ -- CreateTable
20
+ CREATE TABLE "ProjectLink" (
21
+ "id" TEXT NOT NULL PRIMARY KEY,
22
+ "fromProjectId" TEXT NOT NULL,
23
+ "toProjectId" TEXT NOT NULL,
24
+ "kind" TEXT NOT NULL,
25
+ "note" TEXT NOT NULL DEFAULT '',
26
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
27
+ "updatedAt" DATETIME NOT NULL,
28
+ CONSTRAINT "ProjectLink_fromProjectId_fkey" FOREIGN KEY ("fromProjectId") REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
29
+ CONSTRAINT "ProjectLink_toProjectId_fkey" FOREIGN KEY ("toProjectId") REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE
30
+ );
31
+
32
+ -- CreateTable
33
+ CREATE TABLE "Spec" (
34
+ "id" TEXT NOT NULL PRIMARY KEY,
35
+ "projectId" TEXT NOT NULL,
36
+ "title" TEXT NOT NULL,
37
+ "source" TEXT NOT NULL,
38
+ "stage" TEXT NOT NULL,
39
+ "priority" TEXT NOT NULL,
40
+ "author" TEXT NOT NULL,
41
+ "objective" TEXT NOT NULL,
42
+ "payload" JSONB,
43
+ "branchFrom" TEXT,
44
+ "baseSha" TEXT,
45
+ "headSha" TEXT,
46
+ "version" INTEGER NOT NULL DEFAULT 0,
47
+ "updatedAt" DATETIME NOT NULL,
48
+ CONSTRAINT "Spec_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE
49
+ );
50
+
51
+ -- CreateTable
52
+ CREATE TABLE "Setting" (
53
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT DEFAULT 1,
54
+ "data" JSONB NOT NULL
55
+ );
56
+
57
+ -- CreateTable
58
+ CREATE TABLE "Notification" (
59
+ "id" TEXT NOT NULL PRIMARY KEY,
60
+ "type" TEXT NOT NULL DEFAULT 'done',
61
+ "key" TEXT,
62
+ "specId" TEXT,
63
+ "sessionId" TEXT,
64
+ "title" TEXT NOT NULL,
65
+ "projectId" TEXT,
66
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
67
+ "readAt" DATETIME
68
+ );
69
+
70
+ -- CreateTable
71
+ CREATE TABLE "User" (
72
+ "id" TEXT NOT NULL PRIMARY KEY,
73
+ "email" TEXT NOT NULL,
74
+ "passwordHash" TEXT NOT NULL,
75
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
76
+ );
77
+
78
+ -- CreateTable
79
+ CREATE TABLE "Session" (
80
+ "id" TEXT NOT NULL PRIMARY KEY,
81
+ "userId" TEXT NOT NULL,
82
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
83
+ "expiresAt" DATETIME NOT NULL,
84
+ CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
85
+ );
86
+
87
+ -- CreateTable
88
+ CREATE TABLE "Vps" (
89
+ "id" TEXT NOT NULL PRIMARY KEY,
90
+ "name" TEXT NOT NULL,
91
+ "host" TEXT NOT NULL,
92
+ "port" INTEGER NOT NULL DEFAULT 22,
93
+ "user" TEXT NOT NULL,
94
+ "keyPath" TEXT,
95
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
96
+ "lastSeenAt" DATETIME,
97
+ "health" JSONB,
98
+ "lastAuditAt" DATETIME,
99
+ "audit" JSONB,
100
+ "hardened" BOOLEAN NOT NULL DEFAULT false,
101
+ "version" INTEGER NOT NULL DEFAULT 0,
102
+ "updatedAt" DATETIME NOT NULL
103
+ );
104
+
105
+ -- CreateTable
106
+ CREATE TABLE "VpsAuditSnapshot" (
107
+ "id" TEXT NOT NULL PRIMARY KEY,
108
+ "vpsId" TEXT NOT NULL,
109
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
110
+ "results" JSONB NOT NULL,
111
+ "scoreTotal" REAL NOT NULL,
112
+ "scoreBySection" JSONB NOT NULL,
113
+ "detected" JSONB,
114
+ CONSTRAINT "VpsAuditSnapshot_vpsId_fkey" FOREIGN KEY ("vpsId") REFERENCES "Vps" ("id") ON DELETE CASCADE ON UPDATE CASCADE
115
+ );
116
+
117
+ -- CreateTable
118
+ CREATE TABLE "VpsItemState" (
119
+ "id" TEXT NOT NULL PRIMARY KEY,
120
+ "vpsId" TEXT NOT NULL,
121
+ "itemId" TEXT NOT NULL,
122
+ "na" BOOLEAN NOT NULL DEFAULT false,
123
+ "naReason" TEXT,
124
+ "attested" BOOLEAN NOT NULL DEFAULT false,
125
+ "attestNote" TEXT,
126
+ "actorEmail" TEXT,
127
+ "updatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
128
+ CONSTRAINT "VpsItemState_vpsId_fkey" FOREIGN KEY ("vpsId") REFERENCES "Vps" ("id") ON DELETE CASCADE ON UPDATE CASCADE
129
+ );
130
+
131
+ -- CreateTable
132
+ CREATE TABLE "DeviceToken" (
133
+ "id" TEXT NOT NULL PRIMARY KEY,
134
+ "userId" TEXT NOT NULL,
135
+ "name" TEXT NOT NULL,
136
+ "tokenHash" TEXT NOT NULL,
137
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
138
+ "lastSeenAt" DATETIME,
139
+ "revokedAt" DATETIME,
140
+ CONSTRAINT "DeviceToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
141
+ );
142
+
143
+ -- CreateTable
144
+ CREATE TABLE "AgentToken" (
145
+ "id" TEXT NOT NULL PRIMARY KEY,
146
+ "name" TEXT NOT NULL,
147
+ "tokenHash" TEXT NOT NULL,
148
+ "tokenPrefix" TEXT NOT NULL,
149
+ "capabilities" JSONB NOT NULL,
150
+ "enabled" BOOLEAN NOT NULL DEFAULT true,
151
+ "createdBy" TEXT,
152
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
153
+ "lastUsedAt" DATETIME,
154
+ "revokedAt" DATETIME
155
+ );
156
+
157
+ -- CreateTable
158
+ CREATE TABLE "SessionResult" (
159
+ "id" TEXT NOT NULL PRIMARY KEY,
160
+ "projectId" TEXT NOT NULL,
161
+ "specId" TEXT,
162
+ "oldStage" TEXT,
163
+ "newStage" TEXT,
164
+ "commitSha" TEXT,
165
+ "branch" TEXT,
166
+ "prUrl" TEXT,
167
+ "status" TEXT NOT NULL,
168
+ "deviceId" TEXT,
169
+ "author" TEXT,
170
+ "version" INTEGER NOT NULL DEFAULT 0,
171
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
172
+ "updatedAt" DATETIME NOT NULL
173
+ );
174
+
175
+ -- CreateTable
176
+ CREATE TABLE "SessionHistory" (
177
+ "id" TEXT NOT NULL PRIMARY KEY,
178
+ "sessionId" TEXT NOT NULL,
179
+ "projectId" TEXT NOT NULL,
180
+ "specId" TEXT,
181
+ "title" TEXT,
182
+ "kind" TEXT NOT NULL,
183
+ "flow" TEXT,
184
+ "agent" TEXT NOT NULL,
185
+ "model" TEXT,
186
+ "effort" TEXT,
187
+ "branch" TEXT,
188
+ "cwd" TEXT NOT NULL,
189
+ "startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
190
+ "endedAt" DATETIME,
191
+ "exitCode" INTEGER,
192
+ "transcriptKey" TEXT,
193
+ "transcriptBytes" INTEGER,
194
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
195
+ "updatedAt" DATETIME NOT NULL
196
+ );
197
+
198
+ -- CreateTable
199
+ CREATE TABLE "SyncLog" (
200
+ "seq" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
201
+ "entity" TEXT NOT NULL,
202
+ "recordId" TEXT NOT NULL,
203
+ "version" INTEGER NOT NULL,
204
+ "data" JSONB NOT NULL,
205
+ "deviceId" TEXT,
206
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
207
+ );
208
+
209
+ -- CreateTable
210
+ CREATE TABLE "LocalBinding" (
211
+ "projectId" TEXT NOT NULL PRIMARY KEY,
212
+ "repoDir" TEXT NOT NULL,
213
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
214
+ );
215
+
216
+ -- CreateTable
217
+ CREATE TABLE "SyncOutbox" (
218
+ "id" TEXT NOT NULL PRIMARY KEY,
219
+ "entity" TEXT NOT NULL,
220
+ "recordId" TEXT NOT NULL,
221
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
222
+ );
223
+
224
+ -- CreateTable
225
+ CREATE TABLE "SyncState" (
226
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT DEFAULT 1,
227
+ "cursor" TEXT NOT NULL DEFAULT '0'
228
+ );
229
+
230
+ -- CreateTable
231
+ CREATE TABLE "SyncConflict" (
232
+ "id" TEXT NOT NULL PRIMARY KEY,
233
+ "entity" TEXT NOT NULL,
234
+ "recordId" TEXT NOT NULL,
235
+ "localData" JSONB NOT NULL,
236
+ "localVersion" INTEGER NOT NULL,
237
+ "localUpdatedAt" DATETIME NOT NULL,
238
+ "serverData" JSONB NOT NULL,
239
+ "serverVersion" INTEGER NOT NULL,
240
+ "serverUpdatedAt" DATETIME NOT NULL,
241
+ "detectedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
242
+ "resolvedAt" DATETIME
243
+ );
244
+
245
+ -- CreateTable
246
+ CREATE TABLE "SchedulerQueueItem" (
247
+ "id" TEXT NOT NULL PRIMARY KEY,
248
+ "specId" TEXT NOT NULL,
249
+ "projectId" TEXT NOT NULL,
250
+ "source" TEXT NOT NULL,
251
+ "priority" TEXT NOT NULL,
252
+ "status" TEXT NOT NULL DEFAULT 'queued',
253
+ "sessionId" TEXT,
254
+ "note" TEXT,
255
+ "enqueuedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
256
+ "launchedAt" DATETIME
257
+ );
258
+
259
+ -- CreateTable
260
+ CREATE TABLE "RuntimeConfig" (
261
+ "key" TEXT NOT NULL PRIMARY KEY,
262
+ "value" TEXT NOT NULL,
263
+ "updatedAt" DATETIME NOT NULL
264
+ );
265
+
266
+ -- CreateTable
267
+ CREATE TABLE "ErrorGroup" (
268
+ "id" TEXT NOT NULL PRIMARY KEY,
269
+ "projectId" TEXT NOT NULL,
270
+ "fingerprint" TEXT NOT NULL,
271
+ "type" TEXT NOT NULL,
272
+ "message" TEXT NOT NULL,
273
+ "sampleStack" TEXT,
274
+ "sampleFrames" JSONB,
275
+ "release" TEXT,
276
+ "environment" TEXT NOT NULL,
277
+ "status" TEXT NOT NULL DEFAULT 'new',
278
+ "count" INTEGER NOT NULL DEFAULT 0,
279
+ "firstSeenAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
280
+ "lastSeenAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
281
+ "specId" TEXT,
282
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
283
+ "updatedAt" DATETIME NOT NULL,
284
+ "version" INTEGER NOT NULL DEFAULT 0,
285
+ CONSTRAINT "ErrorGroup_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE
286
+ );
287
+
288
+ -- CreateTable
289
+ CREATE TABLE "ErrorEvent" (
290
+ "id" TEXT NOT NULL PRIMARY KEY,
291
+ "groupId" TEXT NOT NULL,
292
+ "projectId" TEXT NOT NULL,
293
+ "type" TEXT NOT NULL,
294
+ "message" TEXT NOT NULL,
295
+ "stack" TEXT,
296
+ "frames" JSONB,
297
+ "environment" TEXT NOT NULL,
298
+ "release" TEXT,
299
+ "context" JSONB,
300
+ "receivedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
301
+ CONSTRAINT "ErrorEvent_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "ErrorGroup" ("id") ON DELETE CASCADE ON UPDATE CASCADE
302
+ );
303
+
304
+ -- CreateTable
305
+ CREATE TABLE "SourceMapArtifact" (
306
+ "id" TEXT NOT NULL PRIMARY KEY,
307
+ "projectId" TEXT NOT NULL,
308
+ "release" TEXT NOT NULL,
309
+ "filename" TEXT NOT NULL,
310
+ "debugId" TEXT,
311
+ "storageKey" TEXT NOT NULL,
312
+ "size" INTEGER NOT NULL,
313
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
314
+ CONSTRAINT "SourceMapArtifact_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE
315
+ );
316
+
317
+ -- CreateTable
318
+ CREATE TABLE "Ticket" (
319
+ "id" TEXT NOT NULL PRIMARY KEY,
320
+ "projectId" TEXT NOT NULL,
321
+ "number" INTEGER NOT NULL,
322
+ "category" TEXT NOT NULL,
323
+ "title" TEXT NOT NULL,
324
+ "detail" TEXT NOT NULL,
325
+ "reporterEmail" TEXT NOT NULL,
326
+ "status" TEXT NOT NULL DEFAULT 'new',
327
+ "accessKeyHash" TEXT NOT NULL,
328
+ "shareToken" TEXT,
329
+ "specId" TEXT,
330
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
331
+ "updatedAt" DATETIME NOT NULL,
332
+ "version" INTEGER NOT NULL DEFAULT 0,
333
+ CONSTRAINT "Ticket_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE
334
+ );
335
+
336
+ -- CreateTable
337
+ CREATE TABLE "TicketAttachment" (
338
+ "id" TEXT NOT NULL PRIMARY KEY,
339
+ "ticketId" TEXT NOT NULL,
340
+ "projectId" TEXT NOT NULL,
341
+ "filename" TEXT NOT NULL,
342
+ "mimeType" TEXT NOT NULL,
343
+ "size" INTEGER NOT NULL,
344
+ "storageKey" TEXT NOT NULL,
345
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
346
+ "version" INTEGER NOT NULL DEFAULT 0,
347
+ "updatedAt" DATETIME NOT NULL,
348
+ CONSTRAINT "TicketAttachment_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "Ticket" ("id") ON DELETE CASCADE ON UPDATE CASCADE
349
+ );
350
+
351
+ -- CreateIndex
352
+ CREATE INDEX "ProjectLink_toProjectId_idx" ON "ProjectLink"("toProjectId");
353
+
354
+ -- CreateIndex
355
+ CREATE UNIQUE INDEX "ProjectLink_fromProjectId_toProjectId_key" ON "ProjectLink"("fromProjectId", "toProjectId");
356
+
357
+ -- CreateIndex
358
+ CREATE UNIQUE INDEX "Notification_key_key" ON "Notification"("key");
359
+
360
+ -- CreateIndex
361
+ CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
362
+
363
+ -- CreateIndex
364
+ CREATE INDEX "VpsAuditSnapshot_vpsId_createdAt_idx" ON "VpsAuditSnapshot"("vpsId", "createdAt");
365
+
366
+ -- CreateIndex
367
+ CREATE UNIQUE INDEX "VpsItemState_vpsId_itemId_key" ON "VpsItemState"("vpsId", "itemId");
368
+
369
+ -- CreateIndex
370
+ CREATE UNIQUE INDEX "DeviceToken_tokenHash_key" ON "DeviceToken"("tokenHash");
371
+
372
+ -- CreateIndex
373
+ CREATE UNIQUE INDEX "AgentToken_tokenHash_key" ON "AgentToken"("tokenHash");
374
+
375
+ -- CreateIndex
376
+ CREATE INDEX "SessionHistory_projectId_startedAt_idx" ON "SessionHistory"("projectId", "startedAt");
377
+
378
+ -- CreateIndex
379
+ CREATE INDEX "SessionHistory_specId_idx" ON "SessionHistory"("specId");
380
+
381
+ -- CreateIndex
382
+ CREATE INDEX "SessionHistory_sessionId_idx" ON "SessionHistory"("sessionId");
383
+
384
+ -- CreateIndex
385
+ CREATE INDEX "SyncLog_entity_recordId_idx" ON "SyncLog"("entity", "recordId");
386
+
387
+ -- CreateIndex
388
+ CREATE UNIQUE INDEX "SyncOutbox_entity_recordId_key" ON "SyncOutbox"("entity", "recordId");
389
+
390
+ -- CreateIndex
391
+ CREATE UNIQUE INDEX "SyncConflict_entity_recordId_key" ON "SyncConflict"("entity", "recordId");
392
+
393
+ -- CreateIndex
394
+ CREATE UNIQUE INDEX "SchedulerQueueItem_specId_key" ON "SchedulerQueueItem"("specId");
395
+
396
+ -- CreateIndex
397
+ CREATE INDEX "SchedulerQueueItem_status_idx" ON "SchedulerQueueItem"("status");
398
+
399
+ -- CreateIndex
400
+ CREATE INDEX "ErrorGroup_projectId_lastSeenAt_idx" ON "ErrorGroup"("projectId", "lastSeenAt");
401
+
402
+ -- CreateIndex
403
+ CREATE UNIQUE INDEX "ErrorGroup_projectId_fingerprint_key" ON "ErrorGroup"("projectId", "fingerprint");
404
+
405
+ -- CreateIndex
406
+ CREATE INDEX "ErrorEvent_groupId_receivedAt_idx" ON "ErrorEvent"("groupId", "receivedAt");
407
+
408
+ -- CreateIndex
409
+ CREATE INDEX "ErrorEvent_projectId_receivedAt_idx" ON "ErrorEvent"("projectId", "receivedAt");
410
+
411
+ -- CreateIndex
412
+ CREATE INDEX "SourceMapArtifact_projectId_release_idx" ON "SourceMapArtifact"("projectId", "release");
413
+
414
+ -- CreateIndex
415
+ CREATE UNIQUE INDEX "SourceMapArtifact_projectId_release_filename_key" ON "SourceMapArtifact"("projectId", "release", "filename");
416
+
417
+ -- CreateIndex
418
+ CREATE UNIQUE INDEX "Ticket_accessKeyHash_key" ON "Ticket"("accessKeyHash");
419
+
420
+ -- CreateIndex
421
+ CREATE UNIQUE INDEX "Ticket_shareToken_key" ON "Ticket"("shareToken");
422
+
423
+ -- CreateIndex
424
+ CREATE INDEX "Ticket_projectId_createdAt_idx" ON "Ticket"("projectId", "createdAt");
425
+
426
+ -- CreateIndex
427
+ CREATE UNIQUE INDEX "Ticket_projectId_number_key" ON "Ticket"("projectId", "number");
428
+
429
+ -- CreateIndex
430
+ CREATE INDEX "TicketAttachment_ticketId_idx" ON "TicketAttachment"("ticketId");
431
+
@@ -0,0 +1,2 @@
1
+ # Please do not edit this file manually
2
+ provider = "sqlite"