cognitive-core 0.0.2 → 0.1.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.
- package/README.md +302 -116
- package/SKILL.md +193 -0
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +5 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/mock-provider.d.ts +23 -0
- package/dist/agents/mock-provider.d.ts.map +1 -0
- package/dist/agents/mock-provider.js +71 -0
- package/dist/agents/mock-provider.js.map +1 -0
- package/dist/agents/types.d.ts +98 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +44 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/atlas.d.ts +196 -0
- package/dist/atlas.d.ts.map +1 -0
- package/dist/atlas.js +373 -0
- package/dist/atlas.js.map +1 -0
- package/dist/bin/cognitive-core.d.ts +18 -0
- package/dist/bin/cognitive-core.d.ts.map +1 -0
- package/dist/bin/cognitive-core.js +419 -0
- package/dist/bin/cognitive-core.js.map +1 -0
- package/dist/embeddings/bm25.d.ts +104 -0
- package/dist/embeddings/bm25.d.ts.map +1 -0
- package/dist/embeddings/bm25.js +264 -0
- package/dist/embeddings/bm25.js.map +1 -0
- package/dist/embeddings/index.d.ts +12 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +16 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/manager.d.ts +112 -0
- package/dist/embeddings/manager.d.ts.map +1 -0
- package/dist/embeddings/manager.js +215 -0
- package/dist/embeddings/manager.js.map +1 -0
- package/dist/embeddings/provider.d.ts +101 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +232 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/embeddings/vector-store.d.ts +101 -0
- package/dist/embeddings/vector-store.d.ts.map +1 -0
- package/dist/embeddings/vector-store.js +256 -0
- package/dist/embeddings/vector-store.js.map +1 -0
- package/dist/factory.d.ts +193 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +109 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +30 -453
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -509
- package/dist/index.js.map +1 -0
- package/dist/learning/analyzer.d.ts +110 -0
- package/dist/learning/analyzer.d.ts.map +1 -0
- package/dist/learning/analyzer.js +213 -0
- package/dist/learning/analyzer.js.map +1 -0
- package/dist/learning/effectiveness.d.ts +158 -0
- package/dist/learning/effectiveness.d.ts.map +1 -0
- package/dist/learning/effectiveness.js +251 -0
- package/dist/learning/effectiveness.js.map +1 -0
- package/dist/learning/index.d.ts +8 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +11 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/llm-extractor.d.ts +88 -0
- package/dist/learning/llm-extractor.d.ts.map +1 -0
- package/dist/learning/llm-extractor.js +372 -0
- package/dist/learning/llm-extractor.js.map +1 -0
- package/dist/learning/meta-learner.d.ts +80 -0
- package/dist/learning/meta-learner.d.ts.map +1 -0
- package/dist/learning/meta-learner.js +355 -0
- package/dist/learning/meta-learner.js.map +1 -0
- package/dist/learning/pipeline.d.ts +65 -0
- package/dist/learning/pipeline.d.ts.map +1 -0
- package/dist/learning/pipeline.js +170 -0
- package/dist/learning/pipeline.js.map +1 -0
- package/dist/learning/playbook-extractor.d.ts +113 -0
- package/dist/learning/playbook-extractor.d.ts.map +1 -0
- package/dist/learning/playbook-extractor.js +523 -0
- package/dist/learning/playbook-extractor.js.map +1 -0
- package/dist/learning/usage-inference.d.ts +82 -0
- package/dist/learning/usage-inference.d.ts.map +1 -0
- package/dist/learning/usage-inference.js +261 -0
- package/dist/learning/usage-inference.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/playbook-server.d.ts +120 -0
- package/dist/mcp/playbook-server.d.ts.map +1 -0
- package/dist/mcp/playbook-server.js +427 -0
- package/dist/mcp/playbook-server.js.map +1 -0
- package/dist/memory/curated-loader.d.ts +62 -0
- package/dist/memory/curated-loader.d.ts.map +1 -0
- package/dist/memory/curated-loader.js +106 -0
- package/dist/memory/curated-loader.js.map +1 -0
- package/dist/memory/experience.d.ts +122 -0
- package/dist/memory/experience.d.ts.map +1 -0
- package/dist/memory/experience.js +392 -0
- package/dist/memory/experience.js.map +1 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +9 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/meta.d.ts +90 -0
- package/dist/memory/meta.d.ts.map +1 -0
- package/dist/memory/meta.js +362 -0
- package/dist/memory/meta.js.map +1 -0
- package/dist/memory/playbook.d.ts +133 -0
- package/dist/memory/playbook.d.ts.map +1 -0
- package/dist/memory/playbook.js +357 -0
- package/dist/memory/playbook.js.map +1 -0
- package/dist/memory/system.d.ts +167 -0
- package/dist/memory/system.d.ts.map +1 -0
- package/dist/memory/system.js +383 -0
- package/dist/memory/system.js.map +1 -0
- package/dist/runtime/backends/acp.d.ts +67 -0
- package/dist/runtime/backends/acp.d.ts.map +1 -0
- package/dist/runtime/backends/acp.js +290 -0
- package/dist/runtime/backends/acp.js.map +1 -0
- package/dist/runtime/backends/index.d.ts +5 -0
- package/dist/runtime/backends/index.d.ts.map +1 -0
- package/dist/runtime/backends/index.js +6 -0
- package/dist/runtime/backends/index.js.map +1 -0
- package/dist/runtime/backends/mock.d.ts +67 -0
- package/dist/runtime/backends/mock.d.ts.map +1 -0
- package/dist/runtime/backends/mock.js +153 -0
- package/dist/runtime/backends/mock.js.map +1 -0
- package/dist/runtime/backends/subprocess.d.ts +56 -0
- package/dist/runtime/backends/subprocess.d.ts.map +1 -0
- package/dist/runtime/backends/subprocess.js +260 -0
- package/dist/runtime/backends/subprocess.js.map +1 -0
- package/dist/runtime/flows/learning.d.ts +73 -0
- package/dist/runtime/flows/learning.d.ts.map +1 -0
- package/dist/runtime/flows/learning.js +116 -0
- package/dist/runtime/flows/learning.js.map +1 -0
- package/dist/runtime/flows/validation.d.ts +122 -0
- package/dist/runtime/flows/validation.d.ts.map +1 -0
- package/dist/runtime/flows/validation.js +223 -0
- package/dist/runtime/flows/validation.js.map +1 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/manager.d.ts +116 -0
- package/dist/runtime/manager.d.ts.map +1 -0
- package/dist/runtime/manager.js +416 -0
- package/dist/runtime/manager.js.map +1 -0
- package/dist/runtime/types.d.ts +138 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/search/evaluator.d.ts +102 -0
- package/dist/search/evaluator.d.ts.map +1 -0
- package/dist/search/evaluator.js +352 -0
- package/dist/search/evaluator.js.map +1 -0
- package/dist/search/index.d.ts +7 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +11 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/refinement-loop.d.ts +73 -0
- package/dist/search/refinement-loop.d.ts.map +1 -0
- package/dist/search/refinement-loop.js +245 -0
- package/dist/search/refinement-loop.js.map +1 -0
- package/dist/search/refinement-types.d.ts +154 -0
- package/dist/search/refinement-types.d.ts.map +1 -0
- package/dist/search/refinement-types.js +99 -0
- package/dist/search/refinement-types.js.map +1 -0
- package/dist/search/router.d.ts +61 -0
- package/dist/search/router.d.ts.map +1 -0
- package/dist/search/router.js +197 -0
- package/dist/search/router.js.map +1 -0
- package/dist/search/solver.d.ts +75 -0
- package/dist/search/solver.d.ts.map +1 -0
- package/dist/search/solver.js +216 -0
- package/dist/search/solver.js.map +1 -0
- package/dist/search/verification-runner.d.ts +125 -0
- package/dist/search/verification-runner.d.ts.map +1 -0
- package/dist/search/verification-runner.js +440 -0
- package/dist/search/verification-runner.js.map +1 -0
- package/dist/surfacing/index.d.ts +2 -0
- package/dist/surfacing/index.d.ts.map +1 -0
- package/dist/surfacing/index.js +2 -0
- package/dist/surfacing/index.js.map +1 -0
- package/dist/surfacing/skill-library.d.ts +158 -0
- package/dist/surfacing/skill-library.d.ts.map +1 -0
- package/dist/surfacing/skill-library.js +429 -0
- package/dist/surfacing/skill-library.js.map +1 -0
- package/dist/types/config.d.ts +1113 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +274 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memory.d.ts +339 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +207 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/meta.d.ts +146 -0
- package/dist/types/meta.d.ts.map +1 -0
- package/dist/types/meta.js +51 -0
- package/dist/types/meta.js.map +1 -0
- package/dist/types/outcome.d.ts +42 -0
- package/dist/types/outcome.d.ts.map +1 -0
- package/dist/types/outcome.js +50 -0
- package/dist/types/outcome.js.map +1 -0
- package/dist/types/playbook.d.ts +119 -0
- package/dist/types/playbook.d.ts.map +1 -0
- package/dist/types/playbook.js +71 -0
- package/dist/types/playbook.js.map +1 -0
- package/dist/types/step.d.ts +44 -0
- package/dist/types/step.d.ts.map +1 -0
- package/dist/types/step.js +32 -0
- package/dist/types/step.js.map +1 -0
- package/dist/types/task.d.ts +91 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +39 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/trajectory.d.ts +221 -0
- package/dist/types/trajectory.d.ts.map +1 -0
- package/dist/types/trajectory.js +60 -0
- package/dist/types/trajectory.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/similarity.d.ts +31 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +107 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/utils/storage.d.ts +106 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +203 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/validation.d.ts +129 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +171 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +50 -34
- package/scripts/migrate-to-playbooks.ts +307 -0
- package/src/agents/index.ts +14 -0
- package/src/agents/mock-provider.ts +93 -0
- package/src/agents/types.ts +137 -0
- package/src/atlas.ts +560 -0
- package/src/bin/cognitive-core.ts +470 -0
- package/src/embeddings/bm25.ts +337 -0
- package/src/embeddings/index.ts +39 -0
- package/src/embeddings/manager.ts +288 -0
- package/src/embeddings/provider.ts +311 -0
- package/src/embeddings/vector-store.ts +353 -0
- package/src/factory.ts +263 -0
- package/src/index.ts +246 -0
- package/src/learning/analyzer.ts +335 -0
- package/src/learning/effectiveness.ts +428 -0
- package/src/learning/index.ts +58 -0
- package/src/learning/llm-extractor.ts +542 -0
- package/src/learning/meta-learner.ts +516 -0
- package/src/learning/pipeline.ts +244 -0
- package/src/learning/playbook-extractor.ts +702 -0
- package/src/learning/usage-inference.ts +372 -0
- package/src/mcp/index.ts +12 -0
- package/src/mcp/playbook-server.ts +565 -0
- package/src/memory/curated-loader.ts +160 -0
- package/src/memory/experience.ts +515 -0
- package/src/memory/index.ts +27 -0
- package/src/memory/meta.ts +506 -0
- package/src/memory/playbook.ts +493 -0
- package/src/memory/system.ts +551 -0
- package/src/runtime/backends/acp.ts +378 -0
- package/src/runtime/backends/index.ts +24 -0
- package/src/runtime/backends/mock.ts +218 -0
- package/src/runtime/backends/subprocess.ts +356 -0
- package/src/runtime/flows/learning.ts +183 -0
- package/src/runtime/flows/validation.ts +381 -0
- package/src/runtime/index.ts +53 -0
- package/src/runtime/manager.ts +541 -0
- package/src/runtime/types.ts +157 -0
- package/src/search/evaluator.ts +474 -0
- package/src/search/index.ts +59 -0
- package/src/search/refinement-loop.ts +363 -0
- package/src/search/refinement-types.ts +159 -0
- package/src/search/router.ts +261 -0
- package/src/search/solver.ts +303 -0
- package/src/search/verification-runner.ts +570 -0
- package/src/surfacing/index.ts +6 -0
- package/src/surfacing/skill-library.ts +594 -0
- package/src/types/config.ts +333 -0
- package/src/types/index.ts +130 -0
- package/src/types/memory.ts +270 -0
- package/src/types/meta.ts +218 -0
- package/src/types/outcome.ts +66 -0
- package/src/types/playbook.ts +196 -0
- package/src/types/step.ts +40 -0
- package/src/types/task.ts +52 -0
- package/src/types/trajectory.ts +80 -0
- package/src/utils/index.ts +38 -0
- package/src/utils/similarity.ts +139 -0
- package/src/utils/storage.ts +249 -0
- package/src/utils/validation.ts +286 -0
- package/tests/embeddings/bm25.test.ts +130 -0
- package/tests/embeddings/manager.test.ts +205 -0
- package/tests/integration/atlas.test.ts +266 -0
- package/tests/integration/e2e.test.ts +929 -0
- package/tests/learning/analyzer.test.ts +426 -0
- package/tests/learning/effectiveness.test.ts +542 -0
- package/tests/learning/pipeline.test.ts +176 -0
- package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
- package/tests/learning/usage-inference.test.ts +254 -0
- package/tests/mcp/playbook-server.test.ts +252 -0
- package/tests/memory/experience.test.ts +198 -0
- package/tests/memory/playbook.test.ts +338 -0
- package/tests/memory/provenance.test.ts +639 -0
- package/tests/memory/system.test.ts +325 -0
- package/tests/runtime/agent-manager.test.ts +512 -0
- package/tests/runtime/mock-backend.test.ts +248 -0
- package/tests/search/refinement-loop.test.ts +468 -0
- package/tests/search/refinement.test.ts +267 -0
- package/tests/search/router.test.ts +427 -0
- package/tests/surfacing/skill-library.test.ts +292 -0
- package/tests/types/outcome.test.ts +147 -0
- package/tests/types/step.test.ts +133 -0
- package/tests/types/task.test.ts +158 -0
- package/tests/types/trajectory.test.ts +253 -0
- package/tests/utils/similarity.test.ts +188 -0
- package/tests/utils/validation.test.ts +252 -0
- package/tsconfig.json +25 -0
- package/vitest.config.ts +22 -0
- package/dist/index.d.mts +0 -466
- package/dist/index.mjs +0 -478
package/dist/index.js
CHANGED
|
@@ -1,509 +1,84 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
this.emit("ready", response);
|
|
86
|
-
resolve2();
|
|
87
|
-
} else {
|
|
88
|
-
reject(new Error("Failed to verify Python process"));
|
|
89
|
-
}
|
|
90
|
-
} catch (error) {
|
|
91
|
-
reject(error);
|
|
92
|
-
}
|
|
93
|
-
}, 100);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Stop the Python subprocess.
|
|
98
|
-
*/
|
|
99
|
-
async stop() {
|
|
100
|
-
if (!this.process) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
return new Promise((resolve2) => {
|
|
104
|
-
if (this.process) {
|
|
105
|
-
this.process.once("exit", () => {
|
|
106
|
-
this.cleanup();
|
|
107
|
-
resolve2();
|
|
108
|
-
});
|
|
109
|
-
this.process.stdin?.end();
|
|
110
|
-
this.process.kill("SIGTERM");
|
|
111
|
-
setTimeout(() => {
|
|
112
|
-
if (this.process) {
|
|
113
|
-
this.process.kill("SIGKILL");
|
|
114
|
-
}
|
|
115
|
-
resolve2();
|
|
116
|
-
}, 5e3);
|
|
117
|
-
} else {
|
|
118
|
-
resolve2();
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Execute a command on the Python process.
|
|
124
|
-
*
|
|
125
|
-
* @param command - Command to execute (e.g., "memory.search", "env.reset")
|
|
126
|
-
* @param args - Command arguments
|
|
127
|
-
* @returns Command result
|
|
128
|
-
*/
|
|
129
|
-
async execute(command, args = {}) {
|
|
130
|
-
if (!this.process?.stdin) {
|
|
131
|
-
throw new Error("Client not started. Call start() first.");
|
|
132
|
-
}
|
|
133
|
-
const request = { command, args };
|
|
134
|
-
const response = await this.sendRequest(request);
|
|
135
|
-
if (!response.success) {
|
|
136
|
-
throw new Error(response.error ?? "Unknown error");
|
|
137
|
-
}
|
|
138
|
-
return response.result;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Check if the client is running.
|
|
142
|
-
*/
|
|
143
|
-
get isRunning() {
|
|
144
|
-
return this.process !== null && !this.process.killed;
|
|
145
|
-
}
|
|
146
|
-
sendRequest(request) {
|
|
147
|
-
return new Promise((resolve2, reject) => {
|
|
148
|
-
const id = this.requestId++;
|
|
149
|
-
const json = JSON.stringify(request);
|
|
150
|
-
const timeout = setTimeout(() => {
|
|
151
|
-
this.pendingRequests.delete(id);
|
|
152
|
-
reject(new Error(`Command timed out: ${request.command}`));
|
|
153
|
-
}, this.options.timeout);
|
|
154
|
-
this.pendingRequests.set(id, { resolve: resolve2, reject, timeout });
|
|
155
|
-
this.process?.stdin?.write(json + "\n");
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
handleData(data) {
|
|
159
|
-
this.buffer += data;
|
|
160
|
-
const lines = this.buffer.split("\n");
|
|
161
|
-
this.buffer = lines.pop() ?? "";
|
|
162
|
-
for (const line of lines) {
|
|
163
|
-
if (line.trim()) {
|
|
164
|
-
try {
|
|
165
|
-
const response = JSON.parse(line);
|
|
166
|
-
this.handleResponse(response);
|
|
167
|
-
} catch (error) {
|
|
168
|
-
this.emit("parseError", { line, error });
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
handleResponse(response) {
|
|
174
|
-
const [id, pending] = this.pendingRequests.entries().next().value ?? [
|
|
175
|
-
null,
|
|
176
|
-
null
|
|
177
|
-
];
|
|
178
|
-
if (id !== null && pending) {
|
|
179
|
-
clearTimeout(pending.timeout);
|
|
180
|
-
this.pendingRequests.delete(id);
|
|
181
|
-
pending.resolve(response);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
cleanup() {
|
|
185
|
-
for (const [id, pending] of this.pendingRequests) {
|
|
186
|
-
clearTimeout(pending.timeout);
|
|
187
|
-
pending.reject(new Error("Process terminated"));
|
|
188
|
-
}
|
|
189
|
-
this.pendingRequests.clear();
|
|
190
|
-
this.process = null;
|
|
191
|
-
this.buffer = "";
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
// src/setup.ts
|
|
196
|
-
var import_child_process2 = require("child_process");
|
|
197
|
-
var import_fs = require("fs");
|
|
198
|
-
var import_path = require("path");
|
|
199
|
-
var import_os = require("os");
|
|
200
|
-
function findPython(preferredPath) {
|
|
201
|
-
const candidates = preferredPath ? [preferredPath] : (0, import_os.platform)() === "win32" ? ["python", "python3", "py"] : ["python3", "python"];
|
|
202
|
-
for (const cmd of candidates) {
|
|
203
|
-
try {
|
|
204
|
-
(0, import_child_process2.execSync)(`${cmd} --version`, { stdio: "pipe" });
|
|
205
|
-
return cmd;
|
|
206
|
-
} catch {
|
|
207
|
-
continue;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
throw new Error(
|
|
211
|
-
"Python not found. Please install Python 3.10+ and ensure it's in your PATH.\nDownload from: https://www.python.org/downloads/"
|
|
212
|
-
);
|
|
213
|
-
}
|
|
214
|
-
function getVenvPaths(venvDir) {
|
|
215
|
-
const isWindows = (0, import_os.platform)() === "win32";
|
|
216
|
-
const binDir = isWindows ? "Scripts" : "bin";
|
|
217
|
-
const ext = isWindows ? ".exe" : "";
|
|
218
|
-
return {
|
|
219
|
-
python: (0, import_path.join)(venvDir, binDir, `python${ext}`),
|
|
220
|
-
pip: (0, import_path.join)(venvDir, binDir, `pip${ext}`)
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
function runCommand(command, args, options = {}) {
|
|
224
|
-
return new Promise((resolve2, reject) => {
|
|
225
|
-
const proc = (0, import_child_process2.spawn)(command, args, {
|
|
226
|
-
cwd: options.cwd,
|
|
227
|
-
stdio: options.verbose ? "inherit" : "pipe",
|
|
228
|
-
shell: (0, import_os.platform)() === "win32"
|
|
229
|
-
});
|
|
230
|
-
let output = "";
|
|
231
|
-
if (!options.verbose) {
|
|
232
|
-
proc.stdout?.on("data", (data) => {
|
|
233
|
-
output += data.toString();
|
|
234
|
-
});
|
|
235
|
-
proc.stderr?.on("data", (data) => {
|
|
236
|
-
output += data.toString();
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
proc.on("error", reject);
|
|
240
|
-
proc.on("close", (code) => {
|
|
241
|
-
if (code === 0) {
|
|
242
|
-
resolve2(output);
|
|
243
|
-
} else {
|
|
244
|
-
reject(new Error(`Command failed with code ${code}: ${command} ${args.join(" ")}
|
|
245
|
-
${output}`));
|
|
246
|
-
}
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
async function getInstalledVersion(pythonPath) {
|
|
251
|
-
try {
|
|
252
|
-
const output = await runCommand(pythonPath, [
|
|
253
|
-
"-c",
|
|
254
|
-
"import cognitive_core; print(cognitive_core.__version__)"
|
|
255
|
-
]);
|
|
256
|
-
return output.trim();
|
|
257
|
-
} catch {
|
|
258
|
-
return null;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
async function setup(options = {}) {
|
|
262
|
-
const {
|
|
263
|
-
venvDir = ".cognitive-core",
|
|
264
|
-
pythonPath: preferredPython,
|
|
265
|
-
version,
|
|
266
|
-
extras = [],
|
|
267
|
-
verbose = true
|
|
268
|
-
} = options;
|
|
269
|
-
const venvPath = (0, import_path.resolve)(venvDir);
|
|
270
|
-
const log = verbose ? console.log.bind(console) : () => {
|
|
271
|
-
};
|
|
272
|
-
log("\u{1F50D} Finding Python...");
|
|
273
|
-
const systemPython = findPython(preferredPython);
|
|
274
|
-
log(` Found: ${systemPython}`);
|
|
275
|
-
const versionOutput = (0, import_child_process2.execSync)(`${systemPython} --version`, { encoding: "utf-8" });
|
|
276
|
-
const versionMatch = versionOutput.match(/Python (\d+)\.(\d+)/);
|
|
277
|
-
if (versionMatch) {
|
|
278
|
-
const [, major, minor] = versionMatch;
|
|
279
|
-
if (parseInt(major) < 3 || parseInt(major) === 3 && parseInt(minor) < 10) {
|
|
280
|
-
throw new Error(
|
|
281
|
-
`Python 3.10+ required, found ${versionOutput.trim()}.
|
|
282
|
-
Please upgrade Python: https://www.python.org/downloads/`
|
|
283
|
-
);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
const venvPaths = getVenvPaths(venvPath);
|
|
287
|
-
const venvExists = (0, import_fs.existsSync)(venvPaths.python);
|
|
288
|
-
let created = false;
|
|
289
|
-
if (!venvExists) {
|
|
290
|
-
log("\u{1F4E6} Creating virtual environment...");
|
|
291
|
-
(0, import_fs.mkdirSync)(venvPath, { recursive: true });
|
|
292
|
-
await runCommand(systemPython, ["-m", "venv", venvPath], { verbose });
|
|
293
|
-
created = true;
|
|
294
|
-
log(` Created: ${venvPath}`);
|
|
295
|
-
} else {
|
|
296
|
-
log(`\u{1F4E6} Using existing virtual environment: ${venvPath}`);
|
|
297
|
-
}
|
|
298
|
-
let installedVersion = await getInstalledVersion(venvPaths.python);
|
|
299
|
-
if (!installedVersion) {
|
|
300
|
-
log("\u2B07\uFE0F Installing cognitive-core...");
|
|
301
|
-
let packageSpec = "cognitive-core";
|
|
302
|
-
if (version) {
|
|
303
|
-
packageSpec += `==${version}`;
|
|
304
|
-
}
|
|
305
|
-
if (extras.length > 0) {
|
|
306
|
-
packageSpec += `[${extras.join(",")}]`;
|
|
307
|
-
}
|
|
308
|
-
await runCommand(
|
|
309
|
-
venvPaths.pip,
|
|
310
|
-
["install", "--upgrade", "pip"],
|
|
311
|
-
{ verbose }
|
|
312
|
-
);
|
|
313
|
-
await runCommand(
|
|
314
|
-
venvPaths.pip,
|
|
315
|
-
["install", packageSpec],
|
|
316
|
-
{ verbose }
|
|
317
|
-
);
|
|
318
|
-
installedVersion = await getInstalledVersion(venvPaths.python);
|
|
319
|
-
log(` Installed: cognitive-core ${installedVersion}`);
|
|
320
|
-
} else {
|
|
321
|
-
log(`\u2705 cognitive-core ${installedVersion} already installed`);
|
|
322
|
-
}
|
|
323
|
-
log("");
|
|
324
|
-
log("\u{1F389} Setup complete!");
|
|
325
|
-
log(` Python: ${venvPaths.python}`);
|
|
326
|
-
log(` Version: ${installedVersion}`);
|
|
327
|
-
log("");
|
|
328
|
-
return {
|
|
329
|
-
venvPath,
|
|
330
|
-
pythonPath: venvPaths.python,
|
|
331
|
-
pipPath: venvPaths.pip,
|
|
332
|
-
created,
|
|
333
|
-
version: installedVersion ?? "unknown"
|
|
334
|
-
};
|
|
335
|
-
}
|
|
336
|
-
function isSetUp(venvDir = ".cognitive-core") {
|
|
337
|
-
const venvPath = (0, import_path.resolve)(venvDir);
|
|
338
|
-
const venvPaths = getVenvPaths(venvPath);
|
|
339
|
-
return (0, import_fs.existsSync)(venvPaths.python);
|
|
340
|
-
}
|
|
341
|
-
function getPythonPath(venvDir = ".cognitive-core") {
|
|
342
|
-
const venvPath = (0, import_path.resolve)(venvDir);
|
|
343
|
-
const venvPaths = getVenvPaths(venvPath);
|
|
344
|
-
return (0, import_fs.existsSync)(venvPaths.python) ? venvPaths.python : null;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
// src/index.ts
|
|
348
|
-
var EnvironmentAPI = class {
|
|
349
|
-
constructor(client) {
|
|
350
|
-
this.client = client;
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Create a new environment.
|
|
354
|
-
*/
|
|
355
|
-
async create(domain = "passthrough") {
|
|
356
|
-
const result = await this.client.execute(
|
|
357
|
-
"env.create",
|
|
358
|
-
{ domain }
|
|
359
|
-
);
|
|
360
|
-
return { envId: result.env_id, domain: result.domain };
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Reset an environment with a task.
|
|
364
|
-
*/
|
|
365
|
-
async reset(envId, task) {
|
|
366
|
-
const result = await this.client.execute(
|
|
367
|
-
"env.reset",
|
|
368
|
-
{ env_id: envId, task }
|
|
369
|
-
);
|
|
370
|
-
return { envId: result.env_id, observation: result.observation };
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Execute an action in the environment.
|
|
374
|
-
*/
|
|
375
|
-
async step(envId, action) {
|
|
376
|
-
return this.client.execute("env.step", { env_id: envId, action });
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Verify a solution.
|
|
380
|
-
*/
|
|
381
|
-
async verify(envId, solution) {
|
|
382
|
-
const result = await this.client.execute("env.verify", { env_id: envId, solution });
|
|
383
|
-
return {
|
|
384
|
-
success: result.success,
|
|
385
|
-
partialScore: result.partial_score,
|
|
386
|
-
verificationDetails: result.details
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
var MemoryAPI = class {
|
|
391
|
-
constructor(client) {
|
|
392
|
-
this.client = client;
|
|
393
|
-
}
|
|
394
|
-
/**
|
|
395
|
-
* Search for similar experiences.
|
|
396
|
-
*/
|
|
397
|
-
async searchExperiences(query, k = 5) {
|
|
398
|
-
const result = await this.client.execute(
|
|
399
|
-
"memory.search",
|
|
400
|
-
{ query, k, type: "experience" }
|
|
401
|
-
);
|
|
402
|
-
return result.experiences ?? [];
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
* Search for relevant strategies.
|
|
406
|
-
*/
|
|
407
|
-
async searchStrategies(query, k = 5) {
|
|
408
|
-
const result = await this.client.execute(
|
|
409
|
-
"memory.search",
|
|
410
|
-
{ query, k, type: "strategy" }
|
|
411
|
-
);
|
|
412
|
-
return result.strategies ?? [];
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Search for relevant concepts.
|
|
416
|
-
*/
|
|
417
|
-
async searchConcepts(query, k = 5) {
|
|
418
|
-
const result = await this.client.execute(
|
|
419
|
-
"memory.search",
|
|
420
|
-
{ query, k, type: "concept" }
|
|
421
|
-
);
|
|
422
|
-
return result.concepts ?? [];
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Store a trajectory in memory.
|
|
426
|
-
*/
|
|
427
|
-
async store(trajectory) {
|
|
428
|
-
return this.client.execute("memory.store", { trajectory });
|
|
429
|
-
}
|
|
430
|
-
};
|
|
431
|
-
var SearchAPI = class {
|
|
432
|
-
constructor(client) {
|
|
433
|
-
this.client = client;
|
|
434
|
-
}
|
|
435
|
-
/**
|
|
436
|
-
* Solve a task using the configured search strategy.
|
|
437
|
-
*/
|
|
438
|
-
async solve(task) {
|
|
439
|
-
return this.client.execute("search.solve", { task });
|
|
440
|
-
}
|
|
441
|
-
};
|
|
442
|
-
var CognitiveCore = class {
|
|
443
|
-
client;
|
|
444
|
-
/**
|
|
445
|
-
* Environment operations (create, reset, step, verify)
|
|
446
|
-
*/
|
|
447
|
-
env;
|
|
448
|
-
/**
|
|
449
|
-
* Memory operations (search, store)
|
|
450
|
-
*/
|
|
451
|
-
memory;
|
|
452
|
-
/**
|
|
453
|
-
* Search operations (solve)
|
|
454
|
-
*/
|
|
455
|
-
search;
|
|
456
|
-
constructor(options = {}) {
|
|
457
|
-
let pythonPath = options.pythonPath;
|
|
458
|
-
if (!pythonPath) {
|
|
459
|
-
const venvPython = getPythonPath();
|
|
460
|
-
if (venvPython) {
|
|
461
|
-
pythonPath = venvPython;
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
this.client = new CognitiveCoreClient({ ...options, pythonPath });
|
|
465
|
-
this.env = new EnvironmentAPI(this.client);
|
|
466
|
-
this.memory = new MemoryAPI(this.client);
|
|
467
|
-
this.search = new SearchAPI(this.client);
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Start the Python subprocess.
|
|
471
|
-
*/
|
|
472
|
-
async start() {
|
|
473
|
-
await this.client.start();
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Stop the Python subprocess.
|
|
477
|
-
*/
|
|
478
|
-
async stop() {
|
|
479
|
-
await this.client.stop();
|
|
480
|
-
}
|
|
481
|
-
/**
|
|
482
|
-
* Get the version of the Python cognitive-core package.
|
|
483
|
-
*/
|
|
484
|
-
async version() {
|
|
485
|
-
const result = await this.client.execute("version");
|
|
486
|
-
return result.version;
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* Check if the client is running.
|
|
490
|
-
*/
|
|
491
|
-
get isRunning() {
|
|
492
|
-
return this.client.isRunning;
|
|
493
|
-
}
|
|
494
|
-
/**
|
|
495
|
-
* Access the underlying client for advanced usage.
|
|
496
|
-
*/
|
|
497
|
-
get rawClient() {
|
|
498
|
-
return this.client;
|
|
499
|
-
}
|
|
500
|
-
};
|
|
501
|
-
var index_default = CognitiveCore;
|
|
502
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
503
|
-
0 && (module.exports = {
|
|
504
|
-
CognitiveCore,
|
|
505
|
-
CognitiveCoreClient,
|
|
506
|
-
getPythonPath,
|
|
507
|
-
isSetUp,
|
|
508
|
-
setup
|
|
509
|
-
});
|
|
1
|
+
/**
|
|
2
|
+
* Atlas - Adaptive Trajectory Learning and Abstraction System
|
|
3
|
+
*
|
|
4
|
+
* A TypeScript-native cognitive core for building agents that learn
|
|
5
|
+
* from experience. Extracts playbooks from problem-solving trajectories
|
|
6
|
+
* to guide future task solving.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createAtlas, createTask } from 'cognitive-core';
|
|
11
|
+
*
|
|
12
|
+
* const atlas = createAtlas();
|
|
13
|
+
* await atlas.init();
|
|
14
|
+
*
|
|
15
|
+
* // Set your LLM provider
|
|
16
|
+
* atlas.setProvider(myProvider);
|
|
17
|
+
*
|
|
18
|
+
* // Solve a task
|
|
19
|
+
* const task = createTask({
|
|
20
|
+
* domain: 'code',
|
|
21
|
+
* description: 'Write a function that...',
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* const result = await atlas.solve(task);
|
|
25
|
+
* console.log(result.trajectory.outcome);
|
|
26
|
+
*
|
|
27
|
+
* // Close when done
|
|
28
|
+
* await atlas.close();
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
// Main Atlas class
|
|
32
|
+
export { Atlas, createAtlas, createAtlasWithProvider, createAtlasWithAgents, } from './atlas.js';
|
|
33
|
+
// Types
|
|
34
|
+
export * from './types/index.js';
|
|
35
|
+
// Memory system
|
|
36
|
+
export { MemorySystem, createMemorySystem, ExperienceMemory,
|
|
37
|
+
// Playbook-based memory
|
|
38
|
+
PlaybookLibrary, createPlaybookLibrary,
|
|
39
|
+
// Meta-learning memory
|
|
40
|
+
MetaMemory, createMetaMemory, } from './memory/index.js';
|
|
41
|
+
// Learning engine
|
|
42
|
+
export { LearningPipeline, createLearningPipeline, TrajectoryAnalyzer, createAnalyzer,
|
|
43
|
+
// Playbook-based learning
|
|
44
|
+
PlaybookExtractor, createPlaybookExtractor,
|
|
45
|
+
// Meta-learning
|
|
46
|
+
MetaLearner, createMetaLearner,
|
|
47
|
+
// Usage inference
|
|
48
|
+
PlaybookUsageInference, createUsageInference,
|
|
49
|
+
// LLM-based extraction
|
|
50
|
+
LLMPlaybookExtractor, createLLMExtractor, } from './learning/index.js';
|
|
51
|
+
// Search/solving
|
|
52
|
+
export { TaskRouter, createRouter, DirectSolver, createSolver,
|
|
53
|
+
// Refinement
|
|
54
|
+
SolutionEvaluator, createSolutionEvaluator, RefinementLoop, createRefinementLoop, createEvaluationResult, scoreToQuality, isQualityAcceptable,
|
|
55
|
+
// Verification runner
|
|
56
|
+
VerificationRunner, createVerificationRunner, TestRunners, } from './search/index.js';
|
|
57
|
+
// Agents
|
|
58
|
+
export { Agent, MockLLMProvider, createMockProvider, } from './agents/index.js';
|
|
59
|
+
// Utilities
|
|
60
|
+
export { cosineSimilarity, textSimilarity, findTopK, JsonStore, saveJson, loadJson, } from './utils/index.js';
|
|
61
|
+
// Embeddings - Vector search and similarity
|
|
62
|
+
export { OpenAIEmbeddingProvider, VoyageEmbeddingProvider, LocalEmbeddingProvider, createEmbeddingProvider,
|
|
63
|
+
// BM25 text search fallback
|
|
64
|
+
BM25Index, createBM25Index,
|
|
65
|
+
// Vector store
|
|
66
|
+
SqliteVectorStore, createVectorStore,
|
|
67
|
+
// Embedding manager
|
|
68
|
+
EmbeddingManager, createEmbeddingManager, } from './embeddings/index.js';
|
|
69
|
+
// Runtime - Agent management and flows
|
|
70
|
+
export {
|
|
71
|
+
// Manager
|
|
72
|
+
AgentManager, createAgentManager, DefaultKnowledgeInjector, DefaultTrajectoryExtractor,
|
|
73
|
+
// Backends
|
|
74
|
+
SubprocessBackend, createSubprocessBackend, claudeCodeConfig, MockBackend, createMockBackend, ACPBackend, createACPBackend, claudeCodeACPConfig, claudeCodeDirectConfig,
|
|
75
|
+
// Flows
|
|
76
|
+
LearningFlow, createLearningFlow, ValidationFlow, createValidationFlow, } from './runtime/index.js';
|
|
77
|
+
// Surfacing - Skill library for agent consumption
|
|
78
|
+
export { SkillLibrary, createSkillLibrary, } from './surfacing/index.js';
|
|
79
|
+
// MCP Server - On-demand playbook access
|
|
80
|
+
// @deprecated Use the CLI (bin/cognitive-core) + SKILL.md approach instead
|
|
81
|
+
export { PlaybookMCPServer, createPlaybookMCPServer, } from './mcp/index.js';
|
|
82
|
+
// Factory - Unified interface for external integration (e.g., skill-tree)
|
|
83
|
+
export { createCognitiveCoreFactory, cognitiveCoreFactory, } from './factory.js';
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,mBAAmB;AACnB,OAAO,EACL,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,qBAAqB,GAGtB,MAAM,YAAY,CAAC;AAEpB,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,gBAAgB;AAGhB,wBAAwB;AACxB,eAAe,EACf,qBAAqB;AAErB,uBAAuB;AACvB,UAAU,EACV,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,kBAAkB;AAClB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc;AAId,0BAA0B;AAC1B,iBAAiB,EACjB,uBAAuB;AAIvB,gBAAgB;AAChB,WAAW,EACX,iBAAiB;AAEjB,kBAAkB;AAClB,sBAAsB,EACtB,oBAAoB;AAGpB,uBAAuB;AACvB,oBAAoB,EACpB,kBAAkB,GAGnB,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY;AAGZ,aAAa;AACb,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,mBAAmB;AAWnB,sBAAsB;AACtB,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,GAIZ,MAAM,mBAAmB,CAAC;AAE3B,SAAS;AACT,OAAO,EACL,KAAK,EACL,eAAe,EACf,kBAAkB,GAKnB,MAAM,mBAAmB,CAAC;AAE3B,YAAY;AACZ,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,4CAA4C;AAC5C,OAAO,EAIL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB;AACvB,4BAA4B;AAC5B,SAAS,EACT,eAAe;AAEf,eAAe;AACf,iBAAiB,EACjB,iBAAiB;AAEjB,oBAAoB;AACpB,gBAAgB,EAChB,sBAAsB,GAGvB,MAAM,uBAAuB,CAAC;AAE/B,uCAAuC;AACvC,OAAO;AACL,UAAU;AACV,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B;AAC1B,WAAW;AACX,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB;AACtB,QAAQ;AACR,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GAoBrB,MAAM,oBAAoB,CAAC;AAE5B,kDAAkD;AAClD,OAAO,EACL,YAAY,EACZ,kBAAkB,GAGnB,MAAM,sBAAsB,CAAC;AAE9B,yCAAyC;AACzC,2EAA2E;AAC3E,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAKxB,MAAM,gBAAgB,CAAC;AAExB,0EAA0E;AAC1E,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GASrB,MAAM,cAAc,CAAC"}
|