@boringos/core 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 (66) hide show
  1. package/LICENSE +21 -0
  2. package/dist/admin-routes.d.ts +12 -0
  3. package/dist/admin-routes.d.ts.map +1 -0
  4. package/dist/admin-routes.js +836 -0
  5. package/dist/admin-routes.js.map +1 -0
  6. package/dist/auth-routes.d.ts +9 -0
  7. package/dist/auth-routes.d.ts.map +1 -0
  8. package/dist/auth-routes.js +112 -0
  9. package/dist/auth-routes.js.map +1 -0
  10. package/dist/auth.d.ts +32 -0
  11. package/dist/auth.d.ts.map +1 -0
  12. package/dist/auth.js +102 -0
  13. package/dist/auth.js.map +1 -0
  14. package/dist/boringos.d.ts +52 -0
  15. package/dist/boringos.d.ts.map +1 -0
  16. package/dist/boringos.js +301 -0
  17. package/dist/boringos.js.map +1 -0
  18. package/dist/connector-routes.d.ts +5 -0
  19. package/dist/connector-routes.d.ts.map +1 -0
  20. package/dist/connector-routes.js +77 -0
  21. package/dist/connector-routes.js.map +1 -0
  22. package/dist/device-auth-routes.d.ts +12 -0
  23. package/dist/device-auth-routes.d.ts.map +1 -0
  24. package/dist/device-auth-routes.js +68 -0
  25. package/dist/device-auth-routes.js.map +1 -0
  26. package/dist/index.d.ts +17 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +8 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/notifications.d.ts +30 -0
  31. package/dist/notifications.d.ts.map +1 -0
  32. package/dist/notifications.js +61 -0
  33. package/dist/notifications.js.map +1 -0
  34. package/dist/plugin-routes.d.ts +12 -0
  35. package/dist/plugin-routes.d.ts.map +1 -0
  36. package/dist/plugin-routes.js +70 -0
  37. package/dist/plugin-routes.js.map +1 -0
  38. package/dist/plugin-system.d.ts +57 -0
  39. package/dist/plugin-system.d.ts.map +1 -0
  40. package/dist/plugin-system.js +62 -0
  41. package/dist/plugin-system.js.map +1 -0
  42. package/dist/plugins/github.d.ts +18 -0
  43. package/dist/plugins/github.d.ts.map +1 -0
  44. package/dist/plugins/github.js +97 -0
  45. package/dist/plugins/github.js.map +1 -0
  46. package/dist/realtime.d.ts +15 -0
  47. package/dist/realtime.d.ts.map +1 -0
  48. package/dist/realtime.js +38 -0
  49. package/dist/realtime.js.map +1 -0
  50. package/dist/routes.d.ts +12 -0
  51. package/dist/routes.d.ts.map +1 -0
  52. package/dist/routes.js +151 -0
  53. package/dist/routes.js.map +1 -0
  54. package/dist/scheduler.d.ts +13 -0
  55. package/dist/scheduler.d.ts.map +1 -0
  56. package/dist/scheduler.js +77 -0
  57. package/dist/scheduler.js.map +1 -0
  58. package/dist/sse-routes.d.ts +4 -0
  59. package/dist/sse-routes.d.ts.map +1 -0
  60. package/dist/sse-routes.js +37 -0
  61. package/dist/sse-routes.js.map +1 -0
  62. package/dist/types.d.ts +81 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +2 -0
  65. package/dist/types.js.map +1 -0
  66. package/package.json +53 -0
@@ -0,0 +1,77 @@
1
+ import { eq } from "drizzle-orm";
2
+ import { routines } from "@boringos/db";
3
+ /**
4
+ * Simple interval-based routine scheduler.
5
+ * Checks every 60 seconds for routines whose cron expression matches the current minute.
6
+ * No external cron library — uses basic time matching.
7
+ */
8
+ export function createRoutineScheduler(db, engine) {
9
+ let interval = null;
10
+ async function tick() {
11
+ const activeRoutines = await db.select().from(routines).where(eq(routines.status, "active"));
12
+ for (const routine of activeRoutines) {
13
+ if (shouldRun(routine.cronExpression, routine.timezone ?? "UTC")) {
14
+ try {
15
+ const outcome = await engine.wake({
16
+ agentId: routine.assigneeAgentId,
17
+ tenantId: routine.tenantId,
18
+ reason: "routine_triggered",
19
+ });
20
+ if (outcome.kind === "created") {
21
+ await engine.enqueue(outcome.wakeupRequestId);
22
+ }
23
+ await db.update(routines).set({
24
+ lastTriggeredAt: new Date(),
25
+ updatedAt: new Date(),
26
+ }).where(eq(routines.id, routine.id));
27
+ }
28
+ catch {
29
+ // Routine trigger failure — silently skip this tick
30
+ }
31
+ }
32
+ }
33
+ }
34
+ return {
35
+ start() {
36
+ // Check every 60 seconds
37
+ interval = setInterval(() => tick().catch(() => { }), 60_000);
38
+ // Also run immediately on start
39
+ tick().catch(() => { });
40
+ },
41
+ stop() {
42
+ if (interval) {
43
+ clearInterval(interval);
44
+ interval = null;
45
+ }
46
+ },
47
+ };
48
+ }
49
+ /**
50
+ * Simple cron expression matcher.
51
+ * Supports standard 5-field: minute hour day-of-month month day-of-week
52
+ * Supports: *, specific numbers, and * / step patterns (e.g., * /5 for every 5 minutes)
53
+ */
54
+ function shouldRun(cronExpression, _timezone) {
55
+ const now = new Date();
56
+ const parts = cronExpression.trim().split(/\s+/);
57
+ if (parts.length !== 5)
58
+ return false;
59
+ const [minute, hour, dayOfMonth, month, dayOfWeek] = parts;
60
+ return (matchField(minute, now.getMinutes()) &&
61
+ matchField(hour, now.getHours()) &&
62
+ matchField(dayOfMonth, now.getDate()) &&
63
+ matchField(month, now.getMonth() + 1) &&
64
+ matchField(dayOfWeek, now.getDay()));
65
+ }
66
+ function matchField(field, value) {
67
+ if (field === "*")
68
+ return true;
69
+ // Step: */5 means every 5
70
+ if (field.startsWith("*/")) {
71
+ const step = parseInt(field.slice(2));
72
+ return value % step === 0;
73
+ }
74
+ // Exact match
75
+ return parseInt(field) === value;
76
+ }
77
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Hono } from "hono";
2
+ import type { RealtimeBus } from "./realtime.js";
3
+ export declare function createSSERoutes(bus: RealtimeBus, adminKey: string): Hono;
4
+ //# sourceMappingURL=sse-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-routes.d.ts","sourceRoot":"","sources":["../src/sse-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAwCxE"}
@@ -0,0 +1,37 @@
1
+ import { Hono } from "hono";
2
+ import { streamSSE } from "hono/streaming";
3
+ export function createSSERoutes(bus, adminKey) {
4
+ const app = new Hono();
5
+ // GET /events — SSE stream, authenticated via API key query param or header
6
+ app.get("/events", async (c) => {
7
+ const key = c.req.header("X-API-Key") ?? c.req.query("apiKey");
8
+ if (!key || key !== adminKey) {
9
+ return c.json({ error: "Invalid or missing API key" }, 401);
10
+ }
11
+ const tenantId = c.req.header("X-Tenant-Id") ?? c.req.query("tenantId");
12
+ if (!tenantId) {
13
+ return c.json({ error: "Missing tenant ID" }, 400);
14
+ }
15
+ return streamSSE(c, async (stream) => {
16
+ const unsubscribe = bus.subscribe(tenantId, (event) => {
17
+ stream.writeSSE({
18
+ event: event.type,
19
+ data: JSON.stringify(event),
20
+ });
21
+ });
22
+ // Keep connection alive with heartbeat
23
+ const heartbeat = setInterval(() => {
24
+ stream.writeSSE({ event: "heartbeat", data: "" });
25
+ }, 30000);
26
+ // Clean up on disconnect
27
+ stream.onAbort(() => {
28
+ unsubscribe();
29
+ clearInterval(heartbeat);
30
+ });
31
+ // Hold the connection open
32
+ await new Promise(() => { });
33
+ });
34
+ });
35
+ return app;
36
+ }
37
+ //# sourceMappingURL=sse-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-routes.js","sourceRoot":"","sources":["../src/sse-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,UAAU,eAAe,CAAC,GAAgB,EAAE,QAAgB;IAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,4EAA4E;IAC5E,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBACpD,MAAM,CAAC,QAAQ,CAAC;oBACd,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC5B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,uCAAuC;YACvC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,CAAC,EAAE,KAAK,CAAC,CAAC;YAEV,yBAAyB;YACzB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClB,WAAW,EAAE,CAAC;gBACd,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,2BAA2B;YAC3B,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,81 @@
1
+ import type { MemoryProvider } from "@boringos/memory";
2
+ import type { RuntimeRegistry } from "@boringos/runtime";
3
+ import type { StorageBackend } from "@boringos/drive";
4
+ import type { DatabaseConfig } from "@boringos/db";
5
+ import type { AgentEngine } from "@boringos/agent";
6
+ import type { WorkflowEngine } from "@boringos/workflow";
7
+ import type { SkillProvider } from "@boringos/shared";
8
+ export interface BoringOSConfig {
9
+ database?: DatabaseConfig;
10
+ redis?: string;
11
+ auth?: AuthConfig;
12
+ drive?: DriveAppConfig;
13
+ logging?: LogConfig;
14
+ }
15
+ export interface AuthConfig {
16
+ secret: string;
17
+ adminKey?: string;
18
+ url?: string;
19
+ tokenExpirySeconds?: number;
20
+ }
21
+ export interface DriveAppConfig {
22
+ root?: string;
23
+ backend?: StorageBackend;
24
+ }
25
+ export interface LogConfig {
26
+ level?: "trace" | "debug" | "info" | "warn" | "error" | "fatal";
27
+ pretty?: boolean;
28
+ }
29
+ export interface AppContext {
30
+ config: BoringOSConfig;
31
+ db: unknown;
32
+ memory: MemoryProvider;
33
+ drive: StorageBackend | null;
34
+ runtimes: RuntimeRegistry;
35
+ agentEngine: AgentEngine | null;
36
+ workflowEngine: WorkflowEngine | null;
37
+ }
38
+ export interface ConnectorDefinition extends SkillProvider {
39
+ name: string;
40
+ type: string;
41
+ setup?(ctx: AppContext): Promise<void>;
42
+ }
43
+ export interface SkillDefinition {
44
+ key: string;
45
+ name: string;
46
+ source: SkillSource;
47
+ trustLevel?: "markdown_only" | "assets" | "scripts_executables";
48
+ }
49
+ export type SkillSource = {
50
+ type: "local";
51
+ path: string;
52
+ } | {
53
+ type: "github";
54
+ repo: string;
55
+ path?: string;
56
+ ref?: string;
57
+ } | {
58
+ type: "url";
59
+ url: string;
60
+ };
61
+ export interface PersonaBundle {
62
+ agentsMd?: string;
63
+ soulMd?: string;
64
+ heartbeatMd?: string;
65
+ }
66
+ export interface PluginManifest {
67
+ name: string;
68
+ version: string;
69
+ setup(ctx: AppContext): Promise<void>;
70
+ }
71
+ export type LifecycleHook = (ctx: AppContext) => Promise<void>;
72
+ export interface StartedServer {
73
+ url: string;
74
+ port: number;
75
+ context: AppContext;
76
+ close(): Promise<void>;
77
+ }
78
+ export interface TestInstance extends StartedServer {
79
+ reset(): Promise<void>;
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@boringos/core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "license": "MIT",
14
+ "dependencies": {
15
+ "better-auth": "^1.6.0",
16
+ "hono": "^4.7.0",
17
+ "@hono/node-server": "^1.13.0",
18
+ "@boringos/shared": "0.1.0",
19
+ "@boringos/memory": "0.1.0",
20
+ "@boringos/runtime": "0.1.0",
21
+ "@boringos/drive": "0.1.0",
22
+ "@boringos/db": "0.1.0",
23
+ "@boringos/agent": "0.1.0",
24
+ "@boringos/pipeline": "0.1.0",
25
+ "@boringos/connector": "0.1.0",
26
+ "@boringos/workflow": "0.1.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^22.0.0",
30
+ "typescript": "^5.7.3"
31
+ },
32
+ "description": "Application host — the entry point for BoringOS",
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/BoringOS-dev/boringos.git"
36
+ },
37
+ "homepage": "https://boringos.dev",
38
+ "author": "BoringOS Contributors",
39
+ "files": [
40
+ "dist",
41
+ "README.md"
42
+ ],
43
+ "keywords": [
44
+ "boringos",
45
+ "agentic",
46
+ "ai-agents",
47
+ "framework"
48
+ ],
49
+ "scripts": {
50
+ "build": "tsc",
51
+ "typecheck": "tsc --noEmit"
52
+ }
53
+ }