beercan 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.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +187 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +546 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/client.d.ts +8 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +29 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/config.d.ts +49 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +61 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/core/gatekeeper.d.ts +163 -0
  16. package/dist/core/gatekeeper.d.ts.map +1 -0
  17. package/dist/core/gatekeeper.js +247 -0
  18. package/dist/core/gatekeeper.js.map +1 -0
  19. package/dist/core/job-queue.d.ts +61 -0
  20. package/dist/core/job-queue.d.ts.map +1 -0
  21. package/dist/core/job-queue.js +123 -0
  22. package/dist/core/job-queue.js.map +1 -0
  23. package/dist/core/logger.d.ts +22 -0
  24. package/dist/core/logger.d.ts.map +1 -0
  25. package/dist/core/logger.js +65 -0
  26. package/dist/core/logger.js.map +1 -0
  27. package/dist/core/role-templates.d.ts +3 -0
  28. package/dist/core/role-templates.d.ts.map +1 -0
  29. package/dist/core/role-templates.js +179 -0
  30. package/dist/core/role-templates.js.map +1 -0
  31. package/dist/core/roles.d.ts +94 -0
  32. package/dist/core/roles.d.ts.map +1 -0
  33. package/dist/core/roles.js +206 -0
  34. package/dist/core/roles.js.map +1 -0
  35. package/dist/core/runner.d.ts +76 -0
  36. package/dist/core/runner.d.ts.map +1 -0
  37. package/dist/core/runner.js +307 -0
  38. package/dist/core/runner.js.map +1 -0
  39. package/dist/events/daemon.d.ts +9 -0
  40. package/dist/events/daemon.d.ts.map +1 -0
  41. package/dist/events/daemon.js +29 -0
  42. package/dist/events/daemon.js.map +1 -0
  43. package/dist/events/event-bus.d.ts +35 -0
  44. package/dist/events/event-bus.d.ts.map +1 -0
  45. package/dist/events/event-bus.js +41 -0
  46. package/dist/events/event-bus.js.map +1 -0
  47. package/dist/events/index.d.ts +41 -0
  48. package/dist/events/index.d.ts.map +1 -0
  49. package/dist/events/index.js +57 -0
  50. package/dist/events/index.js.map +1 -0
  51. package/dist/events/sources/filesystem-source.d.ts +23 -0
  52. package/dist/events/sources/filesystem-source.d.ts.map +1 -0
  53. package/dist/events/sources/filesystem-source.js +95 -0
  54. package/dist/events/sources/filesystem-source.js.map +1 -0
  55. package/dist/events/sources/macos-source.d.ts +23 -0
  56. package/dist/events/sources/macos-source.d.ts.map +1 -0
  57. package/dist/events/sources/macos-source.js +123 -0
  58. package/dist/events/sources/macos-source.js.map +1 -0
  59. package/dist/events/sources/polling-source.d.ts +23 -0
  60. package/dist/events/sources/polling-source.d.ts.map +1 -0
  61. package/dist/events/sources/polling-source.js +47 -0
  62. package/dist/events/sources/polling-source.js.map +1 -0
  63. package/dist/events/sources/webhook-source.d.ts +23 -0
  64. package/dist/events/sources/webhook-source.d.ts.map +1 -0
  65. package/dist/events/sources/webhook-source.js +132 -0
  66. package/dist/events/sources/webhook-source.js.map +1 -0
  67. package/dist/events/trigger-manager.d.ts +78 -0
  68. package/dist/events/trigger-manager.d.ts.map +1 -0
  69. package/dist/events/trigger-manager.js +130 -0
  70. package/dist/events/trigger-manager.js.map +1 -0
  71. package/dist/index.d.ts +123 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +225 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/mcp/index.d.ts +4 -0
  76. package/dist/mcp/index.d.ts.map +1 -0
  77. package/dist/mcp/index.js +3 -0
  78. package/dist/mcp/index.js.map +1 -0
  79. package/dist/mcp/manager.d.ts +99 -0
  80. package/dist/mcp/manager.d.ts.map +1 -0
  81. package/dist/mcp/manager.js +143 -0
  82. package/dist/mcp/manager.js.map +1 -0
  83. package/dist/mcp/tool-adapter.d.ts +20 -0
  84. package/dist/mcp/tool-adapter.d.ts.map +1 -0
  85. package/dist/mcp/tool-adapter.js +29 -0
  86. package/dist/mcp/tool-adapter.js.map +1 -0
  87. package/dist/memory/embeddings.d.ts +28 -0
  88. package/dist/memory/embeddings.d.ts.map +1 -0
  89. package/dist/memory/embeddings.js +90 -0
  90. package/dist/memory/embeddings.js.map +1 -0
  91. package/dist/memory/hybrid-search.d.ts +31 -0
  92. package/dist/memory/hybrid-search.d.ts.map +1 -0
  93. package/dist/memory/hybrid-search.js +114 -0
  94. package/dist/memory/hybrid-search.js.map +1 -0
  95. package/dist/memory/index.d.ts +55 -0
  96. package/dist/memory/index.d.ts.map +1 -0
  97. package/dist/memory/index.js +175 -0
  98. package/dist/memory/index.js.map +1 -0
  99. package/dist/memory/knowledge-graph.d.ts +21 -0
  100. package/dist/memory/knowledge-graph.d.ts.map +1 -0
  101. package/dist/memory/knowledge-graph.js +118 -0
  102. package/dist/memory/knowledge-graph.js.map +1 -0
  103. package/dist/memory/schemas.d.ts +187 -0
  104. package/dist/memory/schemas.d.ts.map +1 -0
  105. package/dist/memory/schemas.js +75 -0
  106. package/dist/memory/schemas.js.map +1 -0
  107. package/dist/memory/sqlite-vec-store.d.ts +22 -0
  108. package/dist/memory/sqlite-vec-store.d.ts.map +1 -0
  109. package/dist/memory/sqlite-vec-store.js +37 -0
  110. package/dist/memory/sqlite-vec-store.js.map +1 -0
  111. package/dist/memory/working-memory.d.ts +22 -0
  112. package/dist/memory/working-memory.d.ts.map +1 -0
  113. package/dist/memory/working-memory.js +53 -0
  114. package/dist/memory/working-memory.js.map +1 -0
  115. package/dist/scheduler/index.d.ts +3 -0
  116. package/dist/scheduler/index.d.ts.map +1 -0
  117. package/dist/scheduler/index.js +2 -0
  118. package/dist/scheduler/index.js.map +1 -0
  119. package/dist/scheduler/scheduler.d.ts +82 -0
  120. package/dist/scheduler/scheduler.d.ts.map +1 -0
  121. package/dist/scheduler/scheduler.js +127 -0
  122. package/dist/scheduler/scheduler.js.map +1 -0
  123. package/dist/schemas.d.ts +328 -0
  124. package/dist/schemas.d.ts.map +1 -0
  125. package/dist/schemas.js +77 -0
  126. package/dist/schemas.js.map +1 -0
  127. package/dist/storage/database.d.ts +97 -0
  128. package/dist/storage/database.d.ts.map +1 -0
  129. package/dist/storage/database.js +685 -0
  130. package/dist/storage/database.js.map +1 -0
  131. package/dist/tools/builtin/filesystem.d.ts +11 -0
  132. package/dist/tools/builtin/filesystem.d.ts.map +1 -0
  133. package/dist/tools/builtin/filesystem.js +137 -0
  134. package/dist/tools/builtin/filesystem.js.map +1 -0
  135. package/dist/tools/builtin/memory.d.ts +13 -0
  136. package/dist/tools/builtin/memory.d.ts.map +1 -0
  137. package/dist/tools/builtin/memory.js +299 -0
  138. package/dist/tools/builtin/memory.js.map +1 -0
  139. package/dist/tools/builtin/notification.d.ts +5 -0
  140. package/dist/tools/builtin/notification.d.ts.map +1 -0
  141. package/dist/tools/builtin/notification.js +36 -0
  142. package/dist/tools/builtin/notification.js.map +1 -0
  143. package/dist/tools/builtin/web.d.ts +7 -0
  144. package/dist/tools/builtin/web.d.ts.map +1 -0
  145. package/dist/tools/builtin/web.js +191 -0
  146. package/dist/tools/builtin/web.js.map +1 -0
  147. package/dist/tools/registry.d.ts +36 -0
  148. package/dist/tools/registry.d.ts.map +1 -0
  149. package/dist/tools/registry.js +49 -0
  150. package/dist/tools/registry.js.map +1 -0
  151. package/package.json +73 -0
@@ -0,0 +1,127 @@
1
+ import cron from "node-cron";
2
+ import { v4 as uuid } from "uuid";
3
+ import { z } from "zod";
4
+ // ── Schedule Schema ─────────────────────────────────────────
5
+ export const ScheduleSchema = z.object({
6
+ id: z.string(),
7
+ projectId: z.string(),
8
+ projectSlug: z.string(),
9
+ cronExpression: z.string(),
10
+ goal: z.string(),
11
+ team: z.string().default("solo"),
12
+ description: z.string().optional(),
13
+ enabled: z.boolean().default(true),
14
+ lastRunAt: z.string().nullable().default(null),
15
+ nextRunAt: z.string().nullable().default(null),
16
+ createdAt: z.string(),
17
+ updatedAt: z.string(),
18
+ });
19
+ // ── Scheduler ───────────────────────────────────────────────
20
+ export class Scheduler {
21
+ tasks = new Map();
22
+ db;
23
+ executor;
24
+ running = false;
25
+ constructor(db, executor) {
26
+ this.db = db;
27
+ this.executor = executor;
28
+ }
29
+ /** Load all enabled schedules from DB and create cron tasks */
30
+ init() {
31
+ const schedules = this.db.listSchedules();
32
+ for (const schedule of schedules) {
33
+ if (schedule.enabled) {
34
+ this.createTask(schedule);
35
+ }
36
+ }
37
+ }
38
+ /** Start all cron tasks */
39
+ start() {
40
+ this.running = true;
41
+ for (const task of this.tasks.values()) {
42
+ task.start();
43
+ }
44
+ console.log(`[scheduler] Started ${this.tasks.size} scheduled tasks`);
45
+ }
46
+ /** Stop all cron tasks */
47
+ stop() {
48
+ this.running = false;
49
+ for (const task of this.tasks.values()) {
50
+ task.stop();
51
+ }
52
+ console.log("[scheduler] Stopped all tasks");
53
+ }
54
+ /** Add a new schedule */
55
+ addSchedule(opts) {
56
+ if (!cron.validate(opts.cronExpression)) {
57
+ throw new Error(`Invalid cron expression: ${opts.cronExpression}`);
58
+ }
59
+ const now = new Date().toISOString();
60
+ const schedule = {
61
+ id: uuid(),
62
+ projectId: opts.projectId,
63
+ projectSlug: opts.projectSlug,
64
+ cronExpression: opts.cronExpression,
65
+ goal: opts.goal,
66
+ team: opts.team ?? "solo",
67
+ description: opts.description,
68
+ enabled: true,
69
+ lastRunAt: null,
70
+ nextRunAt: null,
71
+ createdAt: now,
72
+ updatedAt: now,
73
+ };
74
+ this.db.createSchedule(schedule);
75
+ if (this.running) {
76
+ this.createTask(schedule);
77
+ }
78
+ return schedule;
79
+ }
80
+ /** Remove a schedule */
81
+ removeSchedule(scheduleId) {
82
+ const task = this.tasks.get(scheduleId);
83
+ if (task) {
84
+ task.stop();
85
+ this.tasks.delete(scheduleId);
86
+ }
87
+ this.db.deleteSchedule(scheduleId);
88
+ }
89
+ /** List all schedules */
90
+ listSchedules(projectSlug) {
91
+ return this.db.listSchedules(projectSlug);
92
+ }
93
+ /** Manually trigger a schedule */
94
+ async executeSchedule(scheduleId) {
95
+ const schedule = this.db.getSchedule(scheduleId);
96
+ if (!schedule)
97
+ throw new Error(`Schedule not found: ${scheduleId}`);
98
+ await this.runScheduledBloop(schedule);
99
+ }
100
+ // ── Internal ──────────────────────────────────────────────
101
+ createTask(schedule) {
102
+ // Use createTask to avoid auto-starting; we manage start/stop ourselves
103
+ const task = cron.createTask(schedule.cronExpression, async () => {
104
+ await this.runScheduledBloop(schedule);
105
+ });
106
+ this.tasks.set(schedule.id, task);
107
+ if (this.running) {
108
+ task.start();
109
+ }
110
+ }
111
+ async runScheduledBloop(schedule) {
112
+ console.log(`[scheduler] Triggering: ${schedule.goal} (${schedule.projectSlug})`);
113
+ try {
114
+ await this.executor.runBloop({
115
+ projectSlug: schedule.projectSlug,
116
+ goal: schedule.goal,
117
+ team: schedule.team,
118
+ });
119
+ // Update last run time
120
+ this.db.updateScheduleRun(schedule.id, new Date().toISOString());
121
+ }
122
+ catch (err) {
123
+ console.error(`[scheduler] Failed: ${err.message}`);
124
+ }
125
+ }
126
+ }
127
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/scheduler/scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,328 @@
1
+ import { z } from "zod";
2
+ export declare const BloopStatus: z.ZodEnum<["created", "running", "waiting", "completed", "failed", "timeout"]>;
3
+ export type BloopStatus = z.infer<typeof BloopStatus>;
4
+ export declare const BloopTrigger: z.ZodEnum<["manual", "cron", "event", "child_of"]>;
5
+ export type BloopTrigger = z.infer<typeof BloopTrigger>;
6
+ export declare const ToolCallRecord: z.ZodObject<{
7
+ id: z.ZodString;
8
+ toolName: z.ZodString;
9
+ input: z.ZodUnknown;
10
+ output: z.ZodOptional<z.ZodUnknown>;
11
+ error: z.ZodOptional<z.ZodString>;
12
+ durationMs: z.ZodOptional<z.ZodNumber>;
13
+ timestamp: z.ZodString;
14
+ }, "strip", z.ZodTypeAny, {
15
+ id: string;
16
+ toolName: string;
17
+ timestamp: string;
18
+ error?: string | undefined;
19
+ input?: unknown;
20
+ output?: unknown;
21
+ durationMs?: number | undefined;
22
+ }, {
23
+ id: string;
24
+ toolName: string;
25
+ timestamp: string;
26
+ error?: string | undefined;
27
+ input?: unknown;
28
+ output?: unknown;
29
+ durationMs?: number | undefined;
30
+ }>;
31
+ export type ToolCallRecord = z.infer<typeof ToolCallRecord>;
32
+ export declare const BloopMessage: z.ZodObject<{
33
+ role: z.ZodEnum<["user", "assistant", "system"]>;
34
+ content: z.ZodString;
35
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
36
+ id: z.ZodString;
37
+ toolName: z.ZodString;
38
+ input: z.ZodUnknown;
39
+ output: z.ZodOptional<z.ZodUnknown>;
40
+ error: z.ZodOptional<z.ZodString>;
41
+ durationMs: z.ZodOptional<z.ZodNumber>;
42
+ timestamp: z.ZodString;
43
+ }, "strip", z.ZodTypeAny, {
44
+ id: string;
45
+ toolName: string;
46
+ timestamp: string;
47
+ error?: string | undefined;
48
+ input?: unknown;
49
+ output?: unknown;
50
+ durationMs?: number | undefined;
51
+ }, {
52
+ id: string;
53
+ toolName: string;
54
+ timestamp: string;
55
+ error?: string | undefined;
56
+ input?: unknown;
57
+ output?: unknown;
58
+ durationMs?: number | undefined;
59
+ }>, "many">>;
60
+ timestamp: z.ZodString;
61
+ }, "strip", z.ZodTypeAny, {
62
+ timestamp: string;
63
+ role: "user" | "assistant" | "system";
64
+ content: string;
65
+ toolCalls?: {
66
+ id: string;
67
+ toolName: string;
68
+ timestamp: string;
69
+ error?: string | undefined;
70
+ input?: unknown;
71
+ output?: unknown;
72
+ durationMs?: number | undefined;
73
+ }[] | undefined;
74
+ }, {
75
+ timestamp: string;
76
+ role: "user" | "assistant" | "system";
77
+ content: string;
78
+ toolCalls?: {
79
+ id: string;
80
+ toolName: string;
81
+ timestamp: string;
82
+ error?: string | undefined;
83
+ input?: unknown;
84
+ output?: unknown;
85
+ durationMs?: number | undefined;
86
+ }[] | undefined;
87
+ }>;
88
+ export type BloopMessage = z.infer<typeof BloopMessage>;
89
+ export declare const BloopSchema: z.ZodObject<{
90
+ id: z.ZodString;
91
+ projectId: z.ZodString;
92
+ parentBloopId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
93
+ trigger: z.ZodDefault<z.ZodEnum<["manual", "cron", "event", "child_of"]>>;
94
+ status: z.ZodDefault<z.ZodEnum<["created", "running", "waiting", "completed", "failed", "timeout"]>>;
95
+ goal: z.ZodString;
96
+ systemPrompt: z.ZodOptional<z.ZodString>;
97
+ messages: z.ZodDefault<z.ZodArray<z.ZodObject<{
98
+ role: z.ZodEnum<["user", "assistant", "system"]>;
99
+ content: z.ZodString;
100
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
101
+ id: z.ZodString;
102
+ toolName: z.ZodString;
103
+ input: z.ZodUnknown;
104
+ output: z.ZodOptional<z.ZodUnknown>;
105
+ error: z.ZodOptional<z.ZodString>;
106
+ durationMs: z.ZodOptional<z.ZodNumber>;
107
+ timestamp: z.ZodString;
108
+ }, "strip", z.ZodTypeAny, {
109
+ id: string;
110
+ toolName: string;
111
+ timestamp: string;
112
+ error?: string | undefined;
113
+ input?: unknown;
114
+ output?: unknown;
115
+ durationMs?: number | undefined;
116
+ }, {
117
+ id: string;
118
+ toolName: string;
119
+ timestamp: string;
120
+ error?: string | undefined;
121
+ input?: unknown;
122
+ output?: unknown;
123
+ durationMs?: number | undefined;
124
+ }>, "many">>;
125
+ timestamp: z.ZodString;
126
+ }, "strip", z.ZodTypeAny, {
127
+ timestamp: string;
128
+ role: "user" | "assistant" | "system";
129
+ content: string;
130
+ toolCalls?: {
131
+ id: string;
132
+ toolName: string;
133
+ timestamp: string;
134
+ error?: string | undefined;
135
+ input?: unknown;
136
+ output?: unknown;
137
+ durationMs?: number | undefined;
138
+ }[] | undefined;
139
+ }, {
140
+ timestamp: string;
141
+ role: "user" | "assistant" | "system";
142
+ content: string;
143
+ toolCalls?: {
144
+ id: string;
145
+ toolName: string;
146
+ timestamp: string;
147
+ error?: string | undefined;
148
+ input?: unknown;
149
+ output?: unknown;
150
+ durationMs?: number | undefined;
151
+ }[] | undefined;
152
+ }>, "many">>;
153
+ result: z.ZodDefault<z.ZodNullable<z.ZodUnknown>>;
154
+ toolCalls: z.ZodDefault<z.ZodArray<z.ZodObject<{
155
+ id: z.ZodString;
156
+ toolName: z.ZodString;
157
+ input: z.ZodUnknown;
158
+ output: z.ZodOptional<z.ZodUnknown>;
159
+ error: z.ZodOptional<z.ZodString>;
160
+ durationMs: z.ZodOptional<z.ZodNumber>;
161
+ timestamp: z.ZodString;
162
+ }, "strip", z.ZodTypeAny, {
163
+ id: string;
164
+ toolName: string;
165
+ timestamp: string;
166
+ error?: string | undefined;
167
+ input?: unknown;
168
+ output?: unknown;
169
+ durationMs?: number | undefined;
170
+ }, {
171
+ id: string;
172
+ toolName: string;
173
+ timestamp: string;
174
+ error?: string | undefined;
175
+ input?: unknown;
176
+ output?: unknown;
177
+ durationMs?: number | undefined;
178
+ }>, "many">>;
179
+ tokensUsed: z.ZodDefault<z.ZodNumber>;
180
+ iterations: z.ZodDefault<z.ZodNumber>;
181
+ maxIterations: z.ZodDefault<z.ZodNumber>;
182
+ createdAt: z.ZodString;
183
+ updatedAt: z.ZodString;
184
+ completedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
185
+ }, "strip", z.ZodTypeAny, {
186
+ status: "created" | "running" | "waiting" | "completed" | "failed" | "timeout";
187
+ id: string;
188
+ toolCalls: {
189
+ id: string;
190
+ toolName: string;
191
+ timestamp: string;
192
+ error?: string | undefined;
193
+ input?: unknown;
194
+ output?: unknown;
195
+ durationMs?: number | undefined;
196
+ }[];
197
+ projectId: string;
198
+ parentBloopId: string | null;
199
+ trigger: "manual" | "cron" | "event" | "child_of";
200
+ goal: string;
201
+ messages: {
202
+ timestamp: string;
203
+ role: "user" | "assistant" | "system";
204
+ content: string;
205
+ toolCalls?: {
206
+ id: string;
207
+ toolName: string;
208
+ timestamp: string;
209
+ error?: string | undefined;
210
+ input?: unknown;
211
+ output?: unknown;
212
+ durationMs?: number | undefined;
213
+ }[] | undefined;
214
+ }[];
215
+ tokensUsed: number;
216
+ iterations: number;
217
+ maxIterations: number;
218
+ createdAt: string;
219
+ updatedAt: string;
220
+ completedAt: string | null;
221
+ systemPrompt?: string | undefined;
222
+ result?: unknown;
223
+ }, {
224
+ id: string;
225
+ projectId: string;
226
+ goal: string;
227
+ createdAt: string;
228
+ updatedAt: string;
229
+ status?: "created" | "running" | "waiting" | "completed" | "failed" | "timeout" | undefined;
230
+ toolCalls?: {
231
+ id: string;
232
+ toolName: string;
233
+ timestamp: string;
234
+ error?: string | undefined;
235
+ input?: unknown;
236
+ output?: unknown;
237
+ durationMs?: number | undefined;
238
+ }[] | undefined;
239
+ parentBloopId?: string | null | undefined;
240
+ trigger?: "manual" | "cron" | "event" | "child_of" | undefined;
241
+ systemPrompt?: string | undefined;
242
+ messages?: {
243
+ timestamp: string;
244
+ role: "user" | "assistant" | "system";
245
+ content: string;
246
+ toolCalls?: {
247
+ id: string;
248
+ toolName: string;
249
+ timestamp: string;
250
+ error?: string | undefined;
251
+ input?: unknown;
252
+ output?: unknown;
253
+ durationMs?: number | undefined;
254
+ }[] | undefined;
255
+ }[] | undefined;
256
+ result?: unknown;
257
+ tokensUsed?: number | undefined;
258
+ iterations?: number | undefined;
259
+ maxIterations?: number | undefined;
260
+ completedAt?: string | null | undefined;
261
+ }>;
262
+ export type Bloop = z.infer<typeof BloopSchema>;
263
+ export declare const ProjectSchema: z.ZodObject<{
264
+ id: z.ZodString;
265
+ name: z.ZodString;
266
+ slug: z.ZodString;
267
+ description: z.ZodOptional<z.ZodString>;
268
+ /** Working directory for agent file/exec operations. If set, agents operate in this folder. */
269
+ workDir: z.ZodOptional<z.ZodString>;
270
+ context: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
271
+ allowedTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
272
+ tokenBudget: z.ZodDefault<z.ZodObject<{
273
+ dailyLimit: z.ZodDefault<z.ZodNumber>;
274
+ perBloopLimit: z.ZodDefault<z.ZodNumber>;
275
+ }, "strip", z.ZodTypeAny, {
276
+ dailyLimit: number;
277
+ perBloopLimit: number;
278
+ }, {
279
+ dailyLimit?: number | undefined;
280
+ perBloopLimit?: number | undefined;
281
+ }>>;
282
+ createdAt: z.ZodString;
283
+ updatedAt: z.ZodString;
284
+ }, "strip", z.ZodTypeAny, {
285
+ id: string;
286
+ createdAt: string;
287
+ updatedAt: string;
288
+ name: string;
289
+ slug: string;
290
+ context: Record<string, unknown>;
291
+ allowedTools: string[];
292
+ tokenBudget: {
293
+ dailyLimit: number;
294
+ perBloopLimit: number;
295
+ };
296
+ description?: string | undefined;
297
+ workDir?: string | undefined;
298
+ }, {
299
+ id: string;
300
+ createdAt: string;
301
+ updatedAt: string;
302
+ name: string;
303
+ slug: string;
304
+ description?: string | undefined;
305
+ workDir?: string | undefined;
306
+ context?: Record<string, unknown> | undefined;
307
+ allowedTools?: string[] | undefined;
308
+ tokenBudget?: {
309
+ dailyLimit?: number | undefined;
310
+ perBloopLimit?: number | undefined;
311
+ } | undefined;
312
+ }>;
313
+ export type Project = z.infer<typeof ProjectSchema>;
314
+ export declare const ToolDefinition: z.ZodObject<{
315
+ name: z.ZodString;
316
+ description: z.ZodString;
317
+ inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
318
+ }, "strip", z.ZodTypeAny, {
319
+ name: string;
320
+ description: string;
321
+ inputSchema: Record<string, unknown>;
322
+ }, {
323
+ name: string;
324
+ description: string;
325
+ inputSchema: Record<string, unknown>;
326
+ }>;
327
+ export type ToolDefinition = z.infer<typeof ToolDefinition>;
328
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW,gFAOtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGtD,eAAO,MAAM,YAAY,oDAKvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGxD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAG5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGxD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGhD,eAAO,MAAM,aAAa;;;;;IAKxB,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU/F,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAGpD,eAAO,MAAM,cAAc;;;;;;;;;;;;EAIzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { z } from "zod";
2
+ // ── Bloop Status ──────────────────────────────────────────────
3
+ export const BloopStatus = z.enum([
4
+ "created",
5
+ "running",
6
+ "waiting", // waiting for child bloops or external event
7
+ "completed",
8
+ "failed",
9
+ "timeout",
10
+ ]);
11
+ // ── Bloop Trigger ─────────────────────────────────────────────
12
+ export const BloopTrigger = z.enum([
13
+ "manual",
14
+ "cron",
15
+ "event",
16
+ "child_of",
17
+ ]);
18
+ // ── Tool Call (audit log entry) ──────────────────────────────
19
+ export const ToolCallRecord = z.object({
20
+ id: z.string(),
21
+ toolName: z.string(),
22
+ input: z.unknown(),
23
+ output: z.unknown().optional(),
24
+ error: z.string().optional(),
25
+ durationMs: z.number().optional(),
26
+ timestamp: z.string().datetime(),
27
+ });
28
+ // ── Message in Bloop conversation ─────────────────────────────
29
+ export const BloopMessage = z.object({
30
+ role: z.enum(["user", "assistant", "system"]),
31
+ content: z.string(),
32
+ toolCalls: z.array(ToolCallRecord).optional(),
33
+ timestamp: z.string().datetime(),
34
+ });
35
+ // ── Bloop ─────────────────────────────────────────────────────
36
+ export const BloopSchema = z.object({
37
+ id: z.string().uuid(),
38
+ projectId: z.string(),
39
+ parentBloopId: z.string().uuid().nullable().default(null),
40
+ trigger: BloopTrigger.default("manual"),
41
+ status: BloopStatus.default("created"),
42
+ goal: z.string(),
43
+ systemPrompt: z.string().optional(),
44
+ messages: z.array(BloopMessage).default([]),
45
+ result: z.unknown().nullable().default(null),
46
+ toolCalls: z.array(ToolCallRecord).default([]),
47
+ tokensUsed: z.number().default(0),
48
+ iterations: z.number().default(0),
49
+ maxIterations: z.number().default(50),
50
+ createdAt: z.string().datetime(),
51
+ updatedAt: z.string().datetime(),
52
+ completedAt: z.string().datetime().nullable().default(null),
53
+ });
54
+ // ── Project ──────────────────────────────────────────────────
55
+ export const ProjectSchema = z.object({
56
+ id: z.string(),
57
+ name: z.string(),
58
+ slug: z.string(),
59
+ description: z.string().optional(),
60
+ /** Working directory for agent file/exec operations. If set, agents operate in this folder. */
61
+ workDir: z.string().optional(),
62
+ context: z.record(z.unknown()).default({}),
63
+ allowedTools: z.array(z.string()).default(["*"]),
64
+ tokenBudget: z.object({
65
+ dailyLimit: z.number().default(100_000),
66
+ perBloopLimit: z.number().default(20_000),
67
+ }).default({}),
68
+ createdAt: z.string().datetime(),
69
+ updatedAt: z.string().datetime(),
70
+ });
71
+ // ── Tool Definition ──────────────────────────────────────────
72
+ export const ToolDefinition = z.object({
73
+ name: z.string(),
74
+ description: z.string(),
75
+ inputSchema: z.record(z.unknown()),
76
+ });
77
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { type Database as DatabaseType } from "better-sqlite3";
2
+ import type { Bloop, Project } from "../schemas.js";
3
+ import type { Schedule } from "../scheduler/scheduler.js";
4
+ import type { Trigger } from "../events/trigger-manager.js";
5
+ import type { MemoryEntry, MemoryType, KGEntity, KGEdge } from "../memory/schemas.js";
6
+ import type { Job, JobStats } from "../core/job-queue.js";
7
+ export declare class BeerCanDB {
8
+ private db;
9
+ constructor(dbPath: string);
10
+ /** Returns the underlying better-sqlite3 Database instance */
11
+ getDb(): DatabaseType;
12
+ private migrate;
13
+ createProject(project: Project): void;
14
+ getProject(id: string): Project | null;
15
+ getProjectBySlug(slug: string): Project | null;
16
+ listProjects(): Project[];
17
+ createBloop(bloop: Bloop): void;
18
+ updateBloop(bloop: Bloop): void;
19
+ getBloop(id: string): Bloop | null;
20
+ getProjectBloops(projectId: string, status?: string): Bloop[];
21
+ private rowToProject;
22
+ private rowToBloop;
23
+ createSchedule(schedule: Schedule): void;
24
+ getSchedule(id: string): Schedule | null;
25
+ listSchedules(projectSlug?: string): Schedule[];
26
+ deleteSchedule(id: string): void;
27
+ updateScheduleRun(id: string, lastRunAt: string): void;
28
+ createTrigger(trigger: Trigger): void;
29
+ listTriggers(projectSlug?: string): Trigger[];
30
+ deleteTrigger(id: string): void;
31
+ logEvent(event: {
32
+ id: string;
33
+ projectId: string;
34
+ eventType: string;
35
+ eventData: Record<string, unknown>;
36
+ triggerId: string;
37
+ createdAt: string;
38
+ }): void;
39
+ private rowToSchedule;
40
+ private rowToTrigger;
41
+ createMemoryEntry(entry: MemoryEntry): void;
42
+ getMemoryEntry(id: string): MemoryEntry | null;
43
+ listMemoryEntries(projectId: string, type?: MemoryType): MemoryEntry[];
44
+ supersedeMemoryEntry(oldId: string, newEntry: MemoryEntry): void;
45
+ searchMemoryFTS(projectId: string, query: string, limit?: number): MemoryEntry[];
46
+ deleteMemoryEntry(id: string): void;
47
+ private rowToMemoryEntry;
48
+ createKGEntity(entity: KGEntity): void;
49
+ getKGEntity(id: string): KGEntity | null;
50
+ findKGEntityByName(projectId: string, name: string): KGEntity | null;
51
+ listKGEntities(projectId: string, type?: string): KGEntity[];
52
+ searchKGEntities(projectId: string, query: string): KGEntity[];
53
+ updateKGEntity(id: string, updates: {
54
+ description?: string;
55
+ properties?: Record<string, unknown>;
56
+ }): void;
57
+ createKGEdge(edge: KGEdge): void;
58
+ getKGEdgesFrom(entityId: string): KGEdge[];
59
+ getKGEdgesTo(entityId: string): KGEdge[];
60
+ getKGEdgesBoth(entityId: string): KGEdge[];
61
+ createKGEntityMemoryLink(entityId: string, memoryId: string): void;
62
+ getKGEntityMemoryIds(entityId: string): string[];
63
+ getKGMemoryEntityIds(memoryId: string): string[];
64
+ private rowToKGEntity;
65
+ private rowToKGEdge;
66
+ setWorkingMemory(bloopId: string, key: string, value: string): void;
67
+ getWorkingMemory(bloopId: string, key: string): string | undefined;
68
+ listWorkingMemory(bloopId: string): Array<{
69
+ key: string;
70
+ value: string;
71
+ }>;
72
+ deleteWorkingMemory(bloopId: string, key: string): void;
73
+ clearWorkingMemory(bloopId: string): void;
74
+ private toBuffer;
75
+ storeVector(memoryId: string, embedding: Float32Array): void;
76
+ updateVector(memoryId: string, embedding: Float32Array): void;
77
+ deleteVector(memoryId: string): void;
78
+ queryVectors(embedding: Float32Array, topK?: number): Array<{
79
+ memoryId: string;
80
+ distance: number;
81
+ }>;
82
+ hasVectors(): boolean;
83
+ createJob(job: Job): void;
84
+ /** Atomically claim the highest-priority pending job. */
85
+ claimNextJob(): Job | null;
86
+ updateJob(id: string, updates: {
87
+ status?: string;
88
+ bloopId?: string;
89
+ error?: string;
90
+ completedAt?: string;
91
+ }): void;
92
+ getJobStats(): JobStats;
93
+ listJobs(status?: string, limit?: number): Job[];
94
+ private rowToJob;
95
+ close(): void;
96
+ }
97
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"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"}