@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.
Files changed (107) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/CLI.md +177 -0
  3. package/LICENSE +69 -0
  4. package/README.md +326 -0
  5. package/SECURITY.md +33 -0
  6. package/SPEC.md +159 -0
  7. package/VERSIONING.md +45 -0
  8. package/dist/adapters/claudeCode.d.ts +11 -0
  9. package/dist/adapters/claudeCode.js +120 -0
  10. package/dist/adapters/claudeCode.js.map +1 -0
  11. package/dist/adapters/codex.d.ts +12 -0
  12. package/dist/adapters/codex.js +141 -0
  13. package/dist/adapters/codex.js.map +1 -0
  14. package/dist/app/exampleInputDocuments.d.ts +21 -0
  15. package/dist/app/exampleInputDocuments.js +24 -0
  16. package/dist/app/exampleInputDocuments.js.map +1 -0
  17. package/dist/app/inspect.d.ts +15 -0
  18. package/dist/app/inspect.js +96 -0
  19. package/dist/app/inspect.js.map +1 -0
  20. package/dist/app/loadAsDraft.d.ts +7 -0
  21. package/dist/app/loadAsDraft.js +148 -0
  22. package/dist/app/loadAsDraft.js.map +1 -0
  23. package/dist/app/summary.d.ts +17 -0
  24. package/dist/app/summary.js +89 -0
  25. package/dist/app/summary.js.map +1 -0
  26. package/dist/artifacts/naming.d.ts +8 -0
  27. package/dist/artifacts/naming.js +26 -0
  28. package/dist/artifacts/naming.js.map +1 -0
  29. package/dist/builder/draftRequest.d.ts +24 -0
  30. package/dist/builder/draftRequest.js +87 -0
  31. package/dist/builder/draftRequest.js.map +1 -0
  32. package/dist/builder/instructions.d.ts +1 -0
  33. package/dist/builder/instructions.js +30 -0
  34. package/dist/builder/instructions.js.map +1 -0
  35. package/dist/builder/revisionRequest.d.ts +24 -0
  36. package/dist/builder/revisionRequest.js +94 -0
  37. package/dist/builder/revisionRequest.js.map +1 -0
  38. package/dist/cli/index.d.ts +2 -0
  39. package/dist/cli/index.js +5 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/cli/program.d.ts +2 -0
  42. package/dist/cli/program.js +273 -0
  43. package/dist/cli/program.js.map +1 -0
  44. package/dist/context/builder.d.ts +2 -0
  45. package/dist/context/builder.js +159 -0
  46. package/dist/context/builder.js.map +1 -0
  47. package/dist/context/types.d.ts +23 -0
  48. package/dist/context/types.js +2 -0
  49. package/dist/context/types.js.map +1 -0
  50. package/dist/domains/catalog.d.ts +7 -0
  51. package/dist/domains/catalog.js +45 -0
  52. package/dist/domains/catalog.js.map +1 -0
  53. package/dist/draft/render.d.ts +13 -0
  54. package/dist/draft/render.js +207 -0
  55. package/dist/draft/render.js.map +1 -0
  56. package/dist/draft/schema.d.ts +107 -0
  57. package/dist/draft/schema.js +78 -0
  58. package/dist/draft/schema.js.map +1 -0
  59. package/dist/draft/session.d.ts +56 -0
  60. package/dist/draft/session.js +115 -0
  61. package/dist/draft/session.js.map +1 -0
  62. package/dist/export/onefile.d.ts +1 -0
  63. package/dist/export/onefile.js +109 -0
  64. package/dist/export/onefile.js.map +1 -0
  65. package/dist/fs/safety.d.ts +26 -0
  66. package/dist/fs/safety.js +187 -0
  67. package/dist/fs/safety.js.map +1 -0
  68. package/dist/index.d.ts +45 -0
  69. package/dist/index.js +26 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/init/create.d.ts +14 -0
  72. package/dist/init/create.js +48 -0
  73. package/dist/init/create.js.map +1 -0
  74. package/dist/init/templates.d.ts +12 -0
  75. package/dist/init/templates.js +202 -0
  76. package/dist/init/templates.js.map +1 -0
  77. package/dist/package/packager.d.ts +5 -0
  78. package/dist/package/packager.js +30 -0
  79. package/dist/package/packager.js.map +1 -0
  80. package/dist/package/reader.d.ts +3 -0
  81. package/dist/package/reader.js +21 -0
  82. package/dist/package/reader.js.map +1 -0
  83. package/dist/prompts/prompts.d.ts +35 -0
  84. package/dist/prompts/prompts.js +206 -0
  85. package/dist/prompts/prompts.js.map +1 -0
  86. package/dist/prompts/schema.d.ts +71 -0
  87. package/dist/prompts/schema.js +46 -0
  88. package/dist/prompts/schema.js.map +1 -0
  89. package/dist/providers/catalog.d.ts +15 -0
  90. package/dist/providers/catalog.js +211 -0
  91. package/dist/providers/catalog.js.map +1 -0
  92. package/dist/providers/types.d.ts +30 -0
  93. package/dist/providers/types.js +2 -0
  94. package/dist/providers/types.js.map +1 -0
  95. package/dist/schema/agentkit.d.ts +54 -0
  96. package/dist/schema/agentkit.js +63 -0
  97. package/dist/schema/agentkit.js.map +1 -0
  98. package/dist/types.d.ts +69 -0
  99. package/dist/types.js +2 -0
  100. package/dist/types.js.map +1 -0
  101. package/dist/validation/skill.d.ts +3 -0
  102. package/dist/validation/skill.js +83 -0
  103. package/dist/validation/skill.js.map +1 -0
  104. package/dist/validation/validator.d.ts +2 -0
  105. package/dist/validation/validator.js +247 -0
  106. package/dist/validation/validator.js.map +1 -0
  107. 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,5 @@
1
+ export interface PackageAgentKitOptions {
2
+ maxFiles?: number;
3
+ maxBytes?: number;
4
+ }
5
+ export declare function packageAgentKit(rootPath: string, outFile: string, options?: PackageAgentKitOptions): Promise<string>;
@@ -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,3 @@
1
+ import type { LoadedAgentKit } from "../types.js";
2
+ export declare function readAgentKit(rootPath: string): Promise<LoadedAgentKit>;
3
+ export declare function readYamlFile(filePath: string): Promise<unknown>;
@@ -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"}