@positronic/cloudflare 0.0.3 → 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.
- package/dist/src/api.js +1270 -0
- package/dist/src/brain-runner-do.js +654 -0
- package/dist/src/dev-server.js +1357 -0
- package/{src/index.ts → dist/src/index.js} +1 -6
- package/dist/src/manifest.js +278 -0
- package/dist/src/monitor-do.js +408 -0
- package/{src/node-index.ts → dist/src/node-index.js} +3 -7
- package/dist/src/r2-loader.js +207 -0
- package/dist/src/schedule-do.js +705 -0
- package/dist/src/sqlite-adapter.js +69 -0
- package/dist/types/api.d.ts +21 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/brain-runner-do.d.ts +25 -0
- package/dist/types/brain-runner-do.d.ts.map +1 -0
- package/dist/types/dev-server.d.ts +45 -0
- package/dist/types/dev-server.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/manifest.d.ts +11 -0
- package/dist/types/manifest.d.ts.map +1 -0
- package/dist/types/monitor-do.d.ts +16 -0
- package/dist/types/monitor-do.d.ts.map +1 -0
- package/dist/types/node-index.d.ts +10 -0
- package/dist/types/node-index.d.ts.map +1 -0
- package/dist/types/r2-loader.d.ts +10 -0
- package/dist/types/r2-loader.d.ts.map +1 -0
- package/dist/types/schedule-do.d.ts +47 -0
- package/dist/types/schedule-do.d.ts.map +1 -0
- package/dist/types/sqlite-adapter.d.ts +10 -0
- package/dist/types/sqlite-adapter.d.ts.map +1 -0
- package/package.json +5 -1
- package/src/api.ts +0 -579
- package/src/brain-runner-do.ts +0 -309
- package/src/dev-server.ts +0 -776
- package/src/manifest.ts +0 -69
- package/src/monitor-do.ts +0 -268
- package/src/r2-loader.ts +0 -27
- package/src/schedule-do.ts +0 -377
- package/src/sqlite-adapter.ts +0 -50
- package/test-project/package-lock.json +0 -3010
- package/test-project/package.json +0 -21
- package/test-project/src/index.ts +0 -70
- package/test-project/src/runner.ts +0 -24
- package/test-project/tests/api.test.ts +0 -1005
- package/test-project/tests/r2loader.test.ts +0 -73
- package/test-project/tests/resources-api.test.ts +0 -671
- package/test-project/tests/spec.test.ts +0 -135
- package/test-project/tests/tsconfig.json +0 -7
- package/test-project/tsconfig.json +0 -20
- package/test-project/vitest.config.ts +0 -12
- package/test-project/wrangler.jsonc +0 -53
- 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.
|
|
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",
|