@positronic/cloudflare 0.0.2 → 0.0.4

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 (52) hide show
  1. package/dist/src/api.js +1270 -0
  2. package/dist/src/brain-runner-do.js +654 -0
  3. package/dist/src/dev-server.js +1357 -0
  4. package/{src/index.ts → dist/src/index.js} +1 -6
  5. package/dist/src/manifest.js +278 -0
  6. package/dist/src/monitor-do.js +408 -0
  7. package/{src/node-index.ts → dist/src/node-index.js} +3 -7
  8. package/dist/src/r2-loader.js +207 -0
  9. package/dist/src/schedule-do.js +705 -0
  10. package/dist/src/sqlite-adapter.js +69 -0
  11. package/dist/types/api.d.ts +21 -0
  12. package/dist/types/api.d.ts.map +1 -0
  13. package/dist/types/brain-runner-do.d.ts +25 -0
  14. package/dist/types/brain-runner-do.d.ts.map +1 -0
  15. package/dist/types/dev-server.d.ts +45 -0
  16. package/dist/types/dev-server.d.ts.map +1 -0
  17. package/dist/types/index.d.ts +7 -0
  18. package/dist/types/index.d.ts.map +1 -0
  19. package/dist/types/manifest.d.ts +11 -0
  20. package/dist/types/manifest.d.ts.map +1 -0
  21. package/dist/types/monitor-do.d.ts +16 -0
  22. package/dist/types/monitor-do.d.ts.map +1 -0
  23. package/dist/types/node-index.d.ts +10 -0
  24. package/dist/types/node-index.d.ts.map +1 -0
  25. package/dist/types/r2-loader.d.ts +10 -0
  26. package/dist/types/r2-loader.d.ts.map +1 -0
  27. package/dist/types/schedule-do.d.ts +47 -0
  28. package/dist/types/schedule-do.d.ts.map +1 -0
  29. package/dist/types/sqlite-adapter.d.ts +10 -0
  30. package/dist/types/sqlite-adapter.d.ts.map +1 -0
  31. package/package.json +8 -4
  32. package/src/api.ts +0 -579
  33. package/src/brain-runner-do.ts +0 -309
  34. package/src/dev-server.ts +0 -776
  35. package/src/manifest.ts +0 -69
  36. package/src/monitor-do.ts +0 -268
  37. package/src/r2-loader.ts +0 -27
  38. package/src/schedule-do.ts +0 -377
  39. package/src/sqlite-adapter.ts +0 -50
  40. package/test-project/package-lock.json +0 -3010
  41. package/test-project/package.json +0 -21
  42. package/test-project/src/index.ts +0 -70
  43. package/test-project/src/runner.ts +0 -24
  44. package/test-project/tests/api.test.ts +0 -1005
  45. package/test-project/tests/r2loader.test.ts +0 -73
  46. package/test-project/tests/resources-api.test.ts +0 -671
  47. package/test-project/tests/spec.test.ts +0 -135
  48. package/test-project/tests/tsconfig.json +0 -7
  49. package/test-project/tsconfig.json +0 -20
  50. package/test-project/vitest.config.ts +0 -12
  51. package/test-project/wrangler.jsonc +0 -53
  52. package/tsconfig.json +0 -11
@@ -0,0 +1,69 @@
1
+ function _class_call_check(instance, Constructor) {
2
+ if (!(instance instanceof Constructor)) {
3
+ throw new TypeError("Cannot call a class as a function");
4
+ }
5
+ }
6
+ function _defineProperties(target, props) {
7
+ for(var i = 0; i < props.length; i++){
8
+ var descriptor = props[i];
9
+ descriptor.enumerable = descriptor.enumerable || false;
10
+ descriptor.configurable = true;
11
+ if ("value" in descriptor) descriptor.writable = true;
12
+ Object.defineProperty(target, descriptor.key, descriptor);
13
+ }
14
+ }
15
+ function _create_class(Constructor, protoProps, staticProps) {
16
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
17
+ if (staticProps) _defineProperties(Constructor, staticProps);
18
+ return Constructor;
19
+ }
20
+ function _define_property(obj, key, value) {
21
+ if (key in obj) {
22
+ Object.defineProperty(obj, key, {
23
+ value: value,
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true
27
+ });
28
+ } else {
29
+ obj[key] = value;
30
+ }
31
+ return obj;
32
+ }
33
+ // Define the new schema with a single events table
34
+ var initSQL = "\nCREATE TABLE IF NOT EXISTS brain_events (\n event_id INTEGER PRIMARY KEY AUTOINCREMENT,\n event_type TEXT NOT NULL,\n serialized_event TEXT NOT NULL CHECK(json_valid(serialized_event)),\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n);\n";
35
+ export var BrainRunSQLiteAdapter = /*#__PURE__*/ function() {
36
+ "use strict";
37
+ function BrainRunSQLiteAdapter(sql) {
38
+ _class_call_check(this, BrainRunSQLiteAdapter);
39
+ _define_property(this, "sql", void 0);
40
+ _define_property(this, "schemaInitialized", false) // Track schema initialization
41
+ ;
42
+ this.sql = sql;
43
+ }
44
+ _create_class(BrainRunSQLiteAdapter, [
45
+ {
46
+ key: "initializeSchema",
47
+ value: function initializeSchema() {
48
+ if (!this.schemaInitialized) {
49
+ this.sql.exec(initSQL);
50
+ this.schemaInitialized = true;
51
+ }
52
+ }
53
+ },
54
+ {
55
+ key: "dispatch",
56
+ value: function dispatch(event) {
57
+ try {
58
+ this.initializeSchema();
59
+ var insertSql = "\n INSERT INTO brain_events (\n event_type,\n serialized_event\n ) VALUES (?, ?);";
60
+ this.sql.exec(insertSql, event.type, JSON.stringify(event));
61
+ } catch (e) {
62
+ console.error('[SQL_ADAPTER] Error handling brain event:', e, 'Event data:', JSON.stringify(event));
63
+ throw e;
64
+ }
65
+ }
66
+ }
67
+ ]);
68
+ return BrainRunSQLiteAdapter;
69
+ }();
@@ -0,0 +1,21 @@
1
+ import { Hono } from 'hono';
2
+ import type { BrainRunnerDO } from './brain-runner-do.js';
3
+ import type { MonitorDO } from './monitor-do.js';
4
+ import type { ScheduleDO } from './schedule-do.js';
5
+ import type { R2Bucket } from '@cloudflare/workers-types';
6
+ type Bindings = {
7
+ BRAIN_RUNNER_DO: DurableObjectNamespace<BrainRunnerDO>;
8
+ MONITOR_DO: DurableObjectNamespace<MonitorDO>;
9
+ SCHEDULE_DO: DurableObjectNamespace<ScheduleDO>;
10
+ RESOURCES_BUCKET: R2Bucket;
11
+ NODE_ENV?: string;
12
+ R2_ACCESS_KEY_ID?: string;
13
+ R2_SECRET_ACCESS_KEY?: string;
14
+ R2_ACCOUNT_ID?: string;
15
+ R2_BUCKET_NAME?: string;
16
+ };
17
+ declare const app: Hono<{
18
+ Bindings: Bindings;
19
+ }, import("hono/types").BlankSchema, "/">;
20
+ export default app;
21
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,2BAA2B,CAAC;AAGpE,KAAK,QAAQ,GAAG;IACd,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAkBF,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;AA2hB/C,eAAe,GAAG,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { BrainRunner } from '@positronic/core';
2
+ import { DurableObject } from 'cloudflare:workers';
3
+ import type { MonitorDO } from './monitor-do.js';
4
+ import type { ScheduleDO } from './schedule-do.js';
5
+ import { PositronicManifest } from './manifest.js';
6
+ import type { R2Bucket } from '@cloudflare/workers-types';
7
+ export declare function setManifest(generatedManifest: PositronicManifest): void;
8
+ export declare function getManifest(): PositronicManifest | null;
9
+ export declare function setBrainRunner(runner: BrainRunner): void;
10
+ export interface Env {
11
+ BRAIN_RUNNER_DO: DurableObjectNamespace;
12
+ MONITOR_DO: DurableObjectNamespace<MonitorDO>;
13
+ SCHEDULE_DO: DurableObjectNamespace<ScheduleDO>;
14
+ RESOURCES_BUCKET: R2Bucket;
15
+ }
16
+ export declare class BrainRunnerDO extends DurableObject<Env> {
17
+ private sql;
18
+ private brainRunId;
19
+ private eventStreamAdapter;
20
+ constructor(state: DurableObjectState, env: Env);
21
+ private loadResourcesFromR2;
22
+ start(brainName: string, brainRunId: string, initialData?: Record<string, any>): Promise<void>;
23
+ fetch(request: Request): Promise<Response>;
24
+ }
25
+ //# sourceMappingURL=brain-runner-do.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,wBAAgB,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,QAEhE;AAED,wBAAgB,WAAW,IAAI,kBAAkB,GAAG,IAAI,CAEvD;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,QAEjD;AAED,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,sBAAsB,CAAC;IACxC,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;CAC5B;AAwDD,qBAAa,aAAc,SAAQ,aAAa,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;gBAE1C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;YAOjC,mBAAmB;IA0E3B,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAwD7B,KAAK,CAAC,OAAO,EAAE,OAAO;CA4E7B"}
@@ -0,0 +1,45 @@
1
+ import type { PositronicDevServer, ServerHandle } from '@positronic/spec';
2
+ export declare class CloudflareDevServer implements PositronicDevServer {
3
+ projectRootDir: string;
4
+ /**
5
+ * Sets up the .positronic server environment directory.
6
+ * If the directory is missing or forceSetup is true, it generates the
7
+ * full project in a temporary directory and copies the .positronic
8
+ * part into the actual project.
9
+ *
10
+ * Doing it this way because it's tricky to split the template-new-project
11
+ * into a template-cloudflare without lots of extra code, was better to combine
12
+ * backend templates into a single template-new-project. But then we still need
13
+ * a way to generate the .positronic directory if it's not there, so this is the
14
+ * simplest solution.
15
+ */
16
+ private logCallbacks;
17
+ private errorCallbacks;
18
+ private warningCallbacks;
19
+ constructor(projectRootDir: string);
20
+ setup(force?: boolean): Promise<void>;
21
+ private ensureServerDirectory;
22
+ private syncEnvironmentVariables;
23
+ private regenerateProjectManifest;
24
+ private updateWranglerConfiguration;
25
+ private parseEnvironmentFile;
26
+ private hasCompleteR2Credentials;
27
+ private applyWranglerConfigUpdates;
28
+ private configureRemoteR2;
29
+ private configureLocalR2;
30
+ start(port?: number): Promise<ServerHandle>;
31
+ watch(filePath: string, event: 'add' | 'change' | 'unlink'): Promise<void>;
32
+ deploy(): Promise<void>;
33
+ onLog(callback: (message: string) => void): void;
34
+ onError(callback: (message: string) => void): void;
35
+ onWarning(callback: (message: string) => void): void;
36
+ listSecrets(): Promise<Array<{
37
+ name: string;
38
+ createdAt?: Date;
39
+ updatedAt?: Date;
40
+ }>>;
41
+ setSecret(name: string, value: string): Promise<void>;
42
+ deleteSecret(name: string): Promise<boolean>;
43
+ bulkSecrets(filePath: string): Promise<void>;
44
+ }
45
+ //# sourceMappingURL=dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/dev-server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqL1E,qBAAa,mBAAoB,YAAW,mBAAmB;IAyB1C,cAAc,EAAE,MAAM;IAjBzC;;;;;;;;;;;OAWG;IAEH,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,gBAAgB,CAAwC;gBAE7C,cAAc,EAAE,MAAM;IAEnC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAiB7B,qBAAqB;YA4DrB,wBAAwB;YAqBxB,yBAAyB;YAQzB,2BAA2B;IAuBzC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;YASlB,0BAA0B;IA4BxC,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IA4BlB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkD3C,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GACjC,OAAO,CAAC,IAAI,CAAC;IAUV,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E7B,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIhD,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIlD,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,WAAW,IAAI,OAAO,CAC1B,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAC5D;IAwCK,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CrD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC5C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA0DnD"}
@@ -0,0 +1,7 @@
1
+ export { BrainRunnerDO, setBrainRunner, setManifest, getManifest, } from './brain-runner-do.js';
2
+ export { MonitorDO } from './monitor-do.js';
3
+ export { ScheduleDO } from './schedule-do.js';
4
+ export { PositronicManifest } from './manifest.js';
5
+ export { default as api } from './api.js';
6
+ export { CloudflareR2Loader } from './r2-loader.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Brain } from '@positronic/core';
2
+ export declare class PositronicManifest {
3
+ private importStrategy;
4
+ constructor(options: {
5
+ staticManifest?: Record<string, Brain>;
6
+ brainsDir?: string;
7
+ });
8
+ import(name: string): Promise<Brain | undefined>;
9
+ list(): string[];
10
+ }
11
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAwC9C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,cAAc,CAAsB;gBAEhC,OAAO,EAAE;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAeK,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAItD,IAAI,IAAI,MAAM,EAAE;CAGjB"}
@@ -0,0 +1,16 @@
1
+ import { DurableObject } from 'cloudflare:workers';
2
+ import type { BrainEvent } from '@positronic/core';
3
+ export interface Env {
4
+ }
5
+ export declare class MonitorDO extends DurableObject<Env> {
6
+ private readonly storage;
7
+ private eventStreamHandler;
8
+ constructor(state: DurableObjectState, env: Env);
9
+ handleBrainEvent(event: BrainEvent<any>): void;
10
+ private broadcastRunningBrains;
11
+ fetch(request: Request): Promise<Response>;
12
+ getLastEvent(brainRunId: string): Record<string, SqlStorageValue>;
13
+ history(brainTitle: string, limit?: number): Record<string, SqlStorageValue>[];
14
+ activeRuns(brainTitle: string): Record<string, SqlStorageValue>[];
15
+ }
16
+ //# sourceMappingURL=monitor-do.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-do.d.ts","sourceRoot":"","sources":["../../src/monitor-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,GAAG;CAEnB;AAED,qBAAa,SAAU,SAAQ,aAAa,CAAC,GAAG,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,kBAAkB,CAA4B;gBAE1C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IA2B/C,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;YAiDzB,sBAAsB;IA0B9B,KAAK,CAAC,OAAO,EAAE,OAAO;IA2D5B,YAAY,CAAC,UAAU,EAAE,MAAM;IAY/B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IA6B9C,UAAU,CAAC,UAAU,EAAE,MAAM;CAwB9B"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Node.js-compatible exports from @positronic/cloudflare
3
+ * This file is used when importing from Node.js environments (like the CLI)
4
+ * and excludes any Cloudflare Workers-specific modules.
5
+ */
6
+ export { PositronicManifest } from './manifest.js';
7
+ export { CloudflareR2Loader } from './r2-loader.js';
8
+ export { CloudflareDevServer } from './dev-server.js';
9
+ export { CloudflareDevServer as DevServer } from './dev-server.js';
10
+ //# sourceMappingURL=node-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-index.d.ts","sourceRoot":"","sources":["../../src/node-index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { R2Bucket } from '@cloudflare/workers-types';
2
+ import type { ResourceLoader } from '@positronic/core';
3
+ import { Buffer } from 'buffer';
4
+ export declare class CloudflareR2Loader implements ResourceLoader {
5
+ private bucket;
6
+ constructor(bucket: R2Bucket);
7
+ load(resourceName: string, type: 'text'): Promise<string>;
8
+ load(resourceName: string, type: 'binary'): Promise<Buffer>;
9
+ }
10
+ //# sourceMappingURL=r2-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r2-loader.d.ts","sourceRoot":"","sources":["../../src/r2-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,qBAAa,kBAAmB,YAAW,cAAc;IAC3C,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ;IAE9B,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACzD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAkBlE"}
@@ -0,0 +1,47 @@
1
+ import { DurableObject } from 'cloudflare:workers';
2
+ import { type BrainEvent } from '@positronic/core';
3
+ import type { BrainRunnerDO } from './brain-runner-do.js';
4
+ export interface Env {
5
+ BRAIN_RUNNER_DO: DurableObjectNamespace<BrainRunnerDO>;
6
+ IS_TEST?: string;
7
+ NODE_ENV?: string;
8
+ }
9
+ interface Schedule {
10
+ id: string;
11
+ brainName: string;
12
+ cronExpression: string;
13
+ enabled: boolean;
14
+ createdAt: number;
15
+ nextRunAt?: number;
16
+ }
17
+ interface ScheduledRun {
18
+ id: number;
19
+ scheduleId: string;
20
+ brainRunId?: string;
21
+ status: 'triggered' | 'failed' | 'complete';
22
+ ranAt: number;
23
+ completedAt?: number;
24
+ error?: string;
25
+ }
26
+ export declare class ScheduleDO extends DurableObject<Env> {
27
+ private readonly storage;
28
+ constructor(state: DurableObjectState, env: Env);
29
+ createSchedule(brainName: string, cronExpression: string): Promise<Schedule>;
30
+ getSchedule(scheduleId: string): Promise<Schedule | null>;
31
+ deleteSchedule(scheduleId: string): Promise<boolean>;
32
+ listSchedules(): Promise<{
33
+ schedules: Schedule[];
34
+ count: number;
35
+ }>;
36
+ getAllRuns(scheduleId?: string, limit?: number): Promise<{
37
+ runs: ScheduledRun[];
38
+ count: number;
39
+ }>;
40
+ alarm(): Promise<void>;
41
+ private triggerBrainRun;
42
+ handleBrainEvent(event: BrainEvent<any>): Promise<void>;
43
+ private isValidCronExpression;
44
+ private calculateNextRunTime;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=schedule-do.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-do.d.ts","sourceRoot":"","sources":["../../src/schedule-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,qBAAa,UAAW,SAAQ,aAAa,CAAC,GAAG,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAEzB,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAqCzC,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,QAAQ,CAAC;IAkCd,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyBzD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpD,aAAa,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkClE,UAAU,CACd,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,MAAY,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA4C7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Ed,eAAe;IAcvB,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C7D,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,oBAAoB;CAI7B"}
@@ -0,0 +1,10 @@
1
+ import type { Adapter, BrainEvent } from '@positronic/core';
2
+ import type { SqlStorage } from '@cloudflare/workers-types';
3
+ export declare class BrainRunSQLiteAdapter implements Adapter {
4
+ private sql;
5
+ private schemaInitialized;
6
+ constructor(sql: SqlStorage);
7
+ private initializeSchema;
8
+ dispatch(event: BrainEvent): void;
9
+ }
10
+ //# sourceMappingURL=sqlite-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/sqlite-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAY5D,qBAAa,qBAAsB,YAAW,OAAO;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,GAAG,EAAE,UAAU;IAI3B,OAAO,CAAC,gBAAgB;IAOjB,QAAQ,CAAC,KAAK,EAAE,UAAU;CAqBlC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@positronic/cloudflare",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -20,6 +20,10 @@
20
20
  },
21
21
  "main": "./dist/src/index.js",
22
22
  "types": "./dist/types/index.d.ts",
23
+ "files": [
24
+ "dist",
25
+ "package.json"
26
+ ],
23
27
  "scripts": {
24
28
  "tsc": "tsc --project tsconfig.json",
25
29
  "swc": "swc src -d dist",
@@ -27,9 +31,9 @@
27
31
  "clean": "rm -rf tsconfig.tsbuildinfo dist"
28
32
  },
29
33
  "dependencies": {
30
- "@positronic/core": "^0.0.1",
31
- "@positronic/spec": "^0.0.1",
32
- "@positronic/template-new-project": "^0.0.1",
34
+ "@positronic/core": "^0.0.3",
35
+ "@positronic/spec": "^0.0.3",
36
+ "@positronic/template-new-project": "^0.0.3",
33
37
  "aws4fetch": "^1.0.18",
34
38
  "caz": "^2.0.0",
35
39
  "cron-schedule": "^5.0.4",