@liangjie559567/ultrapower 7.1.0 → 7.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 (228) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/bridge/codex-server.cjs +1 -0
  4. package/bridge/gemini-server.cjs +1 -0
  5. package/bridge/team-bridge.cjs +1 -0
  6. package/dist/cli/commands/config-notify-profile.d.ts.map +1 -1
  7. package/dist/cli/commands/config-notify-profile.js.map +1 -1
  8. package/dist/cli/commands/config-stop-callback.d.ts.map +1 -1
  9. package/dist/cli/commands/config-stop-callback.js +1 -1
  10. package/dist/cli/commands/config-stop-callback.js.map +1 -1
  11. package/dist/cli/commands/dashboard.d.ts.map +1 -1
  12. package/dist/cli/commands/dashboard.js.map +1 -1
  13. package/dist/cli/index.js +1 -1
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/progress/examples.js.map +1 -1
  16. package/dist/cli/tutorial/index.js.map +1 -1
  17. package/dist/cli/utils/test-prompt.d.ts +1 -1
  18. package/dist/cli/utils/test-prompt.d.ts.map +1 -1
  19. package/dist/cli/utils/test-prompt.js +1 -1
  20. package/dist/cli/utils/test-prompt.js.map +1 -1
  21. package/dist/features/analytics-dashboard/dashboard.d.ts +4 -0
  22. package/dist/features/analytics-dashboard/dashboard.d.ts.map +1 -0
  23. package/dist/features/analytics-dashboard/dashboard.js +24 -0
  24. package/dist/features/analytics-dashboard/dashboard.js.map +1 -0
  25. package/dist/features/analytics-dashboard/index.d.ts +7 -0
  26. package/dist/features/analytics-dashboard/index.d.ts.map +1 -0
  27. package/dist/features/analytics-dashboard/index.js +5 -0
  28. package/dist/features/analytics-dashboard/index.js.map +1 -0
  29. package/dist/features/analytics-dashboard/metrics-collector.d.ts +7 -0
  30. package/dist/features/analytics-dashboard/metrics-collector.d.ts.map +1 -0
  31. package/dist/features/analytics-dashboard/metrics-collector.js +58 -0
  32. package/dist/features/analytics-dashboard/metrics-collector.js.map +1 -0
  33. package/dist/features/analytics-dashboard/storage.d.ts +6 -0
  34. package/dist/features/analytics-dashboard/storage.d.ts.map +1 -0
  35. package/dist/features/analytics-dashboard/storage.js +20 -0
  36. package/dist/features/analytics-dashboard/storage.js.map +1 -0
  37. package/dist/features/analytics-dashboard/tracker.d.ts +11 -0
  38. package/dist/features/analytics-dashboard/tracker.d.ts.map +1 -0
  39. package/dist/features/analytics-dashboard/tracker.js +17 -0
  40. package/dist/features/analytics-dashboard/tracker.js.map +1 -0
  41. package/dist/features/analytics-dashboard/types.d.ts +20 -0
  42. package/dist/features/analytics-dashboard/types.d.ts.map +1 -0
  43. package/dist/features/analytics-dashboard/types.js +2 -0
  44. package/dist/features/analytics-dashboard/types.js.map +1 -0
  45. package/dist/features/assumption-validator/index.d.ts +3 -0
  46. package/dist/features/assumption-validator/index.d.ts.map +1 -0
  47. package/dist/features/assumption-validator/index.js +3 -0
  48. package/dist/features/assumption-validator/index.js.map +1 -0
  49. package/dist/features/assumption-validator/lsp-checker.d.ts +6 -0
  50. package/dist/features/assumption-validator/lsp-checker.d.ts.map +1 -0
  51. package/dist/features/assumption-validator/lsp-checker.js +18 -0
  52. package/dist/features/assumption-validator/lsp-checker.js.map +1 -0
  53. package/dist/features/assumption-validator/validator.d.ts +14 -0
  54. package/dist/features/assumption-validator/validator.d.ts.map +1 -0
  55. package/dist/features/assumption-validator/validator.js +9 -0
  56. package/dist/features/assumption-validator/validator.js.map +1 -0
  57. package/dist/features/document-lifecycle/archiver.js.map +1 -1
  58. package/dist/features/document-lifecycle/versioning.js +1 -1
  59. package/dist/features/document-lifecycle/versioning.js.map +1 -1
  60. package/dist/features/onboarding/achievements.d.ts +2 -0
  61. package/dist/features/onboarding/achievements.d.ts.map +1 -0
  62. package/dist/features/onboarding/achievements.js +33 -0
  63. package/dist/features/onboarding/achievements.js.map +1 -0
  64. package/dist/features/onboarding/analytics.d.ts +5 -0
  65. package/dist/features/onboarding/analytics.d.ts.map +1 -0
  66. package/dist/features/onboarding/analytics.js +23 -0
  67. package/dist/features/onboarding/analytics.js.map +1 -0
  68. package/dist/features/onboarding/index.d.ts +5 -0
  69. package/dist/features/onboarding/index.d.ts.map +1 -0
  70. package/dist/features/onboarding/index.js +5 -0
  71. package/dist/features/onboarding/index.js.map +1 -0
  72. package/dist/features/onboarding/scenario-runner.d.ts +8 -0
  73. package/dist/features/onboarding/scenario-runner.d.ts.map +1 -0
  74. package/dist/features/onboarding/scenario-runner.js +27 -0
  75. package/dist/features/onboarding/scenario-runner.js.map +1 -0
  76. package/dist/features/onboarding/scenarios/debug.d.ts +3 -0
  77. package/dist/features/onboarding/scenarios/debug.d.ts.map +1 -0
  78. package/dist/features/onboarding/scenarios/debug.js +34 -0
  79. package/dist/features/onboarding/scenarios/debug.js.map +1 -0
  80. package/dist/features/onboarding/scenarios/implement.d.ts +3 -0
  81. package/dist/features/onboarding/scenarios/implement.d.ts.map +1 -0
  82. package/dist/features/onboarding/scenarios/implement.js +27 -0
  83. package/dist/features/onboarding/scenarios/implement.js.map +1 -0
  84. package/dist/features/onboarding/scenarios/refactor.d.ts +3 -0
  85. package/dist/features/onboarding/scenarios/refactor.d.ts.map +1 -0
  86. package/dist/features/onboarding/scenarios/refactor.js +36 -0
  87. package/dist/features/onboarding/scenarios/refactor.js.map +1 -0
  88. package/dist/features/onboarding/scenarios/review.d.ts +3 -0
  89. package/dist/features/onboarding/scenarios/review.d.ts.map +1 -0
  90. package/dist/features/onboarding/scenarios/review.js +27 -0
  91. package/dist/features/onboarding/scenarios/review.js.map +1 -0
  92. package/dist/features/onboarding/scenarios/security.d.ts +3 -0
  93. package/dist/features/onboarding/scenarios/security.d.ts.map +1 -0
  94. package/dist/features/onboarding/scenarios/security.js +29 -0
  95. package/dist/features/onboarding/scenarios/security.js.map +1 -0
  96. package/dist/features/onboarding/scenarios/team.d.ts +3 -0
  97. package/dist/features/onboarding/scenarios/team.d.ts.map +1 -0
  98. package/dist/features/onboarding/scenarios/team.js +29 -0
  99. package/dist/features/onboarding/scenarios/team.js.map +1 -0
  100. package/dist/features/onboarding/state-manager.d.ts +7 -0
  101. package/dist/features/onboarding/state-manager.d.ts.map +1 -0
  102. package/dist/features/onboarding/state-manager.js +25 -0
  103. package/dist/features/onboarding/state-manager.js.map +1 -0
  104. package/dist/features/onboarding/tutorial.d.ts +10 -0
  105. package/dist/features/onboarding/tutorial.d.ts.map +1 -0
  106. package/dist/features/onboarding/tutorial.js +107 -0
  107. package/dist/features/onboarding/tutorial.js.map +1 -0
  108. package/dist/features/onboarding/types.d.ts +30 -0
  109. package/dist/features/onboarding/types.d.ts.map +1 -0
  110. package/dist/features/onboarding/types.js +2 -0
  111. package/dist/features/onboarding/types.js.map +1 -0
  112. package/dist/features/personalized-recommendation/behavior-tracker.d.ts +8 -0
  113. package/dist/features/personalized-recommendation/behavior-tracker.d.ts.map +1 -0
  114. package/dist/features/personalized-recommendation/behavior-tracker.js +32 -0
  115. package/dist/features/personalized-recommendation/behavior-tracker.js.map +1 -0
  116. package/dist/features/personalized-recommendation/index.d.ts +4 -0
  117. package/dist/features/personalized-recommendation/index.d.ts.map +1 -0
  118. package/dist/features/personalized-recommendation/index.js +3 -0
  119. package/dist/features/personalized-recommendation/index.js.map +1 -0
  120. package/dist/features/personalized-recommendation/recommender.d.ts +5 -0
  121. package/dist/features/personalized-recommendation/recommender.d.ts.map +1 -0
  122. package/dist/features/personalized-recommendation/recommender.js +25 -0
  123. package/dist/features/personalized-recommendation/recommender.js.map +1 -0
  124. package/dist/features/personalized-recommendation/types.d.ts +19 -0
  125. package/dist/features/personalized-recommendation/types.d.ts.map +1 -0
  126. package/dist/features/personalized-recommendation/types.js +2 -0
  127. package/dist/features/personalized-recommendation/types.js.map +1 -0
  128. package/dist/features/quality-gate/audit-logger.d.ts +2 -0
  129. package/dist/features/quality-gate/audit-logger.d.ts.map +1 -0
  130. package/dist/features/quality-gate/audit-logger.js +10 -0
  131. package/dist/features/quality-gate/audit-logger.js.map +1 -0
  132. package/dist/features/quality-gate/gate-checker.d.ts +7 -0
  133. package/dist/features/quality-gate/gate-checker.d.ts.map +1 -0
  134. package/dist/features/quality-gate/gate-checker.js +36 -0
  135. package/dist/features/quality-gate/gate-checker.js.map +1 -0
  136. package/dist/features/quality-gate/index.d.ts +3 -0
  137. package/dist/features/quality-gate/index.d.ts.map +1 -0
  138. package/dist/features/quality-gate/index.js +3 -0
  139. package/dist/features/quality-gate/index.js.map +1 -0
  140. package/dist/features/session-recovery/index.d.ts +20 -0
  141. package/dist/features/session-recovery/index.d.ts.map +1 -0
  142. package/dist/features/session-recovery/index.js +23 -0
  143. package/dist/features/session-recovery/index.js.map +1 -0
  144. package/dist/features/session-recovery/knowledge-retriever.d.ts +12 -0
  145. package/dist/features/session-recovery/knowledge-retriever.d.ts.map +1 -0
  146. package/dist/features/session-recovery/knowledge-retriever.js +74 -0
  147. package/dist/features/session-recovery/knowledge-retriever.js.map +1 -0
  148. package/dist/features/session-recovery/session-detector.d.ts +12 -0
  149. package/dist/features/session-recovery/session-detector.d.ts.map +1 -0
  150. package/dist/features/session-recovery/session-detector.js +30 -0
  151. package/dist/features/session-recovery/session-detector.js.map +1 -0
  152. package/dist/features/speckit-core/constitution.d.ts.map +1 -1
  153. package/dist/features/speckit-core/constitution.js +17 -15
  154. package/dist/features/speckit-core/constitution.js.map +1 -1
  155. package/dist/features/speckit-core/plan.d.ts.map +1 -1
  156. package/dist/features/speckit-core/plan.js +19 -18
  157. package/dist/features/speckit-core/plan.js.map +1 -1
  158. package/dist/features/speckit-core/specify.d.ts +1 -1
  159. package/dist/features/speckit-core/specify.d.ts.map +1 -1
  160. package/dist/features/speckit-core/specify.js +1 -1
  161. package/dist/features/speckit-core/specify.js.map +1 -1
  162. package/dist/features/speckit-core/tasks.d.ts.map +1 -1
  163. package/dist/features/speckit-core/tasks.js +0 -1
  164. package/dist/features/speckit-core/tasks.js.map +1 -1
  165. package/dist/features/speckit-integration/axiom-bridge.d.ts.map +1 -1
  166. package/dist/features/speckit-integration/axiom-bridge.js.map +1 -1
  167. package/dist/features/speckit-integration/recommender.js.map +1 -1
  168. package/dist/features/speckit-integration/router.d.ts.map +1 -1
  169. package/dist/features/speckit-integration/router.js.map +1 -1
  170. package/dist/features/state-manager/progress-tracker.d.ts.map +1 -1
  171. package/dist/features/state-manager/progress-tracker.js.map +1 -1
  172. package/dist/features/workflow-recommender/auto-selector.d.ts +9 -0
  173. package/dist/features/workflow-recommender/auto-selector.d.ts.map +1 -0
  174. package/dist/features/workflow-recommender/auto-selector.js +23 -0
  175. package/dist/features/workflow-recommender/auto-selector.js.map +1 -0
  176. package/dist/features/workflow-recommender/context-enhancer.d.ts +14 -0
  177. package/dist/features/workflow-recommender/context-enhancer.d.ts.map +1 -0
  178. package/dist/features/workflow-recommender/context-enhancer.js +40 -0
  179. package/dist/features/workflow-recommender/context-enhancer.js.map +1 -0
  180. package/dist/features/workflow-recommender/executor.d.ts +4 -0
  181. package/dist/features/workflow-recommender/executor.d.ts.map +1 -0
  182. package/dist/features/workflow-recommender/executor.js +10 -0
  183. package/dist/features/workflow-recommender/executor.js.map +1 -0
  184. package/dist/features/workflow-recommender/git-analyzer.d.ts +5 -0
  185. package/dist/features/workflow-recommender/git-analyzer.d.ts.map +1 -0
  186. package/dist/features/workflow-recommender/git-analyzer.js +22 -0
  187. package/dist/features/workflow-recommender/git-analyzer.js.map +1 -0
  188. package/dist/features/workflow-recommender/index.d.ts +5 -8
  189. package/dist/features/workflow-recommender/index.d.ts.map +1 -1
  190. package/dist/features/workflow-recommender/index.js +4 -5
  191. package/dist/features/workflow-recommender/index.js.map +1 -1
  192. package/dist/features/workflow-recommender/intent-classifier.d.ts +2 -5
  193. package/dist/features/workflow-recommender/intent-classifier.d.ts.map +1 -1
  194. package/dist/features/workflow-recommender/intent-classifier.js +21 -21
  195. package/dist/features/workflow-recommender/intent-classifier.js.map +1 -1
  196. package/dist/features/workflow-recommender/types.d.ts +29 -17
  197. package/dist/features/workflow-recommender/types.d.ts.map +1 -1
  198. package/dist/features/workflow-recommender/types.js +0 -3
  199. package/dist/features/workflow-recommender/types.js.map +1 -1
  200. package/dist/hooks/workflow-gate/assumption-extractor.d.ts +6 -0
  201. package/dist/hooks/workflow-gate/assumption-extractor.d.ts.map +1 -0
  202. package/dist/hooks/workflow-gate/assumption-extractor.js +27 -0
  203. package/dist/hooks/workflow-gate/assumption-extractor.js.map +1 -0
  204. package/dist/hooks/workflow-gate/git-helper.d.ts +5 -0
  205. package/dist/hooks/workflow-gate/git-helper.d.ts.map +1 -0
  206. package/dist/hooks/workflow-gate/git-helper.js +22 -0
  207. package/dist/hooks/workflow-gate/git-helper.js.map +1 -0
  208. package/dist/hooks/workflow-gate/index.d.ts +6 -0
  209. package/dist/hooks/workflow-gate/index.d.ts.map +1 -1
  210. package/dist/hooks/workflow-gate/index.js +70 -1
  211. package/dist/hooks/workflow-gate/index.js.map +1 -1
  212. package/dist/hooks/workflow-gate/quality-gate-sync.d.ts +10 -0
  213. package/dist/hooks/workflow-gate/quality-gate-sync.d.ts.map +1 -0
  214. package/dist/hooks/workflow-gate/quality-gate-sync.js +39 -0
  215. package/dist/hooks/workflow-gate/quality-gate-sync.js.map +1 -0
  216. package/dist/lib/file-lock.js +1 -1
  217. package/dist/lib/file-lock.js.map +1 -1
  218. package/dist/workers/factory.d.ts.map +1 -1
  219. package/dist/workers/factory.js +1 -0
  220. package/dist/workers/factory.js.map +1 -1
  221. package/docs/CLAUDE.md +1 -1
  222. package/docs/INSTALL.md +2 -2
  223. package/docs/REFERENCE.md +1 -1
  224. package/docs/standards/README.md +1 -1
  225. package/package.json +1 -1
  226. package/scripts/e2e-bridge-cli.mjs +108 -0
  227. package/scripts/verify-coverage.sh +33 -0
  228. package/skills/tutorial/SKILL.md +32 -0
@@ -0,0 +1,2 @@
1
+ export declare function unlockAchievement(id: string): void;
2
+ //# sourceMappingURL=achievements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"achievements.d.ts","sourceRoot":"","sources":["../../../src/features/onboarding/achievements.ts"],"names":[],"mappings":"AAkCA,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAKlD"}
@@ -0,0 +1,33 @@
1
+ const ACHIEVEMENTS = [
2
+ {
3
+ id: 'first_autopilot',
4
+ name: '自动驾驶员',
5
+ description: '完成第一个 autopilot 任务',
6
+ icon: '🚀'
7
+ },
8
+ {
9
+ id: 'bug_hunter',
10
+ name: 'Bug猎人',
11
+ description: '成功诊断并修复问题',
12
+ icon: '🐛'
13
+ },
14
+ {
15
+ id: 'code_guardian',
16
+ name: '代码守护者',
17
+ description: '完成第一次代码审查',
18
+ icon: '🛡️'
19
+ },
20
+ {
21
+ id: 'tutorial_master',
22
+ name: '教程大师',
23
+ description: '完成所有教程场景',
24
+ icon: '🏆'
25
+ }
26
+ ];
27
+ export function unlockAchievement(id) {
28
+ const achievement = ACHIEVEMENTS.find(a => a.id === id);
29
+ if (achievement) {
30
+ console.log(`\n${achievement.icon} 成就解锁:${achievement.name}\n${achievement.description}\n`);
31
+ }
32
+ }
33
+ //# sourceMappingURL=achievements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"achievements.js","sourceRoot":"","sources":["../../../src/features/onboarding/achievements.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY,GAAkB;IAClC;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,IAAI;KACX;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,IAAI;KACX;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,KAAK;KACZ;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,SAAS,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AnalyticsEvent } from './types.js';
2
+ export declare class AnalyticsCollector {
3
+ static track(type: AnalyticsEvent['type'], data?: Partial<AnalyticsEvent>): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../src/features/onboarding/analytics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,qBAAa,kBAAkB;WAChB,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBhG"}
@@ -0,0 +1,23 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ const ANALYTICS_PATH = '.omc/onboarding/analytics.json';
4
+ export class AnalyticsCollector {
5
+ static async track(type, data) {
6
+ const event = {
7
+ type,
8
+ timestamp: new Date().toISOString(),
9
+ ...data
10
+ };
11
+ let events = [];
12
+ try {
13
+ const content = await fs.readFile(ANALYTICS_PATH, 'utf-8');
14
+ events = JSON.parse(content).events || [];
15
+ }
16
+ catch {
17
+ await fs.mkdir(path.dirname(ANALYTICS_PATH), { recursive: true });
18
+ }
19
+ events.push(event);
20
+ await fs.writeFile(ANALYTICS_PATH, JSON.stringify({ events }, null, 2));
21
+ }
22
+ }
23
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/features/onboarding/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAExD,MAAM,OAAO,kBAAkB;IAC7B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAA4B,EAAE,IAA8B;QAC7E,MAAM,KAAK,GAAmB;YAC5B,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG,IAAI;SACR,CAAC;QAEF,IAAI,MAAM,GAAqB,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export { TutorialEngine } from './tutorial.js';
2
+ export { StateManager } from './state-manager.js';
3
+ export { ScenarioRunner } from './scenario-runner.js';
4
+ export * from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/onboarding/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { TutorialEngine } from './tutorial.js';
2
+ export { StateManager } from './state-manager.js';
3
+ export { ScenarioRunner } from './scenario-runner.js';
4
+ export * from './types.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/onboarding/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TutorialScenario, TutorialStep } from './types.js';
2
+ export declare class ScenarioRunner {
3
+ private scenario;
4
+ constructor(scenario: TutorialScenario);
5
+ run(): Promise<boolean>;
6
+ runStep(step: TutorialStep): Promise<boolean>;
7
+ }
8
+ //# sourceMappingURL=scenario-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-runner.d.ts","sourceRoot":"","sources":["../../../src/features/onboarding/scenario-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,gBAAgB;IAExC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;IAYvB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAYpD"}
@@ -0,0 +1,27 @@
1
+ export class ScenarioRunner {
2
+ scenario;
3
+ constructor(scenario) {
4
+ this.scenario = scenario;
5
+ }
6
+ async run() {
7
+ console.log(`\n=== ${this.scenario.title} ===`);
8
+ console.log(this.scenario.description);
9
+ for (const step of this.scenario.steps) {
10
+ const success = await this.runStep(step);
11
+ if (!success)
12
+ return false;
13
+ }
14
+ return true;
15
+ }
16
+ async runStep(step) {
17
+ console.log(`\n[${step.id}] ${step.title}`);
18
+ console.log(step.instruction);
19
+ if (step.example) {
20
+ console.log(`\n示例:\n ${step.example}\n`);
21
+ }
22
+ console.log(`验证:${step.validation}`);
23
+ console.log('✓ 步骤完成');
24
+ return true;
25
+ }
26
+ }
27
+ //# sourceMappingURL=scenario-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-runner.js","sourceRoot":"","sources":["../../../src/features/onboarding/scenario-runner.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAG,CAAC;IAElD,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { TutorialScenario } from '../types.js';
2
+ export declare const debugScenario: TutorialScenario;
3
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,aAAa,EAAE,gBAgC3B,CAAC"}
@@ -0,0 +1,34 @@
1
+ export const debugScenario = {
2
+ id: 'debug',
3
+ title: '调试问题',
4
+ description: '学习使用 debugger 诊断和修复问题',
5
+ steps: [
6
+ {
7
+ id: 'debug-1',
8
+ title: '发现问题',
9
+ instruction: '描述遇到的问题或错误',
10
+ example: '/ultrapower:analyze "登录功能返回 500 错误"',
11
+ validation: 'debugger 开始分析'
12
+ },
13
+ {
14
+ id: 'debug-2',
15
+ title: '根因分析',
16
+ instruction: 'debugger 会分析日志、代码和堆栈',
17
+ validation: '看到根因分析报告'
18
+ },
19
+ {
20
+ id: 'debug-3',
21
+ title: '查看建议',
22
+ instruction: 'debugger 提供修复建议',
23
+ validation: '收到具体修复方案'
24
+ },
25
+ {
26
+ id: 'debug-4',
27
+ title: '应用修复',
28
+ instruction: '使用 executor 应用修复',
29
+ example: 'Task(subagent_type="ultrapower:executor", prompt="应用修复")',
30
+ validation: '修复已应用且问题解决'
31
+ }
32
+ ]
33
+ };
34
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/debug.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE;QACL;YACE,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,YAAY;YACzB,OAAO,EAAE,qCAAqC;YAC9C,UAAU,EAAE,eAAe;SAC5B;QACD;YACE,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,sBAAsB;YACnC,UAAU,EAAE,UAAU;SACvB;QACD;YACE,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,iBAAiB;YAC9B,UAAU,EAAE,UAAU;SACvB;QACD;YACE,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,kBAAkB;YAC/B,OAAO,EAAE,0DAA0D;YACnE,UAAU,EAAE,YAAY;SACzB;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TutorialScenario } from '../types.js';
2
+ export declare const implementScenario: TutorialScenario;
3
+ //# sourceMappingURL=implement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement.d.ts","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/implement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,iBAAiB,EAAE,gBAyB/B,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const implementScenario = {
2
+ id: 'implement',
3
+ title: '实现功能',
4
+ description: '学习使用 autopilot 从想法到代码',
5
+ steps: [
6
+ {
7
+ id: 'step1',
8
+ title: '描述需求',
9
+ instruction: '尝试说:"创建一个计算斐波那契数列的函数"',
10
+ example: '/ultrapower:autopilot "创建一个计算斐波那契数列的函数"',
11
+ validation: 'autopilot 开始执行'
12
+ },
13
+ {
14
+ id: 'step2',
15
+ title: '观察执行',
16
+ instruction: 'autopilot 会自动规划、实现、测试。观察输出中的各个阶段。',
17
+ validation: '看到规划、实现、测试阶段'
18
+ },
19
+ {
20
+ id: 'step3',
21
+ title: '验证结果',
22
+ instruction: '检查生成的代码文件,确认功能已实现。',
23
+ validation: '代码文件已生成且功能正确'
24
+ }
25
+ ]
26
+ };
27
+ //# sourceMappingURL=implement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/implement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE;QACL;YACE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,uBAAuB;YACpC,OAAO,EAAE,yCAAyC;YAClD,UAAU,EAAE,gBAAgB;SAC7B;QACD;YACE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,mCAAmC;YAChD,UAAU,EAAE,cAAc;SAC3B;QACD;YACE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,oBAAoB;YACjC,UAAU,EAAE,cAAc;SAC3B;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TutorialScenario } from '../types.js';
2
+ export declare const refactorScenario: TutorialScenario;
3
+ //# sourceMappingURL=refactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor.d.ts","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/refactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,gBAAgB,EAAE,gBAkC9B,CAAC"}
@@ -0,0 +1,36 @@
1
+ export const refactorScenario = {
2
+ id: 'refactor',
3
+ title: '重构工作流',
4
+ description: '学习使用 architect 和 executor 进行安全重构',
5
+ steps: [
6
+ {
7
+ id: 'refactor-1',
8
+ title: '架构分析',
9
+ instruction: '使用 architect agent 分析代码结构',
10
+ example: 'Task(subagent_type="ultrapower:architect", prompt="分析 auth 模块的架构")',
11
+ validation: 'architect agent 返回架构分析报告'
12
+ },
13
+ {
14
+ id: 'refactor-2',
15
+ title: '重构计划',
16
+ instruction: '使用 planner 创建重构计划',
17
+ example: 'Task(subagent_type="ultrapower:planner", prompt="创建 auth 模块重构计划")',
18
+ validation: 'planner 返回分步重构计划'
19
+ },
20
+ {
21
+ id: 'refactor-3',
22
+ title: '执行重构',
23
+ instruction: '使用 executor 执行重构',
24
+ example: 'Task(subagent_type="ultrapower:executor", prompt="按计划重构 auth 模块")',
25
+ validation: 'executor 完成重构并通过测试'
26
+ },
27
+ {
28
+ id: 'refactor-4',
29
+ title: '验证结果',
30
+ instruction: '使用 verifier 验证重构结果',
31
+ example: 'Task(subagent_type="ultrapower:verifier", prompt="验证 auth 模块重构")',
32
+ validation: 'verifier 确认重构成功且无回归'
33
+ }
34
+ ]
35
+ };
36
+ //# sourceMappingURL=refactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor.js","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/refactor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,kCAAkC;IAC/C,KAAK,EAAE;QACL;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,2BAA2B;YACxC,OAAO,EAAE,oEAAoE;YAC7E,UAAU,EAAE,0BAA0B;SACvC;QACD;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE,mEAAmE;YAC5E,UAAU,EAAE,kBAAkB;SAC/B;QACD;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,kBAAkB;YAC/B,OAAO,EAAE,mEAAmE;YAC5E,UAAU,EAAE,oBAAoB;SACjC;QACD;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,oBAAoB;YACjC,OAAO,EAAE,kEAAkE;YAC3E,UAAU,EAAE,qBAAqB;SAClC;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TutorialScenario } from '../types.js';
2
+ export declare const reviewScenario: TutorialScenario;
3
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,gBAyB5B,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const reviewScenario = {
2
+ id: 'review',
3
+ title: '代码审查',
4
+ description: '学习使用多维度代码审查',
5
+ steps: [
6
+ {
7
+ id: 'review-1',
8
+ title: '准备代码',
9
+ instruction: '使用前面生成的代码作为审查对象',
10
+ validation: '代码已准备'
11
+ },
12
+ {
13
+ id: 'review-2',
14
+ title: '启动审查',
15
+ instruction: '运行全面代码审查',
16
+ example: '/ultrapower:code-review "审查实现"',
17
+ validation: 'code-reviewer 开始审查'
18
+ },
19
+ {
20
+ id: 'review-3',
21
+ title: '查看报告',
22
+ instruction: '审查报告包含:风格、质量、安全、性能等维度',
23
+ validation: '收到多维度审查报告'
24
+ }
25
+ ]
26
+ };
27
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE;QACL;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,iBAAiB;YAC9B,UAAU,EAAE,OAAO;SACpB;QACD;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,UAAU;YACvB,OAAO,EAAE,gCAAgC;YACzC,UAAU,EAAE,oBAAoB;SACjC;QACD;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,uBAAuB;YACpC,UAAU,EAAE,WAAW;SACxB;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TutorialScenario } from '../types.js';
2
+ export declare const securityScenario: TutorialScenario;
3
+ //# sourceMappingURL=security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,gBAAgB,EAAE,gBA2B9B,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const securityScenario = {
2
+ id: 'security',
3
+ title: '安全审查工作流',
4
+ description: '学习使用 security-reviewer 进行安全审查',
5
+ steps: [
6
+ {
7
+ id: 'security-1',
8
+ title: '安全扫描',
9
+ instruction: '使用 security-reviewer 扫描代码',
10
+ example: 'Task(subagent_type="ultrapower:security-reviewer", prompt="审查 API 安全性")',
11
+ validation: 'security-reviewer 返回安全报告'
12
+ },
13
+ {
14
+ id: 'security-2',
15
+ title: '修复漏洞',
16
+ instruction: '使用 executor 修复发现的漏洞',
17
+ example: 'Task(subagent_type="ultrapower:executor", prompt="修复安全漏洞")',
18
+ validation: 'executor 完成修复'
19
+ },
20
+ {
21
+ id: 'security-3',
22
+ title: '重新验证',
23
+ instruction: '再次运行安全审查',
24
+ example: 'Task(subagent_type="ultrapower:security-reviewer", prompt="验证修复")',
25
+ validation: 'security-reviewer 确认无漏洞'
26
+ }
27
+ ]
28
+ };
29
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/security.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,+BAA+B;IAC5C,KAAK,EAAE;QACL;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,2BAA2B;YACxC,OAAO,EAAE,yEAAyE;YAClF,UAAU,EAAE,0BAA0B;SACvC;QACD;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE,4DAA4D;YACrE,UAAU,EAAE,eAAe;SAC5B;QACD;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,UAAU;YACvB,OAAO,EAAE,mEAAmE;YAC5E,UAAU,EAAE,yBAAyB;SACtC;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TutorialScenario } from '../types.js';
2
+ export declare const teamScenario: TutorialScenario;
3
+ //# sourceMappingURL=team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/team.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,YAAY,EAAE,gBA2B1B,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const teamScenario = {
2
+ id: 'team',
3
+ title: 'Team 协作工作流',
4
+ description: '学习使用 team 模式进行多 agent 协作',
5
+ steps: [
6
+ {
7
+ id: 'team-1',
8
+ title: '创建团队',
9
+ instruction: '使用 /team 创建协作团队',
10
+ example: '/team 3:executor "实现用户认证功能"',
11
+ validation: 'team 创建成功,3 个 executor 开始工作'
12
+ },
13
+ {
14
+ id: 'team-2',
15
+ title: '监控进度',
16
+ instruction: '使用 TaskList 查看任务进度',
17
+ example: 'TaskList()',
18
+ validation: '显示所有任务状态'
19
+ },
20
+ {
21
+ id: 'team-3',
22
+ title: '团队通信',
23
+ instruction: '使用 SendMessage 与队友通信',
24
+ example: 'SendMessage(type="message", recipient="worker-1", content="需要帮助")',
25
+ validation: '消息成功发送'
26
+ }
27
+ ]
28
+ };
29
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../../../../src/features/onboarding/scenarios/team.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,0BAA0B;IACvC,KAAK,EAAE;QACL;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,iBAAiB;YAC9B,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,6BAA6B;SAC1C;QACD;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,oBAAoB;YACjC,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,UAAU;SACvB;QACD;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,mEAAmE;YAC5E,UAAU,EAAE,QAAQ;SACrB;KACF;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { TutorialState } from './types.js';
2
+ export declare class StateManager {
3
+ static load(): Promise<TutorialState | null>;
4
+ static save(state: TutorialState): Promise<void>;
5
+ static update(updates: Partial<TutorialState>): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=state-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../../src/features/onboarding/state-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,qBAAa,YAAY;WACV,IAAI,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;WASrC,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;WAKzC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAMpE"}
@@ -0,0 +1,25 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ const STATE_PATH = path.join(process.cwd(), '.omc/onboarding/tutorial-state.json');
4
+ export class StateManager {
5
+ static async load() {
6
+ try {
7
+ const data = await fs.readFile(STATE_PATH, 'utf-8');
8
+ return JSON.parse(data);
9
+ }
10
+ catch {
11
+ return null;
12
+ }
13
+ }
14
+ static async save(state) {
15
+ await fs.mkdir(path.dirname(STATE_PATH), { recursive: true });
16
+ await fs.writeFile(STATE_PATH, JSON.stringify(state, null, 2));
17
+ }
18
+ static async update(updates) {
19
+ const current = await this.load();
20
+ if (current) {
21
+ await this.save({ ...current, ...updates });
22
+ }
23
+ }
24
+ }
25
+ //# sourceMappingURL=state-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../../src/features/onboarding/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qCAAqC,CAAC,CAAC;AAEnF,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAoB;QACpC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAA+B;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { TutorialState } from './types.js';
2
+ export declare class TutorialEngine {
3
+ static checkAndRun(): Promise<void>;
4
+ static start(): Promise<void>;
5
+ static resume(state: TutorialState): Promise<void>;
6
+ static runScenarios(): Promise<void>;
7
+ static complete(): Promise<void>;
8
+ static skip(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=tutorial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tutorial.d.ts","sourceRoot":"","sources":["../../../src/features/onboarding/tutorial.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyBhD,qBAAa,cAAc;WACZ,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;WAU5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;WAgBtB,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;WAgB3C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;WAmB7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;WAwBzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAInC"}
@@ -0,0 +1,107 @@
1
+ import { StateManager } from './state-manager.js';
2
+ import { ScenarioRunner } from './scenario-runner.js';
3
+ import { implementScenario } from './scenarios/implement.js';
4
+ import { debugScenario } from './scenarios/debug.js';
5
+ import { reviewScenario } from './scenarios/review.js';
6
+ import { refactorScenario } from './scenarios/refactor.js';
7
+ import { securityScenario } from './scenarios/security.js';
8
+ import { teamScenario } from './scenarios/team.js';
9
+ const ALL_SCENARIOS = [
10
+ implementScenario,
11
+ debugScenario,
12
+ reviewScenario,
13
+ refactorScenario,
14
+ securityScenario,
15
+ teamScenario
16
+ ];
17
+ const WELCOME_MESSAGE = `
18
+ 🎓 欢迎使用 ultrapower!
19
+
20
+ 这是一个交互式教程,帮助你快速掌握核心功能:
21
+ 1. 实现功能 - 使用 autopilot 自动化开发
22
+ 2. 修复Bug - 使用 debugger 诊断问题
23
+ 3. 代码审查 - 使用多维度审查保证质量
24
+ 4. 安全重构 - 使用 architect 和 executor 重构
25
+ 5. 安全审查 - 使用 security-reviewer 扫描漏洞
26
+ 6. 团队协作 - 使用 team 模式多 agent 协作
27
+
28
+ 随时输入 'skip' 跳过教程。
29
+ `;
30
+ export class TutorialEngine {
31
+ static async checkAndRun() {
32
+ const state = await StateManager.load();
33
+ if (!state) {
34
+ await this.start();
35
+ }
36
+ else if (!state.completed && !state.skipped) {
37
+ await this.resume(state);
38
+ }
39
+ }
40
+ static async start() {
41
+ console.log(WELCOME_MESSAGE);
42
+ const state = {
43
+ completed: false,
44
+ skipped: false,
45
+ completedScenarios: [],
46
+ startedAt: new Date().toISOString(),
47
+ exitCount: 0,
48
+ totalTimeSpent: 0
49
+ };
50
+ await StateManager.save(state);
51
+ await this.runScenarios();
52
+ }
53
+ static async resume(state) {
54
+ const remaining = ALL_SCENARIOS.filter(s => !state.completedScenarios.includes(s.id));
55
+ console.log(`\n检测到未完成的教程进度:
56
+ 已完成:${state.completedScenarios.join(', ') || '无'}
57
+ 剩余:${remaining.map(s => s.title).join(', ')}
58
+
59
+ 继续教程将从下一个场景开始。
60
+ `);
61
+ await StateManager.update({ exitCount: state.exitCount + 1 });
62
+ await this.runScenarios();
63
+ }
64
+ static async runScenarios() {
65
+ const state = await StateManager.load();
66
+ if (!state)
67
+ return;
68
+ for (const scenario of ALL_SCENARIOS) {
69
+ if (state.completedScenarios.includes(scenario.id))
70
+ continue;
71
+ const runner = new ScenarioRunner(scenario);
72
+ const success = await runner.run();
73
+ if (success) {
74
+ const updated = [...state.completedScenarios, scenario.id];
75
+ await StateManager.update({ completedScenarios: updated });
76
+ }
77
+ }
78
+ await this.complete();
79
+ }
80
+ static async complete() {
81
+ await StateManager.update({
82
+ completed: true,
83
+ completedAt: new Date().toISOString()
84
+ });
85
+ console.log(`
86
+ 🎉 恭喜完成教程!
87
+
88
+ 你已掌握:
89
+ ✓ 使用 autopilot 实现功能
90
+ ✓ 使用 debugger 诊断问题
91
+ ✓ 使用 code-review 保证质量
92
+ ✓ 使用 architect 进行安全重构
93
+ ✓ 使用 security-reviewer 扫描漏洞
94
+ ✓ 使用 team 模式多 agent 协作
95
+
96
+ 下一步建议:
97
+ 1. 运行 /ultrapower:omc-help 查看所有命令
98
+ 2. 尝试 /ultrapower:wizard 选择适合的工作流
99
+ 3. 查看文档:docs/standards/user-guide.md
100
+ `);
101
+ }
102
+ static async skip() {
103
+ await StateManager.update({ skipped: true });
104
+ console.log('教程已跳过。随时运行 /ultrapower:omc-help 查看帮助。');
105
+ }
106
+ }
107
+ //# sourceMappingURL=tutorial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tutorial.js","sourceRoot":"","sources":["../../../src/features/onboarding/tutorial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export interface TutorialState {
2
+ completed: boolean;
3
+ skipped: boolean;
4
+ completedScenarios: string[];
5
+ startedAt: string;
6
+ completedAt?: string;
7
+ lastExitAt?: string;
8
+ exitCount: number;
9
+ totalTimeSpent: number;
10
+ }
11
+ export interface TutorialScenario {
12
+ id: string;
13
+ title: string;
14
+ description: string;
15
+ steps: TutorialStep[];
16
+ }
17
+ export interface TutorialStep {
18
+ id: string;
19
+ title: string;
20
+ instruction: string;
21
+ example?: string;
22
+ validation?: string;
23
+ }
24
+ export interface AnalyticsEvent {
25
+ type: 'tutorial_start' | 'scenario_complete' | 'tutorial_exit' | 'tutorial_resume' | 'tutorial_complete' | 'tutorial_skip';
26
+ timestamp: string;
27
+ scenario?: string;
28
+ completedScenarios?: string[];
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map