@agentuity/runtime 0.1.13 → 0.1.14
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/package.json +8 -8
- package/src/_config.ts +13 -0
- package/src/_standalone.ts +167 -19
- package/src/index.ts +1 -0
- package/dist/_config.d.ts +0 -90
- package/dist/_config.d.ts.map +0 -1
- package/dist/_config.js +0 -135
- package/dist/_config.js.map +0 -1
- package/dist/_context.d.ts +0 -76
- package/dist/_context.d.ts.map +0 -1
- package/dist/_context.js +0 -147
- package/dist/_context.js.map +0 -1
- package/dist/_events.d.ts +0 -64
- package/dist/_events.d.ts.map +0 -1
- package/dist/_events.js +0 -92
- package/dist/_events.js.map +0 -1
- package/dist/_idle.d.ts +0 -7
- package/dist/_idle.d.ts.map +0 -1
- package/dist/_idle.js +0 -10
- package/dist/_idle.js.map +0 -1
- package/dist/_metadata.d.ts +0 -117
- package/dist/_metadata.d.ts.map +0 -1
- package/dist/_metadata.js +0 -246
- package/dist/_metadata.js.map +0 -1
- package/dist/_process-protection.d.ts +0 -25
- package/dist/_process-protection.d.ts.map +0 -1
- package/dist/_process-protection.js +0 -65
- package/dist/_process-protection.js.map +0 -1
- package/dist/_server.d.ts +0 -46
- package/dist/_server.d.ts.map +0 -1
- package/dist/_server.js +0 -85
- package/dist/_server.js.map +0 -1
- package/dist/_services.d.ts +0 -21
- package/dist/_services.d.ts.map +0 -1
- package/dist/_services.js +0 -248
- package/dist/_services.js.map +0 -1
- package/dist/_standalone.d.ts +0 -168
- package/dist/_standalone.d.ts.map +0 -1
- package/dist/_standalone.js +0 -441
- package/dist/_standalone.js.map +0 -1
- package/dist/_tokens.d.ts +0 -12
- package/dist/_tokens.d.ts.map +0 -1
- package/dist/_tokens.js +0 -96
- package/dist/_tokens.js.map +0 -1
- package/dist/_util.d.ts +0 -16
- package/dist/_util.d.ts.map +0 -1
- package/dist/_util.js +0 -54
- package/dist/_util.js.map +0 -1
- package/dist/_validation.d.ts +0 -89
- package/dist/_validation.d.ts.map +0 -1
- package/dist/_validation.js +0 -29
- package/dist/_validation.js.map +0 -1
- package/dist/_waituntil.d.ts +0 -18
- package/dist/_waituntil.d.ts.map +0 -1
- package/dist/_waituntil.js +0 -97
- package/dist/_waituntil.js.map +0 -1
- package/dist/agent.d.ts +0 -1210
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -903
- package/dist/agent.js.map +0 -1
- package/dist/app.d.ts +0 -322
- package/dist/app.d.ts.map +0 -1
- package/dist/app.js +0 -160
- package/dist/app.js.map +0 -1
- package/dist/bun-s3-patch.d.ts +0 -37
- package/dist/bun-s3-patch.d.ts.map +0 -1
- package/dist/bun-s3-patch.js +0 -139
- package/dist/bun-s3-patch.js.map +0 -1
- package/dist/cors.d.ts +0 -42
- package/dist/cors.d.ts.map +0 -1
- package/dist/cors.js +0 -117
- package/dist/cors.js.map +0 -1
- package/dist/devmode.d.ts +0 -3
- package/dist/devmode.d.ts.map +0 -1
- package/dist/devmode.js +0 -167
- package/dist/devmode.js.map +0 -1
- package/dist/eval.d.ts +0 -91
- package/dist/eval.d.ts.map +0 -1
- package/dist/eval.js +0 -16
- package/dist/eval.js.map +0 -1
- package/dist/handlers/cron.d.ts +0 -47
- package/dist/handlers/cron.d.ts.map +0 -1
- package/dist/handlers/cron.js +0 -49
- package/dist/handlers/cron.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -5
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -5
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/sse.d.ts +0 -91
- package/dist/handlers/sse.d.ts.map +0 -1
- package/dist/handlers/sse.js +0 -213
- package/dist/handlers/sse.js.map +0 -1
- package/dist/handlers/stream.d.ts +0 -52
- package/dist/handlers/stream.d.ts.map +0 -1
- package/dist/handlers/stream.js +0 -116
- package/dist/handlers/stream.js.map +0 -1
- package/dist/handlers/websocket.d.ts +0 -49
- package/dist/handlers/websocket.d.ts.map +0 -1
- package/dist/handlers/websocket.js +0 -143
- package/dist/handlers/websocket.js.map +0 -1
- package/dist/index.d.ts +0 -71
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -58
- package/dist/index.js.map +0 -1
- package/dist/logger/console.d.ts +0 -70
- package/dist/logger/console.d.ts.map +0 -1
- package/dist/logger/console.js +0 -274
- package/dist/logger/console.js.map +0 -1
- package/dist/logger/index.d.ts +0 -3
- package/dist/logger/index.d.ts.map +0 -1
- package/dist/logger/index.js +0 -3
- package/dist/logger/index.js.map +0 -1
- package/dist/logger/internal.d.ts +0 -79
- package/dist/logger/internal.d.ts.map +0 -1
- package/dist/logger/internal.js +0 -133
- package/dist/logger/internal.js.map +0 -1
- package/dist/logger/logger.d.ts +0 -41
- package/dist/logger/logger.d.ts.map +0 -1
- package/dist/logger/logger.js +0 -2
- package/dist/logger/logger.js.map +0 -1
- package/dist/logger/user.d.ts +0 -8
- package/dist/logger/user.d.ts.map +0 -1
- package/dist/logger/user.js +0 -7
- package/dist/logger/user.js.map +0 -1
- package/dist/logger/util.d.ts +0 -11
- package/dist/logger/util.d.ts.map +0 -1
- package/dist/logger/util.js +0 -77
- package/dist/logger/util.js.map +0 -1
- package/dist/middleware.d.ts +0 -112
- package/dist/middleware.d.ts.map +0 -1
- package/dist/middleware.js +0 -507
- package/dist/middleware.js.map +0 -1
- package/dist/otel/config.d.ts +0 -19
- package/dist/otel/config.d.ts.map +0 -1
- package/dist/otel/config.js +0 -26
- package/dist/otel/config.js.map +0 -1
- package/dist/otel/console.d.ts +0 -33
- package/dist/otel/console.d.ts.map +0 -1
- package/dist/otel/console.js +0 -86
- package/dist/otel/console.js.map +0 -1
- package/dist/otel/exporters/index.d.ts +0 -4
- package/dist/otel/exporters/index.d.ts.map +0 -1
- package/dist/otel/exporters/index.js +0 -4
- package/dist/otel/exporters/index.js.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.js +0 -103
- package/dist/otel/exporters/jsonl-log-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts +0 -40
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.js +0 -104
- package/dist/otel/exporters/jsonl-metric-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.js +0 -111
- package/dist/otel/exporters/jsonl-trace-exporter.js.map +0 -1
- package/dist/otel/fetch.d.ts +0 -12
- package/dist/otel/fetch.d.ts.map +0 -1
- package/dist/otel/fetch.js +0 -82
- package/dist/otel/fetch.js.map +0 -1
- package/dist/otel/http.d.ts +0 -16
- package/dist/otel/http.d.ts.map +0 -1
- package/dist/otel/http.js +0 -44
- package/dist/otel/http.js.map +0 -1
- package/dist/otel/logger.d.ts +0 -37
- package/dist/otel/logger.d.ts.map +0 -1
- package/dist/otel/logger.js +0 -268
- package/dist/otel/logger.js.map +0 -1
- package/dist/otel/otel.d.ts +0 -65
- package/dist/otel/otel.d.ts.map +0 -1
- package/dist/otel/otel.js +0 -261
- package/dist/otel/otel.js.map +0 -1
- package/dist/router.d.ts +0 -100
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js +0 -163
- package/dist/router.js.map +0 -1
- package/dist/services/evalrun/composite.d.ts +0 -21
- package/dist/services/evalrun/composite.d.ts.map +0 -1
- package/dist/services/evalrun/composite.js +0 -26
- package/dist/services/evalrun/composite.js.map +0 -1
- package/dist/services/evalrun/http.d.ts +0 -24
- package/dist/services/evalrun/http.d.ts.map +0 -1
- package/dist/services/evalrun/http.js +0 -86
- package/dist/services/evalrun/http.js.map +0 -1
- package/dist/services/evalrun/index.d.ts +0 -5
- package/dist/services/evalrun/index.d.ts.map +0 -1
- package/dist/services/evalrun/index.js +0 -5
- package/dist/services/evalrun/index.js.map +0 -1
- package/dist/services/evalrun/json.d.ts +0 -21
- package/dist/services/evalrun/json.d.ts.map +0 -1
- package/dist/services/evalrun/json.js +0 -38
- package/dist/services/evalrun/json.js.map +0 -1
- package/dist/services/evalrun/local.d.ts +0 -19
- package/dist/services/evalrun/local.d.ts.map +0 -1
- package/dist/services/evalrun/local.js +0 -22
- package/dist/services/evalrun/local.js.map +0 -1
- package/dist/services/local/_db.d.ts +0 -4
- package/dist/services/local/_db.d.ts.map +0 -1
- package/dist/services/local/_db.js +0 -123
- package/dist/services/local/_db.js.map +0 -1
- package/dist/services/local/_router.d.ts +0 -3
- package/dist/services/local/_router.d.ts.map +0 -1
- package/dist/services/local/_router.js +0 -28
- package/dist/services/local/_router.js.map +0 -1
- package/dist/services/local/_util.d.ts +0 -18
- package/dist/services/local/_util.d.ts.map +0 -1
- package/dist/services/local/_util.js +0 -44
- package/dist/services/local/_util.js.map +0 -1
- package/dist/services/local/index.d.ts +0 -7
- package/dist/services/local/index.d.ts.map +0 -1
- package/dist/services/local/index.js +0 -7
- package/dist/services/local/index.js.map +0 -1
- package/dist/services/local/keyvalue.d.ts +0 -17
- package/dist/services/local/keyvalue.d.ts.map +0 -1
- package/dist/services/local/keyvalue.js +0 -125
- package/dist/services/local/keyvalue.js.map +0 -1
- package/dist/services/local/stream.d.ts +0 -12
- package/dist/services/local/stream.d.ts.map +0 -1
- package/dist/services/local/stream.js +0 -262
- package/dist/services/local/stream.js.map +0 -1
- package/dist/services/local/vector.d.ts +0 -17
- package/dist/services/local/vector.d.ts.map +0 -1
- package/dist/services/local/vector.js +0 -303
- package/dist/services/local/vector.js.map +0 -1
- package/dist/services/sandbox/http.d.ts +0 -13
- package/dist/services/sandbox/http.d.ts.map +0 -1
- package/dist/services/sandbox/http.js +0 -130
- package/dist/services/sandbox/http.js.map +0 -1
- package/dist/services/sandbox/index.d.ts +0 -2
- package/dist/services/sandbox/index.d.ts.map +0 -1
- package/dist/services/sandbox/index.js +0 -2
- package/dist/services/sandbox/index.js.map +0 -1
- package/dist/services/session/composite.d.ts +0 -21
- package/dist/services/session/composite.d.ts.map +0 -1
- package/dist/services/session/composite.js +0 -26
- package/dist/services/session/composite.js.map +0 -1
- package/dist/services/session/http.d.ts +0 -34
- package/dist/services/session/http.d.ts.map +0 -1
- package/dist/services/session/http.js +0 -80
- package/dist/services/session/http.js.map +0 -1
- package/dist/services/session/index.d.ts +0 -5
- package/dist/services/session/index.d.ts.map +0 -1
- package/dist/services/session/index.js +0 -5
- package/dist/services/session/index.js.map +0 -1
- package/dist/services/session/json.d.ts +0 -22
- package/dist/services/session/json.d.ts.map +0 -1
- package/dist/services/session/json.js +0 -35
- package/dist/services/session/json.js.map +0 -1
- package/dist/services/session/local.d.ts +0 -19
- package/dist/services/session/local.d.ts.map +0 -1
- package/dist/services/session/local.js +0 -23
- package/dist/services/session/local.js.map +0 -1
- package/dist/services/thread/local.d.ts +0 -20
- package/dist/services/thread/local.d.ts.map +0 -1
- package/dist/services/thread/local.js +0 -158
- package/dist/services/thread/local.js.map +0 -1
- package/dist/session.d.ts +0 -734
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -1139
- package/dist/session.js.map +0 -1
- package/dist/validator.d.ts +0 -142
- package/dist/validator.d.ts.map +0 -1
- package/dist/validator.js +0 -149
- package/dist/validator.js.map +0 -1
- package/dist/web.d.ts +0 -8
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -66
- package/dist/web.js.map +0 -1
- package/dist/workbench.d.ts +0 -17
- package/dist/workbench.d.ts.map +0 -1
- package/dist/workbench.js +0 -507
- package/dist/workbench.js.map +0 -1
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { APIResponseSchemaNoData } from '@agentuity/server';
|
|
2
|
-
import { SessionStartEventDelayedSchema, SessionCompleteEventDelayedSchema, StructuredError, } from '@agentuity/core';
|
|
3
|
-
import { internal } from '../../logger/internal';
|
|
4
|
-
const SessionResponseError = StructuredError('SessionResponseError');
|
|
5
|
-
/**
|
|
6
|
-
* An implementation of the SessionEventProvider which uses HTTP for delivery.
|
|
7
|
-
*
|
|
8
|
-
* This provider checks that the event has required fields (orgId, projectId for start events)
|
|
9
|
-
* before sending to the backend. If required fields are missing, the event is silently skipped.
|
|
10
|
-
*/
|
|
11
|
-
export class HTTPSessionEventProvider {
|
|
12
|
-
apiClient;
|
|
13
|
-
logger;
|
|
14
|
-
constructor(client, logger) {
|
|
15
|
-
this.apiClient = client;
|
|
16
|
-
this.logger = logger;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Check if a start event has all required fields for HTTP delivery
|
|
20
|
-
*/
|
|
21
|
-
canSendStartEvent(event) {
|
|
22
|
-
// orgId and projectId are required for the backend
|
|
23
|
-
if (!event.orgId || !event.projectId) {
|
|
24
|
-
internal.info('[session-http] skipping start event - missing required fields: orgId=%s, projectId=%s', event.orgId ?? 'missing', event.projectId ?? 'missing');
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* called when the session starts
|
|
31
|
-
*
|
|
32
|
-
* @param event SessionStartEvent
|
|
33
|
-
*/
|
|
34
|
-
async start(event) {
|
|
35
|
-
// Check required fields before sending
|
|
36
|
-
if (!this.canSendStartEvent(event)) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
internal.info('[session-http] sending start event: %s', event.id);
|
|
40
|
-
this.logger.debug('Sending session start event: %s', event.id);
|
|
41
|
-
const resp = await this.apiClient.post('/session/2025-03-17', { ...event, timestamp: Date.now() }, APIResponseSchemaNoData(), SessionStartEventDelayedSchema);
|
|
42
|
-
if (resp.success) {
|
|
43
|
-
internal.info('[session-http] start event sent successfully: %s', event.id);
|
|
44
|
-
this.logger.debug('Session start event sent successfully: %s', event.id);
|
|
45
|
-
this.startedSessions.add(event.id);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
internal.info('[session-http] start event failed: %s - %s', event.id, resp.message);
|
|
49
|
-
throw new SessionResponseError({ message: resp.message });
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Track session IDs that have been started (to know if we should send complete)
|
|
53
|
-
*/
|
|
54
|
-
startedSessions = new Set();
|
|
55
|
-
/**
|
|
56
|
-
* called when the session completes
|
|
57
|
-
*
|
|
58
|
-
* @param event SessionCompleteEvent
|
|
59
|
-
*/
|
|
60
|
-
async complete(event) {
|
|
61
|
-
// Only send complete if we successfully sent a start event
|
|
62
|
-
// This prevents sending orphaned complete events when start was skipped
|
|
63
|
-
if (!this.startedSessions.has(event.id)) {
|
|
64
|
-
internal.info('[session-http] skipping complete event - no matching start: %s', event.id);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
this.startedSessions.delete(event.id);
|
|
68
|
-
internal.info('[session-http] sending complete event: %s, userData: %s', event.id, event.userData ? `${event.userData.length} bytes` : 'none');
|
|
69
|
-
this.logger.debug('Sending session complete event: %s', event.id);
|
|
70
|
-
const resp = await this.apiClient.put('/session/2025-03-17', { ...event, timestamp: Date.now() }, APIResponseSchemaNoData(), SessionCompleteEventDelayedSchema);
|
|
71
|
-
if (resp.success) {
|
|
72
|
-
internal.info('[session-http] complete event sent successfully: %s', event.id);
|
|
73
|
-
this.logger.debug('Session complete event sent successfully: %s', event.id);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
internal.info('[session-http] complete event failed: %s - %s', event.id, resp.message);
|
|
77
|
-
throw new SessionResponseError({ message: resp.message });
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=http.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/services/session/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/session/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/session/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type SessionEventProvider, type SessionStartEvent, type SessionCompleteEvent } from '@agentuity/core';
|
|
2
|
-
/**
|
|
3
|
-
* An implementation of the SessionEventProvider which uses JSON logs for delivery
|
|
4
|
-
*/
|
|
5
|
-
export declare class JSONSessionEventProvider implements SessionEventProvider {
|
|
6
|
-
private directory;
|
|
7
|
-
constructor(directory: string);
|
|
8
|
-
private makeFilename;
|
|
9
|
-
/**
|
|
10
|
-
* called when the session starts
|
|
11
|
-
*
|
|
12
|
-
* @param event SessionStartEvent
|
|
13
|
-
*/
|
|
14
|
-
start(event: SessionStartEvent): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* called when the session completes
|
|
17
|
-
*
|
|
18
|
-
* @param event SessionCompleteEvent
|
|
19
|
-
*/
|
|
20
|
-
complete(event: SessionCompleteEvent): Promise<void>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=json.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/services/session/json.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,wBAAyB,YAAW,oBAAoB;IACpE,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM;IAG7B,OAAO,CAAC,YAAY;IAGpB;;;;OAIG;IACG,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAK1D"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { join } from 'node:path';
|
|
2
|
-
import { randomUUID } from 'node:crypto';
|
|
3
|
-
/**
|
|
4
|
-
* An implementation of the SessionEventProvider which uses JSON logs for delivery
|
|
5
|
-
*/
|
|
6
|
-
export class JSONSessionEventProvider {
|
|
7
|
-
directory;
|
|
8
|
-
constructor(directory) {
|
|
9
|
-
this.directory = directory;
|
|
10
|
-
}
|
|
11
|
-
makeFilename(type) {
|
|
12
|
-
return join(this.directory, `session-${type}.${Date.now()}${randomUUID()}.json`);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* called when the session starts
|
|
16
|
-
*
|
|
17
|
-
* @param event SessionStartEvent
|
|
18
|
-
*/
|
|
19
|
-
async start(event) {
|
|
20
|
-
const filename = this.makeFilename('start');
|
|
21
|
-
const payload = JSON.stringify({ ...event, timestamp: new Date() }) + '\n';
|
|
22
|
-
await Bun.file(filename).write(payload);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* called when the session completes
|
|
26
|
-
*
|
|
27
|
-
* @param event SessionCompleteEvent
|
|
28
|
-
*/
|
|
29
|
-
async complete(event) {
|
|
30
|
-
const filename = this.makeFilename('complete');
|
|
31
|
-
const payload = JSON.stringify({ ...event, timestamp: new Date() }) + '\n';
|
|
32
|
-
await Bun.file(filename).write(payload);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=json.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/services/session/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAC5B,SAAS,CAAS;IAE1B,YAAY,SAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IACO,YAAY,CAAC,IAA0B;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IACD;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,KAAwB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;QAC3E,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,KAA2B;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;QAC3E,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;CACD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { type SessionEventProvider, type SessionStartEvent, type SessionCompleteEvent } from '@agentuity/core';
|
|
2
|
-
/**
|
|
3
|
-
* An implementation of the SessionEventProvider which is no-op
|
|
4
|
-
*/
|
|
5
|
-
export declare class LocalSessionEventProvider implements SessionEventProvider {
|
|
6
|
-
/**
|
|
7
|
-
* called when the session starts
|
|
8
|
-
*
|
|
9
|
-
* @param event SessionStartEvent
|
|
10
|
-
*/
|
|
11
|
-
start(event: SessionStartEvent): Promise<void>;
|
|
12
|
-
/**
|
|
13
|
-
* called when the session completes
|
|
14
|
-
*
|
|
15
|
-
* @param event SessionCompleteEvent
|
|
16
|
-
*/
|
|
17
|
-
complete(event: SessionCompleteEvent): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=local.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../src/services/session/local.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,MAAM,iBAAiB,CAAC;AAGzB;;GAEG;AACH,qBAAa,yBAA0B,YAAW,oBAAoB;IACrE;;;;OAIG;IACG,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAO1D"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { internal } from '../../logger/internal';
|
|
2
|
-
/**
|
|
3
|
-
* An implementation of the SessionEventProvider which is no-op
|
|
4
|
-
*/
|
|
5
|
-
export class LocalSessionEventProvider {
|
|
6
|
-
/**
|
|
7
|
-
* called when the session starts
|
|
8
|
-
*
|
|
9
|
-
* @param event SessionStartEvent
|
|
10
|
-
*/
|
|
11
|
-
async start(event) {
|
|
12
|
-
internal.info('[session-local] start event (no-op): %s', event.id);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* called when the session completes
|
|
16
|
-
*
|
|
17
|
-
* @param event SessionCompleteEvent
|
|
18
|
-
*/
|
|
19
|
-
async complete(event) {
|
|
20
|
-
internal.info('[session-local] complete event (no-op): %s, userData: %s', event.id, event.userData ? `${event.userData.length} bytes` : 'none');
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=local.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/services/session/local.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACrC;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,KAAwB;QACnC,QAAQ,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,KAA2B;QACzC,QAAQ,CAAC,IAAI,CACZ,0DAA0D,EAC1D,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAC1D,CAAC;IACH,CAAC;CACD"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Context } from 'hono';
|
|
2
|
-
import type { AppState } from '../../index';
|
|
3
|
-
import type { Env } from '../../app';
|
|
4
|
-
import { type Thread, type ThreadIDProvider, type ThreadProvider } from '../../session';
|
|
5
|
-
/**
|
|
6
|
-
* Local thread provider with SQLite persistence.
|
|
7
|
-
* Stores thread state in local DB for development and testing.
|
|
8
|
-
* Suitable for local development and testing with persistence across requests.
|
|
9
|
-
*/
|
|
10
|
-
export declare class LocalThreadProvider implements ThreadProvider {
|
|
11
|
-
private appState;
|
|
12
|
-
private threadIDProvider;
|
|
13
|
-
private db;
|
|
14
|
-
initialize(appState: AppState): Promise<void>;
|
|
15
|
-
setThreadIDProvider(provider: ThreadIDProvider): void;
|
|
16
|
-
restore(ctx: Context<Env>): Promise<Thread>;
|
|
17
|
-
save(thread: Thread): Promise<void>;
|
|
18
|
-
destroy(thread: Thread): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=local.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../src/services/thread/local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAKN,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,MAAM,eAAe,CAAC;AAGvB;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,gBAAgB,CAAmD;IAC3E,OAAO,CAAC,EAAE,CAAyB;IAE7B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnD,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI/C,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA2C3C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwGnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ5C"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { DefaultThread, DefaultThreadIDProvider, parseThreadData, validateThreadIdOrThrow, } from '../../session';
|
|
2
|
-
import { getLocalDB } from '../local/_db';
|
|
3
|
-
/**
|
|
4
|
-
* Local thread provider with SQLite persistence.
|
|
5
|
-
* Stores thread state in local DB for development and testing.
|
|
6
|
-
* Suitable for local development and testing with persistence across requests.
|
|
7
|
-
*/
|
|
8
|
-
export class LocalThreadProvider {
|
|
9
|
-
appState = null;
|
|
10
|
-
threadIDProvider = new DefaultThreadIDProvider();
|
|
11
|
-
db = null;
|
|
12
|
-
async initialize(appState) {
|
|
13
|
-
this.appState = appState;
|
|
14
|
-
this.db = getLocalDB();
|
|
15
|
-
// Create threads table if it doesn't exist
|
|
16
|
-
this.db.run(`
|
|
17
|
-
CREATE TABLE IF NOT EXISTS threads (
|
|
18
|
-
id TEXT PRIMARY KEY,
|
|
19
|
-
state TEXT NOT NULL,
|
|
20
|
-
updated_at INTEGER NOT NULL
|
|
21
|
-
)
|
|
22
|
-
`);
|
|
23
|
-
}
|
|
24
|
-
setThreadIDProvider(provider) {
|
|
25
|
-
this.threadIDProvider = provider;
|
|
26
|
-
}
|
|
27
|
-
async restore(ctx) {
|
|
28
|
-
if (this.appState === null || this.db === null) {
|
|
29
|
-
throw new Error('LocalThreadProvider.restore called before initialize(): appState/db not set; call initialize(appState) first');
|
|
30
|
-
}
|
|
31
|
-
const threadId = await this.threadIDProvider.getThreadId(this.appState, ctx);
|
|
32
|
-
validateThreadIdOrThrow(threadId);
|
|
33
|
-
// Create a restore function for lazy loading
|
|
34
|
-
const restoreFn = async () => {
|
|
35
|
-
if (!this.db) {
|
|
36
|
-
return { state: new Map(), metadata: {} };
|
|
37
|
-
}
|
|
38
|
-
const row = this.db
|
|
39
|
-
.query('SELECT state FROM threads WHERE id = ?')
|
|
40
|
-
.get(threadId);
|
|
41
|
-
const { flatStateJson, metadata } = parseThreadData(row?.state);
|
|
42
|
-
const state = new Map();
|
|
43
|
-
if (flatStateJson) {
|
|
44
|
-
try {
|
|
45
|
-
const data = JSON.parse(flatStateJson);
|
|
46
|
-
for (const [key, value] of Object.entries(data)) {
|
|
47
|
-
state.set(key, value);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
// Continue with empty state if parsing fails
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return { state, metadata: metadata || {} };
|
|
55
|
-
};
|
|
56
|
-
return new DefaultThread(this, threadId, restoreFn);
|
|
57
|
-
}
|
|
58
|
-
async save(thread) {
|
|
59
|
-
if (!this.db || !(thread instanceof DefaultThread)) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
const saveMode = thread.getSaveMode();
|
|
63
|
-
if (saveMode === 'none') {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const now = Date.now();
|
|
67
|
-
if (saveMode === 'merge') {
|
|
68
|
-
// For merge, we need to load existing state, apply operations, then save
|
|
69
|
-
const operations = thread.getPendingOperations();
|
|
70
|
-
const metadata = thread.getMetadataForSave();
|
|
71
|
-
// Load existing state
|
|
72
|
-
const row = this.db
|
|
73
|
-
.query('SELECT state FROM threads WHERE id = ?')
|
|
74
|
-
.get(thread.id);
|
|
75
|
-
const { flatStateJson, metadata: existingMetadata } = parseThreadData(row?.state);
|
|
76
|
-
const state = {};
|
|
77
|
-
if (flatStateJson) {
|
|
78
|
-
try {
|
|
79
|
-
Object.assign(state, JSON.parse(flatStateJson));
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// Continue with empty state if parsing fails
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
// Apply operations
|
|
86
|
-
for (const op of operations) {
|
|
87
|
-
switch (op.op) {
|
|
88
|
-
case 'clear':
|
|
89
|
-
for (const key of Object.keys(state)) {
|
|
90
|
-
delete state[key];
|
|
91
|
-
}
|
|
92
|
-
break;
|
|
93
|
-
case 'set':
|
|
94
|
-
if (op.key !== undefined) {
|
|
95
|
-
state[op.key] = op.value;
|
|
96
|
-
}
|
|
97
|
-
break;
|
|
98
|
-
case 'delete':
|
|
99
|
-
if (op.key !== undefined) {
|
|
100
|
-
delete state[op.key];
|
|
101
|
-
}
|
|
102
|
-
break;
|
|
103
|
-
case 'push':
|
|
104
|
-
if (op.key !== undefined) {
|
|
105
|
-
const existing = state[op.key];
|
|
106
|
-
let arr;
|
|
107
|
-
if (Array.isArray(existing)) {
|
|
108
|
-
existing.push(op.value);
|
|
109
|
-
arr = existing;
|
|
110
|
-
}
|
|
111
|
-
else if (existing === undefined) {
|
|
112
|
-
arr = [op.value];
|
|
113
|
-
state[op.key] = arr;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
// If non-array, silently skip
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
// Apply maxRecords limit
|
|
120
|
-
if (op.maxRecords !== undefined && arr.length > op.maxRecords) {
|
|
121
|
-
state[op.key] = arr.slice(arr.length - op.maxRecords);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// Build final data
|
|
128
|
-
const finalMetadata = metadata || existingMetadata || {};
|
|
129
|
-
const hasState = Object.keys(state).length > 0;
|
|
130
|
-
const hasMetadata = Object.keys(finalMetadata).length > 0;
|
|
131
|
-
let stateJson = '';
|
|
132
|
-
if (hasState || hasMetadata) {
|
|
133
|
-
const data = {};
|
|
134
|
-
if (hasState)
|
|
135
|
-
data.state = state;
|
|
136
|
-
if (hasMetadata)
|
|
137
|
-
data.metadata = finalMetadata;
|
|
138
|
-
stateJson = JSON.stringify(data);
|
|
139
|
-
}
|
|
140
|
-
this.db.run(`INSERT INTO threads (id, state, updated_at) VALUES (?, ?, ?)
|
|
141
|
-
ON CONFLICT(id) DO UPDATE SET state = ?, updated_at = ?`, [thread.id, stateJson, now, stateJson, now]);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
// Full save
|
|
145
|
-
const stateJson = await thread.getSerializedState();
|
|
146
|
-
this.db.run(`INSERT INTO threads (id, state, updated_at) VALUES (?, ?, ?)
|
|
147
|
-
ON CONFLICT(id) DO UPDATE SET state = ?, updated_at = ?`, [thread.id, stateJson, now, stateJson, now]);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
async destroy(thread) {
|
|
151
|
-
if (!this.db) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
// Delete thread from DB
|
|
155
|
-
this.db.run('DELETE FROM threads WHERE id = ?', [thread.id]);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=local.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/services/thread/local.ts"],"names":[],"mappings":"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"}
|