reeboot 1.0.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.
Files changed (110) hide show
  1. package/README.md +361 -0
  2. package/container/Dockerfile +48 -0
  3. package/container/entrypoint.sh +8 -0
  4. package/dist/agent-runner/index.d.ts +9 -0
  5. package/dist/agent-runner/index.d.ts.map +1 -0
  6. package/dist/agent-runner/index.js +21 -0
  7. package/dist/agent-runner/index.js.map +1 -0
  8. package/dist/agent-runner/interface.d.ts +56 -0
  9. package/dist/agent-runner/interface.d.ts.map +1 -0
  10. package/dist/agent-runner/interface.js +5 -0
  11. package/dist/agent-runner/interface.js.map +1 -0
  12. package/dist/agent-runner/pi-runner.d.ts +41 -0
  13. package/dist/agent-runner/pi-runner.d.ts.map +1 -0
  14. package/dist/agent-runner/pi-runner.js +162 -0
  15. package/dist/agent-runner/pi-runner.js.map +1 -0
  16. package/dist/channels/interface.d.ts +63 -0
  17. package/dist/channels/interface.d.ts.map +1 -0
  18. package/dist/channels/interface.js +33 -0
  19. package/dist/channels/interface.js.map +1 -0
  20. package/dist/channels/registry.d.ts +30 -0
  21. package/dist/channels/registry.d.ts.map +1 -0
  22. package/dist/channels/registry.js +71 -0
  23. package/dist/channels/registry.js.map +1 -0
  24. package/dist/channels/signal.d.ts +51 -0
  25. package/dist/channels/signal.d.ts.map +1 -0
  26. package/dist/channels/signal.js +263 -0
  27. package/dist/channels/signal.js.map +1 -0
  28. package/dist/channels/web.d.ts +35 -0
  29. package/dist/channels/web.d.ts.map +1 -0
  30. package/dist/channels/web.js +65 -0
  31. package/dist/channels/web.js.map +1 -0
  32. package/dist/channels/whatsapp.d.ts +25 -0
  33. package/dist/channels/whatsapp.d.ts.map +1 -0
  34. package/dist/channels/whatsapp.js +150 -0
  35. package/dist/channels/whatsapp.js.map +1 -0
  36. package/dist/config.d.ts +366 -0
  37. package/dist/config.d.ts.map +1 -0
  38. package/dist/config.js +140 -0
  39. package/dist/config.js.map +1 -0
  40. package/dist/context.d.ts +69 -0
  41. package/dist/context.d.ts.map +1 -0
  42. package/dist/context.js +166 -0
  43. package/dist/context.js.map +1 -0
  44. package/dist/credential-proxy.d.ts +25 -0
  45. package/dist/credential-proxy.d.ts.map +1 -0
  46. package/dist/credential-proxy.js +96 -0
  47. package/dist/credential-proxy.js.map +1 -0
  48. package/dist/daemon.d.ts +25 -0
  49. package/dist/daemon.d.ts.map +1 -0
  50. package/dist/daemon.js +138 -0
  51. package/dist/daemon.js.map +1 -0
  52. package/dist/db/index.d.ts +23 -0
  53. package/dist/db/index.d.ts.map +1 -0
  54. package/dist/db/index.js +113 -0
  55. package/dist/db/index.js.map +1 -0
  56. package/dist/db/schema.d.ts +408 -0
  57. package/dist/db/schema.d.ts.map +1 -0
  58. package/dist/db/schema.js +55 -0
  59. package/dist/db/schema.js.map +1 -0
  60. package/dist/doctor.d.ts +23 -0
  61. package/dist/doctor.d.ts.map +1 -0
  62. package/dist/doctor.js +217 -0
  63. package/dist/doctor.js.map +1 -0
  64. package/dist/extensions/loader.d.ts +19 -0
  65. package/dist/extensions/loader.d.ts.map +1 -0
  66. package/dist/extensions/loader.js +124 -0
  67. package/dist/extensions/loader.js.map +1 -0
  68. package/dist/index.d.ts +3 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +561 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/orchestrator.d.ts +60 -0
  73. package/dist/orchestrator.d.ts.map +1 -0
  74. package/dist/orchestrator.js +313 -0
  75. package/dist/orchestrator.js.map +1 -0
  76. package/dist/packages.d.ts +21 -0
  77. package/dist/packages.d.ts.map +1 -0
  78. package/dist/packages.js +116 -0
  79. package/dist/packages.js.map +1 -0
  80. package/dist/scheduler-registry.d.ts +8 -0
  81. package/dist/scheduler-registry.d.ts.map +1 -0
  82. package/dist/scheduler-registry.js +14 -0
  83. package/dist/scheduler-registry.js.map +1 -0
  84. package/dist/scheduler.d.ts +60 -0
  85. package/dist/scheduler.d.ts.map +1 -0
  86. package/dist/scheduler.js +143 -0
  87. package/dist/scheduler.js.map +1 -0
  88. package/dist/server.d.ts +18 -0
  89. package/dist/server.d.ts.map +1 -0
  90. package/dist/server.js +489 -0
  91. package/dist/server.js.map +1 -0
  92. package/dist/setup-wizard.d.ts +12 -0
  93. package/dist/setup-wizard.d.ts.map +1 -0
  94. package/dist/setup-wizard.js +163 -0
  95. package/dist/setup-wizard.js.map +1 -0
  96. package/extensions/confirm-destructive.ts +59 -0
  97. package/extensions/custom-compaction.ts +114 -0
  98. package/extensions/protected-paths.ts +30 -0
  99. package/extensions/sandbox/index.ts +317 -0
  100. package/extensions/sandbox/package-lock.json +92 -0
  101. package/extensions/sandbox/package.json +19 -0
  102. package/extensions/scheduler-tool.ts +65 -0
  103. package/extensions/session-name.ts +27 -0
  104. package/extensions/token-meter.ts +55 -0
  105. package/package.json +68 -0
  106. package/skills/send-message/SKILL.md +27 -0
  107. package/skills/web-search/SKILL.md +32 -0
  108. package/templates/global-agents.md +23 -0
  109. package/templates/main-agents.md +28 -0
  110. package/webchat/index.html +421 -0
@@ -0,0 +1,408 @@
1
+ export declare const contexts: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "contexts";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "contexts";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ enumValues: [string, ...string[]];
15
+ baseColumn: never;
16
+ }, object>;
17
+ name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
18
+ name: "name";
19
+ tableName: "contexts";
20
+ dataType: "string";
21
+ columnType: "SQLiteText";
22
+ data: string;
23
+ driverParam: string;
24
+ notNull: true;
25
+ hasDefault: false;
26
+ enumValues: [string, ...string[]];
27
+ baseColumn: never;
28
+ }, object>;
29
+ modelProvider: import("drizzle-orm/sqlite-core").SQLiteColumn<{
30
+ name: "model_provider";
31
+ tableName: "contexts";
32
+ dataType: "string";
33
+ columnType: "SQLiteText";
34
+ data: string;
35
+ driverParam: string;
36
+ notNull: true;
37
+ hasDefault: true;
38
+ enumValues: [string, ...string[]];
39
+ baseColumn: never;
40
+ }, object>;
41
+ modelId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
42
+ name: "model_id";
43
+ tableName: "contexts";
44
+ dataType: "string";
45
+ columnType: "SQLiteText";
46
+ data: string;
47
+ driverParam: string;
48
+ notNull: true;
49
+ hasDefault: true;
50
+ enumValues: [string, ...string[]];
51
+ baseColumn: never;
52
+ }, object>;
53
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
54
+ name: "status";
55
+ tableName: "contexts";
56
+ dataType: "string";
57
+ columnType: "SQLiteText";
58
+ data: string;
59
+ driverParam: string;
60
+ notNull: true;
61
+ hasDefault: true;
62
+ enumValues: [string, ...string[]];
63
+ baseColumn: never;
64
+ }, object>;
65
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
66
+ name: "created_at";
67
+ tableName: "contexts";
68
+ dataType: "string";
69
+ columnType: "SQLiteText";
70
+ data: string;
71
+ driverParam: string;
72
+ notNull: true;
73
+ hasDefault: true;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ }, object>;
77
+ };
78
+ dialect: "sqlite";
79
+ }>;
80
+ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
81
+ name: "messages";
82
+ schema: undefined;
83
+ columns: {
84
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
85
+ name: "id";
86
+ tableName: "messages";
87
+ dataType: "string";
88
+ columnType: "SQLiteText";
89
+ data: string;
90
+ driverParam: string;
91
+ notNull: true;
92
+ hasDefault: false;
93
+ enumValues: [string, ...string[]];
94
+ baseColumn: never;
95
+ }, object>;
96
+ contextId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
97
+ name: "context_id";
98
+ tableName: "messages";
99
+ dataType: "string";
100
+ columnType: "SQLiteText";
101
+ data: string;
102
+ driverParam: string;
103
+ notNull: true;
104
+ hasDefault: false;
105
+ enumValues: [string, ...string[]];
106
+ baseColumn: never;
107
+ }, object>;
108
+ channel: import("drizzle-orm/sqlite-core").SQLiteColumn<{
109
+ name: "channel";
110
+ tableName: "messages";
111
+ dataType: "string";
112
+ columnType: "SQLiteText";
113
+ data: string;
114
+ driverParam: string;
115
+ notNull: true;
116
+ hasDefault: false;
117
+ enumValues: [string, ...string[]];
118
+ baseColumn: never;
119
+ }, object>;
120
+ peerId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
121
+ name: "peer_id";
122
+ tableName: "messages";
123
+ dataType: "string";
124
+ columnType: "SQLiteText";
125
+ data: string;
126
+ driverParam: string;
127
+ notNull: true;
128
+ hasDefault: false;
129
+ enumValues: [string, ...string[]];
130
+ baseColumn: never;
131
+ }, object>;
132
+ role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
133
+ name: "role";
134
+ tableName: "messages";
135
+ dataType: "string";
136
+ columnType: "SQLiteText";
137
+ data: string;
138
+ driverParam: string;
139
+ notNull: true;
140
+ hasDefault: false;
141
+ enumValues: [string, ...string[]];
142
+ baseColumn: never;
143
+ }, object>;
144
+ content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
145
+ name: "content";
146
+ tableName: "messages";
147
+ dataType: "string";
148
+ columnType: "SQLiteText";
149
+ data: string;
150
+ driverParam: string;
151
+ notNull: true;
152
+ hasDefault: false;
153
+ enumValues: [string, ...string[]];
154
+ baseColumn: never;
155
+ }, object>;
156
+ tokensUsed: import("drizzle-orm/sqlite-core").SQLiteColumn<{
157
+ name: "tokens_used";
158
+ tableName: "messages";
159
+ dataType: "number";
160
+ columnType: "SQLiteInteger";
161
+ data: number;
162
+ driverParam: number;
163
+ notNull: false;
164
+ hasDefault: true;
165
+ enumValues: undefined;
166
+ baseColumn: never;
167
+ }, object>;
168
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
169
+ name: "created_at";
170
+ tableName: "messages";
171
+ dataType: "string";
172
+ columnType: "SQLiteText";
173
+ data: string;
174
+ driverParam: string;
175
+ notNull: true;
176
+ hasDefault: true;
177
+ enumValues: [string, ...string[]];
178
+ baseColumn: never;
179
+ }, object>;
180
+ };
181
+ dialect: "sqlite";
182
+ }>;
183
+ export declare const tasks: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
184
+ name: "tasks";
185
+ schema: undefined;
186
+ columns: {
187
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
188
+ name: "id";
189
+ tableName: "tasks";
190
+ dataType: "string";
191
+ columnType: "SQLiteText";
192
+ data: string;
193
+ driverParam: string;
194
+ notNull: true;
195
+ hasDefault: false;
196
+ enumValues: [string, ...string[]];
197
+ baseColumn: never;
198
+ }, object>;
199
+ contextId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
200
+ name: "context_id";
201
+ tableName: "tasks";
202
+ dataType: "string";
203
+ columnType: "SQLiteText";
204
+ data: string;
205
+ driverParam: string;
206
+ notNull: true;
207
+ hasDefault: false;
208
+ enumValues: [string, ...string[]];
209
+ baseColumn: never;
210
+ }, object>;
211
+ schedule: import("drizzle-orm/sqlite-core").SQLiteColumn<{
212
+ name: "schedule";
213
+ tableName: "tasks";
214
+ dataType: "string";
215
+ columnType: "SQLiteText";
216
+ data: string;
217
+ driverParam: string;
218
+ notNull: true;
219
+ hasDefault: false;
220
+ enumValues: [string, ...string[]];
221
+ baseColumn: never;
222
+ }, object>;
223
+ prompt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
224
+ name: "prompt";
225
+ tableName: "tasks";
226
+ dataType: "string";
227
+ columnType: "SQLiteText";
228
+ data: string;
229
+ driverParam: string;
230
+ notNull: true;
231
+ hasDefault: false;
232
+ enumValues: [string, ...string[]];
233
+ baseColumn: never;
234
+ }, object>;
235
+ enabled: import("drizzle-orm/sqlite-core").SQLiteColumn<{
236
+ name: "enabled";
237
+ tableName: "tasks";
238
+ dataType: "boolean";
239
+ columnType: "SQLiteBoolean";
240
+ data: boolean;
241
+ driverParam: number;
242
+ notNull: true;
243
+ hasDefault: true;
244
+ enumValues: undefined;
245
+ baseColumn: never;
246
+ }, object>;
247
+ lastRun: import("drizzle-orm/sqlite-core").SQLiteColumn<{
248
+ name: "last_run";
249
+ tableName: "tasks";
250
+ dataType: "string";
251
+ columnType: "SQLiteText";
252
+ data: string;
253
+ driverParam: string;
254
+ notNull: false;
255
+ hasDefault: false;
256
+ enumValues: [string, ...string[]];
257
+ baseColumn: never;
258
+ }, object>;
259
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
260
+ name: "created_at";
261
+ tableName: "tasks";
262
+ dataType: "string";
263
+ columnType: "SQLiteText";
264
+ data: string;
265
+ driverParam: string;
266
+ notNull: true;
267
+ hasDefault: true;
268
+ enumValues: [string, ...string[]];
269
+ baseColumn: never;
270
+ }, object>;
271
+ };
272
+ dialect: "sqlite";
273
+ }>;
274
+ export declare const channels: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
275
+ name: "channels";
276
+ schema: undefined;
277
+ columns: {
278
+ type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
279
+ name: "type";
280
+ tableName: "channels";
281
+ dataType: "string";
282
+ columnType: "SQLiteText";
283
+ data: string;
284
+ driverParam: string;
285
+ notNull: true;
286
+ hasDefault: false;
287
+ enumValues: [string, ...string[]];
288
+ baseColumn: never;
289
+ }, object>;
290
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
291
+ name: "status";
292
+ tableName: "channels";
293
+ dataType: "string";
294
+ columnType: "SQLiteText";
295
+ data: string;
296
+ driverParam: string;
297
+ notNull: true;
298
+ hasDefault: true;
299
+ enumValues: [string, ...string[]];
300
+ baseColumn: never;
301
+ }, object>;
302
+ config: import("drizzle-orm/sqlite-core").SQLiteColumn<{
303
+ name: "config";
304
+ tableName: "channels";
305
+ dataType: "string";
306
+ columnType: "SQLiteText";
307
+ data: string;
308
+ driverParam: string;
309
+ notNull: true;
310
+ hasDefault: true;
311
+ enumValues: [string, ...string[]];
312
+ baseColumn: never;
313
+ }, object>;
314
+ connectedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
315
+ name: "connected_at";
316
+ tableName: "channels";
317
+ dataType: "string";
318
+ columnType: "SQLiteText";
319
+ data: string;
320
+ driverParam: string;
321
+ notNull: false;
322
+ hasDefault: false;
323
+ enumValues: [string, ...string[]];
324
+ baseColumn: never;
325
+ }, object>;
326
+ };
327
+ dialect: "sqlite";
328
+ }>;
329
+ export declare const usage: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
330
+ name: "usage";
331
+ schema: undefined;
332
+ columns: {
333
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
334
+ name: "id";
335
+ tableName: "usage";
336
+ dataType: "number";
337
+ columnType: "SQLiteInteger";
338
+ data: number;
339
+ driverParam: number;
340
+ notNull: true;
341
+ hasDefault: true;
342
+ enumValues: undefined;
343
+ baseColumn: never;
344
+ }, object>;
345
+ contextId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
346
+ name: "context_id";
347
+ tableName: "usage";
348
+ dataType: "string";
349
+ columnType: "SQLiteText";
350
+ data: string;
351
+ driverParam: string;
352
+ notNull: true;
353
+ hasDefault: false;
354
+ enumValues: [string, ...string[]];
355
+ baseColumn: never;
356
+ }, object>;
357
+ inputTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
358
+ name: "input_tokens";
359
+ tableName: "usage";
360
+ dataType: "number";
361
+ columnType: "SQLiteInteger";
362
+ data: number;
363
+ driverParam: number;
364
+ notNull: true;
365
+ hasDefault: true;
366
+ enumValues: undefined;
367
+ baseColumn: never;
368
+ }, object>;
369
+ outputTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
370
+ name: "output_tokens";
371
+ tableName: "usage";
372
+ dataType: "number";
373
+ columnType: "SQLiteInteger";
374
+ data: number;
375
+ driverParam: number;
376
+ notNull: true;
377
+ hasDefault: true;
378
+ enumValues: undefined;
379
+ baseColumn: never;
380
+ }, object>;
381
+ model: import("drizzle-orm/sqlite-core").SQLiteColumn<{
382
+ name: "model";
383
+ tableName: "usage";
384
+ dataType: "string";
385
+ columnType: "SQLiteText";
386
+ data: string;
387
+ driverParam: string;
388
+ notNull: true;
389
+ hasDefault: false;
390
+ enumValues: [string, ...string[]];
391
+ baseColumn: never;
392
+ }, object>;
393
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
394
+ name: "created_at";
395
+ tableName: "usage";
396
+ dataType: "string";
397
+ columnType: "SQLiteText";
398
+ data: string;
399
+ driverParam: string;
400
+ notNull: true;
401
+ hasDefault: true;
402
+ enumValues: [string, ...string[]];
403
+ baseColumn: never;
404
+ }, object>;
405
+ };
406
+ dialect: "sqlite";
407
+ }>;
408
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAIH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWnB,CAAC;AAIH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUhB,CAAC;AAIH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKnB,CAAC;AAIH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
2
+ import { sql } from 'drizzle-orm';
3
+ // ─── contexts ────────────────────────────────────────────────────────────────
4
+ export const contexts = sqliteTable('contexts', {
5
+ id: text('id').primaryKey(),
6
+ name: text('name').notNull(),
7
+ modelProvider: text('model_provider').notNull().default(''),
8
+ modelId: text('model_id').notNull().default(''),
9
+ status: text('status').notNull().default('active'),
10
+ createdAt: text('created_at').notNull().default(sql `(datetime('now'))`),
11
+ });
12
+ // ─── messages ────────────────────────────────────────────────────────────────
13
+ export const messages = sqliteTable('messages', {
14
+ id: text('id').primaryKey(),
15
+ contextId: text('context_id')
16
+ .notNull()
17
+ .references(() => contexts.id),
18
+ channel: text('channel').notNull(),
19
+ peerId: text('peer_id').notNull(),
20
+ role: text('role').notNull(), // 'user' | 'assistant' | 'system'
21
+ content: text('content').notNull(),
22
+ tokensUsed: integer('tokens_used').default(0),
23
+ createdAt: text('created_at').notNull().default(sql `(datetime('now'))`),
24
+ });
25
+ // ─── tasks ───────────────────────────────────────────────────────────────────
26
+ export const tasks = sqliteTable('tasks', {
27
+ id: text('id').primaryKey(),
28
+ contextId: text('context_id')
29
+ .notNull()
30
+ .references(() => contexts.id),
31
+ schedule: text('schedule').notNull(), // cron expression
32
+ prompt: text('prompt').notNull(),
33
+ enabled: integer('enabled', { mode: 'boolean' }).notNull().default(true),
34
+ lastRun: text('last_run'),
35
+ createdAt: text('created_at').notNull().default(sql `(datetime('now'))`),
36
+ });
37
+ // ─── channels ────────────────────────────────────────────────────────────────
38
+ export const channels = sqliteTable('channels', {
39
+ type: text('type').primaryKey(), // 'web' | 'whatsapp' | 'signal'
40
+ status: text('status').notNull().default('disconnected'),
41
+ config: text('config').notNull().default('{}'), // JSON blob
42
+ connectedAt: text('connected_at'),
43
+ });
44
+ // ─── usage ───────────────────────────────────────────────────────────────────
45
+ export const usage = sqliteTable('usage', {
46
+ id: integer('id').primaryKey({ autoIncrement: true }),
47
+ contextId: text('context_id')
48
+ .notNull()
49
+ .references(() => contexts.id),
50
+ inputTokens: integer('input_tokens').notNull().default(0),
51
+ outputTokens: integer('output_tokens').notNull().default(0),
52
+ model: text('model').notNull(),
53
+ createdAt: text('created_at').notNull().default(sql `(datetime('now'))`),
54
+ });
55
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Doctor — comprehensive pre-flight diagnostics
3
+ *
4
+ * Each check returns a CheckResult with status ✓/✗/⚠.
5
+ * Exit code 0 if all pass/warn, 1 if any fail.
6
+ */
7
+ export type CheckStatus = 'pass' | 'fail' | 'warn' | 'skip';
8
+ export interface CheckResult {
9
+ name: string;
10
+ status: CheckStatus;
11
+ message: string;
12
+ fix?: string;
13
+ }
14
+ export interface DoctorOptions {
15
+ configPath?: string;
16
+ reebotDir?: string;
17
+ /** Skip network-dependent checks (API key validation, Signal version check) */
18
+ skipNetwork?: boolean;
19
+ }
20
+ export declare function formatResult(result: CheckResult): string;
21
+ export declare function doctorExitCode(results: CheckResult[]): number;
22
+ export declare function runDoctor(opts?: DoctorOptions): Promise<CheckResult[]>;
23
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAID,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQxD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAE7D;AA6MD,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAchF"}