@agentuity/runtime 0.0.60 → 0.0.61

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 (61) hide show
  1. package/dist/_context.d.ts +11 -7
  2. package/dist/_context.d.ts.map +1 -1
  3. package/dist/_context.js +9 -2
  4. package/dist/_context.js.map +1 -1
  5. package/dist/_server.d.ts +4 -2
  6. package/dist/_server.d.ts.map +1 -1
  7. package/dist/_server.js +71 -31
  8. package/dist/_server.js.map +1 -1
  9. package/dist/_services.d.ts +1 -1
  10. package/dist/_services.d.ts.map +1 -1
  11. package/dist/_services.js +4 -2
  12. package/dist/_services.js.map +1 -1
  13. package/dist/_waituntil.d.ts.map +1 -1
  14. package/dist/_waituntil.js +5 -2
  15. package/dist/_waituntil.js.map +1 -1
  16. package/dist/agent.d.ts +647 -19
  17. package/dist/agent.d.ts.map +1 -1
  18. package/dist/agent.js +55 -6
  19. package/dist/agent.js.map +1 -1
  20. package/dist/app.d.ts +205 -28
  21. package/dist/app.d.ts.map +1 -1
  22. package/dist/app.js +181 -13
  23. package/dist/app.js.map +1 -1
  24. package/dist/index.d.ts +41 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/io/email.d.ts.map +1 -1
  29. package/dist/io/email.js +11 -3
  30. package/dist/io/email.js.map +1 -1
  31. package/dist/router.d.ts +282 -32
  32. package/dist/router.d.ts.map +1 -1
  33. package/dist/router.js +110 -35
  34. package/dist/router.js.map +1 -1
  35. package/dist/services/evalrun/http.d.ts.map +1 -1
  36. package/dist/services/evalrun/http.js +7 -5
  37. package/dist/services/evalrun/http.js.map +1 -1
  38. package/dist/services/local/_util.d.ts.map +1 -1
  39. package/dist/services/local/_util.js +3 -1
  40. package/dist/services/local/_util.js.map +1 -1
  41. package/dist/services/session/http.d.ts.map +1 -1
  42. package/dist/services/session/http.js +4 -3
  43. package/dist/services/session/http.js.map +1 -1
  44. package/dist/session.d.ts +284 -4
  45. package/dist/session.d.ts.map +1 -1
  46. package/dist/session.js +2 -2
  47. package/dist/session.js.map +1 -1
  48. package/package.json +5 -4
  49. package/src/_context.ts +37 -9
  50. package/src/_server.ts +88 -36
  51. package/src/_services.ts +9 -2
  52. package/src/_waituntil.ts +13 -2
  53. package/src/agent.ts +856 -68
  54. package/src/app.ts +238 -38
  55. package/src/index.ts +42 -2
  56. package/src/io/email.ts +23 -5
  57. package/src/router.ts +359 -83
  58. package/src/services/evalrun/http.ts +15 -4
  59. package/src/services/local/_util.ts +7 -1
  60. package/src/services/session/http.ts +5 -2
  61. package/src/session.ts +297 -4
@@ -1,3 +1,4 @@
1
+ import { StructuredError } from '@agentuity/core';
1
2
  import { resolve } from 'node:path';
2
3
  /**
3
4
  * Normalize a project path to an absolute path for consistent DB keys
@@ -21,12 +22,13 @@ export function simpleEmbedding(text, dimensions = 128) {
21
22
  const magnitude = Math.sqrt(vec.reduce((sum, v) => sum + v * v, 0));
22
23
  return magnitude > 0 ? vec.map((v) => v / magnitude) : vec;
23
24
  }
25
+ const InvalidVectorError = StructuredError('InvalidVectorError', 'Vectors must have the same dimension');
24
26
  /**
25
27
  * Calculate cosine similarity between two vectors
26
28
  */
27
29
  export function cosineSimilarity(a, b) {
28
30
  if (a.length !== b.length) {
29
- throw new Error('Vectors must have the same dimension');
31
+ throw new InvalidVectorError();
30
32
  }
31
33
  const dot = a.reduce((sum, ai, i) => sum + ai * (b[i] ?? 0), 0);
32
34
  const normA = Math.sqrt(a.reduce((sum, ai) => sum + ai * ai, 0));
@@ -1 +1 @@
1
- {"version":3,"file":"_util.js","sourceRoot":"","sources":["../../../src/services/local/_util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC/D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,UAAU,GAAG,GAAG;IAC7D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1C,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,CAAW;IACxD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG;IAClB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"_util.js","sourceRoot":"","sources":["../../../src/services/local/_util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC/D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,UAAU,GAAG,GAAG;IAC7D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1C,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC;AAED,MAAM,kBAAkB,GAAG,eAAe,CACzC,oBAAoB,EACpB,sCAAsC,CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,CAAW;IACxD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,kBAAkB,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG;IAClB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,CAAC"}
@@ -1 +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"}
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,EAEX,MAAM,iBAAiB,CAAC;AAIzB;;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"}
@@ -1,5 +1,6 @@
1
1
  import { APIResponseSchemaNoData } from '@agentuity/server';
2
- import { SessionStartEventDelayedSchema, SessionCompleteEventDelayedSchema, } from '@agentuity/core';
2
+ import { SessionStartEventDelayedSchema, SessionCompleteEventDelayedSchema, StructuredError, } from '@agentuity/core';
3
+ const SessionResponseError = StructuredError('SessionResponseError');
3
4
  /**
4
5
  * An implementation of the SessionEventProvider which uses HTTP for delivery
5
6
  */
@@ -22,7 +23,7 @@ export class HTTPSessionEventProvider {
22
23
  this.logger.debug('Session start event sent successfully: %s', event.id);
23
24
  return;
24
25
  }
25
- throw new Error(resp.message);
26
+ throw new SessionResponseError({ message: resp.message });
26
27
  }
27
28
  /**
28
29
  * called when the session completes
@@ -36,7 +37,7 @@ export class HTTPSessionEventProvider {
36
37
  this.logger.debug('Session complete event sent successfully: %s', event.id);
37
38
  return;
38
39
  }
39
- throw new Error(resp.message);
40
+ throw new SessionResponseError({ message: resp.message });
40
41
  }
41
42
  }
42
43
  //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/services/session/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAGN,8BAA8B,EAC9B,iCAAiC,GAGjC,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAC5B,SAAS,CAAY;IACrB,MAAM,CAAS;IAEvB,YAAY,MAAiB,EAAE,MAAc;QAC5C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,KAAwB;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACxC,MAAM,EACN,qBAAqB,EACrB,uBAAuB,EAAE,EACzB,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EACnC,8BAA8B,CAC9B,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACzE,OAAO;QACR,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,KAA2B;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACxC,KAAK,EACL,qBAAqB,EACrB,uBAAuB,EAAE,EACzB,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EACnC,iCAAiC,CACjC,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5E,OAAO;QACR,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACD"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/services/session/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAGN,8BAA8B,EAC9B,iCAAiC,EAGjC,eAAe,GACf,MAAM,iBAAiB,CAAC;AAEzB,MAAM,oBAAoB,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAC5B,SAAS,CAAY;IACrB,MAAM,CAAS;IAEvB,YAAY,MAAiB,EAAE,MAAc;QAC5C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,KAAwB;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACxC,MAAM,EACN,qBAAqB,EACrB,uBAAuB,EAAE,EACzB,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EACnC,8BAA8B,CAC9B,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACzE,OAAO;QACR,CAAC;QACD,MAAM,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,KAA2B;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACxC,KAAK,EACL,qBAAqB,EACrB,uBAAuB,EAAE,EACzB,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EACnC,iCAAiC,CACjC,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5E,OAAO;QACR,CAAC;QACD,MAAM,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;CACD"}
package/dist/session.d.ts CHANGED
@@ -1,33 +1,313 @@
1
1
  /** biome-ignore-all lint/suspicious/noExplicitAny: anys are great */
2
2
  import type { Context } from 'hono';
3
3
  import { type Env } from './app';
4
+ import type { AppState } from './index';
4
5
  export type ThreadEventName = 'destroyed';
5
6
  export type SessionEventName = 'completed';
6
7
  type ThreadEventCallback<T extends Thread> = (eventName: 'destroyed', thread: T) => Promise<void> | void;
7
8
  type SessionEventCallback<T extends Session> = (eventName: 'completed', session: T) => Promise<void> | void;
9
+ /**
10
+ * Represents a conversation thread that persists across multiple sessions.
11
+ * Threads maintain state and can contain multiple request-response sessions.
12
+ *
13
+ * Threads are automatically managed by the runtime and stored in cookies.
14
+ * They expire after 1 hour of inactivity by default.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Access thread in agent handler
19
+ * const agent = createAgent({
20
+ * handler: async (ctx, input) => {
21
+ * // Get thread ID
22
+ * console.log('Thread:', ctx.thread.id);
23
+ *
24
+ * // Store data in thread state (persists across sessions)
25
+ * ctx.thread.state.set('conversationCount',
26
+ * (ctx.thread.state.get('conversationCount') as number || 0) + 1
27
+ * );
28
+ *
29
+ * // Listen for thread destruction
30
+ * ctx.thread.addEventListener('destroyed', (eventName, thread) => {
31
+ * console.log('Thread destroyed:', thread.id);
32
+ * });
33
+ *
34
+ * return 'Response';
35
+ * }
36
+ * });
37
+ * ```
38
+ */
8
39
  export interface Thread {
40
+ /**
41
+ * Unique thread identifier (e.g., "thrd_a1b2c3d4...").
42
+ * Stored in cookie and persists across requests.
43
+ */
9
44
  id: string;
45
+ /**
46
+ * Thread-scoped state storage that persists across multiple sessions.
47
+ * Use this to maintain conversation history or user preferences.
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * // Store conversation count
52
+ * ctx.thread.state.set('messageCount',
53
+ * (ctx.thread.state.get('messageCount') as number || 0) + 1
54
+ * );
55
+ * ```
56
+ */
10
57
  state: Map<string, unknown>;
58
+ /**
59
+ * Register an event listener for when the thread is destroyed.
60
+ * Thread is destroyed when it expires or is manually destroyed.
61
+ *
62
+ * @param eventName - Must be 'destroyed'
63
+ * @param callback - Function called when thread is destroyed
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * ctx.thread.addEventListener('destroyed', (eventName, thread) => {
68
+ * console.log('Cleaning up thread:', thread.id);
69
+ * });
70
+ * ```
71
+ */
11
72
  addEventListener(eventName: 'destroyed', callback: (eventName: 'destroyed', thread: Thread) => Promise<void> | void): void;
73
+ /**
74
+ * Remove a previously registered 'destroyed' event listener.
75
+ *
76
+ * @param eventName - Must be 'destroyed'
77
+ * @param callback - The callback function to remove
78
+ */
12
79
  removeEventListener(eventName: 'destroyed', callback: (eventName: 'destroyed', thread: Thread) => Promise<void> | void): void;
80
+ /**
81
+ * Manually destroy the thread and clean up resources.
82
+ * Fires the 'destroyed' event and removes thread from storage.
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * // End conversation
87
+ * await ctx.thread.destroy();
88
+ * ```
89
+ */
13
90
  destroy(): Promise<void>;
14
91
  }
92
+ /**
93
+ * Represents a single request-response session within a thread.
94
+ * Sessions are scoped to a single agent execution and its sub-agent calls.
95
+ *
96
+ * Each HTTP request creates a new session with a unique ID, but shares the same thread.
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const agent = createAgent({
101
+ * handler: async (ctx, input) => {
102
+ * // Get session ID (unique per request)
103
+ * console.log('Session:', ctx.session.id);
104
+ *
105
+ * // Store data in session state (only for this request)
106
+ * ctx.session.state.set('startTime', Date.now());
107
+ *
108
+ * // Access parent thread
109
+ * console.log('Thread:', ctx.session.thread.id);
110
+ *
111
+ * // Listen for session completion
112
+ * ctx.session.addEventListener('completed', (eventName, session) => {
113
+ * const duration = Date.now() - (session.state.get('startTime') as number);
114
+ * console.log(`Session completed in ${duration}ms`);
115
+ * });
116
+ *
117
+ * return 'Response';
118
+ * }
119
+ * });
120
+ * ```
121
+ */
15
122
  export interface Session {
123
+ /**
124
+ * Unique session identifier for this request.
125
+ * Changes with each HTTP request, even within the same thread.
126
+ */
16
127
  id: string;
128
+ /**
129
+ * The parent thread this session belongs to.
130
+ * Multiple sessions can share the same thread.
131
+ */
17
132
  thread: Thread;
133
+ /**
134
+ * Session-scoped state storage that only exists for this request.
135
+ * Use this for temporary data that shouldn't persist across requests.
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * ctx.session.state.set('requestStartTime', Date.now());
140
+ * ```
141
+ */
18
142
  state: Map<string, unknown>;
143
+ /**
144
+ * Register an event listener for when the session completes.
145
+ * Fired after the agent handler returns and response is sent.
146
+ *
147
+ * @param eventName - Must be 'completed'
148
+ * @param callback - Function called when session completes
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * ctx.session.addEventListener('completed', (eventName, session) => {
153
+ * console.log('Session finished:', session.id);
154
+ * });
155
+ * ```
156
+ */
19
157
  addEventListener(eventName: 'completed', callback: (eventName: 'completed', session: Session) => Promise<void> | void): void;
158
+ /**
159
+ * Remove a previously registered 'completed' event listener.
160
+ *
161
+ * @param eventName - Must be 'completed'
162
+ * @param callback - The callback function to remove
163
+ */
20
164
  removeEventListener(eventName: 'completed', callback: (eventName: 'completed', session: Session) => Promise<void> | void): void;
21
165
  }
166
+ /**
167
+ * Provider interface for managing thread lifecycle and persistence.
168
+ * Implement this to customize how threads are stored and retrieved.
169
+ *
170
+ * The default implementation (DefaultThreadProvider) stores threads in-memory
171
+ * with cookie-based identification and 1-hour expiration.
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * class RedisThreadProvider implements ThreadProvider {
176
+ * private redis: Redis;
177
+ *
178
+ * async initialize(appState: AppState): Promise<void> {
179
+ * this.redis = await connectRedis();
180
+ * }
181
+ *
182
+ * async restore(ctx: Context<Env>): Promise<Thread> {
183
+ * const threadId = getCookie(ctx, 'atid') || generateId('thrd');
184
+ * const data = await this.redis.get(`thread:${threadId}`);
185
+ * const thread = new DefaultThread(this, threadId);
186
+ * if (data) {
187
+ * thread.state = new Map(JSON.parse(data));
188
+ * }
189
+ * return thread;
190
+ * }
191
+ *
192
+ * async save(thread: Thread): Promise<void> {
193
+ * await this.redis.setex(
194
+ * `thread:${thread.id}`,
195
+ * 3600,
196
+ * JSON.stringify([...thread.state])
197
+ * );
198
+ * }
199
+ *
200
+ * async destroy(thread: Thread): Promise<void> {
201
+ * await this.redis.del(`thread:${thread.id}`);
202
+ * }
203
+ * }
204
+ *
205
+ * // Use custom provider
206
+ * const app = await createApp({
207
+ * services: {
208
+ * thread: new RedisThreadProvider()
209
+ * }
210
+ * });
211
+ * ```
212
+ */
22
213
  export interface ThreadProvider {
23
- initialize(): Promise<void>;
214
+ /**
215
+ * Initialize the provider when the app starts.
216
+ * Use this to set up connections, start cleanup intervals, etc.
217
+ *
218
+ * @param appState - The app state from createApp setup function
219
+ */
220
+ initialize(appState: AppState): Promise<void>;
221
+ /**
222
+ * Restore or create a thread from the HTTP request context.
223
+ * Should check cookies for existing thread ID or create a new one.
224
+ *
225
+ * @param ctx - Hono request context
226
+ * @returns The restored or newly created thread
227
+ */
24
228
  restore(ctx: Context<Env>): Promise<Thread>;
229
+ /**
230
+ * Persist thread state to storage.
231
+ * Called periodically to save thread data.
232
+ *
233
+ * @param thread - The thread to save
234
+ */
25
235
  save(thread: Thread): Promise<void>;
236
+ /**
237
+ * Destroy a thread and clean up resources.
238
+ * Should fire the 'destroyed' event and remove from storage.
239
+ *
240
+ * @param thread - The thread to destroy
241
+ */
26
242
  destroy(thread: Thread): Promise<void>;
27
243
  }
244
+ /**
245
+ * Provider interface for managing session lifecycle and persistence.
246
+ * Implement this to customize how sessions are stored and retrieved.
247
+ *
248
+ * The default implementation (DefaultSessionProvider) stores sessions in-memory
249
+ * and automatically cleans them up after completion.
250
+ *
251
+ * @example
252
+ * ```typescript
253
+ * class PostgresSessionProvider implements SessionProvider {
254
+ * private db: Database;
255
+ *
256
+ * async initialize(appState: AppState): Promise<void> {
257
+ * this.db = appState.db;
258
+ * }
259
+ *
260
+ * async restore(thread: Thread, sessionId: string): Promise<Session> {
261
+ * const row = await this.db.query(
262
+ * 'SELECT state FROM sessions WHERE id = $1',
263
+ * [sessionId]
264
+ * );
265
+ * const session = new DefaultSession(thread, sessionId);
266
+ * if (row) {
267
+ * session.state = new Map(JSON.parse(row.state));
268
+ * }
269
+ * return session;
270
+ * }
271
+ *
272
+ * async save(session: Session): Promise<void> {
273
+ * await this.db.query(
274
+ * 'INSERT INTO sessions (id, thread_id, state) VALUES ($1, $2, $3)',
275
+ * [session.id, session.thread.id, JSON.stringify([...session.state])]
276
+ * );
277
+ * }
278
+ * }
279
+ *
280
+ * // Use custom provider
281
+ * const app = await createApp({
282
+ * services: {
283
+ * session: new PostgresSessionProvider()
284
+ * }
285
+ * });
286
+ * ```
287
+ */
28
288
  export interface SessionProvider {
29
- initialize(): Promise<void>;
289
+ /**
290
+ * Initialize the provider when the app starts.
291
+ * Use this to set up database connections or other resources.
292
+ *
293
+ * @param appState - The app state from createApp setup function
294
+ */
295
+ initialize(appState: AppState): Promise<void>;
296
+ /**
297
+ * Restore or create a session for the given thread and session ID.
298
+ * Should load existing session data or create a new session.
299
+ *
300
+ * @param thread - The parent thread for this session
301
+ * @param sessionId - The unique session identifier
302
+ * @returns The restored or newly created session
303
+ */
30
304
  restore(thread: Thread, sessionId: string): Promise<Session>;
305
+ /**
306
+ * Persist session state and fire completion events.
307
+ * Called after the agent handler completes.
308
+ *
309
+ * @param session - The session to save
310
+ */
31
311
  save(session: Session): Promise<void>;
32
312
  }
33
313
  export declare function generateId(prefix?: string): string;
@@ -55,14 +335,14 @@ export declare class DefaultSession implements Session {
55
335
  }
56
336
  export declare class DefaultThreadProvider implements ThreadProvider {
57
337
  private threads;
58
- initialize(): Promise<void>;
338
+ initialize(_appState: AppState): Promise<void>;
59
339
  restore(ctx: Context<Env>): Promise<Thread>;
60
340
  save(thread: Thread): Promise<void>;
61
341
  destroy(thread: Thread): Promise<void>;
62
342
  }
63
343
  export declare class DefaultSessionProvider implements SessionProvider {
64
344
  private sessions;
65
- initialize(): Promise<void>;
345
+ initialize(_appState: AppState): Promise<void>;
66
346
  restore(thread: Thread, sessionId: string): Promise<Session>;
67
347
  save(session: Session): Promise<void>;
68
348
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/session.js CHANGED
@@ -116,7 +116,7 @@ export class DefaultSession {
116
116
  }
117
117
  export class DefaultThreadProvider {
118
118
  threads = new Map();
119
- async initialize() {
119
+ async initialize(_appState) {
120
120
  setInterval(() => {
121
121
  for (const [, thread] of this.threads) {
122
122
  if (thread.expired()) {
@@ -171,7 +171,7 @@ export class DefaultThreadProvider {
171
171
  }
172
172
  export class DefaultSessionProvider {
173
173
  sessions = new Map();
174
- async initialize() {
174
+ async initialize(_appState) {
175
175
  // No initialization needed for in-memory provider
176
176
  }
177
177
  async restore(thread, sessionId) {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/runtime",
3
- "version": "0.0.60",
3
+ "version": "0.0.61",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -25,8 +25,8 @@
25
25
  "prepublishOnly": "bun run clean && bun run build"
26
26
  },
27
27
  "dependencies": {
28
- "@agentuity/core": "0.0.60",
29
- "@agentuity/server": "0.0.60",
28
+ "@agentuity/core": "0.0.61",
29
+ "@agentuity/server": "0.0.61",
30
30
  "@opentelemetry/api": "^1.9.0",
31
31
  "@opentelemetry/api-logs": "^0.207.0",
32
32
  "@opentelemetry/auto-instrumentations-node": "^0.66.0",
@@ -53,9 +53,10 @@
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/bun": "latest",
56
- "bun-types": "latest",
57
56
  "@types/react": "^19.2.2",
58
57
  "@types/react-dom": "^19.2.2",
58
+ "bun-types": "latest",
59
+ "expect-type": "^1.2.2",
59
60
  "react": "^19.2.0",
60
61
  "react-dom": "^19.2.0",
61
62
  "typescript": "^5.9.0"
package/src/_context.ts CHANGED
@@ -1,7 +1,13 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
2
  import type { Context as HonoContext } from 'hono';
3
3
  import type { Tracer } from '@opentelemetry/api';
4
- import type { KeyValueStorage, ObjectStorage, StreamStorage, VectorStorage } from '@agentuity/core';
4
+ import {
5
+ StructuredError,
6
+ type KeyValueStorage,
7
+ type ObjectStorage,
8
+ type StreamStorage,
9
+ type VectorStorage,
10
+ } from '@agentuity/core';
5
11
  import type { AgentContext, AgentName, AgentRegistry, AgentRunner } from './agent';
6
12
  import type { Logger } from './logger';
7
13
  import type WaitUntilHandler from './_waituntil';
@@ -14,6 +20,8 @@ export interface RequestAgentContextArgs<
14
20
  TCurrent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
15
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
22
  TParent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
23
+ TConfig = unknown,
24
+ TAppState = Record<string, never>,
17
25
  > {
18
26
  sessionId: string;
19
27
  agent: TAgentMap;
@@ -25,6 +33,8 @@ export interface RequestAgentContextArgs<
25
33
  session: Session;
26
34
  thread: Thread;
27
35
  handler: WaitUntilHandler;
36
+ config: TConfig;
37
+ app: TAppState;
28
38
  }
29
39
 
30
40
  export class RequestAgentContext<
@@ -33,7 +43,9 @@ export class RequestAgentContext<
33
43
  TCurrent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
34
44
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
45
  TParent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
36
- > implements AgentContext<TAgentMap, TCurrent, TParent>
46
+ TConfig = unknown,
47
+ TAppState = Record<string, never>,
48
+ > implements AgentContext<TAgentMap, TCurrent, TParent, TConfig, TAppState>
37
49
  {
38
50
  agent: TAgentMap;
39
51
  current: TCurrent;
@@ -49,9 +61,11 @@ export class RequestAgentContext<
49
61
  state: Map<string, unknown>;
50
62
  session: Session;
51
63
  thread: Thread;
64
+ config: TConfig;
65
+ app: TAppState;
52
66
  private handler: WaitUntilHandler;
53
67
 
54
- constructor(args: RequestAgentContextArgs<TAgentMap, TCurrent, TParent>) {
68
+ constructor(args: RequestAgentContextArgs<TAgentMap, TCurrent, TParent, TConfig, TAppState>) {
55
69
  this.agent = args.agent;
56
70
  this.current = args.current;
57
71
  this.parent = args.parent;
@@ -61,6 +75,8 @@ export class RequestAgentContext<
61
75
  this.tracer = args.tracer;
62
76
  this.thread = args.thread;
63
77
  this.session = args.session;
78
+ this.config = args.config;
79
+ this.app = args.app;
64
80
  this.state = new Map<string, unknown>();
65
81
  this.handler = args.handler;
66
82
  registerServices(this, false); // agents already populated via args.agent
@@ -72,7 +88,7 @@ export class RequestAgentContext<
72
88
  }
73
89
 
74
90
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
- const agentAsyncLocalStorage = new AsyncLocalStorage<AgentContext<any, any, any>>();
91
+ const agentAsyncLocalStorage = new AsyncLocalStorage<AgentContext<any, any, any, any, any>>();
76
92
  const httpAsyncLocalStorage = new AsyncLocalStorage<HonoContext>();
77
93
 
78
94
  export const inAgentContext = (): boolean => {
@@ -85,19 +101,29 @@ export const inHTTPContext = (): boolean => {
85
101
  return !!context;
86
102
  };
87
103
 
104
+ const AgentContextNotAvailableError = StructuredError(
105
+ 'AgentContextNotAvailableError',
106
+ 'AgentContext is not available'
107
+ );
108
+
88
109
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
- export const getAgentContext = (): AgentContext<any, any, any> => {
110
+ export const getAgentContext = (): AgentContext<any, any, any, any, any> => {
90
111
  const context = agentAsyncLocalStorage.getStore();
91
112
  if (!context) {
92
- throw new Error('AgentContext is not available');
113
+ throw new AgentContextNotAvailableError();
93
114
  }
94
115
  return context;
95
116
  };
96
117
 
118
+ const HTTPContextNotAvailableError = StructuredError(
119
+ 'HTTPContextNotAvailableError',
120
+ 'HTTPContext is not available'
121
+ );
122
+
97
123
  export const getHTTPContext = (): HonoContext => {
98
124
  const context = httpAsyncLocalStorage.getStore();
99
125
  if (!context) {
100
- throw new Error('HTTPContext is not available');
126
+ throw new HTTPContextNotAvailableError();
101
127
  }
102
128
  return context;
103
129
  };
@@ -111,12 +137,14 @@ export const runInAgentContext = <
111
137
  TCurrent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
112
138
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
139
  TParent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
140
+ TConfig = unknown,
141
+ TAppState = Record<string, never>,
114
142
  >(
115
143
  ctxObject: Record<string, unknown>,
116
- args: RequestAgentContextArgs<TAgentMap, TCurrent, TParent>,
144
+ args: RequestAgentContextArgs<TAgentMap, TCurrent, TParent, TConfig, TAppState>,
117
145
  next: () => Promise<void>
118
146
  ) => {
119
- const ctx = new RequestAgentContext<TAgentMap, TCurrent, TParent>(args);
147
+ const ctx = new RequestAgentContext<TAgentMap, TCurrent, TParent, TConfig, TAppState>(args);
120
148
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
149
  const _ctx = ctx as any;
122
150
  Object.getOwnPropertyNames(ctx).forEach((k) => {