@deepagents/context 4.3.0 → 6.0.0

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 (122) hide show
  1. package/README.md +51 -7
  2. package/dist/browser.d.ts +5 -3
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +69 -43
  5. package/dist/browser.js.map +3 -3
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3615 -2905
  9. package/dist/index.js.map +4 -4
  10. package/dist/lib/advisor.d.ts +2 -2
  11. package/dist/lib/agent.d.ts +22 -10
  12. package/dist/lib/agent.d.ts.map +1 -1
  13. package/dist/lib/chain-summary.d.ts +8 -0
  14. package/dist/lib/chain-summary.d.ts.map +1 -1
  15. package/dist/lib/chat.d.ts +2 -2
  16. package/dist/lib/chat.d.ts.map +1 -1
  17. package/dist/lib/engine.d.ts +45 -75
  18. package/dist/lib/engine.d.ts.map +1 -1
  19. package/dist/lib/fragments/plan.d.ts +13 -0
  20. package/dist/lib/fragments/plan.d.ts.map +1 -0
  21. package/dist/lib/fragments/reminders/src/evaluate.d.ts +1 -1
  22. package/dist/lib/fragments/reminders/src/index.d.ts +1 -1
  23. package/dist/lib/fragments/reminders/src/index.d.ts.map +1 -1
  24. package/dist/lib/fragments/reminders/src/predicates/combinators.d.ts +8 -8
  25. package/dist/lib/fragments/reminders/src/predicates/combinators.d.ts.map +1 -1
  26. package/dist/lib/fragments/reminders/src/predicates/once.d.ts +1 -1
  27. package/dist/lib/fragments/reminders/src/predicates/once.d.ts.map +1 -1
  28. package/dist/lib/fragments/reminders/src/predicates/tool.d.ts +35 -2
  29. package/dist/lib/fragments/reminders/src/predicates/tool.d.ts.map +1 -1
  30. package/dist/lib/fragments/reminders/src/reminders.d.ts +9 -29
  31. package/dist/lib/fragments/reminders/src/reminders.d.ts.map +1 -1
  32. package/dist/lib/fragments/reminders/src/types.d.ts +42 -15
  33. package/dist/lib/fragments/reminders/src/types.d.ts.map +1 -1
  34. package/dist/lib/guardrail.d.ts +2 -2
  35. package/dist/lib/guardrail.d.ts.map +1 -1
  36. package/dist/lib/repair.d.ts +2 -2
  37. package/dist/lib/sandbox/agent-os-sandbox.d.ts +1 -1
  38. package/dist/lib/sandbox/agent-os-sandbox.d.ts.map +1 -1
  39. package/dist/lib/sandbox/apple-container-sandbox.d.ts +2 -0
  40. package/dist/lib/sandbox/apple-container-sandbox.d.ts.map +1 -1
  41. package/dist/lib/sandbox/bash-exception.d.ts +1 -1
  42. package/dist/lib/sandbox/bash-exception.d.ts.map +1 -1
  43. package/dist/lib/sandbox/bash-tool.d.ts +7 -42
  44. package/dist/lib/sandbox/bash-tool.d.ts.map +1 -1
  45. package/dist/lib/sandbox/container-sandbox.d.ts +2 -2
  46. package/dist/lib/sandbox/container-sandbox.d.ts.map +1 -1
  47. package/dist/lib/sandbox/daytona-sandbox.d.ts.map +1 -1
  48. package/dist/lib/sandbox/docker-sandbox.d.ts +2 -3
  49. package/dist/lib/sandbox/docker-sandbox.d.ts.map +1 -1
  50. package/dist/lib/sandbox/index.d.ts +0 -3
  51. package/dist/lib/sandbox/index.d.ts.map +1 -1
  52. package/dist/lib/sandbox/installers/installer.d.ts +1 -1
  53. package/dist/lib/sandbox/installers/installer.d.ts.map +1 -1
  54. package/dist/lib/sandbox/microsandbox-sandbox.d.ts.map +1 -1
  55. package/dist/lib/sandbox/strace/file-changes.d.ts +4 -10
  56. package/dist/lib/sandbox/strace/file-changes.d.ts.map +1 -1
  57. package/dist/lib/sandbox/types.d.ts +79 -32
  58. package/dist/lib/sandbox/types.d.ts.map +1 -1
  59. package/dist/lib/skills/fragments.d.ts +11 -10
  60. package/dist/lib/skills/fragments.d.ts.map +1 -1
  61. package/dist/lib/skills/frontmatter.d.ts +16 -0
  62. package/dist/lib/skills/frontmatter.d.ts.map +1 -0
  63. package/dist/lib/skills/index.d.ts +11 -10
  64. package/dist/lib/skills/index.d.ts.map +1 -1
  65. package/dist/lib/skills/skill-reminder.d.ts +2 -2
  66. package/dist/lib/skills/skill-reminder.d.ts.map +1 -1
  67. package/dist/lib/skills/types.d.ts +5 -23
  68. package/dist/lib/skills/types.d.ts.map +1 -1
  69. package/dist/lib/store/postgres.store.d.ts +2 -2
  70. package/dist/lib/store/postgres.store.d.ts.map +1 -1
  71. package/dist/lib/store/sqlite.store.d.ts +2 -2
  72. package/dist/lib/store/sqlite.store.d.ts.map +1 -1
  73. package/dist/lib/store/sqlserver.store.d.ts +2 -2
  74. package/dist/lib/store/sqlserver.store.d.ts.map +1 -1
  75. package/dist/lib/store/store.d.ts +5 -4
  76. package/dist/lib/store/store.d.ts.map +1 -1
  77. package/dist/lib/stream/postgres.stream-store.d.ts +2 -1
  78. package/dist/lib/stream/postgres.stream-store.d.ts.map +1 -1
  79. package/dist/lib/stream/sqlite.stream-store.d.ts +2 -1
  80. package/dist/lib/stream/sqlite.stream-store.d.ts.map +1 -1
  81. package/dist/lib/stream/stream-manager.d.ts +4 -0
  82. package/dist/lib/stream/stream-manager.d.ts.map +1 -1
  83. package/dist/lib/stream/stream-store.d.ts +16 -0
  84. package/dist/lib/stream/stream-store.d.ts.map +1 -1
  85. package/dist/lib/telemetry/console-telemetry.d.ts +8 -0
  86. package/dist/lib/telemetry/console-telemetry.d.ts.map +1 -0
  87. package/dist/lib/telemetry/create-telemetry-integration.d.ts +6 -0
  88. package/dist/lib/telemetry/create-telemetry-integration.d.ts.map +1 -0
  89. package/dist/lib/telemetry/file/file-telemetry.d.ts +9 -0
  90. package/dist/lib/telemetry/file/file-telemetry.d.ts.map +1 -0
  91. package/dist/lib/telemetry/file/index.d.ts +2 -0
  92. package/dist/lib/telemetry/file/index.d.ts.map +1 -0
  93. package/dist/lib/telemetry/file/index.js +307 -0
  94. package/dist/lib/telemetry/file/index.js.map +7 -0
  95. package/dist/lib/telemetry/index.d.ts +3 -0
  96. package/dist/lib/telemetry/index.d.ts.map +1 -0
  97. package/dist/lib/telemetry/index.js +291 -0
  98. package/dist/lib/telemetry/index.js.map +7 -0
  99. package/dist/lib/telemetry/redact-telemetry-event.d.ts +2 -0
  100. package/dist/lib/telemetry/redact-telemetry-event.d.ts.map +1 -0
  101. package/dist/lib/telemetry/safe-serialize.d.ts +8 -0
  102. package/dist/lib/telemetry/safe-serialize.d.ts.map +1 -0
  103. package/dist/lib/tracing/index.js +47 -113
  104. package/dist/lib/tracing/index.js.map +2 -2
  105. package/dist/lib/tracing/openai-traces-integration.d.ts +2 -2
  106. package/dist/lib/tracing/openai-traces-integration.d.ts.map +1 -1
  107. package/dist/lib/tracing/serialization.d.ts.map +1 -1
  108. package/package.json +33 -22
  109. package/dist/lib/sandbox/abort.d.ts +0 -24
  110. package/dist/lib/sandbox/abort.d.ts.map +0 -1
  111. package/dist/lib/sandbox/bash-meta.d.ts +0 -10
  112. package/dist/lib/sandbox/bash-meta.d.ts.map +0 -1
  113. package/dist/lib/sandbox/upload-skills.d.ts +0 -20
  114. package/dist/lib/sandbox/upload-skills.d.ts.map +0 -1
  115. package/dist/lib/sandbox/walk.d.ts +0 -17
  116. package/dist/lib/sandbox/walk.d.ts.map +0 -1
  117. package/dist/lib/skills/loader.d.ts +0 -28
  118. package/dist/lib/skills/loader.d.ts.map +0 -1
  119. package/dist/spec/test/global-setup.d.ts +0 -4
  120. package/dist/spec/test/global-setup.d.ts.map +0 -1
  121. package/dist/spec/test/helpers/sqlite-container.d.ts +0 -19
  122. package/dist/spec/test/helpers/sqlite-container.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepagents/context",
3
- "version": "4.3.0",
3
+ "version": "6.0.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,6 +32,16 @@
32
32
  "import": "./dist/lib/tracing/index.js",
33
33
  "default": "./dist/lib/tracing/index.js"
34
34
  },
35
+ "./telemetry": {
36
+ "types": "./dist/lib/telemetry/index.d.ts",
37
+ "import": "./dist/lib/telemetry/index.js",
38
+ "default": "./dist/lib/telemetry/index.js"
39
+ },
40
+ "./telemetry/file": {
41
+ "types": "./dist/lib/telemetry/file/index.d.ts",
42
+ "import": "./dist/lib/telemetry/file/index.js",
43
+ "default": "./dist/lib/telemetry/file/index.js"
44
+ },
35
45
  "./sandbox/strace": {
36
46
  "types": "./dist/lib/sandbox/strace/index.d.ts",
37
47
  "import": "./dist/lib/sandbox/strace/index.js",
@@ -40,6 +50,7 @@
40
50
  },
41
51
  "files": [
42
52
  "dist",
53
+ "!dist/spec/**",
43
54
  "!**/*.tsbuildinfo",
44
55
  "!**/*.test.*"
45
56
  ],
@@ -47,38 +58,38 @@
47
58
  "access": "public"
48
59
  },
49
60
  "dependencies": {
50
- "@ai-sdk/groq": "^3.0.47",
51
- "@ai-sdk/provider": "^3.0.13",
52
- "@deepagents/agent": "4.3.0",
53
- "ai": "^6.0.218",
54
- "bash-tool": "^1.3.16",
55
- "chalk": "^5.6.0",
56
- "dedent": "^1.7.0",
61
+ "@ai-sdk/groq": "^4.0.11",
62
+ "@ai-sdk/provider": "^4.0.3",
63
+ "@deepagents/agent": "6.0.0",
64
+ "ai": "^7.0.30",
65
+ "chalk": "^5.6.2",
66
+ "dedent": "^1.7.2",
67
+ "fast-glob": "^3.3.3",
57
68
  "gpt-tokenizer": "^3.4.0",
58
- "just-bash": "^3.0.1",
59
- "nano-spawn": "^2.0.0",
69
+ "just-bash": "^3.1.0",
70
+ "nano-spawn": "^2.1.0",
60
71
  "pluralize": "^8.0.0",
61
72
  "stringcase": "^4.3.1",
62
73
  "tiny-tfidf": "^1.0.0",
63
- "yaml": "^2.8.0",
64
- "zod": "^3.25.76 || ^4.0.0",
65
- "@ai-sdk/openai": "^3.0.80"
74
+ "yaml": "^2.9.0",
75
+ "zod": "^4.4.3",
76
+ "@ai-sdk/openai": "^4.0.15"
66
77
  },
67
78
  "devDependencies": {
68
- "@daytona/sdk": "^0.175.0",
69
- "@types/debug": "^4.1.12",
79
+ "@daytona/sdk": "^0.198.0",
80
+ "@types/debug": "^4.1.13",
70
81
  "@types/mssql": "^12.3.0",
71
82
  "@types/pg": "^8.20.0",
72
- "microsandbox": "^0.6.4",
73
- "nock": "^14.0.14"
83
+ "microsandbox": "^0.6.7",
84
+ "nock": "^14.0.16"
74
85
  },
75
86
  "peerDependencies": {
76
- "@daytona/sdk": "^0.175.0",
87
+ "@daytona/sdk": "^0.198.0",
77
88
  "@rivet-dev/agent-os-common": "^0.0.260331072558",
78
- "@rivet-dev/agent-os-core": ">=0.1.0",
79
- "microsandbox": "^0.6.4",
80
- "mssql": "^12.5.2",
81
- "pg": "^8.20.0"
89
+ "@rivet-dev/agent-os-core": ">=0.1.1",
90
+ "microsandbox": "^0.6.7",
91
+ "mssql": "^12.7.0",
92
+ "pg": "^8.22.0"
82
93
  },
83
94
  "peerDependenciesMeta": {
84
95
  "@daytona/sdk": {
@@ -1,24 +0,0 @@
1
- import type { DisposableSandbox } from './types.ts';
2
- /**
3
- * Set the ambient abort signal for the duration of `fn`. Inside `fn`,
4
- * any sandbox call going through `withAbortSignal` will receive this
5
- * signal via its `executeCommand` options.
6
- *
7
- * Use at the boundary where an external abort signal becomes available
8
- * (e.g. a tool's `execute` callback). The signal then propagates down
9
- * the decorator chain without explicit parameter threading.
10
- */
11
- export declare function runWithAbortSignal<T>(signal: AbortSignal | undefined, fn: () => Promise<T>): Promise<T>;
12
- /**
13
- * Decorator: when `executeCommand` is called without an explicit signal,
14
- * fills in the ambient signal set by `runWithAbortSignal`. Explicit
15
- * caller-provided signals take precedence. Has no effect outside a
16
- * `runWithAbortSignal` scope.
17
- *
18
- * Bridges the signature mismatch between upstream `bash-tool` (which
19
- * calls `sandbox.executeCommand(command)` with no options) and backends
20
- * that can honor cancellation. The decorator goes between upstream and
21
- * the inner sandbox.
22
- */
23
- export declare function withAbortSignal(sandbox: DisposableSandbox): DisposableSandbox;
24
- //# sourceMappingURL=abort.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/lib/sandbox/abort.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAqB7E"}
@@ -1,10 +0,0 @@
1
- export interface BashMetaState {
2
- hidden: Record<string, unknown>;
3
- }
4
- export declare function runWithBashMeta<T>(fn: () => Promise<T>): Promise<T>;
5
- export interface BashMetaHandle {
6
- setHidden(patch: Record<string, unknown>): void;
7
- }
8
- export declare function useBashMeta(): BashMetaHandle | null;
9
- export declare function readBashMeta(): BashMetaState | undefined;
10
- //# sourceMappingURL=bash-meta.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bash-meta.d.ts","sourceRoot":"","sources":["../../../src/lib/sandbox/bash-meta.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEnE;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjD;AAED,wBAAgB,WAAW,IAAI,cAAc,GAAG,IAAI,CAQnD;AAED,wBAAgB,YAAY,IAAI,aAAa,GAAG,SAAS,CAExD"}
@@ -1,20 +0,0 @@
1
- import type { Sandbox } from 'bash-tool';
2
- import type { SkillPathMapping } from '../skills/types.ts';
3
- import type { SkillUploadInput } from './types.ts';
4
- /**
5
- * Discover skill metadata and map each host SKILL.md path to its sandbox path
6
- * without uploading any files. Later inputs override earlier ones when the same
7
- * skill name appears twice.
8
- */
9
- export declare function discoverSkillMappings(inputs: SkillUploadInput[]): SkillPathMapping[];
10
- /**
11
- * Discover skills under each host directory, write all non-dotfile, non-symlink
12
- * files into the sandbox under the mapped path, and return the discovered
13
- * skill metadata with sandbox paths.
14
- *
15
- * Later inputs override earlier ones when the same skill name appears twice.
16
- * Files with the same sandbox path are overwritten in order, so the last
17
- * writer wins.
18
- */
19
- export declare function uploadSkills(sandbox: Sandbox, inputs: SkillUploadInput[]): Promise<SkillPathMapping[]>;
20
- //# sourceMappingURL=upload-skills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-skills.d.ts","sourceRoot":"","sources":["../../../src/lib/sandbox/upload-skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAenD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EAAE,GACzB,gBAAgB,EAAE,CAwBpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,gBAAgB,EAAE,GACzB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAqB7B"}
@@ -1,17 +0,0 @@
1
- export interface WalkedFile {
2
- /** Absolute host path of the file. */
3
- path: string;
4
- /** Relative POSIX path from the walk root (suitable for sandbox targets). */
5
- relativePath: string;
6
- /** File contents (as Buffer to preserve binary assets). */
7
- content: Buffer;
8
- }
9
- /**
10
- * Recursively list every regular file under `root`. Skips symlinks (to avoid
11
- * escaping `root`) and dotfiles / dot-directories (e.g. `.git`, `.DS_Store`,
12
- * `.env`). Binary contents are preserved.
13
- *
14
- * Returns an empty array when `root` does not exist.
15
- */
16
- export declare function walkDirectory(root: string): Promise<WalkedFile[]>;
17
- //# sourceMappingURL=walk.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../../src/lib/sandbox/walk.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAiCvE"}
@@ -1,28 +0,0 @@
1
- import type { ParsedSkillMd, SkillMetadata } from './types.ts';
2
- /**
3
- * Parse YAML frontmatter from a SKILL.md file content.
4
- *
5
- * Frontmatter format:
6
- * ```
7
- * ---
8
- * name: skill-name
9
- * description: Skill description here
10
- * ---
11
- *
12
- * # Markdown body
13
- * ```
14
- */
15
- export declare function parseFrontmatter(content: string): ParsedSkillMd;
16
- /**
17
- * Load skill metadata from a SKILL.md file.
18
- * Only parses frontmatter, does not load full body into memory.
19
- * This is the core of progressive disclosure - metadata only at startup.
20
- */
21
- export declare function loadSkillMetadata(skillMdPath: string): SkillMetadata;
22
- /**
23
- * Discover all skills in a directory.
24
- * Looks for subdirectories containing SKILL.md files.
25
- * Only loads metadata - full content is read by LLM when needed.
26
- */
27
- export declare function discoverSkillsInDirectory(directory: string): SkillMetadata[];
28
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAyB/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAWpE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CA6B5E"}
@@ -1,4 +0,0 @@
1
- import { globalTeardown } from '@deepagents/test';
2
- export declare function globalSetup(): Promise<void>;
3
- export { globalTeardown };
4
- //# sourceMappingURL=global-setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../../../test/global-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAGf,MAAM,kBAAkB,CAAC;AAE1B,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,19 +0,0 @@
1
- import { SqliteContextStore } from '@deepagents/context';
2
- /**
3
- * Helper to run a test function with a temporary SQLite database.
4
- * Automatically handles setup and cleanup.
5
- *
6
- * Note: SQLite is filesystem-based (no Docker container needed).
7
- * The function name follows the with*Container pattern for consistency
8
- * with withPostgresContainer and withSqlServerContainer.
9
- *
10
- * @example
11
- * ```typescript
12
- * await withSqliteContainer(async (store) => {
13
- * const engine = new ContextEngine({ store, chatId: 'test', userId: 'user' });
14
- * // ... run tests
15
- * });
16
- * ```
17
- */
18
- export declare function withSqliteContainer<T>(fn: (store: SqliteContextStore) => Promise<T>): Promise<T>;
19
- //# sourceMappingURL=sqlite-container.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-container.d.ts","sourceRoot":"","sources":["../../../../test/helpers/sqlite-container.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,EAAE,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC,CASZ"}