ethan-skill 1.2.1 → 1.5.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 (36) hide show
  1. package/README.md +300 -137
  2. package/dist/cli/config.d.ts +2 -0
  3. package/dist/cli/config.d.ts.map +1 -1
  4. package/dist/cli/config.js.map +1 -1
  5. package/dist/cli/index.d.ts +5 -1
  6. package/dist/cli/index.d.ts.map +1 -1
  7. package/dist/cli/index.js +1786 -56
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/git/utils.d.ts +34 -0
  10. package/dist/git/utils.d.ts.map +1 -0
  11. package/dist/git/utils.js +94 -0
  12. package/dist/git/utils.js.map +1 -0
  13. package/dist/mcp/server.d.ts.map +1 -1
  14. package/dist/mcp/server.js +238 -6
  15. package/dist/mcp/server.js.map +1 -1
  16. package/dist/templates/copilot-md.template.js +82 -33
  17. package/dist/templates/copilot-md.template.js.map +1 -1
  18. package/dist/templates/cursor-mdc.template.d.ts.map +1 -1
  19. package/dist/templates/cursor-mdc.template.js +18 -8
  20. package/dist/templates/cursor-mdc.template.js.map +1 -1
  21. package/dist/workflow/state.d.ts +13 -9
  22. package/dist/workflow/state.d.ts.map +1 -1
  23. package/dist/workflow/state.js +42 -16
  24. package/dist/workflow/state.js.map +1 -1
  25. package/package.json +1 -1
  26. package/rules/claude-code/CLAUDE.md +2 -2
  27. package/rules/cline/.clinerules +9 -2
  28. package/rules/codebuddy/CODEBUDDY.md +2 -2
  29. package/rules/continue/.continuerules +9 -2
  30. package/rules/copilot/copilot-instructions.md +581 -57
  31. package/rules/cursor/.cursorrules +10 -3
  32. package/rules/cursor/smart-flow.mdc +12 -9
  33. package/rules/jetbrains/smart-flow.md +580 -57
  34. package/rules/lingma/smart-flow.md +2 -2
  35. package/rules/windsurf/.windsurf/rules/smart-flow.md +586 -57
  36. package/rules/zed/smart-flow.rules +1 -1
@@ -19,7 +19,15 @@ alwaysApply: true
19
19
  > 自动生成 - 请勿手动修改,源文件:src/skills/
20
20
  > Generated at: ${generatedAt}
21
21
 
22
- Skill 提供 ${skills.length} 个标准化工作流节点,通过触发词激活对应的执行流程。
22
+ ## 重要:Skill 激活规则
23
+
24
+ 本文件配置了 **Ethan AI 工作流助手**,严格遵守以下规则:
25
+
26
+ 1. **触发检测**:每条用户消息开头,扫描下方触发词列表。匹配到任意触发词后,**立即激活对应 Skill**,无需二次确认。
27
+ 2. **完整执行**:按 Skill 定义的步骤**逐步全部执行**,不跳步、不缩减、不省略。
28
+ 3. **格式遵循**:输出严格遵循各 Skill 的格式模板。
29
+ 4. **直接执行**:用户明确说出 Skill 名称时(如"代码审查"、"需求理解"),立即执行,无需前置确认。
30
+ 5. **歧义处理**:多个触发词同时匹配时,激活最具体的 Skill;仍不确定时询问用户。
23
31
 
24
32
  ## 快速触发指南
25
33
 
@@ -33,12 +41,7 @@ ${skillsContent}
33
41
 
34
42
  ---
35
43
 
36
- ## 通用规则
37
-
38
- - 每次对话开始时,检测用户意图,自动匹配最合适的 Skill
39
- - 执行 Skill 前,先确认关键前提条件(如"需求理解"完成后才进入"任务拆解")
40
- - 输出严格按照各 Skill 定义的格式模板
41
- - 如果用户明确指定 Skill 名称,直接执行,无需再次确认
44
+ *Ethan - Your AI Workflow Assistant | 让每一步都有据可依*
42
45
  `;
43
46
  }
44
47
  /**
@@ -52,6 +55,13 @@ function renderCursorOld(ctx) {
52
55
  > 自动生成 - 请勿手动修改,源文件:src/skills/
53
56
  > Generated at: ${generatedAt}
54
57
 
58
+ ## 重要:Skill 激活规则
59
+
60
+ 1. 每条用户消息开头,扫描触发词列表。匹配到任意触发词后,**立即激活对应 Skill**,无需确认。
61
+ 2. **按步骤顺序全部执行**,不跳步、不缩减、不省略。
62
+ 3. 输出严格遵循各 Skill 的格式模板。
63
+ 4. 用户明确说出 Skill 名称时,直接执行,无需前置确认。
64
+
55
65
  ## 触发词一览
56
66
  ${skills.map((s) => `- ${s.name}:${s.triggers.slice(0, 3).join('、')}`).join('\n')}
57
67
 
@@ -61,7 +71,7 @@ ${skillsContent}
61
71
 
62
72
  ---
63
73
 
64
- 执行任何 Skill 时,严格按照定义的步骤和输出格式,不省略任何关键步骤。
74
+ *Ethan - Your AI Workflow Assistant | 让每一步都有据可依*
65
75
  `;
66
76
  }
67
77
  function renderSkillSection(skill) {
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-mdc.template.js","sourceRoot":"","sources":["../../src/templates/cursor-mdc.template.ts"],"names":[],"mappings":";;AAKA,0CAqCC;AAKD,0CAoBC;AAjED;;GAEG;AACH,SAAgB,eAAe,CAAC,GAAiB;IAC/C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAE7C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEzE,OAAO;;;;;;WAME,OAAO;;;kBAGA,WAAW;;aAEhB,MAAM,CAAC,MAAM;;;;;;EAMxB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIpE,aAAa;;;;;;;;;;CAUd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,GAAiB;IAC/C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEzE,OAAO,YAAY,OAAO;;;kBAGV,WAAW;;;EAG3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAI/E,aAAa;;;;;CAKd,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAsB;IAChD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACrD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpE,IAAI,OAAO,GAAG,YAAY,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI;;UAE3C,WAAW;;SAEZ,KAAK,CAAC,WAAW;;EAExB,YAAY;;WAEH,KAAK,CAAC,YAAY,EAAE,CAAC;IAE9B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,kBAAkB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"cursor-mdc.template.js","sourceRoot":"","sources":["../../src/templates/cursor-mdc.template.ts"],"names":[],"mappings":";;AAKA,0CAwCC;AAKD,0CA2BC;AA3ED;;GAEG;AACH,SAAgB,eAAe,CAAC,GAAiB;IAC/C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAE7C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEzE,OAAO;;;;;;WAME,OAAO;;;kBAGA,WAAW;;;;;;;;;;;;;;;;EAgB3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIpE,aAAa;;;;;CAKd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,GAAiB;IAC/C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEzE,OAAO,YAAY,OAAO;;;kBAGV,WAAW;;;;;;;;;;EAU3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAI/E,aAAa;;;;;CAKd,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAsB;IAChD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACrD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpE,IAAI,OAAO,GAAG,YAAY,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI;;UAE3C,WAAW;;SAEZ,KAAK,CAAC,WAAW;;EAExB,YAAY;;WAEH,KAAK,CAAC,YAAY,EAAE,CAAC;IAE9B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,kBAAkB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * 工作流会话状态管理
3
- * 持久化到 .ethan/workflow.json
3
+ * 持久化到 .ethan/workflow.json(默认)或 .ethan/sessions/<name>.json(具名会话)
4
4
  */
5
5
  import type { SkillDefinition, PipelineDefinition } from '../skills/types';
6
6
  export type StepStatus = 'pending' | 'in-progress' | 'done' | 'skipped';
@@ -14,6 +14,8 @@ export interface WorkflowStep {
14
14
  }
15
15
  export interface WorkflowSession {
16
16
  id: string;
17
+ /** 具名会话名称(可选,T12 Named Sessions) */
18
+ name?: string;
17
19
  pipelineId: string;
18
20
  pipelineName: string;
19
21
  /** 用户最初的任务上下文描述 */
@@ -24,14 +26,16 @@ export interface WorkflowSession {
24
26
  /** 是否全部完成 */
25
27
  completed: boolean;
26
28
  }
27
- /** 读取当前 session */
28
- export declare function loadSession(cwd?: string): WorkflowSession | null;
29
- /** 保存 session */
30
- export declare function saveSession(session: WorkflowSession, cwd?: string): void;
31
- /** 删除 session(reset */
32
- export declare function deleteSession(cwd?: string): void;
33
- /** 创建新 session */
34
- export declare function createSession(pipeline: PipelineDefinition, initialContext: string, cwd?: string): WorkflowSession;
29
+ /** 读取当前 session(支持具名会话) */
30
+ export declare function loadSession(cwd?: string, sessionName?: string): WorkflowSession | null;
31
+ /** 保存 session(支持具名会话) */
32
+ export declare function saveSession(session: WorkflowSession, cwd?: string, sessionName?: string): void;
33
+ /** 删除 session(reset,支持具名会话) */
34
+ export declare function deleteSession(cwd?: string, sessionName?: string): void;
35
+ /** 列出所有具名会话 */
36
+ export declare function listNamedSessions(cwd?: string): WorkflowSession[];
37
+ /** 创建新 session(支持具名会话) */
38
+ export declare function createSession(pipeline: PipelineDefinition, initialContext: string, cwd?: string, sessionName?: string): WorkflowSession;
35
39
  /** 获取当前进行中的步骤(第一个 in-progress 或 pending) */
36
40
  export declare function getCurrentStep(session: WorkflowSession): WorkflowStep | null;
37
41
  /** 获取当前步骤序号(0-based) */
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AASD,mBAAmB;AACnB,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,eAAe,GAAG,IAAI,CAU/E;AAED,iBAAiB;AACjB,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAKvF;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAG/D;AAED,kBAAkB;AAClB,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,cAAc,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,GAC1B,eAAe,CAgBjB;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAM5E;AAED,wBAAwB;AACxB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAIpE;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAsB,GAC1B,YAAY,GAAG,IAAI,CAkBrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,eAAe,GACrB,MAAM,CAmCR;AAED,cAAc;AACd,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAG7D"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAaD,2BAA2B;AAC3B,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAUrG;AAED,yBAAyB;AACzB,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,GAAE,MAAsB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAO7G;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAGrF;AAED,eAAe;AACf,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,eAAe,EAAE,CAchF;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,cAAc,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAiBjB;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAM5E;AAED,wBAAwB;AACxB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAIpE;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAsB,GAC1B,YAAY,GAAG,IAAI,CAkBrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,eAAe,GACrB,MAAM,CAmCR;AAED,cAAc;AACd,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAG7D"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
3
  * 工作流会话状态管理
4
- * 持久化到 .ethan/workflow.json
4
+ * 持久化到 .ethan/workflow.json(默认)或 .ethan/sessions/<name>.json(具名会话)
5
5
  */
6
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
7
  if (k2 === undefined) k2 = k;
@@ -40,6 +40,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.loadSession = loadSession;
41
41
  exports.saveSession = saveSession;
42
42
  exports.deleteSession = deleteSession;
43
+ exports.listNamedSessions = listNamedSessions;
43
44
  exports.createSession = createSession;
44
45
  exports.getCurrentStep = getCurrentStep;
45
46
  exports.getCurrentStepIndex = getCurrentStepIndex;
@@ -50,12 +51,16 @@ const fs = __importStar(require("fs"));
50
51
  const path = __importStar(require("path"));
51
52
  const WORKFLOW_DIR = '.ethan';
52
53
  const WORKFLOW_FILE = 'workflow.json';
53
- function getWorkflowPath(cwd) {
54
+ const SESSIONS_DIR = 'sessions';
55
+ function getWorkflowPath(cwd, sessionName) {
56
+ if (sessionName) {
57
+ return path.join(cwd, WORKFLOW_DIR, SESSIONS_DIR, `${sessionName}.json`);
58
+ }
54
59
  return path.join(cwd, WORKFLOW_DIR, WORKFLOW_FILE);
55
60
  }
56
- /** 读取当前 session */
57
- function loadSession(cwd = process.cwd()) {
58
- const filePath = getWorkflowPath(cwd);
61
+ /** 读取当前 session(支持具名会话) */
62
+ function loadSession(cwd = process.cwd(), sessionName) {
63
+ const filePath = getWorkflowPath(cwd, sessionName);
59
64
  try {
60
65
  if (fs.existsSync(filePath)) {
61
66
  return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
@@ -66,24 +71,45 @@ function loadSession(cwd = process.cwd()) {
66
71
  }
67
72
  return null;
68
73
  }
69
- /** 保存 session */
70
- function saveSession(session, cwd = process.cwd()) {
71
- const dir = path.join(cwd, WORKFLOW_DIR);
74
+ /** 保存 session(支持具名会话) */
75
+ function saveSession(session, cwd = process.cwd(), sessionName) {
76
+ const name = sessionName || session.name;
77
+ const filePath = getWorkflowPath(cwd, name);
78
+ const dir = path.dirname(filePath);
72
79
  if (!fs.existsSync(dir))
73
80
  fs.mkdirSync(dir, { recursive: true });
74
81
  session.updatedAt = new Date().toISOString();
75
- fs.writeFileSync(getWorkflowPath(cwd), JSON.stringify(session, null, 2), 'utf-8');
82
+ fs.writeFileSync(filePath, JSON.stringify(session, null, 2), 'utf-8');
76
83
  }
77
- /** 删除 session(reset */
78
- function deleteSession(cwd = process.cwd()) {
79
- const filePath = getWorkflowPath(cwd);
84
+ /** 删除 session(reset,支持具名会话) */
85
+ function deleteSession(cwd = process.cwd(), sessionName) {
86
+ const filePath = getWorkflowPath(cwd, sessionName);
80
87
  if (fs.existsSync(filePath))
81
88
  fs.unlinkSync(filePath);
82
89
  }
83
- /** 创建新 session */
84
- function createSession(pipeline, initialContext, cwd = process.cwd()) {
90
+ /** 列出所有具名会话 */
91
+ function listNamedSessions(cwd = process.cwd()) {
92
+ const sessionsDir = path.join(cwd, WORKFLOW_DIR, SESSIONS_DIR);
93
+ if (!fs.existsSync(sessionsDir))
94
+ return [];
95
+ return fs
96
+ .readdirSync(sessionsDir)
97
+ .filter((f) => f.endsWith('.json'))
98
+ .map((f) => {
99
+ try {
100
+ return JSON.parse(fs.readFileSync(path.join(sessionsDir, f), 'utf-8'));
101
+ }
102
+ catch {
103
+ return null;
104
+ }
105
+ })
106
+ .filter((s) => s !== null);
107
+ }
108
+ /** 创建新 session(支持具名会话) */
109
+ function createSession(pipeline, initialContext, cwd = process.cwd(), sessionName) {
85
110
  const session = {
86
111
  id: Date.now().toString(36),
112
+ name: sessionName,
87
113
  pipelineId: pipeline.id,
88
114
  pipelineName: pipeline.name,
89
115
  initialContext,
@@ -95,7 +121,7 @@ function createSession(pipeline, initialContext, cwd = process.cwd()) {
95
121
  updatedAt: new Date().toISOString(),
96
122
  completed: false,
97
123
  };
98
- saveSession(session, cwd);
124
+ saveSession(session, cwd, sessionName);
99
125
  return session;
100
126
  }
101
127
  /** 获取当前进行中的步骤(第一个 in-progress 或 pending) */
@@ -127,7 +153,7 @@ function markStepDone(session, summary, cwd = process.cwd()) {
127
153
  else {
128
154
  session.completed = true;
129
155
  }
130
- saveSession(session, cwd);
156
+ saveSession(session, cwd, session.name);
131
157
  return nextIdx < session.steps.length ? session.steps[nextIdx] : null;
132
158
  }
133
159
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ethan-skill",
3
- "version": "1.2.1",
3
+ "version": "1.5.1",
4
4
  "description": "Ethan - Your AI Workflow Assistant",
5
5
  "keywords": [
6
6
  "ai-skill",
@@ -1,6 +1,6 @@
1
- # Ethan v1.2.1
1
+ # Ethan v1.5.1
2
2
 
3
- > Auto-generated from src/skills/ | 2026-03-22T04:57:44.673Z
3
+ > Auto-generated from src/skills/ | 2026-03-23T01:57:22.221Z
4
4
  > Do not edit manually. Source: src/skills/
5
5
 
6
6
  ## Ethan
@@ -1,9 +1,16 @@
1
- # Ethan v1.2.1
2
- # Generated: 2026-03-22T04:57:44.673Z
1
+ # Ethan v1.5.1
2
+ # Generated: 2026-03-23T01:57:22.221Z
3
3
  # Source: https://github.com/aokiz-ek/smart-flow-skill
4
4
 
5
5
  Ethan。当用户输入以下触发词时,按对应 Skill 的步骤执行。
6
6
 
7
+ ## 重要:Skill 激活规则
8
+
9
+ 1. 每条用户消息开头,扫描触发词列表。匹配到任意触发词后,**立即激活对应 Skill**,无需确认。
10
+ 2. **按步骤顺序全部执行**,不跳步、不缩减、不省略。
11
+ 3. 输出严格遵循各 Skill 的格式模板。
12
+ 4. 用户明确说出 Skill 名称时,直接执行,无需前置确认。
13
+
7
14
  ## 触发词总览
8
15
  - **需求理解**: 需求理解 | 理解需求 | 分析需求 | 需求分析
9
16
  - **任务拆解**: 任务拆解 | 拆解任务 | 拆分任务 | 制定计划
@@ -1,6 +1,6 @@
1
- # Ethan v1.2.1
1
+ # Ethan v1.5.1
2
2
 
3
- Ethan - Your AI Workflow Assistant | Generated: 2026-03-22T04:57:44.673Z
3
+ Ethan - Your AI Workflow Assistant | Generated: 2026-03-23T01:57:22.221Z
4
4
 
5
5
  ## Skills
6
6
 
@@ -1,9 +1,16 @@
1
- # Ethan v1.2.1
2
- # Generated: 2026-03-22T04:57:44.673Z
1
+ # Ethan v1.5.1
2
+ # Generated: 2026-03-23T01:57:22.221Z
3
3
  # Source: https://github.com/aokiz-ek/smart-flow-skill
4
4
 
5
5
  Ethan(Continue)。当用户输入以下触发词时,按对应 Skill 的步骤执行。
6
6
 
7
+ ## 重要:Skill 激活规则
8
+
9
+ 1. 每条用户消息开头,扫描触发词列表。匹配到任意触发词后,**立即激活对应 Skill**,无需确认。
10
+ 2. **按步骤顺序全部执行**,不跳步、不缩减、不省略。
11
+ 3. 输出严格遵循各 Skill 的格式模板。
12
+ 4. 用户明确说出 Skill 名称时,直接执行,无需前置确认。
13
+
7
14
  ## 触发词总览
8
15
  - **需求理解**: 需求理解 | 理解需求 | 分析需求 | 需求分析
9
16
  - **任务拆解**: 任务拆解 | 拆解任务 | 拆分任务 | 制定计划