@winspan/claude-forge 8.53.2 → 8.54.3
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/DEVELOPMENT.md +290 -221
- package/README.md +50 -8
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +7 -3
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/init/hook-manager.d.ts +1 -1
- package/dist/cli/init/hook-manager.d.ts.map +1 -1
- package/dist/cli/init/hook-manager.js +1 -0
- package/dist/cli/init/hook-manager.js.map +1 -1
- package/dist/core/storage/events.d.ts.map +1 -1
- package/dist/core/storage/events.js +0 -1
- package/dist/core/storage/events.js.map +1 -1
- package/dist/core/storage/maintenance.d.ts +25 -3
- package/dist/core/storage/maintenance.d.ts.map +1 -1
- package/dist/core/storage/maintenance.js +33 -4
- package/dist/core/storage/maintenance.js.map +1 -1
- package/dist/core/storage/routing.d.ts +4 -0
- package/dist/core/storage/routing.d.ts.map +1 -1
- package/dist/core/storage/routing.js +10 -4
- package/dist/core/storage/routing.js.map +1 -1
- package/dist/core/storage/sessions.d.ts +17 -0
- package/dist/core/storage/sessions.d.ts.map +1 -1
- package/dist/core/storage/sessions.js +64 -0
- package/dist/core/storage/sessions.js.map +1 -1
- package/dist/core/storage/skills.d.ts +4 -0
- package/dist/core/storage/skills.d.ts.map +1 -1
- package/dist/core/storage/skills.js +10 -2
- package/dist/core/storage/skills.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +5 -0
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +6 -0
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts.map +1 -1
- package/dist/core/storage/tasks.js +2 -0
- package/dist/core/storage/tasks.js.map +1 -1
- package/dist/core/types.d.ts +7 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +19 -4
- package/dist/daemon/index.js.map +1 -1
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +13 -2
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/semantic-matcher.d.ts +2 -2
- package/dist/skills/semantic-matcher.d.ts.map +1 -1
- package/dist/skills/semantic-matcher.js +14 -19
- package/dist/skills/semantic-matcher.js.map +1 -1
- package/dist/skills/upgrade-engine.d.ts +3 -1
- package/dist/skills/upgrade-engine.d.ts.map +1 -1
- package/dist/skills/upgrade-engine.js +25 -14
- package/dist/skills/upgrade-engine.js.map +1 -1
- package/dist/web/analytics/weekly-report.d.ts.map +1 -1
- package/dist/web/analytics/weekly-report.js +21 -29
- package/dist/web/analytics/weekly-report.js.map +1 -1
- package/dist/web/routes/patch.d.ts.map +1 -1
- package/dist/web/routes/patch.js +32 -2
- package/dist/web/routes/patch.js.map +1 -1
- package/dist/web/routes/sessions.d.ts.map +1 -1
- package/dist/web/routes/sessions.js +9 -7
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/trace.d.ts.map +1 -1
- package/dist/web/routes/trace.js +2 -3
- package/dist/web/routes/trace.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +3 -2
- package/dist/web/server.js.map +1 -1
- package/package.json +12 -2
- package/scripts/postinstall.cjs +21 -0
- package/.claude/CLAUDE.md +0 -17
- package/.eslintrc.js +0 -23
- package/.prettierrc +0 -8
- package/ARCHITECTURE_ISSUES.md +0 -249
- package/CLAUDE.md +0 -265
- package/CLAUDE.md.backup +0 -488
- package/docs/concurrent-agents.md +0 -129
- package/docs/design/architecture-review-20260516.md +0 -232
- package/docs/design/fix-skills-data-and-set-leak-spec-20260516-1300.md +0 -219
- package/docs/design/h1-storage-aggregation-spec-20260518-1121.md +0 -299
- package/docs/design/h2-getdatabase-encapsulation-spec-20260518-1450.md +0 -191
- package/docs/design/h3-fallback-removal-spec-20260518-1245.md +0 -76
- package/docs/design/h4-index-dedup-spec-20260518-1230.md +0 -109
- package/docs/design/h6-services-migration-spec-20260518-1355.md +0 -82
- package/docs/design/hook-failure-queue-spec-20260516-1530.md +0 -204
- package/docs/design/l1-swarm-protocol-extract-spec-20260518-1605.md +0 -106
- package/docs/design/m10-forge-paths-spec-20260518-1320.md +0 -121
- package/docs/design/m2-m3-tool-input-spec-20260518-1425.md +0 -131
- package/docs/design/m7-routing-event-association-spec-20260518-1545.md +0 -103
- package/docs/design/project-path-gitroot-spec-20260518-1715.md +0 -134
- package/docs/design/refactor-phase1-spec-20260515-1600.md +0 -543
- package/docs/design/refactor-phase2-spec-20260515-1700.md +0 -424
- package/docs/design/skill-ai-upgrade-spec-20260518-1930.md +0 -297
- package/docs/design/task-active-gc-spec-20260518-1745.md +0 -146
- package/docs/design/tasks-list-filter-pagination-spec-20260518-0930.md +0 -208
- package/docs/implementation/daemon-skill-sync-changelog-20260518-2000.md +0 -22
- package/docs/implementation/fix-skills-data-and-set-leak-changelog-20260516-1300.md +0 -104
- package/docs/implementation/h1-storage-aggregation-changelog-20260518-1121.md +0 -82
- package/docs/implementation/h2-final-changelog-20260518-1530.md +0 -61
- package/docs/implementation/h2-phase1-safety-net-changelog-20260518-1450.md +0 -70
- package/docs/implementation/h2-phase2-operations-changelog-20260518-1450.md +0 -120
- package/docs/implementation/h2-phase3-callsites-changelog-20260518-1450.md +0 -71
- package/docs/implementation/h3-fallback-removal-changelog-20260518-1245.md +0 -71
- package/docs/implementation/h4-index-dedup-changelog-20260518-1230.md +0 -60
- package/docs/implementation/h6-services-migration-changelog-20260518-1355.md +0 -46
- package/docs/implementation/h7-m9-defaults-changelog-20260518-1300.md +0 -46
- package/docs/implementation/hook-failure-queue-changelog-20260516-1530.md +0 -196
- package/docs/implementation/hotfix-daemon-event-reject-20260516-1430.md +0 -56
- package/docs/implementation/l1-swarm-protocol-extract-changelog-20260518-1605.md +0 -45
- package/docs/implementation/l3-l4-daemon-perf-changelog-20260518-1410.md +0 -63
- package/docs/implementation/l6-l8-final-cleanup-changelog-20260518-1640.md +0 -38
- package/docs/implementation/m1-m4-m5-l7-cleanup-changelog-20260518-1310.md +0 -58
- package/docs/implementation/m10-forge-paths-changelog-20260518-1320.md +0 -60
- package/docs/implementation/m2-m3-tool-input-changelog-20260518-1425.md +0 -43
- package/docs/implementation/m6-m8-naming-shutdown-changelog-20260518-1340.md +0 -56
- package/docs/implementation/m7-routing-association-changelog-20260518-1545.md +0 -69
- package/docs/implementation/project-path-gitroot-changelog-20260518-1715.md +0 -63
- package/docs/implementation/refactor-phase1-changelog-20260515-1630.md +0 -354
- package/docs/implementation/refactor-phase2-changelog-20260515-1705.md +0 -421
- package/docs/implementation/skill-ai-upgrade-changelog-20260518-1930.md +0 -49
- package/docs/implementation/task-active-gc-changelog-20260518-1745.md +0 -35
- package/docs/implementation/task-title-summary-changelog-20260518-1130.md +0 -39
- package/docs/implementation/tasks-detail-back-loses-filters-changelog-20260518-1100.md +0 -22
- package/docs/implementation/tasks-list-filter-pagination-changelog-20260518-0930.md +0 -72
- package/docs/implementation/tasks-page-white-screen-hotfix-changelog-20260518-1015.md +0 -56
- package/docs/reviews/claudemd-template-sync.md +0 -54
- package/docs/reviews/task-title-summary.md +0 -92
- package/docs/reviews/tasks-detail-back-loses-filters.md +0 -58
- package/docs/reviews/tasks-filter-pagination.md +0 -80
- package/docs/reviews/tasks-page-white-screen-hotfix.md +0 -126
- package/docs/ruflo-learning-strategy.md +0 -322
- package/docs/skills-deduplication-analysis.md +0 -83
- package/docs/skills-multiformat-support.md +0 -177
- package/docs/skills-third-party.md +0 -183
- package/docs/testing/tasks-filter-pagination-test-report.md +0 -86
- package/forge +0 -321
- package/playwright.config.ts +0 -40
- package/scripts/demo-v2.ts +0 -91
- package/scripts/dev-daemon.sh +0 -232
- package/scripts/dev-web.ts +0 -109
- package/scripts/e2e-mcp-link.ts +0 -423
- package/scripts/e2e-methodology-quality.ts +0 -253
- package/scripts/e2e-routing.ts +0 -456
- package/scripts/e2e-user-methodology.ts +0 -326
- package/scripts/e2e-web-workflows.ts +0 -299
- package/scripts/migrate-legacy-to-dynamic.sql +0 -108
- package/scripts/regenerate-execution-docs.ts +0 -116
- package/scripts/sync-agent-skills.ts +0 -193
- package/scripts/test-hook.sh +0 -71
- package/scripts/verify-skill-loading.ts +0 -62
- package/src/claudemd/claudemd-generator.ts +0 -568
- package/src/claudemd/convention-extractor.ts +0 -69
- package/src/claudemd/index.ts +0 -35
- package/src/claudemd/persona-manager.ts +0 -88
- package/src/claudemd/resume-manager.ts +0 -236
- package/src/claudemd/tech-detector.ts +0 -220
- package/src/claudemd/templates/swarm-protocol.md +0 -222
- package/src/cli/commands/claudemd.ts +0 -84
- package/src/cli/commands/config.ts +0 -46
- package/src/cli/commands/daemon.ts +0 -310
- package/src/cli/commands/executions.ts +0 -115
- package/src/cli/commands/init.ts +0 -204
- package/src/cli/commands/logs.ts +0 -181
- package/src/cli/commands/mcp.ts +0 -242
- package/src/cli/commands/menu.ts +0 -357
- package/src/cli/commands/skills.ts +0 -328
- package/src/cli/commands/stats.ts +0 -73
- package/src/cli/commands/status.ts +0 -69
- package/src/cli/commands/template.ts +0 -77
- package/src/cli/commands/trace.ts +0 -148
- package/src/cli/index.ts +0 -42
- package/src/cli/init/hook-manager.ts +0 -132
- package/src/core/ai/provider.ts +0 -308
- package/src/core/ai/types.ts +0 -51
- package/src/core/config.ts +0 -124
- package/src/core/constants.ts +0 -67
- package/src/core/event-fields.ts +0 -32
- package/src/core/queue/index.ts +0 -192
- package/src/core/storage/base.ts +0 -302
- package/src/core/storage/events.ts +0 -434
- package/src/core/storage/injections.ts +0 -78
- package/src/core/storage/maintenance.ts +0 -59
- package/src/core/storage/migrations/002_add_skill_tracking.sql +0 -6
- package/src/core/storage/migrations/003_add_skill_invocations.sql +0 -23
- package/src/core/storage/performance-indexes.sql +0 -23
- package/src/core/storage/routing.ts +0 -322
- package/src/core/storage/rows.ts +0 -112
- package/src/core/storage/schema.sql +0 -224
- package/src/core/storage/sessions.ts +0 -168
- package/src/core/storage/skills.ts +0 -233
- package/src/core/storage/sqlite.ts +0 -293
- package/src/core/storage/tasks.ts +0 -318
- package/src/core/storage/token-usage.ts +0 -93
- package/src/core/types.ts +0 -181
- package/src/core/utils/error-handler.ts +0 -257
- package/src/core/utils/forge-resume-block.ts +0 -74
- package/src/core/utils/format.ts +0 -69
- package/src/core/utils/git.ts +0 -23
- package/src/core/utils/logger.ts +0 -134
- package/src/core/utils/lru-cache.ts +0 -54
- package/src/core/utils/path.ts +0 -19
- package/src/core/utils/session.ts +0 -26
- package/src/core/utils/time.ts +0 -37
- package/src/core/utils/token-tracker.ts +0 -97
- package/src/daemon/event-parser.ts +0 -36
- package/src/daemon/handlers/history-exporter.ts +0 -117
- package/src/daemon/handlers/post-tool-use.ts +0 -54
- package/src/daemon/handlers/stop.ts +0 -208
- package/src/daemon/handlers/user-prompt.ts +0 -178
- package/src/daemon/hook-sync.ts +0 -91
- package/src/daemon/index.ts +0 -312
- package/src/daemon/launchd/com.claude-forge.daemon.plist.template +0 -47
- package/src/daemon/launchd-installer.ts +0 -260
- package/src/daemon/lifecycle.ts +0 -128
- package/src/daemon/router.ts +0 -40
- package/src/daemon/server.ts +0 -196
- package/src/daemon/services/task-segmenter.ts +0 -112
- package/src/daemon/skill-sync.ts +0 -88
- package/src/hooks/hook-lib.sh +0 -118
- package/src/hooks/notification.sh +0 -35
- package/src/hooks/post-tool-use.sh +0 -61
- package/src/hooks/pre-tool-use.sh +0 -63
- package/src/hooks/stop.sh +0 -43
- package/src/hooks/user-prompt-submit.sh +0 -69
- package/src/mcp/server.ts +0 -322
- package/src/skills/index.ts +0 -2
- package/src/skills/invocation-guard.ts +0 -177
- package/src/skills/matcher.ts +0 -148
- package/src/skills/official/code-simplifier.md +0 -52
- package/src/skills/official/find-skills.md +0 -142
- package/src/skills/official/official-api-design.md +0 -30
- package/src/skills/official/official-architecture-decision.md +0 -41
- package/src/skills/official/official-bmad.md +0 -118
- package/src/skills/official/official-db-schema-design.md +0 -34
- package/src/skills/official/official-debug.md +0 -25
- package/src/skills/official/official-doc-driven.md +0 -31
- package/src/skills/official/official-harness-engineering.md +0 -108
- package/src/skills/official/official-performance-optimization.md +0 -30
- package/src/skills/official/official-pr-review.md +0 -35
- package/src/skills/official/official-release-checklist.md +0 -30
- package/src/skills/official/official-security-hardening.md +0 -32
- package/src/skills/official/official-spec-driven-design.md +0 -31
- package/src/skills/official/planning-with-files.md +0 -241
- package/src/skills/official/ui-ux-pro-max.md +0 -105
- package/src/skills/official/webapp-testing.md +0 -96
- package/src/skills/official-skills.ts +0 -89
- package/src/skills/registry.ts +0 -355
- package/src/skills/semantic-matcher.ts +0 -234
- package/src/skills/tools/pipeline-suggest.ts +0 -226
- package/src/skills/tools/skill-invoke.ts +0 -168
- package/src/skills/tools/skill-list.ts +0 -59
- package/src/skills/upgrade-engine.ts +0 -541
- package/src/skills/upgrade-prompt.ts +0 -84
- package/src/templates/go.yaml +0 -53
- package/src/templates/python.yaml +0 -59
- package/src/templates/react.yaml +0 -55
- package/src/templates/template-manager.ts +0 -170
- package/src/web/analytics/anti-pattern-detector.ts +0 -367
- package/src/web/analytics/drift-detector.ts +0 -219
- package/src/web/analytics/weekly-report.ts +0 -431
- package/src/web/auth-middleware.ts +0 -54
- package/src/web/routes/_helpers.ts +0 -34
- package/src/web/routes/ai.ts +0 -204
- package/src/web/routes/auth.ts +0 -22
- package/src/web/routes/drift.ts +0 -25
- package/src/web/routes/error-handler.ts +0 -120
- package/src/web/routes/events.ts +0 -47
- package/src/web/routes/insights.ts +0 -43
- package/src/web/routes/patch.ts +0 -117
- package/src/web/routes/reports.ts +0 -34
- package/src/web/routes/rules.ts +0 -76
- package/src/web/routes/sessions.ts +0 -250
- package/src/web/routes/skill-stats.ts +0 -92
- package/src/web/routes/skills.ts +0 -350
- package/src/web/routes/static.ts +0 -67
- package/src/web/routes/stats.ts +0 -50
- package/src/web/routes/status.ts +0 -30
- package/src/web/routes/tasks.ts +0 -193
- package/src/web/routes/token-usage.ts +0 -20
- package/src/web/routes/trace.ts +0 -126
- package/src/web/routes/types.ts +0 -57
- package/src/web/server.ts +0 -134
- package/src/web/ssrf-guard.ts +0 -112
- package/src/web/static/index.html +0 -3251
- package/src/web/static/vendor/chart.umd.min.js +0 -20
- package/tests/e2e/dashboard.spec.ts +0 -205
- package/tests/e2e/routing-skill-e2e.test.ts +0 -39
- package/tests/helpers/mock-ai.ts +0 -92
- package/tests/helpers/mock-storage.ts +0 -159
- package/tests/integration/claudemd-generator.test.ts +0 -90
- package/tests/integration/queue-replay.integration.test.ts +0 -193
- package/tests/integration/tasks-filter.integration.test.ts +0 -154
- package/tests/integration/web-analytics.integration.test.ts +0 -133
- package/tests/integration/web-stats.integration.test.ts +0 -135
- package/tests/integration/web-trace.integration.test.ts +0 -175
- package/tests/performance/database.benchmark.ts +0 -161
- package/tests/semantic-matcher.test.ts +0 -99
- package/tests/skill-matcher.test.ts +0 -110
- package/tests/unit/ai-provider-retry.test.ts +0 -194
- package/tests/unit/ai-provider-vision.test.ts +0 -224
- package/tests/unit/claudemd-generator.test.ts +0 -68
- package/tests/unit/cli-mcp.test.ts +0 -141
- package/tests/unit/core/forge-paths.test.ts +0 -99
- package/tests/unit/daemon/hook-sync.test.ts +0 -71
- package/tests/unit/daemon/post-tool-use.test.ts +0 -121
- package/tests/unit/daemon/skill-sync.test.ts +0 -75
- package/tests/unit/daemon/stop-handler-behavior-summary.test.ts +0 -202
- package/tests/unit/daemon/task-segmenter-recover.test.ts +0 -84
- package/tests/unit/event-fields.test.ts +0 -88
- package/tests/unit/event-parser.test.ts +0 -55
- package/tests/unit/handlers.test.ts +0 -171
- package/tests/unit/hooks/resolve-project-path.test.ts +0 -122
- package/tests/unit/invocation-guard.test.ts +0 -125
- package/tests/unit/queue.test.ts +0 -272
- package/tests/unit/router.test.ts +0 -138
- package/tests/unit/security.test.ts +0 -128
- package/tests/unit/skill-invocations-workflow.test.ts +0 -495
- package/tests/unit/skill-registry.test.ts +0 -94
- package/tests/unit/skills/invocation-guard-ttl.test.ts +0 -211
- package/tests/unit/skills/official-skills-loader.test.ts +0 -126
- package/tests/unit/skills/registry-multiformat.test.ts +0 -92
- package/tests/unit/skills/upgrade-engine-parse.test.ts +0 -138
- package/tests/unit/skills/upgrade-engine.test.ts +0 -401
- package/tests/unit/skills/upgrade-prompt.test.ts +0 -89
- package/tests/unit/socket-server.test.ts +0 -183
- package/tests/unit/storage/event-operations-aggregates.test.ts +0 -342
- package/tests/unit/storage/migration-idempotent.test.ts +0 -304
- package/tests/unit/storage/routing-aggregates.test.ts +0 -276
- package/tests/unit/storage/routing.test.ts +0 -117
- package/tests/unit/storage/schema-missing.test.ts +0 -81
- package/tests/unit/storage/session-operations-aggregates.test.ts +0 -120
- package/tests/unit/storage/sessions-aggregate.test.ts +0 -435
- package/tests/unit/storage/skill-operations-counts.test.ts +0 -106
- package/tests/unit/storage/skills-aggregates.test.ts +0 -104
- package/tests/unit/storage/sqlite-refactor-harness.test.ts +0 -314
- package/tests/unit/storage/task-operations-counts.test.ts +0 -46
- package/tests/unit/storage/tasks-getById.test.ts +0 -343
- package/tests/unit/storage/tasks-stale-gc.test.ts +0 -86
- package/tests/unit/storage.test.ts +0 -172
- package/tests/unit/token-usage.test.ts +0 -144
- package/tests/unit/type-guards.test.ts +0 -201
- package/tests/unit/utils/format.test.ts +0 -189
- package/tests/unit/utils/session.test.ts +0 -89
- package/tests/unit/utils/time.test.ts +0 -112
- package/tests/unit/web/navigation-back-contract.test.ts +0 -134
- package/tests/unit/web/routes-auth.test.ts +0 -93
- package/tests/unit/web/routes-events.test.ts +0 -101
- package/tests/unit/web/routes-rules.test.ts +0 -182
- package/tests/unit/web/routes-sessions.test.ts +0 -181
- package/tests/unit/web/routes-skill-stats.test.ts +0 -179
- package/tests/unit/web/routes-stats.test.ts +0 -92
- package/tests/unit/web/routes-tasks.test.ts +0 -385
- package/tests/unit/web/task-title-contract.test.ts +0 -210
- package/tests/unit/web/tasks-component-contract.test.ts +0 -179
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -21
- package/vitest.integration.config.ts +0 -16
- package/web/CLAUDE.md +0 -20
- package/web/index.html +0 -13
- package/web/package-lock.json +0 -4854
- package/web/package.json +0 -35
- package/web/postcss.config.js +0 -6
- package/web/src/App.tsx +0 -110
- package/web/src/components/CodeBlock.tsx +0 -31
- package/web/src/components/Confirm.tsx +0 -96
- package/web/src/components/Drawer.tsx +0 -60
- package/web/src/components/Layout.tsx +0 -145
- package/web/src/components/MarkdownRenderer.tsx +0 -77
- package/web/src/components/SearchInput.tsx +0 -31
- package/web/src/components/SessionDetailContent.tsx +0 -157
- package/web/src/components/Toast.tsx +0 -92
- package/web/src/index.css +0 -19
- package/web/src/main.tsx +0 -31
- package/web/src/pages/AIConfig.tsx +0 -233
- package/web/src/pages/Dashboard.tsx +0 -572
- package/web/src/pages/Events.tsx +0 -271
- package/web/src/pages/Reports.tsx +0 -428
- package/web/src/pages/SessionDetail.tsx +0 -162
- package/web/src/pages/Sessions.tsx +0 -205
- package/web/src/pages/Skills.tsx +0 -180
- package/web/src/pages/TaskDetail.tsx +0 -515
- package/web/src/pages/Tasks.tsx +0 -415
- package/web/src/utils/auth.ts +0 -59
- package/web/src/utils/export.ts +0 -54
- package/web/src/utils/navigation.ts +0 -25
- package/web/src/utils/task-title.ts +0 -49
- package/web/src/utils/time.ts +0 -13
- package/web/tailwind.config.js +0 -11
- package/web/tsconfig.json +0 -21
- package/web/tsconfig.node.json +0 -10
- package/web/vite.config.ts +0 -76
- package/winspan-claude-forge-8.43.0.tgz +0 -0
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
# 第三方 Skills 集成指南
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
claude-forge 集成了 [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) 作为第三方 skill 库,提供 22 个经过实战验证的成熟 skills。
|
|
6
|
-
|
|
7
|
-
### 为什么引入 agent-skills?
|
|
8
|
-
|
|
9
|
-
- **成熟度高**:由 Google Chrome 团队的 Addy Osmani 维护,经过大量实际项目验证
|
|
10
|
-
- **覆盖面广**:涵盖代码审查、性能优化、安全检查、文档生成等常见场景
|
|
11
|
-
- **MIT 授权**:开源友好,可自由使用和修改
|
|
12
|
-
- **持续更新**:上游仓库活跃维护,可定期同步最新改进
|
|
13
|
-
|
|
14
|
-
### 集成策略
|
|
15
|
-
|
|
16
|
-
agent-skills 作为 **补充库** 存在,与 claude-forge 的 `OFFICIAL_SKILLS` 共存:
|
|
17
|
-
|
|
18
|
-
- **官方 skills** (`src/skills/official/`):claude-forge 内置,针对 SDLC 流程优化
|
|
19
|
-
- **第三方 skills** (`~/.claude/skills/agent-skills/`):通用场景,按需加载
|
|
20
|
-
|
|
21
|
-
## 同步策略
|
|
22
|
-
|
|
23
|
-
### 首次同步
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
npm run sync:agent-skills
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
执行后会:
|
|
30
|
-
1. 从 GitHub clone `addyosmani/agent-skills` 到 `~/.claude/skills/agent-skills/`
|
|
31
|
-
2. 记录 upstream commit hash 到 `.sync-metadata.json`
|
|
32
|
-
3. 生成 MIT License 合规文件 `NOTICE`
|
|
33
|
-
|
|
34
|
-
### 定期更新
|
|
35
|
-
|
|
36
|
-
重复运行 `npm run sync:agent-skills` 会自动执行 `git pull` 更新到最新版本。
|
|
37
|
-
|
|
38
|
-
### 同步元数据
|
|
39
|
-
|
|
40
|
-
同步完成后,`~/.claude/skills/agent-skills/.sync-metadata.json` 记录:
|
|
41
|
-
|
|
42
|
-
```json
|
|
43
|
-
{
|
|
44
|
-
"upstream_repo": "https://github.com/addyosmani/agent-skills.git",
|
|
45
|
-
"commit_hash": "abc123...",
|
|
46
|
-
"synced_at": "2026-05-10T12:00:00.000Z"
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
可通过此文件追溯当前使用的上游版本。
|
|
51
|
-
|
|
52
|
-
## 去重策略
|
|
53
|
-
|
|
54
|
-
> **注意**:此部分待 Task #38 完成后填充。
|
|
55
|
-
|
|
56
|
-
当前已知的潜在重叠 skills:
|
|
57
|
-
|
|
58
|
-
- `OFFICIAL_SKILLS` 中的某些 skill 可能与 agent-skills 功能重叠
|
|
59
|
-
- 去重分析将在 Task #38 中完成,届时会更新本文档
|
|
60
|
-
|
|
61
|
-
### 优先级规则(待确认)
|
|
62
|
-
|
|
63
|
-
预期的加载优先级(待 Task #38 验证):
|
|
64
|
-
|
|
65
|
-
1. 用户自定义 skills (`~/.claude/skills/<name>.md`)
|
|
66
|
-
2. 官方 skills (`src/skills/official/`)
|
|
67
|
-
3. 第三方 skills (`~/.claude/skills/agent-skills/skills/`)
|
|
68
|
-
|
|
69
|
-
## 自定义覆盖
|
|
70
|
-
|
|
71
|
-
如果需要修改 agent-skills 中的某个 skill,**不要直接编辑** `~/.claude/skills/agent-skills/` 目录(会被 `git pull` 覆盖)。
|
|
72
|
-
|
|
73
|
-
正确做法:
|
|
74
|
-
|
|
75
|
-
1. 复制要修改的 skill 到 `~/.claude/skills/<skill-name>.md`
|
|
76
|
-
2. 在复制的文件中进行修改
|
|
77
|
-
3. skill registry 会优先加载用户自定义版本
|
|
78
|
-
|
|
79
|
-
示例:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
# 覆盖 agent-skills 的 code-review skill
|
|
83
|
-
cp ~/.claude/skills/agent-skills/skills/code-review/skill.md \
|
|
84
|
-
~/.claude/skills/code-review.md
|
|
85
|
-
|
|
86
|
-
# 编辑自定义版本
|
|
87
|
-
vim ~/.claude/skills/code-review.md
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## License 合规
|
|
91
|
-
|
|
92
|
-
### 授权说明
|
|
93
|
-
|
|
94
|
-
agent-skills 采用 **MIT License**,允许:
|
|
95
|
-
|
|
96
|
-
- ✅ 商业使用
|
|
97
|
-
- ✅ 修改
|
|
98
|
-
- ✅ 分发
|
|
99
|
-
- ✅ 私有使用
|
|
100
|
-
|
|
101
|
-
要求:
|
|
102
|
-
|
|
103
|
-
- 📄 保留原始版权声明和许可证文本
|
|
104
|
-
- 📄 在分发时包含 NOTICE 文件
|
|
105
|
-
|
|
106
|
-
### NOTICE 文件
|
|
107
|
-
|
|
108
|
-
同步脚本会自动生成 `~/.claude/skills/agent-skills/NOTICE` 文件,包含:
|
|
109
|
-
|
|
110
|
-
- 上游仓库信息
|
|
111
|
-
- MIT License 全文
|
|
112
|
-
- 版权声明
|
|
113
|
-
- 同步时间和 commit hash
|
|
114
|
-
|
|
115
|
-
### 合规检查清单
|
|
116
|
-
|
|
117
|
-
- [x] 保留 upstream 的 LICENSE 文件
|
|
118
|
-
- [x] 生成 NOTICE 文件记录来源
|
|
119
|
-
- [x] 在文档中说明第三方依赖
|
|
120
|
-
- [x] 不修改 upstream 仓库的版权声明
|
|
121
|
-
|
|
122
|
-
## 故障排查
|
|
123
|
-
|
|
124
|
-
### 同步失败
|
|
125
|
-
|
|
126
|
-
**症状**:`npm run sync:agent-skills` 报错
|
|
127
|
-
|
|
128
|
-
**可能原因**:
|
|
129
|
-
|
|
130
|
-
1. **网络问题**
|
|
131
|
-
```bash
|
|
132
|
-
# 检查网络连接
|
|
133
|
-
ping github.com
|
|
134
|
-
|
|
135
|
-
# 尝试手动 clone
|
|
136
|
-
git clone https://github.com/addyosmani/agent-skills.git /tmp/test
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
2. **Git 未安装**
|
|
140
|
-
```bash
|
|
141
|
-
# 检查 git 版本
|
|
142
|
-
git --version
|
|
143
|
-
|
|
144
|
-
# macOS 安装
|
|
145
|
-
brew install git
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
3. **权限问题**
|
|
149
|
-
```bash
|
|
150
|
-
# 检查目录权限
|
|
151
|
-
ls -la ~/.claude/skills/
|
|
152
|
-
|
|
153
|
-
# 修复权限
|
|
154
|
-
chmod -R u+w ~/.claude/skills/
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### 本地修改冲突
|
|
158
|
-
|
|
159
|
-
**症状**:`git pull` 时提示本地有未提交的修改
|
|
160
|
-
|
|
161
|
-
**解决方案**:
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
cd ~/.claude/skills/agent-skills/
|
|
165
|
-
|
|
166
|
-
# 查看修改
|
|
167
|
-
git status
|
|
168
|
-
|
|
169
|
-
# 方案 1:放弃本地修改(推荐)
|
|
170
|
-
git reset --hard HEAD
|
|
171
|
-
npm run sync:agent-skills
|
|
172
|
-
|
|
173
|
-
# 方案 2:保存修改到用户目录
|
|
174
|
-
cp skills/xxx/skill.md ~/.claude/skills/xxx.md
|
|
175
|
-
git reset --hard HEAD
|
|
176
|
-
npm run sync:agent-skills
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## 参考资料
|
|
180
|
-
|
|
181
|
-
- [agent-skills 官方仓库](https://github.com/addyosmani/agent-skills)
|
|
182
|
-
- [MIT License 说明](https://opensource.org/licenses/MIT)
|
|
183
|
-
- [claude-forge Skills Registry 设计](../src/skills/README.md)(待创建)
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# Tasks Filter + Pagination — Test Report
|
|
2
|
-
|
|
3
|
-
**Date**: 2026-05-18
|
|
4
|
-
**Feature**: tasks-filter-pagination
|
|
5
|
-
|
|
6
|
-
## Summary
|
|
7
|
-
|
|
8
|
-
| Suite | Tests | Passed | Failed | Notes |
|
|
9
|
-
|-------|-------|--------|--------|-------|
|
|
10
|
-
| Unit: routes-tasks | 19 | 19 | 0 | All A1-A8 acceptance criteria covered |
|
|
11
|
-
| Integration: tasks-filter | 10 | 10 | 0 | Real SQLite, JOIN + COUNT verification |
|
|
12
|
-
| Full suite (npm test) | 324 | 323 | 1 | 1 pre-existing failure in sqlite-refactor-harness.test.ts (non-UUID event_id, unrelated) |
|
|
13
|
-
| TypeScript (tsc --noEmit) | — | pass | 0 | Clean |
|
|
14
|
-
|
|
15
|
-
## Unit Tests (routes-tasks.test.ts)
|
|
16
|
-
|
|
17
|
-
### Paginated response group (7 tests)
|
|
18
|
-
|
|
19
|
-
| Test | Result |
|
|
20
|
-
|------|--------|
|
|
21
|
-
| Returns empty page when no tasks (A1) | PASS |
|
|
22
|
-
| Returns items newest-first with total and has_more (A1) | PASS |
|
|
23
|
-
| Items include project_path from joined sessions | PASS |
|
|
24
|
-
| Honours session filter | PASS |
|
|
25
|
-
| Respects limit param and sets has_more | PASS |
|
|
26
|
-
| Clamps limit to 200 (A6) | PASS |
|
|
27
|
-
| Task items contain expected fields | PASS |
|
|
28
|
-
|
|
29
|
-
### Filter params group (5 tests)
|
|
30
|
-
|
|
31
|
-
| Test | Result |
|
|
32
|
-
|------|--------|
|
|
33
|
-
| Filters by single project (A2) | PASS |
|
|
34
|
-
| Filters by multiple projects OR (A3) | PASS |
|
|
35
|
-
| Filters by from/to time range (A4) | PASS |
|
|
36
|
-
| Filters by search (title LIKE) (A5) | PASS |
|
|
37
|
-
| Returns 400 for invalid query params | PASS |
|
|
38
|
-
|
|
39
|
-
### Pagination group (1 test)
|
|
40
|
-
|
|
41
|
-
| Test | Result |
|
|
42
|
-
|------|--------|
|
|
43
|
-
| Offset increments page, total stays constant (A8) | PASS |
|
|
44
|
-
|
|
45
|
-
### /api/tasks/projects group (3 tests)
|
|
46
|
-
|
|
47
|
-
| Test | Result |
|
|
48
|
-
|------|--------|
|
|
49
|
-
| Returns empty array when no tasks | PASS |
|
|
50
|
-
| Returns distinct project paths that have tasks | PASS |
|
|
51
|
-
| De-duplicates when multiple sessions share a project | PASS |
|
|
52
|
-
|
|
53
|
-
### GET /api/tasks/:taskId group (3 tests) — unchanged route
|
|
54
|
-
|
|
55
|
-
| Test | Result |
|
|
56
|
-
|------|--------|
|
|
57
|
-
| Returns 404 for non-existent task | PASS |
|
|
58
|
-
| Returns task detail with timeline + injections + skill invocations | PASS |
|
|
59
|
-
| Marks Agent calls in timeline with agent_detail | PASS |
|
|
60
|
-
|
|
61
|
-
## Integration Tests (tasks-filter.integration.test.ts)
|
|
62
|
-
|
|
63
|
-
Real in-memory SQLite validating JOIN correctness and COUNT accuracy.
|
|
64
|
-
|
|
65
|
-
| Test | Result |
|
|
66
|
-
|------|--------|
|
|
67
|
-
| JOIN preserves project_path from sessions | PASS |
|
|
68
|
-
| COUNT(*) matches items length when no pagination | PASS |
|
|
69
|
-
| COUNT remains constant across pages (A8) | PASS |
|
|
70
|
-
| Project filter via JOIN correctly isolates tasks (A2) | PASS |
|
|
71
|
-
| Multi-project OR filter returns union correctly (A3) | PASS |
|
|
72
|
-
| Search filter uses LIKE on title (A5) | PASS |
|
|
73
|
-
| from/to date range filter (A4) | PASS |
|
|
74
|
-
| queryTaskProjects returns distinct paths with tasks only | PASS |
|
|
75
|
-
| Limit clamp: storage-level enforces max 200 | PASS |
|
|
76
|
-
| has_more is accurate at boundary (exactly limit items) | PASS |
|
|
77
|
-
|
|
78
|
-
## Pre-existing Failure
|
|
79
|
-
|
|
80
|
-
`tests/unit/storage/sqlite-refactor-harness.test.ts` > `linkEventToTask associates events with tasks` — uses literal `'ev-prompt'` event_id which fails Zod UUID validation. This failure existed before this feature branch. Out of scope.
|
|
81
|
-
|
|
82
|
-
## Notes
|
|
83
|
-
|
|
84
|
-
- ISO 8601 date string comparison uses lexicographic sort. Test data uses `.000Z` suffix consistently to avoid `.000Z` vs `Z` sort anomaly.
|
|
85
|
-
- Title LIKE search is case-insensitive for ASCII on SQLite default collation.
|
|
86
|
-
- Frontend (index.html) changes are not covered by automated tests; manual E2E verification per A7 required.
|
package/forge
DELETED
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Claude Forge - 一键启动脚本
|
|
3
|
-
|
|
4
|
-
set -e
|
|
5
|
-
|
|
6
|
-
FORGE_DIR="$HOME/.claude-forge"
|
|
7
|
-
CLAUDE_DIR="$HOME/.claude"
|
|
8
|
-
SETTINGS_FILE="$CLAUDE_DIR/settings.json"
|
|
9
|
-
PID_FILE="$FORGE_DIR/daemon.pid"
|
|
10
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
|
-
|
|
12
|
-
# 自动选择运行方式:优先 dist/,否则自动 build
|
|
13
|
-
ensure_built() {
|
|
14
|
-
if [ ! -f "$SCRIPT_DIR/dist/cli/index.js" ]; then
|
|
15
|
-
info "首次运行,正在编译..."
|
|
16
|
-
cd "$SCRIPT_DIR" && npx tsc 2>&1
|
|
17
|
-
if [ ! -f "$SCRIPT_DIR/dist/cli/index.js" ]; then
|
|
18
|
-
error "编译失败,请检查 TypeScript 错误"
|
|
19
|
-
exit 1
|
|
20
|
-
fi
|
|
21
|
-
success "编译完成"
|
|
22
|
-
fi
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
run_cli() {
|
|
26
|
-
ensure_built
|
|
27
|
-
node "$SCRIPT_DIR/dist/cli/index.js" "$@"
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
# 颜色输出
|
|
31
|
-
GREEN='\033[0;32m'
|
|
32
|
-
YELLOW='\033[1;33m'
|
|
33
|
-
RED='\033[0;31m'
|
|
34
|
-
BLUE='\033[0;34m'
|
|
35
|
-
NC='\033[0m' # No Color
|
|
36
|
-
|
|
37
|
-
info() {
|
|
38
|
-
echo -e "${BLUE}ℹ${NC} $1"
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
success() {
|
|
42
|
-
echo -e "${GREEN}✓${NC} $1"
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
warn() {
|
|
46
|
-
echo -e "${YELLOW}⚠${NC} $1"
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
error() {
|
|
50
|
-
echo -e "${RED}✗${NC} $1"
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
# 检查是否已初始化
|
|
54
|
-
is_initialized() {
|
|
55
|
-
[ -f "$SETTINGS_FILE" ] && grep -q "claude-forge" "$SETTINGS_FILE" 2>/dev/null
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
# 检查守护进程是否运行
|
|
59
|
-
is_daemon_running() {
|
|
60
|
-
if [ -f "$PID_FILE" ]; then
|
|
61
|
-
local pid=$(cat "$PID_FILE")
|
|
62
|
-
kill -0 "$pid" 2>/dev/null
|
|
63
|
-
return $?
|
|
64
|
-
fi
|
|
65
|
-
return 1
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
# 初始化
|
|
69
|
-
do_init() {
|
|
70
|
-
info "正在初始化 Claude Forge..."
|
|
71
|
-
run_cli init
|
|
72
|
-
success "初始化完成"
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
# 启动守护进程
|
|
76
|
-
do_start() {
|
|
77
|
-
if is_daemon_running; then
|
|
78
|
-
warn "守护进程已在运行"
|
|
79
|
-
return
|
|
80
|
-
fi
|
|
81
|
-
|
|
82
|
-
info "正在启动守护进程..."
|
|
83
|
-
run_cli daemon start
|
|
84
|
-
sleep 1
|
|
85
|
-
|
|
86
|
-
if is_daemon_running; then
|
|
87
|
-
success "守护进程已启动"
|
|
88
|
-
else
|
|
89
|
-
error "守护进程启动失败"
|
|
90
|
-
exit 1
|
|
91
|
-
fi
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
# 停止守护进程
|
|
95
|
-
do_stop() {
|
|
96
|
-
if ! is_daemon_running; then
|
|
97
|
-
warn "守护进程未运行"
|
|
98
|
-
return
|
|
99
|
-
fi
|
|
100
|
-
|
|
101
|
-
info "正在停止守护进程..."
|
|
102
|
-
run_cli daemon stop
|
|
103
|
-
success "守护进程已停止"
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
# 查看状态
|
|
107
|
-
do_status() {
|
|
108
|
-
echo ""
|
|
109
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
110
|
-
echo " Claude Forge 状态"
|
|
111
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
112
|
-
echo ""
|
|
113
|
-
|
|
114
|
-
# 初始化状态
|
|
115
|
-
if is_initialized; then
|
|
116
|
-
success "已初始化"
|
|
117
|
-
else
|
|
118
|
-
error "未初始化"
|
|
119
|
-
fi
|
|
120
|
-
|
|
121
|
-
# 守护进程状态
|
|
122
|
-
if is_daemon_running; then
|
|
123
|
-
success "守护进程运行中 (PID: $(cat $PID_FILE))"
|
|
124
|
-
else
|
|
125
|
-
error "守护进程未运行"
|
|
126
|
-
fi
|
|
127
|
-
|
|
128
|
-
# 统计信息
|
|
129
|
-
if [ -f "$FORGE_DIR/data.db" ]; then
|
|
130
|
-
echo ""
|
|
131
|
-
run_cli query stats
|
|
132
|
-
fi
|
|
133
|
-
|
|
134
|
-
echo ""
|
|
135
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
# 查看日志
|
|
139
|
-
do_logs() {
|
|
140
|
-
local log_file="$FORGE_DIR/daemon.log"
|
|
141
|
-
if [ ! -f "$log_file" ]; then
|
|
142
|
-
warn "日志文件不存在"
|
|
143
|
-
return
|
|
144
|
-
fi
|
|
145
|
-
|
|
146
|
-
tail -f "$log_file"
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
# 配置 API
|
|
150
|
-
do_config_api() {
|
|
151
|
-
echo ""
|
|
152
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
153
|
-
echo " 配置 Claude API"
|
|
154
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
155
|
-
echo ""
|
|
156
|
-
|
|
157
|
-
# 显示当前配置
|
|
158
|
-
info "当前配置:"
|
|
159
|
-
run_cli config show 2>/dev/null | grep -E "(api_key|base_url)" || echo " 未配置"
|
|
160
|
-
echo ""
|
|
161
|
-
|
|
162
|
-
# 询问是否设置 API Key
|
|
163
|
-
read -p "设置 API Key? (留空跳过): " api_key
|
|
164
|
-
if [ -n "$api_key" ]; then
|
|
165
|
-
run_cli config set distill.api_key "$api_key"
|
|
166
|
-
fi
|
|
167
|
-
|
|
168
|
-
# 询问是否设置 Base URL
|
|
169
|
-
read -p "设置 Base URL? (留空使用默认): " base_url
|
|
170
|
-
if [ -n "$base_url" ]; then
|
|
171
|
-
run_cli config set distill.base_url "$base_url"
|
|
172
|
-
fi
|
|
173
|
-
|
|
174
|
-
echo ""
|
|
175
|
-
success "配置已更新"
|
|
176
|
-
warn "需要重启守护进程才能生效"
|
|
177
|
-
read -p "是否现在重启? (Y/n) " -n 1 -r
|
|
178
|
-
echo
|
|
179
|
-
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
|
|
180
|
-
do_stop
|
|
181
|
-
sleep 1
|
|
182
|
-
do_start
|
|
183
|
-
fi
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
# 主菜单
|
|
187
|
-
show_menu() {
|
|
188
|
-
echo ""
|
|
189
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
190
|
-
echo " Claude Forge"
|
|
191
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
192
|
-
echo ""
|
|
193
|
-
echo " 1) 启动 (start)"
|
|
194
|
-
echo " 2) 停止 (stop)"
|
|
195
|
-
echo " 3) 重启 (restart)"
|
|
196
|
-
echo " 4) 状态 (status)"
|
|
197
|
-
echo " 5) 查看日志 (logs)"
|
|
198
|
-
echo " 6) 查看会话 (sessions)"
|
|
199
|
-
echo " 7) 手动蒸馏 (distill)"
|
|
200
|
-
echo " 8) 备份数据 (backup)"
|
|
201
|
-
echo " 9) 配置 API (config)"
|
|
202
|
-
echo " r) 重置配置 (reset)"
|
|
203
|
-
echo " u) 卸载 (uninit)"
|
|
204
|
-
echo " 0) 退出"
|
|
205
|
-
echo ""
|
|
206
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
207
|
-
echo ""
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
# 处理菜单选择
|
|
211
|
-
handle_choice() {
|
|
212
|
-
case $1 in
|
|
213
|
-
1|start)
|
|
214
|
-
do_start
|
|
215
|
-
;;
|
|
216
|
-
2|stop)
|
|
217
|
-
do_stop
|
|
218
|
-
;;
|
|
219
|
-
3|restart)
|
|
220
|
-
do_stop
|
|
221
|
-
sleep 1
|
|
222
|
-
do_start
|
|
223
|
-
;;
|
|
224
|
-
4|status)
|
|
225
|
-
do_status
|
|
226
|
-
;;
|
|
227
|
-
5|logs)
|
|
228
|
-
do_logs
|
|
229
|
-
;;
|
|
230
|
-
6|sessions)
|
|
231
|
-
run_cli query sessions
|
|
232
|
-
;;
|
|
233
|
-
7|distill)
|
|
234
|
-
info "正在蒸馏..."
|
|
235
|
-
run_cli distill
|
|
236
|
-
;;
|
|
237
|
-
8|backup)
|
|
238
|
-
info "正在备份..."
|
|
239
|
-
run_cli backup
|
|
240
|
-
;;
|
|
241
|
-
9|config)
|
|
242
|
-
do_config_api
|
|
243
|
-
;;
|
|
244
|
-
r|reset)
|
|
245
|
-
read -p "确定要重置配置吗?(y/N) " -n 1 -r
|
|
246
|
-
echo
|
|
247
|
-
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
248
|
-
run_cli config reset
|
|
249
|
-
success "配置已重置"
|
|
250
|
-
fi
|
|
251
|
-
;;
|
|
252
|
-
u|uninit)
|
|
253
|
-
read -p "确定要卸载吗?(y/N) " -n 1 -r
|
|
254
|
-
echo
|
|
255
|
-
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
256
|
-
run_cli uninit
|
|
257
|
-
success "已卸载"
|
|
258
|
-
fi
|
|
259
|
-
;;
|
|
260
|
-
0|exit|quit)
|
|
261
|
-
exit 0
|
|
262
|
-
;;
|
|
263
|
-
*)
|
|
264
|
-
error "无效选择"
|
|
265
|
-
;;
|
|
266
|
-
esac
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
# 主流程
|
|
270
|
-
main() {
|
|
271
|
-
# 如果有参数,直接执行
|
|
272
|
-
if [ $# -gt 0 ]; then
|
|
273
|
-
handle_choice "$1"
|
|
274
|
-
exit 0
|
|
275
|
-
fi
|
|
276
|
-
|
|
277
|
-
# 首次运行检查
|
|
278
|
-
if ! is_initialized; then
|
|
279
|
-
echo ""
|
|
280
|
-
warn "检测到首次运行,需要初始化"
|
|
281
|
-
read -p "是否现在初始化?(Y/n) " -n 1 -r
|
|
282
|
-
echo
|
|
283
|
-
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
|
|
284
|
-
do_init
|
|
285
|
-
echo ""
|
|
286
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
287
|
-
warn "重要:Hook 已注入到 Claude Code 配置"
|
|
288
|
-
warn "需要重新启动 Claude Code 才能生效!"
|
|
289
|
-
echo ""
|
|
290
|
-
echo " 请执行以下操作:"
|
|
291
|
-
echo " 1. 输入 /exit 退出当前 Claude Code 会话"
|
|
292
|
-
echo " 2. 重新运行 claude 命令"
|
|
293
|
-
echo " 3. Hook 会自动生效,所有工具调用将被记录"
|
|
294
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
295
|
-
else
|
|
296
|
-
exit 0
|
|
297
|
-
fi
|
|
298
|
-
fi
|
|
299
|
-
|
|
300
|
-
# 自动启动守护进程
|
|
301
|
-
if ! is_daemon_running; then
|
|
302
|
-
info "守护进程未运行"
|
|
303
|
-
read -p "是否启动守护进程?(Y/n) " -n 1 -r
|
|
304
|
-
echo
|
|
305
|
-
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
|
|
306
|
-
do_start
|
|
307
|
-
fi
|
|
308
|
-
fi
|
|
309
|
-
|
|
310
|
-
# 交互式菜单
|
|
311
|
-
while true; do
|
|
312
|
-
show_menu
|
|
313
|
-
read -p "请选择 [0-9]: " choice
|
|
314
|
-
echo ""
|
|
315
|
-
handle_choice "$choice"
|
|
316
|
-
echo ""
|
|
317
|
-
read -p "按回车继续..."
|
|
318
|
-
done
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
main "$@"
|
package/playwright.config.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { defineConfig, devices } from '@playwright/test';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Playwright E2E 测试配置
|
|
5
|
-
*
|
|
6
|
-
* 使用方法:
|
|
7
|
-
* 1. 安装依赖: npm install -D @playwright/test
|
|
8
|
-
* 2. 安装浏览器: npx playwright install
|
|
9
|
-
* 3. 启动守护进程: claude-forge daemon start
|
|
10
|
-
* 4. 运行测试: npm run test:e2e
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
export default defineConfig({
|
|
14
|
-
testDir: './tests/e2e',
|
|
15
|
-
fullyParallel: true,
|
|
16
|
-
forbidOnly: !!process.env.CI,
|
|
17
|
-
retries: process.env.CI ? 2 : 0,
|
|
18
|
-
workers: process.env.CI ? 1 : undefined,
|
|
19
|
-
reporter: 'html',
|
|
20
|
-
|
|
21
|
-
use: {
|
|
22
|
-
baseURL: 'http://localhost:3721',
|
|
23
|
-
trace: 'on-first-retry',
|
|
24
|
-
screenshot: 'only-on-failure',
|
|
25
|
-
},
|
|
26
|
-
|
|
27
|
-
projects: [
|
|
28
|
-
{
|
|
29
|
-
name: 'chromium',
|
|
30
|
-
use: { ...devices['Desktop Chrome'] },
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
|
|
34
|
-
webServer: {
|
|
35
|
-
command: 'echo "请确保守护进程已启动: claude-forge daemon start"',
|
|
36
|
-
url: 'http://localhost:3721',
|
|
37
|
-
reuseExistingServer: true,
|
|
38
|
-
timeout: 5000,
|
|
39
|
-
},
|
|
40
|
-
});
|