@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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/bridge/codex-server.cjs +1 -0
- package/bridge/gemini-server.cjs +1 -0
- package/bridge/team-bridge.cjs +1 -0
- package/dist/cli/commands/config-notify-profile.d.ts.map +1 -1
- package/dist/cli/commands/config-notify-profile.js.map +1 -1
- package/dist/cli/commands/config-stop-callback.d.ts.map +1 -1
- package/dist/cli/commands/config-stop-callback.js +1 -1
- package/dist/cli/commands/config-stop-callback.js.map +1 -1
- package/dist/cli/commands/dashboard.d.ts.map +1 -1
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/progress/examples.js.map +1 -1
- package/dist/cli/tutorial/index.js.map +1 -1
- package/dist/cli/utils/test-prompt.d.ts +1 -1
- package/dist/cli/utils/test-prompt.d.ts.map +1 -1
- package/dist/cli/utils/test-prompt.js +1 -1
- package/dist/cli/utils/test-prompt.js.map +1 -1
- package/dist/features/analytics-dashboard/dashboard.d.ts +4 -0
- package/dist/features/analytics-dashboard/dashboard.d.ts.map +1 -0
- package/dist/features/analytics-dashboard/dashboard.js +24 -0
- package/dist/features/analytics-dashboard/dashboard.js.map +1 -0
- package/dist/features/analytics-dashboard/index.d.ts +7 -0
- package/dist/features/analytics-dashboard/index.d.ts.map +1 -0
- package/dist/features/analytics-dashboard/index.js +5 -0
- package/dist/features/analytics-dashboard/index.js.map +1 -0
- package/dist/features/analytics-dashboard/metrics-collector.d.ts +7 -0
- package/dist/features/analytics-dashboard/metrics-collector.d.ts.map +1 -0
- package/dist/features/analytics-dashboard/metrics-collector.js +58 -0
- package/dist/features/analytics-dashboard/metrics-collector.js.map +1 -0
- package/dist/features/analytics-dashboard/storage.d.ts +6 -0
- package/dist/features/analytics-dashboard/storage.d.ts.map +1 -0
- package/dist/features/analytics-dashboard/storage.js +20 -0
- package/dist/features/analytics-dashboard/storage.js.map +1 -0
- package/dist/features/analytics-dashboard/tracker.d.ts +11 -0
- package/dist/features/analytics-dashboard/tracker.d.ts.map +1 -0
- package/dist/features/analytics-dashboard/tracker.js +17 -0
- package/dist/features/analytics-dashboard/tracker.js.map +1 -0
- package/dist/features/analytics-dashboard/types.d.ts +20 -0
- package/dist/features/analytics-dashboard/types.d.ts.map +1 -0
- package/dist/features/analytics-dashboard/types.js +2 -0
- package/dist/features/analytics-dashboard/types.js.map +1 -0
- package/dist/features/assumption-validator/index.d.ts +3 -0
- package/dist/features/assumption-validator/index.d.ts.map +1 -0
- package/dist/features/assumption-validator/index.js +3 -0
- package/dist/features/assumption-validator/index.js.map +1 -0
- package/dist/features/assumption-validator/lsp-checker.d.ts +6 -0
- package/dist/features/assumption-validator/lsp-checker.d.ts.map +1 -0
- package/dist/features/assumption-validator/lsp-checker.js +18 -0
- package/dist/features/assumption-validator/lsp-checker.js.map +1 -0
- package/dist/features/assumption-validator/validator.d.ts +14 -0
- package/dist/features/assumption-validator/validator.d.ts.map +1 -0
- package/dist/features/assumption-validator/validator.js +9 -0
- package/dist/features/assumption-validator/validator.js.map +1 -0
- package/dist/features/document-lifecycle/archiver.js.map +1 -1
- package/dist/features/document-lifecycle/versioning.js +1 -1
- package/dist/features/document-lifecycle/versioning.js.map +1 -1
- package/dist/features/onboarding/achievements.d.ts +2 -0
- package/dist/features/onboarding/achievements.d.ts.map +1 -0
- package/dist/features/onboarding/achievements.js +33 -0
- package/dist/features/onboarding/achievements.js.map +1 -0
- package/dist/features/onboarding/analytics.d.ts +5 -0
- package/dist/features/onboarding/analytics.d.ts.map +1 -0
- package/dist/features/onboarding/analytics.js +23 -0
- package/dist/features/onboarding/analytics.js.map +1 -0
- package/dist/features/onboarding/index.d.ts +5 -0
- package/dist/features/onboarding/index.d.ts.map +1 -0
- package/dist/features/onboarding/index.js +5 -0
- package/dist/features/onboarding/index.js.map +1 -0
- package/dist/features/onboarding/scenario-runner.d.ts +8 -0
- package/dist/features/onboarding/scenario-runner.d.ts.map +1 -0
- package/dist/features/onboarding/scenario-runner.js +27 -0
- package/dist/features/onboarding/scenario-runner.js.map +1 -0
- package/dist/features/onboarding/scenarios/debug.d.ts +3 -0
- package/dist/features/onboarding/scenarios/debug.d.ts.map +1 -0
- package/dist/features/onboarding/scenarios/debug.js +34 -0
- package/dist/features/onboarding/scenarios/debug.js.map +1 -0
- package/dist/features/onboarding/scenarios/implement.d.ts +3 -0
- package/dist/features/onboarding/scenarios/implement.d.ts.map +1 -0
- package/dist/features/onboarding/scenarios/implement.js +27 -0
- package/dist/features/onboarding/scenarios/implement.js.map +1 -0
- package/dist/features/onboarding/scenarios/refactor.d.ts +3 -0
- package/dist/features/onboarding/scenarios/refactor.d.ts.map +1 -0
- package/dist/features/onboarding/scenarios/refactor.js +36 -0
- package/dist/features/onboarding/scenarios/refactor.js.map +1 -0
- package/dist/features/onboarding/scenarios/review.d.ts +3 -0
- package/dist/features/onboarding/scenarios/review.d.ts.map +1 -0
- package/dist/features/onboarding/scenarios/review.js +27 -0
- package/dist/features/onboarding/scenarios/review.js.map +1 -0
- package/dist/features/onboarding/scenarios/security.d.ts +3 -0
- package/dist/features/onboarding/scenarios/security.d.ts.map +1 -0
- package/dist/features/onboarding/scenarios/security.js +29 -0
- package/dist/features/onboarding/scenarios/security.js.map +1 -0
- package/dist/features/onboarding/scenarios/team.d.ts +3 -0
- package/dist/features/onboarding/scenarios/team.d.ts.map +1 -0
- package/dist/features/onboarding/scenarios/team.js +29 -0
- package/dist/features/onboarding/scenarios/team.js.map +1 -0
- package/dist/features/onboarding/state-manager.d.ts +7 -0
- package/dist/features/onboarding/state-manager.d.ts.map +1 -0
- package/dist/features/onboarding/state-manager.js +25 -0
- package/dist/features/onboarding/state-manager.js.map +1 -0
- package/dist/features/onboarding/tutorial.d.ts +10 -0
- package/dist/features/onboarding/tutorial.d.ts.map +1 -0
- package/dist/features/onboarding/tutorial.js +107 -0
- package/dist/features/onboarding/tutorial.js.map +1 -0
- package/dist/features/onboarding/types.d.ts +30 -0
- package/dist/features/onboarding/types.d.ts.map +1 -0
- package/dist/features/onboarding/types.js +2 -0
- package/dist/features/onboarding/types.js.map +1 -0
- package/dist/features/personalized-recommendation/behavior-tracker.d.ts +8 -0
- package/dist/features/personalized-recommendation/behavior-tracker.d.ts.map +1 -0
- package/dist/features/personalized-recommendation/behavior-tracker.js +32 -0
- package/dist/features/personalized-recommendation/behavior-tracker.js.map +1 -0
- package/dist/features/personalized-recommendation/index.d.ts +4 -0
- package/dist/features/personalized-recommendation/index.d.ts.map +1 -0
- package/dist/features/personalized-recommendation/index.js +3 -0
- package/dist/features/personalized-recommendation/index.js.map +1 -0
- package/dist/features/personalized-recommendation/recommender.d.ts +5 -0
- package/dist/features/personalized-recommendation/recommender.d.ts.map +1 -0
- package/dist/features/personalized-recommendation/recommender.js +25 -0
- package/dist/features/personalized-recommendation/recommender.js.map +1 -0
- package/dist/features/personalized-recommendation/types.d.ts +19 -0
- package/dist/features/personalized-recommendation/types.d.ts.map +1 -0
- package/dist/features/personalized-recommendation/types.js +2 -0
- package/dist/features/personalized-recommendation/types.js.map +1 -0
- package/dist/features/quality-gate/audit-logger.d.ts +2 -0
- package/dist/features/quality-gate/audit-logger.d.ts.map +1 -0
- package/dist/features/quality-gate/audit-logger.js +10 -0
- package/dist/features/quality-gate/audit-logger.js.map +1 -0
- package/dist/features/quality-gate/gate-checker.d.ts +7 -0
- package/dist/features/quality-gate/gate-checker.d.ts.map +1 -0
- package/dist/features/quality-gate/gate-checker.js +36 -0
- package/dist/features/quality-gate/gate-checker.js.map +1 -0
- package/dist/features/quality-gate/index.d.ts +3 -0
- package/dist/features/quality-gate/index.d.ts.map +1 -0
- package/dist/features/quality-gate/index.js +3 -0
- package/dist/features/quality-gate/index.js.map +1 -0
- package/dist/features/session-recovery/index.d.ts +20 -0
- package/dist/features/session-recovery/index.d.ts.map +1 -0
- package/dist/features/session-recovery/index.js +23 -0
- package/dist/features/session-recovery/index.js.map +1 -0
- package/dist/features/session-recovery/knowledge-retriever.d.ts +12 -0
- package/dist/features/session-recovery/knowledge-retriever.d.ts.map +1 -0
- package/dist/features/session-recovery/knowledge-retriever.js +74 -0
- package/dist/features/session-recovery/knowledge-retriever.js.map +1 -0
- package/dist/features/session-recovery/session-detector.d.ts +12 -0
- package/dist/features/session-recovery/session-detector.d.ts.map +1 -0
- package/dist/features/session-recovery/session-detector.js +30 -0
- package/dist/features/session-recovery/session-detector.js.map +1 -0
- package/dist/features/speckit-core/constitution.d.ts.map +1 -1
- package/dist/features/speckit-core/constitution.js +17 -15
- package/dist/features/speckit-core/constitution.js.map +1 -1
- package/dist/features/speckit-core/plan.d.ts.map +1 -1
- package/dist/features/speckit-core/plan.js +19 -18
- package/dist/features/speckit-core/plan.js.map +1 -1
- package/dist/features/speckit-core/specify.d.ts +1 -1
- package/dist/features/speckit-core/specify.d.ts.map +1 -1
- package/dist/features/speckit-core/specify.js +1 -1
- package/dist/features/speckit-core/specify.js.map +1 -1
- package/dist/features/speckit-core/tasks.d.ts.map +1 -1
- package/dist/features/speckit-core/tasks.js +0 -1
- package/dist/features/speckit-core/tasks.js.map +1 -1
- package/dist/features/speckit-integration/axiom-bridge.d.ts.map +1 -1
- package/dist/features/speckit-integration/axiom-bridge.js.map +1 -1
- package/dist/features/speckit-integration/recommender.js.map +1 -1
- package/dist/features/speckit-integration/router.d.ts.map +1 -1
- package/dist/features/speckit-integration/router.js.map +1 -1
- package/dist/features/state-manager/progress-tracker.d.ts.map +1 -1
- package/dist/features/state-manager/progress-tracker.js.map +1 -1
- package/dist/features/workflow-recommender/auto-selector.d.ts +9 -0
- package/dist/features/workflow-recommender/auto-selector.d.ts.map +1 -0
- package/dist/features/workflow-recommender/auto-selector.js +23 -0
- package/dist/features/workflow-recommender/auto-selector.js.map +1 -0
- package/dist/features/workflow-recommender/context-enhancer.d.ts +14 -0
- package/dist/features/workflow-recommender/context-enhancer.d.ts.map +1 -0
- package/dist/features/workflow-recommender/context-enhancer.js +40 -0
- package/dist/features/workflow-recommender/context-enhancer.js.map +1 -0
- package/dist/features/workflow-recommender/executor.d.ts +4 -0
- package/dist/features/workflow-recommender/executor.d.ts.map +1 -0
- package/dist/features/workflow-recommender/executor.js +10 -0
- package/dist/features/workflow-recommender/executor.js.map +1 -0
- package/dist/features/workflow-recommender/git-analyzer.d.ts +5 -0
- package/dist/features/workflow-recommender/git-analyzer.d.ts.map +1 -0
- package/dist/features/workflow-recommender/git-analyzer.js +22 -0
- package/dist/features/workflow-recommender/git-analyzer.js.map +1 -0
- package/dist/features/workflow-recommender/index.d.ts +5 -8
- package/dist/features/workflow-recommender/index.d.ts.map +1 -1
- package/dist/features/workflow-recommender/index.js +4 -5
- package/dist/features/workflow-recommender/index.js.map +1 -1
- package/dist/features/workflow-recommender/intent-classifier.d.ts +2 -5
- package/dist/features/workflow-recommender/intent-classifier.d.ts.map +1 -1
- package/dist/features/workflow-recommender/intent-classifier.js +21 -21
- package/dist/features/workflow-recommender/intent-classifier.js.map +1 -1
- package/dist/features/workflow-recommender/types.d.ts +29 -17
- package/dist/features/workflow-recommender/types.d.ts.map +1 -1
- package/dist/features/workflow-recommender/types.js +0 -3
- package/dist/features/workflow-recommender/types.js.map +1 -1
- package/dist/hooks/workflow-gate/assumption-extractor.d.ts +6 -0
- package/dist/hooks/workflow-gate/assumption-extractor.d.ts.map +1 -0
- package/dist/hooks/workflow-gate/assumption-extractor.js +27 -0
- package/dist/hooks/workflow-gate/assumption-extractor.js.map +1 -0
- package/dist/hooks/workflow-gate/git-helper.d.ts +5 -0
- package/dist/hooks/workflow-gate/git-helper.d.ts.map +1 -0
- package/dist/hooks/workflow-gate/git-helper.js +22 -0
- package/dist/hooks/workflow-gate/git-helper.js.map +1 -0
- package/dist/hooks/workflow-gate/index.d.ts +6 -0
- package/dist/hooks/workflow-gate/index.d.ts.map +1 -1
- package/dist/hooks/workflow-gate/index.js +70 -1
- package/dist/hooks/workflow-gate/index.js.map +1 -1
- package/dist/hooks/workflow-gate/quality-gate-sync.d.ts +10 -0
- package/dist/hooks/workflow-gate/quality-gate-sync.d.ts.map +1 -0
- package/dist/hooks/workflow-gate/quality-gate-sync.js +39 -0
- package/dist/hooks/workflow-gate/quality-gate-sync.js.map +1 -0
- package/dist/lib/file-lock.js +1 -1
- package/dist/lib/file-lock.js.map +1 -1
- package/dist/workers/factory.d.ts.map +1 -1
- package/dist/workers/factory.js +1 -0
- package/dist/workers/factory.js.map +1 -1
- package/docs/CLAUDE.md +1 -1
- package/docs/INSTALL.md +2 -2
- package/docs/REFERENCE.md +1 -1
- package/docs/standards/README.md +1 -1
- package/package.json +1 -1
- package/scripts/e2e-bridge-cli.mjs +108 -0
- package/scripts/verify-coverage.sh +33 -0
- package/skills/tutorial/SKILL.md +32 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|