@vibe-agent-toolkit/cli 0.1.0-rc.10

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 (162) hide show
  1. package/README.md +125 -0
  2. package/dist/bin/vat.d.ts +18 -0
  3. package/dist/bin/vat.d.ts.map +1 -0
  4. package/dist/bin/vat.js +174 -0
  5. package/dist/bin/vat.js.map +1 -0
  6. package/dist/bin.d.ts +7 -0
  7. package/dist/bin.d.ts.map +1 -0
  8. package/dist/bin.js +108 -0
  9. package/dist/bin.js.map +1 -0
  10. package/dist/commands/agent/audit.d.ts +9 -0
  11. package/dist/commands/agent/audit.d.ts.map +1 -0
  12. package/dist/commands/agent/audit.js +139 -0
  13. package/dist/commands/agent/audit.js.map +1 -0
  14. package/dist/commands/agent/build.d.ts +13 -0
  15. package/dist/commands/agent/build.d.ts.map +1 -0
  16. package/dist/commands/agent/build.js +52 -0
  17. package/dist/commands/agent/build.js.map +1 -0
  18. package/dist/commands/agent/help.d.ts +5 -0
  19. package/dist/commands/agent/help.d.ts.map +1 -0
  20. package/dist/commands/agent/help.js +10 -0
  21. package/dist/commands/agent/help.js.map +1 -0
  22. package/dist/commands/agent/import.d.ts +10 -0
  23. package/dist/commands/agent/import.d.ts.map +1 -0
  24. package/dist/commands/agent/import.js +50 -0
  25. package/dist/commands/agent/import.js.map +1 -0
  26. package/dist/commands/agent/index.d.ts +7 -0
  27. package/dist/commands/agent/index.d.ts.map +1 -0
  28. package/dist/commands/agent/index.js +293 -0
  29. package/dist/commands/agent/index.js.map +1 -0
  30. package/dist/commands/agent/install.d.ts +15 -0
  31. package/dist/commands/agent/install.d.ts.map +1 -0
  32. package/dist/commands/agent/install.js +107 -0
  33. package/dist/commands/agent/install.js.map +1 -0
  34. package/dist/commands/agent/installed.d.ts +13 -0
  35. package/dist/commands/agent/installed.d.ts.map +1 -0
  36. package/dist/commands/agent/installed.js +106 -0
  37. package/dist/commands/agent/installed.js.map +1 -0
  38. package/dist/commands/agent/list.d.ts +8 -0
  39. package/dist/commands/agent/list.d.ts.map +1 -0
  40. package/dist/commands/agent/list.js +41 -0
  41. package/dist/commands/agent/list.js.map +1 -0
  42. package/dist/commands/agent/run.d.ts +17 -0
  43. package/dist/commands/agent/run.d.ts.map +1 -0
  44. package/dist/commands/agent/run.js +44 -0
  45. package/dist/commands/agent/run.js.map +1 -0
  46. package/dist/commands/agent/uninstall.d.ts +13 -0
  47. package/dist/commands/agent/uninstall.d.ts.map +1 -0
  48. package/dist/commands/agent/uninstall.js +48 -0
  49. package/dist/commands/agent/uninstall.js.map +1 -0
  50. package/dist/commands/agent/validate.d.ts +8 -0
  51. package/dist/commands/agent/validate.d.ts.map +1 -0
  52. package/dist/commands/agent/validate.js +51 -0
  53. package/dist/commands/agent/validate.js.map +1 -0
  54. package/dist/commands/rag/clear-command.d.ts +10 -0
  55. package/dist/commands/rag/clear-command.d.ts.map +1 -0
  56. package/dist/commands/rag/clear-command.js +22 -0
  57. package/dist/commands/rag/clear-command.js.map +1 -0
  58. package/dist/commands/rag/command-helpers.d.ts +27 -0
  59. package/dist/commands/rag/command-helpers.d.ts.map +1 -0
  60. package/dist/commands/rag/command-helpers.js +58 -0
  61. package/dist/commands/rag/command-helpers.js.map +1 -0
  62. package/dist/commands/rag/help.d.ts +5 -0
  63. package/dist/commands/rag/help.d.ts.map +1 -0
  64. package/dist/commands/rag/help.js +10 -0
  65. package/dist/commands/rag/help.js.map +1 -0
  66. package/dist/commands/rag/index-command.d.ts +10 -0
  67. package/dist/commands/rag/index-command.d.ts.map +1 -0
  68. package/dist/commands/rag/index-command.js +49 -0
  69. package/dist/commands/rag/index-command.js.map +1 -0
  70. package/dist/commands/rag/index.d.ts +7 -0
  71. package/dist/commands/rag/index.d.ts.map +1 -0
  72. package/dist/commands/rag/index.js +168 -0
  73. package/dist/commands/rag/index.js.map +1 -0
  74. package/dist/commands/rag/query-command.d.ts +11 -0
  75. package/dist/commands/rag/query-command.d.ts.map +1 -0
  76. package/dist/commands/rag/query-command.js +54 -0
  77. package/dist/commands/rag/query-command.js.map +1 -0
  78. package/dist/commands/rag/stats-command.d.ts +10 -0
  79. package/dist/commands/rag/stats-command.d.ts.map +1 -0
  80. package/dist/commands/rag/stats-command.js +25 -0
  81. package/dist/commands/rag/stats-command.js.map +1 -0
  82. package/dist/commands/resources/command-helpers.d.ts +5 -0
  83. package/dist/commands/resources/command-helpers.d.ts.map +1 -0
  84. package/dist/commands/resources/command-helpers.js +6 -0
  85. package/dist/commands/resources/command-helpers.js.map +1 -0
  86. package/dist/commands/resources/help.d.ts +5 -0
  87. package/dist/commands/resources/help.d.ts.map +1 -0
  88. package/dist/commands/resources/help.js +10 -0
  89. package/dist/commands/resources/help.js.map +1 -0
  90. package/dist/commands/resources/index.d.ts +7 -0
  91. package/dist/commands/resources/index.d.ts.map +1 -0
  92. package/dist/commands/resources/index.js +64 -0
  93. package/dist/commands/resources/index.js.map +1 -0
  94. package/dist/commands/resources/scan.d.ts +9 -0
  95. package/dist/commands/resources/scan.d.ts.map +1 -0
  96. package/dist/commands/resources/scan.js +47 -0
  97. package/dist/commands/resources/scan.js.map +1 -0
  98. package/dist/commands/resources/validate.d.ts +9 -0
  99. package/dist/commands/resources/validate.d.ts.map +1 -0
  100. package/dist/commands/resources/validate.js +61 -0
  101. package/dist/commands/resources/validate.js.map +1 -0
  102. package/dist/index.d.ts +14 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +15 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/schemas/config.d.ts +1034 -0
  107. package/dist/schemas/config.d.ts.map +1 -0
  108. package/dist/schemas/config.js +135 -0
  109. package/dist/schemas/config.js.map +1 -0
  110. package/dist/utils/agent-discovery.d.ts +32 -0
  111. package/dist/utils/agent-discovery.d.ts.map +1 -0
  112. package/dist/utils/agent-discovery.js +108 -0
  113. package/dist/utils/agent-discovery.js.map +1 -0
  114. package/dist/utils/agent-runner.d.ts +22 -0
  115. package/dist/utils/agent-runner.d.ts.map +1 -0
  116. package/dist/utils/agent-runner.js +120 -0
  117. package/dist/utils/agent-runner.js.map +1 -0
  118. package/dist/utils/command-error.d.ts +19 -0
  119. package/dist/utils/command-error.d.ts.map +1 -0
  120. package/dist/utils/command-error.js +36 -0
  121. package/dist/utils/command-error.js.map +1 -0
  122. package/dist/utils/config-loader.d.ts +12 -0
  123. package/dist/utils/config-loader.d.ts.map +1 -0
  124. package/dist/utils/config-loader.js +39 -0
  125. package/dist/utils/config-loader.js.map +1 -0
  126. package/dist/utils/help-loader.d.ts +12 -0
  127. package/dist/utils/help-loader.d.ts.map +1 -0
  128. package/dist/utils/help-loader.js +39 -0
  129. package/dist/utils/help-loader.js.map +1 -0
  130. package/dist/utils/logger.d.ts +14 -0
  131. package/dist/utils/logger.d.ts.map +1 -0
  132. package/dist/utils/logger.js +21 -0
  133. package/dist/utils/logger.js.map +1 -0
  134. package/dist/utils/output.d.ts +20 -0
  135. package/dist/utils/output.d.ts.map +1 -0
  136. package/dist/utils/output.js +40 -0
  137. package/dist/utils/output.js.map +1 -0
  138. package/dist/utils/project-root.d.ts +11 -0
  139. package/dist/utils/project-root.d.ts.map +1 -0
  140. package/dist/utils/project-root.js +35 -0
  141. package/dist/utils/project-root.js.map +1 -0
  142. package/dist/utils/resource-loader.d.ts +30 -0
  143. package/dist/utils/resource-loader.d.ts.map +1 -0
  144. package/dist/utils/resource-loader.js +63 -0
  145. package/dist/utils/resource-loader.js.map +1 -0
  146. package/dist/utils/scope-locations.d.ts +17 -0
  147. package/dist/utils/scope-locations.d.ts.map +1 -0
  148. package/dist/utils/scope-locations.js +40 -0
  149. package/dist/utils/scope-locations.js.map +1 -0
  150. package/dist/utils/validate-help-files.d.ts +14 -0
  151. package/dist/utils/validate-help-files.d.ts.map +1 -0
  152. package/dist/utils/validate-help-files.js +61 -0
  153. package/dist/utils/validate-help-files.js.map +1 -0
  154. package/dist/version.d.ts +13 -0
  155. package/dist/version.d.ts.map +1 -0
  156. package/dist/version.js +27 -0
  157. package/dist/version.js.map +1 -0
  158. package/docs/agent.md +100 -0
  159. package/docs/index.md +309 -0
  160. package/docs/rag.md +449 -0
  161. package/docs/resources.md +158 -0
  162. package/package.json +68 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB/B,CAAC;AAGH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAInC,CAAC;AAGH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBvB,CAAC;AAGZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAO7B,CAAC;AAGH,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAGH,eAAO,MAAM,uBAAuB;;;;;;;;;EAOlC,CAAC;AAGH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKzB,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY1B,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOrB,CAAC;AAEZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,cAAc,EAAE,aAyB5B,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Configuration schemas for vibe-agent-toolkit
3
+ */
4
+ import { z } from 'zod';
5
+ // Metadata configuration
6
+ export const MetadataConfigSchema = z.object({
7
+ frontmatter: z.boolean().optional().describe('Parse YAML frontmatter for metadata'),
8
+ inference: z
9
+ .object({
10
+ type: z.enum(['by-directory', 'by-filename', 'none']).optional(),
11
+ tags: z.enum(['by-heading', 'by-directory', 'none']).optional(),
12
+ })
13
+ .optional()
14
+ .describe('Metadata inference strategies'),
15
+ defaults: z
16
+ .object({
17
+ type: z.string().optional(),
18
+ tags: z.array(z.string()).optional(),
19
+ })
20
+ .optional()
21
+ .describe('Default metadata values'),
22
+ });
23
+ // Resource collection configuration
24
+ export const ResourceCollectionSchema = z.object({
25
+ include: z.array(z.string()).describe('Glob patterns for files to include'),
26
+ exclude: z.array(z.string()).optional().describe('Glob patterns for files to exclude'),
27
+ metadata: MetadataConfigSchema.optional().describe('Metadata configuration for this collection'),
28
+ });
29
+ // Resource defaults and collections
30
+ export const ResourcesConfigSchema = z
31
+ .object({
32
+ include: z
33
+ .array(z.string())
34
+ .optional()
35
+ .describe('Glob patterns for files to include (applies to all collections unless overridden)'),
36
+ exclude: z
37
+ .array(z.string())
38
+ .optional()
39
+ .describe('Glob patterns for files to exclude (applies to all collections unless overridden)'),
40
+ metadata: MetadataConfigSchema.optional().describe('Metadata configuration (applies to all collections unless overridden)'),
41
+ collections: z
42
+ .record(z.string(), ResourceCollectionSchema)
43
+ .optional()
44
+ .describe('Named resource collections for reuse'),
45
+ validation: z
46
+ .object({
47
+ checkLinks: z.boolean().optional(),
48
+ checkAnchors: z.boolean().optional(),
49
+ allowExternal: z.boolean().optional(),
50
+ })
51
+ .optional()
52
+ .describe('Resource validation settings'),
53
+ })
54
+ .strict();
55
+ // Agent discovery configuration
56
+ export const AgentsConfigSchema = z.object({
57
+ include: z.array(z.string()).describe('Glob patterns for agent directories'),
58
+ exclude: z.array(z.string()).optional().describe('Glob patterns to exclude'),
59
+ external: z
60
+ .array(z.string())
61
+ .optional()
62
+ .describe('External agent dependencies (npm packages with semver)'),
63
+ });
64
+ // RAG embedding configuration
65
+ export const RAGEmbeddingConfigSchema = z.object({
66
+ provider: z.enum(['transformers-js', 'openai']).describe('Embedding provider'),
67
+ model: z.string().describe('Model identifier'),
68
+ });
69
+ // RAG chunking configuration
70
+ export const RAGChunkingConfigSchema = z.object({
71
+ targetSize: z.number().int().positive().describe('Target chunk size in tokens'),
72
+ paddingFactor: z
73
+ .number()
74
+ .min(0)
75
+ .max(1)
76
+ .describe('Safety factor for token counting (0.0-1.0)'),
77
+ });
78
+ // RAG store configuration
79
+ export const RAGStoreSchema = z.object({
80
+ db: z.string().describe('Database path (relative to project root)'),
81
+ resources: z.string().describe('Named resource collection to use'),
82
+ embedding: RAGEmbeddingConfigSchema.optional().describe('Override default embedding config'),
83
+ chunking: RAGChunkingConfigSchema.optional().describe('Override default chunking config'),
84
+ });
85
+ // RAG configuration
86
+ export const RAGConfigSchema = z.object({
87
+ defaults: z
88
+ .object({
89
+ embedding: RAGEmbeddingConfigSchema.optional(),
90
+ chunking: RAGChunkingConfigSchema.optional(),
91
+ })
92
+ .optional()
93
+ .describe('Default configuration for all RAG stores'),
94
+ stores: z
95
+ .record(z.string(), RAGStoreSchema)
96
+ .optional()
97
+ .describe('Named RAG stores for semantic search'),
98
+ });
99
+ // Root project configuration
100
+ export const ProjectConfigSchema = z
101
+ .object({
102
+ version: z.literal(1).describe('Configuration schema version'),
103
+ resources: ResourcesConfigSchema.optional().describe('Resource management configuration'),
104
+ agents: AgentsConfigSchema.optional().describe('Agent discovery configuration'),
105
+ rag: RAGConfigSchema.optional().describe('RAG semantic search configuration'),
106
+ })
107
+ .strict();
108
+ // Default configuration
109
+ export const DEFAULT_CONFIG = {
110
+ version: 1,
111
+ resources: {
112
+ exclude: ['**/node_modules/**', '**/dist/**', '**/.git/**'],
113
+ metadata: {
114
+ frontmatter: true,
115
+ },
116
+ validation: {
117
+ checkLinks: true,
118
+ checkAnchors: true,
119
+ allowExternal: true,
120
+ },
121
+ },
122
+ rag: {
123
+ defaults: {
124
+ embedding: {
125
+ provider: 'transformers-js',
126
+ model: 'Xenova/all-MiniLM-L6-v2',
127
+ },
128
+ chunking: {
129
+ targetSize: 512,
130
+ paddingFactor: 0.9,
131
+ },
132
+ },
133
+ },
134
+ };
135
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Agent discovery utility - finds agents in common locations
3
+ */
4
+ export interface DiscoveredAgent {
5
+ name: string;
6
+ version: string;
7
+ path: string;
8
+ manifestPath: string;
9
+ }
10
+ /**
11
+ * Discover all agents in common locations
12
+ */
13
+ export declare function discoverAgents(): Promise<DiscoveredAgent[]>;
14
+ /**
15
+ * Find agent by name from discovered agents
16
+ */
17
+ export declare function findAgentByName(name: string): Promise<DiscoveredAgent | null>;
18
+ /**
19
+ * Resolve agent path from name or path
20
+ *
21
+ * If the input looks like a path (contains / or \, or ends with .yaml/.yml),
22
+ * it is returned as-is. Otherwise, it's treated as an agent name and
23
+ * resolved via discovery.
24
+ *
25
+ * @param pathOrName - Agent name or path
26
+ * @param logger - Optional logger for debug output
27
+ * @returns Resolved agent path
28
+ */
29
+ export declare function resolveAgentPath(pathOrName: string, logger?: {
30
+ debug: (message: string) => void;
31
+ }): Promise<string>;
32
+ //# sourceMappingURL=agent-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/agent-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAWjE;AAwED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAGnF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC5C,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Agent discovery utility - finds agents in common locations
3
+ */
4
+ import fs from 'node:fs/promises';
5
+ import path from 'node:path';
6
+ import * as yaml from 'js-yaml';
7
+ /**
8
+ * Discover all agents in common locations
9
+ */
10
+ export async function discoverAgents() {
11
+ const searchPaths = [
12
+ 'packages/vat-development-agents/agents',
13
+ 'agents',
14
+ '.',
15
+ ];
16
+ const agentPromises = searchPaths.map(searchPath => discoverAgentsInPath(searchPath));
17
+ const agentArrays = await Promise.all(agentPromises);
18
+ return agentArrays.flat();
19
+ }
20
+ async function discoverAgentsInPath(searchPath) {
21
+ try {
22
+ const absolutePath = path.resolve(process.cwd(), searchPath);
23
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Path is from predefined constant list
24
+ const entries = await fs.readdir(absolutePath, { withFileTypes: true });
25
+ const directories = entries.filter(entry => entry.isDirectory());
26
+ const agentPromises = directories.map(entry => discoverAgentInDirectory(path.join(absolutePath, entry.name)));
27
+ const agents = await Promise.all(agentPromises);
28
+ return agents.filter((agent) => agent !== null);
29
+ }
30
+ catch {
31
+ // Path doesn't exist or not accessible - return empty array
32
+ return [];
33
+ }
34
+ }
35
+ async function discoverAgentInDirectory(agentDir) {
36
+ const manifestPath = await findManifest(agentDir);
37
+ if (!manifestPath) {
38
+ return null;
39
+ }
40
+ return parseAgentManifest(manifestPath, agentDir);
41
+ }
42
+ async function findManifest(dir) {
43
+ const candidates = ['agent.yaml', 'agent.yml'];
44
+ for (const candidate of candidates) {
45
+ const manifestPath = path.join(dir, candidate);
46
+ try {
47
+ await fs.access(manifestPath);
48
+ return manifestPath;
49
+ }
50
+ catch {
51
+ // Continue
52
+ }
53
+ }
54
+ return null;
55
+ }
56
+ async function parseAgentManifest(manifestPath, agentDir) {
57
+ try {
58
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- manifestPath from findManifest, trusted
59
+ const content = await fs.readFile(manifestPath, 'utf-8');
60
+ const data = yaml.load(content);
61
+ if (data?.metadata?.name && data?.metadata?.version) {
62
+ return {
63
+ name: data.metadata.name,
64
+ version: data.metadata.version,
65
+ path: agentDir,
66
+ manifestPath,
67
+ };
68
+ }
69
+ }
70
+ catch {
71
+ // Invalid manifest - skip
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * Find agent by name from discovered agents
77
+ */
78
+ export async function findAgentByName(name) {
79
+ const agents = await discoverAgents();
80
+ return agents.find(agent => agent.name === name) ?? null;
81
+ }
82
+ /**
83
+ * Resolve agent path from name or path
84
+ *
85
+ * If the input looks like a path (contains / or \, or ends with .yaml/.yml),
86
+ * it is returned as-is. Otherwise, it's treated as an agent name and
87
+ * resolved via discovery.
88
+ *
89
+ * @param pathOrName - Agent name or path
90
+ * @param logger - Optional logger for debug output
91
+ * @returns Resolved agent path
92
+ */
93
+ export async function resolveAgentPath(pathOrName, logger) {
94
+ // If it looks like a path, return it as-is
95
+ if (pathOrName.includes('/') || pathOrName.includes('\\') || pathOrName.endsWith('.yaml') || pathOrName.endsWith('.yml')) {
96
+ return pathOrName;
97
+ }
98
+ // Otherwise, try to resolve as agent name
99
+ logger?.debug(`Looking up agent by name: ${pathOrName}`);
100
+ const agent = await findAgentByName(pathOrName);
101
+ if (agent) {
102
+ logger?.debug(`Found agent: ${agent.name} at ${agent.path}`);
103
+ return agent.path;
104
+ }
105
+ logger?.debug(`No agent found with name '${pathOrName}', treating as path`);
106
+ return pathOrName;
107
+ }
108
+ //# sourceMappingURL=agent-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-discovery.js","sourceRoot":"","sources":["../../src/utils/agent-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAShC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,WAAW,GAAG;QAClB,wCAAwC;QACxC,QAAQ;QACR,GAAG;KACJ,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAErD,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,UAAkB;IACpD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC7D,4GAA4G;QAC5G,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAExE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAC5C,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAC9D,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAA4B,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,QAAgB;IACtD,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE/C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC9B,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,QAAgB;IAEhB,IAAI,CAAC;QACH,8GAA8G;QAC9G,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAE7B,CAAC;QAEF,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YACpD,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAC9B,IAAI,EAAE,QAAQ;gBACd,YAAY;aACb,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAkB,EAClB,MAA6C;IAE7C,2CAA2C;IAC3C,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,0CAA0C;IAC1C,MAAM,EAAE,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAE,KAAK,CAAC,gBAAgB,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,EAAE,KAAK,CAAC,6BAA6B,UAAU,qBAAqB,CAAC,CAAC;IAC5E,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Agent Runner Utility
3
+ *
4
+ * Minimal runner for executing agents with LLM providers.
5
+ * Loads manifests, prompts, and handles API calls.
6
+ */
7
+ export interface RunAgentOptions {
8
+ userInput: string;
9
+ debug?: boolean;
10
+ }
11
+ export interface RunAgentResult {
12
+ response: string;
13
+ usage?: {
14
+ inputTokens: number;
15
+ outputTokens: number;
16
+ };
17
+ }
18
+ /**
19
+ * Runs an agent with the specified input
20
+ */
21
+ export declare function runAgent(pathOrName: string, options: RunAgentOptions): Promise<RunAgentResult>;
22
+ //# sourceMappingURL=agent-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../../src/utils/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAqCD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CA+FzB"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Agent Runner Utility
3
+ *
4
+ * Minimal runner for executing agents with LLM providers.
5
+ * Loads manifests, prompts, and handles API calls.
6
+ */
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import Anthropic from '@anthropic-ai/sdk';
10
+ import { loadAgentManifest } from '@vibe-agent-toolkit/agent-config';
11
+ /**
12
+ * Loads a prompt file from the agent directory
13
+ */
14
+ async function loadPromptFile(manifestPath, promptRef) {
15
+ const agentDir = path.dirname(manifestPath);
16
+ const promptPath = path.resolve(agentDir, promptRef.replace(/^\.\//u, ''));
17
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Path is derived from validated manifest
18
+ return await fs.readFile(promptPath, 'utf-8');
19
+ }
20
+ /**
21
+ * Simple template variable substitution
22
+ * For MVP: Only handles {{userInput}} and strips Jinja2 conditionals
23
+ */
24
+ function substituteTemplate(template, variables) {
25
+ let result = template;
26
+ // Replace {{variable}} placeholders
27
+ for (const [key, value] of Object.entries(variables)) {
28
+ // Use String.raw to avoid escaping and replaceAll for complete replacement
29
+ const placeholder = String.raw `\{\{\s*${key}\s*\}\}`;
30
+ // eslint-disable-next-line security/detect-non-literal-regexp -- Variable name from controlled source
31
+ const regex = new RegExp(placeholder, 'gu');
32
+ result = result.replaceAll(regex, value);
33
+ }
34
+ // Strip Jinja2 conditional blocks {% if ... %}...{% endif %}
35
+ // This is a simple regex approach for MVP - won't handle nested conditionals
36
+ // Using [^] instead of [\s\S] to match any character including newlines
37
+ // eslint-disable-next-line sonarjs/slow-regex -- Simple template stripping, not user-controlled input
38
+ result = result.replaceAll(/\{%\s*if\s+[^%]+%\}[^]*?\{%\s*endif\s*%\}/gu, '');
39
+ return result.trim();
40
+ }
41
+ /**
42
+ * Runs an agent with the specified input
43
+ */
44
+ export async function runAgent(pathOrName, options) {
45
+ const { userInput, debug } = options;
46
+ // Load agent manifest
47
+ const manifest = await loadAgentManifest(pathOrName);
48
+ if (debug) {
49
+ console.error(`[DEBUG] Loaded agent: ${manifest.metadata.name} v${manifest.metadata.version}`);
50
+ console.error(`[DEBUG] Provider: ${manifest.spec.llm.provider}, Model: ${manifest.spec.llm.model}`);
51
+ }
52
+ // Validate provider
53
+ if (manifest.spec.llm.provider !== 'anthropic') {
54
+ throw new Error(`Unsupported LLM provider: ${manifest.spec.llm.provider}. Currently only 'anthropic' is supported.`);
55
+ }
56
+ // Validate prompts configuration
57
+ if (!manifest.spec.prompts) {
58
+ throw new Error(`Agent ${manifest.metadata.name} is missing prompts configuration`);
59
+ }
60
+ if (!manifest.spec.prompts.system?.$ref) {
61
+ throw new Error(`Agent ${manifest.metadata.name} is missing system prompt reference`);
62
+ }
63
+ if (!manifest.spec.prompts.user?.$ref) {
64
+ throw new Error(`Agent ${manifest.metadata.name} is missing user prompt reference`);
65
+ }
66
+ // Load prompts
67
+ const systemPromptRef = manifest.spec.prompts.system.$ref;
68
+ const userPromptRef = manifest.spec.prompts.user.$ref;
69
+ const systemPrompt = await loadPromptFile(manifest.__manifestPath, systemPromptRef);
70
+ const userPromptTemplate = await loadPromptFile(manifest.__manifestPath, userPromptRef);
71
+ if (debug) {
72
+ console.error(`[DEBUG] System prompt length: ${systemPrompt.length} chars`);
73
+ console.error(`[DEBUG] User prompt template length: ${userPromptTemplate.length} chars`);
74
+ }
75
+ // Substitute user prompt variables
76
+ const userPrompt = substituteTemplate(userPromptTemplate, { userInput });
77
+ if (debug) {
78
+ console.error(`[DEBUG] Substituted user prompt length: ${userPrompt.length} chars`);
79
+ console.error('[DEBUG] Calling Anthropic API...');
80
+ }
81
+ // Call Anthropic API
82
+ const apiKey = process.env['ANTHROPIC_API_KEY'];
83
+ if (!apiKey) {
84
+ throw new Error('ANTHROPIC_API_KEY environment variable is not set. Please set it to use Anthropic-based agents.');
85
+ }
86
+ const client = new Anthropic({ apiKey });
87
+ // Use manifest config or sensible defaults
88
+ const maxTokens = manifest.spec.llm.maxTokens ?? 4096;
89
+ const temperature = manifest.spec.llm.temperature ?? 1;
90
+ const response = await client.messages.create({
91
+ model: manifest.spec.llm.model,
92
+ max_tokens: maxTokens,
93
+ temperature,
94
+ system: systemPrompt,
95
+ messages: [
96
+ {
97
+ role: 'user',
98
+ content: userPrompt,
99
+ },
100
+ ],
101
+ });
102
+ if (debug) {
103
+ console.error(`[DEBUG] API call complete. Status: ${response.stop_reason}`);
104
+ console.error(`[DEBUG] Input tokens: ${response.usage.input_tokens}`);
105
+ console.error(`[DEBUG] Output tokens: ${response.usage.output_tokens}`);
106
+ }
107
+ // Extract text response
108
+ const textContent = response.content.find((block) => block.type === 'text');
109
+ if (textContent?.type !== 'text') {
110
+ throw new Error('No text content in API response');
111
+ }
112
+ return {
113
+ response: textContent.text,
114
+ usage: {
115
+ inputTokens: response.usage.input_tokens,
116
+ outputTokens: response.usage.output_tokens,
117
+ },
118
+ };
119
+ }
120
+ //# sourceMappingURL=agent-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/utils/agent-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared command error handling utilities
3
+ */
4
+ import type { Logger } from './logger.js';
5
+ /**
6
+ * Format duration for human readability
7
+ * @param ms - Duration in milliseconds
8
+ * @returns Formatted duration string (e.g., "500ms", "1.5s", "1.5m")
9
+ */
10
+ export declare function formatDuration(ms: number): string;
11
+ /**
12
+ * Handle command error with standard formatting and exit
13
+ * @param error - The error that occurred
14
+ * @param logger - Logger instance for error output
15
+ * @param startTime - Command start time (from Date.now())
16
+ * @param commandName - Name of the command (for error message)
17
+ */
18
+ export declare function handleCommandError(error: unknown, logger: Logger, startTime: number, commandName: string): never;
19
+ //# sourceMappingURL=command-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-error.d.ts","sourceRoot":"","sources":["../../src/utils/command-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,KAAK,CAWP"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Shared command error handling utilities
3
+ */
4
+ import { writeYamlOutput } from './output.js';
5
+ /**
6
+ * Format duration for human readability
7
+ * @param ms - Duration in milliseconds
8
+ * @returns Formatted duration string (e.g., "500ms", "1.5s", "1.5m")
9
+ */
10
+ export function formatDuration(ms) {
11
+ if (ms < 1000) {
12
+ return `${ms}ms`;
13
+ }
14
+ if (ms < 60000) {
15
+ return `${(ms / 1000).toFixed(1)}s`;
16
+ }
17
+ return `${(ms / 60000).toFixed(1)}m`;
18
+ }
19
+ /**
20
+ * Handle command error with standard formatting and exit
21
+ * @param error - The error that occurred
22
+ * @param logger - Logger instance for error output
23
+ * @param startTime - Command start time (from Date.now())
24
+ * @param commandName - Name of the command (for error message)
25
+ */
26
+ export function handleCommandError(error, logger, startTime, commandName) {
27
+ const duration = Date.now() - startTime;
28
+ logger.error(`${commandName} failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
29
+ writeYamlOutput({
30
+ status: 'error',
31
+ error: error instanceof Error ? error.message : 'Unknown error',
32
+ duration: formatDuration(duration),
33
+ });
34
+ process.exit(2);
35
+ }
36
+ //# sourceMappingURL=command-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-error.js","sourceRoot":"","sources":["../../src/utils/command-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,EAAE,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,MAAc,EACd,SAAiB,EACjB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAEnG,eAAe,CAAC;QACd,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;QAC/D,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;KACnC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Configuration file loading and validation
3
+ */
4
+ import { type ProjectConfig } from '../schemas/config.js';
5
+ /**
6
+ * Load and validate project configuration
7
+ * @param projectRoot - Project root directory
8
+ * @returns Validated configuration or default if not found
9
+ * @throws Error if config file exists but is invalid
10
+ */
11
+ export declare function loadConfig(projectRoot: string): ProjectConfig;
12
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI/F;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA6B7D"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Configuration file loading and validation
3
+ */
4
+ import { readFileSync, existsSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import * as yaml from 'js-yaml';
7
+ import { ProjectConfigSchema, DEFAULT_CONFIG } from '../schemas/config.js';
8
+ const CONFIG_FILENAME = 'vibe-agent-toolkit.config.yaml';
9
+ /**
10
+ * Load and validate project configuration
11
+ * @param projectRoot - Project root directory
12
+ * @returns Validated configuration or default if not found
13
+ * @throws Error if config file exists but is invalid
14
+ */
15
+ export function loadConfig(projectRoot) {
16
+ const configPath = join(projectRoot, CONFIG_FILENAME);
17
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- configPath is derived from projectRoot parameter
18
+ if (!existsSync(configPath)) {
19
+ return DEFAULT_CONFIG;
20
+ }
21
+ try {
22
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- configPath is derived from projectRoot parameter
23
+ const content = readFileSync(configPath, 'utf-8');
24
+ const parsed = yaml.load(content);
25
+ // Validate with Zod schema
26
+ const result = ProjectConfigSchema.safeParse(parsed);
27
+ if (!result.success) {
28
+ throw new Error(`Invalid configuration file: ${result.error.message}`);
29
+ }
30
+ return result.data;
31
+ }
32
+ catch (error) {
33
+ if (error instanceof Error) {
34
+ throw new Error(`Failed to load config: ${error.message}`);
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAE/F,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAEtD,uHAAuH;IACvH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,uHAAuH;QACvH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,2BAA2B;QAC3B,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CACtD,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Help loader - reads verbose help from markdown files
3
+ * Markdown docs are the source of truth for CLI help
4
+ */
5
+ /**
6
+ * Load verbose help from markdown files in packages/cli/docs/
7
+ *
8
+ * @param section - Optional section name (e.g., 'resources'). If not provided, loads index.md
9
+ * @returns Markdown content as string
10
+ */
11
+ export declare function loadVerboseHelp(section?: string): string;
12
+ //# sourceMappingURL=help-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-loader.d.ts","sourceRoot":"","sources":["../../src/utils/help-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBxD"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Help loader - reads verbose help from markdown files
3
+ * Markdown docs are the source of truth for CLI help
4
+ */
5
+ import { readFileSync } from 'node:fs';
6
+ import { dirname, join } from 'node:path';
7
+ import { fileURLToPath } from 'node:url';
8
+ /**
9
+ * Load verbose help from markdown files in packages/cli/docs/
10
+ *
11
+ * @param section - Optional section name (e.g., 'resources'). If not provided, loads index.md
12
+ * @returns Markdown content as string
13
+ */
14
+ export function loadVerboseHelp(section) {
15
+ // Get package root (packages/cli/)
16
+ const __dirname = dirname(fileURLToPath(import.meta.url));
17
+ const packageRoot = join(__dirname, '../..');
18
+ // Determine which markdown file to load
19
+ const filename = section ? `${section}.md` : 'index.md';
20
+ const helpPath = join(packageRoot, 'docs', filename);
21
+ try {
22
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- path is constructed from known safe components
23
+ const content = readFileSync(helpPath, 'utf-8');
24
+ return content;
25
+ }
26
+ catch (error) {
27
+ // Fallback if markdown file not found
28
+ const errorMessage = error instanceof Error ? error.message : String(error);
29
+ return `# Help Documentation Not Found
30
+
31
+ Error loading help from ${helpPath}
32
+
33
+ ${errorMessage}
34
+
35
+ Please report this issue at: https://github.com/jdutton/vibe-agent-toolkit/issues
36
+ `;
37
+ }
38
+ }
39
+ //# sourceMappingURL=help-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-loader.js","sourceRoot":"","sources":["../../src/utils/help-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,mCAAmC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE7C,wCAAwC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,qHAAqH;QACrH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;QACtC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;;0BAEe,QAAQ;;EAEhC,YAAY;;;CAGb,CAAC;IACA,CAAC;AACH,CAAC"}