@slopus/happy-agent-base 0.0.16 → 0.0.18

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 (54) hide show
  1. package/README.md +27 -4
  2. package/dist/Agent.d.ts +6 -4
  3. package/dist/Agent.d.ts.map +1 -1
  4. package/dist/Agent.js +44 -41
  5. package/dist/Agent.js.map +1 -1
  6. package/dist/AgentBase.d.ts +13 -7
  7. package/dist/AgentBase.d.ts.map +1 -1
  8. package/dist/AgentBase.js +291 -149
  9. package/dist/AgentBase.js.map +1 -1
  10. package/dist/AgentBaseHooks.d.ts +21 -2
  11. package/dist/AgentBaseHooks.d.ts.map +1 -1
  12. package/dist/AgentDatabase.d.ts.map +1 -1
  13. package/dist/AgentDatabase.js +27 -14
  14. package/dist/AgentDatabase.js.map +1 -1
  15. package/dist/AgentDatabaseConnection.d.ts +39 -0
  16. package/dist/AgentDatabaseConnection.d.ts.map +1 -0
  17. package/dist/AgentDatabaseConnection.js +199 -0
  18. package/dist/AgentDatabaseConnection.js.map +1 -0
  19. package/dist/AgentModule.d.ts +40 -12
  20. package/dist/AgentModule.d.ts.map +1 -1
  21. package/dist/AgentPersistence.d.ts +4 -4
  22. package/dist/AgentRef.d.ts +1 -1
  23. package/dist/AgentRef.js +1 -1
  24. package/dist/AgentSpanAttributes.d.ts +11 -0
  25. package/dist/AgentSpanAttributes.d.ts.map +1 -0
  26. package/dist/AgentSpanAttributes.js +11 -0
  27. package/dist/AgentSpanAttributes.js.map +1 -0
  28. package/dist/AgentStorage.d.ts.map +1 -1
  29. package/dist/AgentStorage.js +2 -0
  30. package/dist/AgentStorage.js.map +1 -1
  31. package/dist/AgentSystemLocal.d.ts.map +1 -1
  32. package/dist/AgentSystemLocal.js +76 -43
  33. package/dist/AgentSystemLocal.js.map +1 -1
  34. package/dist/inTx.d.ts +0 -7
  35. package/dist/inTx.d.ts.map +1 -1
  36. package/dist/inTx.js +9 -16
  37. package/dist/inTx.js.map +1 -1
  38. package/dist/index.d.ts +6 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/openAgentPGliteDatabase.d.ts +10 -0
  43. package/dist/openAgentPGliteDatabase.d.ts.map +1 -0
  44. package/dist/openAgentPGliteDatabase.js +17 -0
  45. package/dist/openAgentPGliteDatabase.js.map +1 -0
  46. package/dist/openAgentPostgresDatabase.d.ts +13 -0
  47. package/dist/openAgentPostgresDatabase.d.ts.map +1 -0
  48. package/dist/openAgentPostgresDatabase.js +10 -0
  49. package/dist/openAgentPostgresDatabase.js.map +1 -0
  50. package/dist/openAgentSQLiteDatabase.d.ts +6 -0
  51. package/dist/openAgentSQLiteDatabase.d.ts.map +1 -0
  52. package/dist/openAgentSQLiteDatabase.js +48 -0
  53. package/dist/openAgentSQLiteDatabase.js.map +1 -0
  54. package/package.json +6 -4
@@ -0,0 +1,48 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import { createClient } from "@libsql/client";
3
+ import { drizzle } from "drizzle-orm/libsql";
4
+ import { AgentDatabaseConnection } from "./AgentDatabaseConnection.js";
5
+ /** Open one production SQLite database with Agent Base's shared ownership contract. */
6
+ export async function openAgentSQLiteDatabase(path) {
7
+ const client = createClient({
8
+ intMode: "number",
9
+ timeout: 5_000,
10
+ url: pathToFileURL(path).href,
11
+ });
12
+ try {
13
+ await configure(client);
14
+ return new AgentDatabaseConnection(drizzle(client), () => client.close());
15
+ }
16
+ catch (error) {
17
+ client.close();
18
+ throw error;
19
+ }
20
+ }
21
+ async function configure(client) {
22
+ await client.execute("PRAGMA journal_mode = WAL");
23
+ await client.execute("PRAGMA synchronous = FULL");
24
+ await client.execute("PRAGMA foreign_keys = ON");
25
+ await client.execute("PRAGMA busy_timeout = 250");
26
+ await awaitCrashRecovery(client);
27
+ await client.execute("PRAGMA busy_timeout = 5000");
28
+ }
29
+ async function awaitCrashRecovery(client) {
30
+ for (let attempt = 0; attempt < 20; attempt += 1) {
31
+ try {
32
+ const transaction = await client.transaction("write");
33
+ await transaction.rollback();
34
+ return;
35
+ }
36
+ catch (error) {
37
+ if (!isBusy(error) || attempt === 19)
38
+ throw error;
39
+ await new Promise((resolve) => {
40
+ setTimeout(resolve, Math.min(25 * (attempt + 1), 250));
41
+ });
42
+ }
43
+ }
44
+ }
45
+ function isBusy(error) {
46
+ return error instanceof Error && "code" in error && error.code === "SQLITE_BUSY";
47
+ }
48
+ //# sourceMappingURL=openAgentSQLiteDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openAgentSQLiteDatabase.js","sourceRoot":"","sources":["../sources/openAgentSQLiteDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAuB,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,IAAY;IAEZ,MAAM,MAAM,GAAG,YAAY,CAAC;QACxB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI;KAChC,CAAC,CAAC;IACH,IAAI,CAAC;QACD,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAc;IACnC,MAAM,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAClD,MAAM,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAClD,MAAM,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACjD,MAAM,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAClD,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAc;IAC5C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7B,OAAO;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,EAAE;gBAAE,MAAM,KAAK,CAAC;YAClD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAChC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC1B,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;AACrF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slopus/happy-agent-base",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "Durable runtime for Happy agents.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -24,14 +24,16 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
+ "@electric-sql/pglite": "^0.5.5",
28
+ "@libsql/client": "^0.17.4",
27
29
  "@paralleldrive/cuid2": "^3.3.0",
28
30
  "@sinclair/typebox": "^0.34.49",
29
- "@slopus/happy-providers": "0.0.8",
31
+ "@slopus/happy-providers": "0.0.9",
30
32
  "@steve.kite/stdlib": "0.0.12",
31
- "drizzle-orm": "^0.45.2"
33
+ "drizzle-orm": "^0.45.2",
34
+ "postgres": "^3.4.9"
32
35
  },
33
36
  "devDependencies": {
34
- "@libsql/client": "^0.17.4",
35
37
  "@types/node": "^24.0.10",
36
38
  "typescript": "^7.0.2",
37
39
  "vitest": "^3.2.4"