claude-code-jsonl-generator 0.0.0 → 0.1.0-beta.2
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 +57 -0
- package/dist/cli.cjs +55 -0
- package/dist/cli.d.cts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +57 -0
- package/dist/cli.js.map +1 -0
- package/dist/emit-guards-CSDZc-iy.js +244 -0
- package/dist/emit-guards-CSDZc-iy.js.map +1 -0
- package/dist/emit-guards-DWi5YDuA.cjs +312 -0
- package/dist/index.cjs +220 -0
- package/dist/index.d.cts +320 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +320 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +212 -0
- package/dist/index.js.map +1 -0
- package/package.json +42 -5
- package/index.js +0 -3
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/scanner.d.ts
|
|
4
|
+
/** スキャン結果。 */
|
|
5
|
+
interface ScanResult {
|
|
6
|
+
/** type 文字列 → その type の生 JSON オブジェクト配列。 */
|
|
7
|
+
samplesByType: Map<string, Record<string, unknown>[]>;
|
|
8
|
+
/** 走査した有効行数 (パース成功)。 */
|
|
9
|
+
totalLines: number;
|
|
10
|
+
/** JSON 構文エラー行数。 */
|
|
11
|
+
malformedLines: number;
|
|
12
|
+
/** type フィールドを持たない/文字列でない行数。 */
|
|
13
|
+
typelessLines: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* コーパスを走査し type ごとに生サンプルを集約する。
|
|
17
|
+
*
|
|
18
|
+
* @param corpusDir - コーパスのルートディレクトリ
|
|
19
|
+
* @param maxSamplesPerType - type ごとの保持上限 (メモリ保護、既定 5000)
|
|
20
|
+
*/
|
|
21
|
+
declare function scanCorpus(corpusDir: string, maxSamplesPerType?: number): Promise<ScanResult>;
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/infer.d.ts
|
|
24
|
+
/** JSON 値の種別。 */
|
|
25
|
+
type JsonKind = 'string' | 'number' | 'boolean' | 'null' | 'array' | 'object';
|
|
26
|
+
/**
|
|
27
|
+
* JSON 値の種別を返す。
|
|
28
|
+
*
|
|
29
|
+
* @param v - 対象値
|
|
30
|
+
*/
|
|
31
|
+
declare function jsonKind(v: unknown): JsonKind;
|
|
32
|
+
/** 1 フィールドの推論結果。 */
|
|
33
|
+
interface FieldShape {
|
|
34
|
+
/** 全サンプルに存在したか。 */
|
|
35
|
+
required: boolean;
|
|
36
|
+
/** 観測された JSON 種別集合。 */
|
|
37
|
+
kinds: Set<JsonKind>;
|
|
38
|
+
/** 観測された文字列リテラル集合 (閾値以下のときのみ)。 */
|
|
39
|
+
literals?: Set<string>;
|
|
40
|
+
}
|
|
41
|
+
/** 1 type (または content ブロック) の推論結果。 */
|
|
42
|
+
interface Shape {
|
|
43
|
+
/** サンプル総数。 */
|
|
44
|
+
count: number;
|
|
45
|
+
/** フィールド名 → 推論結果。 */
|
|
46
|
+
fields: Map<string, FieldShape>;
|
|
47
|
+
}
|
|
48
|
+
/** 推論オプション。 */
|
|
49
|
+
interface InferOptions {
|
|
50
|
+
/** 文字列リテラルを列挙として保持する上限。超えたら literals を破棄。既定は `DEFAULT_MAX_LITERALS`。 */
|
|
51
|
+
maxLiterals?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 同一 type のサンプル群からフィールド形状を推論する。
|
|
55
|
+
*
|
|
56
|
+
* @param samples - 生 JSON オブジェクト配列
|
|
57
|
+
* @param options - 推論オプション
|
|
58
|
+
*/
|
|
59
|
+
declare function inferShape(samples: Record<string, unknown>[], options?: InferOptions): Shape;
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/schemas.d.ts
|
|
62
|
+
/** type 文字列 → 公開 zod スキーマ。 */
|
|
63
|
+
declare const entrySchemas: {
|
|
64
|
+
readonly assistant: z.ZodObject<{
|
|
65
|
+
type: z.ZodLiteral<"assistant">;
|
|
66
|
+
message: z.ZodObject<{}, z.core.$loose>;
|
|
67
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
68
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
69
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
70
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
71
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
72
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
73
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
74
|
+
isApiErrorMessage: z.ZodOptional<z.ZodBoolean>;
|
|
75
|
+
apiErrorStatus: z.ZodOptional<z.ZodNumber>;
|
|
76
|
+
error: z.ZodOptional<z.ZodUnknown>;
|
|
77
|
+
attributionAgent: z.ZodOptional<z.ZodString>;
|
|
78
|
+
attributionSkill: z.ZodOptional<z.ZodString>;
|
|
79
|
+
attributionPlugin: z.ZodOptional<z.ZodString>;
|
|
80
|
+
attributionMcpServer: z.ZodOptional<z.ZodString>;
|
|
81
|
+
attributionMcpTool: z.ZodOptional<z.ZodString>;
|
|
82
|
+
cwd: z.ZodString;
|
|
83
|
+
entrypoint: z.ZodString;
|
|
84
|
+
gitBranch: z.ZodString;
|
|
85
|
+
isSidechain: z.ZodBoolean;
|
|
86
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
87
|
+
sessionId: z.ZodString;
|
|
88
|
+
timestamp: z.ZodString;
|
|
89
|
+
userType: z.ZodString;
|
|
90
|
+
uuid: z.ZodString;
|
|
91
|
+
version: z.ZodString;
|
|
92
|
+
}, z.core.$loose>;
|
|
93
|
+
readonly user: z.ZodObject<{
|
|
94
|
+
type: z.ZodLiteral<"user">;
|
|
95
|
+
message: z.ZodObject<{}, z.core.$loose>;
|
|
96
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
97
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
98
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
99
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
100
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
101
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
102
|
+
interruptedMessageId: z.ZodOptional<z.ZodString>;
|
|
103
|
+
isCompactSummary: z.ZodOptional<z.ZodBoolean>;
|
|
104
|
+
isMeta: z.ZodOptional<z.ZodBoolean>;
|
|
105
|
+
isVisibleInTranscriptOnly: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
+
mcpMeta: z.ZodOptional<z.ZodUnknown>;
|
|
107
|
+
origin: z.ZodOptional<z.ZodObject<{
|
|
108
|
+
kind: z.ZodString;
|
|
109
|
+
from: z.ZodOptional<z.ZodString>;
|
|
110
|
+
senderTaskId: z.ZodOptional<z.ZodString>;
|
|
111
|
+
}, z.core.$loose>>;
|
|
112
|
+
permissionMode: z.ZodOptional<z.ZodString>;
|
|
113
|
+
planContent: z.ZodOptional<z.ZodString>;
|
|
114
|
+
promptId: z.ZodOptional<z.ZodString>;
|
|
115
|
+
promptSource: z.ZodOptional<z.ZodString>;
|
|
116
|
+
queuePriority: z.ZodOptional<z.ZodString>;
|
|
117
|
+
sourceToolAssistantUUID: z.ZodOptional<z.ZodString>;
|
|
118
|
+
sourceToolUseID: z.ZodOptional<z.ZodString>;
|
|
119
|
+
toolDenialKind: z.ZodOptional<z.ZodString>;
|
|
120
|
+
toolEndsTurn: z.ZodOptional<z.ZodBoolean>;
|
|
121
|
+
toolUseResult: z.ZodOptional<z.ZodUnknown>;
|
|
122
|
+
cwd: z.ZodString;
|
|
123
|
+
entrypoint: z.ZodString;
|
|
124
|
+
gitBranch: z.ZodString;
|
|
125
|
+
isSidechain: z.ZodBoolean;
|
|
126
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
127
|
+
sessionId: z.ZodString;
|
|
128
|
+
timestamp: z.ZodString;
|
|
129
|
+
userType: z.ZodString;
|
|
130
|
+
uuid: z.ZodString;
|
|
131
|
+
version: z.ZodString;
|
|
132
|
+
}, z.core.$loose>;
|
|
133
|
+
readonly attachment: z.ZodObject<{
|
|
134
|
+
type: z.ZodLiteral<"attachment">;
|
|
135
|
+
attachment: z.ZodObject<{}, z.core.$loose>;
|
|
136
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
137
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
138
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
139
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
140
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
141
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
142
|
+
cwd: z.ZodString;
|
|
143
|
+
entrypoint: z.ZodString;
|
|
144
|
+
gitBranch: z.ZodString;
|
|
145
|
+
isSidechain: z.ZodBoolean;
|
|
146
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
147
|
+
sessionId: z.ZodString;
|
|
148
|
+
timestamp: z.ZodString;
|
|
149
|
+
userType: z.ZodString;
|
|
150
|
+
uuid: z.ZodString;
|
|
151
|
+
version: z.ZodString;
|
|
152
|
+
}, z.core.$loose>;
|
|
153
|
+
readonly system: z.ZodObject<{
|
|
154
|
+
type: z.ZodLiteral<"system">;
|
|
155
|
+
subtype: z.ZodString;
|
|
156
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
157
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
158
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
159
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
160
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
161
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
162
|
+
compactMetadata: z.ZodOptional<z.ZodUnknown>;
|
|
163
|
+
content: z.ZodOptional<z.ZodUnknown>;
|
|
164
|
+
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
error: z.ZodOptional<z.ZodUnknown>;
|
|
166
|
+
hasOutput: z.ZodOptional<z.ZodBoolean>;
|
|
167
|
+
hookAdditionalContext: z.ZodOptional<z.ZodUnknown>;
|
|
168
|
+
hookCount: z.ZodOptional<z.ZodNumber>;
|
|
169
|
+
hookErrors: z.ZodOptional<z.ZodUnknown>;
|
|
170
|
+
hookInfos: z.ZodOptional<z.ZodUnknown>;
|
|
171
|
+
isMeta: z.ZodOptional<z.ZodBoolean>;
|
|
172
|
+
level: z.ZodOptional<z.ZodString>;
|
|
173
|
+
logicalParentUuid: z.ZodOptional<z.ZodString>;
|
|
174
|
+
maxRetries: z.ZodOptional<z.ZodNumber>;
|
|
175
|
+
messageCount: z.ZodOptional<z.ZodNumber>;
|
|
176
|
+
pendingBackgroundAgentCount: z.ZodOptional<z.ZodNumber>;
|
|
177
|
+
pendingWorkflowCount: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
preventedContinuation: z.ZodOptional<z.ZodBoolean>;
|
|
179
|
+
retryAttempt: z.ZodOptional<z.ZodNumber>;
|
|
180
|
+
retryInMs: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
stopReason: z.ZodOptional<z.ZodString>;
|
|
182
|
+
toolUseID: z.ZodOptional<z.ZodString>;
|
|
183
|
+
cwd: z.ZodString;
|
|
184
|
+
entrypoint: z.ZodString;
|
|
185
|
+
gitBranch: z.ZodString;
|
|
186
|
+
isSidechain: z.ZodBoolean;
|
|
187
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
188
|
+
sessionId: z.ZodString;
|
|
189
|
+
timestamp: z.ZodString;
|
|
190
|
+
userType: z.ZodString;
|
|
191
|
+
uuid: z.ZodString;
|
|
192
|
+
version: z.ZodString;
|
|
193
|
+
}, z.core.$loose>;
|
|
194
|
+
readonly mode: z.ZodObject<{
|
|
195
|
+
type: z.ZodLiteral<"mode">;
|
|
196
|
+
mode: z.ZodString;
|
|
197
|
+
sessionId: z.ZodString;
|
|
198
|
+
}, z.core.$strip>;
|
|
199
|
+
readonly 'permission-mode': z.ZodObject<{
|
|
200
|
+
type: z.ZodLiteral<"permission-mode">;
|
|
201
|
+
permissionMode: z.ZodString;
|
|
202
|
+
sessionId: z.ZodString;
|
|
203
|
+
}, z.core.$strip>;
|
|
204
|
+
readonly 'ai-title': z.ZodObject<{
|
|
205
|
+
type: z.ZodLiteral<"ai-title">;
|
|
206
|
+
aiTitle: z.ZodString;
|
|
207
|
+
sessionId: z.ZodString;
|
|
208
|
+
}, z.core.$strip>;
|
|
209
|
+
readonly 'agent-name': z.ZodObject<{
|
|
210
|
+
type: z.ZodLiteral<"agent-name">;
|
|
211
|
+
agentName: z.ZodString;
|
|
212
|
+
sessionId: z.ZodString;
|
|
213
|
+
}, z.core.$strip>;
|
|
214
|
+
readonly 'agent-setting': z.ZodObject<{
|
|
215
|
+
type: z.ZodLiteral<"agent-setting">;
|
|
216
|
+
agentSetting: z.ZodString;
|
|
217
|
+
sessionId: z.ZodString;
|
|
218
|
+
}, z.core.$strip>;
|
|
219
|
+
readonly relocated: z.ZodObject<{
|
|
220
|
+
type: z.ZodLiteral<"relocated">;
|
|
221
|
+
relocatedCwd: z.ZodString;
|
|
222
|
+
sessionId: z.ZodString;
|
|
223
|
+
}, z.core.$strip>;
|
|
224
|
+
readonly 'last-prompt': z.ZodObject<{
|
|
225
|
+
type: z.ZodLiteral<"last-prompt">;
|
|
226
|
+
leafUuid: z.ZodString;
|
|
227
|
+
sessionId: z.ZodString;
|
|
228
|
+
lastPrompt: z.ZodOptional<z.ZodString>;
|
|
229
|
+
}, z.core.$strip>;
|
|
230
|
+
readonly 'worktree-state': z.ZodObject<{
|
|
231
|
+
type: z.ZodLiteral<"worktree-state">;
|
|
232
|
+
worktreeSession: z.ZodNullable<z.ZodObject<{}, z.core.$loose>>;
|
|
233
|
+
sessionId: z.ZodString;
|
|
234
|
+
}, z.core.$strip>;
|
|
235
|
+
readonly 'bridge-session': z.ZodObject<{
|
|
236
|
+
type: z.ZodLiteral<"bridge-session">;
|
|
237
|
+
bridgeSessionId: z.ZodString;
|
|
238
|
+
lastSequenceNum: z.ZodNumber;
|
|
239
|
+
sessionId: z.ZodString;
|
|
240
|
+
}, z.core.$strip>;
|
|
241
|
+
readonly 'queue-operation': z.ZodObject<{
|
|
242
|
+
type: z.ZodLiteral<"queue-operation">;
|
|
243
|
+
operation: z.ZodString;
|
|
244
|
+
sessionId: z.ZodString;
|
|
245
|
+
timestamp: z.ZodString;
|
|
246
|
+
content: z.ZodOptional<z.ZodUnknown>;
|
|
247
|
+
}, z.core.$strip>;
|
|
248
|
+
readonly 'pr-link': z.ZodObject<{
|
|
249
|
+
type: z.ZodLiteral<"pr-link">;
|
|
250
|
+
prNumber: z.ZodNumber;
|
|
251
|
+
prRepository: z.ZodString;
|
|
252
|
+
prUrl: z.ZodString;
|
|
253
|
+
sessionId: z.ZodString;
|
|
254
|
+
timestamp: z.ZodString;
|
|
255
|
+
}, z.core.$strip>;
|
|
256
|
+
readonly 'frame-link': z.ZodObject<{
|
|
257
|
+
type: z.ZodLiteral<"frame-link">;
|
|
258
|
+
frameUrl: z.ZodString;
|
|
259
|
+
path: z.ZodString;
|
|
260
|
+
sessionId: z.ZodString;
|
|
261
|
+
timestamp: z.ZodString;
|
|
262
|
+
}, z.core.$strip>;
|
|
263
|
+
readonly 'file-history-snapshot': z.ZodObject<{
|
|
264
|
+
type: z.ZodLiteral<"file-history-snapshot">;
|
|
265
|
+
isSnapshotUpdate: z.ZodBoolean;
|
|
266
|
+
messageId: z.ZodString;
|
|
267
|
+
snapshot: z.ZodObject<{}, z.core.$loose>;
|
|
268
|
+
}, z.core.$strip>;
|
|
269
|
+
readonly started: z.ZodObject<{
|
|
270
|
+
type: z.ZodLiteral<"started">;
|
|
271
|
+
key: z.ZodString;
|
|
272
|
+
agentId: z.ZodString;
|
|
273
|
+
}, z.core.$strip>;
|
|
274
|
+
readonly result: z.ZodObject<{
|
|
275
|
+
type: z.ZodLiteral<"result">;
|
|
276
|
+
key: z.ZodString;
|
|
277
|
+
agentId: z.ZodString;
|
|
278
|
+
result: z.ZodUnknown & z.ZodType<{} | null, unknown, z.core.$ZodTypeInternals<{} | null, unknown>>;
|
|
279
|
+
}, z.core.$strip>;
|
|
280
|
+
};
|
|
281
|
+
/** 既知 type 名の配列。 */
|
|
282
|
+
declare const KNOWN_TYPES: string[];
|
|
283
|
+
/**
|
|
284
|
+
* 指定 type のスキーマを返す。未知なら undefined。
|
|
285
|
+
*
|
|
286
|
+
* @param type - 判別子
|
|
287
|
+
*/
|
|
288
|
+
declare function knownTypeSchema(type: string): z.ZodType | undefined;
|
|
289
|
+
//#endregion
|
|
290
|
+
//#region src/emit-types.d.ts
|
|
291
|
+
/**
|
|
292
|
+
* 観測種別集合 (と任意のリテラル集合) を TypeScript 型文字列に写像する。
|
|
293
|
+
*
|
|
294
|
+
* @param kinds - 観測された JSON 種別
|
|
295
|
+
* @param literals - 文字列リテラル集合 (あれば)
|
|
296
|
+
*/
|
|
297
|
+
declare function tsTypeOf(kinds: Set<JsonKind>, literals?: Set<string>): string;
|
|
298
|
+
/** interface 名として使うため type 文字列を PascalCase 化する (エミッタ内部用)。 */
|
|
299
|
+
declare function pascalCase(type: string): string;
|
|
300
|
+
/**
|
|
301
|
+
* 1 type の interface 文字列を生成する。
|
|
302
|
+
*
|
|
303
|
+
* @param interfaceName - 出力する interface 名 (例 LastPromptEntry)
|
|
304
|
+
* @param type - 判別子文字列 (例 last-prompt)
|
|
305
|
+
* @param shape - 推論結果
|
|
306
|
+
*/
|
|
307
|
+
declare function emitInterface(interfaceName: string, type: string, shape: Shape): string;
|
|
308
|
+
//#endregion
|
|
309
|
+
//#region src/emit-guards.d.ts
|
|
310
|
+
/**
|
|
311
|
+
* 1 type のガード関数文字列を生成する。required フィールドのみ検査する。
|
|
312
|
+
*
|
|
313
|
+
* @param fnName - 関数名 (例 isMode)
|
|
314
|
+
* @param type - 判別子
|
|
315
|
+
* @param shape - 推論結果
|
|
316
|
+
*/
|
|
317
|
+
declare function emitGuardFunction(fnName: string, type: string, shape: Shape): string;
|
|
318
|
+
//#endregion
|
|
319
|
+
export { type FieldShape, type InferOptions, type JsonKind, KNOWN_TYPES, type ScanResult, type Shape, emitGuardFunction, emitInterface, entrySchemas, inferShape, jsonKind, knownTypeSchema, pascalCase, scanCorpus, tsTypeOf };
|
|
320
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/scanner.ts","../src/infer.ts","../src/schemas.ts","../src/emit-types.ts","../src/emit-guards.ts"],"mappings":";;;;UAMiB,UAAA;;EAEf,aAAA,EAAe,GAAG,SAAS,MAAA;EAFF;EAIzB,UAAA;EAFkB;EAIlB,cAAA;EAJe;EAMf,aAAA;AAAA;;;;AAAa;AA6Bf;;iBAAsB,UAAA,CACpB,SAAA,UACA,iBAAA,YACC,OAAO,CAAC,UAAA;;;;KC7CC,QAAA;;ADKZ;;;;iBCEgB,QAAA,CAAS,CAAA,YAAa,QAAQ;;UAW7B,UAAA;EDTf;ECWA,QAAA;EDPA;ECSA,KAAA,EAAO,GAAA,CAAI,QAAA;EDTE;ECWb,QAAA,GAAW,GAAA;AAAA;;UAII,KAAA;EDef;ECbA,KAAA;EDeC;ECbD,MAAA,EAAQ,GAAG,SAAS,UAAA;AAAA;ADaD;AAAA,UCNJ,YAAA;;EAEf,WAAW;AAAA;;;;AAzCO;AAOpB;;iBA2CgB,UAAA,CACd,OAAA,EAAS,MAAA,qBACT,OAAA,GAAS,YAAA,GACR,KAAA;;;;cCuFU,YAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkBA,WAAA;;;;;;iBAOG,eAAA,CAAgB,IAAA,WAAe,CAAA,CAAE,OAAO;;;;;AFhKxD;;;;iBGUgB,QAAA,CAAS,KAAA,EAAO,GAAA,CAAI,QAAA,GAAW,QAAA,GAAW,GAAA;;iBA8B1C,UAAA,CAAW,IAAY;;;;;AHhCxB;AA6Bf;;iBGiBgB,aAAA,CACd,aAAA,UACA,IAAA,UACA,KAAA,EAAO,KAAK;;;;;AHzDd;;;;;iBIkCgB,iBAAA,CACd,MAAA,UACA,IAAA,UACA,KAAA,EAAO,KAAK"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/scanner.d.ts
|
|
4
|
+
/** スキャン結果。 */
|
|
5
|
+
interface ScanResult {
|
|
6
|
+
/** type 文字列 → その type の生 JSON オブジェクト配列。 */
|
|
7
|
+
samplesByType: Map<string, Record<string, unknown>[]>;
|
|
8
|
+
/** 走査した有効行数 (パース成功)。 */
|
|
9
|
+
totalLines: number;
|
|
10
|
+
/** JSON 構文エラー行数。 */
|
|
11
|
+
malformedLines: number;
|
|
12
|
+
/** type フィールドを持たない/文字列でない行数。 */
|
|
13
|
+
typelessLines: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* コーパスを走査し type ごとに生サンプルを集約する。
|
|
17
|
+
*
|
|
18
|
+
* @param corpusDir - コーパスのルートディレクトリ
|
|
19
|
+
* @param maxSamplesPerType - type ごとの保持上限 (メモリ保護、既定 5000)
|
|
20
|
+
*/
|
|
21
|
+
declare function scanCorpus(corpusDir: string, maxSamplesPerType?: number): Promise<ScanResult>;
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/infer.d.ts
|
|
24
|
+
/** JSON 値の種別。 */
|
|
25
|
+
type JsonKind = 'string' | 'number' | 'boolean' | 'null' | 'array' | 'object';
|
|
26
|
+
/**
|
|
27
|
+
* JSON 値の種別を返す。
|
|
28
|
+
*
|
|
29
|
+
* @param v - 対象値
|
|
30
|
+
*/
|
|
31
|
+
declare function jsonKind(v: unknown): JsonKind;
|
|
32
|
+
/** 1 フィールドの推論結果。 */
|
|
33
|
+
interface FieldShape {
|
|
34
|
+
/** 全サンプルに存在したか。 */
|
|
35
|
+
required: boolean;
|
|
36
|
+
/** 観測された JSON 種別集合。 */
|
|
37
|
+
kinds: Set<JsonKind>;
|
|
38
|
+
/** 観測された文字列リテラル集合 (閾値以下のときのみ)。 */
|
|
39
|
+
literals?: Set<string>;
|
|
40
|
+
}
|
|
41
|
+
/** 1 type (または content ブロック) の推論結果。 */
|
|
42
|
+
interface Shape {
|
|
43
|
+
/** サンプル総数。 */
|
|
44
|
+
count: number;
|
|
45
|
+
/** フィールド名 → 推論結果。 */
|
|
46
|
+
fields: Map<string, FieldShape>;
|
|
47
|
+
}
|
|
48
|
+
/** 推論オプション。 */
|
|
49
|
+
interface InferOptions {
|
|
50
|
+
/** 文字列リテラルを列挙として保持する上限。超えたら literals を破棄。既定は `DEFAULT_MAX_LITERALS`。 */
|
|
51
|
+
maxLiterals?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 同一 type のサンプル群からフィールド形状を推論する。
|
|
55
|
+
*
|
|
56
|
+
* @param samples - 生 JSON オブジェクト配列
|
|
57
|
+
* @param options - 推論オプション
|
|
58
|
+
*/
|
|
59
|
+
declare function inferShape(samples: Record<string, unknown>[], options?: InferOptions): Shape;
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/schemas.d.ts
|
|
62
|
+
/** type 文字列 → 公開 zod スキーマ。 */
|
|
63
|
+
declare const entrySchemas: {
|
|
64
|
+
readonly assistant: z.ZodObject<{
|
|
65
|
+
type: z.ZodLiteral<"assistant">;
|
|
66
|
+
message: z.ZodObject<{}, z.core.$loose>;
|
|
67
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
68
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
69
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
70
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
71
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
72
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
73
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
74
|
+
isApiErrorMessage: z.ZodOptional<z.ZodBoolean>;
|
|
75
|
+
apiErrorStatus: z.ZodOptional<z.ZodNumber>;
|
|
76
|
+
error: z.ZodOptional<z.ZodUnknown>;
|
|
77
|
+
attributionAgent: z.ZodOptional<z.ZodString>;
|
|
78
|
+
attributionSkill: z.ZodOptional<z.ZodString>;
|
|
79
|
+
attributionPlugin: z.ZodOptional<z.ZodString>;
|
|
80
|
+
attributionMcpServer: z.ZodOptional<z.ZodString>;
|
|
81
|
+
attributionMcpTool: z.ZodOptional<z.ZodString>;
|
|
82
|
+
cwd: z.ZodString;
|
|
83
|
+
entrypoint: z.ZodString;
|
|
84
|
+
gitBranch: z.ZodString;
|
|
85
|
+
isSidechain: z.ZodBoolean;
|
|
86
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
87
|
+
sessionId: z.ZodString;
|
|
88
|
+
timestamp: z.ZodString;
|
|
89
|
+
userType: z.ZodString;
|
|
90
|
+
uuid: z.ZodString;
|
|
91
|
+
version: z.ZodString;
|
|
92
|
+
}, z.core.$loose>;
|
|
93
|
+
readonly user: z.ZodObject<{
|
|
94
|
+
type: z.ZodLiteral<"user">;
|
|
95
|
+
message: z.ZodObject<{}, z.core.$loose>;
|
|
96
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
97
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
98
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
99
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
100
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
101
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
102
|
+
interruptedMessageId: z.ZodOptional<z.ZodString>;
|
|
103
|
+
isCompactSummary: z.ZodOptional<z.ZodBoolean>;
|
|
104
|
+
isMeta: z.ZodOptional<z.ZodBoolean>;
|
|
105
|
+
isVisibleInTranscriptOnly: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
+
mcpMeta: z.ZodOptional<z.ZodUnknown>;
|
|
107
|
+
origin: z.ZodOptional<z.ZodObject<{
|
|
108
|
+
kind: z.ZodString;
|
|
109
|
+
from: z.ZodOptional<z.ZodString>;
|
|
110
|
+
senderTaskId: z.ZodOptional<z.ZodString>;
|
|
111
|
+
}, z.core.$loose>>;
|
|
112
|
+
permissionMode: z.ZodOptional<z.ZodString>;
|
|
113
|
+
planContent: z.ZodOptional<z.ZodString>;
|
|
114
|
+
promptId: z.ZodOptional<z.ZodString>;
|
|
115
|
+
promptSource: z.ZodOptional<z.ZodString>;
|
|
116
|
+
queuePriority: z.ZodOptional<z.ZodString>;
|
|
117
|
+
sourceToolAssistantUUID: z.ZodOptional<z.ZodString>;
|
|
118
|
+
sourceToolUseID: z.ZodOptional<z.ZodString>;
|
|
119
|
+
toolDenialKind: z.ZodOptional<z.ZodString>;
|
|
120
|
+
toolEndsTurn: z.ZodOptional<z.ZodBoolean>;
|
|
121
|
+
toolUseResult: z.ZodOptional<z.ZodUnknown>;
|
|
122
|
+
cwd: z.ZodString;
|
|
123
|
+
entrypoint: z.ZodString;
|
|
124
|
+
gitBranch: z.ZodString;
|
|
125
|
+
isSidechain: z.ZodBoolean;
|
|
126
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
127
|
+
sessionId: z.ZodString;
|
|
128
|
+
timestamp: z.ZodString;
|
|
129
|
+
userType: z.ZodString;
|
|
130
|
+
uuid: z.ZodString;
|
|
131
|
+
version: z.ZodString;
|
|
132
|
+
}, z.core.$loose>;
|
|
133
|
+
readonly attachment: z.ZodObject<{
|
|
134
|
+
type: z.ZodLiteral<"attachment">;
|
|
135
|
+
attachment: z.ZodObject<{}, z.core.$loose>;
|
|
136
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
137
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
138
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
139
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
140
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
141
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
142
|
+
cwd: z.ZodString;
|
|
143
|
+
entrypoint: z.ZodString;
|
|
144
|
+
gitBranch: z.ZodString;
|
|
145
|
+
isSidechain: z.ZodBoolean;
|
|
146
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
147
|
+
sessionId: z.ZodString;
|
|
148
|
+
timestamp: z.ZodString;
|
|
149
|
+
userType: z.ZodString;
|
|
150
|
+
uuid: z.ZodString;
|
|
151
|
+
version: z.ZodString;
|
|
152
|
+
}, z.core.$loose>;
|
|
153
|
+
readonly system: z.ZodObject<{
|
|
154
|
+
type: z.ZodLiteral<"system">;
|
|
155
|
+
subtype: z.ZodString;
|
|
156
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
157
|
+
agentName: z.ZodOptional<z.ZodString>;
|
|
158
|
+
teamName: z.ZodOptional<z.ZodString>;
|
|
159
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
160
|
+
sessionKind: z.ZodOptional<z.ZodString>;
|
|
161
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
162
|
+
compactMetadata: z.ZodOptional<z.ZodUnknown>;
|
|
163
|
+
content: z.ZodOptional<z.ZodUnknown>;
|
|
164
|
+
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
error: z.ZodOptional<z.ZodUnknown>;
|
|
166
|
+
hasOutput: z.ZodOptional<z.ZodBoolean>;
|
|
167
|
+
hookAdditionalContext: z.ZodOptional<z.ZodUnknown>;
|
|
168
|
+
hookCount: z.ZodOptional<z.ZodNumber>;
|
|
169
|
+
hookErrors: z.ZodOptional<z.ZodUnknown>;
|
|
170
|
+
hookInfos: z.ZodOptional<z.ZodUnknown>;
|
|
171
|
+
isMeta: z.ZodOptional<z.ZodBoolean>;
|
|
172
|
+
level: z.ZodOptional<z.ZodString>;
|
|
173
|
+
logicalParentUuid: z.ZodOptional<z.ZodString>;
|
|
174
|
+
maxRetries: z.ZodOptional<z.ZodNumber>;
|
|
175
|
+
messageCount: z.ZodOptional<z.ZodNumber>;
|
|
176
|
+
pendingBackgroundAgentCount: z.ZodOptional<z.ZodNumber>;
|
|
177
|
+
pendingWorkflowCount: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
preventedContinuation: z.ZodOptional<z.ZodBoolean>;
|
|
179
|
+
retryAttempt: z.ZodOptional<z.ZodNumber>;
|
|
180
|
+
retryInMs: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
stopReason: z.ZodOptional<z.ZodString>;
|
|
182
|
+
toolUseID: z.ZodOptional<z.ZodString>;
|
|
183
|
+
cwd: z.ZodString;
|
|
184
|
+
entrypoint: z.ZodString;
|
|
185
|
+
gitBranch: z.ZodString;
|
|
186
|
+
isSidechain: z.ZodBoolean;
|
|
187
|
+
parentUuid: z.ZodNullable<z.ZodString>;
|
|
188
|
+
sessionId: z.ZodString;
|
|
189
|
+
timestamp: z.ZodString;
|
|
190
|
+
userType: z.ZodString;
|
|
191
|
+
uuid: z.ZodString;
|
|
192
|
+
version: z.ZodString;
|
|
193
|
+
}, z.core.$loose>;
|
|
194
|
+
readonly mode: z.ZodObject<{
|
|
195
|
+
type: z.ZodLiteral<"mode">;
|
|
196
|
+
mode: z.ZodString;
|
|
197
|
+
sessionId: z.ZodString;
|
|
198
|
+
}, z.core.$strip>;
|
|
199
|
+
readonly 'permission-mode': z.ZodObject<{
|
|
200
|
+
type: z.ZodLiteral<"permission-mode">;
|
|
201
|
+
permissionMode: z.ZodString;
|
|
202
|
+
sessionId: z.ZodString;
|
|
203
|
+
}, z.core.$strip>;
|
|
204
|
+
readonly 'ai-title': z.ZodObject<{
|
|
205
|
+
type: z.ZodLiteral<"ai-title">;
|
|
206
|
+
aiTitle: z.ZodString;
|
|
207
|
+
sessionId: z.ZodString;
|
|
208
|
+
}, z.core.$strip>;
|
|
209
|
+
readonly 'agent-name': z.ZodObject<{
|
|
210
|
+
type: z.ZodLiteral<"agent-name">;
|
|
211
|
+
agentName: z.ZodString;
|
|
212
|
+
sessionId: z.ZodString;
|
|
213
|
+
}, z.core.$strip>;
|
|
214
|
+
readonly 'agent-setting': z.ZodObject<{
|
|
215
|
+
type: z.ZodLiteral<"agent-setting">;
|
|
216
|
+
agentSetting: z.ZodString;
|
|
217
|
+
sessionId: z.ZodString;
|
|
218
|
+
}, z.core.$strip>;
|
|
219
|
+
readonly relocated: z.ZodObject<{
|
|
220
|
+
type: z.ZodLiteral<"relocated">;
|
|
221
|
+
relocatedCwd: z.ZodString;
|
|
222
|
+
sessionId: z.ZodString;
|
|
223
|
+
}, z.core.$strip>;
|
|
224
|
+
readonly 'last-prompt': z.ZodObject<{
|
|
225
|
+
type: z.ZodLiteral<"last-prompt">;
|
|
226
|
+
leafUuid: z.ZodString;
|
|
227
|
+
sessionId: z.ZodString;
|
|
228
|
+
lastPrompt: z.ZodOptional<z.ZodString>;
|
|
229
|
+
}, z.core.$strip>;
|
|
230
|
+
readonly 'worktree-state': z.ZodObject<{
|
|
231
|
+
type: z.ZodLiteral<"worktree-state">;
|
|
232
|
+
worktreeSession: z.ZodNullable<z.ZodObject<{}, z.core.$loose>>;
|
|
233
|
+
sessionId: z.ZodString;
|
|
234
|
+
}, z.core.$strip>;
|
|
235
|
+
readonly 'bridge-session': z.ZodObject<{
|
|
236
|
+
type: z.ZodLiteral<"bridge-session">;
|
|
237
|
+
bridgeSessionId: z.ZodString;
|
|
238
|
+
lastSequenceNum: z.ZodNumber;
|
|
239
|
+
sessionId: z.ZodString;
|
|
240
|
+
}, z.core.$strip>;
|
|
241
|
+
readonly 'queue-operation': z.ZodObject<{
|
|
242
|
+
type: z.ZodLiteral<"queue-operation">;
|
|
243
|
+
operation: z.ZodString;
|
|
244
|
+
sessionId: z.ZodString;
|
|
245
|
+
timestamp: z.ZodString;
|
|
246
|
+
content: z.ZodOptional<z.ZodUnknown>;
|
|
247
|
+
}, z.core.$strip>;
|
|
248
|
+
readonly 'pr-link': z.ZodObject<{
|
|
249
|
+
type: z.ZodLiteral<"pr-link">;
|
|
250
|
+
prNumber: z.ZodNumber;
|
|
251
|
+
prRepository: z.ZodString;
|
|
252
|
+
prUrl: z.ZodString;
|
|
253
|
+
sessionId: z.ZodString;
|
|
254
|
+
timestamp: z.ZodString;
|
|
255
|
+
}, z.core.$strip>;
|
|
256
|
+
readonly 'frame-link': z.ZodObject<{
|
|
257
|
+
type: z.ZodLiteral<"frame-link">;
|
|
258
|
+
frameUrl: z.ZodString;
|
|
259
|
+
path: z.ZodString;
|
|
260
|
+
sessionId: z.ZodString;
|
|
261
|
+
timestamp: z.ZodString;
|
|
262
|
+
}, z.core.$strip>;
|
|
263
|
+
readonly 'file-history-snapshot': z.ZodObject<{
|
|
264
|
+
type: z.ZodLiteral<"file-history-snapshot">;
|
|
265
|
+
isSnapshotUpdate: z.ZodBoolean;
|
|
266
|
+
messageId: z.ZodString;
|
|
267
|
+
snapshot: z.ZodObject<{}, z.core.$loose>;
|
|
268
|
+
}, z.core.$strip>;
|
|
269
|
+
readonly started: z.ZodObject<{
|
|
270
|
+
type: z.ZodLiteral<"started">;
|
|
271
|
+
key: z.ZodString;
|
|
272
|
+
agentId: z.ZodString;
|
|
273
|
+
}, z.core.$strip>;
|
|
274
|
+
readonly result: z.ZodObject<{
|
|
275
|
+
type: z.ZodLiteral<"result">;
|
|
276
|
+
key: z.ZodString;
|
|
277
|
+
agentId: z.ZodString;
|
|
278
|
+
result: z.ZodUnknown & z.ZodType<{} | null, unknown, z.core.$ZodTypeInternals<{} | null, unknown>>;
|
|
279
|
+
}, z.core.$strip>;
|
|
280
|
+
};
|
|
281
|
+
/** 既知 type 名の配列。 */
|
|
282
|
+
declare const KNOWN_TYPES: string[];
|
|
283
|
+
/**
|
|
284
|
+
* 指定 type のスキーマを返す。未知なら undefined。
|
|
285
|
+
*
|
|
286
|
+
* @param type - 判別子
|
|
287
|
+
*/
|
|
288
|
+
declare function knownTypeSchema(type: string): z.ZodType | undefined;
|
|
289
|
+
//#endregion
|
|
290
|
+
//#region src/emit-types.d.ts
|
|
291
|
+
/**
|
|
292
|
+
* 観測種別集合 (と任意のリテラル集合) を TypeScript 型文字列に写像する。
|
|
293
|
+
*
|
|
294
|
+
* @param kinds - 観測された JSON 種別
|
|
295
|
+
* @param literals - 文字列リテラル集合 (あれば)
|
|
296
|
+
*/
|
|
297
|
+
declare function tsTypeOf(kinds: Set<JsonKind>, literals?: Set<string>): string;
|
|
298
|
+
/** interface 名として使うため type 文字列を PascalCase 化する (エミッタ内部用)。 */
|
|
299
|
+
declare function pascalCase(type: string): string;
|
|
300
|
+
/**
|
|
301
|
+
* 1 type の interface 文字列を生成する。
|
|
302
|
+
*
|
|
303
|
+
* @param interfaceName - 出力する interface 名 (例 LastPromptEntry)
|
|
304
|
+
* @param type - 判別子文字列 (例 last-prompt)
|
|
305
|
+
* @param shape - 推論結果
|
|
306
|
+
*/
|
|
307
|
+
declare function emitInterface(interfaceName: string, type: string, shape: Shape): string;
|
|
308
|
+
//#endregion
|
|
309
|
+
//#region src/emit-guards.d.ts
|
|
310
|
+
/**
|
|
311
|
+
* 1 type のガード関数文字列を生成する。required フィールドのみ検査する。
|
|
312
|
+
*
|
|
313
|
+
* @param fnName - 関数名 (例 isMode)
|
|
314
|
+
* @param type - 判別子
|
|
315
|
+
* @param shape - 推論結果
|
|
316
|
+
*/
|
|
317
|
+
declare function emitGuardFunction(fnName: string, type: string, shape: Shape): string;
|
|
318
|
+
//#endregion
|
|
319
|
+
export { type FieldShape, type InferOptions, type JsonKind, KNOWN_TYPES, type ScanResult, type Shape, emitGuardFunction, emitInterface, entrySchemas, inferShape, jsonKind, knownTypeSchema, pascalCase, scanCorpus, tsTypeOf };
|
|
320
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/scanner.ts","../src/infer.ts","../src/schemas.ts","../src/emit-types.ts","../src/emit-guards.ts"],"mappings":";;;;UAMiB,UAAA;;EAEf,aAAA,EAAe,GAAG,SAAS,MAAA;EAFF;EAIzB,UAAA;EAFkB;EAIlB,cAAA;EAJe;EAMf,aAAA;AAAA;;;;AAAa;AA6Bf;;iBAAsB,UAAA,CACpB,SAAA,UACA,iBAAA,YACC,OAAO,CAAC,UAAA;;;;KC7CC,QAAA;;ADKZ;;;;iBCEgB,QAAA,CAAS,CAAA,YAAa,QAAQ;;UAW7B,UAAA;EDTf;ECWA,QAAA;EDPA;ECSA,KAAA,EAAO,GAAA,CAAI,QAAA;EDTE;ECWb,QAAA,GAAW,GAAA;AAAA;;UAII,KAAA;EDef;ECbA,KAAA;EDeC;ECbD,MAAA,EAAQ,GAAG,SAAS,UAAA;AAAA;ADaD;AAAA,UCNJ,YAAA;;EAEf,WAAW;AAAA;;;;AAzCO;AAOpB;;iBA2CgB,UAAA,CACd,OAAA,EAAS,MAAA,qBACT,OAAA,GAAS,YAAA,GACR,KAAA;;;;cCuFU,YAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkBA,WAAA;;;;;;iBAOG,eAAA,CAAgB,IAAA,WAAe,CAAA,CAAE,OAAO;;;;;AFhKxD;;;;iBGUgB,QAAA,CAAS,KAAA,EAAO,GAAA,CAAI,QAAA,GAAW,QAAA,GAAW,GAAA;;iBA8B1C,UAAA,CAAW,IAAY;;;;;AHhCxB;AA6Bf;;iBGiBgB,aAAA,CACd,aAAA,UACA,IAAA,UACA,KAAA,EAAO,KAAK;;;;;AHzDd;;;;;iBIkCgB,iBAAA,CACd,MAAA,UACA,IAAA,UACA,KAAA,EAAO,KAAK"}
|