@agentuity/runtime 0.0.42 → 0.0.44

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 (134) hide show
  1. package/AGENTS.md +11 -9
  2. package/README.md +4 -4
  3. package/dist/_context.d.ts +12 -4
  4. package/dist/_context.d.ts.map +1 -1
  5. package/dist/_server.d.ts +7 -4
  6. package/dist/_server.d.ts.map +1 -1
  7. package/dist/_services.d.ts +13 -2
  8. package/dist/_services.d.ts.map +1 -1
  9. package/dist/_util.d.ts +1 -1
  10. package/dist/_util.d.ts.map +1 -1
  11. package/dist/_waituntil.d.ts +1 -3
  12. package/dist/_waituntil.d.ts.map +1 -1
  13. package/dist/agent.d.ts +41 -14
  14. package/dist/agent.d.ts.map +1 -1
  15. package/dist/app.d.ts +90 -8
  16. package/dist/app.d.ts.map +1 -1
  17. package/dist/eval.d.ts +79 -0
  18. package/dist/eval.d.ts.map +1 -0
  19. package/dist/index.d.ts +6 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/io/email.d.ts +77 -0
  22. package/dist/io/email.d.ts.map +1 -0
  23. package/dist/logger/console.d.ts +21 -1
  24. package/dist/logger/console.d.ts.map +1 -1
  25. package/dist/logger/index.d.ts +0 -1
  26. package/dist/logger/index.d.ts.map +1 -1
  27. package/dist/logger/user.d.ts +2 -2
  28. package/dist/logger/user.d.ts.map +1 -1
  29. package/dist/otel/config.d.ts +3 -1
  30. package/dist/otel/config.d.ts.map +1 -1
  31. package/dist/otel/console.d.ts +2 -1
  32. package/dist/otel/console.d.ts.map +1 -1
  33. package/dist/otel/exporters/index.d.ts +4 -0
  34. package/dist/otel/exporters/index.d.ts.map +1 -0
  35. package/dist/otel/exporters/jsonl-log-exporter.d.ts +36 -0
  36. package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +1 -0
  37. package/dist/otel/exporters/jsonl-metric-exporter.d.ts +40 -0
  38. package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +1 -0
  39. package/dist/otel/exporters/jsonl-trace-exporter.d.ts +36 -0
  40. package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +1 -0
  41. package/dist/otel/http.d.ts.map +1 -1
  42. package/dist/otel/logger.d.ts +15 -11
  43. package/dist/otel/logger.d.ts.map +1 -1
  44. package/dist/otel/otel.d.ts +8 -2
  45. package/dist/otel/otel.d.ts.map +1 -1
  46. package/dist/router.d.ts +4 -1
  47. package/dist/router.d.ts.map +1 -1
  48. package/dist/services/evalrun/composite.d.ts +21 -0
  49. package/dist/services/evalrun/composite.d.ts.map +1 -0
  50. package/dist/services/evalrun/http.d.ts +24 -0
  51. package/dist/services/evalrun/http.d.ts.map +1 -0
  52. package/dist/services/evalrun/index.d.ts +5 -0
  53. package/dist/services/evalrun/index.d.ts.map +1 -0
  54. package/dist/services/evalrun/json.d.ts +21 -0
  55. package/dist/services/evalrun/json.d.ts.map +1 -0
  56. package/dist/services/evalrun/local.d.ts +19 -0
  57. package/dist/services/evalrun/local.d.ts.map +1 -0
  58. package/dist/services/local/_db.d.ts +4 -0
  59. package/dist/services/local/_db.d.ts.map +1 -0
  60. package/dist/services/local/_router.d.ts +3 -0
  61. package/dist/services/local/_router.d.ts.map +1 -0
  62. package/dist/services/local/_util.d.ts +18 -0
  63. package/dist/services/local/_util.d.ts.map +1 -0
  64. package/dist/services/local/index.d.ts +8 -0
  65. package/dist/services/local/index.d.ts.map +1 -0
  66. package/dist/services/local/keyvalue.d.ts +10 -0
  67. package/dist/services/local/keyvalue.d.ts.map +1 -0
  68. package/dist/services/local/objectstore.d.ts +11 -0
  69. package/dist/services/local/objectstore.d.ts.map +1 -0
  70. package/dist/services/local/stream.d.ts +10 -0
  71. package/dist/services/local/stream.d.ts.map +1 -0
  72. package/dist/services/local/vector.d.ts +13 -0
  73. package/dist/services/local/vector.d.ts.map +1 -0
  74. package/dist/services/session/composite.d.ts +21 -0
  75. package/dist/services/session/composite.d.ts.map +1 -0
  76. package/dist/services/session/http.d.ts +23 -0
  77. package/dist/services/session/http.d.ts.map +1 -0
  78. package/dist/services/session/index.d.ts +5 -0
  79. package/dist/services/session/index.d.ts.map +1 -0
  80. package/dist/services/session/json.d.ts +22 -0
  81. package/dist/services/session/json.d.ts.map +1 -0
  82. package/dist/services/session/local.d.ts +19 -0
  83. package/dist/services/session/local.d.ts.map +1 -0
  84. package/dist/session.d.ts +70 -0
  85. package/dist/session.d.ts.map +1 -0
  86. package/package.json +10 -6
  87. package/src/_config.ts +1 -1
  88. package/src/_context.ts +19 -16
  89. package/src/_server.ts +284 -42
  90. package/src/_services.ts +147 -34
  91. package/src/_util.ts +2 -3
  92. package/src/_waituntil.ts +5 -153
  93. package/src/agent.ts +667 -65
  94. package/src/app.ts +159 -13
  95. package/src/eval.ts +95 -0
  96. package/src/index.ts +6 -1
  97. package/src/io/email.ts +173 -0
  98. package/src/logger/console.ts +222 -15
  99. package/src/logger/index.ts +0 -1
  100. package/src/logger/user.ts +8 -4
  101. package/src/otel/config.ts +7 -44
  102. package/src/otel/console.ts +9 -4
  103. package/src/otel/exporters/README.md +217 -0
  104. package/src/otel/exporters/index.ts +3 -0
  105. package/src/otel/exporters/jsonl-log-exporter.ts +113 -0
  106. package/src/otel/exporters/jsonl-metric-exporter.ts +120 -0
  107. package/src/otel/exporters/jsonl-trace-exporter.ts +121 -0
  108. package/src/otel/http.ts +3 -1
  109. package/src/otel/logger.ts +106 -41
  110. package/src/otel/otel.ts +43 -22
  111. package/src/router.ts +44 -4
  112. package/src/services/evalrun/composite.ts +34 -0
  113. package/src/services/evalrun/http.ts +112 -0
  114. package/src/services/evalrun/index.ts +4 -0
  115. package/src/services/evalrun/json.ts +46 -0
  116. package/src/services/evalrun/local.ts +28 -0
  117. package/src/services/local/README.md +1576 -0
  118. package/src/services/local/_db.ts +182 -0
  119. package/src/services/local/_router.ts +86 -0
  120. package/src/services/local/_util.ts +49 -0
  121. package/src/services/local/index.ts +7 -0
  122. package/src/services/local/keyvalue.ts +118 -0
  123. package/src/services/local/objectstore.ts +152 -0
  124. package/src/services/local/stream.ts +296 -0
  125. package/src/services/local/vector.ts +264 -0
  126. package/src/services/session/composite.ts +33 -0
  127. package/src/services/session/http.ts +64 -0
  128. package/src/services/session/index.ts +4 -0
  129. package/src/services/session/json.ts +42 -0
  130. package/src/services/session/local.ts +28 -0
  131. package/src/session.ts +284 -0
  132. package/dist/_unauthenticated.d.ts +0 -26
  133. package/dist/_unauthenticated.d.ts.map +0 -1
  134. package/src/_unauthenticated.ts +0 -126
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_db.d.ts","sourceRoot":"","sources":["../../../src/services/local/_db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOtC,wBAAgB,UAAU,IAAI,QAAQ,CAkBrC;AAuJD,wBAAgB,YAAY,IAAI,IAAI,CAKnC"}
@@ -0,0 +1,3 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ export declare function createLocalStorageRouter(db: Database, projectPath: string): any;
3
+ //# sourceMappingURL=_router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_router.d.ts","sourceRoot":"","sources":["../../../src/services/local/_router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,GAAG,CAiF/E"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Normalize a project path to an absolute path for consistent DB keys
3
+ */
4
+ export declare function normalizeProjectPath(cwd?: string): string;
5
+ /**
6
+ * Simple character-based embedding for local vector search
7
+ * Not production-quality, but good enough for local dev/testing
8
+ */
9
+ export declare function simpleEmbedding(text: string, dimensions?: number): number[];
10
+ /**
11
+ * Calculate cosine similarity between two vectors
12
+ */
13
+ export declare function cosineSimilarity(a: number[], b: number[]): number;
14
+ /**
15
+ * Get current timestamp in milliseconds
16
+ */
17
+ export declare function now(): number;
18
+ //# sourceMappingURL=_util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_util.d.ts","sourceRoot":"","sources":["../../../src/services/local/_util.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAExE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAM,GAAG,MAAM,EAAE,CAaxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAUjE;AAED;;GAEG;AACH,wBAAgB,GAAG,IAAI,MAAM,CAE5B"}
@@ -0,0 +1,8 @@
1
+ export { getLocalDB, closeLocalDB } from './_db';
2
+ export { normalizeProjectPath, simpleEmbedding, cosineSimilarity } from './_util';
3
+ export { createLocalStorageRouter } from './_router';
4
+ export { LocalKeyValueStorage } from './keyvalue';
5
+ export { LocalObjectStorage } from './objectstore';
6
+ export { LocalStreamStorage } from './stream';
7
+ export { LocalVectorStorage } from './vector';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ import type { KeyValueStorage, DataResult, KeyValueStorageSetParams } from '@agentuity/core';
3
+ export declare class LocalKeyValueStorage implements KeyValueStorage {
4
+ #private;
5
+ constructor(db: Database, projectPath: string);
6
+ get<T>(name: string, key: string): Promise<DataResult<T>>;
7
+ set<T = unknown>(name: string, key: string, value: T, params?: KeyValueStorageSetParams): Promise<void>;
8
+ delete(name: string, key: string): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=keyvalue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyvalue.d.ts","sourceRoot":"","sources":["../../../src/services/local/keyvalue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACX,eAAe,EACf,UAAU,EAEV,wBAAwB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,oBAAqB,YAAW,eAAe;;gBAI/C,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM;IAKvC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAyCzD,GAAG,CAAC,CAAC,GAAG,OAAO,EACpB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,MAAM,CAAC,EAAE,wBAAwB,GAC/B,OAAO,CAAC,IAAI,CAAC;IA6CV,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtD"}
@@ -0,0 +1,11 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ import type { ObjectStorage, ObjectResult, ObjectStorePutParams, CreatePublicURLParams } from '@agentuity/core';
3
+ export declare class LocalObjectStorage implements ObjectStorage {
4
+ #private;
5
+ constructor(db: Database, projectPath: string, serverUrl: string);
6
+ get(bucket: string, key: string): Promise<ObjectResult>;
7
+ put(bucket: string, key: string, data: Uint8Array | ArrayBuffer | ReadableStream, params?: ObjectStorePutParams): Promise<void>;
8
+ delete(bucket: string, key: string): Promise<boolean>;
9
+ createPublicURL(bucket: string, key: string, _params?: CreatePublicURLParams): Promise<string>;
10
+ }
11
+ //# sourceMappingURL=objectstore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectstore.d.ts","sourceRoot":"","sources":["../../../src/services/local/objectstore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EAEZ,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,kBAAmB,YAAW,aAAa;;gBAK3C,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAM1D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BvD,GAAG,CACR,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,EAC/C,MAAM,CAAC,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAiEV,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcrD,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC;CAelB"}
@@ -0,0 +1,10 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ import type { StreamStorage, Stream, CreateStreamProps, ListStreamsParams, ListStreamsResponse } from '@agentuity/core';
3
+ export declare class LocalStreamStorage implements StreamStorage {
4
+ #private;
5
+ constructor(db: Database, projectPath: string, serverUrl: string);
6
+ create(name: string, props?: CreateStreamProps): Promise<Stream>;
7
+ list(params?: ListStreamsParams): Promise<ListStreamsResponse>;
8
+ delete(id: string): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/services/local/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACX,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EAEnB,MAAM,iBAAiB,CAAC;AAQzB,qBAAa,kBAAmB,YAAW,aAAa;;gBAM3C,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAY1D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAsChE,IAAI,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgE9D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYvC"}
@@ -0,0 +1,13 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ import type { VectorStorage, VectorUpsertParams, VectorUpsertResult, VectorResult, VectorSearchResultWithDocument, VectorSearchParams, VectorSearchResult } from '@agentuity/core';
3
+ export declare class LocalVectorStorage implements VectorStorage {
4
+ #private;
5
+ constructor(db: Database, projectPath: string);
6
+ upsert(name: string, ...documents: VectorUpsertParams[]): Promise<VectorUpsertResult[]>;
7
+ get<T extends Record<string, unknown> = Record<string, unknown>>(name: string, key: string): Promise<VectorResult<T>>;
8
+ getMany<T extends Record<string, unknown> = Record<string, unknown>>(name: string, ...keys: string[]): Promise<Map<string, VectorSearchResultWithDocument<T>>>;
9
+ search<T extends Record<string, unknown> = Record<string, unknown>>(name: string, params: VectorSearchParams<T>): Promise<VectorSearchResult<T>[]>;
10
+ delete(name: string, ...keys: string[]): Promise<number>;
11
+ exists(name: string): Promise<boolean>;
12
+ }
13
+ //# sourceMappingURL=vector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/services/local/vector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EAEZ,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,iBAAiB,CAAC;AAIzB,qBAAa,kBAAmB,YAAW,aAAa;;gBAI3C,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM;IAKvC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0EvF,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAoCrB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxE,IAAI,EAAE,MAAM,EACZ,GAAG,IAAI,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC;IAyBpD,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAgE7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAc5C"}
@@ -0,0 +1,21 @@
1
+ import { type SessionCompleteEvent, type SessionEventProvider, type SessionStartEvent } from '@agentuity/core';
2
+ /**
3
+ * A composite implementation of SessionEventProvider that forwards events to multiple providers
4
+ */
5
+ export declare class CompositeSessionEventProvider implements SessionEventProvider {
6
+ private providers;
7
+ constructor(...providers: SessionEventProvider[]);
8
+ /**
9
+ * called when the session starts
10
+ *
11
+ * @param event SessionStartEvent
12
+ */
13
+ start(event: SessionStartEvent): Promise<void>;
14
+ /**
15
+ * called when the session completes
16
+ *
17
+ * @param event SessionCompleteEvent
18
+ */
19
+ complete(event: SessionCompleteEvent): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=composite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../../src/services/session/composite.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,6BAA8B,YAAW,oBAAoB;IACzE,OAAO,CAAC,SAAS,CAAyB;gBAE9B,GAAG,SAAS,EAAE,oBAAoB,EAAE;IAGhD;;;;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;CAG1D"}
@@ -0,0 +1,23 @@
1
+ import { APIClient } from '@agentuity/server';
2
+ import { type SessionEventProvider, type SessionStartEvent, type SessionCompleteEvent, type Logger } from '@agentuity/core';
3
+ /**
4
+ * An implementation of the SessionEventProvider which uses HTTP for delivery
5
+ */
6
+ export declare class HTTPSessionEventProvider implements SessionEventProvider {
7
+ private apiClient;
8
+ private logger;
9
+ constructor(client: APIClient, logger: Logger);
10
+ /**
11
+ * called when the session starts
12
+ *
13
+ * @param event SessionStartEvent
14
+ */
15
+ start(event: SessionStartEvent): Promise<void>;
16
+ /**
17
+ * called when the session completes
18
+ *
19
+ * @param event SessionCompleteEvent
20
+ */
21
+ complete(event: SessionCompleteEvent): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/services/session/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2B,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EAGtB,KAAK,oBAAoB,EACzB,KAAK,MAAM,EACX,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,wBAAyB,YAAW,oBAAoB;IACpE,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAK7C;;;;OAIG;IACG,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpD;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAe1D"}
@@ -0,0 +1,5 @@
1
+ export * from './composite';
2
+ export * from './http';
3
+ export * from './json';
4
+ export * from './local';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,22 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
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;AAEzB;;GAEG;AACH,qBAAa,yBAA0B,YAAW,oBAAoB;IACrE;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3D"}
@@ -0,0 +1,70 @@
1
+ /** biome-ignore-all lint/suspicious/noExplicitAny: anys are great */
2
+ import type { Context } from 'hono';
3
+ import { type Env } from './app';
4
+ export type ThreadEventName = 'destroyed';
5
+ export type SessionEventName = 'completed';
6
+ type ThreadEventCallback<T extends Thread> = (eventName: 'destroyed', thread: T) => Promise<void> | void;
7
+ type SessionEventCallback<T extends Session> = (eventName: 'completed', session: T) => Promise<void> | void;
8
+ export interface Thread {
9
+ id: string;
10
+ state: Map<string, unknown>;
11
+ addEventListener(eventName: 'destroyed', callback: (eventName: 'destroyed', thread: Thread) => Promise<void> | void): void;
12
+ removeEventListener(eventName: 'destroyed', callback: (eventName: 'destroyed', thread: Thread) => Promise<void> | void): void;
13
+ destroy(): Promise<void>;
14
+ }
15
+ export interface Session {
16
+ id: string;
17
+ thread: Thread;
18
+ state: Map<string, unknown>;
19
+ addEventListener(eventName: 'completed', callback: (eventName: 'completed', session: Session) => Promise<void> | void): void;
20
+ removeEventListener(eventName: 'completed', callback: (eventName: 'completed', session: Session) => Promise<void> | void): void;
21
+ }
22
+ export interface ThreadProvider {
23
+ initialize(): Promise<void>;
24
+ restore(ctx: Context<Env>): Promise<Thread>;
25
+ save(thread: Thread): Promise<void>;
26
+ destroy(thread: Thread): Promise<void>;
27
+ }
28
+ export interface SessionProvider {
29
+ initialize(): Promise<void>;
30
+ restore(thread: Thread, sessionId: string): Promise<Session>;
31
+ save(session: Session): Promise<void>;
32
+ }
33
+ export declare function generateId(prefix?: string): string;
34
+ export declare class DefaultThread implements Thread {
35
+ #private;
36
+ readonly id: string;
37
+ readonly state: Map<string, unknown>;
38
+ private provider;
39
+ constructor(provider: ThreadProvider, id: string);
40
+ addEventListener(eventName: ThreadEventName, callback: ThreadEventCallback<any>): void;
41
+ removeEventListener(eventName: ThreadEventName, callback: ThreadEventCallback<any>): void;
42
+ fireEvent(eventName: ThreadEventName): Promise<void>;
43
+ destroy(): Promise<void>;
44
+ touch(): void;
45
+ expired(): boolean;
46
+ }
47
+ export declare class DefaultSession implements Session {
48
+ readonly id: string;
49
+ readonly thread: Thread;
50
+ readonly state: Map<string, unknown>;
51
+ constructor(thread: Thread, id: string);
52
+ addEventListener(eventName: SessionEventName, callback: SessionEventCallback<any>): void;
53
+ removeEventListener(eventName: SessionEventName, callback: SessionEventCallback<any>): void;
54
+ fireEvent(eventName: SessionEventName): Promise<void>;
55
+ }
56
+ export declare class DefaultThreadProvider implements ThreadProvider {
57
+ private threads;
58
+ initialize(): Promise<void>;
59
+ restore(ctx: Context<Env>): Promise<Thread>;
60
+ save(thread: Thread): Promise<void>;
61
+ destroy(thread: Thread): Promise<void>;
62
+ }
63
+ export declare class DefaultSessionProvider implements SessionProvider {
64
+ private sessions;
65
+ initialize(): Promise<void>;
66
+ restore(thread: Thread, sessionId: string): Promise<Session>;
67
+ save(session: Session): Promise<void>;
68
+ }
69
+ export {};
70
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "name": "@agentuity/runtime",
3
- "version": "0.0.42",
3
+ "version": "0.0.44",
4
+ "license": "Apache-2.0",
5
+ "author": "Agentuity employees and contributors",
4
6
  "type": "module",
5
7
  "main": "./src/index.ts",
6
8
  "types": "./dist/index.d.ts",
@@ -23,8 +25,8 @@
23
25
  "prepublishOnly": "bun run clean && bun run build"
24
26
  },
25
27
  "dependencies": {
26
- "@agentuity/core": "0.0.35",
27
- "@agentuity/server": "0.0.35",
28
+ "@agentuity/core": "0.0.43",
29
+ "@agentuity/server": "0.0.43",
28
30
  "@opentelemetry/api": "^1.9.0",
29
31
  "@opentelemetry/api-logs": "^0.207.0",
30
32
  "@opentelemetry/auto-instrumentations-node": "^0.66.0",
@@ -40,17 +42,19 @@
40
42
  "@opentelemetry/sdk-node": "^0.207.0",
41
43
  "@opentelemetry/sdk-trace-base": "^2.2.0",
42
44
  "@opentelemetry/semantic-conventions": "^1.37.0",
43
- "@traceloop/node-server-sdk": "^0.19.1"
45
+ "@traceloop/node-server-sdk": "^0.19.1",
46
+ "mailparser": "^3.7.1"
44
47
  },
45
48
  "peerDependencies": {
46
49
  "hono": "^4.10.3"
47
50
  },
48
51
  "devDependencies": {
52
+ "@types/mailparser": "^3.4.6",
49
53
  "@types/react": "^19.2.2",
50
54
  "@types/react-dom": "^19.2.2",
51
- "typescript": "^5.9.0",
52
55
  "react": "^19.2.0",
53
- "react-dom": "^19.2.0"
56
+ "react-dom": "^19.2.0",
57
+ "typescript": "^5.9.0"
54
58
  },
55
59
  "publishConfig": {
56
60
  "access": "public"
package/src/_config.ts CHANGED
@@ -79,7 +79,7 @@ export function isDevMode(): boolean {
79
79
  * @returns boolean
80
80
  */
81
81
  export function isProduction(): boolean {
82
- return process.env.NODE_ENV === 'production';
82
+ return process.env.NODE_ENV === 'production' && !isDevMode();
83
83
  }
84
84
 
85
85
  /**
package/src/_context.ts CHANGED
@@ -3,22 +3,27 @@ import type { Tracer } from '@opentelemetry/api';
3
3
  import type { KeyValueStorage, ObjectStorage, StreamStorage, VectorStorage } from '@agentuity/core';
4
4
  import type { AgentContext, AgentName } from './agent';
5
5
  import type { Logger } from './logger';
6
- import WaitUntilHandler from './_waituntil';
6
+ import type WaitUntilHandler from './_waituntil';
7
7
  import { registerServices } from './_services';
8
+ import type { Thread, Session } from './session';
8
9
 
9
10
  export interface RequestAgentContextArgs<TAgentMap, TAgent> {
10
11
  sessionId: string;
11
12
  agent: TAgentMap;
12
13
  current: TAgent;
14
+ parent?: TAgent;
13
15
  agentName: AgentName;
14
16
  logger: Logger;
15
17
  tracer: Tracer;
16
- setHeader: (k: string, v: string) => void;
18
+ session: Session;
19
+ thread: Thread;
20
+ handler: WaitUntilHandler;
17
21
  }
18
22
 
19
23
  export class RequestAgentContext<TAgentMap, TAgent> implements AgentContext {
20
24
  agent: TAgentMap;
21
25
  current: TAgent;
26
+ parent?: TAgent;
22
27
  agentName: AgentName;
23
28
  logger: Logger;
24
29
  sessionId: string;
@@ -27,25 +32,28 @@ export class RequestAgentContext<TAgentMap, TAgent> implements AgentContext {
27
32
  objectstore!: ObjectStorage;
28
33
  stream!: StreamStorage;
29
34
  vector!: VectorStorage;
30
- private waituntilHandler: WaitUntilHandler;
35
+ state: Map<string, unknown>;
36
+ session: Session;
37
+ thread: Thread;
38
+ private handler: WaitUntilHandler;
31
39
 
32
40
  constructor(args: RequestAgentContextArgs<TAgentMap, TAgent>) {
33
41
  this.agent = args.agent;
34
42
  this.current = args.current;
43
+ this.parent = args.parent;
35
44
  this.agentName = args.agentName;
36
45
  this.logger = args.logger;
37
46
  this.sessionId = args.sessionId;
38
47
  this.tracer = args.tracer;
39
- this.waituntilHandler = new WaitUntilHandler(args.setHeader, args.tracer);
40
- registerServices(this);
48
+ this.thread = args.thread;
49
+ this.session = args.session;
50
+ this.state = new Map<string, unknown>();
51
+ this.handler = args.handler;
52
+ registerServices(this, false); // agents already populated via args.agent
41
53
  }
42
54
 
43
55
  waitUntil(callback: Promise<void> | (() => void | Promise<void>)): void {
44
- this.waituntilHandler.waitUntil(callback);
45
- }
46
-
47
- waitUntilAll(): Promise<void> {
48
- return this.waituntilHandler.waitUntilAll(this.logger, this.sessionId);
56
+ this.handler.waitUntil(callback);
49
57
  }
50
58
  }
51
59
 
@@ -69,8 +77,7 @@ export const getAsyncLocalStorage = () => asyncLocalStorage;
69
77
  export const runInAgentContext = <TAgentMap, TAgent>(
70
78
  ctxObject: Record<string, unknown>,
71
79
  args: RequestAgentContextArgs<TAgentMap, TAgent>,
72
- next: () => Promise<void>,
73
- isWebSocket: boolean = false
80
+ next: () => Promise<void>
74
81
  ) => {
75
82
  const ctx = new RequestAgentContext(args);
76
83
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -83,10 +90,6 @@ export const runInAgentContext = <TAgentMap, TAgent>(
83
90
  }
84
91
  return asyncLocalStorage.run(ctx, async () => {
85
92
  const result = await next();
86
- // Don't call waitUntilAll for websocket upgrades - they stay open
87
- if (!isWebSocket) {
88
- setImmediate(() => ctx.waitUntilAll()); // TODO: move until session
89
- }
90
93
  return result;
91
94
  });
92
95
  };