@recombine-ai/engine 0.11.3 → 1.0.0-beta-1
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/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/lib/ai.d.ts +14 -60
- package/build/lib/ai.d.ts.map +1 -1
- package/build/lib/ai.js +21 -76
- package/build/lib/bosun/agent.d.ts +4 -6
- package/build/lib/bosun/agent.d.ts.map +1 -1
- package/build/lib/bosun/{apiCallTracer.d.ts → api-call-tracer.d.ts} +1 -1
- package/build/lib/bosun/api-call-tracer.d.ts.map +1 -0
- package/build/lib/bosun/context.d.ts.map +1 -1
- package/build/lib/bosun/context.js +0 -2
- package/build/lib/bosun/{conversationalTracer.d.ts → conversational-tracer.d.ts} +4 -2
- package/build/lib/bosun/conversational-tracer.d.ts.map +1 -0
- package/build/lib/bosun/index.d.ts +4 -4
- package/build/lib/bosun/index.d.ts.map +1 -1
- package/build/lib/bosun/index.js +3 -3
- package/build/lib/bosun/{tracer.d.ts → step-registry.d.ts} +4 -16
- package/build/lib/bosun/step-registry.d.ts.map +1 -0
- package/build/lib/bosun/{tracer.js → step-registry.js} +0 -5
- package/build/lib/bosun/{stepTracer.d.ts → step-tracer.d.ts} +3 -3
- package/build/lib/bosun/step-tracer.d.ts.map +1 -0
- package/build/lib/bosun/{stepTracer.js → step-tracer.js} +2 -5
- package/build/lib/llm-adapters/index.d.ts +2 -0
- package/build/lib/llm-adapters/index.d.ts.map +1 -1
- package/build/lib/llm-adapters/index.js +4 -0
- package/build/lib/llm-adapters/mock.d.ts +3 -0
- package/build/lib/llm-adapters/mock.d.ts.map +1 -0
- package/build/lib/llm-adapters/mock.js +14 -0
- package/build/lib/llm-adapters/openai-stream.d.ts +6 -0
- package/build/lib/llm-adapters/openai-stream.d.ts.map +1 -0
- package/build/lib/llm-adapters/openai-stream.js +30 -0
- package/build/lib/llm-adapters/openai.d.ts +5 -7
- package/build/lib/llm-adapters/openai.d.ts.map +1 -1
- package/build/lib/llm-adapters/openai.js +3 -19
- package/build/lib/stream/ai.d.ts +3 -0
- package/build/lib/stream/ai.d.ts.map +1 -0
- package/build/lib/stream/ai.js +245 -0
- package/build/lib/stream/filter.d.ts +6 -0
- package/build/lib/stream/filter.d.ts.map +1 -0
- package/build/lib/stream/filter.js +20 -0
- package/build/lib/stream/get-client.d.ts +15 -0
- package/build/lib/stream/get-client.d.ts.map +1 -0
- package/build/lib/stream/get-client.js +166 -0
- package/build/lib/stream/index.d.ts +4 -0
- package/build/lib/stream/index.d.ts.map +1 -0
- package/build/lib/stream/index.js +8 -0
- package/build/lib/stream/interfaces.d.ts +73 -0
- package/build/lib/stream/interfaces.d.ts.map +1 -0
- package/build/lib/stream/interfaces.js +2 -0
- package/changelog.md +17 -0
- package/package.json +3 -3
- package/build/lib/bosun/apiCallTracer.d.ts.map +0 -1
- package/build/lib/bosun/conversationalTracer.d.ts.map +0 -1
- package/build/lib/bosun/stepTracer.d.ts.map +0 -1
- package/build/lib/bosun/tracer.d.ts.map +0 -1
- /package/build/lib/bosun/{apiCallTracer.js → api-call-tracer.js} +0 -0
- /package/build/lib/bosun/{conversationalTracer.js → conversational-tracer.js} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Message } from '../ai';
|
|
2
|
+
import { Logger } from '../interfaces';
|
|
3
|
+
import { ConversationalTracer, StepRegistry, StepTracer } from '../bosun';
|
|
4
|
+
import { PromptFile } from '../prompt-fs';
|
|
5
|
+
export interface AIStreamEngine {
|
|
6
|
+
/** creates streaming workflow */
|
|
7
|
+
createWorkflow: <CTX extends {}>(config: WorkflowConfig<CTX>) => {
|
|
8
|
+
/**
|
|
9
|
+
* Runs streaming workflow (starts stream)
|
|
10
|
+
* @param messages
|
|
11
|
+
* @param ctx – context to be used in prompt
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
run: (messages: Message[], ctx: CTX) => Promise<ReadableStream<ResponseChunk>>;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface StreamingEngineConfig {
|
|
18
|
+
/** Optional logger instance for handling log messages. */
|
|
19
|
+
logger?: Logger;
|
|
20
|
+
/** registers steps in workflow to be available in Bosun IDE */
|
|
21
|
+
stepRegistry?: StepRegistry;
|
|
22
|
+
/** traces received prompt, rendered prompt, context and other useful info about LLM execution */
|
|
23
|
+
stepTracer?: StepTracer;
|
|
24
|
+
/** same as stepTracer but for “something happened in the conversation” events */
|
|
25
|
+
conversationalTracer?: ConversationalTracer;
|
|
26
|
+
}
|
|
27
|
+
export interface WorkflowConfig<CTX> {
|
|
28
|
+
/** name of the workflow and its only step to appear in Bosun and in traces */
|
|
29
|
+
name: string;
|
|
30
|
+
/** system prompt */
|
|
31
|
+
prompt: string | PromptFile;
|
|
32
|
+
/** LLM model with streaming support */
|
|
33
|
+
model: LlmStreamAdapter;
|
|
34
|
+
onError: (error: Error | string, ctx: CTX) => Promise<void>;
|
|
35
|
+
/** filter out some tokens on the fly */
|
|
36
|
+
filter?: ProgrammaticFilter;
|
|
37
|
+
}
|
|
38
|
+
export interface Transcript {
|
|
39
|
+
responseChunks: ResponseChunk[];
|
|
40
|
+
messages: Message[];
|
|
41
|
+
readonly currentResponse: string;
|
|
42
|
+
readonly mainResponseFinished: boolean;
|
|
43
|
+
markMainResponseFinished(): void;
|
|
44
|
+
toString(ignoreDirectives?: boolean): string;
|
|
45
|
+
getConversation(): Message[];
|
|
46
|
+
}
|
|
47
|
+
export interface LlmStreamAdapter {
|
|
48
|
+
/**
|
|
49
|
+
* @param systemPrompt - rendered system prompt
|
|
50
|
+
* @param messages - stringified {@link Conversation}
|
|
51
|
+
* @returns LLM Response
|
|
52
|
+
*/
|
|
53
|
+
generateStream: (systemPrompt: string, messages: string) => Promise<ReadableStream<string>>;
|
|
54
|
+
/** Returns adapter's configuration/options for tracing */
|
|
55
|
+
getOptions: () => unknown;
|
|
56
|
+
}
|
|
57
|
+
export interface ProgrammaticFilter {
|
|
58
|
+
shouldStartFiltering: (state: Transcript, newToken: string) => boolean;
|
|
59
|
+
onNewToken: (state: Transcript, filteredTokens: string[]) => {
|
|
60
|
+
action: 'CONTINUE_FILTERING';
|
|
61
|
+
} | {
|
|
62
|
+
action: 'RELEASE_TOKENS';
|
|
63
|
+
tokens: string[];
|
|
64
|
+
};
|
|
65
|
+
onStreamEnd: (state: Transcript, filteredTokens: string[]) => {
|
|
66
|
+
tokensToRelease: string[];
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface ResponseChunk {
|
|
70
|
+
role: 'agent' | 'system';
|
|
71
|
+
delta: string;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/lib/stream/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,WAAW,cAAc;IAC3B,iCAAiC;IACjC,cAAc,EAAE,CAAC,GAAG,SAAS,EAAE,EAC3B,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,KAC1B;QACD;;;;;WAKG;QACH,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAA;KACjF,CAAA;CACJ;AAED,MAAM,WAAW,qBAAqB;IAClC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,iGAAiG;IACjG,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC9C;AAED,MAAM,WAAW,cAAc,CAAC,GAAG;IAC/B,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB;IACpB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IAC3B,uCAAuC;IACvC,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,wCAAwC;IACxC,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC9B;AAED,MAAM,WAAW,UAAU;IACvB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,wBAAwB,IAAI,IAAI,CAAA;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5C,eAAe,IAAI,OAAO,EAAE,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;OAIG;IACH,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3F,0DAA0D;IAC1D,UAAU,EAAE,MAAM,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAC/B,oBAAoB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;IACtE,UAAU,EAAE,CACR,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,MAAM,EAAE,KACvB;QAAE,MAAM,EAAE,oBAAoB,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACtF,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9F;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CAChB"}
|
package/changelog.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
### 0.11.4 → 1.0.0
|
|
4
|
+
|
|
5
|
+
- **Breaking:** `model` field on `LLMStep` is now required and must be an `LlmAdapter` (string model names removed)
|
|
6
|
+
- **Breaking:** OpenAI adapter no longer embeds API-key management; pass a pre-configured `OpenAI` client instead
|
|
7
|
+
- **Breaking:** Removed deprecated `Conversation.setUserName()` / `setAgentName()` (defaults: "User" / "Agent")
|
|
8
|
+
- **Breaking:** Removed deprecated `Workflow.addStep()` – pass all steps via `WorkflowConfig#steps`
|
|
9
|
+
- **Breaking:** Removed deprecated `EngineConfig.tokenStorage`, `sendAction`, and `tracer` (use `stepRegistry`)
|
|
10
|
+
- **Breaking:** Upgraded `zod` from v3 to v4; replaced `zod-to-json-schema` with built-in `Zod.toJSONSchema`
|
|
11
|
+
- Removed deprecated aliases (`Tracer`, `StepTraceDef`, `BasicModel`, `createConsoleTracer`)
|
|
12
|
+
- Added `createOpenAIStreamAdapter` to `llm-adapters`
|
|
13
|
+
- Added `createMockAdapter` to `llm-adapters` for testing without OpenAI keys
|
|
14
|
+
- Added streaming engine (`createAIStreamEngine`) with filter support
|
|
15
|
+
|
|
16
|
+
### 0.11.3 → 0.11.4 (unstable)
|
|
17
|
+
|
|
18
|
+
- Added `EngineConfig#nunjucksEnv` – Optional nunjucks Environment to customize prompt rendering.
|
|
19
|
+
|
|
3
20
|
### 0.11.2 → 0.11.3 (unstable)
|
|
4
21
|
|
|
5
22
|
- Added `hangup-requested` conversational trace event type
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recombine-ai/engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-beta-1",
|
|
4
4
|
"description": "Recombine AI engine for creating conversational AI agents",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "git+https://github.com/recombine-ai/engine.git"
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"nunjucks": "^3.2.4",
|
|
42
42
|
"openai": "6.8.1",
|
|
43
|
-
"
|
|
44
|
-
"zod
|
|
43
|
+
"undici": "^7.25.0",
|
|
44
|
+
"zod": "4.4.3"
|
|
45
45
|
},
|
|
46
46
|
"husky": {
|
|
47
47
|
"hooks": {}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiCallTracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/apiCallTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,WAAW,aAAa;IAC1B,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM;2BAEvB,YAAY;;EAQ1C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversationalTracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/conversationalTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAC9B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,wCAAwC;IACxC,SAAS,EACH,8BAA8B,GAC9B,8BAA8B,GAC9B,kBAAkB,GAClB,cAAc,GACd,oBAAoB,GACpB,kBAAkB,CAAA;IAExB,sDAAsD;IACtD,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAEjD,qDAAqD;IACrD,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAE5C,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IAEf,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,oBAAoB;IACjC,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM;kCAEvB,mBAAmB;;EAKxD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stepTracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/stepTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAGtC,MAAM,MAAM,QAAQ,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAA;IAErB,IAAI,EAAE,MAAM,CAAA;IAEZ,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IACnD,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IAE3C,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAEnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IAEjB,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB,CAAA;AAED,MAAM,WAAW,UAAU;IACvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IAEpC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM;wBAEvB,SAAS;;EA2BpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAA;IACxD,MAAM,EAAE,UAAU,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAA;AAElC;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,YAAY,CAAA;AAEjC,MAAM,WAAW,YAAY;IACzB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAA;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,2BAAqB,CAAA;AAErD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,6BAQpD"}
|
|
File without changes
|
|
File without changes
|