aiwf 0.3.23 → 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 -105
- 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/plugins/aiwf-delegate-claude/LICENSE +21 -0
- 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/cli/index.js +0 -184
- package/src/commands/sprint-independent.js +0 -393
- package/src/commands/state.js +0 -1164
- 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/backup-manager.js +0 -271
- package/src/lib/file-downloader.js +0 -304
- package/src/lib/installer.js +0 -1270
- package/src/lib/rollback-manager.js +0 -418
- package/src/lib/validator.js +0 -376
- package/src/utils/checkpoint-manager.js +0 -435
- package/src/utils/language-utils.js +0 -331
- package/src/utils/messages.js +0 -190
- package/src/utils/paths.js +0 -112
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 언어 관리 유틸리티 모듈
|
|
5
|
-
* AIWF 프레임워크의 언어 감지, 설정 저장/복원, 라우팅을 담당합니다.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import fs from 'fs/promises';
|
|
9
|
-
import path from 'path';
|
|
10
|
-
import { FILES } from './paths.js';
|
|
11
|
-
|
|
12
|
-
// 지원되는 언어 목록
|
|
13
|
-
export const SUPPORTED_LANGUAGES = ['ko', 'en'];
|
|
14
|
-
export const DEFAULT_LANGUAGE = 'en';
|
|
15
|
-
export const LANGUAGE_CONFIG_PATH = FILES.LANGUAGE_CONFIG;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* 언어 감지 알고리즘
|
|
19
|
-
* 1. 사용자 명시적 설정 (.aiwf/config/language.json)
|
|
20
|
-
* 2. 환경 변수 (LANG, LC_ALL)
|
|
21
|
-
* 3. 시스템 로케일 (process.env.LANG)
|
|
22
|
-
* 4. 폴백: 영어 (en)
|
|
23
|
-
*/
|
|
24
|
-
export async function detectLanguage() {
|
|
25
|
-
try {
|
|
26
|
-
// 1. 사용자 설정 확인
|
|
27
|
-
const userConfig = await loadUserLanguageConfig();
|
|
28
|
-
if (userConfig?.language && SUPPORTED_LANGUAGES.includes(userConfig.language)) {
|
|
29
|
-
return userConfig.language;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// 2. 환경 변수 확인
|
|
33
|
-
const envLang = process.env.LANG || process.env.LC_ALL;
|
|
34
|
-
if (envLang) {
|
|
35
|
-
// 한국어 로케일 감지
|
|
36
|
-
if (envLang.toLowerCase().startsWith('ko')) {
|
|
37
|
-
return 'ko';
|
|
38
|
-
}
|
|
39
|
-
// 영어 로케일 감지
|
|
40
|
-
if (envLang.toLowerCase().startsWith('en')) {
|
|
41
|
-
return 'en';
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// 3. 폴백: 기본 언어
|
|
46
|
-
return DEFAULT_LANGUAGE;
|
|
47
|
-
} catch (error) {
|
|
48
|
-
console.warn(`언어 감지 중 오류 발생: ${error.message}`);
|
|
49
|
-
return DEFAULT_LANGUAGE;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* 사용자 언어 설정 로드
|
|
55
|
-
*/
|
|
56
|
-
export async function loadUserLanguageConfig() {
|
|
57
|
-
try {
|
|
58
|
-
const configExists = await fs.access(LANGUAGE_CONFIG_PATH).then(() => true).catch(() => false);
|
|
59
|
-
if (!configExists) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const configContent = await fs.readFile(LANGUAGE_CONFIG_PATH, 'utf8');
|
|
64
|
-
const config = JSON.parse(configContent);
|
|
65
|
-
|
|
66
|
-
// 설정 유효성 검증
|
|
67
|
-
if (config.language && SUPPORTED_LANGUAGES.includes(config.language)) {
|
|
68
|
-
return config;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return null;
|
|
72
|
-
} catch (error) {
|
|
73
|
-
console.warn(`언어 설정 로드 중 오류 발생: ${error.message}`);
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* 사용자 언어 설정 저장
|
|
80
|
-
*/
|
|
81
|
-
export async function saveUserLanguageConfig(language, options = {}) {
|
|
82
|
-
try {
|
|
83
|
-
// 언어 유효성 검증
|
|
84
|
-
if (!SUPPORTED_LANGUAGES.includes(language)) {
|
|
85
|
-
throw new Error(`지원되지 않는 언어: ${language}. 지원 언어: ${SUPPORTED_LANGUAGES.join(', ')}`);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// 설정 디렉토리 생성
|
|
89
|
-
const configDir = path.dirname(LANGUAGE_CONFIG_PATH);
|
|
90
|
-
await fs.mkdir(configDir, { recursive: true });
|
|
91
|
-
|
|
92
|
-
// 설정 객체 생성
|
|
93
|
-
const config = {
|
|
94
|
-
language: language,
|
|
95
|
-
auto_detect: options.auto_detect !== undefined ? options.auto_detect : true,
|
|
96
|
-
last_updated: new Date().toISOString(),
|
|
97
|
-
fallback: options.fallback || DEFAULT_LANGUAGE
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
// 설정 파일 저장
|
|
101
|
-
await fs.writeFile(LANGUAGE_CONFIG_PATH, JSON.stringify(config, null, 2), 'utf8');
|
|
102
|
-
|
|
103
|
-
return config;
|
|
104
|
-
} catch (error) {
|
|
105
|
-
console.error(`언어 설정 저장 중 오류 발생: ${error.message}`);
|
|
106
|
-
throw error;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* 명령어 파일 경로 라우팅
|
|
112
|
-
* 언어별 명령어 파일 경로를 동적으로 생성합니다.
|
|
113
|
-
*/
|
|
114
|
-
export function getCommandPath(commandName, language = null) {
|
|
115
|
-
// 언어가 지정되지 않은 경우 현재 언어 사용
|
|
116
|
-
if (!language) {
|
|
117
|
-
language = DEFAULT_LANGUAGE; // 동기 버전에서는 기본 언어 사용
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// 언어 유효성 검증
|
|
121
|
-
if (!SUPPORTED_LANGUAGES.includes(language)) {
|
|
122
|
-
language = DEFAULT_LANGUAGE;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// 한국어 명령어 경로
|
|
126
|
-
if (language === 'ko') {
|
|
127
|
-
return `claude-code/aiwf/ko/.claude/commands/aiwf/${commandName}.md`;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// 영어 명령어 경로 (기본)
|
|
131
|
-
return `claude-code/aiwf/en/.claude/commands/aiwf/${commandName}.md`;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* 명령어 파일 존재 여부 확인 및 폴백
|
|
136
|
-
*/
|
|
137
|
-
export async function resolveCommandPath(commandName, preferredLanguage = null) {
|
|
138
|
-
try {
|
|
139
|
-
const language = preferredLanguage || await detectLanguage();
|
|
140
|
-
|
|
141
|
-
// 선호 언어로 명령어 파일 경로 생성
|
|
142
|
-
let commandPath = getCommandPath(commandName, language);
|
|
143
|
-
|
|
144
|
-
// 파일 존재 여부 확인
|
|
145
|
-
const exists = await fs.access(commandPath).then(() => true).catch(() => false);
|
|
146
|
-
if (exists) {
|
|
147
|
-
return {
|
|
148
|
-
path: commandPath,
|
|
149
|
-
language: language,
|
|
150
|
-
fallback: false
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// 폴백 언어로 재시도
|
|
155
|
-
const fallbackLanguage = language === 'ko' ? 'en' : 'ko';
|
|
156
|
-
commandPath = getCommandPath(commandName, fallbackLanguage);
|
|
157
|
-
|
|
158
|
-
const fallbackExists = await fs.access(commandPath).then(() => true).catch(() => false);
|
|
159
|
-
if (fallbackExists) {
|
|
160
|
-
return {
|
|
161
|
-
path: commandPath,
|
|
162
|
-
language: fallbackLanguage,
|
|
163
|
-
fallback: true
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// 둘 다 없는 경우
|
|
168
|
-
return {
|
|
169
|
-
path: null,
|
|
170
|
-
language: null,
|
|
171
|
-
fallback: false,
|
|
172
|
-
error: `명령어 파일을 찾을 수 없습니다: ${commandName}`
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
} catch (error) {
|
|
176
|
-
return {
|
|
177
|
-
path: null,
|
|
178
|
-
language: null,
|
|
179
|
-
fallback: false,
|
|
180
|
-
error: `명령어 경로 해결 중 오류: ${error.message}`
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* 템플릿 파일 경로 라우팅
|
|
187
|
-
*/
|
|
188
|
-
export function getTemplatePath(templateName, language = null) {
|
|
189
|
-
if (!language) {
|
|
190
|
-
language = DEFAULT_LANGUAGE;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (!SUPPORTED_LANGUAGES.includes(language)) {
|
|
194
|
-
language = DEFAULT_LANGUAGE;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return `.aiwf/99_TEMPLATES/${language}/${templateName}`;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* 다국어 에러 메시지 시스템
|
|
202
|
-
*/
|
|
203
|
-
export const ERROR_MESSAGES = {
|
|
204
|
-
ko: {
|
|
205
|
-
LANGUAGE_NOT_SUPPORTED: '지원되지 않는 언어입니다',
|
|
206
|
-
CONFIG_LOAD_FAILED: '언어 설정을 불러올 수 없습니다',
|
|
207
|
-
CONFIG_SAVE_FAILED: '언어 설정을 저장할 수 없습니다',
|
|
208
|
-
COMMAND_NOT_FOUND: '명령어를 찾을 수 없습니다',
|
|
209
|
-
TEMPLATE_NOT_FOUND: '템플릿을 찾을 수 없습니다',
|
|
210
|
-
LANGUAGE_SWITCH_SUCCESS: '언어가 성공적으로 변경되었습니다',
|
|
211
|
-
LANGUAGE_SWITCH_FAILED: '언어 변경에 실패했습니다'
|
|
212
|
-
},
|
|
213
|
-
en: {
|
|
214
|
-
LANGUAGE_NOT_SUPPORTED: 'Language not supported',
|
|
215
|
-
CONFIG_LOAD_FAILED: 'Failed to load language configuration',
|
|
216
|
-
CONFIG_SAVE_FAILED: 'Failed to save language configuration',
|
|
217
|
-
COMMAND_NOT_FOUND: 'Command not found',
|
|
218
|
-
TEMPLATE_NOT_FOUND: 'Template not found',
|
|
219
|
-
LANGUAGE_SWITCH_SUCCESS: 'Language changed successfully',
|
|
220
|
-
LANGUAGE_SWITCH_FAILED: 'Failed to change language'
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* 다국어 메시지 가져오기
|
|
226
|
-
*/
|
|
227
|
-
export function getLocalizedMessage(messageKey, language = null) {
|
|
228
|
-
if (!language) {
|
|
229
|
-
language = DEFAULT_LANGUAGE;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
if (!SUPPORTED_LANGUAGES.includes(language)) {
|
|
233
|
-
language = DEFAULT_LANGUAGE;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return ERROR_MESSAGES[language]?.[messageKey] || ERROR_MESSAGES[DEFAULT_LANGUAGE]?.[messageKey] || messageKey;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* 언어 전환 함수
|
|
241
|
-
*/
|
|
242
|
-
export async function switchLanguage(newLanguage) {
|
|
243
|
-
try {
|
|
244
|
-
// 언어 유효성 검증
|
|
245
|
-
if (!SUPPORTED_LANGUAGES.includes(newLanguage)) {
|
|
246
|
-
throw new Error(`지원되지 않는 언어: ${newLanguage}. 지원 언어: ${SUPPORTED_LANGUAGES.join(', ')}`);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
// 현재 언어 설정 로드
|
|
250
|
-
const currentConfig = await loadUserLanguageConfig() || {};
|
|
251
|
-
|
|
252
|
-
// 새 언어로 설정 저장
|
|
253
|
-
const newConfig = await saveUserLanguageConfig(newLanguage, {
|
|
254
|
-
autoDetect: currentConfig.auto_detect,
|
|
255
|
-
fallback: currentConfig.fallback
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
return {
|
|
259
|
-
success: true,
|
|
260
|
-
previousLanguage: currentConfig.language || DEFAULT_LANGUAGE,
|
|
261
|
-
newLanguage: newLanguage,
|
|
262
|
-
message: getLocalizedMessage('LANGUAGE_SWITCH_SUCCESS', newLanguage)
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
} catch (error) {
|
|
266
|
-
return {
|
|
267
|
-
success: false,
|
|
268
|
-
error: error.message,
|
|
269
|
-
message: getLocalizedMessage('LANGUAGE_SWITCH_FAILED')
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* 언어 설정 상태 확인
|
|
276
|
-
*/
|
|
277
|
-
export async function getLanguageStatus() {
|
|
278
|
-
try {
|
|
279
|
-
const detectedLanguage = await detectLanguage();
|
|
280
|
-
const userConfig = await loadUserLanguageConfig();
|
|
281
|
-
|
|
282
|
-
return {
|
|
283
|
-
detectedLanguage: detectedLanguage,
|
|
284
|
-
configuredLanguage: userConfig?.language || null,
|
|
285
|
-
effectiveLanguage: userConfig?.language || detectedLanguage,
|
|
286
|
-
autoDetect: userConfig?.auto_detect !== false,
|
|
287
|
-
fallbackLanguage: userConfig?.fallback || DEFAULT_LANGUAGE,
|
|
288
|
-
supportedLanguages: SUPPORTED_LANGUAGES,
|
|
289
|
-
configPath: LANGUAGE_CONFIG_PATH
|
|
290
|
-
};
|
|
291
|
-
} catch (error) {
|
|
292
|
-
return {
|
|
293
|
-
detectedLanguage: DEFAULT_LANGUAGE,
|
|
294
|
-
configuredLanguage: null,
|
|
295
|
-
effectiveLanguage: DEFAULT_LANGUAGE,
|
|
296
|
-
autoDetect: true,
|
|
297
|
-
fallbackLanguage: DEFAULT_LANGUAGE,
|
|
298
|
-
supportedLanguages: SUPPORTED_LANGUAGES,
|
|
299
|
-
configPath: LANGUAGE_CONFIG_PATH,
|
|
300
|
-
error: error.message
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* 언어별 설치 경로 생성
|
|
307
|
-
*/
|
|
308
|
-
export function getInstallationLanguagePath(language) {
|
|
309
|
-
if (!SUPPORTED_LANGUAGES.includes(language)) {
|
|
310
|
-
language = DEFAULT_LANGUAGE;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
return language;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
// 기본 내보내기
|
|
317
|
-
export default {
|
|
318
|
-
detectLanguage,
|
|
319
|
-
loadUserLanguageConfig,
|
|
320
|
-
saveUserLanguageConfig,
|
|
321
|
-
getCommandPath,
|
|
322
|
-
resolveCommandPath,
|
|
323
|
-
getTemplatePath,
|
|
324
|
-
getLocalizedMessage,
|
|
325
|
-
switchLanguage,
|
|
326
|
-
getLanguageStatus,
|
|
327
|
-
getInstallationLanguagePath,
|
|
328
|
-
SUPPORTED_LANGUAGES,
|
|
329
|
-
DEFAULT_LANGUAGE,
|
|
330
|
-
ERROR_MESSAGES
|
|
331
|
-
};
|
package/src/utils/messages.js
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Localized messages for AIWF installer
|
|
3
|
-
*/
|
|
4
|
-
export const messages = {
|
|
5
|
-
ko: {
|
|
6
|
-
welcome: '\n🎉 AIWF에 오신 것을 환영합니다!\n',
|
|
7
|
-
description: '이 설치 프로그램은 AIWF AI 프롬프트 프레임워크를 설정합니다',
|
|
8
|
-
optimized: '특별히 Claude Code 에 최적화 되어있습니다.\n',
|
|
9
|
-
selectLanguage: 'Please select language / 언어를 선택해주세요:',
|
|
10
|
-
korean: '한국어 (Korean)',
|
|
11
|
-
english: 'English',
|
|
12
|
-
existingDetected: '기존 AIWF 설치가 감지되었습니다. 무엇을 하시겠습니까?',
|
|
13
|
-
updateOption: '업데이트 (명령어와 문서만 업데이트하고 작업 내용은 보존)',
|
|
14
|
-
reinstallOption: '완전 재설치 (모든 내용을 새로 설치, 기존 프로젝트 덮어쓰기)',
|
|
15
|
-
skipOption: '설치 건너뛰기',
|
|
16
|
-
cancelOption: '취소',
|
|
17
|
-
projectDetected: '기존 프로젝트가 감지되었습니다. 프로젝트 파일을 어떻게 처리하시겠습니까?',
|
|
18
|
-
preserveProject: '프로젝트 보존 (기존 프로젝트 파일 유지)',
|
|
19
|
-
overwriteProject: '덮어쓰기 (새로 설치하고 기존 프로젝트 삭제)',
|
|
20
|
-
checkingProject: '기존 프로젝트 확인 중...',
|
|
21
|
-
projectFound: '기존 프로젝트가 발견되었습니다:',
|
|
22
|
-
projectPreserved: '💾 프로젝트가 보존되었습니다.',
|
|
23
|
-
projectOverwritten: '🔄 프로젝트가 새로 설치되었습니다.',
|
|
24
|
-
installCancelled: '\n설치가 취소되었습니다.',
|
|
25
|
-
backingUp: '기존 명령어 및 문서 백업 중...',
|
|
26
|
-
fetching: 'GitHub에서 AIWF 프레임워크를 가져오는 중...',
|
|
27
|
-
downloading: 'AIWF 프레임워크 파일을 다운로드하는 중...',
|
|
28
|
-
updatingDocs: '문서를 업데이트하는 중...',
|
|
29
|
-
downloadingCommands: 'AIWF 명령어를 새로 다운로드하는 중...',
|
|
30
|
-
updateSuccess: '✅ AIWF 프레임워크가 성공적으로 업데이트되었습니다!',
|
|
31
|
-
installSuccess: '✅ AIWF 프레임워크가 성공적으로 설치되었습니다!',
|
|
32
|
-
enjoy: '\nEnjoy AIWF! 🚀\n',
|
|
33
|
-
backupComplete: '{count}개 파일 백업 완료 (*.bak)',
|
|
34
|
-
noFilesToBackup: '백업할 기존 파일이 없습니다',
|
|
35
|
-
backupFailed: '백업 실패',
|
|
36
|
-
downloadingFile: '{path} 다운로드 중...',
|
|
37
|
-
downloadingTemplates: '템플릿 디렉토리를 다운로드 중...',
|
|
38
|
-
templatesNotFound: '템플릿 디렉토리를 찾을 수 없어 건너뜁니다...',
|
|
39
|
-
deletingOldCommands: '기존 AIWF 명령어 폴더를 삭제하는 중...',
|
|
40
|
-
commandsNotFound: '명령어 디렉토리를 찾을 수 없어 건너뜁니다...',
|
|
41
|
-
downloadingRulesGlobal: 'rules/global 폴더를 다운로드 중...',
|
|
42
|
-
rulesGlobalNotFound: 'rules/global 폴더를 찾을 수 없어 건너뜁니다...',
|
|
43
|
-
downloadingRulesManual: 'rules/manual 폴더를 다운로드 중...',
|
|
44
|
-
rulesManualNotFound: 'rules/manual 폴더를 찾을 수 없어 건너뜁니다...',
|
|
45
|
-
updateHistory: '🔄 업데이트 내역:',
|
|
46
|
-
updatedCommands: '내의 명령어',
|
|
47
|
-
updatedDocs: '문서 (CLAUDE.md 파일)',
|
|
48
|
-
workPreserved: '💾 작업 내용은 보존되었습니다:',
|
|
49
|
-
allFilesPreserved: '모든 작업, 스프린트, 및 프로젝트 파일이 변경되지 않음',
|
|
50
|
-
backupCreated: '백업은 *.bak 파일로 만들어짐',
|
|
51
|
-
structureCreated: '📁 생성된 구조:',
|
|
52
|
-
aiwfRoot: '프로젝트 관리 루트',
|
|
53
|
-
claudeCommands: 'Claude 사용자 명령어',
|
|
54
|
-
nextSteps: '🚀 다음 단계:',
|
|
55
|
-
nextStep1: 'Claude Code에서 이 프로젝트를 엽니다',
|
|
56
|
-
nextStep2: '/aiwf_<command> 명령어를 사용하여 프로젝트를 관리하세요',
|
|
57
|
-
nextStep3: '/aiwf_initialize를 실행하여 프로젝트를 설정하세요',
|
|
58
|
-
gettingStarted: '✨ 시작하려면:',
|
|
59
|
-
startStep1: '새 터미널을 열거나 쉘 프로필을 소싱하세요 (예: source ~/.zshrc)',
|
|
60
|
-
startStep2: '다음을 실행하세요: claude 를 실행하여 사용 가능한 명령어를 확인하세요.',
|
|
61
|
-
checkDocs: '자세한 내용은 .aiwf 디렉토리의 문서를 확인하세요.',
|
|
62
|
-
updateFailed: '업데이트 실패',
|
|
63
|
-
installFailed: '설치 실패',
|
|
64
|
-
noBackupFound: '복원할 백업 폴더가 없습니다.',
|
|
65
|
-
restoringFromBackup: '백업에서 복원 중...',
|
|
66
|
-
restoreSuccess: '성공적으로 복원되었습니다.',
|
|
67
|
-
restoreFailed: '복원에 실패했습니다.',
|
|
68
|
-
cannotRestore: '파일을 복원할 수 없습니다. 수동 확인이 필요합니다.',
|
|
69
|
-
checkingInstallation: 'AIWF 설치 상태를 확인하는 중...',
|
|
70
|
-
creatingDirectories: 'AIWF 디렉토리 구조를 생성하는 중...',
|
|
71
|
-
restoringBackup: '백업에서 파일을 복원하는 중...',
|
|
72
|
-
backupRestored: '{count}개 파일이 복원되었습니다',
|
|
73
|
-
checkingExistingTools: '기존 도구 디렉토리를 확인하는 중...',
|
|
74
|
-
foundExistingCursor: 'Cursor 규칙 파일이 발견되었습니다',
|
|
75
|
-
foundExistingWindsurf: 'Windsurf 규칙 파일이 발견되었습니다',
|
|
76
|
-
backingUpToolFiles: '기존 도구 파일을 백업하는 중...',
|
|
77
|
-
toolBackupCreated: '도구 파일 백업이 생성되었습니다',
|
|
78
|
-
installingToolRules: '도구 규칙을 설치하는 중...',
|
|
79
|
-
toolRulesInstalled: '도구 규칙이 성공적으로 설치되었습니다',
|
|
80
|
-
|
|
81
|
-
// 설치 옵션 관련
|
|
82
|
-
installationOptions: 'AIWF 설치 옵션을 선택하세요:',
|
|
83
|
-
aiwfDocs: 'AIWF 문서 폴더 (.aiwf/docs)',
|
|
84
|
-
claudeCodeCommands: 'Claude Code 명령어 및 에이전트',
|
|
85
|
-
windsurfRules: 'Windsurf 규칙 파일',
|
|
86
|
-
cursorRules: 'Cursor 규칙 파일',
|
|
87
|
-
selectAll: '모든 옵션 선택',
|
|
88
|
-
installSelected: '선택한 항목들을 설치하시겠습니까?',
|
|
89
|
-
installingOption: '설치 중: ',
|
|
90
|
-
optionInstalled: '완료: ',
|
|
91
|
-
noOptionsSelected: '선택된 옵션이 없습니다.',
|
|
92
|
-
},
|
|
93
|
-
en: {
|
|
94
|
-
welcome: '\n🎉 Welcome to AIWF!\n',
|
|
95
|
-
description: 'This installer sets up the AIWF AI prompt framework',
|
|
96
|
-
optimized: 'Specially optimized for Claude Code.\n',
|
|
97
|
-
selectLanguage: 'Please select language / 언어를 선택해주세요:',
|
|
98
|
-
korean: '한국어 (Korean)',
|
|
99
|
-
english: 'English',
|
|
100
|
-
existingDetected: 'Existing AIWF installation detected. What would you like to do?',
|
|
101
|
-
updateOption: 'Update (Update commands and docs only, preserve work content)',
|
|
102
|
-
reinstallOption: 'Complete reinstall (Install everything fresh, overwrite existing project)',
|
|
103
|
-
skipOption: 'Skip installation',
|
|
104
|
-
cancelOption: 'Cancel',
|
|
105
|
-
projectDetected: 'Existing project detected. How would you like to handle project files?',
|
|
106
|
-
preserveProject: 'Preserve project (Keep existing project files)',
|
|
107
|
-
overwriteProject: 'Overwrite (Fresh install and remove existing project)',
|
|
108
|
-
checkingProject: 'Checking for existing project...',
|
|
109
|
-
projectFound: 'Existing project found:',
|
|
110
|
-
projectPreserved: '💾 Project has been preserved.',
|
|
111
|
-
projectOverwritten: '🔄 Project has been freshly installed.',
|
|
112
|
-
installCancelled: '\nInstallation cancelled.',
|
|
113
|
-
backingUp: 'Backing up existing commands and documents...',
|
|
114
|
-
fetching: 'Fetching AIWF framework from GitHub...',
|
|
115
|
-
downloading: 'Downloading AIWF framework files...',
|
|
116
|
-
updatingDocs: 'Updating documentation...',
|
|
117
|
-
downloadingCommands: 'Downloading AIWF commands...',
|
|
118
|
-
updateSuccess: '✅ AIWF framework updated successfully!',
|
|
119
|
-
installSuccess: '✅ AIWF framework installed successfully!',
|
|
120
|
-
enjoy: '\nEnjoy AIWF! 🚀\n',
|
|
121
|
-
backupComplete: '{count} files backed up (*.bak)',
|
|
122
|
-
noFilesToBackup: 'No existing files to backup',
|
|
123
|
-
backupFailed: 'Backup failed',
|
|
124
|
-
downloadingFile: 'Downloading {path}...',
|
|
125
|
-
downloadingTemplates: 'Downloading template directories...',
|
|
126
|
-
templatesNotFound: 'Template directories not found, skipping...',
|
|
127
|
-
deletingOldCommands: 'Deleting existing AIWF commands folder...',
|
|
128
|
-
commandsNotFound: 'Commands directory not found, skipping...',
|
|
129
|
-
downloadingRulesGlobal: 'Downloading rules/global folder...',
|
|
130
|
-
rulesGlobalNotFound: 'rules/global folder not found, skipping...',
|
|
131
|
-
downloadingRulesManual: 'Downloading rules/manual folder...',
|
|
132
|
-
rulesManualNotFound: 'rules/manual folder not found, skipping...',
|
|
133
|
-
updateHistory: '🔄 Update History:',
|
|
134
|
-
updatedCommands: '/ commands',
|
|
135
|
-
updatedDocs: 'Documentation (CLAUDE.md files)',
|
|
136
|
-
workPreserved: '💾 Work preserved:',
|
|
137
|
-
allFilesPreserved: 'All work, sprints, and project files unchanged',
|
|
138
|
-
backupCreated: 'Backups created as *.bak files',
|
|
139
|
-
structureCreated: '📁 Structure created:',
|
|
140
|
-
aiwfRoot: 'Project management root',
|
|
141
|
-
claudeCommands: 'Claude user commands',
|
|
142
|
-
nextSteps: '🚀 Next steps:',
|
|
143
|
-
nextStep1: 'Open this project in Claude Code',
|
|
144
|
-
nextStep2: 'Use /aiwf_<command> commands to manage your project',
|
|
145
|
-
nextStep3: 'Run /aiwf_initialize to set up your project',
|
|
146
|
-
gettingStarted: '✨ Getting started:',
|
|
147
|
-
startStep1: 'Open a new terminal or source your shell profile (e.g. source ~/.zshrc)',
|
|
148
|
-
startStep2: 'Run: claude to see available commands.',
|
|
149
|
-
checkDocs: 'For more details, check the documentation in the .aiwf directory.',
|
|
150
|
-
updateFailed: 'Update failed',
|
|
151
|
-
installFailed: 'Installation failed',
|
|
152
|
-
noBackupFound: 'No backup folder found to restore.',
|
|
153
|
-
restoringFromBackup: 'Restoring from backup...',
|
|
154
|
-
restoreSuccess: 'Successfully restored.',
|
|
155
|
-
restoreFailed: 'Restore failed.',
|
|
156
|
-
cannotRestore: 'Cannot restore file. Manual verification required.',
|
|
157
|
-
checkingInstallation: 'Checking AIWF installation status...',
|
|
158
|
-
creatingDirectories: 'Creating AIWF directory structure...',
|
|
159
|
-
restoringBackup: 'Restoring files from backup...',
|
|
160
|
-
backupRestored: '{count} files restored',
|
|
161
|
-
checkingExistingTools: 'Checking existing tool directories...',
|
|
162
|
-
foundExistingCursor: 'Found existing Cursor rules',
|
|
163
|
-
foundExistingWindsurf: 'Found existing Windsurf rules',
|
|
164
|
-
backingUpToolFiles: 'Backing up existing tool files...',
|
|
165
|
-
toolBackupCreated: 'Tool files backup created',
|
|
166
|
-
installingToolRules: 'Installing tool rules...',
|
|
167
|
-
toolRulesInstalled: 'Tool rules installed successfully',
|
|
168
|
-
|
|
169
|
-
// Installation options
|
|
170
|
-
installationOptions: 'Select AIWF installation options:',
|
|
171
|
-
aiwfDocs: 'AIWF Documentation folder (.aiwf/docs)',
|
|
172
|
-
claudeCodeCommands: 'Claude Code commands and agents',
|
|
173
|
-
windsurfRules: 'Windsurf rules files',
|
|
174
|
-
cursorRules: 'Cursor rules files',
|
|
175
|
-
selectAll: 'Select all options',
|
|
176
|
-
installSelected: 'Install selected items?',
|
|
177
|
-
installingOption: 'Installing: ',
|
|
178
|
-
optionInstalled: 'Completed: ',
|
|
179
|
-
noOptionsSelected: 'No options selected.',
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Get messages for a specific language
|
|
185
|
-
* @param {string} language - Language code ('ko' or 'en')
|
|
186
|
-
* @returns {Object} Messages object for the specified language
|
|
187
|
-
*/
|
|
188
|
-
export function getMessages(language) {
|
|
189
|
-
return messages[language] || messages.en;
|
|
190
|
-
}
|
package/src/utils/paths.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AIWF Directory Paths Configuration
|
|
3
|
-
* Central location for all directory paths used in the AIWF framework
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import path from 'path';
|
|
7
|
-
import os from 'os';
|
|
8
|
-
|
|
9
|
-
// Base directories
|
|
10
|
-
export const BASE_DIRS = {
|
|
11
|
-
AIWF: '.aiwf',
|
|
12
|
-
CLAUDE: '.claude',
|
|
13
|
-
GEMINI: '.gemini',
|
|
14
|
-
CURSOR: '.cursor',
|
|
15
|
-
WINDSURF: '.windsurf'
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
// AIWF subdirectories
|
|
19
|
-
export const AIWF_DIRS = {
|
|
20
|
-
ROOT: BASE_DIRS.AIWF,
|
|
21
|
-
PROJECT_DOCS: path.join(BASE_DIRS.AIWF, '01_PROJECT_DOCS'),
|
|
22
|
-
REQUIREMENTS: path.join(BASE_DIRS.AIWF, '02_REQUIREMENTS'),
|
|
23
|
-
SPRINTS: path.join(BASE_DIRS.AIWF, '03_SPRINTS'),
|
|
24
|
-
GENERAL_TASKS: path.join(BASE_DIRS.AIWF, '04_GENERAL_TASKS'),
|
|
25
|
-
ARCHITECTURAL_DECISIONS: path.join(BASE_DIRS.AIWF, '05_ARCHITECTURAL_DECISIONS'),
|
|
26
|
-
STATE_OF_PROJECT: path.join(BASE_DIRS.AIWF, '10_STATE_OF_PROJECT'),
|
|
27
|
-
PROMPTS: path.join(BASE_DIRS.AIWF, '98_PROMPTS'),
|
|
28
|
-
TEMPLATES: path.join(BASE_DIRS.AIWF, '99_TEMPLATES'),
|
|
29
|
-
CACHE: path.join(BASE_DIRS.AIWF, 'cache'),
|
|
30
|
-
METRICS: path.join(BASE_DIRS.AIWF, 'metrics'),
|
|
31
|
-
CONFIG: path.join(BASE_DIRS.AIWF, 'config'),
|
|
32
|
-
PERSONAS: path.join(BASE_DIRS.AIWF, 'personas'),
|
|
33
|
-
AI_TOOLS: path.join(BASE_DIRS.AIWF, 'ai-tools'),
|
|
34
|
-
CONTEXT_CACHE: path.join(BASE_DIRS.AIWF, 'cache', 'context')
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
// Tool-specific directories
|
|
38
|
-
export const TOOL_DIRS = {
|
|
39
|
-
CLAUDE_COMMANDS: path.join(BASE_DIRS.CLAUDE, 'commands', 'aiwf'),
|
|
40
|
-
CLAUDE_AGENTS: path.join(BASE_DIRS.CLAUDE, 'agents'),
|
|
41
|
-
GEMINI_PROMPTS: path.join(BASE_DIRS.GEMINI, 'prompts', 'aiwf'),
|
|
42
|
-
CURSOR_RULES: path.join(BASE_DIRS.CURSOR, 'rules'),
|
|
43
|
-
WINDSURF_RULES: path.join(BASE_DIRS.WINDSURF, 'rules')
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
// Files
|
|
47
|
-
export const FILES = {
|
|
48
|
-
INSTALLED_FLAG: path.join(AIWF_DIRS.ROOT, 'installed.flag'),
|
|
49
|
-
PROJECT_MANIFEST: path.join(AIWF_DIRS.ROOT, '00_PROJECT_MANIFEST.md'),
|
|
50
|
-
LANGUAGE_CONFIG: path.join(AIWF_DIRS.CONFIG, 'language.json'),
|
|
51
|
-
CLAUDE_MD: {
|
|
52
|
-
ROOT: path.join(AIWF_DIRS.ROOT, 'CLAUDE.md'),
|
|
53
|
-
REQUIREMENTS: path.join(AIWF_DIRS.REQUIREMENTS, 'CLAUDE.md'),
|
|
54
|
-
SPRINTS: path.join(AIWF_DIRS.SPRINTS, 'CLAUDE.md'),
|
|
55
|
-
GENERAL_TASKS: path.join(AIWF_DIRS.GENERAL_TASKS, 'CLAUDE.md')
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// User cache directory (for global cache)
|
|
61
|
-
export const USER_CACHE_DIR = path.join(
|
|
62
|
-
os.homedir(),
|
|
63
|
-
BASE_DIRS.AIWF,
|
|
64
|
-
'cache'
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
// Get all AIWF directories as array
|
|
68
|
-
export function getAllAiwfDirectories() {
|
|
69
|
-
return [
|
|
70
|
-
AIWF_DIRS.ROOT,
|
|
71
|
-
AIWF_DIRS.PROJECT_DOCS,
|
|
72
|
-
AIWF_DIRS.REQUIREMENTS,
|
|
73
|
-
AIWF_DIRS.SPRINTS,
|
|
74
|
-
AIWF_DIRS.GENERAL_TASKS,
|
|
75
|
-
AIWF_DIRS.ARCHITECTURAL_DECISIONS,
|
|
76
|
-
AIWF_DIRS.STATE_OF_PROJECT,
|
|
77
|
-
AIWF_DIRS.PROMPTS,
|
|
78
|
-
AIWF_DIRS.TEMPLATES
|
|
79
|
-
];
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Get all CLAUDE.md files as array
|
|
83
|
-
export function getAllClaudeMdFiles() {
|
|
84
|
-
return Object.values(FILES.CLAUDE_MD);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Get tool directory by name
|
|
88
|
-
export function getToolDirectory(tool) {
|
|
89
|
-
const mapping = {
|
|
90
|
-
claudeCode: TOOL_DIRS.CLAUDE_COMMANDS,
|
|
91
|
-
'claude-code': TOOL_DIRS.CLAUDE_COMMANDS,
|
|
92
|
-
geminiCLI: TOOL_DIRS.GEMINI_PROMPTS,
|
|
93
|
-
'gemini-cli': TOOL_DIRS.GEMINI_PROMPTS,
|
|
94
|
-
cursor: TOOL_DIRS.CURSOR_RULES,
|
|
95
|
-
windsurf: TOOL_DIRS.WINDSURF_RULES,
|
|
96
|
-
aiwf: AIWF_DIRS.ROOT
|
|
97
|
-
};
|
|
98
|
-
return mapping[tool] || null;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
// Export all for convenience
|
|
103
|
-
export default {
|
|
104
|
-
BASE_DIRS,
|
|
105
|
-
AIWF_DIRS,
|
|
106
|
-
TOOL_DIRS,
|
|
107
|
-
FILES,
|
|
108
|
-
USER_CACHE_DIR,
|
|
109
|
-
getAllAiwfDirectories,
|
|
110
|
-
getAllClaudeMdFiles,
|
|
111
|
-
getToolDirectory
|
|
112
|
-
};
|