astro-dev-mcp 0.6.0 → 0.7.1

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 (51) hide show
  1. package/dist/editors/appJsEditor.d.ts.map +1 -1
  2. package/dist/editors/appJsEditor.js +4 -2
  3. package/dist/editors/appJsEditor.js.map +1 -1
  4. package/dist/editors/commonEditor.d.ts +0 -4
  5. package/dist/editors/commonEditor.d.ts.map +1 -1
  6. package/dist/editors/commonEditor.js +3 -2
  7. package/dist/editors/commonEditor.js.map +1 -1
  8. package/dist/editors/scssVariablesEditor.d.ts +0 -4
  9. package/dist/editors/scssVariablesEditor.d.ts.map +1 -1
  10. package/dist/editors/scssVariablesEditor.js +3 -2
  11. package/dist/editors/scssVariablesEditor.js.map +1 -1
  12. package/dist/index.js +54 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/parsers/excelParser.d.ts.map +1 -1
  15. package/dist/parsers/excelParser.js +29 -6
  16. package/dist/parsers/excelParser.js.map +1 -1
  17. package/dist/templates/pageTemplates.js +6 -2
  18. package/dist/templates/pageTemplates.js.map +1 -1
  19. package/dist/templates/sectionTemplates.js +21 -21
  20. package/dist/templates/sectionTemplates.js.map +1 -1
  21. package/dist/templates/uiPatterns.js +76 -1
  22. package/dist/templates/uiPatterns.js.map +1 -1
  23. package/dist/tools/generateComponent.d.ts.map +1 -1
  24. package/dist/tools/generateComponent.js +8 -2
  25. package/dist/tools/generateComponent.js.map +1 -1
  26. package/dist/tools/generatePage.d.ts.map +1 -1
  27. package/dist/tools/generatePage.js +18 -4
  28. package/dist/tools/generatePage.js.map +1 -1
  29. package/dist/tools/generateSchema.d.ts.map +1 -1
  30. package/dist/tools/generateSchema.js +9 -1
  31. package/dist/tools/generateSchema.js.map +1 -1
  32. package/dist/tools/generateSection.d.ts.map +1 -1
  33. package/dist/tools/generateSection.js +10 -1
  34. package/dist/tools/generateSection.js.map +1 -1
  35. package/dist/tools/getComponentInterface.d.ts +11 -0
  36. package/dist/tools/getComponentInterface.d.ts.map +1 -0
  37. package/dist/tools/getComponentInterface.js +111 -0
  38. package/dist/tools/getComponentInterface.js.map +1 -0
  39. package/dist/tools/getProjectContext.d.ts +10 -0
  40. package/dist/tools/getProjectContext.d.ts.map +1 -0
  41. package/dist/tools/getProjectContext.js +175 -0
  42. package/dist/tools/getProjectContext.js.map +1 -0
  43. package/dist/utils/projectContext.d.ts +6 -0
  44. package/dist/utils/projectContext.d.ts.map +1 -0
  45. package/dist/utils/projectContext.js +72 -0
  46. package/dist/utils/projectContext.js.map +1 -0
  47. package/dist/utils/security.d.ts +16 -0
  48. package/dist/utils/security.d.ts.map +1 -0
  49. package/dist/utils/security.js +37 -0
  50. package/dist/utils/security.js.map +1 -0
  51. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"generateComponent.d.ts","sourceRoot":"","sources":["../../src/tools/generateComponent.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;GAiEhD"}
1
+ {"version":3,"file":"generateComponent.d.ts","sourceRoot":"","sources":["../../src/tools/generateComponent.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;GAsEhD"}
@@ -3,12 +3,16 @@ import { generateScss } from "../generators/scssGenerator.js";
3
3
  import { formatCode } from "../utils/formatter.js";
4
4
  import { writeFileSync, mkdirSync } from "fs";
5
5
  import { resolve, dirname } from "path";
6
+ import { getGenerationContext } from "../utils/projectContext.js";
7
+ import { validateName, assertPathWithinProject } from "../utils/security.js";
6
8
  /**
7
9
  * Astroコンポーネント生成ツール
8
10
  */
9
11
  export async function generateComponent(args) {
10
12
  const { componentName, props, design = {}, accessibility = true, projectRoot = process.cwd(), } = args;
11
13
  try {
14
+ // 入力バリデーション
15
+ validateName(componentName, "コンポーネント名");
12
16
  const writeLogs = [];
13
17
  // 1. Astroコンポーネント生成
14
18
  const astroCode = await generateAstroComponent({
@@ -24,9 +28,11 @@ export async function generateComponent(args) {
24
28
  // 3. コード整形
25
29
  const formattedAstro = await formatCode(astroCode, "astro");
26
30
  const formattedScss = await formatCode(scssCode, "scss");
27
- // 4. ファイルパス解決
31
+ // 4. ファイルパス解決 & 境界チェック
28
32
  const astroPath = resolve(projectRoot, `src/components/${componentName}.astro`);
29
33
  const scssPath = resolve(projectRoot, `src/scss/components/_c_${toSnakeCase(componentName)}.scss`);
34
+ assertPathWithinProject(astroPath, projectRoot);
35
+ assertPathWithinProject(scssPath, projectRoot);
30
36
  // 5. ディレクトリ作成 & ファイル書き込み
31
37
  try {
32
38
  // Astroコンポーネント
@@ -45,7 +51,7 @@ export async function generateComponent(args) {
45
51
  content: [
46
52
  {
47
53
  type: "text",
48
- text: `✅ コンポーネント「${componentName}」を生成しました\n\n### ファイル出力\n${writeLogs.join("\n")}\n\n## Astroコンポーネント\n\`\`\`astro\n${formattedAstro}\n\`\`\`\n\n## SCSS\n\`\`\`scss\n${formattedScss}\n\`\`\``,
54
+ text: `✅ コンポーネント「${componentName}」を生成しました\n\n### ファイル出力\n${writeLogs.join("\n")}\n\n## Astroコンポーネント\n\`\`\`astro\n${formattedAstro}\n\`\`\`\n\n## SCSS\n\`\`\`scss\n${formattedScss}\n\`\`\`${getGenerationContext(projectRoot)}`,
49
55
  },
50
56
  ],
51
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generateComponent.js","sourceRoot":"","sources":["../../src/tools/generateComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAcxC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAS;IAC/C,MAAM,EACJ,aAAa,EACb,KAAK,EACL,MAAM,GAAG,EAAE,EACX,aAAa,GAAG,IAAI,EACpB,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,GAC5B,GAAG,IAAqB,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,oBAAoB;QACpB,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC;YAC7C,IAAI,EAAE,aAAa;YACnB,KAAK;YACL,aAAa;SACd,CAAC,CAAC;QAEH,YAAY;QACZ,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YAClC,IAAI,EAAE,aAAa;YACnB,MAAM;SACP,CAAC,CAAC;QAEH,WAAW;QACX,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEzD,cAAc;QACd,MAAM,SAAS,GAAG,OAAO,CACvB,WAAW,EACX,kBAAkB,aAAa,QAAQ,CACxC,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,CACtB,WAAW,EACX,0BAA0B,WAAW,CAAC,aAAa,CAAC,OAAO,CAC5D,CAAC;QAEF,yBAAyB;QACzB,IAAI,CAAC;YACH,eAAe;YACf,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;YAEjC,WAAW;YACX,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa,aAAa,2BAA2B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,cAAc,oCAAoC,aAAa,UAAU;iBAC9L;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"generateComponent.js","sourceRoot":"","sources":["../../src/tools/generateComponent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generatePage.d.ts","sourceRoot":"","sources":["../../src/tools/generatePage.ts"],"names":[],"mappings":"AAuCA;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,GAAG;;;;;GA6H3C"}
1
+ {"version":3,"file":"generatePage.d.ts","sourceRoot":"","sources":["../../src/tools/generatePage.ts"],"names":[],"mappings":"AAyCA;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,GAAG;;;;;GAiJ3C"}
@@ -5,12 +5,17 @@ import { updateCommonAstro, } from "../editors/commonEditor.js";
5
5
  import { updateScssVariables, } from "../editors/scssVariablesEditor.js";
6
6
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
7
7
  import { resolve, dirname } from "path";
8
+ import { getGenerationContext } from "../utils/projectContext.js";
9
+ import { validateName, assertPathWithinProject } from "../utils/security.js";
8
10
  /**
9
11
  * ページ生成ツール(サイト設定更新統合版)
10
12
  */
11
13
  export async function generatePage(args) {
12
14
  const { pageName, prompt, pageData, sections, siteConfig, scssConfig, projectRoot = process.cwd(), } = args;
13
15
  try {
16
+ // 入力バリデーション
17
+ validateName(pageName, "ページ名");
18
+ sections.forEach((s) => validateName(s, "セクション名"));
14
19
  const updateLogs = [];
15
20
  // ページタイプ自動判定
16
21
  let pageType;
@@ -66,7 +71,15 @@ export async function generatePage(args) {
66
71
  updateLogs.push(`⚠️ _variables.scss が見つかりません: ${scssPath}`);
67
72
  }
68
73
  }
69
- // 3. ページテンプレート生成
74
+ // 3. セクションファイルの存在チェック
75
+ const missingSections = sections.filter((section) => {
76
+ const partPath = resolve(projectRoot, `src/pages/_parts/_${pageName}/_${section}.astro`);
77
+ return !existsSync(partPath);
78
+ });
79
+ if (missingSections.length > 0) {
80
+ updateLogs.push(`⚠️ 以下のセクションファイルが未作成です:\n${missingSections.map((s) => ` - _${s}.astro`).join("\n")}\n → 先に generate-section で作成することを推奨します`);
81
+ }
82
+ // 4. ページテンプレート生成
70
83
  const pageCode = generatePageTemplate({
71
84
  pageName,
72
85
  pageType,
@@ -75,9 +88,10 @@ export async function generatePage(args) {
75
88
  });
76
89
  // コード整形
77
90
  const formatted = await formatCode(pageCode, "astro");
78
- // 4. ファイルパス解決
91
+ // 5. ファイルパス解決 & 境界チェック
79
92
  const pagePath = resolve(projectRoot, `src/pages/${pageName}/index.astro`);
80
- // 5. ページファイル書き込み
93
+ assertPathWithinProject(pagePath, projectRoot);
94
+ // 6. ページファイル書き込み
81
95
  try {
82
96
  mkdirSync(dirname(pagePath), { recursive: true });
83
97
  writeFileSync(pagePath, formatted, "utf-8");
@@ -94,7 +108,7 @@ export async function generatePage(args) {
94
108
  content: [
95
109
  {
96
110
  type: "text",
97
- text: `${updateSection}### ページ生成\n✅ ページ「${pageName}」を生成しました\n\n\`\`\`astro\n${formatted}\n\`\`\`\n\n### 必要なセクション\n${sections.map((s) => `- \`src/pages/_parts/_${pageName}/_${s}.astro\``).join("\n")}`,
111
+ text: `${updateSection}### ページ生成\n✅ ページ「${pageName}」を生成しました\n\n\`\`\`astro\n${formatted}\n\`\`\`\n\n### 必要なセクション\n${sections.map((s) => `- \`src/pages/_parts/_${pageName}/_${s}.astro\``).join("\n")}${getGenerationContext(projectRoot)}`,
98
112
  },
99
113
  ],
100
114
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generatePage.js","sourceRoot":"","sources":["../../src/tools/generatePage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generatePage.js","sourceRoot":"","sources":["../../src/tools/generatePage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateSchema.d.ts","sourceRoot":"","sources":["../../src/tools/generateSchema.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,GAAG;;;;;GA0C7C"}
1
+ {"version":3,"file":"generateSchema.d.ts","sourceRoot":"","sources":["../../src/tools/generateSchema.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,GAAG;;;;;GAiD7C"}
@@ -2,12 +2,15 @@ import { parseExcel } from "../parsers/excelParser.js";
2
2
  import { parseMarkdown } from "../parsers/markdownParser.js";
3
3
  import { generateTypeDefinition } from "../generators/typeGenerator.js";
4
4
  import { formatCode } from "../utils/formatter.js";
5
+ import { validateName } from "../utils/security.js";
5
6
  /**
6
7
  * スキーマ生成ツール
7
8
  */
8
9
  export async function generateSchema(args) {
9
10
  const { sourceType, sourceData, schemaName } = args;
10
11
  try {
12
+ // 入力バリデーション
13
+ validateName(schemaName, "スキーマ名");
11
14
  let parsedData;
12
15
  // データソースに応じてパース
13
16
  switch (sourceType) {
@@ -18,7 +21,12 @@ export async function generateSchema(args) {
18
21
  parsedData = await parseMarkdown(sourceData);
19
22
  break;
20
23
  case "json":
21
- parsedData = JSON.parse(sourceData);
24
+ try {
25
+ parsedData = JSON.parse(sourceData);
26
+ }
27
+ catch {
28
+ throw new Error("無効なJSONデータです");
29
+ }
22
30
  break;
23
31
  case "text":
24
32
  // テキストから構造を推測
@@ -1 +1 @@
1
- {"version":3,"file":"generateSchema.js","sourceRoot":"","sources":["../../src/tools/generateSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAS;IAC5C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAkB,CAAC;IAElE,IAAI,CAAC;QACH,IAAI,UAAe,CAAC;QAEpB,gBAAgB;QAChB,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,OAAO;gBACV,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,UAAU;gBACb,UAAU,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,MAAM;gBACT,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,MAAM;gBACT,cAAc;gBACd,UAAU,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBAChD,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,kBAAkB;QAClB,MAAM,cAAc,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEtE,QAAQ;QACR,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,UAAU,iCAAiC,SAAS,sDAAsD,UAAU,+BAA+B;iBACpK;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,uBAAuB;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACjE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"generateSchema.js","sourceRoot":"","sources":["../../src/tools/generateSchema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateSection.d.ts","sourceRoot":"","sources":["../../src/tools/generateSection.ts"],"names":[],"mappings":"AAyCA;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG;;;;;GA6I9C"}
1
+ {"version":3,"file":"generateSection.d.ts","sourceRoot":"","sources":["../../src/tools/generateSection.ts"],"names":[],"mappings":"AA2CA;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG;;;;;GAqJ9C"}
@@ -5,12 +5,18 @@ import { generateScssPattern } from '../templates/scssPatterns.js';
5
5
  import { getRequiredScripts, updateAppJs, needsAppJsUpdate, } from '../editors/appJsEditor.js';
6
6
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
7
7
  import { resolve, dirname } from 'path';
8
+ import { getGenerationContext } from '../utils/projectContext.js';
9
+ import { validateName, assertPathWithinProject } from '../utils/security.js';
8
10
  /**
9
11
  * セクション生成ツール(SCSS生成・app.js更新統合版)
10
12
  */
11
13
  export async function generateSection(args) {
12
14
  const { prompt, sectionType, uiPattern, pageName, content, components = [], generateScss = true, scssOptions = {}, projectRoot = process.cwd(), } = args;
13
15
  try {
16
+ // 入力バリデーション
17
+ validateName(pageName, 'ページ名');
18
+ if (sectionType)
19
+ validateName(sectionType, 'セクション種類');
14
20
  const updateLogs = [];
15
21
  let finalSectionType;
16
22
  let finalUIPattern;
@@ -68,9 +74,11 @@ export async function generateSection(args) {
68
74
  options: scssOptions,
69
75
  });
70
76
  }
71
- // 4. ファイルパス解決
77
+ // 4. ファイルパス解決 & 境界チェック
72
78
  const astroPath = resolve(projectRoot, `src/pages/_parts/_${pageName}/_${finalSectionType}.astro`);
73
79
  const scssPath = resolve(projectRoot, `src/scss/pages/_${pageName}.scss`);
80
+ assertPathWithinProject(astroPath, projectRoot);
81
+ assertPathWithinProject(scssPath, projectRoot);
74
82
  // 5. ファイル書き込み
75
83
  try {
76
84
  // Astroセクションファイル
@@ -104,6 +112,7 @@ export async function generateSection(args) {
104
112
  if (scssCode) {
105
113
  resultText += `\n\n#### SCSSファイル\n\`\`\`scss\n${scssCode}\n\`\`\``;
106
114
  }
115
+ resultText += getGenerationContext(projectRoot);
107
116
  return {
108
117
  content: [
109
118
  {
@@ -1 +1 @@
1
- {"version":3,"file":"generateSection.js","sourceRoot":"","sources":["../../src/tools/generateSection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EACN,kBAAkB,EAClB,WAAW,EACX,gBAAgB,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA8BxC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAS;IAC9C,MAAM,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,OAAO,EACP,UAAU,GAAG,EAAE,EACf,YAAY,GAAG,IAAI,EACnB,WAAW,GAAG,EAAE,EAChB,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,GAC3B,GAAG,IAAmB,CAAC;IAExB,IAAI,CAAC;QACJ,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,gBAAwB,CAAC;QAC7B,IAAI,cAAkC,CAAC;QAEvC,qBAAqB;QACrB,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC1C,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC;YACtC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;YAElC,aAAa;YACb,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CACd,qBAAqB,MAAM,CAAC,UAAU,OAAO,MAAM,GAAG,CACtD,CAAC;YACH,CAAC;QACF,CAAC;aAAM,CAAC;YACP,mBAAmB;YACnB,gBAAgB,GAAG,WAAY,CAAC;YAChC,cAAc,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,oCAAoC;QACpC,IAAI,cAAc,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAExD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAEzD,IAAI,gBAAgB,CAAC,eAAe,EAAE,cAA2B,CAAC,EAAE,CAAC;oBACpE,MAAM,eAAe,GAAG,kBAAkB,CACzC,cAA2B,CAC3B,CAAC;oBACF,MAAM,cAAc,GAAG,WAAW,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;oBAErE,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;oBAClD,UAAU,CAAC,IAAI,CACd,wBAAwB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACP,UAAU,CAAC,IAAI,CACd,8BAA8B,CAC9B,CAAC;gBACH,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,IAAI,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;QAED,mBAAmB;QACnB,MAAM,WAAW,GAAG,uBAAuB,CAAC;YAC3C,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,cAAqB;YAChC,QAAQ;YACR,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,UAAU;SACV,CAAC,CAAC;QAEH,QAAQ;QACR,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE9D,mBAAmB;QACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;YACpC,QAAQ,GAAG,mBAAmB,CAAC;gBAC9B,OAAO,EAAE,cAA2B;gBACpC,QAAQ;gBACR,WAAW,EAAE,gBAAgB;gBAC7B,OAAO,EAAE,WAAW;aACpB,CAAC,CAAC;QACJ,CAAC;QAED,cAAc;QACd,MAAM,SAAS,GAAG,OAAO,CACxB,WAAW,EACX,qBAAqB,QAAQ,KAAK,gBAAgB,QAAQ,CAC1D,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,mBAAmB,QAAQ,OAAO,CAAC,CAAC;QAE1E,cAAc;QACd,IAAI,CAAC;YACJ,iBAAiB;YACjB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAClD,UAAU,CAAC,IAAI,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;YAE/C,sBAAsB;YACtB,IAAI,QAAQ,EAAE,CAAC;gBACd,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,YAAY;oBACZ,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACxD,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACtE,UAAU,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACP,OAAO;oBACP,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC3C,UAAU,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,aAAa;QACb,MAAM,aAAa,GAClB,UAAU,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,iBAAiB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;YAC9C,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,UAAU,GAAG,GAAG,aAAa,wBAAwB,gBAAgB,SAAS,cAAc,IAAI,OAAO,+CAA+C,cAAc,UAAU,CAAC;QAEnL,IAAI,QAAQ,EAAE,CAAC;YACd,UAAU,IAAI,kCAAkC,QAAQ,UAAU,CAAC;QACpE,CAAC;QAED,OAAO;YACN,OAAO,EAAE;gBACR;oBACC,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU;iBAChB;aACD;SACD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"generateSection.js","sourceRoot":"","sources":["../../src/tools/generateSection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * コンポーネントインターフェース取得ツール
3
+ * .astroファイルの---フェンス内からProps interfaceを抽出して返す
4
+ */
5
+ export declare function getComponentInterface(args: any): Promise<{
6
+ content: {
7
+ type: string;
8
+ text: string;
9
+ }[];
10
+ }>;
11
+ //# sourceMappingURL=getComponentInterface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getComponentInterface.d.ts","sourceRoot":"","sources":["../../src/tools/getComponentInterface.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,GAAG;;;;;GA6EpD"}
@@ -0,0 +1,111 @@
1
+ import { readFileSync, existsSync, readdirSync } from "fs";
2
+ import { resolve, basename } from "path";
3
+ import { validateName, assertPathWithinProject } from "../utils/security.js";
4
+ /**
5
+ * コンポーネントインターフェース取得ツール
6
+ * .astroファイルの---フェンス内からProps interfaceを抽出して返す
7
+ */
8
+ export async function getComponentInterface(args) {
9
+ const { componentName, projectRoot = process.cwd() } = args;
10
+ const componentsDir = resolve(projectRoot, "src/components");
11
+ if (!existsSync(componentsDir)) {
12
+ return {
13
+ content: [
14
+ {
15
+ type: "text",
16
+ text: "⚠️ src/components/ ディレクトリが見つかりません",
17
+ },
18
+ ],
19
+ };
20
+ }
21
+ // 特定コンポーネント指定の場合
22
+ if (componentName) {
23
+ const rawName = componentName.endsWith(".astro")
24
+ ? componentName.slice(0, -6)
25
+ : componentName;
26
+ validateName(rawName, "コンポーネント名");
27
+ const fileName = `${rawName}.astro`;
28
+ const filePath = resolve(componentsDir, fileName);
29
+ assertPathWithinProject(filePath, projectRoot);
30
+ if (!existsSync(filePath)) {
31
+ return {
32
+ content: [
33
+ {
34
+ type: "text",
35
+ text: `⚠️ コンポーネントが見つかりません: ${fileName}`,
36
+ },
37
+ ],
38
+ };
39
+ }
40
+ const summary = extractComponentSummary(filePath);
41
+ return {
42
+ content: [
43
+ {
44
+ type: "text",
45
+ text: formatSummary(summary),
46
+ },
47
+ ],
48
+ };
49
+ }
50
+ // 全コンポーネント一括取得
51
+ const files = readdirSync(componentsDir).filter((f) => f.endsWith(".astro"));
52
+ if (files.length === 0) {
53
+ return {
54
+ content: [
55
+ {
56
+ type: "text",
57
+ text: "ℹ️ src/components/ にAstroコンポーネントがありません",
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ const summaries = files.map((file) => extractComponentSummary(resolve(componentsDir, file)));
63
+ const output = summaries.map(formatSummary).join("\n\n---\n\n");
64
+ return {
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: `## コンポーネント一覧(${summaries.length}件)\n\n${output}`,
69
+ },
70
+ ],
71
+ };
72
+ }
73
+ /**
74
+ * .astroファイルからProps interfaceとJSDocコメントを抽出
75
+ */
76
+ function extractComponentSummary(filePath) {
77
+ const name = basename(filePath, ".astro");
78
+ const content = readFileSync(filePath, "utf-8");
79
+ // ---フェンス内を抽出
80
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
81
+ if (!frontmatterMatch) {
82
+ return { name, props: "(Props定義なし)", description: "" };
83
+ }
84
+ const frontmatter = frontmatterMatch[1];
85
+ // Props interface を抽出(interface Props { ... } のブロック全体)
86
+ const propsMatch = frontmatter.match(/interface\s+Props\s*\{([\s\S]*?)^\}/m);
87
+ const props = propsMatch
88
+ ? `interface Props {${propsMatch[1]}}`
89
+ : "(Props定義なし)";
90
+ // JSDocコメントを抽出(Props直前の /** ... */ )
91
+ const jsdocMatch = frontmatter.match(/\/\*\*[\s\S]*?\*\/\s*(?=\n\s*interface\s+Props)/);
92
+ const description = jsdocMatch
93
+ ? jsdocMatch[0]
94
+ .replace(/\/\*\*|\*\//g, "")
95
+ .replace(/^\s*\*\s?/gm, "")
96
+ .trim()
97
+ : "";
98
+ return { name, props, description };
99
+ }
100
+ /**
101
+ * サマリーを整形して返す
102
+ */
103
+ function formatSummary(summary) {
104
+ const lines = [`### ${summary.name}`];
105
+ if (summary.description) {
106
+ lines.push(summary.description);
107
+ }
108
+ lines.push(`\`\`\`typescript\n${summary.props}\n\`\`\``);
109
+ return lines.join("\n");
110
+ }
111
+ //# sourceMappingURL=getComponentInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getComponentInterface.js","sourceRoot":"","sources":["../../src/tools/getComponentInterface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * プロジェクトコンテキスト取得ツール
3
+ */
4
+ export declare function getProjectContext(args: any): Promise<{
5
+ content: {
6
+ type: string;
7
+ text: string;
8
+ }[];
9
+ }>;
10
+ //# sourceMappingURL=getProjectContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProjectContext.d.ts","sourceRoot":"","sources":["../../src/tools/getProjectContext.ts"],"names":[],"mappings":"AA0FA;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;GAmEhD"}
@@ -0,0 +1,175 @@
1
+ import { readFileSync, existsSync, readdirSync, statSync } from "fs";
2
+ import { resolve } from "path";
3
+ import { assertPathWithinProject, escapeRegExp } from "../utils/security.js";
4
+ /**
5
+ * デフォルトのAstro開発規約(ai-context.md が見つからない場合のフォールバック)
6
+ */
7
+ const DEFAULT_CONTEXT = `# Astro-dev プロジェクト規約
8
+
9
+ ## ディレクトリ構造
10
+ - src/layouts/ - レイアウトテンプレート(Layout.astro, Common.astro)
11
+ - src/components/ - 再利用可能なコンポーネント
12
+ - src/pages/ - ページファイル({pageName}/index.astro)
13
+ - src/pages/_parts/ - ページセクション(_{pageName}/_{section}.astro)
14
+ - src/scss/ - スタイルシート
15
+ - abstracts/ - 変数・ミックスイン(_variables.scss, _mixins.scss)
16
+ - components/ - コンポーネント用SCSS(_c_{name}.scss)
17
+ - pages/ - ページ用SCSS(_{pageName}.scss)
18
+ - src/js/ - JavaScript(app.js がエントリーポイント)
19
+ - public/_assets/img/ - 画像ファイル
20
+
21
+ ## コーディング規約
22
+ - テキスト出力: set:html={data.ttl} を使用(HTMLタグ対応のため)
23
+ - 画像: <img>ではなくPictureコンポーネントを使用
24
+ - コンテンツ幅: section > .contentInner でラップ
25
+ - Props: セクションコンポーネントは常に data で受け取る
26
+ - CSSクラス: スネークスタイル(.tech_card)、状態・子要素はケバブ(.tech_card-active)
27
+ - レスポンシブ: モバイルファースト、@include mq() でPC対応
28
+ - target="_blank": rel="noopener noreferrer" は不要(モダンブラウザで暗黙適用)
29
+
30
+ ## データ駆動設計
31
+ - ページデータは const page = { head, breadcrumbs, contents } で定義
32
+ - セクションには data={page.contents.xxx} で渡す
33
+ - imgPath は "/_assets/img/" + page.head.slug + "/" で定義
34
+
35
+ ## 使用可能なUIパターン
36
+ tab, accordion, grid, carousel, list, modal
37
+ (上記以外はフォールバックで自動生成)
38
+
39
+ ## 技術スタック
40
+ - Astro(SSG)
41
+ - SCSS(Tailwind不使用)
42
+ - TypeScript
43
+ - カスタムmixin: @include mq(), @include hover(), @include fontsize()
44
+ `;
45
+ /**
46
+ * プロジェクト構造をスキャンして返す
47
+ */
48
+ function scanProjectStructure(projectRoot) {
49
+ const structure = {};
50
+ const scanDir = (dir, key, depth = 1) => {
51
+ const fullPath = resolve(projectRoot, dir);
52
+ if (!existsSync(fullPath))
53
+ return;
54
+ try {
55
+ const entries = readdirSync(fullPath);
56
+ structure[key] = entries
57
+ .filter((e) => {
58
+ // 不要なディレクトリ・ファイルを除外
59
+ if (e.startsWith(".") || e === "node_modules")
60
+ return false;
61
+ if (depth === 0)
62
+ return !statSync(resolve(fullPath, e)).isDirectory();
63
+ return true;
64
+ })
65
+ .map((e) => {
66
+ const entryPath = resolve(fullPath, e);
67
+ const isDir = statSync(entryPath).isDirectory();
68
+ return isDir ? `${e}/` : e;
69
+ });
70
+ }
71
+ catch {
72
+ // 読み込みエラーは無視
73
+ }
74
+ };
75
+ scanDir("src/layouts", "layouts");
76
+ scanDir("src/components", "components");
77
+ scanDir("src/pages", "pages");
78
+ scanDir("src/scss/abstracts", "scss/abstracts");
79
+ scanDir("src/scss/components", "scss/components");
80
+ scanDir("src/scss/pages", "scss/pages");
81
+ scanDir("src/js", "js", 0);
82
+ return structure;
83
+ }
84
+ /**
85
+ * プロジェクトコンテキスト取得ツール
86
+ */
87
+ export async function getProjectContext(args) {
88
+ const { projectRoot = process.cwd() } = args;
89
+ const sections = [];
90
+ // 1. コーディング規約の読み込み(優先順位順)
91
+ const contextFiles = ["ai-context.md", ".cursorrules"];
92
+ let rulesSource = "";
93
+ let rulesContent = "";
94
+ for (const file of contextFiles) {
95
+ const filePath = resolve(projectRoot, file);
96
+ assertPathWithinProject(filePath, projectRoot);
97
+ if (existsSync(filePath)) {
98
+ try {
99
+ rulesContent = readFileSync(filePath, "utf-8")
100
+ .replace(/\n{3,}/g, "\n\n") // 3行以上の空行を2行に
101
+ .trim();
102
+ rulesSource = file;
103
+ break;
104
+ }
105
+ catch {
106
+ // 読み込みエラーは次のファイルへ
107
+ }
108
+ }
109
+ }
110
+ if (rulesContent) {
111
+ sections.push(`## コーディング規約(${rulesSource} より)\n${rulesContent}`);
112
+ }
113
+ else {
114
+ sections.push(DEFAULT_CONTEXT.trim());
115
+ }
116
+ // 2. プロジェクト構造のスキャン
117
+ const structure = scanProjectStructure(projectRoot);
118
+ if (Object.keys(structure).length > 0) {
119
+ const structureLines = Object.entries(structure)
120
+ .map(([dir, files]) => `### ${dir}\n${files.map((f) => `- ${f}`).join("\n")}`)
121
+ .join("\n\n");
122
+ sections.push(`## プロジェクト構造\n${structureLines}`);
123
+ }
124
+ // 3. SCSS変数の要約(存在する場合)
125
+ const variablesPath = resolve(projectRoot, "src/scss/abstracts/_variables.scss");
126
+ if (existsSync(variablesPath)) {
127
+ try {
128
+ const varsContent = readFileSync(variablesPath, "utf-8");
129
+ const summary = extractScssVariablesSummary(varsContent);
130
+ if (summary) {
131
+ sections.push(`## SCSS変数(_variables.scss)\n${summary}`);
132
+ }
133
+ }
134
+ catch {
135
+ // 読み込みエラーは無視
136
+ }
137
+ }
138
+ return {
139
+ content: [
140
+ {
141
+ type: "text",
142
+ text: sections.join("\n\n---\n\n"),
143
+ },
144
+ ],
145
+ };
146
+ }
147
+ /**
148
+ * SCSS変数ファイルからカラー・レイアウト・フォントサイズの要約を抽出
149
+ */
150
+ function extractScssVariablesSummary(content) {
151
+ const lines = [];
152
+ // カラー変数
153
+ const colorMatches = content.match(/\$color-[\w-]+:\s*[^;]+;/g);
154
+ if (colorMatches) {
155
+ lines.push("### カラー", ...colorMatches.map((m) => `- ${m.trim()}`));
156
+ }
157
+ // レイアウト変数
158
+ const layoutVars = ["$brakePoint", "$containerSize", "$containerPadding"];
159
+ const layoutMatches = layoutVars
160
+ .map((v) => {
161
+ const match = content.match(new RegExp(`${escapeRegExp(v)}:\\s*[^;]+;`));
162
+ return match ? `- ${match[0].trim()}` : null;
163
+ })
164
+ .filter(Boolean);
165
+ if (layoutMatches.length > 0) {
166
+ lines.push("### レイアウト", ...layoutMatches);
167
+ }
168
+ // フォントサイズ変数
169
+ const fontMatches = content.match(/\$font-[\w-]+:\s*[^;]+;/g);
170
+ if (fontMatches) {
171
+ lines.push("### フォントサイズ", ...fontMatches.map((m) => `- ${m.trim()}`));
172
+ }
173
+ return lines.join("\n");
174
+ }
175
+ //# sourceMappingURL=getProjectContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProjectContext.js","sourceRoot":"","sources":["../../src/tools/getProjectContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * generate-* ツール実行時にレスポンスへ自動注入するプロジェクト規約を取得
3
+ * get-project-context の完全版とは異なり、生成に直接関わる最小限の情報のみ返す
4
+ */
5
+ export declare function getGenerationContext(projectRoot: string): string;
6
+ //# sourceMappingURL=projectContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectContext.d.ts","sourceRoot":"","sources":["../../src/utils/projectContext.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBhE"}