ethan-skill 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/cli/config.d.ts +26 -0
  2. package/dist/cli/config.d.ts.map +1 -0
  3. package/dist/cli/config.js +74 -0
  4. package/dist/cli/config.js.map +1 -0
  5. package/dist/cli/index.d.ts +1 -1
  6. package/dist/cli/index.js +363 -62
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/update-check.d.ts +11 -0
  9. package/dist/cli/update-check.d.ts.map +1 -0
  10. package/dist/cli/update-check.js +128 -0
  11. package/dist/cli/update-check.js.map +1 -0
  12. package/dist/context/detector.d.ts +25 -0
  13. package/dist/context/detector.d.ts.map +1 -0
  14. package/dist/context/detector.js +230 -0
  15. package/dist/context/detector.js.map +1 -0
  16. package/dist/ethan-skill-1.0.0.vsix +0 -0
  17. package/dist/ethan-skill-1.1.0.vsix +0 -0
  18. package/dist/loader/custom-skill-loader.d.ts +15 -0
  19. package/dist/loader/custom-skill-loader.d.ts.map +1 -0
  20. package/dist/loader/custom-skill-loader.js +158 -0
  21. package/dist/loader/custom-skill-loader.js.map +1 -0
  22. package/dist/server/dashboard.d.ts +2 -0
  23. package/dist/server/dashboard.d.ts.map +1 -0
  24. package/dist/server/dashboard.js +272 -0
  25. package/dist/server/dashboard.js.map +1 -0
  26. package/dist/skills/01-requirement.d.ts.map +1 -1
  27. package/dist/skills/01-requirement.js +4 -0
  28. package/dist/skills/01-requirement.js.map +1 -1
  29. package/dist/skills/02-task-breakdown.d.ts.map +1 -1
  30. package/dist/skills/02-task-breakdown.js +4 -0
  31. package/dist/skills/02-task-breakdown.js.map +1 -1
  32. package/dist/skills/03-design.d.ts.map +1 -1
  33. package/dist/skills/03-design.js +4 -0
  34. package/dist/skills/03-design.js.map +1 -1
  35. package/dist/skills/04-implementation.d.ts.map +1 -1
  36. package/dist/skills/04-implementation.js +4 -0
  37. package/dist/skills/04-implementation.js.map +1 -1
  38. package/dist/skills/05-progress-tracking.d.ts.map +1 -1
  39. package/dist/skills/05-progress-tracking.js +4 -0
  40. package/dist/skills/05-progress-tracking.js.map +1 -1
  41. package/dist/skills/06-task-report.d.ts.map +1 -1
  42. package/dist/skills/06-task-report.js +4 -0
  43. package/dist/skills/06-task-report.js.map +1 -1
  44. package/dist/skills/07-weekly-report.d.ts.map +1 -1
  45. package/dist/skills/07-weekly-report.js +3 -0
  46. package/dist/skills/07-weekly-report.js.map +1 -1
  47. package/dist/skills/08-code-review.d.ts.map +1 -1
  48. package/dist/skills/08-code-review.js +2 -0
  49. package/dist/skills/08-code-review.js.map +1 -1
  50. package/dist/skills/09-debug.d.ts.map +1 -1
  51. package/dist/skills/09-debug.js +3 -0
  52. package/dist/skills/09-debug.js.map +1 -1
  53. package/dist/skills/10-tech-research.d.ts.map +1 -1
  54. package/dist/skills/10-tech-research.js +4 -0
  55. package/dist/skills/10-tech-research.js.map +1 -1
  56. package/dist/skills/types.d.ts +4 -0
  57. package/dist/skills/types.d.ts.map +1 -1
  58. package/dist/templates/copilot-md.template.d.ts.map +1 -1
  59. package/dist/templates/copilot-md.template.js +107 -26
  60. package/dist/templates/copilot-md.template.js.map +1 -1
  61. package/dist/vscode/router/trigger-router.d.ts +16 -0
  62. package/dist/vscode/router/trigger-router.d.ts.map +1 -0
  63. package/dist/vscode/router/trigger-router.js +45 -0
  64. package/dist/vscode/router/trigger-router.js.map +1 -0
  65. package/dist/vscode/skills/01-requirement.d.ts +3 -0
  66. package/dist/vscode/skills/01-requirement.d.ts.map +1 -0
  67. package/dist/vscode/skills/01-requirement.js +104 -0
  68. package/dist/vscode/skills/01-requirement.js.map +1 -0
  69. package/dist/vscode/skills/02-task-breakdown.d.ts +3 -0
  70. package/dist/vscode/skills/02-task-breakdown.d.ts.map +1 -0
  71. package/dist/vscode/skills/02-task-breakdown.js +86 -0
  72. package/dist/vscode/skills/02-task-breakdown.js.map +1 -0
  73. package/dist/vscode/skills/03-design.d.ts +3 -0
  74. package/dist/vscode/skills/03-design.d.ts.map +1 -0
  75. package/dist/vscode/skills/03-design.js +84 -0
  76. package/dist/vscode/skills/03-design.js.map +1 -0
  77. package/dist/vscode/skills/04-implementation.d.ts +3 -0
  78. package/dist/vscode/skills/04-implementation.d.ts.map +1 -0
  79. package/dist/vscode/skills/04-implementation.js +81 -0
  80. package/dist/vscode/skills/04-implementation.js.map +1 -0
  81. package/dist/vscode/skills/05-progress-tracking.d.ts +3 -0
  82. package/dist/vscode/skills/05-progress-tracking.d.ts.map +1 -0
  83. package/dist/vscode/skills/05-progress-tracking.js +82 -0
  84. package/dist/vscode/skills/05-progress-tracking.js.map +1 -0
  85. package/dist/vscode/skills/06-task-report.d.ts +3 -0
  86. package/dist/vscode/skills/06-task-report.d.ts.map +1 -0
  87. package/dist/vscode/skills/06-task-report.js +79 -0
  88. package/dist/vscode/skills/06-task-report.js.map +1 -0
  89. package/dist/vscode/skills/07-weekly-report.d.ts +3 -0
  90. package/dist/vscode/skills/07-weekly-report.d.ts.map +1 -0
  91. package/dist/vscode/skills/07-weekly-report.js +104 -0
  92. package/dist/vscode/skills/07-weekly-report.js.map +1 -0
  93. package/dist/vscode/skills/08-code-review.d.ts +3 -0
  94. package/dist/vscode/skills/08-code-review.d.ts.map +1 -0
  95. package/dist/vscode/skills/08-code-review.js +138 -0
  96. package/dist/vscode/skills/08-code-review.js.map +1 -0
  97. package/dist/vscode/skills/09-debug.d.ts +3 -0
  98. package/dist/vscode/skills/09-debug.d.ts.map +1 -0
  99. package/dist/vscode/skills/09-debug.js +154 -0
  100. package/dist/vscode/skills/09-debug.js.map +1 -0
  101. package/dist/vscode/skills/10-tech-research.d.ts +3 -0
  102. package/dist/vscode/skills/10-tech-research.d.ts.map +1 -0
  103. package/dist/vscode/skills/10-tech-research.js +145 -0
  104. package/dist/vscode/skills/10-tech-research.js.map +1 -0
  105. package/dist/vscode/skills/index.d.ts +18 -0
  106. package/dist/vscode/skills/index.d.ts.map +1 -0
  107. package/dist/vscode/skills/index.js +51 -0
  108. package/dist/vscode/skills/index.js.map +1 -0
  109. package/dist/vscode/skills/pipeline.d.ts +15 -0
  110. package/dist/vscode/skills/pipeline.d.ts.map +1 -0
  111. package/dist/vscode/skills/pipeline.js +55 -0
  112. package/dist/vscode/skills/pipeline.js.map +1 -0
  113. package/dist/vscode/skills/types.d.ts +64 -0
  114. package/dist/vscode/skills/types.d.ts.map +1 -0
  115. package/dist/vscode/skills/types.js +7 -0
  116. package/dist/vscode/skills/types.js.map +1 -0
  117. package/dist/vscode/vscode/commands.d.ts +63 -0
  118. package/dist/vscode/vscode/commands.d.ts.map +1 -0
  119. package/dist/vscode/vscode/commands.js +428 -0
  120. package/dist/vscode/vscode/commands.js.map +1 -0
  121. package/dist/vscode/vscode/extension.d.ts +4 -0
  122. package/dist/vscode/vscode/extension.d.ts.map +1 -0
  123. package/dist/vscode/vscode/extension.js +103 -0
  124. package/dist/vscode/vscode/extension.js.map +1 -0
  125. package/package.json +7 -3
  126. package/rules/claude-code/CLAUDE.md +12 -12
  127. package/rules/cline/.clinerules +3 -3
  128. package/rules/codebuddy/CODEBUDDY.md +12 -12
  129. package/rules/continue/.continuerules +3 -3
  130. package/rules/copilot/copilot-instructions.md +12 -12
  131. package/rules/cursor/.cursorrules +12 -12
  132. package/rules/cursor/smart-flow.mdc +12 -12
  133. package/rules/jetbrains/smart-flow.md +12 -12
  134. package/rules/lingma/smart-flow.md +2 -2
  135. package/rules/windsurf/.windsurf/rules/smart-flow.md +12 -12
  136. package/rules/zed/smart-flow.rules +1 -1
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 整个架构的数据契约(Single Source of Truth)
3
+ * 所有平台的规则文件均从此接口生成
4
+ */
5
+ export interface SkillStep {
6
+ /** 步骤标题 */
7
+ title: string;
8
+ /** 步骤详细说明(Markdown 格式) */
9
+ content: string;
10
+ }
11
+ export interface SkillExample {
12
+ /** 示例输入/触发场景 */
13
+ input: string;
14
+ /** 示例输出/期望结果 */
15
+ output: string;
16
+ }
17
+ export interface SkillDefinition {
18
+ /** 唯一标识符,用于 MCP tool name 和文件名 */
19
+ id: string;
20
+ /** 显示名称(中文) */
21
+ name: string;
22
+ /** 英文名称,用于 MCP tool name */
23
+ nameEn: string;
24
+ /** 简短描述(一句话),用于 MCP tool description */
25
+ description: string;
26
+ /** English short description */
27
+ descriptionEn?: string;
28
+ /** 详细描述,用于规则文件头部 */
29
+ detailDescription: string;
30
+ /** 触发关键词列表(用于路由匹配) */
31
+ triggers: string[];
32
+ /** 执行步骤(有序) */
33
+ steps: SkillStep[];
34
+ /** 输出格式说明 */
35
+ outputFormat: string;
36
+ /** 使用示例(可选) */
37
+ examples?: SkillExample[];
38
+ /** 注意事项(可选) */
39
+ notes?: string[];
40
+ /** Skill 排序序号(1-based) */
41
+ order: number;
42
+ /** Skill 所属分类(可选) */
43
+ category?: '需求侧' | '执行侧' | '跟踪侧' | '输出侧' | '质量侧';
44
+ /** 推荐的下一个 Skill ID(可选) */
45
+ nextSkill?: string;
46
+ }
47
+ export type Platform = 'cursor-new' | 'cursor-old' | 'copilot' | 'cline' | 'lingma' | 'codebuddy' | 'windsurf' | 'zed' | 'jetbrains' | 'continue' | 'claude-code';
48
+ export interface PipelineDefinition {
49
+ id: string;
50
+ name: string;
51
+ description: string;
52
+ skillIds: string[];
53
+ }
54
+ export interface BuildContext {
55
+ platform: Platform;
56
+ skills: SkillDefinition[];
57
+ /** 生成时间(ISO 字符串) */
58
+ generatedAt: string;
59
+ /** 包版本 */
60
+ version: string;
61
+ /** 输出语言,默认 zh */
62
+ lang?: 'zh' | 'en';
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/skills/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe;IACf,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACjD,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,OAAO,GACP,QAAQ,GACR,WAAW,GACX,UAAU,GACV,KAAK,GACL,WAAW,GACX,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,oBAAoB;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * 整个架构的数据契约(Single Source of Truth)
4
+ * 所有平台的规则文件均从此接口生成
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/skills/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,63 @@
1
+ import * as vscode from 'vscode';
2
+ import type { SkillDefinition, PipelineDefinition } from '../skills/types';
3
+ /**
4
+ * A category grouping node in the Skills tree (e.g. "需求侧", "执行侧").
5
+ */
6
+ declare class CategoryTreeItem extends vscode.TreeItem {
7
+ readonly categoryName: string;
8
+ readonly skills: SkillDefinition[];
9
+ constructor(categoryName: string, skills: SkillDefinition[]);
10
+ }
11
+ /**
12
+ * A leaf node representing a single Skill in the Skills tree.
13
+ */
14
+ declare class SkillTreeItem extends vscode.TreeItem {
15
+ readonly skill: SkillDefinition;
16
+ constructor(skill: SkillDefinition);
17
+ }
18
+ /**
19
+ * A pipeline root node in the Pipelines tree.
20
+ */
21
+ declare class PipelineTreeItem extends vscode.TreeItem {
22
+ readonly pipeline: PipelineDefinition;
23
+ constructor(pipeline: PipelineDefinition);
24
+ }
25
+ /**
26
+ * A child node inside a pipeline showing a skill step.
27
+ */
28
+ declare class PipelineSkillStepItem extends vscode.TreeItem {
29
+ readonly skillId: string;
30
+ readonly index: number;
31
+ constructor(skillId: string, index: number);
32
+ }
33
+ /** Groups skills by category and exposes them as a VS Code tree. */
34
+ export declare class SkillTreeDataProvider implements vscode.TreeDataProvider<CategoryTreeItem | SkillTreeItem> {
35
+ private readonly _onDidChangeTreeData;
36
+ readonly onDidChangeTreeData: vscode.Event<void | CategoryTreeItem | SkillTreeItem | undefined>;
37
+ /** Force the tree to re-render. */
38
+ refresh(): void;
39
+ getTreeItem(element: CategoryTreeItem | SkillTreeItem): vscode.TreeItem;
40
+ getChildren(element?: CategoryTreeItem | SkillTreeItem): Array<CategoryTreeItem | SkillTreeItem>;
41
+ private _buildCategoryNodes;
42
+ }
43
+ /** Exposes pipelines as a VS Code tree with skill-step children. */
44
+ export declare class PipelineTreeDataProvider implements vscode.TreeDataProvider<PipelineTreeItem | PipelineSkillStepItem> {
45
+ private readonly _onDidChangeTreeData;
46
+ readonly onDidChangeTreeData: vscode.Event<void | PipelineTreeItem | PipelineSkillStepItem | undefined>;
47
+ refresh(): void;
48
+ getTreeItem(element: PipelineTreeItem | PipelineSkillStepItem): vscode.TreeItem;
49
+ getChildren(element?: PipelineTreeItem | PipelineSkillStepItem): Array<PipelineTreeItem | PipelineSkillStepItem>;
50
+ }
51
+ export declare function setExtensionPath(p: string): void;
52
+ export interface RegisterCommandsResult {
53
+ skillsProvider: SkillTreeDataProvider;
54
+ pipelinesProvider: PipelineTreeDataProvider;
55
+ statusBarItem: vscode.StatusBarItem;
56
+ }
57
+ /**
58
+ * Registers all Ethan commands and creates the sidebar providers and status bar item.
59
+ * Returns the providers so `extension.ts` can wire them up to tree views.
60
+ */
61
+ export declare function registerCommands(context: vscode.ExtensionContext): RegisterCommandsResult;
62
+ export {};
63
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/vscode/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAMjC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAM3E;;GAEG;AACH,cAAM,gBAAiB,SAAQ,MAAM,CAAC,QAAQ;aAE1B,YAAY,EAAE,MAAM;aACpB,MAAM,EAAE,eAAe,EAAE;gBADzB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,eAAe,EAAE;CAO5C;AAED;;GAEG;AACH,cAAM,aAAc,SAAQ,MAAM,CAAC,QAAQ;aACb,KAAK,EAAE,eAAe;gBAAtB,KAAK,EAAE,eAAe;CAcnD;AAED;;GAEG;AACH,cAAM,gBAAiB,SAAQ,MAAM,CAAC,QAAQ;aAChB,QAAQ,EAAE,kBAAkB;gBAA5B,QAAQ,EAAE,kBAAkB;CAOzD;AAED;;GAEG;AACH,cAAM,qBAAsB,SAAQ,MAAM,CAAC,QAAQ;aAE/B,OAAO,EAAE,MAAM;aACf,KAAK,EAAE,MAAM;gBADb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM;CAShC;AAMD,oEAAoE;AACpE,qBAAa,qBACX,YAAW,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,aAAa,CAAC;IAEpE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAEjC;IACJ,QAAQ,CAAC,mBAAmB,oEAAmC;IAE/D,mCAAmC;IACnC,OAAO,IAAI,IAAI;IAIf,WAAW,CACT,OAAO,EAAE,gBAAgB,GAAG,aAAa,GACxC,MAAM,CAAC,QAAQ;IAIlB,WAAW,CACT,OAAO,CAAC,EAAE,gBAAgB,GAAG,aAAa,GACzC,KAAK,CAAC,gBAAgB,GAAG,aAAa,CAAC;IAa1C,OAAO,CAAC,mBAAmB;CA4B5B;AAMD,oEAAoE;AACpE,qBAAa,wBACX,YACE,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;IAEnE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAEjC;IACJ,QAAQ,CAAC,mBAAmB,4EAAmC;IAE/D,OAAO,IAAI,IAAI;IAIf,WAAW,CACT,OAAO,EAAE,gBAAgB,GAAG,qBAAqB,GAChD,MAAM,CAAC,QAAQ;IAIlB,WAAW,CACT,OAAO,CAAC,EAAE,gBAAgB,GAAG,qBAAqB,GACjD,KAAK,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;CAenD;AAWD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAEhD;AA8PD,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,qBAAqB,CAAC;IACtC,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,gBAAgB,GAC/B,sBAAsB,CA0CxB"}
@@ -0,0 +1,428 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PipelineTreeDataProvider = exports.SkillTreeDataProvider = void 0;
37
+ exports.setExtensionPath = setExtensionPath;
38
+ exports.registerCommands = registerCommands;
39
+ const vscode = __importStar(require("vscode"));
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const cp = __importStar(require("child_process"));
43
+ const index_1 = require("../skills/index");
44
+ const pipeline_1 = require("../skills/pipeline");
45
+ // ---------------------------------------------------------------------------
46
+ // Tree item types
47
+ // ---------------------------------------------------------------------------
48
+ /**
49
+ * A category grouping node in the Skills tree (e.g. "需求侧", "执行侧").
50
+ */
51
+ class CategoryTreeItem extends vscode.TreeItem {
52
+ constructor(categoryName, skills) {
53
+ super(categoryName, vscode.TreeItemCollapsibleState.Expanded);
54
+ this.categoryName = categoryName;
55
+ this.skills = skills;
56
+ this.iconPath = new vscode.ThemeIcon('symbol-namespace');
57
+ this.contextValue = 'category';
58
+ this.description = `${skills.length} skills`;
59
+ }
60
+ }
61
+ /**
62
+ * A leaf node representing a single Skill in the Skills tree.
63
+ */
64
+ class SkillTreeItem extends vscode.TreeItem {
65
+ constructor(skill) {
66
+ super(skill.name, vscode.TreeItemCollapsibleState.None);
67
+ this.skill = skill;
68
+ this.description = skill.description;
69
+ this.tooltip = new vscode.MarkdownString(`**${skill.name}**\n\n${skill.detailDescription}`);
70
+ this.iconPath = new vscode.ThemeIcon('symbol-method');
71
+ this.contextValue = 'skill';
72
+ this.command = {
73
+ command: 'ethan.runSkill',
74
+ title: 'Run Skill',
75
+ arguments: [skill.id],
76
+ };
77
+ }
78
+ }
79
+ /**
80
+ * A pipeline root node in the Pipelines tree.
81
+ */
82
+ class PipelineTreeItem extends vscode.TreeItem {
83
+ constructor(pipeline) {
84
+ super(pipeline.name, vscode.TreeItemCollapsibleState.Collapsed);
85
+ this.pipeline = pipeline;
86
+ this.description = pipeline.description;
87
+ this.tooltip = pipeline.description;
88
+ this.iconPath = new vscode.ThemeIcon('symbol-event');
89
+ this.contextValue = 'pipeline';
90
+ }
91
+ }
92
+ /**
93
+ * A child node inside a pipeline showing a skill step.
94
+ */
95
+ class PipelineSkillStepItem extends vscode.TreeItem {
96
+ constructor(skillId, index) {
97
+ const skill = index_1.ALL_SKILLS.find((s) => s.id === skillId);
98
+ const label = skill ? `${index + 1}. ${skill.name}` : `${index + 1}. ${skillId}`;
99
+ super(label, vscode.TreeItemCollapsibleState.None);
100
+ this.skillId = skillId;
101
+ this.index = index;
102
+ this.description = skill?.description ?? '';
103
+ this.iconPath = new vscode.ThemeIcon('symbol-method');
104
+ this.contextValue = 'pipelineStep';
105
+ }
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // SkillTreeDataProvider
109
+ // ---------------------------------------------------------------------------
110
+ /** Groups skills by category and exposes them as a VS Code tree. */
111
+ class SkillTreeDataProvider {
112
+ constructor() {
113
+ this._onDidChangeTreeData = new vscode.EventEmitter();
114
+ this.onDidChangeTreeData = this._onDidChangeTreeData.event;
115
+ }
116
+ /** Force the tree to re-render. */
117
+ refresh() {
118
+ this._onDidChangeTreeData.fire();
119
+ }
120
+ getTreeItem(element) {
121
+ return element;
122
+ }
123
+ getChildren(element) {
124
+ if (!element) {
125
+ // Root level: return category nodes in canonical order
126
+ return this._buildCategoryNodes();
127
+ }
128
+ if (element instanceof CategoryTreeItem) {
129
+ return element.skills.map((s) => new SkillTreeItem(s));
130
+ }
131
+ return [];
132
+ }
133
+ _buildCategoryNodes() {
134
+ const categoryOrder = [
135
+ '需求侧',
136
+ '执行侧',
137
+ '跟踪侧',
138
+ '输出侧',
139
+ '质量侧',
140
+ ];
141
+ const map = new Map();
142
+ for (const cat of categoryOrder) {
143
+ if (cat)
144
+ map.set(cat, []);
145
+ }
146
+ for (const skill of index_1.ALL_SKILLS) {
147
+ const cat = skill.category ?? '其他';
148
+ if (!map.has(cat))
149
+ map.set(cat, []);
150
+ map.get(cat).push(skill);
151
+ }
152
+ const nodes = [];
153
+ for (const [cat, skills] of map) {
154
+ if (skills.length > 0) {
155
+ nodes.push(new CategoryTreeItem(cat, skills));
156
+ }
157
+ }
158
+ return nodes;
159
+ }
160
+ }
161
+ exports.SkillTreeDataProvider = SkillTreeDataProvider;
162
+ // ---------------------------------------------------------------------------
163
+ // PipelineTreeDataProvider
164
+ // ---------------------------------------------------------------------------
165
+ /** Exposes pipelines as a VS Code tree with skill-step children. */
166
+ class PipelineTreeDataProvider {
167
+ constructor() {
168
+ this._onDidChangeTreeData = new vscode.EventEmitter();
169
+ this.onDidChangeTreeData = this._onDidChangeTreeData.event;
170
+ }
171
+ refresh() {
172
+ this._onDidChangeTreeData.fire();
173
+ }
174
+ getTreeItem(element) {
175
+ return element;
176
+ }
177
+ getChildren(element) {
178
+ if (!element) {
179
+ return pipeline_1.PIPELINES.map((p) => new PipelineTreeItem(p));
180
+ }
181
+ if (element instanceof PipelineTreeItem) {
182
+ const pipeline = pipeline_1.PIPELINES.find((p) => p.id === element.pipeline.id);
183
+ if (!pipeline)
184
+ return [];
185
+ return pipeline.skillIds.map((skillId, index) => new PipelineSkillStepItem(skillId, index));
186
+ }
187
+ return [];
188
+ }
189
+ }
190
+ exports.PipelineTreeDataProvider = PipelineTreeDataProvider;
191
+ // ---------------------------------------------------------------------------
192
+ // Helpers
193
+ // ---------------------------------------------------------------------------
194
+ /** Module-level storage for the extension path (context is unavailable inside plain functions). */
195
+ let _extensionPath = '';
196
+ function context_getExtensionPath() {
197
+ return _extensionPath;
198
+ }
199
+ function setExtensionPath(p) {
200
+ _extensionPath = p;
201
+ }
202
+ // ---------------------------------------------------------------------------
203
+ // Install rules
204
+ // ---------------------------------------------------------------------------
205
+ async function installRules() {
206
+ const workspaceFolders = vscode.workspace.workspaceFolders;
207
+ if (!workspaceFolders || workspaceFolders.length === 0) {
208
+ vscode.window.showErrorMessage('Please open a workspace first.');
209
+ return;
210
+ }
211
+ const platform = await vscode.window.showQuickPick([
212
+ { label: 'All Platforms', value: 'all' },
213
+ { label: 'Cursor (New .mdc)', value: 'cursor' },
214
+ { label: 'VS Code Copilot', value: 'copilot' },
215
+ { label: 'Cline', value: 'cline' },
216
+ { label: '通义灵码 (Lingma)', value: 'lingma' },
217
+ { label: '腾讯 CodeBuddy', value: 'codebuddy' },
218
+ { label: 'Windsurf', value: 'windsurf' },
219
+ { label: 'Zed', value: 'zed' },
220
+ { label: 'JetBrains AI', value: 'jetbrains' },
221
+ { label: 'Continue', value: 'continue' },
222
+ { label: 'Claude Code', value: 'claude-code' },
223
+ ], { placeHolder: 'Select target platform' });
224
+ if (!platform)
225
+ return;
226
+ const targetDir = workspaceFolders[0].uri.fsPath;
227
+ const rulesDir = path.join(context_getExtensionPath(), 'rules');
228
+ const installMap = {
229
+ cursor: [
230
+ {
231
+ src: path.join(rulesDir, 'cursor/smart-flow.mdc'),
232
+ dest: path.join(targetDir, '.cursor/rules/smart-flow.mdc'),
233
+ },
234
+ ],
235
+ copilot: [
236
+ {
237
+ src: path.join(rulesDir, 'copilot/copilot-instructions.md'),
238
+ dest: path.join(targetDir, '.github/copilot-instructions.md'),
239
+ },
240
+ ],
241
+ cline: [
242
+ {
243
+ src: path.join(rulesDir, 'cline/.clinerules'),
244
+ dest: path.join(targetDir, '.clinerules'),
245
+ },
246
+ ],
247
+ lingma: [
248
+ {
249
+ src: path.join(rulesDir, 'lingma/smart-flow.md'),
250
+ dest: path.join(targetDir, '.lingma/rules/smart-flow.md'),
251
+ },
252
+ ],
253
+ codebuddy: [
254
+ {
255
+ src: path.join(rulesDir, 'codebuddy/CODEBUDDY.md'),
256
+ dest: path.join(targetDir, 'CODEBUDDY.md'),
257
+ },
258
+ ],
259
+ windsurf: [
260
+ {
261
+ src: path.join(rulesDir, 'windsurf/.windsurf/rules/smart-flow.md'),
262
+ dest: path.join(targetDir, '.windsurf/rules/smart-flow.md'),
263
+ },
264
+ ],
265
+ zed: [
266
+ {
267
+ src: path.join(rulesDir, 'zed/smart-flow.rules'),
268
+ dest: path.join(targetDir, '.zed/smart-flow.rules'),
269
+ },
270
+ ],
271
+ jetbrains: [
272
+ {
273
+ src: path.join(rulesDir, 'jetbrains/smart-flow.md'),
274
+ dest: path.join(targetDir, '.github/ai-instructions.md'),
275
+ },
276
+ ],
277
+ continue: [
278
+ {
279
+ src: path.join(rulesDir, 'continue/.continuerules'),
280
+ dest: path.join(targetDir, '.continuerules'),
281
+ },
282
+ ],
283
+ 'claude-code': [
284
+ {
285
+ src: path.join(rulesDir, 'claude-code/CLAUDE.md'),
286
+ dest: path.join(targetDir, 'CLAUDE.md'),
287
+ },
288
+ ],
289
+ };
290
+ const targets = platform.value === 'all'
291
+ ? Object.values(installMap).flat()
292
+ : installMap[platform.value] ?? [];
293
+ let installed = 0;
294
+ for (const { src, dest } of targets) {
295
+ if (!fs.existsSync(src))
296
+ continue;
297
+ const destDir = path.dirname(dest);
298
+ if (!fs.existsSync(destDir)) {
299
+ fs.mkdirSync(destDir, { recursive: true });
300
+ }
301
+ fs.copyFileSync(src, dest);
302
+ installed++;
303
+ }
304
+ vscode.window.showInformationMessage(`Ethan: Installed ${installed} rule file(s). Restart your AI editor to apply.`);
305
+ }
306
+ // ---------------------------------------------------------------------------
307
+ // List skills (webview)
308
+ // ---------------------------------------------------------------------------
309
+ async function listSkills() {
310
+ const panel = vscode.window.createWebviewPanel('ethanSkills', 'Ethan Skills', vscode.ViewColumn.One, {});
311
+ const rows = index_1.ALL_SKILLS.map((s) => `
312
+ <tr>
313
+ <td>${s.order}</td>
314
+ <td><strong>${s.name}</strong></td>
315
+ <td>${s.description}</td>
316
+ <td>${s.triggers
317
+ .slice(0, 3)
318
+ .map((t) => `<code>${t}</code>`)
319
+ .join(' ')}</td>
320
+ </tr>`).join('');
321
+ panel.webview.html = `<!DOCTYPE html>
322
+ <html>
323
+ <head>
324
+ <meta charset="UTF-8">
325
+ <style>
326
+ body { font-family: var(--vscode-font-family); padding: 20px; }
327
+ table { width: 100%; border-collapse: collapse; }
328
+ th, td { padding: 8px 12px; border: 1px solid var(--vscode-panel-border); text-align: left; }
329
+ th { background: var(--vscode-editor-selectionBackground); }
330
+ code { background: var(--vscode-textCodeBlock-background); padding: 2px 4px; border-radius: 3px; }
331
+ </style>
332
+ </head>
333
+ <body>
334
+ <h1>Ethan Skills</h1>
335
+ <table>
336
+ <thead><tr><th>#</th><th>Skill</th><th>描述</th><th>触发词</th></tr></thead>
337
+ <tbody>${rows}</tbody>
338
+ </table>
339
+ </body>
340
+ </html>`;
341
+ }
342
+ // ---------------------------------------------------------------------------
343
+ // Run skill (QuickPick + clipboard)
344
+ // ---------------------------------------------------------------------------
345
+ async function runSkill(preselectedId) {
346
+ let skillId = preselectedId;
347
+ if (!skillId) {
348
+ const items = index_1.ALL_SKILLS.map((s) => ({
349
+ label: s.name,
350
+ detail: s.description,
351
+ description: s.category,
352
+ value: s.id,
353
+ }));
354
+ const picked = await vscode.window.showQuickPick(items, {
355
+ placeHolder: 'Select a Skill to run',
356
+ matchOnDetail: true,
357
+ matchOnDescription: true,
358
+ });
359
+ if (!picked)
360
+ return;
361
+ skillId = picked.value;
362
+ }
363
+ const skill = index_1.ALL_SKILLS.find((s) => s.id === skillId);
364
+ if (!skill) {
365
+ vscode.window.showErrorMessage(`Ethan: Skill "${skillId}" not found.`);
366
+ return;
367
+ }
368
+ const userContext = await vscode.window.showInputBox({
369
+ prompt: `Provide context for "${skill.name}" (optional)`,
370
+ placeHolder: 'e.g. 用户登录功能需求分析',
371
+ });
372
+ // Build a prompt string combining skill metadata + user context
373
+ const lines = [
374
+ `# Ethan Skill: ${skill.name}`,
375
+ '',
376
+ `> ${skill.detailDescription}`,
377
+ '',
378
+ ];
379
+ if (userContext && userContext.trim().length > 0) {
380
+ lines.push(`**Context**: ${userContext.trim()}`, '');
381
+ }
382
+ lines.push('## Steps', '');
383
+ for (const step of skill.steps) {
384
+ lines.push(`### ${step.title}`, '', step.content, '');
385
+ }
386
+ lines.push(`**Output format**: ${skill.outputFormat}`);
387
+ const prompt = lines.join('\n');
388
+ await vscode.env.clipboard.writeText(prompt);
389
+ vscode.window.showInformationMessage(`Ethan: "${skill.name}" prompt copied to clipboard. Paste it into your AI chat.`);
390
+ }
391
+ // ---------------------------------------------------------------------------
392
+ // Open dashboard
393
+ // ---------------------------------------------------------------------------
394
+ async function openDashboard(extensionPath) {
395
+ // Try to start the CLI serve command (best-effort; ignore errors)
396
+ const distCli = path.join(extensionPath, 'dist', 'cli', 'index.js');
397
+ if (fs.existsSync(distCli)) {
398
+ cp.spawn('node', [distCli, 'serve'], {
399
+ detached: true,
400
+ stdio: 'ignore',
401
+ }).unref();
402
+ }
403
+ await vscode.commands.executeCommand('vscode.open', vscode.Uri.parse('http://localhost:3000'));
404
+ }
405
+ /**
406
+ * Registers all Ethan commands and creates the sidebar providers and status bar item.
407
+ * Returns the providers so `extension.ts` can wire them up to tree views.
408
+ */
409
+ function registerCommands(context) {
410
+ // Capture extension path for use in closure-based command functions
411
+ setExtensionPath(context.extensionPath);
412
+ // Tree data providers
413
+ const skillsProvider = new SkillTreeDataProvider();
414
+ const pipelinesProvider = new PipelineTreeDataProvider();
415
+ // Status bar item
416
+ const statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
417
+ statusBarItem.text = '$(wand) Ethan';
418
+ statusBarItem.tooltip = 'Ethan: Click to run a Skill';
419
+ statusBarItem.command = 'ethan.runSkill';
420
+ statusBarItem.show();
421
+ context.subscriptions.push(statusBarItem, vscode.commands.registerCommand('ethan.install', installRules), vscode.commands.registerCommand('ethan.listSkills', listSkills), vscode.commands.registerCommand('ethan.runSkill', (preselectedId) => runSkill(preselectedId)), vscode.commands.registerCommand('ethan.openDashboard', () => openDashboard(context.extensionPath)), vscode.commands.registerCommand('ethan.refreshSkills', () => {
422
+ skillsProvider.refresh();
423
+ pipelinesProvider.refresh();
424
+ vscode.window.showInformationMessage('Ethan: Skills refreshed.');
425
+ }));
426
+ return { skillsProvider, pipelinesProvider, statusBarItem };
427
+ }
428
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/vscode/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import * as vscode from 'vscode';
2
+ export declare function activate(context: vscode.ExtensionContext): void;
3
+ export declare function deactivate(): void;
4
+ //# sourceMappingURL=extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/vscode/extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKjC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CA8B/D;AAkED,wBAAgB,UAAU,IAAI,IAAI,CAAG"}