@agentkitforge/core 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/CHANGELOG.md +35 -0
- package/CLI.md +177 -0
- package/LICENSE +69 -0
- package/README.md +326 -0
- package/SECURITY.md +33 -0
- package/SPEC.md +159 -0
- package/VERSIONING.md +45 -0
- package/dist/adapters/claudeCode.d.ts +11 -0
- package/dist/adapters/claudeCode.js +120 -0
- package/dist/adapters/claudeCode.js.map +1 -0
- package/dist/adapters/codex.d.ts +12 -0
- package/dist/adapters/codex.js +141 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/app/exampleInputDocuments.d.ts +21 -0
- package/dist/app/exampleInputDocuments.js +24 -0
- package/dist/app/exampleInputDocuments.js.map +1 -0
- package/dist/app/inspect.d.ts +15 -0
- package/dist/app/inspect.js +96 -0
- package/dist/app/inspect.js.map +1 -0
- package/dist/app/loadAsDraft.d.ts +7 -0
- package/dist/app/loadAsDraft.js +148 -0
- package/dist/app/loadAsDraft.js.map +1 -0
- package/dist/app/summary.d.ts +17 -0
- package/dist/app/summary.js +89 -0
- package/dist/app/summary.js.map +1 -0
- package/dist/artifacts/naming.d.ts +8 -0
- package/dist/artifacts/naming.js +26 -0
- package/dist/artifacts/naming.js.map +1 -0
- package/dist/builder/draftRequest.d.ts +24 -0
- package/dist/builder/draftRequest.js +87 -0
- package/dist/builder/draftRequest.js.map +1 -0
- package/dist/builder/instructions.d.ts +1 -0
- package/dist/builder/instructions.js +30 -0
- package/dist/builder/instructions.js.map +1 -0
- package/dist/builder/revisionRequest.d.ts +24 -0
- package/dist/builder/revisionRequest.js +94 -0
- package/dist/builder/revisionRequest.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/program.d.ts +2 -0
- package/dist/cli/program.js +273 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/context/builder.d.ts +2 -0
- package/dist/context/builder.js +159 -0
- package/dist/context/builder.js.map +1 -0
- package/dist/context/types.d.ts +23 -0
- package/dist/context/types.js +2 -0
- package/dist/context/types.js.map +1 -0
- package/dist/domains/catalog.d.ts +7 -0
- package/dist/domains/catalog.js +45 -0
- package/dist/domains/catalog.js.map +1 -0
- package/dist/draft/render.d.ts +13 -0
- package/dist/draft/render.js +207 -0
- package/dist/draft/render.js.map +1 -0
- package/dist/draft/schema.d.ts +107 -0
- package/dist/draft/schema.js +78 -0
- package/dist/draft/schema.js.map +1 -0
- package/dist/draft/session.d.ts +56 -0
- package/dist/draft/session.js +115 -0
- package/dist/draft/session.js.map +1 -0
- package/dist/export/onefile.d.ts +1 -0
- package/dist/export/onefile.js +109 -0
- package/dist/export/onefile.js.map +1 -0
- package/dist/fs/safety.d.ts +26 -0
- package/dist/fs/safety.js +187 -0
- package/dist/fs/safety.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/init/create.d.ts +14 -0
- package/dist/init/create.js +48 -0
- package/dist/init/create.js.map +1 -0
- package/dist/init/templates.d.ts +12 -0
- package/dist/init/templates.js +202 -0
- package/dist/init/templates.js.map +1 -0
- package/dist/package/packager.d.ts +5 -0
- package/dist/package/packager.js +30 -0
- package/dist/package/packager.js.map +1 -0
- package/dist/package/reader.d.ts +3 -0
- package/dist/package/reader.js +21 -0
- package/dist/package/reader.js.map +1 -0
- package/dist/prompts/prompts.d.ts +35 -0
- package/dist/prompts/prompts.js +206 -0
- package/dist/prompts/prompts.js.map +1 -0
- package/dist/prompts/schema.d.ts +71 -0
- package/dist/prompts/schema.js +46 -0
- package/dist/prompts/schema.js.map +1 -0
- package/dist/providers/catalog.d.ts +15 -0
- package/dist/providers/catalog.js +211 -0
- package/dist/providers/catalog.js.map +1 -0
- package/dist/providers/types.d.ts +30 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/schema/agentkit.d.ts +54 -0
- package/dist/schema/agentkit.js +63 -0
- package/dist/schema/agentkit.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validation/skill.d.ts +3 -0
- package/dist/validation/skill.js +83 -0
- package/dist/validation/skill.js.map +1 -0
- package/dist/validation/validator.d.ts +2 -0
- package/dist/validation/validator.js +247 -0
- package/dist/validation/validator.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
export const templates = {
|
|
2
|
+
blank: {
|
|
3
|
+
name: "blank",
|
|
4
|
+
files: {
|
|
5
|
+
"agentkit.yaml": `schemaVersion: "0.1"
|
|
6
|
+
kind: AgentKit
|
|
7
|
+
id: "{{id}}"
|
|
8
|
+
name: "{{name}}"
|
|
9
|
+
version: "0.1.0"
|
|
10
|
+
description: "{{description}}"
|
|
11
|
+
author:
|
|
12
|
+
name: Unknown
|
|
13
|
+
license: MIT
|
|
14
|
+
entrypoints:
|
|
15
|
+
human: START_HERE.md
|
|
16
|
+
agent: AGENTKIT.md
|
|
17
|
+
userExperience:
|
|
18
|
+
setupLevel: low
|
|
19
|
+
compatibility:
|
|
20
|
+
targets:
|
|
21
|
+
- codex
|
|
22
|
+
risk:
|
|
23
|
+
level: low
|
|
24
|
+
skills:
|
|
25
|
+
- id: first-skill
|
|
26
|
+
path: skills/first-skill/SKILL.md
|
|
27
|
+
description: First starter skill.
|
|
28
|
+
triggers:
|
|
29
|
+
- first skill
|
|
30
|
+
`,
|
|
31
|
+
"AGENTKIT.md": `# {{name}}
|
|
32
|
+
|
|
33
|
+
Use this Agent Kit when the user's task matches one of the listed skill triggers.
|
|
34
|
+
`,
|
|
35
|
+
"START_HERE.md": `# {{name}}
|
|
36
|
+
|
|
37
|
+
{{description}}
|
|
38
|
+
`,
|
|
39
|
+
"skills/first-skill/SKILL.md": `---
|
|
40
|
+
id: first-skill
|
|
41
|
+
name: First Skill
|
|
42
|
+
description: First starter skill.
|
|
43
|
+
triggers:
|
|
44
|
+
- first skill
|
|
45
|
+
riskLevel: low
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
# First Skill
|
|
49
|
+
|
|
50
|
+
## Use when
|
|
51
|
+
|
|
52
|
+
Use this skill when a user asks for the starter workflow.
|
|
53
|
+
|
|
54
|
+
## Procedure
|
|
55
|
+
|
|
56
|
+
Clarify the goal, follow the kit instructions, and produce a concise result.
|
|
57
|
+
|
|
58
|
+
## Output
|
|
59
|
+
|
|
60
|
+
Return Markdown.
|
|
61
|
+
`
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"financial-review": {
|
|
65
|
+
name: "financial-review",
|
|
66
|
+
files: {
|
|
67
|
+
"agentkit.yaml": `schemaVersion: "0.1"
|
|
68
|
+
kind: AgentKit
|
|
69
|
+
id: "{{id}}"
|
|
70
|
+
name: "{{name}}"
|
|
71
|
+
version: "0.1.0"
|
|
72
|
+
description: "{{description}}"
|
|
73
|
+
author:
|
|
74
|
+
name: Unknown
|
|
75
|
+
license: MIT
|
|
76
|
+
entrypoints:
|
|
77
|
+
human: START_HERE.md
|
|
78
|
+
agent: AGENTKIT.md
|
|
79
|
+
userExperience:
|
|
80
|
+
setupLevel: medium
|
|
81
|
+
compatibility:
|
|
82
|
+
targets:
|
|
83
|
+
- codex
|
|
84
|
+
risk:
|
|
85
|
+
level: medium
|
|
86
|
+
skills:
|
|
87
|
+
- id: map-workbook-structure
|
|
88
|
+
path: skills/map-workbook-structure/SKILL.md
|
|
89
|
+
description: Map workbook sheets, tables, and important financial review areas.
|
|
90
|
+
triggers:
|
|
91
|
+
- map workbook
|
|
92
|
+
- workbook structure
|
|
93
|
+
- id: audit-formulas
|
|
94
|
+
path: skills/audit-formulas/SKILL.md
|
|
95
|
+
description: Audit formulas for consistency, risk, and review follow-up.
|
|
96
|
+
triggers:
|
|
97
|
+
- audit formulas
|
|
98
|
+
- review spreadsheet formulas
|
|
99
|
+
`,
|
|
100
|
+
"AGENTKIT.md": `# {{name}}
|
|
101
|
+
|
|
102
|
+
Use this Agent Kit to support structured financial workbook reviews. Stay within the guardrails in policies/financial-review-guardrails.yaml.
|
|
103
|
+
`,
|
|
104
|
+
"START_HERE.md": `# {{name}}
|
|
105
|
+
|
|
106
|
+
{{description}}
|
|
107
|
+
`,
|
|
108
|
+
"README.md": `# {{name}}
|
|
109
|
+
|
|
110
|
+
{{description}}
|
|
111
|
+
|
|
112
|
+
This template provides starter skills and guardrails for reviewing financial workbooks.
|
|
113
|
+
`,
|
|
114
|
+
LICENSE: `MIT
|
|
115
|
+
`,
|
|
116
|
+
"CHANGELOG.md": `# Changelog
|
|
117
|
+
|
|
118
|
+
## 0.1.0
|
|
119
|
+
|
|
120
|
+
Initial financial review template.
|
|
121
|
+
`,
|
|
122
|
+
"skills/map-workbook-structure/SKILL.md": `---
|
|
123
|
+
id: map-workbook-structure
|
|
124
|
+
name: Map Workbook Structure
|
|
125
|
+
description: Map workbook sheets, tables, and important financial review areas.
|
|
126
|
+
triggers:
|
|
127
|
+
- map workbook
|
|
128
|
+
- workbook structure
|
|
129
|
+
riskLevel: medium
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
# Map Workbook Structure
|
|
133
|
+
|
|
134
|
+
## Use when
|
|
135
|
+
|
|
136
|
+
Use this skill when a user needs an overview of a financial workbook before detailed review.
|
|
137
|
+
|
|
138
|
+
## Procedure
|
|
139
|
+
|
|
140
|
+
Identify sheets, major tables, assumptions, outputs, and areas requiring follow-up.
|
|
141
|
+
|
|
142
|
+
## Output
|
|
143
|
+
|
|
144
|
+
Return a concise workbook map with notable review risks.
|
|
145
|
+
`,
|
|
146
|
+
"skills/audit-formulas/SKILL.md": `---
|
|
147
|
+
id: audit-formulas
|
|
148
|
+
name: Audit Formulas
|
|
149
|
+
description: Audit formulas for consistency, risk, and review follow-up.
|
|
150
|
+
triggers:
|
|
151
|
+
- audit formulas
|
|
152
|
+
- review spreadsheet formulas
|
|
153
|
+
riskLevel: medium
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
# Audit Formulas
|
|
157
|
+
|
|
158
|
+
## Use when
|
|
159
|
+
|
|
160
|
+
Use this skill when a user asks for a formula review in a financial workbook.
|
|
161
|
+
|
|
162
|
+
## Procedure
|
|
163
|
+
|
|
164
|
+
Check formula consistency, hardcoded values, broken references, unusual ranges, and unexplained overrides.
|
|
165
|
+
|
|
166
|
+
## Output
|
|
167
|
+
|
|
168
|
+
Return findings with severity, location, rationale, and recommended follow-up.
|
|
169
|
+
`,
|
|
170
|
+
"policies/financial-review-guardrails.yaml": `riskLevel: medium
|
|
171
|
+
guardrails:
|
|
172
|
+
- Do not provide investment, tax, legal, or accounting advice.
|
|
173
|
+
- Flag uncertain conclusions for human review.
|
|
174
|
+
- Preserve source workbook assumptions unless explicitly asked to propose alternatives.
|
|
175
|
+
`,
|
|
176
|
+
"examples/prompts/monthly-review.md": `# Monthly Review Prompt
|
|
177
|
+
|
|
178
|
+
Review this monthly finance workbook for formula consistency and obvious structural risks.
|
|
179
|
+
`,
|
|
180
|
+
"examples/outputs/monthly-review-summary.md": `# Monthly Review Summary
|
|
181
|
+
|
|
182
|
+
## Summary
|
|
183
|
+
|
|
184
|
+
No critical issues found in the sample output.
|
|
185
|
+
|
|
186
|
+
## Follow-up
|
|
187
|
+
|
|
188
|
+
Confirm assumptions and investigate any formula ranges that differ from adjacent periods.
|
|
189
|
+
`
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
export function renderTemplate(input, variables) {
|
|
194
|
+
return input
|
|
195
|
+
.replaceAll("{{id}}", escapeYamlStringValue(variables.id))
|
|
196
|
+
.replaceAll("{{name}}", escapeYamlStringValue(variables.name))
|
|
197
|
+
.replaceAll("{{description}}", escapeYamlStringValue(variables.description));
|
|
198
|
+
}
|
|
199
|
+
function escapeYamlStringValue(value) {
|
|
200
|
+
return value.replaceAll("\\", "\\\\").replaceAll('"', '\\"');
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,SAAS,GAAmD;IACvE,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACL,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyBtB;YACK,aAAa,EAAE;;;CAGpB;YACK,eAAe,EAAE;;;CAGtB;YACK,6BAA6B,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBpC;SACI;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE;YACL,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCtB;YACK,aAAa,EAAE;;;CAGpB;YACK,eAAe,EAAE;;;CAGtB;YACK,WAAW,EAAE;;;;;CAKlB;YACK,OAAO,EAAE;CACd;YACK,cAAc,EAAE;;;;;CAKrB;YACK,wCAAwC,EAAE;;;;;;;;;;;;;;;;;;;;;;;CAuB/C;YACK,gCAAgC,EAAE;;;;;;;;;;;;;;;;;;;;;;;CAuBvC;YACK,2CAA2C,EAAE;;;;;CAKlD;YACK,oCAAoC,EAAE;;;CAG3C;YACK,4CAA4C,EAAE;;;;;;;;;CASnD;SACI;KACF;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,SAAoC;IAChF,OAAO,KAAK;SACT,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACzD,UAAU,CAAC,UAAU,EAAE,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7D,UAAU,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import JSZip from "jszip";
|
|
4
|
+
import { safeListFilesRecursive } from "../fs/safety.js";
|
|
5
|
+
export async function packageAgentKit(rootPath, outFile, options = {}) {
|
|
6
|
+
const resolvedRoot = path.resolve(rootPath);
|
|
7
|
+
const resolvedOut = path.resolve(outFile);
|
|
8
|
+
const zip = new JSZip();
|
|
9
|
+
for (const file of await safeListFilesRecursive(resolvedRoot, options)) {
|
|
10
|
+
if (shouldSkip(file.relativePath, resolvedOut, file.absolutePath)) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
zip.file(file.relativePath, await readFile(file.absolutePath));
|
|
14
|
+
}
|
|
15
|
+
const output = await zip.generateAsync({
|
|
16
|
+
type: "nodebuffer",
|
|
17
|
+
compression: "DEFLATE"
|
|
18
|
+
});
|
|
19
|
+
await mkdir(path.dirname(resolvedOut), { recursive: true });
|
|
20
|
+
await writeFile(resolvedOut, output);
|
|
21
|
+
return resolvedOut;
|
|
22
|
+
}
|
|
23
|
+
function shouldSkip(relativePath, outFile, filePath) {
|
|
24
|
+
const normalizedOut = path.resolve(outFile);
|
|
25
|
+
const normalizedFile = path.resolve(filePath);
|
|
26
|
+
return (normalizedFile === normalizedOut ||
|
|
27
|
+
relativePath.startsWith("exports/") ||
|
|
28
|
+
relativePath === ".DS_Store");
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=packager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packager.js","sourceRoot":"","sources":["../../src/package/packager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAOzD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,OAAe,EACf,UAAkC,EAAE;IAEpC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAExB,KAAK,MAAM,IAAI,IAAI,MAAM,sBAAsB,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;QACvE,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,SAAS;QACX,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;QACrC,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,YAAoB,EAAE,OAAe,EAAE,QAAgB;IACzE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9C,OAAO,CACL,cAAc,KAAK,aAAa;QAChC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC;QACnC,YAAY,KAAK,WAAW,CAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import YAML from "yaml";
|
|
4
|
+
import { agentKitManifestSchema } from "../schema/agentkit.js";
|
|
5
|
+
export async function readAgentKit(rootPath) {
|
|
6
|
+
const resolvedRoot = path.resolve(rootPath);
|
|
7
|
+
const manifestPath = path.join(resolvedRoot, "agentkit.yaml");
|
|
8
|
+
const rawText = await readFile(manifestPath, "utf8");
|
|
9
|
+
const manifestRaw = YAML.parse(rawText);
|
|
10
|
+
const parsed = agentKitManifestSchema.safeParse(manifestRaw);
|
|
11
|
+
return {
|
|
12
|
+
rootPath: resolvedRoot,
|
|
13
|
+
manifestPath,
|
|
14
|
+
manifestRaw,
|
|
15
|
+
manifest: parsed.success ? parsed.data : undefined
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export async function readYamlFile(filePath) {
|
|
19
|
+
return YAML.parse(await readFile(filePath, "utf8"));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/package/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IACnD,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE7D,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,YAAY;QACZ,WAAW;QACX,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,MAAM,CAAC,IAAyB,CAAC,CAAC,CAAC,SAAS;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAY,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AgentKitManifest, ValidationIssue } from "../types.js";
|
|
2
|
+
import { type PreparedPrompt } from "./schema.js";
|
|
3
|
+
export interface PreparedPromptInputValidationReport {
|
|
4
|
+
valid: boolean;
|
|
5
|
+
issues: ValidationIssue[];
|
|
6
|
+
}
|
|
7
|
+
export type PreparedPromptInputValues = Record<string, unknown>;
|
|
8
|
+
export interface PreparedPromptRenderResult {
|
|
9
|
+
renderedPrompt: string;
|
|
10
|
+
missingInputs: string[];
|
|
11
|
+
unresolvedVariables: string[];
|
|
12
|
+
warnings: string[];
|
|
13
|
+
valid: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function extractPromptVariables(template: string): string[];
|
|
16
|
+
export declare function findUnresolvedPromptVariables(renderedPrompt: string): string[];
|
|
17
|
+
export declare function listPreparedPrompts(kitPath: string): Promise<PreparedPrompt[]>;
|
|
18
|
+
export declare function loadPreparedPrompt(filePath: string): Promise<PreparedPrompt>;
|
|
19
|
+
export declare function validatePreparedPromptInputs(prompt: PreparedPrompt, inputValues: PreparedPromptInputValues): PreparedPromptInputValidationReport;
|
|
20
|
+
export declare function renderPreparedPrompt(prompt: PreparedPrompt, inputValues: PreparedPromptInputValues): string;
|
|
21
|
+
export declare function renderPreparedPromptWithValidation(prompt: PreparedPrompt, inputValues: PreparedPromptInputValues): PreparedPromptRenderResult;
|
|
22
|
+
export declare function getDefaultArtifactNames(input: {
|
|
23
|
+
id: string;
|
|
24
|
+
version: string;
|
|
25
|
+
timestamp?: Date;
|
|
26
|
+
}): {
|
|
27
|
+
onefile: string;
|
|
28
|
+
package: string;
|
|
29
|
+
output: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function getDefaultArtifactNamesForManifest(manifest: AgentKitManifest, timestamp?: Date): {
|
|
32
|
+
onefile: string;
|
|
33
|
+
package: string;
|
|
34
|
+
output: string;
|
|
35
|
+
};
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { readdir, readFile, stat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import YAML from "yaml";
|
|
4
|
+
import { resolveInside } from "../fs/safety.js";
|
|
5
|
+
import { readAgentKit } from "../package/reader.js";
|
|
6
|
+
import { preparedPromptSchema } from "./schema.js";
|
|
7
|
+
export function extractPromptVariables(template) {
|
|
8
|
+
return [...new Set([...matchPromptVariables(template)].map((match) => match.name))].sort();
|
|
9
|
+
}
|
|
10
|
+
export function findUnresolvedPromptVariables(renderedPrompt) {
|
|
11
|
+
return extractPromptVariables(renderedPrompt);
|
|
12
|
+
}
|
|
13
|
+
export async function listPreparedPrompts(kitPath) {
|
|
14
|
+
const kit = await readAgentKit(kitPath);
|
|
15
|
+
const promptRefs = kit.manifest?.prompts;
|
|
16
|
+
const promptPaths = promptRefs && promptRefs.length > 0
|
|
17
|
+
? promptRefs.map((prompt) => prompt.path)
|
|
18
|
+
: await findPromptFiles(kit.rootPath);
|
|
19
|
+
const prompts = await Promise.all(promptPaths.sort().map(async (promptPath) => {
|
|
20
|
+
const prompt = await loadPreparedPrompt(resolveInside(kit.rootPath, promptPath));
|
|
21
|
+
const manifestPrompt = promptRefs?.find((entry) => entry.path === promptPath);
|
|
22
|
+
if (manifestPrompt && manifestPrompt.id !== prompt.id) {
|
|
23
|
+
throw new Error(`Prepared prompt id mismatch for ${promptPath}: manifest has ${manifestPrompt.id}, file has ${prompt.id}`);
|
|
24
|
+
}
|
|
25
|
+
return prompt;
|
|
26
|
+
}));
|
|
27
|
+
return prompts.sort((left, right) => left.id.localeCompare(right.id));
|
|
28
|
+
}
|
|
29
|
+
export async function loadPreparedPrompt(filePath) {
|
|
30
|
+
const parsed = preparedPromptSchema.safeParse(YAML.parse(await readFile(filePath, "utf8")));
|
|
31
|
+
if (!parsed.success) {
|
|
32
|
+
const details = parsed.error.issues
|
|
33
|
+
.map((issue) => `${issue.path.join(".") || "(root)"}: ${issue.message}`)
|
|
34
|
+
.join("; ");
|
|
35
|
+
throw new Error(`Invalid prepared prompt ${filePath}: ${details}`);
|
|
36
|
+
}
|
|
37
|
+
return parsed.data;
|
|
38
|
+
}
|
|
39
|
+
export function validatePreparedPromptInputs(prompt, inputValues) {
|
|
40
|
+
const issues = [];
|
|
41
|
+
const templateVariables = extractPromptVariables(prompt.template);
|
|
42
|
+
const inputIds = new Set(prompt.inputs.map((input) => input.id));
|
|
43
|
+
for (const variable of templateVariables) {
|
|
44
|
+
if (!inputIds.has(variable)) {
|
|
45
|
+
issues.push({
|
|
46
|
+
severity: "error",
|
|
47
|
+
code: "prompt.placeholder.undefined",
|
|
48
|
+
message: `Prepared prompt template references undefined input: ${variable}`,
|
|
49
|
+
path: variable
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (const input of prompt.inputs) {
|
|
54
|
+
const value = inputValues[input.id] ?? input.defaultValue;
|
|
55
|
+
if (isMissing(value)) {
|
|
56
|
+
if (input.required) {
|
|
57
|
+
issues.push({
|
|
58
|
+
severity: "error",
|
|
59
|
+
code: "prompt.input.required",
|
|
60
|
+
message: `Missing required prompt input: ${input.id}`,
|
|
61
|
+
path: input.id
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
issues.push(...validateInputValue(input, value));
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
valid: issues.length === 0,
|
|
70
|
+
issues
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export function renderPreparedPrompt(prompt, inputValues) {
|
|
74
|
+
const result = renderPreparedPromptWithValidation(prompt, inputValues);
|
|
75
|
+
if (!result.valid) {
|
|
76
|
+
const messages = [
|
|
77
|
+
...result.missingInputs.map((input) => `Missing required prompt input: ${input}`),
|
|
78
|
+
...(result.unresolvedVariables.length > 0
|
|
79
|
+
? [`Unresolved prompt variables: ${result.unresolvedVariables.join(", ")}`]
|
|
80
|
+
: [])
|
|
81
|
+
];
|
|
82
|
+
throw new Error(messages.join("; "));
|
|
83
|
+
}
|
|
84
|
+
return result.renderedPrompt;
|
|
85
|
+
}
|
|
86
|
+
export function renderPreparedPromptWithValidation(prompt, inputValues) {
|
|
87
|
+
const report = validatePreparedPromptInputs(prompt, inputValues);
|
|
88
|
+
const missingInputs = report.issues
|
|
89
|
+
.filter((issue) => issue.code === "prompt.input.required")
|
|
90
|
+
.map((issue) => issue.path ?? "");
|
|
91
|
+
const renderedPrompt = replacePromptVariables(prompt.template, (inputId, original) => {
|
|
92
|
+
const input = prompt.inputs.find((entry) => entry.id === inputId);
|
|
93
|
+
if (!input) {
|
|
94
|
+
return original;
|
|
95
|
+
}
|
|
96
|
+
const value = inputValues[inputId] ?? input?.defaultValue;
|
|
97
|
+
if (isMissing(value) && input.required) {
|
|
98
|
+
return original;
|
|
99
|
+
}
|
|
100
|
+
return isMissing(value) ? "" : stringifyPromptValue(value);
|
|
101
|
+
});
|
|
102
|
+
const unresolvedVariables = findUnresolvedPromptVariables(renderedPrompt);
|
|
103
|
+
return {
|
|
104
|
+
renderedPrompt,
|
|
105
|
+
missingInputs,
|
|
106
|
+
unresolvedVariables,
|
|
107
|
+
warnings: [],
|
|
108
|
+
valid: report.valid && unresolvedVariables.length === 0
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export function getDefaultArtifactNames(input) {
|
|
112
|
+
const stamp = formatTimestamp(input.timestamp ?? new Date());
|
|
113
|
+
return {
|
|
114
|
+
onefile: `${input.id}-${input.version}.onefile.md`,
|
|
115
|
+
package: `${input.id}-${input.version}.agentkit.zip`,
|
|
116
|
+
output: `${input.id}-output-${stamp}.md`
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export function getDefaultArtifactNamesForManifest(manifest, timestamp) {
|
|
120
|
+
return getDefaultArtifactNames({ id: manifest.id, version: manifest.version, timestamp });
|
|
121
|
+
}
|
|
122
|
+
async function findPromptFiles(rootPath) {
|
|
123
|
+
const promptsPath = path.join(rootPath, "prompts");
|
|
124
|
+
if (!(await exists(promptsPath))) {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
const entries = await readdir(promptsPath, { withFileTypes: true });
|
|
128
|
+
return entries
|
|
129
|
+
.filter((entry) => entry.isFile() && entry.name.toLowerCase().endsWith(".yaml"))
|
|
130
|
+
.map((entry) => `prompts/${entry.name}`)
|
|
131
|
+
.sort();
|
|
132
|
+
}
|
|
133
|
+
function validateInputValue(input, value) {
|
|
134
|
+
const issue = (message) => ({
|
|
135
|
+
severity: "error",
|
|
136
|
+
code: "prompt.input.invalid",
|
|
137
|
+
message,
|
|
138
|
+
path: input.id
|
|
139
|
+
});
|
|
140
|
+
switch (input.type) {
|
|
141
|
+
case "short-text":
|
|
142
|
+
case "long-text":
|
|
143
|
+
case "date":
|
|
144
|
+
return typeof value === "string" ? [] : [issue(`Prompt input ${input.id} must be a string`)];
|
|
145
|
+
case "number":
|
|
146
|
+
return typeof value === "number" || (typeof value === "string" && value.trim() !== "" && !Number.isNaN(Number(value)))
|
|
147
|
+
? []
|
|
148
|
+
: [issue(`Prompt input ${input.id} must be a number`)];
|
|
149
|
+
case "boolean":
|
|
150
|
+
return typeof value === "boolean" ? [] : [issue(`Prompt input ${input.id} must be a boolean`)];
|
|
151
|
+
case "choice":
|
|
152
|
+
if (typeof value !== "string") {
|
|
153
|
+
return [issue(`Prompt input ${input.id} must be a string choice`)];
|
|
154
|
+
}
|
|
155
|
+
return input.choices && !input.choices.includes(value)
|
|
156
|
+
? [issue(`Prompt input ${input.id} must be one of: ${input.choices.join(", ")}`)]
|
|
157
|
+
: [];
|
|
158
|
+
case "multi-choice":
|
|
159
|
+
if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
|
|
160
|
+
return [issue(`Prompt input ${input.id} must be an array of string choices`)];
|
|
161
|
+
}
|
|
162
|
+
return input.choices && value.some((item) => !input.choices?.includes(item))
|
|
163
|
+
? [issue(`Prompt input ${input.id} contains an unsupported choice`)]
|
|
164
|
+
: [];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function stringifyPromptValue(value) {
|
|
168
|
+
if (Array.isArray(value)) {
|
|
169
|
+
return value.join(", ");
|
|
170
|
+
}
|
|
171
|
+
if (typeof value === "boolean") {
|
|
172
|
+
return value ? "true" : "false";
|
|
173
|
+
}
|
|
174
|
+
return String(value);
|
|
175
|
+
}
|
|
176
|
+
function replacePromptVariables(template, getValue) {
|
|
177
|
+
return template
|
|
178
|
+
.replace(/\{\{\s*([a-zA-Z0-9_.-]+)\s*\}\}/g, (match, inputId) => getValue(inputId, match))
|
|
179
|
+
.replace(/\{(?!\{)\s*([a-zA-Z0-9_.-]+)\s*\}(?!\})/g, (match, inputId) => getValue(inputId, match));
|
|
180
|
+
}
|
|
181
|
+
function matchPromptVariables(template) {
|
|
182
|
+
const matches = [];
|
|
183
|
+
for (const match of template.matchAll(/\{\{\s*([a-zA-Z0-9_.-]+)\s*\}\}/g)) {
|
|
184
|
+
matches.push({ name: match[1] });
|
|
185
|
+
}
|
|
186
|
+
for (const match of template.matchAll(/\{(?!\{)\s*([a-zA-Z0-9_.-]+)\s*\}(?!\})/g)) {
|
|
187
|
+
matches.push({ name: match[1] });
|
|
188
|
+
}
|
|
189
|
+
return matches;
|
|
190
|
+
}
|
|
191
|
+
function isMissing(value) {
|
|
192
|
+
return value === undefined || value === null || value === "";
|
|
193
|
+
}
|
|
194
|
+
async function exists(filePath) {
|
|
195
|
+
try {
|
|
196
|
+
await stat(filePath);
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function formatTimestamp(date) {
|
|
204
|
+
return date.toISOString().replaceAll("-", "").replaceAll(":", "").replace(/\.\d{3}Z$/, "Z");
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/prompts/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const preparedPromptInputTypeSchema: z.ZodEnum<{
|
|
3
|
+
number: "number";
|
|
4
|
+
boolean: "boolean";
|
|
5
|
+
date: "date";
|
|
6
|
+
"short-text": "short-text";
|
|
7
|
+
"long-text": "long-text";
|
|
8
|
+
choice: "choice";
|
|
9
|
+
"multi-choice": "multi-choice";
|
|
10
|
+
}>;
|
|
11
|
+
export declare const preparedPromptOutputModeSchema: z.ZodEnum<{
|
|
12
|
+
text: "text";
|
|
13
|
+
markdown: "markdown";
|
|
14
|
+
document: "document";
|
|
15
|
+
}>;
|
|
16
|
+
export declare const preparedPromptInputSchema: z.ZodObject<{
|
|
17
|
+
id: z.ZodString;
|
|
18
|
+
label: z.ZodString;
|
|
19
|
+
description: z.ZodOptional<z.ZodString>;
|
|
20
|
+
type: z.ZodEnum<{
|
|
21
|
+
number: "number";
|
|
22
|
+
boolean: "boolean";
|
|
23
|
+
date: "date";
|
|
24
|
+
"short-text": "short-text";
|
|
25
|
+
"long-text": "long-text";
|
|
26
|
+
choice: "choice";
|
|
27
|
+
"multi-choice": "multi-choice";
|
|
28
|
+
}>;
|
|
29
|
+
required: z.ZodBoolean;
|
|
30
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
31
|
+
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
32
|
+
choices: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
|
+
includeInPrompt: z.ZodDefault<z.ZodBoolean>;
|
|
34
|
+
}, z.core.$strict>;
|
|
35
|
+
export declare const preparedPromptSchema: z.ZodObject<{
|
|
36
|
+
id: z.ZodString;
|
|
37
|
+
name: z.ZodString;
|
|
38
|
+
description: z.ZodString;
|
|
39
|
+
template: z.ZodString;
|
|
40
|
+
inputs: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
41
|
+
id: z.ZodString;
|
|
42
|
+
label: z.ZodString;
|
|
43
|
+
description: z.ZodOptional<z.ZodString>;
|
|
44
|
+
type: z.ZodEnum<{
|
|
45
|
+
number: "number";
|
|
46
|
+
boolean: "boolean";
|
|
47
|
+
date: "date";
|
|
48
|
+
"short-text": "short-text";
|
|
49
|
+
"long-text": "long-text";
|
|
50
|
+
choice: "choice";
|
|
51
|
+
"multi-choice": "multi-choice";
|
|
52
|
+
}>;
|
|
53
|
+
required: z.ZodBoolean;
|
|
54
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
55
|
+
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
56
|
+
choices: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
57
|
+
includeInPrompt: z.ZodDefault<z.ZodBoolean>;
|
|
58
|
+
}, z.core.$strict>>>;
|
|
59
|
+
outputMode: z.ZodOptional<z.ZodEnum<{
|
|
60
|
+
text: "text";
|
|
61
|
+
markdown: "markdown";
|
|
62
|
+
document: "document";
|
|
63
|
+
}>>;
|
|
64
|
+
documentLikeOutput: z.ZodOptional<z.ZodBoolean>;
|
|
65
|
+
suggestedFileName: z.ZodOptional<z.ZodString>;
|
|
66
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
67
|
+
}, z.core.$strict>;
|
|
68
|
+
export type PreparedPrompt = z.infer<typeof preparedPromptSchema>;
|
|
69
|
+
export type PreparedPromptInput = z.infer<typeof preparedPromptInputSchema>;
|
|
70
|
+
export type PreparedPromptInputType = z.infer<typeof preparedPromptInputTypeSchema>;
|
|
71
|
+
export type PreparedPromptOutputMode = z.infer<typeof preparedPromptOutputModeSchema>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const kebabIdSchema = z
|
|
3
|
+
.string()
|
|
4
|
+
.min(1)
|
|
5
|
+
.regex(/^[a-z0-9][a-z0-9-]*$/, "Use lowercase letters, numbers, and hyphens");
|
|
6
|
+
const inputIdSchema = z
|
|
7
|
+
.string()
|
|
8
|
+
.min(1)
|
|
9
|
+
.regex(/^[a-zA-Z0-9_.-]+$/, "Use letters, numbers, dots, underscores, and hyphens");
|
|
10
|
+
export const preparedPromptInputTypeSchema = z.enum([
|
|
11
|
+
"short-text",
|
|
12
|
+
"long-text",
|
|
13
|
+
"choice",
|
|
14
|
+
"multi-choice",
|
|
15
|
+
"date",
|
|
16
|
+
"number",
|
|
17
|
+
"boolean"
|
|
18
|
+
]);
|
|
19
|
+
export const preparedPromptOutputModeSchema = z.enum(["text", "markdown", "document"]);
|
|
20
|
+
export const preparedPromptInputSchema = z
|
|
21
|
+
.object({
|
|
22
|
+
id: inputIdSchema,
|
|
23
|
+
label: z.string().min(1),
|
|
24
|
+
description: z.string().min(1).optional(),
|
|
25
|
+
type: preparedPromptInputTypeSchema,
|
|
26
|
+
required: z.boolean(),
|
|
27
|
+
placeholder: z.string().min(1).optional(),
|
|
28
|
+
defaultValue: z.unknown().optional(),
|
|
29
|
+
choices: z.array(z.string().min(1)).optional(),
|
|
30
|
+
includeInPrompt: z.boolean().default(true)
|
|
31
|
+
})
|
|
32
|
+
.strict();
|
|
33
|
+
export const preparedPromptSchema = z
|
|
34
|
+
.object({
|
|
35
|
+
id: kebabIdSchema,
|
|
36
|
+
name: z.string().min(1),
|
|
37
|
+
description: z.string().min(1),
|
|
38
|
+
template: z.string().min(1),
|
|
39
|
+
inputs: z.array(preparedPromptInputSchema).default([]),
|
|
40
|
+
outputMode: preparedPromptOutputModeSchema.optional(),
|
|
41
|
+
documentLikeOutput: z.boolean().optional(),
|
|
42
|
+
suggestedFileName: z.string().min(1).optional(),
|
|
43
|
+
tags: z.array(z.string().min(1)).optional()
|
|
44
|
+
})
|
|
45
|
+
.strict();
|
|
46
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/prompts/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CAAC,sBAAsB,EAAE,6CAA6C,CAAC,CAAC;AAEhF,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CAAC,mBAAmB,EAAE,sDAAsD,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC;IAClD,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,cAAc;IACd,MAAM;IACN,QAAQ;IACR,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC3C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,UAAU,EAAE,8BAA8B,CAAC,QAAQ,EAAE;IACrD,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC;KACD,MAAM,EAAE,CAAC"}
|