@keel_flow/schema 0.2.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/LICENSE +21 -0
- package/README.md +19 -0
- package/dist/agent-event.d.ts +90 -0
- package/dist/agent-event.d.ts.map +1 -0
- package/dist/agent-event.js +78 -0
- package/dist/agent-event.js.map +1 -0
- package/dist/architecture.d.ts +777 -0
- package/dist/architecture.d.ts.map +1 -0
- package/dist/architecture.js +71 -0
- package/dist/architecture.js.map +1 -0
- package/dist/build.d.ts +42 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +26 -0
- package/dist/build.js.map +1 -0
- package/dist/goal.d.ts +220 -0
- package/dist/goal.d.ts.map +1 -0
- package/dist/goal.js +64 -0
- package/dist/goal.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/learning.d.ts +37 -0
- package/dist/learning.d.ts.map +1 -0
- package/dist/learning.js +26 -0
- package/dist/learning.js.map +1 -0
- package/dist/principle.d.ts +106 -0
- package/dist/principle.d.ts.map +1 -0
- package/dist/principle.js +27 -0
- package/dist/principle.js.map +1 -0
- package/dist/spec-check.d.ts +194 -0
- package/dist/spec-check.d.ts.map +1 -0
- package/dist/spec-check.js +43 -0
- package/dist/spec-check.js.map +1 -0
- package/dist/verify.d.ts +404 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +23 -0
- package/dist/verify.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +38 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 jglasskatz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @keel_flow/schema
|
|
2
|
+
|
|
3
|
+
Versioned Zod schemas and derived TypeScript types for all Keel data structures.
|
|
4
|
+
|
|
5
|
+
Exports: `ArchitectureMap`, `ArchitectureDelta`, `Principle`, `PrinciplePack`, `Violation`,
|
|
6
|
+
`VerifyResult`, `AgentEvent`, `SpecCheckResult`, `Build`, `LearningProposal`, `Goal`,
|
|
7
|
+
`GoalAction`, `GoalTrigger`, and the `SCHEMA_VERSION` constant.
|
|
8
|
+
|
|
9
|
+
Part of the [Keel](https://github.com/jglasskatz/keel) framework.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
npm install @keel_flow/schema
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## License
|
|
18
|
+
|
|
19
|
+
MIT
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const TriggeredBySchema: z.ZodObject<{
|
|
3
|
+
kind: z.ZodEnum<["user", "schedule", "event", "test"]>;
|
|
4
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
5
|
+
goalId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
triggerEventId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
kind: "user" | "schedule" | "event" | "test";
|
|
9
|
+
jobId?: string | undefined;
|
|
10
|
+
goalId?: string | undefined;
|
|
11
|
+
triggerEventId?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
kind: "user" | "schedule" | "event" | "test";
|
|
14
|
+
jobId?: string | undefined;
|
|
15
|
+
goalId?: string | undefined;
|
|
16
|
+
triggerEventId?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export type TriggeredBy = z.infer<typeof TriggeredBySchema>;
|
|
19
|
+
export declare const AgentEventKindSchema: z.ZodEnum<["session.start", "session.end", "orchestrator.decompose", "orchestrator.dispatch", "orchestrator.review", "sub-agent.start", "sub-agent.complete", "sub-agent.fail", "tool.call", "tool.result", "tool.error", "verify.run", "verify.check", "spec-judge.rubric", "spec-judge.claim", "spec-judge.adversarial", "spec-judge.bidirectional", "kb.ingest", "kb.retrieve", "kb.rerank", "memory.write", "skill.read", "user.steer", "clarifying.question", "build.start", "build.draft", "build.summary", "build.approval-request", "build.approved", "build.rejected", "build.spec-codified", "build.executing", "build.complete", "job.start", "job.complete", "job.fail", "job.skipped", "reflect.generated", "learn.proposal-loaded", "learn.proposal-accepted", "learn.proposal-rejected", "learn.proposal-deferred", "learn.applied", "memory.added", "memory.removed", "goal.evaluate-start", "goal.action-proposed", "goal.action-approved", "goal.action-rejected", "goal.action-executed", "goal.evaluate-end", "goal.failed", "goal.paused"]>;
|
|
20
|
+
export type AgentEventKind = z.infer<typeof AgentEventKindSchema>;
|
|
21
|
+
export declare const AgentEventSchema: z.ZodObject<{
|
|
22
|
+
id: z.ZodString;
|
|
23
|
+
ts: z.ZodString;
|
|
24
|
+
sessionId: z.ZodString;
|
|
25
|
+
parentEventId: z.ZodNullable<z.ZodString>;
|
|
26
|
+
workspaceId: z.ZodNullable<z.ZodString>;
|
|
27
|
+
triggeredBy: z.ZodObject<{
|
|
28
|
+
kind: z.ZodEnum<["user", "schedule", "event", "test"]>;
|
|
29
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
30
|
+
goalId: z.ZodOptional<z.ZodString>;
|
|
31
|
+
triggerEventId: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, "strip", z.ZodTypeAny, {
|
|
33
|
+
kind: "user" | "schedule" | "event" | "test";
|
|
34
|
+
jobId?: string | undefined;
|
|
35
|
+
goalId?: string | undefined;
|
|
36
|
+
triggerEventId?: string | undefined;
|
|
37
|
+
}, {
|
|
38
|
+
kind: "user" | "schedule" | "event" | "test";
|
|
39
|
+
jobId?: string | undefined;
|
|
40
|
+
goalId?: string | undefined;
|
|
41
|
+
triggerEventId?: string | undefined;
|
|
42
|
+
}>;
|
|
43
|
+
kind: z.ZodEnum<["session.start", "session.end", "orchestrator.decompose", "orchestrator.dispatch", "orchestrator.review", "sub-agent.start", "sub-agent.complete", "sub-agent.fail", "tool.call", "tool.result", "tool.error", "verify.run", "verify.check", "spec-judge.rubric", "spec-judge.claim", "spec-judge.adversarial", "spec-judge.bidirectional", "kb.ingest", "kb.retrieve", "kb.rerank", "memory.write", "skill.read", "user.steer", "clarifying.question", "build.start", "build.draft", "build.summary", "build.approval-request", "build.approved", "build.rejected", "build.spec-codified", "build.executing", "build.complete", "job.start", "job.complete", "job.fail", "job.skipped", "reflect.generated", "learn.proposal-loaded", "learn.proposal-accepted", "learn.proposal-rejected", "learn.proposal-deferred", "learn.applied", "memory.added", "memory.removed", "goal.evaluate-start", "goal.action-proposed", "goal.action-approved", "goal.action-rejected", "goal.action-executed", "goal.evaluate-end", "goal.failed", "goal.paused"]>;
|
|
44
|
+
payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
45
|
+
latencyMs: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
model: z.ZodOptional<z.ZodString>;
|
|
48
|
+
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
49
|
+
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
kind: "session.start" | "session.end" | "orchestrator.decompose" | "orchestrator.dispatch" | "orchestrator.review" | "sub-agent.start" | "sub-agent.complete" | "sub-agent.fail" | "tool.call" | "tool.result" | "tool.error" | "verify.run" | "verify.check" | "spec-judge.rubric" | "spec-judge.claim" | "spec-judge.adversarial" | "spec-judge.bidirectional" | "kb.ingest" | "kb.retrieve" | "kb.rerank" | "memory.write" | "skill.read" | "user.steer" | "clarifying.question" | "build.start" | "build.draft" | "build.summary" | "build.approval-request" | "build.approved" | "build.rejected" | "build.spec-codified" | "build.executing" | "build.complete" | "job.start" | "job.complete" | "job.fail" | "job.skipped" | "reflect.generated" | "learn.proposal-loaded" | "learn.proposal-accepted" | "learn.proposal-rejected" | "learn.proposal-deferred" | "learn.applied" | "memory.added" | "memory.removed" | "goal.evaluate-start" | "goal.action-proposed" | "goal.action-approved" | "goal.action-rejected" | "goal.action-executed" | "goal.evaluate-end" | "goal.failed" | "goal.paused";
|
|
52
|
+
id: string;
|
|
53
|
+
ts: string;
|
|
54
|
+
sessionId: string;
|
|
55
|
+
parentEventId: string | null;
|
|
56
|
+
workspaceId: string | null;
|
|
57
|
+
triggeredBy: {
|
|
58
|
+
kind: "user" | "schedule" | "event" | "test";
|
|
59
|
+
jobId?: string | undefined;
|
|
60
|
+
goalId?: string | undefined;
|
|
61
|
+
triggerEventId?: string | undefined;
|
|
62
|
+
};
|
|
63
|
+
payload: Record<string, unknown>;
|
|
64
|
+
latencyMs?: number | undefined;
|
|
65
|
+
costUsd?: number | undefined;
|
|
66
|
+
model?: string | undefined;
|
|
67
|
+
inputTokens?: number | undefined;
|
|
68
|
+
outputTokens?: number | undefined;
|
|
69
|
+
}, {
|
|
70
|
+
kind: "session.start" | "session.end" | "orchestrator.decompose" | "orchestrator.dispatch" | "orchestrator.review" | "sub-agent.start" | "sub-agent.complete" | "sub-agent.fail" | "tool.call" | "tool.result" | "tool.error" | "verify.run" | "verify.check" | "spec-judge.rubric" | "spec-judge.claim" | "spec-judge.adversarial" | "spec-judge.bidirectional" | "kb.ingest" | "kb.retrieve" | "kb.rerank" | "memory.write" | "skill.read" | "user.steer" | "clarifying.question" | "build.start" | "build.draft" | "build.summary" | "build.approval-request" | "build.approved" | "build.rejected" | "build.spec-codified" | "build.executing" | "build.complete" | "job.start" | "job.complete" | "job.fail" | "job.skipped" | "reflect.generated" | "learn.proposal-loaded" | "learn.proposal-accepted" | "learn.proposal-rejected" | "learn.proposal-deferred" | "learn.applied" | "memory.added" | "memory.removed" | "goal.evaluate-start" | "goal.action-proposed" | "goal.action-approved" | "goal.action-rejected" | "goal.action-executed" | "goal.evaluate-end" | "goal.failed" | "goal.paused";
|
|
71
|
+
id: string;
|
|
72
|
+
ts: string;
|
|
73
|
+
sessionId: string;
|
|
74
|
+
parentEventId: string | null;
|
|
75
|
+
workspaceId: string | null;
|
|
76
|
+
triggeredBy: {
|
|
77
|
+
kind: "user" | "schedule" | "event" | "test";
|
|
78
|
+
jobId?: string | undefined;
|
|
79
|
+
goalId?: string | undefined;
|
|
80
|
+
triggerEventId?: string | undefined;
|
|
81
|
+
};
|
|
82
|
+
payload: Record<string, unknown>;
|
|
83
|
+
latencyMs?: number | undefined;
|
|
84
|
+
costUsd?: number | undefined;
|
|
85
|
+
model?: string | undefined;
|
|
86
|
+
inputTokens?: number | undefined;
|
|
87
|
+
outputTokens?: number | undefined;
|
|
88
|
+
}>;
|
|
89
|
+
export type AgentEvent = z.infer<typeof AgentEventSchema>;
|
|
90
|
+
//# sourceMappingURL=agent-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-event.d.ts","sourceRoot":"","sources":["../src/agent-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAK5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,oBAAoB,kgCAsD/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const TriggeredBySchema = z.object({
|
|
3
|
+
kind: z.enum(["user", "schedule", "event", "test"]),
|
|
4
|
+
jobId: z.string().optional(),
|
|
5
|
+
goalId: z.string().uuid().optional(),
|
|
6
|
+
triggerEventId: z.string().uuid().optional(),
|
|
7
|
+
});
|
|
8
|
+
export const AgentEventKindSchema = z.enum([
|
|
9
|
+
"session.start",
|
|
10
|
+
"session.end",
|
|
11
|
+
"orchestrator.decompose",
|
|
12
|
+
"orchestrator.dispatch",
|
|
13
|
+
"orchestrator.review",
|
|
14
|
+
"sub-agent.start",
|
|
15
|
+
"sub-agent.complete",
|
|
16
|
+
"sub-agent.fail",
|
|
17
|
+
"tool.call",
|
|
18
|
+
"tool.result",
|
|
19
|
+
"tool.error",
|
|
20
|
+
"verify.run",
|
|
21
|
+
"verify.check",
|
|
22
|
+
"spec-judge.rubric",
|
|
23
|
+
"spec-judge.claim",
|
|
24
|
+
"spec-judge.adversarial",
|
|
25
|
+
"spec-judge.bidirectional",
|
|
26
|
+
"kb.ingest",
|
|
27
|
+
"kb.retrieve",
|
|
28
|
+
"kb.rerank",
|
|
29
|
+
"memory.write",
|
|
30
|
+
"skill.read",
|
|
31
|
+
"user.steer",
|
|
32
|
+
"clarifying.question",
|
|
33
|
+
"build.start",
|
|
34
|
+
"build.draft",
|
|
35
|
+
"build.summary",
|
|
36
|
+
"build.approval-request",
|
|
37
|
+
"build.approved",
|
|
38
|
+
"build.rejected",
|
|
39
|
+
"build.spec-codified",
|
|
40
|
+
"build.executing",
|
|
41
|
+
"build.complete",
|
|
42
|
+
"job.start",
|
|
43
|
+
"job.complete",
|
|
44
|
+
"job.fail",
|
|
45
|
+
"job.skipped",
|
|
46
|
+
"reflect.generated",
|
|
47
|
+
"learn.proposal-loaded",
|
|
48
|
+
"learn.proposal-accepted",
|
|
49
|
+
"learn.proposal-rejected",
|
|
50
|
+
"learn.proposal-deferred",
|
|
51
|
+
"learn.applied",
|
|
52
|
+
"memory.added",
|
|
53
|
+
"memory.removed",
|
|
54
|
+
"goal.evaluate-start",
|
|
55
|
+
"goal.action-proposed",
|
|
56
|
+
"goal.action-approved",
|
|
57
|
+
"goal.action-rejected",
|
|
58
|
+
"goal.action-executed",
|
|
59
|
+
"goal.evaluate-end",
|
|
60
|
+
"goal.failed",
|
|
61
|
+
"goal.paused",
|
|
62
|
+
]);
|
|
63
|
+
export const AgentEventSchema = z.object({
|
|
64
|
+
id: z.string().uuid(),
|
|
65
|
+
ts: z.string().datetime(),
|
|
66
|
+
sessionId: z.string().uuid(),
|
|
67
|
+
parentEventId: z.string().uuid().nullable(),
|
|
68
|
+
workspaceId: z.string().uuid().nullable(),
|
|
69
|
+
triggeredBy: TriggeredBySchema,
|
|
70
|
+
kind: AgentEventKindSchema,
|
|
71
|
+
payload: z.record(z.unknown()),
|
|
72
|
+
latencyMs: z.number().int().nonnegative().optional(),
|
|
73
|
+
costUsd: z.number().nonnegative().optional(),
|
|
74
|
+
model: z.string().optional(),
|
|
75
|
+
inputTokens: z.number().int().nonnegative().optional(),
|
|
76
|
+
outputTokens: z.number().int().nonnegative().optional(),
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=agent-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-event.js","sourceRoot":"","sources":["../src/agent-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,eAAe;IACf,aAAa;IACb,wBAAwB;IACxB,uBAAuB;IACvB,qBAAqB;IACrB,iBAAiB;IACjB,oBAAoB;IACpB,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;IACxB,0BAA0B;IAC1B,WAAW;IACX,aAAa;IACb,WAAW;IACX,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,aAAa;IACb,aAAa;IACb,eAAe;IACf,wBAAwB;IACxB,gBAAgB;IAChB,gBAAgB;IAChB,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB;IAChB,WAAW;IACX,cAAc;IACd,UAAU;IACV,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,qBAAqB;IACrB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;IACnB,aAAa;IACb,aAAa;CACd,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC5B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACzC,WAAW,EAAE,iBAAiB;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACtD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC"}
|