@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,207 @@
1
+ import { mkdir, readdir, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import YAML from "yaml";
4
+ import { assertSafeId, resolveInside, safeRemoveDirectoryContents } from "../fs/safety.js";
5
+ import { agentKitDraftSchema } from "./schema.js";
6
+ export class AgentKitDraftValidationError extends Error {
7
+ issues;
8
+ constructor(error) {
9
+ const issues = error.issues.map((issue) => {
10
+ const issuePath = issue.path.length > 0 ? issue.path.join(".") : "(root)";
11
+ return `${issuePath}: ${issue.message}`;
12
+ });
13
+ super(`Invalid Agent Kit draft:\n${issues.join("\n")}`);
14
+ this.name = "AgentKitDraftValidationError";
15
+ this.issues = issues;
16
+ }
17
+ }
18
+ export async function renderAgentKitDraft(draftInput, targetDir, options = {}) {
19
+ const parsed = agentKitDraftSchema.safeParse(draftInput);
20
+ if (!parsed.success) {
21
+ throw new AgentKitDraftValidationError(parsed.error);
22
+ }
23
+ const draft = parsed.data;
24
+ assertSafeId(draft.id, "draft id");
25
+ for (const skill of draft.skills) {
26
+ assertSafeId(skill.id, "skill id");
27
+ }
28
+ for (const prompt of draft.preparedPrompts) {
29
+ assertSafeId(prompt.id, "prepared prompt id");
30
+ }
31
+ for (const policy of draft.policies) {
32
+ assertSafeId(policy.id, "policy id");
33
+ }
34
+ for (const example of draft.examples) {
35
+ assertSafeId(example.id, "example id");
36
+ }
37
+ const resolvedRoot = path.resolve(targetDir);
38
+ await assertCanWriteTarget(resolvedRoot, options.force === true);
39
+ const files = buildDraftFiles(draft);
40
+ for (const [relativePath, content] of files) {
41
+ const filePath = resolveInside(resolvedRoot, relativePath);
42
+ await mkdir(path.dirname(filePath), { recursive: true });
43
+ await writeFile(filePath, content, "utf8");
44
+ }
45
+ return {
46
+ rootPath: resolvedRoot,
47
+ files: files.map(([relativePath]) => relativePath)
48
+ };
49
+ }
50
+ function buildDraftFiles(draft) {
51
+ const skills = [...draft.skills].sort((left, right) => left.id.localeCompare(right.id));
52
+ const policies = [...draft.policies].sort((left, right) => left.id.localeCompare(right.id));
53
+ const examples = [...draft.examples].sort((left, right) => left.id.localeCompare(right.id));
54
+ const templates = [...draft.templates].sort((left, right) => left.id.localeCompare(right.id));
55
+ const preparedPrompts = [...draft.preparedPrompts].sort((left, right) => left.id.localeCompare(right.id));
56
+ const files = [
57
+ ["agentkit.yaml", renderManifest(draft, skills)],
58
+ ["AGENTKIT.md", renderAgentInstructions(draft)],
59
+ ["START_HERE.md", renderStartHere(draft)],
60
+ ["README.md", renderReadme(draft)],
61
+ ["LICENSE", `${draft.license}\n`],
62
+ ["CHANGELOG.md", draft.changelog ?? "# Changelog\n\n## 0.1.0\n\nInitial draft render.\n"]
63
+ ];
64
+ for (const skill of skills) {
65
+ files.push([`skills/${skill.id}/SKILL.md`, renderSkill(skill)]);
66
+ }
67
+ for (const policy of policies) {
68
+ files.push([`policies/${policy.id}.yaml`, YAML.stringify(policy)]);
69
+ }
70
+ for (const example of examples) {
71
+ files.push([`examples/prompts/${example.id}.md`, markdownWithTitle(example.id, example.prompt)]);
72
+ if (example.output) {
73
+ files.push([`examples/outputs/${example.id}.md`, markdownWithTitle(example.id, example.output)]);
74
+ }
75
+ }
76
+ for (const template of templates) {
77
+ files.push([`templates/${template.path}`, template.content.endsWith("\n") ? template.content : `${template.content}\n`]);
78
+ }
79
+ for (const prompt of preparedPrompts) {
80
+ files.push([`prompts/${prompt.id}.yaml`, YAML.stringify(prompt)]);
81
+ }
82
+ return files;
83
+ }
84
+ function renderManifest(draft, skills) {
85
+ return YAML.stringify({
86
+ schemaVersion: draft.schemaVersion,
87
+ kind: "AgentKit",
88
+ id: draft.id,
89
+ name: draft.name,
90
+ version: draft.version,
91
+ description: draft.description,
92
+ author: draft.author,
93
+ license: draft.license,
94
+ entrypoints: {
95
+ human: "START_HERE.md",
96
+ agent: "AGENTKIT.md"
97
+ },
98
+ userExperience: {
99
+ setupLevel: draft.setupLevel
100
+ },
101
+ compatibility: {
102
+ targets: draft.compatibilityTargets
103
+ },
104
+ risk: {
105
+ level: draft.riskLevel
106
+ },
107
+ skills: skills.map((skill) => ({
108
+ id: skill.id,
109
+ path: `skills/${skill.id}/SKILL.md`,
110
+ description: skill.description,
111
+ triggers: skill.triggers
112
+ })),
113
+ ...(draft.preparedPrompts.length > 0
114
+ ? {
115
+ prompts: [...draft.preparedPrompts]
116
+ .sort((left, right) => left.id.localeCompare(right.id))
117
+ .map((prompt) => ({
118
+ id: prompt.id,
119
+ path: `prompts/${prompt.id}.yaml`,
120
+ description: prompt.description
121
+ }))
122
+ }
123
+ : {})
124
+ });
125
+ }
126
+ function renderAgentInstructions(draft) {
127
+ return draft.agentInstructions ?? `# ${draft.name}
128
+
129
+ Use this Agent Kit when the user's task matches one of the skill triggers.
130
+ `;
131
+ }
132
+ function renderStartHere(draft) {
133
+ return draft.startHere ?? `# ${draft.name}
134
+
135
+ ${draft.description}
136
+ `;
137
+ }
138
+ function renderReadme(draft) {
139
+ return draft.readme ?? `# ${draft.name}
140
+
141
+ ${draft.description}
142
+ `;
143
+ }
144
+ function renderSkill(skill) {
145
+ const frontmatter = YAML.stringify({
146
+ id: skill.id,
147
+ name: skill.name,
148
+ description: skill.description,
149
+ triggers: skill.triggers,
150
+ riskLevel: skill.riskLevel
151
+ }).trim();
152
+ return `---
153
+ ${frontmatter}
154
+ ---
155
+
156
+ # ${skill.name}
157
+
158
+ ## Use when
159
+
160
+ ${skill.useWhen}
161
+
162
+ ## Procedure
163
+
164
+ ${skill.procedure}
165
+
166
+ ## Output
167
+
168
+ ${skill.output}
169
+ `;
170
+ }
171
+ function markdownWithTitle(id, content) {
172
+ if (/^#\s+/m.test(content)) {
173
+ return content.endsWith("\n") ? content : `${content}\n`;
174
+ }
175
+ return `# ${titleFromId(id)}\n\n${content}\n`;
176
+ }
177
+ async function assertCanWriteTarget(targetPath, force) {
178
+ try {
179
+ const entries = await readdir(targetPath);
180
+ if (entries.length > 0 && !force) {
181
+ throw new Error(`Refusing to render Agent Kit draft into non-empty directory: ${targetPath}. Use --force to overwrite generated files.`);
182
+ }
183
+ if (entries.length > 0) {
184
+ await safeRemoveDirectoryContents(targetPath);
185
+ }
186
+ }
187
+ catch (error) {
188
+ if (isNotFoundError(error)) {
189
+ await mkdir(targetPath, { recursive: true });
190
+ return;
191
+ }
192
+ throw error;
193
+ }
194
+ }
195
+ function titleFromId(id) {
196
+ return id
197
+ .split("-")
198
+ .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)
199
+ .join(" ");
200
+ }
201
+ function isNotFoundError(error) {
202
+ return (typeof error === "object" &&
203
+ error !== null &&
204
+ "code" in error &&
205
+ error.code === "ENOENT");
206
+ }
207
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/draft/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { z } from "zod";
2
+ export declare const skillDraftSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodString;
5
+ description: z.ZodString;
6
+ triggers: z.ZodArray<z.ZodString>;
7
+ riskLevel: z.ZodDefault<z.ZodString>;
8
+ useWhen: z.ZodString;
9
+ procedure: z.ZodString;
10
+ output: z.ZodString;
11
+ }, z.core.$strict>;
12
+ export declare const policyDraftSchema: z.ZodObject<{
13
+ id: z.ZodString;
14
+ description: z.ZodOptional<z.ZodString>;
15
+ rules: z.ZodArray<z.ZodString>;
16
+ }, z.core.$strict>;
17
+ export declare const exampleDraftSchema: z.ZodObject<{
18
+ id: z.ZodString;
19
+ prompt: z.ZodString;
20
+ output: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strict>;
22
+ export declare const templateDraftSchema: z.ZodObject<{
23
+ id: z.ZodString;
24
+ path: z.ZodString;
25
+ content: z.ZodString;
26
+ }, z.core.$strict>;
27
+ export declare const agentKitDraftSchema: z.ZodObject<{
28
+ schemaVersion: z.ZodDefault<z.ZodString>;
29
+ id: z.ZodString;
30
+ name: z.ZodString;
31
+ version: z.ZodDefault<z.ZodString>;
32
+ description: z.ZodString;
33
+ author: z.ZodDefault<z.ZodObject<{
34
+ name: z.ZodString;
35
+ }, z.core.$strict>>;
36
+ license: z.ZodDefault<z.ZodString>;
37
+ setupLevel: z.ZodDefault<z.ZodString>;
38
+ compatibilityTargets: z.ZodDefault<z.ZodArray<z.ZodString>>;
39
+ riskLevel: z.ZodDefault<z.ZodString>;
40
+ agentInstructions: z.ZodOptional<z.ZodString>;
41
+ startHere: z.ZodOptional<z.ZodString>;
42
+ readme: z.ZodOptional<z.ZodString>;
43
+ changelog: z.ZodOptional<z.ZodString>;
44
+ skills: z.ZodArray<z.ZodObject<{
45
+ id: z.ZodString;
46
+ name: z.ZodString;
47
+ description: z.ZodString;
48
+ triggers: z.ZodArray<z.ZodString>;
49
+ riskLevel: z.ZodDefault<z.ZodString>;
50
+ useWhen: z.ZodString;
51
+ procedure: z.ZodString;
52
+ output: z.ZodString;
53
+ }, z.core.$strict>>;
54
+ policies: z.ZodDefault<z.ZodArray<z.ZodObject<{
55
+ id: z.ZodString;
56
+ description: z.ZodOptional<z.ZodString>;
57
+ rules: z.ZodArray<z.ZodString>;
58
+ }, z.core.$strict>>>;
59
+ examples: z.ZodDefault<z.ZodArray<z.ZodObject<{
60
+ id: z.ZodString;
61
+ prompt: z.ZodString;
62
+ output: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strict>>>;
64
+ templates: z.ZodDefault<z.ZodArray<z.ZodObject<{
65
+ id: z.ZodString;
66
+ path: z.ZodString;
67
+ content: z.ZodString;
68
+ }, z.core.$strict>>>;
69
+ preparedPrompts: z.ZodDefault<z.ZodArray<z.ZodObject<{
70
+ id: z.ZodString;
71
+ name: z.ZodString;
72
+ description: z.ZodString;
73
+ template: z.ZodString;
74
+ inputs: z.ZodDefault<z.ZodArray<z.ZodObject<{
75
+ id: z.ZodString;
76
+ label: z.ZodString;
77
+ description: z.ZodOptional<z.ZodString>;
78
+ type: z.ZodEnum<{
79
+ number: "number";
80
+ boolean: "boolean";
81
+ date: "date";
82
+ "short-text": "short-text";
83
+ "long-text": "long-text";
84
+ choice: "choice";
85
+ "multi-choice": "multi-choice";
86
+ }>;
87
+ required: z.ZodBoolean;
88
+ placeholder: z.ZodOptional<z.ZodString>;
89
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
90
+ choices: z.ZodOptional<z.ZodArray<z.ZodString>>;
91
+ includeInPrompt: z.ZodDefault<z.ZodBoolean>;
92
+ }, z.core.$strict>>>;
93
+ outputMode: z.ZodOptional<z.ZodEnum<{
94
+ text: "text";
95
+ markdown: "markdown";
96
+ document: "document";
97
+ }>>;
98
+ documentLikeOutput: z.ZodOptional<z.ZodBoolean>;
99
+ suggestedFileName: z.ZodOptional<z.ZodString>;
100
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ }, z.core.$strict>>>;
102
+ }, z.core.$strict>;
103
+ export type SkillDraft = z.infer<typeof skillDraftSchema>;
104
+ export type PolicyDraft = z.infer<typeof policyDraftSchema>;
105
+ export type ExampleDraft = z.infer<typeof exampleDraftSchema>;
106
+ export type TemplateDraft = z.infer<typeof templateDraftSchema>;
107
+ export type AgentKitDraft = z.infer<typeof agentKitDraftSchema>;
@@ -0,0 +1,78 @@
1
+ import { z } from "zod";
2
+ import { assertSafeRelativePath } from "../fs/safety.js";
3
+ import { preparedPromptSchema } from "../prompts/schema.js";
4
+ const idSchema = z
5
+ .string()
6
+ .min(1)
7
+ .regex(/^[a-z0-9][a-z0-9-]*$/, "Use lowercase letters, numbers, and hyphens");
8
+ const safeRelativePathSchema = z.string().min(1).refine((value) => {
9
+ try {
10
+ assertSafeRelativePath(value);
11
+ return true;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }, "Use a safe relative path");
17
+ export const skillDraftSchema = z
18
+ .object({
19
+ id: idSchema,
20
+ name: z.string().min(1),
21
+ description: z.string().min(1),
22
+ triggers: z.array(z.string().min(1)).min(1),
23
+ riskLevel: z.string().min(1).default("low"),
24
+ useWhen: z.string().min(1),
25
+ procedure: z.string().min(1),
26
+ output: z.string().min(1)
27
+ })
28
+ .strict();
29
+ export const policyDraftSchema = z
30
+ .object({
31
+ id: idSchema,
32
+ description: z.string().min(1).optional(),
33
+ rules: z.array(z.string().min(1)).min(1)
34
+ })
35
+ .strict();
36
+ export const exampleDraftSchema = z
37
+ .object({
38
+ id: idSchema,
39
+ prompt: z.string().min(1),
40
+ output: z.string().min(1).optional()
41
+ })
42
+ .strict();
43
+ export const templateDraftSchema = z
44
+ .object({
45
+ id: idSchema,
46
+ path: safeRelativePathSchema,
47
+ content: z.string().min(1)
48
+ })
49
+ .strict();
50
+ export const agentKitDraftSchema = z
51
+ .object({
52
+ schemaVersion: z.string().min(1).default("0.1"),
53
+ id: idSchema,
54
+ name: z.string().min(1),
55
+ version: z.string().min(1).default("0.1.0"),
56
+ description: z.string().min(1),
57
+ author: z
58
+ .object({
59
+ name: z.string().min(1)
60
+ })
61
+ .strict()
62
+ .default({ name: "Unknown" }),
63
+ license: z.string().min(1).default("MIT"),
64
+ setupLevel: z.string().min(1).default("low"),
65
+ compatibilityTargets: z.array(z.string().min(1)).min(1).default(["codex"]),
66
+ riskLevel: z.string().min(1).default("low"),
67
+ agentInstructions: z.string().min(1).optional(),
68
+ startHere: z.string().min(1).optional(),
69
+ readme: z.string().min(1).optional(),
70
+ changelog: z.string().min(1).optional(),
71
+ skills: z.array(skillDraftSchema).min(1),
72
+ policies: z.array(policyDraftSchema).default([]),
73
+ examples: z.array(exampleDraftSchema).default([]),
74
+ templates: z.array(templateDraftSchema).default([]),
75
+ preparedPrompts: z.array(preparedPromptSchema).default([])
76
+ })
77
+ .strict();
78
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/draft/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { z } from "zod";
2
+ import { type AgentKitDraft } from "./schema.js";
3
+ export interface AgentKitDraftRevision {
4
+ id: string;
5
+ version: number;
6
+ draft: AgentKitDraft;
7
+ changeRequest?: string;
8
+ provider?: string;
9
+ model?: string;
10
+ warnings?: string[];
11
+ createdAt: string;
12
+ }
13
+ export interface AgentKitDraftSession {
14
+ id: string;
15
+ name: string;
16
+ originalRequest: string;
17
+ currentRevisionId: string;
18
+ revisions: AgentKitDraftRevision[];
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ export interface AgentKitDraftChangeRequest {
24
+ sessionId?: string;
25
+ currentDraft: AgentKitDraft;
26
+ originalRequest?: string;
27
+ changeRequest: string;
28
+ desiredValidationLevel?: string;
29
+ constraints?: string[];
30
+ sourceNotes?: string[];
31
+ }
32
+ export interface CreateDraftSessionInput {
33
+ originalRequest: string;
34
+ initialDraft: unknown;
35
+ provider?: string;
36
+ model?: string;
37
+ warnings?: string[];
38
+ name?: string;
39
+ metadata?: Record<string, unknown>;
40
+ now?: Date;
41
+ }
42
+ export interface AddDraftRevisionInput {
43
+ draft: unknown;
44
+ changeRequest?: string;
45
+ provider?: string;
46
+ model?: string;
47
+ warnings?: string[];
48
+ now?: Date;
49
+ }
50
+ export declare const agentKitDraftRevisionSchema: z.ZodType<AgentKitDraftRevision>;
51
+ export declare const agentKitDraftSessionSchema: z.ZodType<AgentKitDraftSession>;
52
+ export declare function createDraftSession(input: CreateDraftSessionInput): AgentKitDraftSession;
53
+ export declare function addDraftRevision(session: AgentKitDraftSession, input: AddDraftRevisionInput): AgentKitDraftSession;
54
+ export declare function getCurrentDraftRevision(session: AgentKitDraftSession): AgentKitDraftRevision;
55
+ export declare function restoreDraftRevision(session: AgentKitDraftSession, revisionId: string, now?: Date): AgentKitDraftSession;
56
+ export declare function validateDraftSession(session: unknown): AgentKitDraftSession;
@@ -0,0 +1,115 @@
1
+ import { z } from "zod";
2
+ import { agentKitDraftSchema } from "./schema.js";
3
+ export const agentKitDraftRevisionSchema = z
4
+ .object({
5
+ id: z.string().min(1),
6
+ version: z.number().int().positive(),
7
+ draft: agentKitDraftSchema,
8
+ changeRequest: z.string().min(1).optional(),
9
+ provider: z.string().min(1).optional(),
10
+ model: z.string().min(1).optional(),
11
+ warnings: z.array(z.string()).optional(),
12
+ createdAt: z.string().min(1)
13
+ })
14
+ .strict();
15
+ export const agentKitDraftSessionSchema = z
16
+ .object({
17
+ id: z.string().min(1),
18
+ name: z.string().min(1),
19
+ originalRequest: z.string().min(1),
20
+ currentRevisionId: z.string().min(1),
21
+ revisions: z.array(agentKitDraftRevisionSchema).min(1),
22
+ createdAt: z.string().min(1),
23
+ updatedAt: z.string().min(1),
24
+ metadata: z.record(z.string(), z.unknown()).optional()
25
+ })
26
+ .strict();
27
+ export function createDraftSession(input) {
28
+ const draft = parseDraft(input.initialDraft);
29
+ const timestamp = (input.now ?? new Date()).toISOString();
30
+ const sessionId = `draft-session-${timestampToId(timestamp)}`;
31
+ const revisionId = `${sessionId}-rev-1`;
32
+ return {
33
+ id: sessionId,
34
+ name: input.name ?? draft.name,
35
+ originalRequest: input.originalRequest,
36
+ currentRevisionId: revisionId,
37
+ revisions: [
38
+ {
39
+ id: revisionId,
40
+ version: 1,
41
+ draft,
42
+ provider: input.provider,
43
+ model: input.model,
44
+ warnings: input.warnings,
45
+ createdAt: timestamp
46
+ }
47
+ ],
48
+ createdAt: timestamp,
49
+ updatedAt: timestamp,
50
+ metadata: input.metadata
51
+ };
52
+ }
53
+ export function addDraftRevision(session, input) {
54
+ const parsedSession = validateDraftSession(session);
55
+ const draft = parseDraft(input.draft);
56
+ const version = Math.max(...parsedSession.revisions.map((revision) => revision.version)) + 1;
57
+ const timestamp = (input.now ?? new Date()).toISOString();
58
+ const revision = {
59
+ id: `${parsedSession.id}-rev-${version}`,
60
+ version,
61
+ draft,
62
+ changeRequest: input.changeRequest,
63
+ provider: input.provider,
64
+ model: input.model,
65
+ warnings: input.warnings,
66
+ createdAt: timestamp
67
+ };
68
+ return {
69
+ ...parsedSession,
70
+ currentRevisionId: revision.id,
71
+ revisions: [...parsedSession.revisions, revision],
72
+ updatedAt: timestamp
73
+ };
74
+ }
75
+ export function getCurrentDraftRevision(session) {
76
+ const parsedSession = validateDraftSession(session);
77
+ const revision = parsedSession.revisions.find((entry) => entry.id === parsedSession.currentRevisionId);
78
+ if (!revision) {
79
+ throw new Error(`Current draft revision not found: ${parsedSession.currentRevisionId}`);
80
+ }
81
+ return revision;
82
+ }
83
+ export function restoreDraftRevision(session, revisionId, now = new Date()) {
84
+ const parsedSession = validateDraftSession(session);
85
+ if (!parsedSession.revisions.some((revision) => revision.id === revisionId)) {
86
+ throw new Error(`Draft revision not found: ${revisionId}`);
87
+ }
88
+ return {
89
+ ...parsedSession,
90
+ currentRevisionId: revisionId,
91
+ updatedAt: now.toISOString()
92
+ };
93
+ }
94
+ export function validateDraftSession(session) {
95
+ const parsed = agentKitDraftSessionSchema.safeParse(session);
96
+ if (!parsed.success) {
97
+ throw new Error(`Invalid Agent Kit draft session: ${parsed.error.issues
98
+ .map((issue) => `${issue.path.join(".") || "(root)"}: ${issue.message}`)
99
+ .join("; ")}`);
100
+ }
101
+ return parsed.data;
102
+ }
103
+ function parseDraft(draft) {
104
+ const parsed = agentKitDraftSchema.safeParse(draft);
105
+ if (!parsed.success) {
106
+ throw new Error(`Invalid AgentKitDraft: ${parsed.error.issues
107
+ .map((issue) => `${issue.path.join(".") || "(root)"}: ${issue.message}`)
108
+ .join("; ")}`);
109
+ }
110
+ return parsed.data;
111
+ }
112
+ function timestampToId(timestamp) {
113
+ return timestamp.replaceAll("-", "").replaceAll(":", "").replace(/\.\d{3}Z$/, "Z");
114
+ }
115
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/draft/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAsB,MAAM,aAAa,CAAC;AAsDtE,MAAM,CAAC,MAAM,2BAA2B,GAAqC,CAAC;KAC3E,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,mBAAmB;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,0BAA0B,GAAoC,CAAC;KACzE,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAG,iBAAiB,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,GAAG,SAAS,QAAQ,CAAC;IAExC,OAAO;QACL,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,iBAAiB,EAAE,UAAU;QAC7B,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,UAAU;gBACd,OAAO,EAAE,CAAC;gBACV,KAAK;gBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,SAAS;aACrB;SACF;QACD,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAA6B,EAC7B,KAA4B;IAE5B,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAA0B;QACtC,EAAE,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,OAAO,EAAE;QACxC,OAAO;QACP,KAAK;QACL,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,SAAS;KACrB,CAAC;IAEF,OAAO;QACL,GAAG,aAAa;QAChB,iBAAiB,EAAE,QAAQ,CAAC,EAAE;QAC9B,SAAS,EAAE,CAAC,GAAG,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC;QACjD,SAAS,EAAE,SAAS;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA6B;IACnE,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,aAAa,CAAC,iBAAiB,CACxD,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA6B,EAC7B,UAAkB,EAClB,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,GAAG,aAAa;QAChB,iBAAiB,EAAE,UAAU;QAC7B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,CAAC,KAAK,CAAC,MAAM;aACpD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,KAAK,CAAC,MAAM;aAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB;IACtC,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACrF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function exportOneFile(rootPath: string, outFile: string): Promise<string>;