aiwf 0.3.22 → 0.4.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 +146 -0
- package/CHANGELOG.md +49 -1
- package/README.ko.md +118 -309
- package/README.md +68 -254
- package/docs/modernization/BROWNFIELD-GREENFIELD.ko.md +105 -0
- package/docs/modernization/CLAUDE-PLAN-REVIEW-2026-10-03.ko.md +77 -0
- package/docs/modernization/CLI-PRODUCTIVITY-REVIEWED-2026-10-03.ko.md +177 -0
- package/docs/modernization/CLI-PRODUCTIVITY.ko.md +193 -0
- package/docs/modernization/CORE-PACKAGE-PLAN.md +7 -0
- package/docs/modernization/DEEP-REVERSE-ENGINEERING.ko.md +88 -0
- package/docs/modernization/DELEGATION-OPTIONAL.ko.md +57 -0
- package/docs/modernization/DIRECTION.ko.md +56 -0
- package/docs/modernization/FULL-TEST-2026-10-03.md +49 -0
- package/docs/modernization/LEGACY-REMOVAL-PLAN.md +9 -0
- package/docs/modernization/PILOT-RESULT-2026-10-03.ko.md +85 -0
- package/docs/modernization/PILOT-UC-001.ko.md +79 -0
- package/docs/modernization/PLAN.md +28 -0
- package/docs/modernization/SKILLS.ko.md +105 -0
- package/docs/modernization/SPRINTABLE.ko.md +47 -0
- package/docs/modernization/SYNC-DOCS-VALIDATION-2026-10-04.ko.md +38 -0
- package/docs/modernization/VALIDATION.md +79 -0
- package/docs/modernization/evidence/example-review-packet.json +115 -0
- package/docs/modernization/evidence/example-spec-pin.json +48 -0
- package/docs/modernization/evidence/full-test-20261003/claude-lint.md +22 -0
- package/docs/modernization/evidence/full-test-20261003/claude-review-retry.md +56 -0
- package/docs/modernization/evidence/full-test-20261003/codex-review-packet.json +159 -0
- package/docs/modernization/evidence/full-test-20261003/src/expense.mjs +40 -0
- package/docs/modernization/evidence/full-test-20261003/summary.json +106 -0
- package/docs/modernization/evidence/full-test-20261003/tests/expense.test.mjs +61 -0
- package/docs/modernization/evidence/local-pilot-20261003/README.ko.md +40 -0
- package/docs/modernization/evidence/local-pilot-20261003/execution.json +1055 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stdout.txt +5 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stdout.txt +6 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stdout.txt +5 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stdout.txt +6 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.json +23 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stdout.txt +535 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stdout.txt +5 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stdout.txt +273 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stdout.txt +7 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stdout.txt +148 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stdout.txt +67 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-evidence.json +34 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.json +128 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stdout.txt +128 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.json +54 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stdout.txt +60 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-readback.json +15 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stdout.txt +82 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stdout.txt +79 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stdout.txt +7 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stdout.txt +66 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin.json +60 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stdout.txt +73 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-evidence.json +34 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.json +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stdout.txt +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-readback.json +15 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stdout.txt +148 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stdout.txt +1 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stdout.txt +1 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-evidence.json +34 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.json +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stdout.txt +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-readback.json +15 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stdout.txt +266 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/entity_model.md +33 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/glossary.md +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/plans/UC-001.md +20 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/requirements.md +10 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-001-submit-expense.md +37 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-002-description-limit.md +42 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases/UC-001-submit-expense.md +76 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases.puml +12 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/vision.md +21 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/src/expense.mjs +48 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/tests/expense.test.mjs +116 -0
- package/docs/modernization/evidence/local-pilot-20261003/scope.json +31 -0
- package/docs/modernization/reviews/2026-10-03-claude-cli/CONTRACTS.ko.md +122 -0
- package/docs/modernization/reviews/2026-10-03-claude-cli/DIRECTION.ko.md +84 -0
- package/examples/spec-workflow/README.md +54 -0
- package/examples/spec-workflow/docs/entity_model.md +33 -0
- package/examples/spec-workflow/docs/glossary.md +9 -0
- package/examples/spec-workflow/docs/requirements.md +10 -0
- package/examples/spec-workflow/docs/test_cases/TC-001-submit-expense.md +37 -0
- package/examples/spec-workflow/docs/use_cases/UC-001-submit-expense.md +63 -0
- package/examples/spec-workflow/docs/use_cases.puml +12 -0
- package/examples/spec-workflow/docs/vision.md +21 -0
- package/package.json +37 -104
- package/plugins/aiwf-angular-jpa/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-angular-jpa/LICENSE +201 -0
- package/plugins/aiwf-angular-jpa/NOTICE +16 -0
- package/plugins/aiwf-angular-jpa/README.md +54 -0
- package/plugins/aiwf-angular-jpa/UPSTREAM.json +35 -0
- package/plugins/aiwf-angular-jpa/agents/uc-coverage.md +263 -0
- package/plugins/aiwf-angular-jpa/rules/mcp-servers.md +64 -0
- package/plugins/aiwf-angular-jpa/skills/coverage-check/SKILL.md +190 -0
- package/plugins/aiwf-angular-jpa/skills/flyway-migration/SKILL.md +119 -0
- package/plugins/aiwf-angular-jpa/skills/implement/SKILL.md +528 -0
- package/plugins/aiwf-angular-jpa/skills/implement/references/module-layout.md +95 -0
- package/plugins/aiwf-angular-jpa/skills/playwright-test/SKILL.md +360 -0
- package/plugins/aiwf-angular-jpa/skills/spring-boot-test/SKILL.md +504 -0
- package/plugins/aiwf-angular-jpa/skills/vitest-test/SKILL.md +309 -0
- package/plugins/aiwf-blazor-dotnet/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-blazor-dotnet/LICENSE +201 -0
- package/plugins/aiwf-blazor-dotnet/NOTICE +16 -0
- package/plugins/aiwf-blazor-dotnet/README.md +53 -0
- package/plugins/aiwf-blazor-dotnet/UPSTREAM.json +31 -0
- package/plugins/aiwf-blazor-dotnet/rules/mcp-servers.md +25 -0
- package/plugins/aiwf-blazor-dotnet/skills/bunit-test/SKILL.md +110 -0
- package/plugins/aiwf-blazor-dotnet/skills/dotnet-test/SKILL.md +108 -0
- package/plugins/aiwf-blazor-dotnet/skills/ef-migration/SKILL.md +43 -0
- package/plugins/aiwf-blazor-dotnet/skills/implement/SKILL.md +149 -0
- package/plugins/aiwf-blazor-dotnet/skills/playwright-test/SKILL.md +130 -0
- package/plugins/aiwf-core/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-core/LICENSE +201 -0
- package/plugins/aiwf-core/NOTICE +20 -0
- package/plugins/aiwf-core/README.md +38 -0
- package/plugins/aiwf-core/UPSTREAM.json +50 -0
- package/plugins/aiwf-core/skills/entity-model/SKILL.md +160 -0
- package/plugins/aiwf-core/skills/entity-model/references/REFERENCE.md +36 -0
- package/plugins/aiwf-core/skills/requirements/SKILL.md +157 -0
- package/plugins/aiwf-core/skills/requirements/references/REFERENCE.md +70 -0
- package/plugins/aiwf-core/skills/requirements/references/glossary.md +7 -0
- package/plugins/aiwf-core/skills/reverse-engineer/SKILL.md +509 -0
- package/plugins/aiwf-core/skills/reverse-engineer/references/stack-signals.md +210 -0
- package/plugins/aiwf-core/skills/spec-review/SKILL.md +197 -0
- package/plugins/aiwf-core/skills/spec-review/references/lint-codes.md +63 -0
- package/plugins/aiwf-core/skills/spec-review/references/review-checklist.md +189 -0
- package/plugins/aiwf-core/skills/spec-review/scripts/spec_lint.py +1216 -0
- package/plugins/aiwf-core/skills/test-case/SKILL.md +138 -0
- package/plugins/aiwf-core/skills/test-case/references/example-process.bpmn +118 -0
- package/plugins/aiwf-core/skills/test-case/references/example.md +38 -0
- package/plugins/aiwf-core/skills/test-case/references/test-case.md +35 -0
- package/plugins/aiwf-core/skills/test-case/scripts/bpmn_paths.py +542 -0
- package/plugins/aiwf-core/skills/use-case-diagram/SKILL.md +99 -0
- package/plugins/aiwf-core/skills/use-case-spec/SKILL.md +257 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/clarify-checklist.md +70 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/example.md +88 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/format-spec.md +246 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/use-case.md +50 -0
- package/plugins/aiwf-core/skills/use-case-spec/scripts/validate_use_case.py +941 -0
- package/plugins/aiwf-delegate-claude/.claude-plugin/plugin.json +9 -0
- package/{src/lib/resources/templates/npm-library/template → plugins/aiwf-delegate-claude}/LICENSE +2 -2
- package/plugins/aiwf-delegate-claude/NOTICE +4 -0
- package/plugins/aiwf-delegate-claude/README.md +10 -0
- package/plugins/aiwf-delegate-claude/plugin.json +13 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/LICENSE +21 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/NOTICE +4 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/SKILL.md +49 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/agents/openai.yaml +2 -0
- package/plugins/aiwf-delegate-codex/.claude-plugin/plugin.json +9 -0
- package/plugins/aiwf-delegate-codex/LICENSE +21 -0
- package/plugins/aiwf-delegate-codex/NOTICE +4 -0
- package/plugins/aiwf-delegate-codex/README.md +10 -0
- package/plugins/aiwf-delegate-codex/plugin.json +13 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/LICENSE +21 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/NOTICE +4 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/SKILL.md +47 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/agents/openai.yaml +2 -0
- package/plugins/aiwf-nestjs-nextjs/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-nestjs-nextjs/LICENSE +201 -0
- package/plugins/aiwf-nestjs-nextjs/NOTICE +16 -0
- package/plugins/aiwf-nestjs-nextjs/README.md +53 -0
- package/plugins/aiwf-nestjs-nextjs/UPSTREAM.json +32 -0
- package/plugins/aiwf-nestjs-nextjs/rules/mcp-servers.md +59 -0
- package/plugins/aiwf-nestjs-nextjs/skills/drizzle-migration/SKILL.md +222 -0
- package/plugins/aiwf-nestjs-nextjs/skills/implement/SKILL.md +393 -0
- package/plugins/aiwf-nestjs-nextjs/skills/implement/references/project-layout.md +158 -0
- package/plugins/aiwf-nestjs-nextjs/skills/nest-test/SKILL.md +300 -0
- package/plugins/aiwf-nestjs-nextjs/skills/playwright-test/SKILL.md +245 -0
- package/plugins/aiwf-nestjs-nextjs/skills/react-test/SKILL.md +217 -0
- package/plugins/aiwf-spec/.claude-plugin/plugin.json +9 -0
- package/plugins/aiwf-spec/LICENSE +201 -0
- package/plugins/aiwf-spec/NOTICE +20 -0
- package/plugins/aiwf-spec/README.md +36 -0
- package/plugins/aiwf-spec/skills/sync-docs/SKILL.md +47 -0
- package/plugins/aiwf-spec/skills/workflow/SKILL.md +42 -0
- package/plugins/aiwf-vaadin-jooq/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-vaadin-jooq/LICENSE +201 -0
- package/plugins/aiwf-vaadin-jooq/NOTICE +16 -0
- package/plugins/aiwf-vaadin-jooq/README.md +56 -0
- package/plugins/aiwf-vaadin-jooq/UPSTREAM.json +43 -0
- package/plugins/aiwf-vaadin-jooq/agents/uc-coverage.md +260 -0
- package/plugins/aiwf-vaadin-jooq/rules/mcp-servers.md +44 -0
- package/plugins/aiwf-vaadin-jooq/skills/browserless-test/SKILL.md +407 -0
- package/plugins/aiwf-vaadin-jooq/skills/browserless-test/references/UC001ManagePersonsTest.java +111 -0
- package/plugins/aiwf-vaadin-jooq/skills/coverage-check/SKILL.md +190 -0
- package/plugins/aiwf-vaadin-jooq/skills/flyway-migration/SKILL.md +70 -0
- package/plugins/aiwf-vaadin-jooq/skills/hilla-test/SKILL.md +350 -0
- package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsServiceTest.java +81 -0
- package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsViewTest.tsx +87 -0
- package/plugins/aiwf-vaadin-jooq/skills/implement/SKILL.md +196 -0
- package/plugins/aiwf-vaadin-jooq/skills/implement-hilla/SKILL.md +216 -0
- package/plugins/aiwf-vaadin-jooq/skills/karibu-test/SKILL.md +298 -0
- package/plugins/aiwf-vaadin-jooq/skills/karibu-test/references/UC001ManagePersonsTest.java +93 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/SKILL.md +237 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/ExampleViewIT.java +143 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/TC001CustomerOnboardingIT.java +144 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/dramafinder-api.md +190 -0
- package/scripts/check-dependencies.js +26 -96
- package/scripts/install-spec-skills.mjs +126 -0
- package/scripts/validate-spec-plugin.mjs +145 -0
- package/src/cli/spec-cli.js +292 -0
- package/src/lib/spec-workflow.js +982 -0
- package/docs/ADR_MANAGEMENT_GUIDE.ko.md +0 -602
- package/docs/ADR_MANAGEMENT_GUIDE.md +0 -602
- package/docs/AI-WORKFLOW.ko.md +0 -299
- package/docs/AI-WORKFLOW.md +0 -401
- package/docs/API_REFERENCE_FULL.ko.md +0 -1135
- package/docs/API_REFERENCE_FULL.md +0 -1135
- package/docs/ARCHITECTURE.ko.md +0 -314
- package/docs/ARCHITECTURE.md +0 -314
- package/docs/CLI_USAGE_GUIDE.ko.md +0 -634
- package/docs/CLI_USAGE_GUIDE.md +0 -640
- package/docs/CODE_CLEANUP_GUIDE.ko.md +0 -415
- package/docs/CODE_CLEANUP_GUIDE.md +0 -415
- package/docs/COMMANDS_GUIDE.ko.md +0 -1037
- package/docs/COMMANDS_GUIDE.md +0 -1037
- package/docs/CONTRIBUTING.ko.md +0 -408
- package/docs/CONTRIBUTING.md +0 -408
- package/docs/DEVELOPMENT_GUIDE.ko.md +0 -440
- package/docs/DEVELOPMENT_GUIDE.md +0 -727
- package/docs/EXAMPLES.ko.md +0 -695
- package/docs/EXAMPLES.md +0 -693
- package/docs/GETTING_STARTED.ko.md +0 -219
- package/docs/GETTING_STARTED.md +0 -476
- package/docs/MODULE_MANAGEMENT_GUIDE.ko.md +0 -289
- package/docs/MODULE_MANAGEMENT_GUIDE.md +0 -289
- package/docs/PERFORMANCE_ARCHITECTURE.md +0 -494
- package/docs/PERFORMANCE_GUIDELINES.ko.md +0 -388
- package/docs/PERFORMANCE_GUIDELINES.md +0 -553
- package/docs/PRD.ko.md +0 -148
- package/docs/PRD.md +0 -150
- package/docs/ROADMAP_v0.4.0.md +0 -286
- package/docs/STATE_MANAGEMENT_GUIDE.ko.md +0 -278
- package/docs/STATE_MANAGEMENT_GUIDE.md +0 -278
- package/docs/TROUBLESHOOTING.ko.md +0 -366
- package/docs/TROUBLESHOOTING.md +0 -722
- package/docs/VALIDATOR_API.ko.md +0 -324
- package/docs/VALIDATOR_API.md +0 -324
- package/docs/YOLO_SYSTEM_GUIDE.ko.md +0 -542
- package/docs/YOLO_SYSTEM_GUIDE.md +0 -542
- package/docs/designs/AI_PERSONA_SYSTEM_DESIGN.md +0 -516
- package/docs/designs/API_DOCUMENTATION.md +0 -932
- package/docs/designs/API_REFERENCE.md +0 -979
- package/docs/designs/Enhanced_Installation_Flow_Design.md +0 -498
- package/docs/designs/aiwf-metadata-system-prd.md +0 -127
- package/docs/designs/offline-template-cache.md +0 -323
- package/docs/designs/persona-aware-compression.md +0 -168
- package/docs/guides/ai-personas-guide-ko.md +0 -239
- package/docs/guides/ai-personas-guide.md +0 -239
- package/docs/guides/checkpoint-system-guide-ko.md +0 -356
- package/docs/guides/checkpoint-system-guide.md +0 -356
- package/docs/guides/context-compression-guide-ko.md +0 -313
- package/docs/guides/context-compression-guide.md +0 -313
- package/docs/guides/independent-sprint-guide-ko.md +0 -321
- package/docs/guides/independent-sprint-guide.md +0 -321
- package/rules/global/aiwf-code-style-guide.md +0 -30
- package/rules/global/aiwf-coding-principles.md +0 -33
- package/rules/global/aiwf-development-process.md +0 -41
- package/rules/global/aiwf-global-rules.md +0 -84
- package/rules/manual/aiwf-generate-plan-docs.md +0 -280
- package/scripts/run-integration-tests.js +0 -317
- package/scripts/update-file-lists.js +0 -267
- package/scripts/validate-commands.js +0 -254
- package/src/DEPENDENCY_MAP.md +0 -90
- package/src/cli/cache-cli.js +0 -459
- package/src/cli/checkpoint-cli.js +0 -417
- package/src/cli/index.js +0 -481
- package/src/cli/language-cli.js +0 -286
- package/src/cli/sprint-cli.js +0 -287
- package/src/commands/ai-tool.js +0 -383
- package/src/commands/compress.js +0 -60
- package/src/commands/create-project.js +0 -160
- package/src/commands/evaluate.js +0 -459
- package/src/commands/persona.js +0 -309
- package/src/commands/sprint-independent.js +0 -393
- package/src/commands/sprint-task.js +0 -262
- package/src/commands/state.js +0 -1164
- package/src/commands/token.js +0 -312
- package/src/commands/yolo-config.js +0 -502
- package/src/config/file-lists.js +0 -147
- package/src/config/yolo-config-template.yaml +0 -168
- package/src/lib/ai-persona-manager.js +0 -711
- package/src/lib/backup-manager.js +0 -271
- package/src/lib/cache-system.js +0 -332
- package/src/lib/context-engine.js +0 -568
- package/src/lib/file-downloader.js +0 -304
- package/src/lib/github-integration.js +0 -402
- package/src/lib/installer.js +0 -1066
- package/src/lib/memory-profiler.js +0 -471
- package/src/lib/metrics-collector.js +0 -885
- package/src/lib/offline-detector.js +0 -386
- package/src/lib/resource-loader-enhanced.js +0 -399
- package/src/lib/resource-loader.js +0 -250
- package/src/lib/resources/commands/ai-persona.js +0 -602
- package/src/lib/resources/commands/compress-context.js +0 -389
- package/src/lib/resources/commands/evaluate.js +0 -246
- package/src/lib/resources/commands/persona-context-apply.js +0 -562
- package/src/lib/resources/commands/token-tracking.js +0 -443
- package/src/lib/resources/config/commit-patterns.js +0 -103
- package/src/lib/resources/config/language.json +0 -6
- package/src/lib/resources/personas/PERSONA_INDEX.md +0 -57
- package/src/lib/resources/personas/analyst.json +0 -44
- package/src/lib/resources/personas/architect/best_practices.md +0 -136
- package/src/lib/resources/personas/architect/knowledge_base.md +0 -377
- package/src/lib/resources/personas/architect.json +0 -44
- package/src/lib/resources/personas/backend/best_practices.md +0 -766
- package/src/lib/resources/personas/backend/knowledge_base.md +0 -1070
- package/src/lib/resources/personas/data_analyst/best_practices.md +0 -594
- package/src/lib/resources/personas/data_analyst/knowledge_base.md +0 -1057
- package/src/lib/resources/personas/developer.json +0 -44
- package/src/lib/resources/personas/developer.md +0 -37
- package/src/lib/resources/personas/evaluation_criteria.json +0 -137
- package/src/lib/resources/personas/frontend/best_practices.md +0 -445
- package/src/lib/resources/personas/frontend/knowledge_base.md +0 -729
- package/src/lib/resources/personas/persona-index.json +0 -31
- package/src/lib/resources/personas/reviewer.json +0 -44
- package/src/lib/resources/personas/security/best_practices.md +0 -307
- package/src/lib/resources/personas/security/knowledge_base.md +0 -498
- package/src/lib/resources/personas/tester.json +0 -44
- package/src/lib/resources/templates/README.md +0 -78
- package/src/lib/resources/templates/api-server/config.json +0 -64
- package/src/lib/resources/templates/api-server/template/.aiwf/config.json +0 -56
- package/src/lib/resources/templates/api-server/template/.aiwf/feature-ledger.json +0 -42
- package/src/lib/resources/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -40
- package/src/lib/resources/templates/api-server/template/.aiwf/scripts/cli.js +0 -111
- package/src/lib/resources/templates/api-server/template/.env.example +0 -29
- package/src/lib/resources/templates/api-server/template/.eslintrc.json +0 -23
- package/src/lib/resources/templates/api-server/template/README.md +0 -171
- package/src/lib/resources/templates/api-server/template/jest.config.js +0 -26
- package/src/lib/resources/templates/api-server/template/nodemon.json +0 -9
- package/src/lib/resources/templates/api-server/template/package.json +0 -61
- package/src/lib/resources/templates/api-server/template/src/app.ts +0 -60
- package/src/lib/resources/templates/api-server/template/src/config/swagger.ts +0 -38
- package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +0 -54
- package/src/lib/resources/templates/api-server/template/src/controllers/authController.ts +0 -128
- package/src/lib/resources/templates/api-server/template/src/controllers/statusController.ts +0 -28
- package/src/lib/resources/templates/api-server/template/src/index.ts +0 -28
- package/src/lib/resources/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -50
- package/src/lib/resources/templates/api-server/template/src/middleware/authMiddleware.ts +0 -41
- package/src/lib/resources/templates/api-server/template/src/middleware/errorHandler.ts +0 -42
- package/src/lib/resources/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -14
- package/src/lib/resources/templates/api-server/template/src/middleware/requestLogger.ts +0 -20
- package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +0 -31
- package/src/lib/resources/templates/api-server/template/src/routes/index.ts +0 -13
- package/src/lib/resources/templates/api-server/template/src/routes/v1/index.ts +0 -67
- package/src/lib/resources/templates/api-server/template/src/utils/logger.ts +0 -37
- package/src/lib/resources/templates/api-server/template/tests/app.test.ts +0 -40
- package/src/lib/resources/templates/api-server/template/tsconfig.json +0 -43
- package/src/lib/resources/templates/npm-library/config.json +0 -61
- package/src/lib/resources/templates/npm-library/template/README.md +0 -201
- package/src/lib/resources/templates/npm-library/template/package.json +0 -78
- package/src/lib/resources/templates/web-app/config.json +0 -53
- package/src/lib/resources/templates/web-app/template/.aiwf/config.json +0 -54
- package/src/lib/resources/templates/web-app/template/.aiwf/feature-ledger.json +0 -37
- package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -40
- package/src/lib/resources/templates/web-app/template/.aiwf/scripts/cli.js +0 -110
- package/src/lib/resources/templates/web-app/template/.eslintrc.cjs +0 -20
- package/src/lib/resources/templates/web-app/template/README.md +0 -151
- package/src/lib/resources/templates/web-app/template/index.html +0 -14
- package/src/lib/resources/templates/web-app/template/package.json +0 -44
- package/src/lib/resources/templates/web-app/template/postcss.config.js +0 -6
- package/src/lib/resources/templates/web-app/template/public/vite.svg +0 -1
- package/src/lib/resources/templates/web-app/template/src/App.tsx +0 -21
- package/src/lib/resources/templates/web-app/template/src/components/Layout.tsx +0 -57
- package/src/lib/resources/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -107
- package/src/lib/resources/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -71
- package/src/lib/resources/templates/web-app/template/src/index.css +0 -60
- package/src/lib/resources/templates/web-app/template/src/main.tsx +0 -10
- package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -57
- package/src/lib/resources/templates/web-app/template/src/pages/HomePage.tsx +0 -89
- package/src/lib/resources/templates/web-app/template/src/pages/NotFound.tsx +0 -25
- package/src/lib/resources/templates/web-app/template/src/stores/aiwfStore.ts +0 -126
- package/src/lib/resources/templates/web-app/template/src/types/global.d.ts +0 -9
- package/src/lib/resources/templates/web-app/template/src/vite-env.d.ts +0 -1
- package/src/lib/resources/templates/web-app/template/tailwind.config.js +0 -30
- package/src/lib/resources/templates/web-app/template/tsconfig.json +0 -37
- package/src/lib/resources/templates/web-app/template/tsconfig.node.json +0 -10
- package/src/lib/resources/templates/web-app/template/vite.config.ts +0 -23
- package/src/lib/resources/utils/background-monitor.js +0 -223
- package/src/lib/resources/utils/compression-metrics.js +0 -1031
- package/src/lib/resources/utils/compression-strategies.js +0 -557
- package/src/lib/resources/utils/content-normalizer.js +0 -455
- package/src/lib/resources/utils/context-compressor.js +0 -583
- package/src/lib/resources/utils/context-rule-parser.js +0 -180
- package/src/lib/resources/utils/context-token-monitor.js +0 -463
- package/src/lib/resources/utils/context-update-manager.js +0 -502
- package/src/lib/resources/utils/git-utils.js +0 -220
- package/src/lib/resources/utils/importance-classifier.js +0 -645
- package/src/lib/resources/utils/information-filter.js +0 -710
- package/src/lib/resources/utils/persona-aware-compressor.js +0 -598
- package/src/lib/resources/utils/prompt-injector.js +0 -242
- package/src/lib/resources/utils/simplified-evaluator.js +0 -119
- package/src/lib/resources/utils/text-summarizer.js +0 -492
- package/src/lib/resources/utils/token-counter.js +0 -177
- package/src/lib/resources/utils/token-monitor.js +0 -484
- package/src/lib/resources/utils/token-reporter.js +0 -452
- package/src/lib/resources/utils/token-storage.js +0 -433
- package/src/lib/resources/utils/token-tracker.js +0 -283
- package/src/lib/rollback-manager.js +0 -418
- package/src/lib/state/priority-calculator.js +0 -217
- package/src/lib/state/state-index.js +0 -155
- package/src/lib/state/task-scanner.js +0 -328
- package/src/lib/task-analyzer.js +0 -599
- package/src/lib/template-cache-system.js +0 -559
- package/src/lib/template-downloader.js +0 -467
- package/src/lib/template-version-manager.js +0 -491
- package/src/lib/token-optimizer.js +0 -517
- package/src/lib/validator.js +0 -376
- package/src/utils/checkpoint-manager.js +0 -435
- package/src/utils/engineering-guard.js +0 -399
- package/src/utils/language-utils.js +0 -331
- package/src/utils/messages.js +0 -166
- package/src/utils/paths.js +0 -112
|
@@ -1,932 +0,0 @@
|
|
|
1
|
-
# AIWF API 문서
|
|
2
|
-
|
|
3
|
-
## 개요
|
|
4
|
-
|
|
5
|
-
이 문서는 AIWF 프로젝트의 전체 API에 대한 문서입니다. 다음 모듈들을 포함합니다:
|
|
6
|
-
|
|
7
|
-
### S01 - Context Engineering 기반
|
|
8
|
-
- GitHub API 캐싱 시스템
|
|
9
|
-
- 파일 배치 처리 시스템
|
|
10
|
-
- 메모리 프로파일링 시스템
|
|
11
|
-
- 성능 벤치마크 시스템
|
|
12
|
-
- Feature Ledger 시스템
|
|
13
|
-
- 토큰 추적 시스템
|
|
14
|
-
|
|
15
|
-
### S02 - AI 강화 기능
|
|
16
|
-
- AI 페르소나 시스템
|
|
17
|
-
- Context 압축 시스템
|
|
18
|
-
- Feature-Git 연동 시스템
|
|
19
|
-
|
|
20
|
-
## 1. GitHub API 캐싱 시스템
|
|
21
|
-
|
|
22
|
-
### GitHubAPICache
|
|
23
|
-
|
|
24
|
-
GitHub API 호출을 최적화하기 위한 캐싱 시스템입니다.
|
|
25
|
-
|
|
26
|
-
#### 생성자
|
|
27
|
-
|
|
28
|
-
```javascript
|
|
29
|
-
new GitHubAPICache(cacheDir = '.aiwf/cache', ttl = 300000)
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
- `cacheDir`: 캐시 디렉토리 경로
|
|
33
|
-
- `ttl`: 캐시 만료 시간 (밀리초)
|
|
34
|
-
|
|
35
|
-
#### 메서드
|
|
36
|
-
|
|
37
|
-
##### `async init()`
|
|
38
|
-
|
|
39
|
-
캐시 시스템을 초기화합니다.
|
|
40
|
-
|
|
41
|
-
```javascript
|
|
42
|
-
const cache = new GitHubAPICache();
|
|
43
|
-
await cache.init();
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
##### `async get(url, headers = {})`
|
|
47
|
-
|
|
48
|
-
캐시에서 데이터를 가져옵니다.
|
|
49
|
-
|
|
50
|
-
```javascript
|
|
51
|
-
const data = await cache.get('https://api.github.com/repos/user/repo');
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
##### `async set(url, data, headers = {})`
|
|
55
|
-
|
|
56
|
-
캐시에 데이터를 저장합니다.
|
|
57
|
-
|
|
58
|
-
```javascript
|
|
59
|
-
await cache.set('https://api.github.com/repos/user/repo', responseData);
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
##### `async getOrFetch(url, fetchFunction, headers = {})`
|
|
63
|
-
|
|
64
|
-
캐시에서 데이터를 가져오거나 없으면 fetch 함수를 실행합니다.
|
|
65
|
-
|
|
66
|
-
```javascript
|
|
67
|
-
const data = await cache.getOrFetch(url, async () => {
|
|
68
|
-
const response = await fetch(url);
|
|
69
|
-
return await response.json();
|
|
70
|
-
});
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
##### `getStats()`
|
|
74
|
-
|
|
75
|
-
캐시 통계를 반환합니다.
|
|
76
|
-
|
|
77
|
-
```javascript
|
|
78
|
-
const stats = cache.getStats();
|
|
79
|
-
console.log(stats.hitRate); // 캐시 히트율
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
##### `async cleanup()`
|
|
83
|
-
|
|
84
|
-
만료된 캐시를 정리합니다.
|
|
85
|
-
|
|
86
|
-
```javascript
|
|
87
|
-
await cache.cleanup();
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### OptimizedGitHubClient
|
|
91
|
-
|
|
92
|
-
최적화된 GitHub API 클라이언트입니다.
|
|
93
|
-
|
|
94
|
-
#### 생성자
|
|
95
|
-
|
|
96
|
-
```javascript
|
|
97
|
-
new OptimizedGitHubClient(baseUrl = 'https://api.github.com', cacheOptions = {})
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
#### 메서드
|
|
101
|
-
|
|
102
|
-
##### `async cachedFetch(url, options = {})`
|
|
103
|
-
|
|
104
|
-
캐시를 적용한 HTTP 요청을 수행합니다.
|
|
105
|
-
|
|
106
|
-
```javascript
|
|
107
|
-
const client = new OptimizedGitHubClient();
|
|
108
|
-
const data = await client.cachedFetch('https://api.github.com/repos/user/repo');
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
##### `async batchRequest(urls, options = {})`
|
|
112
|
-
|
|
113
|
-
여러 URL에 대한 배치 요청을 수행합니다.
|
|
114
|
-
|
|
115
|
-
```javascript
|
|
116
|
-
const urls = ['url1', 'url2', 'url3'];
|
|
117
|
-
const results = await client.batchRequest(urls, { batchSize: 5 });
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
##### `async getDirectoryStructure(repoPath, dirPath = '')`
|
|
121
|
-
|
|
122
|
-
리포지토리의 디렉토리 구조를 가져옵니다.
|
|
123
|
-
|
|
124
|
-
```javascript
|
|
125
|
-
const structure = await client.getDirectoryStructure('user/repo', 'src');
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## 2. 파일 배치 처리 시스템
|
|
129
|
-
|
|
130
|
-
### FileBatchProcessor
|
|
131
|
-
|
|
132
|
-
파일 시스템 작업을 배치로 처리하는 시스템입니다.
|
|
133
|
-
|
|
134
|
-
#### 생성자
|
|
135
|
-
|
|
136
|
-
```javascript
|
|
137
|
-
new FileBatchProcessor(options = {})
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
- `maxConcurrency`: 최대 동시 처리 수 (기본값: 10)
|
|
141
|
-
- `batchSize`: 배치 크기 (기본값: 50)
|
|
142
|
-
|
|
143
|
-
#### 메서드
|
|
144
|
-
|
|
145
|
-
##### `addReadOperation(filePath, options = {})`
|
|
146
|
-
|
|
147
|
-
파일 읽기 작업을 큐에 추가합니다.
|
|
148
|
-
|
|
149
|
-
```javascript
|
|
150
|
-
const processor = new FileBatchProcessor();
|
|
151
|
-
const content = await processor.addReadOperation('/path/to/file.txt');
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
##### `addWriteOperation(filePath, content, options = {})`
|
|
155
|
-
|
|
156
|
-
파일 쓰기 작업을 큐에 추가합니다.
|
|
157
|
-
|
|
158
|
-
```javascript
|
|
159
|
-
await processor.addWriteOperation('/path/to/file.txt', 'content');
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
##### `addCopyOperation(source, destination, options = {})`
|
|
163
|
-
|
|
164
|
-
파일 복사 작업을 큐에 추가합니다.
|
|
165
|
-
|
|
166
|
-
```javascript
|
|
167
|
-
await processor.addCopyOperation('/src/file.txt', '/dest/file.txt');
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
##### `addMkdirOperation(dirPath, options = {})`
|
|
171
|
-
|
|
172
|
-
디렉토리 생성 작업을 큐에 추가합니다.
|
|
173
|
-
|
|
174
|
-
```javascript
|
|
175
|
-
await processor.addMkdirOperation('/path/to/directory');
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
##### `getStats()`
|
|
179
|
-
|
|
180
|
-
처리 통계를 반환합니다.
|
|
181
|
-
|
|
182
|
-
```javascript
|
|
183
|
-
const stats = processor.getStats();
|
|
184
|
-
console.log(stats.successRate); // 성공률
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### FileUtils
|
|
188
|
-
|
|
189
|
-
파일 작업 유틸리티 함수들입니다.
|
|
190
|
-
|
|
191
|
-
#### 메서드
|
|
192
|
-
|
|
193
|
-
##### `static async readMultipleFiles(filePaths, processor)`
|
|
194
|
-
|
|
195
|
-
여러 파일을 동시에 읽습니다.
|
|
196
|
-
|
|
197
|
-
```javascript
|
|
198
|
-
const filePaths = ['file1.txt', 'file2.txt', 'file3.txt'];
|
|
199
|
-
const results = await FileUtils.readMultipleFiles(filePaths, processor);
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
##### `static async writeMultipleFiles(fileData, processor)`
|
|
203
|
-
|
|
204
|
-
여러 파일을 동시에 씁니다.
|
|
205
|
-
|
|
206
|
-
```javascript
|
|
207
|
-
const fileData = {
|
|
208
|
-
'file1.txt': 'content1',
|
|
209
|
-
'file2.txt': 'content2'
|
|
210
|
-
};
|
|
211
|
-
await FileUtils.writeMultipleFiles(fileData, processor);
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
## 3. 메모리 프로파일링 시스템
|
|
215
|
-
|
|
216
|
-
### MemoryProfiler
|
|
217
|
-
|
|
218
|
-
메모리 사용량을 모니터링하고 최적화하는 시스템입니다.
|
|
219
|
-
|
|
220
|
-
#### 생성자
|
|
221
|
-
|
|
222
|
-
```javascript
|
|
223
|
-
new MemoryProfiler(options = {})
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
- `samplingInterval`: 샘플링 간격 (기본값: 1000ms)
|
|
227
|
-
- `maxSamples`: 최대 샘플 수 (기본값: 1000)
|
|
228
|
-
- `heapThreshold`: 힙 메모리 임계값 (기본값: 100MB)
|
|
229
|
-
|
|
230
|
-
#### 메서드
|
|
231
|
-
|
|
232
|
-
##### `startProfiling()`
|
|
233
|
-
|
|
234
|
-
메모리 프로파일링을 시작합니다.
|
|
235
|
-
|
|
236
|
-
```javascript
|
|
237
|
-
const profiler = new MemoryProfiler();
|
|
238
|
-
profiler.startProfiling();
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
##### `stopProfiling()`
|
|
242
|
-
|
|
243
|
-
메모리 프로파일링을 중지합니다.
|
|
244
|
-
|
|
245
|
-
```javascript
|
|
246
|
-
profiler.stopProfiling();
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
##### `createSnapshot(label)`
|
|
250
|
-
|
|
251
|
-
메모리 스냅샷을 생성합니다.
|
|
252
|
-
|
|
253
|
-
```javascript
|
|
254
|
-
const snapshot = profiler.createSnapshot('before-operation');
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
##### `compareSnapshots(label1, label2)`
|
|
258
|
-
|
|
259
|
-
두 스냅샷을 비교합니다.
|
|
260
|
-
|
|
261
|
-
```javascript
|
|
262
|
-
const comparison = profiler.compareSnapshots('before', 'after');
|
|
263
|
-
console.log(comparison.memoryDiff); // 메모리 차이
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
##### `getOptimizationSuggestions()`
|
|
267
|
-
|
|
268
|
-
메모리 최적화 제안을 반환합니다.
|
|
269
|
-
|
|
270
|
-
```javascript
|
|
271
|
-
const suggestions = profiler.getOptimizationSuggestions();
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
##### `forceGarbageCollection()`
|
|
275
|
-
|
|
276
|
-
가비지 컬렉션을 강제 실행합니다.
|
|
277
|
-
|
|
278
|
-
```javascript
|
|
279
|
-
const gcResult = profiler.forceGarbageCollection();
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
##### `generateReport()`
|
|
283
|
-
|
|
284
|
-
메모리 사용량 보고서를 생성합니다.
|
|
285
|
-
|
|
286
|
-
```javascript
|
|
287
|
-
const report = profiler.generateReport();
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
##### `async monitor(duration = 60000)`
|
|
291
|
-
|
|
292
|
-
지정된 시간 동안 메모리를 모니터링합니다.
|
|
293
|
-
|
|
294
|
-
```javascript
|
|
295
|
-
const report = await profiler.monitor(60000); // 1분 동안 모니터링
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
### MemoryOptimizer
|
|
299
|
-
|
|
300
|
-
메모리 최적화 유틸리티입니다.
|
|
301
|
-
|
|
302
|
-
#### 메서드
|
|
303
|
-
|
|
304
|
-
##### `static async optimizeForLargeFiles(filePath, chunkSize = 64 * 1024)`
|
|
305
|
-
|
|
306
|
-
대용량 파일에 대한 최적화 제안을 반환합니다.
|
|
307
|
-
|
|
308
|
-
```javascript
|
|
309
|
-
const optimization = await MemoryOptimizer.optimizeForLargeFiles('/path/to/large/file');
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
##### `static optimizeDataStructures(data)`
|
|
313
|
-
|
|
314
|
-
데이터 구조에 대한 최적화 제안을 반환합니다.
|
|
315
|
-
|
|
316
|
-
```javascript
|
|
317
|
-
const optimization = MemoryOptimizer.optimizeDataStructures(largeArray);
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
## 4. 성능 벤치마크 시스템
|
|
321
|
-
|
|
322
|
-
### PerformanceBenchmark
|
|
323
|
-
|
|
324
|
-
성능 벤치마크를 실행하는 시스템입니다.
|
|
325
|
-
|
|
326
|
-
#### 생성자
|
|
327
|
-
|
|
328
|
-
```javascript
|
|
329
|
-
new PerformanceBenchmark(options = {})
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
- `iterations`: 반복 횟수 (기본값: 100)
|
|
333
|
-
- `warmupIterations`: 워밍업 반복 횟수 (기본값: 10)
|
|
334
|
-
- `memoryProfiling`: 메모리 프로파일링 활성화 (기본값: false)
|
|
335
|
-
|
|
336
|
-
#### 메서드
|
|
337
|
-
|
|
338
|
-
##### `async run(testSuite)`
|
|
339
|
-
|
|
340
|
-
벤치마크 테스트 스위트를 실행합니다.
|
|
341
|
-
|
|
342
|
-
```javascript
|
|
343
|
-
const benchmark = new PerformanceBenchmark();
|
|
344
|
-
const testSuite = {
|
|
345
|
-
name: 'My Test Suite',
|
|
346
|
-
tests: [
|
|
347
|
-
{
|
|
348
|
-
name: 'Test 1',
|
|
349
|
-
fn: async () => {
|
|
350
|
-
// 테스트 로직
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
]
|
|
354
|
-
};
|
|
355
|
-
const results = await benchmark.run(testSuite);
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
##### `async runLoadTest(testConfig)`
|
|
359
|
-
|
|
360
|
-
부하 테스트를 실행합니다.
|
|
361
|
-
|
|
362
|
-
```javascript
|
|
363
|
-
const loadTestResult = await benchmark.runLoadTest({
|
|
364
|
-
name: 'Load Test',
|
|
365
|
-
target: 'https://api.example.com',
|
|
366
|
-
duration: 60000,
|
|
367
|
-
concurrency: 10
|
|
368
|
-
});
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
##### `detectPerformanceRegression(currentResult, baselineResult)`
|
|
372
|
-
|
|
373
|
-
성능 회귀를 감지합니다.
|
|
374
|
-
|
|
375
|
-
```javascript
|
|
376
|
-
const regression = benchmark.detectPerformanceRegression(current, baseline);
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
##### `generateReport()`
|
|
380
|
-
|
|
381
|
-
성능 보고서를 생성합니다.
|
|
382
|
-
|
|
383
|
-
```javascript
|
|
384
|
-
const report = benchmark.generateReport();
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
##### `async saveReport(filePath)`
|
|
388
|
-
|
|
389
|
-
보고서를 JSON 파일로 저장합니다.
|
|
390
|
-
|
|
391
|
-
```javascript
|
|
392
|
-
await benchmark.saveReport('/path/to/report.json');
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
##### `async generateHTMLReport(filePath)`
|
|
396
|
-
|
|
397
|
-
보고서를 HTML 파일로 생성합니다.
|
|
398
|
-
|
|
399
|
-
```javascript
|
|
400
|
-
await benchmark.generateHTMLReport('/path/to/report.html');
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
### BenchmarkSuites
|
|
404
|
-
|
|
405
|
-
사전 정의된 벤치마크 테스트 스위트들입니다.
|
|
406
|
-
|
|
407
|
-
#### 메서드
|
|
408
|
-
|
|
409
|
-
##### `static fileOperations()`
|
|
410
|
-
|
|
411
|
-
파일 작업 벤치마크 스위트를 반환합니다.
|
|
412
|
-
|
|
413
|
-
```javascript
|
|
414
|
-
const suite = BenchmarkSuites.fileOperations();
|
|
415
|
-
await benchmark.run(suite);
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
##### `static memoryOperations()`
|
|
419
|
-
|
|
420
|
-
메모리 작업 벤치마크 스위트를 반환합니다.
|
|
421
|
-
|
|
422
|
-
```javascript
|
|
423
|
-
const suite = BenchmarkSuites.memoryOperations();
|
|
424
|
-
await benchmark.run(suite);
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
##### `static githubAPICache()`
|
|
428
|
-
|
|
429
|
-
GitHub API 캐시 벤치마크 스위트를 반환합니다.
|
|
430
|
-
|
|
431
|
-
```javascript
|
|
432
|
-
const suite = BenchmarkSuites.githubAPICache();
|
|
433
|
-
await benchmark.run(suite);
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
## 사용 예제
|
|
437
|
-
|
|
438
|
-
### 전체 성능 최적화 워크플로우
|
|
439
|
-
|
|
440
|
-
```javascript
|
|
441
|
-
import { GitHubAPICache, OptimizedGitHubClient } from './lib/cache-system.js';
|
|
442
|
-
import { FileBatchProcessor, FileUtils } from './lib/file-batch-processor.js';
|
|
443
|
-
import { MemoryProfiler, MemoryOptimizer } from './lib/memory-profiler.js';
|
|
444
|
-
import { PerformanceBenchmark, BenchmarkSuites } from './lib/performance-benchmark.js';
|
|
445
|
-
|
|
446
|
-
async function optimizePerformance() {
|
|
447
|
-
// 1. GitHub API 캐싱 설정
|
|
448
|
-
const githubClient = new OptimizedGitHubClient();
|
|
449
|
-
await githubClient.init();
|
|
450
|
-
|
|
451
|
-
// 2. 파일 배치 처리 설정
|
|
452
|
-
const fileProcessor = new FileBatchProcessor({
|
|
453
|
-
maxConcurrency: 5,
|
|
454
|
-
batchSize: 20
|
|
455
|
-
});
|
|
456
|
-
|
|
457
|
-
// 3. 메모리 프로파일링 시작
|
|
458
|
-
const memoryProfiler = new MemoryProfiler();
|
|
459
|
-
memoryProfiler.startProfiling();
|
|
460
|
-
|
|
461
|
-
// 4. 성능 벤치마크 실행
|
|
462
|
-
const benchmark = new PerformanceBenchmark({
|
|
463
|
-
iterations: 50,
|
|
464
|
-
memoryProfiling: true
|
|
465
|
-
});
|
|
466
|
-
|
|
467
|
-
const fileOpsSuite = BenchmarkSuites.fileOperations();
|
|
468
|
-
const memOpsSuite = BenchmarkSuites.memoryOperations();
|
|
469
|
-
const cacheOpsSuite = BenchmarkSuites.githubAPICache();
|
|
470
|
-
|
|
471
|
-
const results = await Promise.all([
|
|
472
|
-
benchmark.run(fileOpsSuite),
|
|
473
|
-
benchmark.run(memOpsSuite),
|
|
474
|
-
benchmark.run(cacheOpsSuite)
|
|
475
|
-
]);
|
|
476
|
-
|
|
477
|
-
// 5. 결과 저장
|
|
478
|
-
await benchmark.saveReport('./performance-report.json');
|
|
479
|
-
await benchmark.generateHTMLReport('./performance-report.html');
|
|
480
|
-
|
|
481
|
-
// 6. 메모리 프로파일링 결과
|
|
482
|
-
const memoryReport = memoryProfiler.generateReport();
|
|
483
|
-
const suggestions = memoryProfiler.getOptimizationSuggestions();
|
|
484
|
-
|
|
485
|
-
console.log('성능 최적화 완료');
|
|
486
|
-
console.log('메모리 최적화 제안:', suggestions);
|
|
487
|
-
|
|
488
|
-
return {
|
|
489
|
-
performanceResults: results,
|
|
490
|
-
memoryReport,
|
|
491
|
-
suggestions
|
|
492
|
-
};
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
// 실행
|
|
496
|
-
optimizePerformance().catch(console.error);
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
### 특정 모듈 사용 예제
|
|
500
|
-
|
|
501
|
-
```javascript
|
|
502
|
-
// GitHub API 캐싱 사용
|
|
503
|
-
const cache = new GitHubAPICache();
|
|
504
|
-
await cache.init();
|
|
505
|
-
|
|
506
|
-
const repoData = await cache.getOrFetch(
|
|
507
|
-
'https://api.github.com/repos/user/repo',
|
|
508
|
-
async () => {
|
|
509
|
-
const response = await fetch('https://api.github.com/repos/user/repo');
|
|
510
|
-
return await response.json();
|
|
511
|
-
}
|
|
512
|
-
);
|
|
513
|
-
|
|
514
|
-
// 파일 배치 처리 사용
|
|
515
|
-
const processor = new FileBatchProcessor();
|
|
516
|
-
const files = ['file1.txt', 'file2.txt', 'file3.txt'];
|
|
517
|
-
const contents = await FileUtils.readMultipleFiles(files, processor);
|
|
518
|
-
|
|
519
|
-
// 메모리 프로파일링 사용
|
|
520
|
-
const profiler = new MemoryProfiler();
|
|
521
|
-
profiler.createSnapshot('start');
|
|
522
|
-
// ... 작업 실행 ...
|
|
523
|
-
profiler.createSnapshot('end');
|
|
524
|
-
const comparison = profiler.compareSnapshots('start', 'end');
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
## 오류 처리
|
|
528
|
-
|
|
529
|
-
모든 API는 Promise를 반환하므로 적절한 오류 처리가 필요합니다:
|
|
530
|
-
|
|
531
|
-
```javascript
|
|
532
|
-
try {
|
|
533
|
-
const result = await someAsyncOperation();
|
|
534
|
-
console.log(result);
|
|
535
|
-
} catch (error) {
|
|
536
|
-
console.error('Operation failed:', error.message);
|
|
537
|
-
// 오류 처리 로직
|
|
538
|
-
}
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
## 성능 고려사항
|
|
542
|
-
|
|
543
|
-
1. **캐시 설정**: TTL 값을 적절히 설정하여 메모리 사용량과 성능의 균형을 맞추세요.
|
|
544
|
-
2. **배치 크기**: 너무 큰 배치는 메모리 사용량을 증가시킬 수 있습니다.
|
|
545
|
-
3. **동시성**: 시스템 리소스에 따라 최적의 동시성 수준을 설정하세요.
|
|
546
|
-
4. **모니터링**: 정기적으로 성능 메트릭을 확인하고 최적화하세요.
|
|
547
|
-
|
|
548
|
-
## 5. Feature Ledger 시스템
|
|
549
|
-
|
|
550
|
-
### FeatureLedger
|
|
551
|
-
|
|
552
|
-
Feature(기능) 개발 진행 상황을 추적하고 관리하는 시스템입니다.
|
|
553
|
-
|
|
554
|
-
#### 생성자
|
|
555
|
-
|
|
556
|
-
```javascript
|
|
557
|
-
new FeatureLedger(ledgerPath = '.aiwf/04_FEATURES/feature_ledger.json')
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
#### 메서드
|
|
561
|
-
|
|
562
|
-
##### `async init()`
|
|
563
|
-
|
|
564
|
-
Feature Ledger를 초기화합니다.
|
|
565
|
-
|
|
566
|
-
```javascript
|
|
567
|
-
const ledger = new FeatureLedger();
|
|
568
|
-
await ledger.init();
|
|
569
|
-
```
|
|
570
|
-
|
|
571
|
-
##### `async createFeature(feature)`
|
|
572
|
-
|
|
573
|
-
새로운 Feature를 생성합니다.
|
|
574
|
-
|
|
575
|
-
```javascript
|
|
576
|
-
const newFeature = await ledger.createFeature({
|
|
577
|
-
name: 'User Authentication',
|
|
578
|
-
description: '사용자 인증 시스템 구현',
|
|
579
|
-
category: 'security',
|
|
580
|
-
priority: 'high'
|
|
581
|
-
});
|
|
582
|
-
console.log(newFeature.id); // F001
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
##### `async updateFeatureStatus(featureId, status)`
|
|
586
|
-
|
|
587
|
-
Feature 상태를 업데이트합니다.
|
|
588
|
-
|
|
589
|
-
```javascript
|
|
590
|
-
await ledger.updateFeatureStatus('F001', 'in_progress');
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
##### `async linkCommit(featureId, commitHash)`
|
|
594
|
-
|
|
595
|
-
커밋을 Feature에 연결합니다.
|
|
596
|
-
|
|
597
|
-
```javascript
|
|
598
|
-
await ledger.linkCommit('F001', 'abc123def456');
|
|
599
|
-
```
|
|
600
|
-
|
|
601
|
-
##### `async getFeatureProgress(featureId)`
|
|
602
|
-
|
|
603
|
-
Feature 진행률을 계산합니다.
|
|
604
|
-
|
|
605
|
-
```javascript
|
|
606
|
-
const progress = await ledger.getFeatureProgress('F001');
|
|
607
|
-
console.log(progress); // 75
|
|
608
|
-
```
|
|
609
|
-
|
|
610
|
-
## 6. 토큰 추적 시스템
|
|
611
|
-
|
|
612
|
-
### TokenTracker
|
|
613
|
-
|
|
614
|
-
Claude Code와의 대화에서 토큰 사용량을 추적하는 시스템입니다.
|
|
615
|
-
|
|
616
|
-
#### 생성자
|
|
617
|
-
|
|
618
|
-
```javascript
|
|
619
|
-
new TokenTracker(options = {})
|
|
620
|
-
```
|
|
621
|
-
|
|
622
|
-
- `maxTokensPerSession`: 세션당 최대 토큰 수 (기본값: 100000)
|
|
623
|
-
- `warningThreshold`: 경고 임계값 (기본값: 80%)
|
|
624
|
-
|
|
625
|
-
#### 메서드
|
|
626
|
-
|
|
627
|
-
##### `trackTokens(message, tokenCount)`
|
|
628
|
-
|
|
629
|
-
토큰 사용량을 기록합니다.
|
|
630
|
-
|
|
631
|
-
```javascript
|
|
632
|
-
tracker.trackTokens('user message', 150);
|
|
633
|
-
tracker.trackTokens('assistant response', 250);
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
##### `getSessionStats()`
|
|
637
|
-
|
|
638
|
-
현재 세션의 토큰 통계를 반환합니다.
|
|
639
|
-
|
|
640
|
-
```javascript
|
|
641
|
-
const stats = tracker.getSessionStats();
|
|
642
|
-
console.log(stats.totalTokens); // 400
|
|
643
|
-
console.log(stats.remainingTokens); // 99600
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
##### `predictTokenUsage(content)`
|
|
647
|
-
|
|
648
|
-
콘텐츠의 예상 토큰 사용량을 계산합니다.
|
|
649
|
-
|
|
650
|
-
```javascript
|
|
651
|
-
const predicted = tracker.predictTokenUsage('긴 텍스트 내용...');
|
|
652
|
-
console.log(predicted); // 예상 토큰 수
|
|
653
|
-
```
|
|
654
|
-
|
|
655
|
-
## 7. AI 페르소나 시스템
|
|
656
|
-
|
|
657
|
-
### AIPersonaManager
|
|
658
|
-
|
|
659
|
-
AI 페르소나를 관리하고 전환하는 시스템입니다.
|
|
660
|
-
|
|
661
|
-
#### 생성자
|
|
662
|
-
|
|
663
|
-
```javascript
|
|
664
|
-
new AIPersonaManager(personaConfigPath = '.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/ai_personas.json')
|
|
665
|
-
```
|
|
666
|
-
|
|
667
|
-
#### 메서드
|
|
668
|
-
|
|
669
|
-
##### `async init()`
|
|
670
|
-
|
|
671
|
-
페르소나 시스템을 초기화합니다.
|
|
672
|
-
|
|
673
|
-
```javascript
|
|
674
|
-
const manager = new AIPersonaManager();
|
|
675
|
-
await manager.init();
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
##### `async switchPersona(personaName)`
|
|
679
|
-
|
|
680
|
-
페르소나를 전환합니다.
|
|
681
|
-
|
|
682
|
-
```javascript
|
|
683
|
-
await manager.switchPersona('architect');
|
|
684
|
-
// 또는
|
|
685
|
-
await manager.switchPersona('debugger');
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
##### `getCurrentPersona()`
|
|
689
|
-
|
|
690
|
-
현재 활성화된 페르소나를 반환합니다.
|
|
691
|
-
|
|
692
|
-
```javascript
|
|
693
|
-
const current = manager.getCurrentPersona();
|
|
694
|
-
console.log(current.name); // 'architect'
|
|
695
|
-
```
|
|
696
|
-
|
|
697
|
-
##### `getPersonaContext(personaName)`
|
|
698
|
-
|
|
699
|
-
특정 페르소나의 컨텍스트 규칙을 반환합니다.
|
|
700
|
-
|
|
701
|
-
```javascript
|
|
702
|
-
const context = manager.getPersonaContext('reviewer');
|
|
703
|
-
console.log(context.priority); // ['changes', 'commits']
|
|
704
|
-
```
|
|
705
|
-
|
|
706
|
-
##### `async applyPersonaRules(content, personaName)`
|
|
707
|
-
|
|
708
|
-
페르소나 규칙을 콘텐츠에 적용합니다.
|
|
709
|
-
|
|
710
|
-
```javascript
|
|
711
|
-
const filtered = await manager.applyPersonaRules(projectContent, 'optimizer');
|
|
712
|
-
```
|
|
713
|
-
|
|
714
|
-
## 8. Context 압축 시스템
|
|
715
|
-
|
|
716
|
-
### ContextCompressor
|
|
717
|
-
|
|
718
|
-
프로젝트 컨텍스트를 압축하여 토큰 사용량을 최적화하는 시스템입니다.
|
|
719
|
-
|
|
720
|
-
#### 생성자
|
|
721
|
-
|
|
722
|
-
```javascript
|
|
723
|
-
new ContextCompressor(options = {})
|
|
724
|
-
```
|
|
725
|
-
|
|
726
|
-
- `defaultMode`: 기본 압축 모드 (기본값: 'balanced')
|
|
727
|
-
- `cacheEnabled`: 압축 캐시 활성화 (기본값: true)
|
|
728
|
-
|
|
729
|
-
#### 메서드
|
|
730
|
-
|
|
731
|
-
##### `compressContext(context, mode = 'balanced')`
|
|
732
|
-
|
|
733
|
-
컨텍스트를 압축합니다.
|
|
734
|
-
|
|
735
|
-
```javascript
|
|
736
|
-
const compressor = new ContextCompressor();
|
|
737
|
-
const compressed = compressor.compressContext(largeContext, 'aggressive');
|
|
738
|
-
```
|
|
739
|
-
|
|
740
|
-
##### `calculateCompressionRatio(original, compressed)`
|
|
741
|
-
|
|
742
|
-
압축률을 계산합니다.
|
|
743
|
-
|
|
744
|
-
```javascript
|
|
745
|
-
const ratio = compressor.calculateCompressionRatio(original, compressed);
|
|
746
|
-
console.log(ratio); // 0.65 (65% 압축)
|
|
747
|
-
```
|
|
748
|
-
|
|
749
|
-
##### `async compressFile(filePath, mode)`
|
|
750
|
-
|
|
751
|
-
파일을 압축합니다.
|
|
752
|
-
|
|
753
|
-
```javascript
|
|
754
|
-
const compressedContent = await compressor.compressFile('/path/to/file.js', 'balanced');
|
|
755
|
-
```
|
|
756
|
-
|
|
757
|
-
##### `async compressDirectory(dirPath, mode, options = {})`
|
|
758
|
-
|
|
759
|
-
디렉토리를 압축합니다.
|
|
760
|
-
|
|
761
|
-
```javascript
|
|
762
|
-
const result = await compressor.compressDirectory('/src', 'aggressive', {
|
|
763
|
-
exclude: ['test', 'node_modules'],
|
|
764
|
-
includeOnly: ['*.js', '*.ts']
|
|
765
|
-
});
|
|
766
|
-
```
|
|
767
|
-
|
|
768
|
-
### CompressionModes
|
|
769
|
-
|
|
770
|
-
압축 모드 상수들입니다.
|
|
771
|
-
|
|
772
|
-
```javascript
|
|
773
|
-
CompressionModes.AGGRESSIVE // 'aggressive'
|
|
774
|
-
CompressionModes.BALANCED // 'balanced'
|
|
775
|
-
CompressionModes.CONSERVATIVE // 'conservative'
|
|
776
|
-
```
|
|
777
|
-
|
|
778
|
-
## 9. Feature-Git 연동 시스템
|
|
779
|
-
|
|
780
|
-
### FeatureGitIntegration
|
|
781
|
-
|
|
782
|
-
Feature Ledger와 Git을 연동하는 시스템입니다.
|
|
783
|
-
|
|
784
|
-
#### 생성자
|
|
785
|
-
|
|
786
|
-
```javascript
|
|
787
|
-
new FeatureGitIntegration(options = {})
|
|
788
|
-
```
|
|
789
|
-
|
|
790
|
-
- `ledgerPath`: Feature Ledger 경로
|
|
791
|
-
- `autoLink`: 자동 연결 활성화 (기본값: true)
|
|
792
|
-
|
|
793
|
-
#### 메서드
|
|
794
|
-
|
|
795
|
-
##### `async init()`
|
|
796
|
-
|
|
797
|
-
Git 연동을 초기화합니다.
|
|
798
|
-
|
|
799
|
-
```javascript
|
|
800
|
-
const integration = new FeatureGitIntegration();
|
|
801
|
-
await integration.init();
|
|
802
|
-
```
|
|
803
|
-
|
|
804
|
-
##### `parseCommitMessage(message)`
|
|
805
|
-
|
|
806
|
-
커밋 메시지에서 Feature ID를 추출합니다.
|
|
807
|
-
|
|
808
|
-
```javascript
|
|
809
|
-
const parsed = integration.parseCommitMessage('feat(F001): 새 기능 추가');
|
|
810
|
-
console.log(parsed.featureId); // 'F001'
|
|
811
|
-
console.log(parsed.type); // 'feat'
|
|
812
|
-
```
|
|
813
|
-
|
|
814
|
-
##### `async linkFeatureCommit(commitHash, featureId)`
|
|
815
|
-
|
|
816
|
-
커밋을 Feature에 연결합니다.
|
|
817
|
-
|
|
818
|
-
```javascript
|
|
819
|
-
await integration.linkFeatureCommit('abc123', 'F001');
|
|
820
|
-
```
|
|
821
|
-
|
|
822
|
-
##### `async installHooks()`
|
|
823
|
-
|
|
824
|
-
Git hooks를 설치합니다.
|
|
825
|
-
|
|
826
|
-
```javascript
|
|
827
|
-
await integration.installHooks();
|
|
828
|
-
```
|
|
829
|
-
|
|
830
|
-
##### `async validateCommit(commitMessage)`
|
|
831
|
-
|
|
832
|
-
커밋 메시지를 검증합니다.
|
|
833
|
-
|
|
834
|
-
```javascript
|
|
835
|
-
const isValid = await integration.validateCommit('feat(F001): 유효한 커밋');
|
|
836
|
-
console.log(isValid); // true
|
|
837
|
-
```
|
|
838
|
-
|
|
839
|
-
##### `async updateFeatureFromCommit(commitHash)`
|
|
840
|
-
|
|
841
|
-
커밋 정보를 기반으로 Feature를 업데이트합니다.
|
|
842
|
-
|
|
843
|
-
```javascript
|
|
844
|
-
await integration.updateFeatureFromCommit('abc123');
|
|
845
|
-
```
|
|
846
|
-
|
|
847
|
-
## 통합 사용 예제
|
|
848
|
-
|
|
849
|
-
### S02 기능 통합 워크플로우
|
|
850
|
-
|
|
851
|
-
```javascript
|
|
852
|
-
import { AIPersonaManager } from './lib/ai-persona-manager.js';
|
|
853
|
-
import { ContextCompressor } from './lib/context-compressor.js';
|
|
854
|
-
import { FeatureGitIntegration } from './lib/feature-git-integration.js';
|
|
855
|
-
import { FeatureLedger } from './lib/feature-ledger.js';
|
|
856
|
-
|
|
857
|
-
async function integratedWorkflow() {
|
|
858
|
-
// 1. AI 페르소나 설정
|
|
859
|
-
const personaManager = new AIPersonaManager();
|
|
860
|
-
await personaManager.init();
|
|
861
|
-
await personaManager.switchPersona('architect');
|
|
862
|
-
|
|
863
|
-
// 2. Feature 생성
|
|
864
|
-
const ledger = new FeatureLedger();
|
|
865
|
-
await ledger.init();
|
|
866
|
-
const feature = await ledger.createFeature({
|
|
867
|
-
name: 'Advanced Search',
|
|
868
|
-
description: '고급 검색 기능 구현',
|
|
869
|
-
category: 'feature',
|
|
870
|
-
priority: 'high'
|
|
871
|
-
});
|
|
872
|
-
|
|
873
|
-
// 3. Git 연동 설정
|
|
874
|
-
const gitIntegration = new FeatureGitIntegration();
|
|
875
|
-
await gitIntegration.init();
|
|
876
|
-
await gitIntegration.installHooks();
|
|
877
|
-
|
|
878
|
-
// 4. Context 압축으로 작업
|
|
879
|
-
const compressor = new ContextCompressor();
|
|
880
|
-
const projectContext = await loadProjectContext();
|
|
881
|
-
const compressed = compressor.compressContext(projectContext, 'balanced');
|
|
882
|
-
|
|
883
|
-
// 5. 개발 작업 진행
|
|
884
|
-
// ... 코드 작성 ...
|
|
885
|
-
|
|
886
|
-
// 6. 커밋 및 자동 Feature 업데이트
|
|
887
|
-
// git commit -m "feat(F001): 검색 알고리즘 구현"
|
|
888
|
-
// 자동으로 Feature 상태가 업데이트됨
|
|
889
|
-
|
|
890
|
-
return {
|
|
891
|
-
feature,
|
|
892
|
-
compressionRatio: compressor.calculateCompressionRatio(projectContext, compressed)
|
|
893
|
-
};
|
|
894
|
-
}
|
|
895
|
-
```
|
|
896
|
-
|
|
897
|
-
### 페르소나별 작업 흐름
|
|
898
|
-
|
|
899
|
-
```javascript
|
|
900
|
-
async function personaBasedWorkflow(taskType) {
|
|
901
|
-
const personaManager = new AIPersonaManager();
|
|
902
|
-
await personaManager.init();
|
|
903
|
-
|
|
904
|
-
switch (taskType) {
|
|
905
|
-
case 'design':
|
|
906
|
-
await personaManager.switchPersona('architect');
|
|
907
|
-
break;
|
|
908
|
-
case 'debug':
|
|
909
|
-
await personaManager.switchPersona('debugger');
|
|
910
|
-
break;
|
|
911
|
-
case 'review':
|
|
912
|
-
await personaManager.switchPersona('reviewer');
|
|
913
|
-
break;
|
|
914
|
-
case 'document':
|
|
915
|
-
await personaManager.switchPersona('documenter');
|
|
916
|
-
break;
|
|
917
|
-
case 'optimize':
|
|
918
|
-
await personaManager.switchPersona('optimizer');
|
|
919
|
-
break;
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
const context = personaManager.getPersonaContext(personaManager.getCurrentPersona().name);
|
|
923
|
-
console.log('페르소나 활성화:', personaManager.getCurrentPersona().name);
|
|
924
|
-
console.log('컨텍스트 규칙:', context);
|
|
925
|
-
}
|
|
926
|
-
```
|
|
927
|
-
|
|
928
|
-
## 지원 및 문의
|
|
929
|
-
|
|
930
|
-
- GitHub Issues: https://github.com/moonklabs/aiwf/issues
|
|
931
|
-
- 문서: https://aiwf.github.io/docs
|
|
932
|
-
- 이메일: support@aiwf.dev
|