@lousy-agents/cli 2.0.0 → 2.2.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 (181) hide show
  1. package/dist/145.js +29 -0
  2. package/dist/145.js.map +1 -0
  3. package/dist/190.js +1765 -0
  4. package/dist/190.js.map +1 -0
  5. package/dist/255.js +1850 -0
  6. package/dist/255.js.map +1 -0
  7. package/dist/31.js +127 -0
  8. package/dist/31.js.map +1 -0
  9. package/dist/399.js +13 -0
  10. package/dist/399.js.map +1 -0
  11. package/dist/610.js +254 -0
  12. package/dist/610.js.map +1 -0
  13. package/dist/651.js +39 -0
  14. package/dist/651.js.map +1 -0
  15. package/dist/659.js +16 -0
  16. package/dist/659.js.map +1 -0
  17. package/dist/709.js +47 -0
  18. package/dist/709.js.map +1 -0
  19. package/dist/835.js +298 -0
  20. package/dist/835.js.map +1 -0
  21. package/dist/index.js +30651 -9
  22. package/dist/index.js.map +1 -1
  23. package/dist/mcp-server.js +46530 -5
  24. package/dist/mcp-server.js.map +1 -1
  25. package/package.json +4 -2
  26. package/dist/commands/copilot-setup.d.ts +0 -5
  27. package/dist/commands/copilot-setup.d.ts.map +0 -1
  28. package/dist/commands/copilot-setup.js +0 -97
  29. package/dist/commands/copilot-setup.js.map +0 -1
  30. package/dist/commands/init.d.ts +0 -13
  31. package/dist/commands/init.d.ts.map +0 -1
  32. package/dist/commands/init.js +0 -109
  33. package/dist/commands/init.js.map +0 -1
  34. package/dist/commands/new.d.ts +0 -21
  35. package/dist/commands/new.d.ts.map +0 -1
  36. package/dist/commands/new.js +0 -94
  37. package/dist/commands/new.js.map +0 -1
  38. package/dist/entities/copilot-agent.d.ts +0 -15
  39. package/dist/entities/copilot-agent.d.ts.map +0 -1
  40. package/dist/entities/copilot-agent.js +0 -53
  41. package/dist/entities/copilot-agent.js.map +0 -1
  42. package/dist/entities/copilot-setup.d.ts +0 -65
  43. package/dist/entities/copilot-setup.d.ts.map +0 -1
  44. package/dist/entities/copilot-setup.js +0 -6
  45. package/dist/entities/copilot-setup.js.map +0 -1
  46. package/dist/entities/index.d.ts +0 -7
  47. package/dist/entities/index.d.ts.map +0 -1
  48. package/dist/entities/index.js +0 -7
  49. package/dist/entities/index.js.map +0 -1
  50. package/dist/entities/skill.d.ts +0 -15
  51. package/dist/entities/skill.d.ts.map +0 -1
  52. package/dist/entities/skill.js +0 -63
  53. package/dist/entities/skill.js.map +0 -1
  54. package/dist/gateways/action-version-gateway.d.ts +0 -39
  55. package/dist/gateways/action-version-gateway.d.ts.map +0 -1
  56. package/dist/gateways/action-version-gateway.js +0 -47
  57. package/dist/gateways/action-version-gateway.js.map +0 -1
  58. package/dist/gateways/agent-file-gateway.d.ts +0 -50
  59. package/dist/gateways/agent-file-gateway.d.ts.map +0 -1
  60. package/dist/gateways/agent-file-gateway.js +0 -34
  61. package/dist/gateways/agent-file-gateway.js.map +0 -1
  62. package/dist/gateways/environment-gateway.d.ts +0 -30
  63. package/dist/gateways/environment-gateway.d.ts.map +0 -1
  64. package/dist/gateways/environment-gateway.js +0 -56
  65. package/dist/gateways/environment-gateway.js.map +0 -1
  66. package/dist/gateways/file-system-utils.d.ts +0 -8
  67. package/dist/gateways/file-system-utils.d.ts.map +0 -1
  68. package/dist/gateways/file-system-utils.js +0 -17
  69. package/dist/gateways/file-system-utils.js.map +0 -1
  70. package/dist/gateways/file-system-workflow-gateway.d.ts +0 -27
  71. package/dist/gateways/file-system-workflow-gateway.d.ts.map +0 -1
  72. package/dist/gateways/file-system-workflow-gateway.js +0 -99
  73. package/dist/gateways/file-system-workflow-gateway.js.map +0 -1
  74. package/dist/gateways/index.d.ts +0 -10
  75. package/dist/gateways/index.d.ts.map +0 -1
  76. package/dist/gateways/index.js +0 -10
  77. package/dist/gateways/index.js.map +0 -1
  78. package/dist/gateways/skill-file-gateway.d.ts +0 -59
  79. package/dist/gateways/skill-file-gateway.d.ts.map +0 -1
  80. package/dist/gateways/skill-file-gateway.js +0 -37
  81. package/dist/gateways/skill-file-gateway.js.map +0 -1
  82. package/dist/gateways/workflow-gateway.d.ts +0 -43
  83. package/dist/gateways/workflow-gateway.d.ts.map +0 -1
  84. package/dist/gateways/workflow-gateway.js +0 -6
  85. package/dist/gateways/workflow-gateway.js.map +0 -1
  86. package/dist/index.d.ts +0 -3
  87. package/dist/index.d.ts.map +0 -1
  88. package/dist/lib/config.d.ts +0 -28
  89. package/dist/lib/config.d.ts.map +0 -1
  90. package/dist/lib/config.js +0 -406
  91. package/dist/lib/config.js.map +0 -1
  92. package/dist/lib/copilot-setup-config.d.ts +0 -79
  93. package/dist/lib/copilot-setup-config.d.ts.map +0 -1
  94. package/dist/lib/copilot-setup-config.js +0 -119
  95. package/dist/lib/copilot-setup-config.js.map +0 -1
  96. package/dist/lib/filesystem-structure.d.ts +0 -45
  97. package/dist/lib/filesystem-structure.d.ts.map +0 -1
  98. package/dist/lib/filesystem-structure.js +0 -69
  99. package/dist/lib/filesystem-structure.js.map +0 -1
  100. package/dist/lib/mcp-test-client.d.ts +0 -43
  101. package/dist/lib/mcp-test-client.d.ts.map +0 -1
  102. package/dist/lib/mcp-test-client.js +0 -167
  103. package/dist/lib/mcp-test-client.js.map +0 -1
  104. package/dist/lib/project-name-validation.d.ts +0 -43
  105. package/dist/lib/project-name-validation.d.ts.map +0 -1
  106. package/dist/lib/project-name-validation.js +0 -131
  107. package/dist/lib/project-name-validation.js.map +0 -1
  108. package/dist/mcp/index.d.ts +0 -5
  109. package/dist/mcp/index.d.ts.map +0 -1
  110. package/dist/mcp/index.js +0 -5
  111. package/dist/mcp/index.js.map +0 -1
  112. package/dist/mcp/server.d.ts +0 -15
  113. package/dist/mcp/server.d.ts.map +0 -1
  114. package/dist/mcp/server.js +0 -120
  115. package/dist/mcp/server.js.map +0 -1
  116. package/dist/mcp/tools/analyze-action-versions.d.ts +0 -9
  117. package/dist/mcp/tools/analyze-action-versions.d.ts.map +0 -1
  118. package/dist/mcp/tools/analyze-action-versions.js +0 -81
  119. package/dist/mcp/tools/analyze-action-versions.js.map +0 -1
  120. package/dist/mcp/tools/create-copilot-setup-workflow.d.ts +0 -9
  121. package/dist/mcp/tools/create-copilot-setup-workflow.d.ts.map +0 -1
  122. package/dist/mcp/tools/create-copilot-setup-workflow.js +0 -121
  123. package/dist/mcp/tools/create-copilot-setup-workflow.js.map +0 -1
  124. package/dist/mcp/tools/discover-environment.d.ts +0 -9
  125. package/dist/mcp/tools/discover-environment.d.ts.map +0 -1
  126. package/dist/mcp/tools/discover-environment.js +0 -30
  127. package/dist/mcp/tools/discover-environment.js.map +0 -1
  128. package/dist/mcp/tools/discover-workflow-setup-actions.d.ts +0 -9
  129. package/dist/mcp/tools/discover-workflow-setup-actions.d.ts.map +0 -1
  130. package/dist/mcp/tools/discover-workflow-setup-actions.js +0 -37
  131. package/dist/mcp/tools/discover-workflow-setup-actions.js.map +0 -1
  132. package/dist/mcp/tools/index.d.ts +0 -11
  133. package/dist/mcp/tools/index.d.ts.map +0 -1
  134. package/dist/mcp/tools/index.js +0 -11
  135. package/dist/mcp/tools/index.js.map +0 -1
  136. package/dist/mcp/tools/read-copilot-setup-workflow.d.ts +0 -9
  137. package/dist/mcp/tools/read-copilot-setup-workflow.d.ts.map +0 -1
  138. package/dist/mcp/tools/read-copilot-setup-workflow.js +0 -38
  139. package/dist/mcp/tools/read-copilot-setup-workflow.js.map +0 -1
  140. package/dist/mcp/tools/resolve-action-versions.d.ts +0 -10
  141. package/dist/mcp/tools/resolve-action-versions.d.ts.map +0 -1
  142. package/dist/mcp/tools/resolve-action-versions.js +0 -61
  143. package/dist/mcp/tools/resolve-action-versions.js.map +0 -1
  144. package/dist/mcp/tools/types.d.ts +0 -67
  145. package/dist/mcp/tools/types.d.ts.map +0 -1
  146. package/dist/mcp/tools/types.js +0 -24
  147. package/dist/mcp/tools/types.js.map +0 -1
  148. package/dist/mcp-server.d.ts +0 -7
  149. package/dist/mcp-server.d.ts.map +0 -1
  150. package/dist/use-cases/action-resolution.d.ts +0 -66
  151. package/dist/use-cases/action-resolution.d.ts.map +0 -1
  152. package/dist/use-cases/action-resolution.js +0 -107
  153. package/dist/use-cases/action-resolution.js.map +0 -1
  154. package/dist/use-cases/candidate-builder.d.ts +0 -17
  155. package/dist/use-cases/candidate-builder.d.ts.map +0 -1
  156. package/dist/use-cases/candidate-builder.js +0 -67
  157. package/dist/use-cases/candidate-builder.js.map +0 -1
  158. package/dist/use-cases/copilot-setup.d.ts +0 -8
  159. package/dist/use-cases/copilot-setup.d.ts.map +0 -1
  160. package/dist/use-cases/copilot-setup.js +0 -10
  161. package/dist/use-cases/copilot-setup.js.map +0 -1
  162. package/dist/use-cases/create-copilot-agent.d.ts +0 -29
  163. package/dist/use-cases/create-copilot-agent.d.ts.map +0 -1
  164. package/dist/use-cases/create-copilot-agent.js +0 -73
  165. package/dist/use-cases/create-copilot-agent.js.map +0 -1
  166. package/dist/use-cases/create-skill.d.ts +0 -30
  167. package/dist/use-cases/create-skill.d.ts.map +0 -1
  168. package/dist/use-cases/create-skill.js +0 -75
  169. package/dist/use-cases/create-skill.js.map +0 -1
  170. package/dist/use-cases/index.d.ts +0 -10
  171. package/dist/use-cases/index.d.ts.map +0 -1
  172. package/dist/use-cases/index.js +0 -10
  173. package/dist/use-cases/index.js.map +0 -1
  174. package/dist/use-cases/setup-step-discovery.d.ts +0 -87
  175. package/dist/use-cases/setup-step-discovery.d.ts.map +0 -1
  176. package/dist/use-cases/setup-step-discovery.js +0 -202
  177. package/dist/use-cases/setup-step-discovery.js.map +0 -1
  178. package/dist/use-cases/workflow-generator.d.ts +0 -34
  179. package/dist/use-cases/workflow-generator.d.ts.map +0 -1
  180. package/dist/use-cases/workflow-generator.js +0 -195
  181. package/dist/use-cases/workflow-generator.js.map +0 -1
@@ -1,119 +0,0 @@
1
- /**
2
- * Configuration for the copilot-setup command.
3
- * Uses c12 for configuration loading, allowing runtime customization.
4
- */
5
- import { loadConfig } from "c12";
6
- /**
7
- * Default version file mappings
8
- */
9
- const DEFAULT_VERSION_FILES = [
10
- { filename: ".nvmrc", type: "node" },
11
- { filename: ".node-version", type: "node" },
12
- { filename: ".python-version", type: "python" },
13
- { filename: ".java-version", type: "java" },
14
- { filename: ".ruby-version", type: "ruby" },
15
- { filename: ".go-version", type: "go" },
16
- ];
17
- /**
18
- * Default setup action configurations
19
- */
20
- const DEFAULT_SETUP_ACTIONS = [
21
- {
22
- action: "actions/setup-node",
23
- type: "node",
24
- versionFileKey: "node-version-file",
25
- },
26
- {
27
- action: "actions/setup-python",
28
- type: "python",
29
- versionFileKey: "python-version-file",
30
- },
31
- {
32
- action: "actions/setup-java",
33
- type: "java",
34
- versionFileKey: "java-version-file",
35
- },
36
- {
37
- action: "actions/setup-ruby",
38
- type: "ruby",
39
- versionFileKey: "ruby-version-file",
40
- },
41
- {
42
- action: "actions/setup-go",
43
- type: "go",
44
- versionFileKey: "go-version-file",
45
- },
46
- ];
47
- /**
48
- * Default setup action patterns to detect in workflows
49
- */
50
- const DEFAULT_SETUP_ACTION_PATTERNS = [
51
- "actions/setup-node",
52
- "actions/setup-python",
53
- "actions/setup-java",
54
- "actions/setup-go",
55
- "actions/setup-ruby",
56
- "jdx/mise-action",
57
- ];
58
- /**
59
- * Default copilot-setup configuration
60
- */
61
- const DEFAULT_CONFIG = {
62
- versionFiles: DEFAULT_VERSION_FILES,
63
- setupActions: DEFAULT_SETUP_ACTIONS,
64
- setupActionPatterns: DEFAULT_SETUP_ACTION_PATTERNS,
65
- };
66
- /**
67
- * Loads the copilot-setup configuration using c12
68
- * Falls back to defaults if no configuration is found
69
- */
70
- export async function loadCopilotSetupConfig() {
71
- const { config } = await loadConfig({
72
- name: "lousy-agents",
73
- defaults: DEFAULT_CONFIG,
74
- packageJson: "copilotSetup",
75
- });
76
- return config || DEFAULT_CONFIG;
77
- }
78
- /**
79
- * Resets the cached configuration (useful for testing)
80
- *
81
- * This function is retained for backwards compatibility but is a no-op
82
- * because configuration is no longer cached at module scope.
83
- */
84
- export function resetCopilotSetupConfigCache() {
85
- // no in-memory cache to reset
86
- }
87
- /**
88
- * Gets a version file type to action mapping from config
89
- * Returns a partial record as not all types may be configured
90
- */
91
- export function getVersionTypeToActionMap(config) {
92
- const map = {};
93
- for (const action of config.setupActions) {
94
- map[action.type] = action.action;
95
- }
96
- return map;
97
- }
98
- /**
99
- * Gets a version file type to config key mapping from config
100
- * Returns a partial record as not all types may be configured
101
- */
102
- export function getVersionFileConfigKeyMap(config) {
103
- const map = {};
104
- for (const action of config.setupActions) {
105
- map[action.type] = action.versionFileKey;
106
- }
107
- return map;
108
- }
109
- /**
110
- * Gets a filename to version type mapping from config
111
- */
112
- export function getVersionFilenameToTypeMap(config) {
113
- const map = {};
114
- for (const file of config.versionFiles) {
115
- map[file.filename] = file.type;
116
- }
117
- return map;
118
- }
119
- //# sourceMappingURL=copilot-setup-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot-setup-config.js","sourceRoot":"","sources":["../../src/lib/copilot-setup-config.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Template context for processing template variables in file content
3
- */
4
- export interface TemplateContext {
5
- projectName: string;
6
- }
7
- /**
8
- * Represents a file to be created in the filesystem
9
- */
10
- export interface FileNode {
11
- type: "file";
12
- path: string;
13
- content: string;
14
- }
15
- /**
16
- * Represents a directory to be created in the filesystem
17
- */
18
- export interface DirectoryNode {
19
- type: "directory";
20
- path: string;
21
- }
22
- /**
23
- * Union type for filesystem nodes
24
- */
25
- export type FilesystemNode = FileNode | DirectoryNode;
26
- /**
27
- * Declarative filesystem structure definition
28
- */
29
- export interface FilesystemStructure {
30
- nodes: FilesystemNode[];
31
- }
32
- /**
33
- * Checks if a file or directory exists
34
- */
35
- export declare function fileExists(path: string): Promise<boolean>;
36
- /**
37
- * Creates the filesystem structure defined by the given structure definition
38
- * Preserves existing files and directories without modification
39
- * Automatically creates parent directories for files
40
- * @param structure The declarative filesystem structure to create
41
- * @param targetDir The base directory where the structure should be created
42
- * @param templateContext Optional context for processing template variables in file content
43
- */
44
- export declare function createFilesystemStructure(structure: FilesystemStructure, targetDir: string, templateContext?: TemplateContext): Promise<void>;
45
- //# sourceMappingURL=filesystem-structure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem-structure.d.ts","sourceRoot":"","sources":["../../src/lib/filesystem-structure.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAsBD;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC3C,SAAS,EAAE,mBAAmB,EAC9B,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,eAAe,GAClC,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -1,69 +0,0 @@
1
- import { access, mkdir, writeFile } from "node:fs/promises";
2
- import { dirname, join } from "node:path";
3
- import { consola } from "consola";
4
- import { Eta } from "eta";
5
- /**
6
- * Checks if a file or directory exists
7
- */
8
- export async function fileExists(path) {
9
- try {
10
- await access(path);
11
- return true;
12
- }
13
- catch {
14
- return false;
15
- }
16
- }
17
- /**
18
- * Singleton Eta instance for template processing
19
- */
20
- const eta = new Eta();
21
- /**
22
- * Processes template content using Eta templating engine
23
- * @param content The template content to process
24
- * @param context The template context with values to substitute
25
- * @returns The processed content with template variables replaced
26
- */
27
- function processTemplate(content, context) {
28
- try {
29
- return eta.renderString(content, context);
30
- }
31
- catch (error) {
32
- const message = error instanceof Error ? error.message : String(error);
33
- throw new Error(`Template processing failed: ${message}`);
34
- }
35
- }
36
- /**
37
- * Creates the filesystem structure defined by the given structure definition
38
- * Preserves existing files and directories without modification
39
- * Automatically creates parent directories for files
40
- * @param structure The declarative filesystem structure to create
41
- * @param targetDir The base directory where the structure should be created
42
- * @param templateContext Optional context for processing template variables in file content
43
- */
44
- export async function createFilesystemStructure(structure, targetDir, templateContext) {
45
- for (const node of structure.nodes) {
46
- const fullPath = join(targetDir, node.path);
47
- // Skip if already exists to preserve existing files/directories
48
- if (await fileExists(fullPath)) {
49
- consola.debug(`Skipping existing: ${fullPath}`);
50
- continue;
51
- }
52
- if (node.type === "directory") {
53
- await mkdir(fullPath, { recursive: true });
54
- consola.debug(`Created directory: ${fullPath}`);
55
- }
56
- else if (node.type === "file") {
57
- // Create parent directories if they don't exist
58
- const dir = dirname(fullPath);
59
- await mkdir(dir, { recursive: true });
60
- // Process template if context is provided
61
- const content = templateContext
62
- ? processTemplate(node.content, templateContext)
63
- : node.content;
64
- await writeFile(fullPath, content, "utf-8");
65
- consola.debug(`Created file: ${fullPath}`);
66
- }
67
- }
68
- }
69
- //# sourceMappingURL=filesystem-structure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem-structure.js","sourceRoot":"","sources":["../../src/lib/filesystem-structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAsC1B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IACzC,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAEtB;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,OAAwB;IAC9D,IAAI,CAAC;QACD,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,SAA8B,EAC9B,SAAiB,EACjB,eAAiC;IAEjC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5C,gEAAgE;QAChE,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;YAChD,SAAS;QACb,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,gDAAgD;YAChD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,0CAA0C;YAC1C,MAAM,OAAO,GAAG,eAAe;gBAC3B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAEnB,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -1,43 +0,0 @@
1
- /**
2
- * MCP test client for integration testing.
3
- *
4
- * This client communicates with an MCP server process via stdio,
5
- * sending JSON-RPC messages and receiving responses.
6
- */
7
- /**
8
- * MCP client for testing.
9
- * Sends JSON-RPC messages to the MCP server and receives responses.
10
- */
11
- export declare class McpTestClient {
12
- private process;
13
- private messageId;
14
- private responseBuffer;
15
- private pendingResponses;
16
- private isStarted;
17
- /**
18
- * Starts the MCP server process.
19
- */
20
- start(): Promise<void>;
21
- private processResponses;
22
- /**
23
- * Sends a JSON-RPC request to the MCP server.
24
- */
25
- sendRequest(method: string, params?: unknown): Promise<unknown>;
26
- /**
27
- * Sends an initialize request to the MCP server.
28
- */
29
- initialize(): Promise<unknown>;
30
- /**
31
- * Lists all available tools from the MCP server.
32
- */
33
- listTools(): Promise<unknown>;
34
- /**
35
- * Calls a tool on the MCP server.
36
- */
37
- callTool(name: string, args: Record<string, unknown>): Promise<unknown>;
38
- /**
39
- * Stops the MCP server process.
40
- */
41
- stop(): void;
42
- }
43
- //# sourceMappingURL=mcp-test-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-test-client.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-test-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;;GAGG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,gBAAgB,CAGV;IACd,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA2CrE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAQpC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC;;OAEG;IACG,QAAQ,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC;IAInB;;OAEG;IACH,IAAI,IAAI,IAAI;CAYf"}
@@ -1,167 +0,0 @@
1
- /**
2
- * MCP test client for integration testing.
3
- *
4
- * This client communicates with an MCP server process via stdio,
5
- * sending JSON-RPC messages and receiving responses.
6
- */
7
- import { spawn } from "node:child_process";
8
- /**
9
- * Time to wait for the MCP server process to start and be ready
10
- * to accept connections. Allows for process initialization overhead.
11
- */
12
- const SERVER_STARTUP_DELAY_MS = 100;
13
- /**
14
- * Maximum time to wait for a response from the MCP server
15
- * before considering the request timed out.
16
- */
17
- const REQUEST_TIMEOUT_MS = 5000;
18
- /**
19
- * MCP client for testing.
20
- * Sends JSON-RPC messages to the MCP server and receives responses.
21
- */
22
- export class McpTestClient {
23
- process = null;
24
- messageId = 0;
25
- responseBuffer = "";
26
- pendingResponses = new Map();
27
- isStarted = false;
28
- /**
29
- * Starts the MCP server process.
30
- */
31
- async start() {
32
- return new Promise((resolve, reject) => {
33
- // Start the MCP server using the built dist file
34
- this.process = spawn("node", ["dist/mcp-server.js"], {
35
- cwd: process.cwd(),
36
- stdio: ["pipe", "pipe", "pipe"],
37
- });
38
- if (!this.process.stdout || !this.process.stdin) {
39
- reject(new Error("Failed to create process streams"));
40
- return;
41
- }
42
- // Handle stdout data
43
- this.process.stdout.on("data", (data) => {
44
- this.responseBuffer += data.toString();
45
- this.processResponses();
46
- });
47
- // Handle stderr for debugging
48
- this.process.stderr?.on("data", (data) => {
49
- // Log errors but don't fail - stderr is expected for some operations
50
- console.error("MCP server stderr:", data.toString());
51
- });
52
- this.process.on("error", (error) => {
53
- reject(error);
54
- });
55
- this.process.on("exit", () => {
56
- this.isStarted = false;
57
- });
58
- this.isStarted = true;
59
- // Give the server a moment to start
60
- setTimeout(resolve, SERVER_STARTUP_DELAY_MS);
61
- });
62
- }
63
- processResponses() {
64
- // Try to parse complete JSON-RPC messages
65
- const lines = this.responseBuffer.split("\n");
66
- for (let i = 0; i < lines.length - 1; i++) {
67
- const line = lines[i].trim();
68
- if (line) {
69
- try {
70
- const response = JSON.parse(line);
71
- if (response.id !== undefined) {
72
- const pending = this.pendingResponses.get(response.id);
73
- if (pending) {
74
- this.pendingResponses.delete(response.id);
75
- if (response.error) {
76
- pending.reject(new Error(response.error.message));
77
- }
78
- else {
79
- pending.resolve(response.result);
80
- }
81
- }
82
- }
83
- }
84
- catch {
85
- // Not a valid JSON line, skip
86
- }
87
- }
88
- }
89
- // Keep the last incomplete line in the buffer
90
- this.responseBuffer = lines[lines.length - 1];
91
- }
92
- /**
93
- * Sends a JSON-RPC request to the MCP server.
94
- */
95
- async sendRequest(method, params) {
96
- if (!this.process?.stdin || !this.isStarted) {
97
- throw new Error("MCP server not started");
98
- }
99
- const id = ++this.messageId;
100
- const request = {
101
- jsonrpc: "2.0",
102
- id,
103
- method,
104
- params: params || {},
105
- };
106
- return new Promise((resolve, reject) => {
107
- this.pendingResponses.set(id, { resolve, reject });
108
- // Set a timeout
109
- const timeout = setTimeout(() => {
110
- this.pendingResponses.delete(id);
111
- reject(new Error(`Request timeout for ${method}`));
112
- }, REQUEST_TIMEOUT_MS);
113
- // Check if stdin is still writable before writing
114
- if (!this.process?.stdin?.writable) {
115
- clearTimeout(timeout);
116
- this.pendingResponses.delete(id);
117
- reject(new Error("MCP server stdin is not writable"));
118
- return;
119
- }
120
- this.process.stdin.write(`${JSON.stringify(request)}\n`, (error) => {
121
- if (error) {
122
- clearTimeout(timeout);
123
- this.pendingResponses.delete(id);
124
- reject(error);
125
- }
126
- });
127
- });
128
- }
129
- /**
130
- * Sends an initialize request to the MCP server.
131
- */
132
- async initialize() {
133
- return this.sendRequest("initialize", {
134
- protocolVersion: "2024-11-05",
135
- capabilities: {},
136
- clientInfo: { name: "test-client", version: "1.0.0" },
137
- });
138
- }
139
- /**
140
- * Lists all available tools from the MCP server.
141
- */
142
- async listTools() {
143
- return this.sendRequest("tools/list", {});
144
- }
145
- /**
146
- * Calls a tool on the MCP server.
147
- */
148
- async callTool(name, args) {
149
- return this.sendRequest("tools/call", { name, arguments: args });
150
- }
151
- /**
152
- * Stops the MCP server process.
153
- */
154
- stop() {
155
- if (this.process) {
156
- this.isStarted = false;
157
- // Clear pending responses before killing
158
- for (const [id, pending] of this.pendingResponses) {
159
- pending.reject(new Error("MCP server stopped"));
160
- this.pendingResponses.delete(id);
161
- }
162
- this.process.kill();
163
- this.process = null;
164
- }
165
- }
166
- }
167
- //# sourceMappingURL=mcp-test-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-test-client.js","sourceRoot":"","sources":["../../src/lib/mcp-test-client.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- /**
2
- * Project name validation utilities for npm/TypeScript projects.
3
- * This module provides validation for project names that can be reused
4
- * across different project types (webapp, CLI, probot, MCP server, etc.).
5
- */
6
- /**
7
- * Result of project name validation
8
- */
9
- export interface ProjectNameValidationResult {
10
- isValid: boolean;
11
- errorMessage?: string;
12
- }
13
- /**
14
- * Validates that a project name is a valid npm package name.
15
- * Supports both unscoped (e.g., "my-package") and scoped (e.g., "@scope/my-package") names.
16
- *
17
- * Based on npm naming rules:
18
- * - Lowercase only
19
- * - No spaces
20
- * - Can contain hyphens, underscores, periods, and numbers
21
- * - Unscoped names cannot start with . or _
22
- * - Maximum 214 characters
23
- *
24
- * @param name The project name to validate
25
- * @returns Validation result with isValid flag and optional error message
26
- */
27
- export declare function validateProjectName(name: string): ProjectNameValidationResult;
28
- /**
29
- * Simple boolean check for project name validity.
30
- * Use validateProjectName() when you need the error message.
31
- *
32
- * @param name The project name to validate
33
- * @returns true if the name is valid, false otherwise
34
- */
35
- export declare function isValidProjectName(name: string): boolean;
36
- /**
37
- * Gets a user-friendly error message for an invalid project name.
38
- *
39
- * @param name The project name that was validated
40
- * @returns Error message describing why the name is invalid, or undefined if valid
41
- */
42
- export declare function getProjectNameError(name: string): string | undefined;
43
- //# sourceMappingURL=project-name-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-name-validation.d.ts","sourceRoot":"","sources":["../../src/lib/project-name-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AA2HD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,CAa7E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE"}
@@ -1,131 +0,0 @@
1
- /**
2
- * Project name validation utilities for npm/TypeScript projects.
3
- * This module provides validation for project names that can be reused
4
- * across different project types (webapp, CLI, probot, MCP server, etc.).
5
- */
6
- /**
7
- * Pattern for valid npm package name segments (scope or package name)
8
- */
9
- const NPM_NAME_PATTERN = /^[a-z0-9][-a-z0-9._]*$/;
10
- /**
11
- * Maximum allowed length for npm package names
12
- */
13
- const MAX_NAME_LENGTH = 214;
14
- /**
15
- * Creates validation result from error message (undefined = valid)
16
- */
17
- const toResult = (errorMessage) => errorMessage ? { isValid: false, errorMessage } : { isValid: true };
18
- /**
19
- * Runs validation rules in order, returning first failure or success
20
- */
21
- const runValidationRules = (name, rules) => {
22
- for (const rule of rules) {
23
- const error = rule(name);
24
- if (error) {
25
- return toResult(error);
26
- }
27
- }
28
- return toResult(undefined);
29
- };
30
- // ============================================================================
31
- // Validation Rules
32
- // ============================================================================
33
- const requiredRule = (name) => !name || name.length === 0 ? "Project name is required" : undefined;
34
- const maxLengthRule = (name) => name.length > MAX_NAME_LENGTH
35
- ? "Project name must be 214 characters or less"
36
- : undefined;
37
- const noLeadingDotOrUnderscoreRule = (name) => name.startsWith(".") || name.startsWith("_")
38
- ? "Project name cannot start with . or _"
39
- : undefined;
40
- const validCharactersRule = (name) => !NPM_NAME_PATTERN.test(name)
41
- ? "Project name must be lowercase and can only contain letters, numbers, hyphens, underscores, and periods"
42
- : undefined;
43
- // ============================================================================
44
- // Scoped Package Validation
45
- // ============================================================================
46
- const validateScopedName = (name) => {
47
- const parts = name.split("/");
48
- const scopeFormatRule = () => parts.length !== 2
49
- ? "Scoped package name must be in format @scope/name"
50
- : undefined;
51
- const scopeNotEmptyRule = () => parts[0].length < 2 ? "Scope name cannot be empty" : undefined;
52
- const scopeValidRule = () => {
53
- const scope = parts[0].slice(1); // Remove leading @
54
- return !NPM_NAME_PATTERN.test(scope)
55
- ? "Scope must be lowercase and can only contain letters, numbers, hyphens, underscores, and periods"
56
- : undefined;
57
- };
58
- const packageNameNotEmptyRule = () => !parts[1] || parts[1].length === 0
59
- ? "Package name after scope cannot be empty"
60
- : undefined;
61
- const packageNameValidRule = () => !NPM_NAME_PATTERN.test(parts[1])
62
- ? "Package name must be lowercase and can only contain letters, numbers, hyphens, underscores, and periods"
63
- : undefined;
64
- const scopedRules = [
65
- scopeFormatRule,
66
- scopeNotEmptyRule,
67
- scopeValidRule,
68
- packageNameNotEmptyRule,
69
- packageNameValidRule,
70
- ];
71
- return runValidationRules(name, scopedRules);
72
- };
73
- // ============================================================================
74
- // Unscoped Package Validation
75
- // ============================================================================
76
- const validateUnscopedName = (name) => {
77
- const unscopedRules = [
78
- noLeadingDotOrUnderscoreRule,
79
- validCharactersRule,
80
- ];
81
- return runValidationRules(name, unscopedRules);
82
- };
83
- // ============================================================================
84
- // Main Validation Function
85
- // ============================================================================
86
- /**
87
- * Validates that a project name is a valid npm package name.
88
- * Supports both unscoped (e.g., "my-package") and scoped (e.g., "@scope/my-package") names.
89
- *
90
- * Based on npm naming rules:
91
- * - Lowercase only
92
- * - No spaces
93
- * - Can contain hyphens, underscores, periods, and numbers
94
- * - Unscoped names cannot start with . or _
95
- * - Maximum 214 characters
96
- *
97
- * @param name The project name to validate
98
- * @returns Validation result with isValid flag and optional error message
99
- */
100
- export function validateProjectName(name) {
101
- // Common rules that apply to all package names
102
- const commonRules = [requiredRule, maxLengthRule];
103
- const commonResult = runValidationRules(name, commonRules);
104
- if (!commonResult.isValid) {
105
- return commonResult;
106
- }
107
- // Route to scoped or unscoped validation
108
- return name.startsWith("@")
109
- ? validateScopedName(name)
110
- : validateUnscopedName(name);
111
- }
112
- /**
113
- * Simple boolean check for project name validity.
114
- * Use validateProjectName() when you need the error message.
115
- *
116
- * @param name The project name to validate
117
- * @returns true if the name is valid, false otherwise
118
- */
119
- export function isValidProjectName(name) {
120
- return validateProjectName(name).isValid;
121
- }
122
- /**
123
- * Gets a user-friendly error message for an invalid project name.
124
- *
125
- * @param name The project name that was validated
126
- * @returns Error message describing why the name is invalid, or undefined if valid
127
- */
128
- export function getProjectNameError(name) {
129
- return validateProjectName(name).errorMessage;
130
- }
131
- //# sourceMappingURL=project-name-validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-name-validation.js","sourceRoot":"","sources":["../../src/lib/project-name-validation.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * MCP Server exports
3
- */
4
- export { createMcpServer } from "./server.js";
5
- //# sourceMappingURL=index.d.ts.map