@ank1015/llm-agents 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +21 -0
  3. package/README.md +117 -0
  4. package/dist/agents/skills/index.d.ts +37 -0
  5. package/dist/agents/skills/index.d.ts.map +1 -0
  6. package/dist/agents/skills/index.js +386 -0
  7. package/dist/agents/skills/index.js.map +1 -0
  8. package/dist/agents/system-prompt.d.ts +7 -0
  9. package/dist/agents/system-prompt.d.ts.map +1 -0
  10. package/dist/agents/system-prompt.js +106 -0
  11. package/dist/agents/system-prompt.js.map +1 -0
  12. package/dist/agents/tools.d.ts +3 -0
  13. package/dist/agents/tools.d.ts.map +1 -0
  14. package/dist/agents/tools.js +3 -0
  15. package/dist/agents/tools.js.map +1 -0
  16. package/dist/helpers/ai-image/ai-image.d.ts +75 -0
  17. package/dist/helpers/ai-image/ai-image.d.ts.map +1 -0
  18. package/dist/helpers/ai-image/ai-image.js +438 -0
  19. package/dist/helpers/ai-image/ai-image.js.map +1 -0
  20. package/dist/helpers/ai-image/index.d.ts +3 -0
  21. package/dist/helpers/ai-image/index.d.ts.map +1 -0
  22. package/dist/helpers/ai-image/index.js +2 -0
  23. package/dist/helpers/ai-image/index.js.map +1 -0
  24. package/dist/helpers/index.d.ts +2 -0
  25. package/dist/helpers/index.d.ts.map +1 -0
  26. package/dist/helpers/index.js +2 -0
  27. package/dist/helpers/index.js.map +1 -0
  28. package/dist/index.d.ts +12 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +12 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/tools/bash.d.ts +55 -0
  33. package/dist/tools/bash.d.ts.map +1 -0
  34. package/dist/tools/bash.js +246 -0
  35. package/dist/tools/bash.js.map +1 -0
  36. package/dist/tools/edit-diff.d.ts +63 -0
  37. package/dist/tools/edit-diff.d.ts.map +1 -0
  38. package/dist/tools/edit-diff.js +246 -0
  39. package/dist/tools/edit-diff.js.map +1 -0
  40. package/dist/tools/edit.d.ts +39 -0
  41. package/dist/tools/edit.d.ts.map +1 -0
  42. package/dist/tools/edit.js +150 -0
  43. package/dist/tools/edit.js.map +1 -0
  44. package/dist/tools/find.d.ts +39 -0
  45. package/dist/tools/find.d.ts.map +1 -0
  46. package/dist/tools/find.js +206 -0
  47. package/dist/tools/find.js.map +1 -0
  48. package/dist/tools/grep.d.ts +45 -0
  49. package/dist/tools/grep.d.ts.map +1 -0
  50. package/dist/tools/grep.js +244 -0
  51. package/dist/tools/grep.js.map +1 -0
  52. package/dist/tools/index.d.ts +73 -0
  53. package/dist/tools/index.d.ts.map +1 -0
  54. package/dist/tools/index.js +66 -0
  55. package/dist/tools/index.js.map +1 -0
  56. package/dist/tools/ls.d.ts +40 -0
  57. package/dist/tools/ls.d.ts.map +1 -0
  58. package/dist/tools/ls.js +121 -0
  59. package/dist/tools/ls.js.map +1 -0
  60. package/dist/tools/path-utils.d.ts +8 -0
  61. package/dist/tools/path-utils.d.ts.map +1 -0
  62. package/dist/tools/path-utils.js +81 -0
  63. package/dist/tools/path-utils.js.map +1 -0
  64. package/dist/tools/read.d.ts +39 -0
  65. package/dist/tools/read.d.ts.map +1 -0
  66. package/dist/tools/read.js +177 -0
  67. package/dist/tools/read.js.map +1 -0
  68. package/dist/tools/truncate.d.ts +70 -0
  69. package/dist/tools/truncate.d.ts.map +1 -0
  70. package/dist/tools/truncate.js +205 -0
  71. package/dist/tools/truncate.js.map +1 -0
  72. package/dist/tools/utils/config.d.ts +16 -0
  73. package/dist/tools/utils/config.d.ts.map +1 -0
  74. package/dist/tools/utils/config.js +40 -0
  75. package/dist/tools/utils/config.js.map +1 -0
  76. package/dist/tools/utils/image-resize.d.ts +36 -0
  77. package/dist/tools/utils/image-resize.d.ts.map +1 -0
  78. package/dist/tools/utils/image-resize.js +183 -0
  79. package/dist/tools/utils/image-resize.js.map +1 -0
  80. package/dist/tools/utils/mime.d.ts +3 -0
  81. package/dist/tools/utils/mime.d.ts.map +1 -0
  82. package/dist/tools/utils/mime.js +41 -0
  83. package/dist/tools/utils/mime.js.map +1 -0
  84. package/dist/tools/utils/photon.d.ts +21 -0
  85. package/dist/tools/utils/photon.d.ts.map +1 -0
  86. package/dist/tools/utils/photon.js +121 -0
  87. package/dist/tools/utils/photon.js.map +1 -0
  88. package/dist/tools/utils/shell.d.ts +26 -0
  89. package/dist/tools/utils/shell.d.ts.map +1 -0
  90. package/dist/tools/utils/shell.js +177 -0
  91. package/dist/tools/utils/shell.js.map +1 -0
  92. package/dist/tools/utils/tools-manager.d.ts +3 -0
  93. package/dist/tools/utils/tools-manager.d.ts.map +1 -0
  94. package/dist/tools/utils/tools-manager.js +209 -0
  95. package/dist/tools/utils/tools-manager.js.map +1 -0
  96. package/dist/tools/write.d.ts +29 -0
  97. package/dist/tools/write.d.ts.map +1 -0
  98. package/dist/tools/write.js +83 -0
  99. package/dist/tools/write.js.map +1 -0
  100. package/package.json +73 -0
  101. package/skills/ai-images/SKILL.md +45 -0
  102. package/skills/ai-images/references/create.md +106 -0
  103. package/skills/ai-images/references/edit.md +107 -0
  104. package/skills/registry.json +10 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ All notable changes to this package will be documented in this file.
4
+
5
+ ## Unreleased
6
+
7
+ ## 0.0.2 - 2026-03-15
8
+
9
+ - aligned the package around general-purpose tools, skill runtime, and helper-backed skill APIs
10
+ - added package-level docs, including skill authoring and testing guidance
11
+ - added the first helper-backed bundled skill, `ai-images`
12
+ - documented and validated the reusable `.max/temp` TypeScript workspace for helper-backed skills
13
+ - cleaned package metadata and packaging behavior for OSS readiness
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ank1015
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,117 @@
1
+ # `@ank1015/llm-agents`
2
+
3
+ Node-only, opinionated general-purpose agent toolkit for the `@ank1015/llm` monorepo.
4
+
5
+ This package is the home of:
6
+
7
+ - general-purpose agent tools for file exploration, reading, editing, writing, and shell execution
8
+ - system-prompt construction for the monorepo's general-purpose agent
9
+ - bundled skill packaging and installation
10
+ - helper-backed skill APIs such as AI image generation/editing
11
+
12
+ ## What It Exports
13
+
14
+ The current public surface is organized around four areas:
15
+
16
+ - tools
17
+ - `createAllTools()`, `createCodingTools()`, `createReadOnlyTools()`
18
+ - `read`, `write`, `edit`, `bash`, `grep`, `find`, `ls`
19
+ - prompt/runtime helpers
20
+ - `createSystemPrompt()`
21
+ - skill runtime
22
+ - `listBundledSkills()`, `listInstalledSkills()`, `addSkill()`, `deleteSkill()`
23
+ - helper-backed skill APIs
24
+ - `createImage()`
25
+ - `editImage()`
26
+
27
+ ```ts
28
+ import {
29
+ addSkill,
30
+ createAllTools,
31
+ createImage,
32
+ createSystemPrompt,
33
+ listBundledSkills,
34
+ } from '@ank1015/llm-agents';
35
+ ```
36
+
37
+ ## Node-Only Runtime
38
+
39
+ `@ank1015/llm-agents` is intentionally Node-only.
40
+
41
+ It assumes access to:
42
+
43
+ - the local filesystem
44
+ - shell execution
45
+ - local applications and runtimes
46
+ - artifact-local agent state under `.max/`
47
+
48
+ This is not a browser-compatible package.
49
+
50
+ ## Skills
51
+
52
+ Bundled skills live under `skills/` and are installed into an artifact-local `.max/skills/`
53
+ directory.
54
+
55
+ Skills follow an overview-first structure:
56
+
57
+ - `SKILL.md` is the overview and navigation layer
58
+ - `references/` holds task-specific details that should only be read when needed
59
+
60
+ The current bundled skill is:
61
+
62
+ - `ai-images`
63
+ - overview: [skills/ai-images/SKILL.md](/Users/notacoder/Desktop/agents/llm/packages/agents/skills/ai-images/SKILL.md)
64
+ - task-specific references for image creation and image editing
65
+
66
+ ## Helper-Backed Temp Workspace
67
+
68
+ Some skills are helper-backed. When those skills are installed, the package prepares a reusable
69
+ TypeScript workspace under `.max/temp/`.
70
+
71
+ That workspace is intended for one-off helper scripts and includes:
72
+
73
+ - `package.json`
74
+ - `tsconfig.json`
75
+ - `scripts/`
76
+ - access to `@ank1015/llm-agents`
77
+ - access to `tsx`
78
+
79
+ This lets the agent write and run short TypeScript scripts without needing to bootstrap a fresh
80
+ project every time.
81
+
82
+ ## AI Image Helpers
83
+
84
+ The first helper-backed skill is `ai-images`.
85
+
86
+ Import the helpers from the package root:
87
+
88
+ ```ts
89
+ import { createImage, editImage } from '@ank1015/llm-agents';
90
+ ```
91
+
92
+ These helpers:
93
+
94
+ - use the package's skill-oriented abstractions instead of lower-level provider wiring
95
+ - work with the default file keys adapter automatically
96
+ - support OpenAI and Google image models currently exposed by the monorepo
97
+
98
+ See the skill docs for the task-specific API guidance:
99
+
100
+ - [create.md](/Users/notacoder/Desktop/agents/llm/packages/agents/skills/ai-images/references/create.md)
101
+ - [edit.md](/Users/notacoder/Desktop/agents/llm/packages/agents/skills/ai-images/references/edit.md)
102
+
103
+ ## Docs
104
+
105
+ - [docs/vision.md](/Users/notacoder/Desktop/agents/llm/packages/agents/docs/vision.md)
106
+ - [docs/adding-skills.md](/Users/notacoder/Desktop/agents/llm/packages/agents/docs/adding-skills.md)
107
+ - [docs/testing.md](/Users/notacoder/Desktop/agents/llm/packages/agents/docs/testing.md)
108
+
109
+ ## Commands
110
+
111
+ - `pnpm build`
112
+ - `pnpm test`
113
+ - `pnpm test:unit`
114
+ - `pnpm test:integration`
115
+ - `pnpm test:coverage`
116
+ - `pnpm typecheck`
117
+ - `pnpm lint`
@@ -0,0 +1,37 @@
1
+ export declare const MAX_DIR_NAME = ".max";
2
+ export declare const INSTALLED_SKILLS_DIR_NAME = "skills";
3
+ export declare const TEMP_DIR_NAME = "temp";
4
+ export interface SkillHelperProjectConfig {
5
+ runtime: 'typescript';
6
+ package: '@ank1015/llm-agents';
7
+ }
8
+ export interface SkillRegistryEntry {
9
+ name: string;
10
+ description: string;
11
+ path: string;
12
+ helperProject?: SkillHelperProjectConfig;
13
+ }
14
+ export interface BundledSkillEntry extends SkillRegistryEntry {
15
+ directory: string;
16
+ }
17
+ export interface InstalledSkillEntry extends SkillRegistryEntry {
18
+ artifactDir: string;
19
+ maxDir: string;
20
+ skillsDir: string;
21
+ tempDir: string;
22
+ directory: string;
23
+ helperProject?: SkillHelperProjectConfig;
24
+ }
25
+ export interface AddSkillResult extends InstalledSkillEntry {
26
+ sourceDirectory: string;
27
+ sourcePath: string;
28
+ }
29
+ export interface DeleteSkillResult extends InstalledSkillEntry {
30
+ deleted: true;
31
+ }
32
+ export declare function listBundledSkills(): Promise<BundledSkillEntry[]>;
33
+ export declare function addSkill(skillName: string, artifactDir: string): Promise<AddSkillResult>;
34
+ export declare function deleteSkill(skillName: string, artifactDir: string): Promise<DeleteSkillResult>;
35
+ export declare function listInstalledSkills(artifactDir: string): Promise<InstalledSkillEntry[]>;
36
+ export declare function readBundledSkillMetadata(skillName: string): Promise<SkillRegistryEntry>;
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/skills/index.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,yBAAyB,WAAW,CAAC;AAClD,eAAO,MAAM,aAAa,SAAS,CAAC;AAGpC,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,wBAAwB,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,wBAAwB,CAAC;CAC1C;AAED,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,OAAO,EAAE,IAAI,CAAC;CACf;AAQD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAetE;AAED,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA2B9F;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA2B7F;AAED,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQ7F"}
@@ -0,0 +1,386 @@
1
+ import { existsSync } from 'fs';
2
+ import { access, cp, mkdir, readFile, readdir, realpath, rm, symlink, writeFile, } from 'node:fs/promises';
3
+ import { dirname, join, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ const currentFileDir = dirname(fileURLToPath(import.meta.url));
6
+ const packageRoot = findPackageRoot(currentFileDir);
7
+ const bundledSkillsDir = join(packageRoot, 'skills');
8
+ const bundledRegistryPath = join(bundledSkillsDir, 'registry.json');
9
+ const packageNodeModulesDir = join(packageRoot, 'node_modules');
10
+ export const MAX_DIR_NAME = '.max';
11
+ export const INSTALLED_SKILLS_DIR_NAME = 'skills';
12
+ export const TEMP_DIR_NAME = 'temp';
13
+ const TEMP_SCRIPTS_DIR_NAME = 'scripts';
14
+ export async function listBundledSkills() {
15
+ const registry = await readBundledRegistry();
16
+ return registry.map((entry) => {
17
+ const directory = join(bundledSkillsDir, entry.name);
18
+ const path = join(directory, 'SKILL.md');
19
+ return {
20
+ name: entry.name,
21
+ description: entry.description,
22
+ directory,
23
+ path,
24
+ ...(entry.helperProject ? { helperProject: entry.helperProject } : {}),
25
+ };
26
+ });
27
+ }
28
+ export async function addSkill(skillName, artifactDir) {
29
+ const bundledSkill = await getBundledSkill(skillName);
30
+ await mkdir(artifactDir, { recursive: true });
31
+ const resolvedArtifactDir = await realpath(artifactDir);
32
+ const artifactPaths = getArtifactPaths(resolvedArtifactDir);
33
+ await mkdir(artifactPaths.maxDir, { recursive: true });
34
+ await mkdir(artifactPaths.skillsDir, { recursive: true });
35
+ await mkdir(artifactPaths.tempDir, { recursive: true });
36
+ await ensureArtifactNodeModulesLink(artifactPaths.nodeModulesDir);
37
+ await ensureHelperTempProject(artifactPaths.tempDir, bundledSkill.helperProject);
38
+ const targetDirectory = join(artifactPaths.skillsDir, bundledSkill.name);
39
+ await rm(targetDirectory, { recursive: true, force: true });
40
+ await cp(bundledSkill.directory, targetDirectory, { recursive: true, force: true });
41
+ const installedMetadata = await readInstalledSkill(targetDirectory, resolvedArtifactDir);
42
+ if (!installedMetadata) {
43
+ throw new Error(`Installed skill is missing a valid SKILL.md: ${targetDirectory}`);
44
+ }
45
+ return {
46
+ ...installedMetadata,
47
+ sourceDirectory: bundledSkill.directory,
48
+ sourcePath: bundledSkill.path,
49
+ };
50
+ }
51
+ export async function deleteSkill(skillName, artifactDir) {
52
+ const resolvedArtifactDir = resolve(artifactDir);
53
+ const artifactPaths = getArtifactPaths(resolvedArtifactDir);
54
+ const targetDirectory = join(artifactPaths.skillsDir, skillName);
55
+ const installedMetadata = await readInstalledSkill(targetDirectory, resolvedArtifactDir);
56
+ if (!installedMetadata) {
57
+ throw new Error(`Installed skill "${skillName}" not found in artifact`);
58
+ }
59
+ await rm(targetDirectory, { recursive: true, force: false });
60
+ return {
61
+ ...installedMetadata,
62
+ deleted: true,
63
+ };
64
+ }
65
+ export async function listInstalledSkills(artifactDir) {
66
+ const resolvedArtifactDir = resolve(artifactDir);
67
+ const artifactPaths = getArtifactPaths(resolvedArtifactDir);
68
+ if (!(await pathExists(artifactPaths.skillsDir))) {
69
+ return [];
70
+ }
71
+ const entries = await readdir(artifactPaths.skillsDir, { withFileTypes: true });
72
+ const installedSkills = [];
73
+ for (const entry of entries) {
74
+ if (!entry.isDirectory()) {
75
+ continue;
76
+ }
77
+ const skillDirectory = join(artifactPaths.skillsDir, entry.name);
78
+ const installedSkill = await readInstalledSkill(skillDirectory, resolvedArtifactDir);
79
+ if (!installedSkill) {
80
+ continue;
81
+ }
82
+ installedSkills.push(installedSkill);
83
+ }
84
+ installedSkills.sort((left, right) => left.name.localeCompare(right.name));
85
+ return installedSkills;
86
+ }
87
+ export async function readBundledSkillMetadata(skillName) {
88
+ const bundledSkill = await getBundledSkill(skillName);
89
+ return {
90
+ name: bundledSkill.name,
91
+ description: bundledSkill.description,
92
+ path: bundledSkill.path,
93
+ ...(bundledSkill.helperProject ? { helperProject: bundledSkill.helperProject } : {}),
94
+ };
95
+ }
96
+ function getArtifactPaths(artifactDir) {
97
+ const maxDir = join(artifactDir, MAX_DIR_NAME);
98
+ return {
99
+ maxDir,
100
+ skillsDir: join(maxDir, INSTALLED_SKILLS_DIR_NAME),
101
+ tempDir: join(maxDir, TEMP_DIR_NAME),
102
+ nodeModulesDir: join(maxDir, 'node_modules'),
103
+ };
104
+ }
105
+ async function ensureArtifactNodeModulesLink(nodeModulesDir) {
106
+ if (!(await pathExists(packageNodeModulesDir))) {
107
+ throw new Error(`Bundled skill runtime dependencies are missing: ${packageNodeModulesDir}`);
108
+ }
109
+ if (await pathExists(nodeModulesDir)) {
110
+ const [existingRealPath, packageRealPath] = await Promise.all([
111
+ realpath(nodeModulesDir),
112
+ realpath(packageNodeModulesDir),
113
+ ]);
114
+ if (existingRealPath === packageRealPath) {
115
+ return;
116
+ }
117
+ await rm(nodeModulesDir, { recursive: true, force: true });
118
+ }
119
+ await symlink(packageNodeModulesDir, nodeModulesDir, process.platform === 'win32' ? 'junction' : 'dir');
120
+ }
121
+ async function getBundledSkill(skillName) {
122
+ const bundledSkills = await listBundledSkills();
123
+ const skill = bundledSkills.find((entry) => entry.name === skillName);
124
+ if (!skill) {
125
+ const availableSkills = bundledSkills.map((entry) => entry.name).join(', ') || '[none]';
126
+ throw new Error(`Unknown bundled skill "${skillName}". Available skills: ${availableSkills}`);
127
+ }
128
+ if (!(await pathExists(skill.path))) {
129
+ throw new Error(`Bundled skill is missing SKILL.md: ${skill.path}`);
130
+ }
131
+ return skill;
132
+ }
133
+ async function readInstalledSkill(skillDirectory, artifactDir) {
134
+ const skillPath = join(skillDirectory, 'SKILL.md');
135
+ if (!(await pathExists(skillPath))) {
136
+ return undefined;
137
+ }
138
+ const metadata = await readSkillMetadata(skillPath);
139
+ const artifactPaths = getArtifactPaths(artifactDir);
140
+ return {
141
+ ...metadata,
142
+ path: skillPath,
143
+ artifactDir,
144
+ maxDir: artifactPaths.maxDir,
145
+ skillsDir: artifactPaths.skillsDir,
146
+ tempDir: artifactPaths.tempDir,
147
+ directory: skillDirectory,
148
+ ...(await readInstalledSkillHelperProject(skillDirectory)),
149
+ };
150
+ }
151
+ async function readBundledRegistry() {
152
+ const raw = await readFile(bundledRegistryPath, 'utf-8');
153
+ const parsed = JSON.parse(raw);
154
+ if (!Array.isArray(parsed)) {
155
+ throw new Error(`Bundled skill registry must be an array: ${bundledRegistryPath}`);
156
+ }
157
+ const registry = [];
158
+ for (const entry of parsed) {
159
+ if (!entry ||
160
+ typeof entry !== 'object' ||
161
+ typeof entry.name !== 'string' ||
162
+ typeof entry.description !== 'string' ||
163
+ !isValidHelperProjectConfig(entry.helperProject)) {
164
+ throw new Error(`Bundled skill registry contains an invalid entry: ${bundledRegistryPath}`);
165
+ }
166
+ registry.push({
167
+ name: entry.name,
168
+ description: entry.description,
169
+ ...(entry.helperProject ? { helperProject: entry.helperProject } : {}),
170
+ });
171
+ }
172
+ registry.sort((left, right) => left.name.localeCompare(right.name));
173
+ return registry;
174
+ }
175
+ async function readSkillMetadata(skillFilePath) {
176
+ const raw = await readFile(skillFilePath, 'utf-8');
177
+ const frontmatterMatch = raw.match(/^---\s*\r?\n([\s\S]*?)\r?\n---/);
178
+ if (!frontmatterMatch) {
179
+ throw new Error(`Skill file is missing YAML frontmatter: ${skillFilePath}`);
180
+ }
181
+ const frontmatterBody = frontmatterMatch[1] ?? '';
182
+ const values = parseFrontmatter(frontmatterBody);
183
+ const name = values.name?.trim() ?? '';
184
+ const description = values.description?.trim() ?? '';
185
+ if (!name || !description) {
186
+ throw new Error(`Skill frontmatter must include name and description: ${skillFilePath}`);
187
+ }
188
+ return { name, description };
189
+ }
190
+ function parseFrontmatter(frontmatterBody) {
191
+ const values = {};
192
+ let pendingKey;
193
+ let pendingLines = [];
194
+ const flushPending = () => {
195
+ if (!pendingKey) {
196
+ return;
197
+ }
198
+ values[pendingKey] = pendingLines.join('\n').trim();
199
+ pendingKey = undefined;
200
+ pendingLines = [];
201
+ };
202
+ for (const rawLine of frontmatterBody.split(/\r?\n/)) {
203
+ const line = rawLine.trimEnd();
204
+ const scalarMatch = line.match(/^([A-Za-z0-9_-]+):\s*(.*)$/);
205
+ if (scalarMatch && !rawLine.startsWith(' ')) {
206
+ flushPending();
207
+ const key = scalarMatch[1];
208
+ const rawValue = scalarMatch[2];
209
+ if (!key || rawValue === undefined) {
210
+ continue;
211
+ }
212
+ if (rawValue === '|' || rawValue === '>') {
213
+ pendingKey = key;
214
+ pendingLines = [];
215
+ continue;
216
+ }
217
+ values[key] = normalizeFrontmatterValue(rawValue);
218
+ continue;
219
+ }
220
+ if (pendingKey && rawLine.startsWith(' ')) {
221
+ pendingLines.push(rawLine.slice(2));
222
+ }
223
+ }
224
+ flushPending();
225
+ return values;
226
+ }
227
+ function normalizeFrontmatterValue(value) {
228
+ const trimmed = value.trim();
229
+ if ((trimmed.startsWith("'") && trimmed.endsWith("'")) ||
230
+ (trimmed.startsWith('"') && trimmed.endsWith('"'))) {
231
+ return trimmed.slice(1, -1);
232
+ }
233
+ return trimmed;
234
+ }
235
+ async function pathExists(path) {
236
+ try {
237
+ await access(path);
238
+ return true;
239
+ }
240
+ catch {
241
+ return false;
242
+ }
243
+ }
244
+ async function readInstalledSkillHelperProject(skillDirectory) {
245
+ const skillName = skillDirectory.split(/[/\\]/).pop();
246
+ if (!skillName) {
247
+ return {};
248
+ }
249
+ const bundledSkill = (await listBundledSkills()).find((entry) => entry.name === skillName);
250
+ if (!bundledSkill?.helperProject) {
251
+ return {};
252
+ }
253
+ return { helperProject: bundledSkill.helperProject };
254
+ }
255
+ function isValidHelperProjectConfig(value) {
256
+ if (value === undefined) {
257
+ return true;
258
+ }
259
+ if (!value || typeof value !== 'object') {
260
+ return false;
261
+ }
262
+ const candidate = value;
263
+ return candidate.runtime === 'typescript' && candidate.package === '@ank1015/llm-agents';
264
+ }
265
+ async function ensureHelperTempProject(tempDir, helperProject) {
266
+ if (!helperProject) {
267
+ return;
268
+ }
269
+ await mkdir(tempDir, { recursive: true });
270
+ const scriptsDir = join(tempDir, TEMP_SCRIPTS_DIR_NAME);
271
+ await mkdir(scriptsDir, { recursive: true });
272
+ await ensureTempPackageJson(tempDir);
273
+ await ensureTempTsconfig(tempDir);
274
+ await ensureTempNodeModuleLinks(tempDir);
275
+ }
276
+ async function ensureTempPackageJson(tempDir) {
277
+ const packageJsonPath = join(tempDir, 'package.json');
278
+ const packageVersion = await readCurrentPackageVersion();
279
+ const tsxVersion = await readCurrentTsxVersion();
280
+ let current = {};
281
+ if (await pathExists(packageJsonPath)) {
282
+ try {
283
+ current = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
284
+ }
285
+ catch {
286
+ current = {};
287
+ }
288
+ }
289
+ const dependencies = normalizeObjectRecord(current.dependencies);
290
+ const devDependencies = normalizeObjectRecord(current.devDependencies);
291
+ if (!dependencies['@ank1015/llm-agents']) {
292
+ dependencies['@ank1015/llm-agents'] = packageVersion;
293
+ }
294
+ if (!devDependencies.tsx) {
295
+ devDependencies.tsx = tsxVersion;
296
+ }
297
+ const nextPackageJson = {
298
+ name: typeof current.name === 'string' ? current.name : 'max-temp',
299
+ private: true,
300
+ type: 'module',
301
+ dependencies,
302
+ devDependencies,
303
+ };
304
+ await writeFile(packageJsonPath, `${JSON.stringify(nextPackageJson, null, 2)}\n`, 'utf-8');
305
+ }
306
+ async function ensureTempTsconfig(tempDir) {
307
+ const tsconfigPath = join(tempDir, 'tsconfig.json');
308
+ if (await pathExists(tsconfigPath)) {
309
+ return;
310
+ }
311
+ const tsconfig = {
312
+ compilerOptions: {
313
+ target: 'ES2022',
314
+ module: 'NodeNext',
315
+ moduleResolution: 'NodeNext',
316
+ strict: true,
317
+ esModuleInterop: true,
318
+ skipLibCheck: true,
319
+ types: ['node'],
320
+ },
321
+ include: ['scripts/**/*.ts'],
322
+ };
323
+ await writeFile(tsconfigPath, `${JSON.stringify(tsconfig, null, 2)}\n`, 'utf-8');
324
+ }
325
+ async function ensureTempNodeModuleLinks(tempDir) {
326
+ const nodeModulesDir = join(tempDir, 'node_modules');
327
+ const scopeDir = join(nodeModulesDir, '@ank1015');
328
+ const binDir = join(nodeModulesDir, '.bin');
329
+ await mkdir(scopeDir, { recursive: true });
330
+ await mkdir(binDir, { recursive: true });
331
+ await ensureSymlink(join(scopeDir, 'llm-agents'), packageRoot, 'dir');
332
+ const tsxPackageDir = join(packageNodeModulesDir, 'tsx');
333
+ if (!(await pathExists(tsxPackageDir))) {
334
+ throw new Error(`tsx runtime is missing from the package dependencies: ${tsxPackageDir}`);
335
+ }
336
+ await ensureSymlink(join(nodeModulesDir, 'tsx'), tsxPackageDir, 'dir');
337
+ for (const binaryName of ['tsx', 'tsx.cmd', 'tsx.ps1']) {
338
+ const source = join(packageNodeModulesDir, '.bin', binaryName);
339
+ if (!(await pathExists(source))) {
340
+ continue;
341
+ }
342
+ await ensureSymlink(join(binDir, binaryName), source, 'file');
343
+ }
344
+ }
345
+ async function ensureSymlink(linkPath, targetPath, type) {
346
+ if (await pathExists(linkPath)) {
347
+ return;
348
+ }
349
+ await symlink(targetPath, linkPath, process.platform === 'win32' && type === 'dir' ? 'junction' : type);
350
+ }
351
+ function normalizeObjectRecord(value) {
352
+ if (!value || typeof value !== 'object') {
353
+ return {};
354
+ }
355
+ const record = {};
356
+ for (const [key, rawValue] of Object.entries(value)) {
357
+ if (typeof rawValue === 'string') {
358
+ record[key] = rawValue;
359
+ }
360
+ }
361
+ return record;
362
+ }
363
+ async function readCurrentPackageVersion() {
364
+ const packageJsonPath = join(packageRoot, 'package.json');
365
+ const parsed = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
366
+ return parsed.version ?? '0.0.2';
367
+ }
368
+ async function readCurrentTsxVersion() {
369
+ const packageJsonPath = join(packageRoot, 'package.json');
370
+ const parsed = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
371
+ return parsed.devDependencies?.tsx ?? parsed.dependencies?.tsx ?? '^4.19.0';
372
+ }
373
+ function findPackageRoot(startDir) {
374
+ let dir = startDir;
375
+ while (true) {
376
+ if (existsSync(join(dir, 'package.json'))) {
377
+ return dir;
378
+ }
379
+ const parentDir = dirname(dir);
380
+ if (parentDir === dir) {
381
+ throw new Error(`Unable to locate package root from ${startDir}`);
382
+ }
383
+ dir = parentDir;
384
+ }
385
+ }
386
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/skills/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function createSystemPrompt({ projectName, projectDir, artifactName, artifactDir, }: {
2
+ projectName: string;
3
+ projectDir: string;
4
+ artifactName: string;
5
+ artifactDir: string;
6
+ }): Promise<string>;
7
+ //# sourceMappingURL=system-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agents/system-prompt.ts"],"names":[],"mappings":"AAIA,wBAAsB,kBAAkB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6FlB"}