@ginkoai/cli 1.0.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/LICENSE +21 -0
- package/README.md +230 -0
- package/dist/adapters/ai-adapter.d.ts +25 -0
- package/dist/adapters/ai-adapter.d.ts.map +1 -0
- package/dist/adapters/ai-adapter.js +21 -0
- package/dist/adapters/ai-adapter.js.map +1 -0
- package/dist/adapters/ai-completion.d.ts +35 -0
- package/dist/adapters/ai-completion.d.ts.map +1 -0
- package/dist/adapters/ai-completion.js +118 -0
- package/dist/adapters/ai-completion.js.map +1 -0
- package/dist/adapters/base.d.ts +64 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +48 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude-adapter.d.ts +18 -0
- package/dist/adapters/claude-adapter.d.ts.map +1 -0
- package/dist/adapters/claude-adapter.js +73 -0
- package/dist/adapters/claude-adapter.js.map +1 -0
- package/dist/adapters/claude.d.ts +20 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +91 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/copilot-adapter.d.ts +16 -0
- package/dist/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/adapters/copilot-adapter.js +288 -0
- package/dist/adapters/copilot-adapter.js.map +1 -0
- package/dist/adapters/cursor-adapter.d.ts +22 -0
- package/dist/adapters/cursor-adapter.d.ts.map +1 -0
- package/dist/adapters/cursor-adapter.js +108 -0
- package/dist/adapters/cursor-adapter.js.map +1 -0
- package/dist/adapters/detector.d.ts +29 -0
- package/dist/adapters/detector.d.ts.map +1 -0
- package/dist/adapters/detector.js +132 -0
- package/dist/adapters/detector.js.map +1 -0
- package/dist/adapters/generic-adapter.d.ts +18 -0
- package/dist/adapters/generic-adapter.d.ts.map +1 -0
- package/dist/adapters/generic-adapter.js +37 -0
- package/dist/adapters/generic-adapter.js.map +1 -0
- package/dist/adapters/gpt4.d.ts +20 -0
- package/dist/adapters/gpt4.d.ts.map +1 -0
- package/dist/adapters/gpt4.js +114 -0
- package/dist/adapters/gpt4.js.map +1 -0
- package/dist/adapters/grok-adapter.d.ts +18 -0
- package/dist/adapters/grok-adapter.d.ts.map +1 -0
- package/dist/adapters/grok-adapter.js +94 -0
- package/dist/adapters/grok-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +18 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +71 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/openai-adapter.d.ts +18 -0
- package/dist/adapters/openai-adapter.d.ts.map +1 -0
- package/dist/adapters/openai-adapter.js +97 -0
- package/dist/adapters/openai-adapter.js.map +1 -0
- package/dist/adapters/universal.d.ts +20 -0
- package/dist/adapters/universal.d.ts.map +1 -0
- package/dist/adapters/universal.js +80 -0
- package/dist/adapters/universal.js.map +1 -0
- package/dist/analysis/deep-analyzer.d.ts +61 -0
- package/dist/analysis/deep-analyzer.d.ts.map +1 -0
- package/dist/analysis/deep-analyzer.js +349 -0
- package/dist/analysis/deep-analyzer.js.map +1 -0
- package/dist/analysis/project-analyzer.d.ts +25 -0
- package/dist/analysis/project-analyzer.d.ts.map +1 -0
- package/dist/analysis/project-analyzer.js +244 -0
- package/dist/analysis/project-analyzer.js.map +1 -0
- package/dist/commands/architecture/architecture-pipeline-enhanced.d.ts +82 -0
- package/dist/commands/architecture/architecture-pipeline-enhanced.d.ts.map +1 -0
- package/dist/commands/architecture/architecture-pipeline-enhanced.js +649 -0
- package/dist/commands/architecture/architecture-pipeline-enhanced.js.map +1 -0
- package/dist/commands/architecture/architecture-pipeline.d.ts +105 -0
- package/dist/commands/architecture/architecture-pipeline.d.ts.map +1 -0
- package/dist/commands/architecture/architecture-pipeline.js +510 -0
- package/dist/commands/architecture/architecture-pipeline.js.map +1 -0
- package/dist/commands/architecture/architecture-reflection.d.ts +67 -0
- package/dist/commands/architecture/architecture-reflection.d.ts.map +1 -0
- package/dist/commands/architecture/architecture-reflection.js +508 -0
- package/dist/commands/architecture/architecture-reflection.js.map +1 -0
- package/dist/commands/architecture/index.d.ts +21 -0
- package/dist/commands/architecture/index.d.ts.map +1 -0
- package/dist/commands/architecture/index.js +41 -0
- package/dist/commands/architecture/index.js.map +1 -0
- package/dist/commands/architecture.d.ts +20 -0
- package/dist/commands/architecture.d.ts.map +1 -0
- package/dist/commands/architecture.js +223 -0
- package/dist/commands/architecture.js.map +1 -0
- package/dist/commands/backlog/ai-enhanced.d.ts +83 -0
- package/dist/commands/backlog/ai-enhanced.d.ts.map +1 -0
- package/dist/commands/backlog/ai-enhanced.js +462 -0
- package/dist/commands/backlog/ai-enhanced.js.map +1 -0
- package/dist/commands/backlog/ai-prompt.d.ts +21 -0
- package/dist/commands/backlog/ai-prompt.d.ts.map +1 -0
- package/dist/commands/backlog/ai-prompt.js +373 -0
- package/dist/commands/backlog/ai-prompt.js.map +1 -0
- package/dist/commands/backlog/ai-template.d.ts +21 -0
- package/dist/commands/backlog/ai-template.d.ts.map +1 -0
- package/dist/commands/backlog/ai-template.js +374 -0
- package/dist/commands/backlog/ai-template.js.map +1 -0
- package/dist/commands/backlog/ai.d.ts +21 -0
- package/dist/commands/backlog/ai.d.ts.map +1 -0
- package/dist/commands/backlog/ai.js +76 -0
- package/dist/commands/backlog/ai.js.map +1 -0
- package/dist/commands/backlog/backlog-pipeline.d.ts +103 -0
- package/dist/commands/backlog/backlog-pipeline.d.ts.map +1 -0
- package/dist/commands/backlog/backlog-pipeline.js +538 -0
- package/dist/commands/backlog/backlog-pipeline.js.map +1 -0
- package/dist/commands/backlog/backlog-reflection.d.ts +48 -0
- package/dist/commands/backlog/backlog-reflection.d.ts.map +1 -0
- package/dist/commands/backlog/backlog-reflection.js +231 -0
- package/dist/commands/backlog/backlog-reflection.js.map +1 -0
- package/dist/commands/backlog/base.d.ts +95 -0
- package/dist/commands/backlog/base.d.ts.map +1 -0
- package/dist/commands/backlog/base.js +291 -0
- package/dist/commands/backlog/base.js.map +1 -0
- package/dist/commands/backlog/complete.d.ts +20 -0
- package/dist/commands/backlog/complete.d.ts.map +1 -0
- package/dist/commands/backlog/complete.js +83 -0
- package/dist/commands/backlog/complete.js.map +1 -0
- package/dist/commands/backlog/context-gatherer.d.ts +76 -0
- package/dist/commands/backlog/context-gatherer.d.ts.map +1 -0
- package/dist/commands/backlog/context-gatherer.js +216 -0
- package/dist/commands/backlog/context-gatherer.js.map +1 -0
- package/dist/commands/backlog/create.d.ts +25 -0
- package/dist/commands/backlog/create.d.ts.map +1 -0
- package/dist/commands/backlog/create.js +131 -0
- package/dist/commands/backlog/create.js.map +1 -0
- package/dist/commands/backlog/index.d.ts +17 -0
- package/dist/commands/backlog/index.d.ts.map +1 -0
- package/dist/commands/backlog/index.js +177 -0
- package/dist/commands/backlog/index.js.map +1 -0
- package/dist/commands/backlog/list.d.ts +25 -0
- package/dist/commands/backlog/list.d.ts.map +1 -0
- package/dist/commands/backlog/list.js +136 -0
- package/dist/commands/backlog/list.js.map +1 -0
- package/dist/commands/backlog/quick-query.d.ts +16 -0
- package/dist/commands/backlog/quick-query.d.ts.map +1 -0
- package/dist/commands/backlog/quick-query.js +126 -0
- package/dist/commands/backlog/quick-query.js.map +1 -0
- package/dist/commands/backlog/show.d.ts +20 -0
- package/dist/commands/backlog/show.d.ts.map +1 -0
- package/dist/commands/backlog/show.js +95 -0
- package/dist/commands/backlog/show.js.map +1 -0
- package/dist/commands/backlog/update.d.ts +25 -0
- package/dist/commands/backlog/update.d.ts.map +1 -0
- package/dist/commands/backlog/update.js +113 -0
- package/dist/commands/backlog/update.js.map +1 -0
- package/dist/commands/bug/bug-context-gatherer.d.ts +58 -0
- package/dist/commands/bug/bug-context-gatherer.d.ts.map +1 -0
- package/dist/commands/bug/bug-context-gatherer.js +228 -0
- package/dist/commands/bug/bug-context-gatherer.js.map +1 -0
- package/dist/commands/bug/bug-reflection.d.ts +70 -0
- package/dist/commands/bug/bug-reflection.d.ts.map +1 -0
- package/dist/commands/bug/bug-reflection.js +343 -0
- package/dist/commands/bug/bug-reflection.js.map +1 -0
- package/dist/commands/capture/capture-reflection.d.ts +139 -0
- package/dist/commands/capture/capture-reflection.d.ts.map +1 -0
- package/dist/commands/capture/capture-reflection.js +583 -0
- package/dist/commands/capture/capture-reflection.js.map +1 -0
- package/dist/commands/capture.d.ts +22 -0
- package/dist/commands/capture.d.ts.map +1 -0
- package/dist/commands/capture.js +301 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/changelog/changelog-reflection.d.ts +65 -0
- package/dist/commands/changelog/changelog-reflection.d.ts.map +1 -0
- package/dist/commands/changelog/changelog-reflection.js +252 -0
- package/dist/commands/changelog/changelog-reflection.js.map +1 -0
- package/dist/commands/compact.d.ts +15 -0
- package/dist/commands/compact.d.ts.map +1 -0
- package/dist/commands/compact.js +113 -0
- package/dist/commands/compact.js.map +1 -0
- package/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +85 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/context-new.d.ts +18 -0
- package/dist/commands/context-new.d.ts.map +1 -0
- package/dist/commands/context-new.js +265 -0
- package/dist/commands/context-new.js.map +1 -0
- package/dist/commands/context.d.ts +16 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +82 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/documentation/documentation-pipeline.d.ts +130 -0
- package/dist/commands/documentation/documentation-pipeline.d.ts.map +1 -0
- package/dist/commands/documentation/documentation-pipeline.js +716 -0
- package/dist/commands/documentation/documentation-pipeline.js.map +1 -0
- package/dist/commands/documentation/documentation-reflection.d.ts +54 -0
- package/dist/commands/documentation/documentation-reflection.d.ts.map +1 -0
- package/dist/commands/documentation/documentation-reflection.js +338 -0
- package/dist/commands/documentation/documentation-reflection.js.map +1 -0
- package/dist/commands/explore/explore-reflection-pipeline.d.ts +117 -0
- package/dist/commands/explore/explore-reflection-pipeline.d.ts.map +1 -0
- package/dist/commands/explore/explore-reflection-pipeline.js +503 -0
- package/dist/commands/explore/explore-reflection-pipeline.js.map +1 -0
- package/dist/commands/explore/index.d.ts +29 -0
- package/dist/commands/explore/index.d.ts.map +1 -0
- package/dist/commands/explore/index.js +30 -0
- package/dist/commands/explore/index.js.map +1 -0
- package/dist/commands/explore.d.ts +20 -0
- package/dist/commands/explore.d.ts.map +1 -0
- package/dist/commands/explore.js +224 -0
- package/dist/commands/explore.js.map +1 -0
- package/dist/commands/git/git-context-gatherer.d.ts +101 -0
- package/dist/commands/git/git-context-gatherer.d.ts.map +1 -0
- package/dist/commands/git/git-context-gatherer.js +284 -0
- package/dist/commands/git/git-context-gatherer.js.map +1 -0
- package/dist/commands/git/git-pipeline.d.ts +75 -0
- package/dist/commands/git/git-pipeline.d.ts.map +1 -0
- package/dist/commands/git/git-pipeline.js +530 -0
- package/dist/commands/git/git-pipeline.js.map +1 -0
- package/dist/commands/git/git-reflection.d.ts +50 -0
- package/dist/commands/git/git-reflection.d.ts.map +1 -0
- package/dist/commands/git/git-reflection.js +193 -0
- package/dist/commands/git/git-reflection.js.map +1 -0
- package/dist/commands/handoff/handoff-reflection-pipeline.d.ts +106 -0
- package/dist/commands/handoff/handoff-reflection-pipeline.d.ts.map +1 -0
- package/dist/commands/handoff/handoff-reflection-pipeline.js +534 -0
- package/dist/commands/handoff/handoff-reflection-pipeline.js.map +1 -0
- package/dist/commands/handoff/handoff-save.d.ts +16 -0
- package/dist/commands/handoff/handoff-save.d.ts.map +1 -0
- package/dist/commands/handoff/handoff-save.js +72 -0
- package/dist/commands/handoff/handoff-save.js.map +1 -0
- package/dist/commands/handoff/index.d.ts +19 -0
- package/dist/commands/handoff/index.d.ts.map +1 -0
- package/dist/commands/handoff/index.js +55 -0
- package/dist/commands/handoff/index.js.map +1 -0
- package/dist/commands/handoff-ai-orig.d.ts +27 -0
- package/dist/commands/handoff-ai-orig.d.ts.map +1 -0
- package/dist/commands/handoff-ai-orig.js +405 -0
- package/dist/commands/handoff-ai-orig.js.map +1 -0
- package/dist/commands/handoff-ai.d.ts +27 -0
- package/dist/commands/handoff-ai.d.ts.map +1 -0
- package/dist/commands/handoff-ai.js +405 -0
- package/dist/commands/handoff-ai.js.map +1 -0
- package/dist/commands/handoff-enhanced-orig.d.ts +25 -0
- package/dist/commands/handoff-enhanced-orig.d.ts.map +1 -0
- package/dist/commands/handoff-enhanced-orig.js +349 -0
- package/dist/commands/handoff-enhanced-orig.js.map +1 -0
- package/dist/commands/handoff-enhanced.d.ts +25 -0
- package/dist/commands/handoff-enhanced.d.ts.map +1 -0
- package/dist/commands/handoff-enhanced.js +349 -0
- package/dist/commands/handoff-enhanced.js.map +1 -0
- package/dist/commands/handoff-orig.d.ts +10 -0
- package/dist/commands/handoff-orig.d.ts.map +1 -0
- package/dist/commands/handoff-orig.js +167 -0
- package/dist/commands/handoff-orig.js.map +1 -0
- package/dist/commands/handoff.d.ts +10 -0
- package/dist/commands/handoff.d.ts.map +1 -0
- package/dist/commands/handoff.js +167 -0
- package/dist/commands/handoff.js.map +1 -0
- package/dist/commands/init-copilot.d.ts +6 -0
- package/dist/commands/init-copilot.d.ts.map +1 -0
- package/dist/commands/init-copilot.js +151 -0
- package/dist/commands/init-copilot.js.map +1 -0
- package/dist/commands/init-cursor.d.ts +5 -0
- package/dist/commands/init-cursor.d.ts.map +1 -0
- package/dist/commands/init-cursor.js +95 -0
- package/dist/commands/init-cursor.js.map +1 -0
- package/dist/commands/init-enhanced.d.ts +20 -0
- package/dist/commands/init-enhanced.d.ts.map +1 -0
- package/dist/commands/init-enhanced.js +430 -0
- package/dist/commands/init-enhanced.js.map +1 -0
- package/dist/commands/init.d.ts +16 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +213 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/magic-prompt.d.ts +20 -0
- package/dist/commands/magic-prompt.d.ts.map +1 -0
- package/dist/commands/magic-prompt.js +166 -0
- package/dist/commands/magic-prompt.js.map +1 -0
- package/dist/commands/magic-simple.d.ts +20 -0
- package/dist/commands/magic-simple.d.ts.map +1 -0
- package/dist/commands/magic-simple.js +32 -0
- package/dist/commands/magic-simple.js.map +1 -0
- package/dist/commands/magic.d.ts +20 -0
- package/dist/commands/magic.d.ts.map +1 -0
- package/dist/commands/magic.js +144 -0
- package/dist/commands/magic.js.map +1 -0
- package/dist/commands/plan/plan-reflection-pipeline.d.ts +126 -0
- package/dist/commands/plan/plan-reflection-pipeline.d.ts.map +1 -0
- package/dist/commands/plan/plan-reflection-pipeline.js +554 -0
- package/dist/commands/plan/plan-reflection-pipeline.js.map +1 -0
- package/dist/commands/plan.d.ts +20 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +253 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/prd/index.d.ts +21 -0
- package/dist/commands/prd/index.d.ts.map +1 -0
- package/dist/commands/prd/index.js +41 -0
- package/dist/commands/prd/index.js.map +1 -0
- package/dist/commands/prd/prd-pipeline-enhanced.d.ts +82 -0
- package/dist/commands/prd/prd-pipeline-enhanced.d.ts.map +1 -0
- package/dist/commands/prd/prd-pipeline-enhanced.js +565 -0
- package/dist/commands/prd/prd-pipeline-enhanced.js.map +1 -0
- package/dist/commands/prd/prd-pipeline.d.ts +106 -0
- package/dist/commands/prd/prd-pipeline.d.ts.map +1 -0
- package/dist/commands/prd/prd-pipeline.js +491 -0
- package/dist/commands/prd/prd-pipeline.js.map +1 -0
- package/dist/commands/prd/prd-reflection-enhanced.d.ts +63 -0
- package/dist/commands/prd/prd-reflection-enhanced.d.ts.map +1 -0
- package/dist/commands/prd/prd-reflection-enhanced.js +310 -0
- package/dist/commands/prd/prd-reflection-enhanced.js.map +1 -0
- package/dist/commands/prd/prd-reflection.d.ts +59 -0
- package/dist/commands/prd/prd-reflection.d.ts.map +1 -0
- package/dist/commands/prd/prd-reflection.js +548 -0
- package/dist/commands/prd/prd-reflection.js.map +1 -0
- package/dist/commands/reflect.d.ts +24 -0
- package/dist/commands/reflect.d.ts.map +1 -0
- package/dist/commands/reflect.js +135 -0
- package/dist/commands/reflect.js.map +1 -0
- package/dist/commands/ship/ship-reflection.d.ts +164 -0
- package/dist/commands/ship/ship-reflection.d.ts.map +1 -0
- package/dist/commands/ship/ship-reflection.js +732 -0
- package/dist/commands/ship/ship-reflection.js.map +1 -0
- package/dist/commands/ship-ai.d.ts +28 -0
- package/dist/commands/ship-ai.d.ts.map +1 -0
- package/dist/commands/ship-ai.js +318 -0
- package/dist/commands/ship-ai.js.map +1 -0
- package/dist/commands/ship.d.ts +17 -0
- package/dist/commands/ship.d.ts.map +1 -0
- package/dist/commands/ship.js +175 -0
- package/dist/commands/ship.js.map +1 -0
- package/dist/commands/sprint/index.d.ts +21 -0
- package/dist/commands/sprint/index.d.ts.map +1 -0
- package/dist/commands/sprint/index.js +39 -0
- package/dist/commands/sprint/index.js.map +1 -0
- package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts +142 -0
- package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts.map +1 -0
- package/dist/commands/sprint/sprint-pipeline-enhanced.js +822 -0
- package/dist/commands/sprint/sprint-pipeline-enhanced.js.map +1 -0
- package/dist/commands/sprint/sprint-pipeline.d.ts +72 -0
- package/dist/commands/sprint/sprint-pipeline.d.ts.map +1 -0
- package/dist/commands/sprint/sprint-pipeline.js +363 -0
- package/dist/commands/sprint/sprint-pipeline.js.map +1 -0
- package/dist/commands/start/index.d.ts +19 -0
- package/dist/commands/start/index.d.ts.map +1 -0
- package/dist/commands/start/index.js +41 -0
- package/dist/commands/start/index.js.map +1 -0
- package/dist/commands/start/start-reflection-pipeline.d.ts +99 -0
- package/dist/commands/start/start-reflection-pipeline.d.ts.map +1 -0
- package/dist/commands/start/start-reflection-pipeline.js +458 -0
- package/dist/commands/start/start-reflection-pipeline.js.map +1 -0
- package/dist/commands/start/start-reflection.d.ts +89 -0
- package/dist/commands/start/start-reflection.d.ts.map +1 -0
- package/dist/commands/start/start-reflection.js +572 -0
- package/dist/commands/start/start-reflection.js.map +1 -0
- package/dist/commands/start/start-with-synthesis.d.ts +20 -0
- package/dist/commands/start/start-with-synthesis.d.ts.map +1 -0
- package/dist/commands/start/start-with-synthesis.js +134 -0
- package/dist/commands/start/start-with-synthesis.js.map +1 -0
- package/dist/commands/start-enhanced-orig.d.ts +19 -0
- package/dist/commands/start-enhanced-orig.d.ts.map +1 -0
- package/dist/commands/start-enhanced-orig.js +434 -0
- package/dist/commands/start-enhanced-orig.js.map +1 -0
- package/dist/commands/start-enhanced.d.ts +19 -0
- package/dist/commands/start-enhanced.d.ts.map +1 -0
- package/dist/commands/start-enhanced.js +434 -0
- package/dist/commands/start-enhanced.js.map +1 -0
- package/dist/commands/start-orig.d.ts +10 -0
- package/dist/commands/start-orig.d.ts.map +1 -0
- package/dist/commands/start-orig.js +119 -0
- package/dist/commands/start-orig.js.map +1 -0
- package/dist/commands/start.d.ts +10 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +119 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +119 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/testing/index.d.ts +21 -0
- package/dist/commands/testing/index.d.ts.map +1 -0
- package/dist/commands/testing/index.js +41 -0
- package/dist/commands/testing/index.js.map +1 -0
- package/dist/commands/testing/testing-pipeline-enhanced.d.ts +94 -0
- package/dist/commands/testing/testing-pipeline-enhanced.d.ts.map +1 -0
- package/dist/commands/testing/testing-pipeline-enhanced.js +760 -0
- package/dist/commands/testing/testing-pipeline-enhanced.js.map +1 -0
- package/dist/commands/testing/testing-pipeline.d.ts +77 -0
- package/dist/commands/testing/testing-pipeline.d.ts.map +1 -0
- package/dist/commands/testing/testing-pipeline.js +479 -0
- package/dist/commands/testing/testing-pipeline.js.map +1 -0
- package/dist/commands/uninstall-copilot.d.ts +5 -0
- package/dist/commands/uninstall-copilot.d.ts.map +1 -0
- package/dist/commands/uninstall-copilot.js +143 -0
- package/dist/commands/uninstall-copilot.js.map +1 -0
- package/dist/commands/uninstall-cursor.d.ts +6 -0
- package/dist/commands/uninstall-cursor.d.ts.map +1 -0
- package/dist/commands/uninstall-cursor.js +124 -0
- package/dist/commands/uninstall-cursor.js.map +1 -0
- package/dist/commands/vibecheck-ai.d.ts +25 -0
- package/dist/commands/vibecheck-ai.d.ts.map +1 -0
- package/dist/commands/vibecheck-ai.js +260 -0
- package/dist/commands/vibecheck-ai.js.map +1 -0
- package/dist/commands/vibecheck-aware.d.ts +19 -0
- package/dist/commands/vibecheck-aware.d.ts.map +1 -0
- package/dist/commands/vibecheck-aware.js +350 -0
- package/dist/commands/vibecheck-aware.js.map +1 -0
- package/dist/commands/vibecheck-final.d.ts +22 -0
- package/dist/commands/vibecheck-final.d.ts.map +1 -0
- package/dist/commands/vibecheck-final.js +132 -0
- package/dist/commands/vibecheck-final.js.map +1 -0
- package/dist/commands/vibecheck-natural.d.ts +18 -0
- package/dist/commands/vibecheck-natural.d.ts.map +1 -0
- package/dist/commands/vibecheck-natural.js +105 -0
- package/dist/commands/vibecheck-natural.js.map +1 -0
- package/dist/commands/vibecheck-simple.d.ts +20 -0
- package/dist/commands/vibecheck-simple.d.ts.map +1 -0
- package/dist/commands/vibecheck-simple.js +136 -0
- package/dist/commands/vibecheck-simple.js.map +1 -0
- package/dist/commands/vibecheck.d.ts +10 -0
- package/dist/commands/vibecheck.d.ts.map +1 -0
- package/dist/commands/vibecheck.js +95 -0
- package/dist/commands/vibecheck.js.map +1 -0
- package/dist/core/adapters/path-adapter.d.ts +144 -0
- package/dist/core/adapters/path-adapter.d.ts.map +1 -0
- package/dist/core/adapters/path-adapter.js +245 -0
- package/dist/core/adapters/path-adapter.js.map +1 -0
- package/dist/core/command-shortcuts.d.ts +62 -0
- package/dist/core/command-shortcuts.d.ts.map +1 -0
- package/dist/core/command-shortcuts.js +124 -0
- package/dist/core/command-shortcuts.js.map +1 -0
- package/dist/core/config/config-aware-reflection.d.ts +37 -0
- package/dist/core/config/config-aware-reflection.d.ts.map +1 -0
- package/dist/core/config/config-aware-reflection.js +97 -0
- package/dist/core/config/config-aware-reflection.js.map +1 -0
- package/dist/core/config/config-loader.d.ts +154 -0
- package/dist/core/config/config-loader.d.ts.map +1 -0
- package/dist/core/config/config-loader.js +424 -0
- package/dist/core/config/config-loader.js.map +1 -0
- package/dist/core/config/config-migrator.d.ts +150 -0
- package/dist/core/config/config-migrator.d.ts.map +1 -0
- package/dist/core/config/config-migrator.js +423 -0
- package/dist/core/config/config-migrator.js.map +1 -0
- package/dist/core/config/config-schema.d.ts +276 -0
- package/dist/core/config/config-schema.d.ts.map +1 -0
- package/dist/core/config/config-schema.js +277 -0
- package/dist/core/config/config-schema.js.map +1 -0
- package/dist/core/config/index.d.ts +260 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +283 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/interactive-config.d.ts +76 -0
- package/dist/core/config/interactive-config.d.ts.map +1 -0
- package/dist/core/config/interactive-config.js +315 -0
- package/dist/core/config/interactive-config.js.map +1 -0
- package/dist/core/config/path-config.d.ts +121 -0
- package/dist/core/config/path-config.d.ts.map +1 -0
- package/dist/core/config/path-config.js +210 -0
- package/dist/core/config/path-config.js.map +1 -0
- package/dist/core/config/path-resolver.d.ts +151 -0
- package/dist/core/config/path-resolver.d.ts.map +1 -0
- package/dist/core/config/path-resolver.js +343 -0
- package/dist/core/config/path-resolver.js.map +1 -0
- package/dist/core/config/project-detector.d.ts +58 -0
- package/dist/core/config/project-detector.d.ts.map +1 -0
- package/dist/core/config/project-detector.js +310 -0
- package/dist/core/config/project-detector.js.map +1 -0
- package/dist/core/config-backup/config-aware-reflection.d.ts +37 -0
- package/dist/core/config-backup/config-aware-reflection.d.ts.map +1 -0
- package/dist/core/config-backup/config-aware-reflection.js +97 -0
- package/dist/core/config-backup/config-aware-reflection.js.map +1 -0
- package/dist/core/config-backup/config-loader.d.ts +71 -0
- package/dist/core/config-backup/config-loader.d.ts.map +1 -0
- package/dist/core/config-backup/config-loader.js +288 -0
- package/dist/core/config-backup/config-loader.js.map +1 -0
- package/dist/core/config-backup/interactive-config.d.ts +76 -0
- package/dist/core/config-backup/interactive-config.d.ts.map +1 -0
- package/dist/core/config-backup/interactive-config.js +315 -0
- package/dist/core/config-backup/interactive-config.js.map +1 -0
- package/dist/core/config-backup/path-config.d.ts +121 -0
- package/dist/core/config-backup/path-config.d.ts.map +1 -0
- package/dist/core/config-backup/path-config.js +210 -0
- package/dist/core/config-backup/path-config.js.map +1 -0
- package/dist/core/config-backup/project-detector.d.ts +58 -0
- package/dist/core/config-backup/project-detector.d.ts.map +1 -0
- package/dist/core/config-backup/project-detector.js +310 -0
- package/dist/core/config-backup/project-detector.js.map +1 -0
- package/dist/core/documents/document-manager.d.ts +97 -0
- package/dist/core/documents/document-manager.d.ts.map +1 -0
- package/dist/core/documents/document-manager.js +441 -0
- package/dist/core/documents/document-manager.js.map +1 -0
- package/dist/core/documents/document-migrator.d.ts +138 -0
- package/dist/core/documents/document-migrator.d.ts.map +1 -0
- package/dist/core/documents/document-migrator.js +349 -0
- package/dist/core/documents/document-migrator.js.map +1 -0
- package/dist/core/documents/document-namer.d.ts +111 -0
- package/dist/core/documents/document-namer.d.ts.map +1 -0
- package/dist/core/documents/document-namer.js +225 -0
- package/dist/core/documents/document-namer.js.map +1 -0
- package/dist/core/documents/examples.d.ts +74 -0
- package/dist/core/documents/examples.d.ts.map +1 -0
- package/dist/core/documents/examples.js +273 -0
- package/dist/core/documents/examples.js.map +1 -0
- package/dist/core/documents/file-system.d.ts +93 -0
- package/dist/core/documents/file-system.d.ts.map +1 -0
- package/dist/core/documents/file-system.js +432 -0
- package/dist/core/documents/file-system.js.map +1 -0
- package/dist/core/documents/index.d.ts +97 -0
- package/dist/core/documents/index.d.ts.map +1 -0
- package/dist/core/documents/index.js +119 -0
- package/dist/core/documents/index.js.map +1 -0
- package/dist/core/documents/markdown-processor.d.ts +84 -0
- package/dist/core/documents/markdown-processor.d.ts.map +1 -0
- package/dist/core/documents/markdown-processor.js +302 -0
- package/dist/core/documents/markdown-processor.js.map +1 -0
- package/dist/core/documents/sequence-manager.d.ts +107 -0
- package/dist/core/documents/sequence-manager.d.ts.map +1 -0
- package/dist/core/documents/sequence-manager.js +246 -0
- package/dist/core/documents/sequence-manager.js.map +1 -0
- package/dist/core/documents/template-engine.d.ts +101 -0
- package/dist/core/documents/template-engine.d.ts.map +1 -0
- package/dist/core/documents/template-engine.js +440 -0
- package/dist/core/documents/template-engine.js.map +1 -0
- package/dist/core/handoff-quality.d.ts +164 -0
- package/dist/core/handoff-quality.d.ts.map +1 -0
- package/dist/core/handoff-quality.js +590 -0
- package/dist/core/handoff-quality.js.map +1 -0
- package/dist/core/platform/hook-adapter.d.ts +109 -0
- package/dist/core/platform/hook-adapter.d.ts.map +1 -0
- package/dist/core/platform/hook-adapter.js +527 -0
- package/dist/core/platform/hook-adapter.js.map +1 -0
- package/dist/core/platform/hook-migration.d.ts +73 -0
- package/dist/core/platform/hook-migration.d.ts.map +1 -0
- package/dist/core/platform/hook-migration.js +339 -0
- package/dist/core/platform/hook-migration.js.map +1 -0
- package/dist/core/platform/hook-migrator.d.ts +49 -0
- package/dist/core/platform/hook-migrator.d.ts.map +1 -0
- package/dist/core/platform/hook-migrator.js +305 -0
- package/dist/core/platform/hook-migrator.js.map +1 -0
- package/dist/core/platform/hook-templates.d.ts +60 -0
- package/dist/core/platform/hook-templates.d.ts.map +1 -0
- package/dist/core/platform/hook-templates.js +352 -0
- package/dist/core/platform/hook-templates.js.map +1 -0
- package/dist/core/platform/index.d.ts +82 -0
- package/dist/core/platform/index.d.ts.map +1 -0
- package/dist/core/platform/index.js +173 -0
- package/dist/core/platform/index.js.map +1 -0
- package/dist/core/platform/path-normalizer.d.ts +117 -0
- package/dist/core/platform/path-normalizer.d.ts.map +1 -0
- package/dist/core/platform/path-normalizer.js +333 -0
- package/dist/core/platform/path-normalizer.js.map +1 -0
- package/dist/core/platform/path-resolver.d.ts +120 -0
- package/dist/core/platform/path-resolver.d.ts.map +1 -0
- package/dist/core/platform/path-resolver.js +339 -0
- package/dist/core/platform/path-resolver.js.map +1 -0
- package/dist/core/platform/platform-adapter.d.ts +101 -0
- package/dist/core/platform/platform-adapter.d.ts.map +1 -0
- package/dist/core/platform/platform-adapter.js +243 -0
- package/dist/core/platform/platform-adapter.js.map +1 -0
- package/dist/core/platform/platform-detector.d.ts +122 -0
- package/dist/core/platform/platform-detector.d.ts.map +1 -0
- package/dist/core/platform/platform-detector.js +318 -0
- package/dist/core/platform/platform-detector.js.map +1 -0
- package/dist/core/platform/platform-templates.d.ts +62 -0
- package/dist/core/platform/platform-templates.d.ts.map +1 -0
- package/dist/core/platform/platform-templates.js +364 -0
- package/dist/core/platform/platform-templates.js.map +1 -0
- package/dist/core/platform/types.d.ts +54 -0
- package/dist/core/platform/types.d.ts.map +1 -0
- package/dist/core/platform/types.js +12 -0
- package/dist/core/platform/types.js.map +1 -0
- package/dist/core/polyglot-example.d.ts +115 -0
- package/dist/core/polyglot-example.d.ts.map +1 -0
- package/dist/core/polyglot-example.js +341 -0
- package/dist/core/polyglot-example.js.map +1 -0
- package/dist/core/pressure-monitor.d.ts +76 -0
- package/dist/core/pressure-monitor.d.ts.map +1 -0
- package/dist/core/pressure-monitor.js +156 -0
- package/dist/core/pressure-monitor.js.map +1 -0
- package/dist/core/reflection-pattern.d.ts +99 -0
- package/dist/core/reflection-pattern.d.ts.map +1 -0
- package/dist/core/reflection-pattern.js +294 -0
- package/dist/core/reflection-pattern.js.map +1 -0
- package/dist/core/session-log-manager.d.ts +83 -0
- package/dist/core/session-log-manager.d.ts.map +1 -0
- package/dist/core/session-log-manager.js +288 -0
- package/dist/core/session-log-manager.js.map +1 -0
- package/dist/core/simple-pipeline-base.d.ts +130 -0
- package/dist/core/simple-pipeline-base.d.ts.map +1 -0
- package/dist/core/simple-pipeline-base.js +240 -0
- package/dist/core/simple-pipeline-base.js.map +1 -0
- package/dist/core/simple-pipeline.d.ts +70 -0
- package/dist/core/simple-pipeline.d.ts.map +1 -0
- package/dist/core/simple-pipeline.js +241 -0
- package/dist/core/simple-pipeline.js.map +1 -0
- package/dist/core/utils/paths.d.ts +50 -0
- package/dist/core/utils/paths.d.ts.map +1 -0
- package/dist/core/utils/paths.js +75 -0
- package/dist/core/utils/paths.js.map +1 -0
- package/dist/core/validators/command-argument-validator.d.ts +102 -0
- package/dist/core/validators/command-argument-validator.d.ts.map +1 -0
- package/dist/core/validators/command-argument-validator.js +377 -0
- package/dist/core/validators/command-argument-validator.js.map +1 -0
- package/dist/core/validators/config-validator.d.ts +111 -0
- package/dist/core/validators/config-validator.d.ts.map +1 -0
- package/dist/core/validators/config-validator.js +433 -0
- package/dist/core/validators/config-validator.js.map +1 -0
- package/dist/core/validators/environment-validator.d.ts +138 -0
- package/dist/core/validators/environment-validator.d.ts.map +1 -0
- package/dist/core/validators/environment-validator.js +516 -0
- package/dist/core/validators/environment-validator.js.map +1 -0
- package/dist/core/validators/git-validator.d.ts +100 -0
- package/dist/core/validators/git-validator.d.ts.map +1 -0
- package/dist/core/validators/git-validator.js +288 -0
- package/dist/core/validators/git-validator.js.map +1 -0
- package/dist/core/validators/git-validator.test.d.ts +12 -0
- package/dist/core/validators/git-validator.test.d.ts.map +1 -0
- package/dist/core/validators/git-validator.test.js +40 -0
- package/dist/core/validators/git-validator.test.js.map +1 -0
- package/dist/core/validators/index.d.ts +90 -0
- package/dist/core/validators/index.d.ts.map +1 -0
- package/dist/core/validators/index.js +166 -0
- package/dist/core/validators/index.js.map +1 -0
- package/dist/core/validators/input-validator.d.ts +117 -0
- package/dist/core/validators/input-validator.d.ts.map +1 -0
- package/dist/core/validators/input-validator.js +368 -0
- package/dist/core/validators/input-validator.js.map +1 -0
- package/dist/core/validators/temp_index.d.ts +56 -0
- package/dist/core/validators/temp_index.d.ts.map +1 -0
- package/dist/core/validators/temp_index.js +94 -0
- package/dist/core/validators/temp_index.js.map +1 -0
- package/dist/core/validators/validation-error-handler.d.ts +107 -0
- package/dist/core/validators/validation-error-handler.d.ts.map +1 -0
- package/dist/core/validators/validation-error-handler.js +379 -0
- package/dist/core/validators/validation-error-handler.js.map +1 -0
- package/dist/core/validators/validation-orchestrator.d.ts +128 -0
- package/dist/core/validators/validation-orchestrator.d.ts.map +1 -0
- package/dist/core/validators/validation-orchestrator.js +301 -0
- package/dist/core/validators/validation-orchestrator.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +316 -0
- package/dist/index.js.map +1 -0
- package/dist/services/active-context-manager.d.ts +118 -0
- package/dist/services/active-context-manager.d.ts.map +1 -0
- package/dist/services/active-context-manager.js +435 -0
- package/dist/services/active-context-manager.js.map +1 -0
- package/dist/services/ai-service.d.ts +71 -0
- package/dist/services/ai-service.d.ts.map +1 -0
- package/dist/services/ai-service.js +329 -0
- package/dist/services/ai-service.js.map +1 -0
- package/dist/services/context-search.d.ts +98 -0
- package/dist/services/context-search.d.ts.map +1 -0
- package/dist/services/context-search.js +289 -0
- package/dist/services/context-search.js.map +1 -0
- package/dist/services/insight-extractor.d.ts +69 -0
- package/dist/services/insight-extractor.d.ts.map +1 -0
- package/dist/services/insight-extractor.js +343 -0
- package/dist/services/insight-extractor.js.map +1 -0
- package/dist/services/insight-quality-controller.d.ts +167 -0
- package/dist/services/insight-quality-controller.d.ts.map +1 -0
- package/dist/services/insight-quality-controller.js +543 -0
- package/dist/services/insight-quality-controller.js.map +1 -0
- package/dist/services/module-generator.d.ts +108 -0
- package/dist/services/module-generator.d.ts.map +1 -0
- package/dist/services/module-generator.js +561 -0
- package/dist/services/module-generator.js.map +1 -0
- package/dist/services/statusline-tracker.d.ts +139 -0
- package/dist/services/statusline-tracker.d.ts.map +1 -0
- package/dist/services/statusline-tracker.js +360 -0
- package/dist/services/statusline-tracker.js.map +1 -0
- package/dist/templates/ai-instructions-template.d.ts +39 -0
- package/dist/templates/ai-instructions-template.d.ts.map +1 -0
- package/dist/templates/ai-instructions-template.js +222 -0
- package/dist/templates/ai-instructions-template.js.map +1 -0
- package/dist/types/config.d.ts +128 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +49 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/documents.d.ts +87 -0
- package/dist/types/documents.d.ts.map +1 -0
- package/dist/types/documents.js +12 -0
- package/dist/types/documents.js.map +1 -0
- package/dist/types/session-log.d.ts +83 -0
- package/dist/types/session-log.d.ts.map +1 -0
- package/dist/types/session-log.js +12 -0
- package/dist/types/session-log.js.map +1 -0
- package/dist/types/session.d.ts +257 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +12 -0
- package/dist/types/session.js.map +1 -0
- package/dist/utils/ai-templates.d.ts +98 -0
- package/dist/utils/ai-templates.d.ts.map +1 -0
- package/dist/utils/ai-templates.js +179 -0
- package/dist/utils/ai-templates.js.map +1 -0
- package/dist/utils/ginko-root.d.ts +51 -0
- package/dist/utils/ginko-root.d.ts.map +1 -0
- package/dist/utils/ginko-root.js +96 -0
- package/dist/utils/ginko-root.js.map +1 -0
- package/dist/utils/helpers.d.ts +19 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +107 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/progressive-learning.d.ts +42 -0
- package/dist/utils/progressive-learning.d.ts.map +1 -0
- package/dist/utils/progressive-learning.js +248 -0
- package/dist/utils/progressive-learning.js.map +1 -0
- package/dist/utils/session-collector.d.ts +81 -0
- package/dist/utils/session-collector.d.ts.map +1 -0
- package/dist/utils/session-collector.js +387 -0
- package/dist/utils/session-collector.js.map +1 -0
- package/dist/utils/session-logger.d.ts +125 -0
- package/dist/utils/session-logger.d.ts.map +1 -0
- package/dist/utils/session-logger.js +359 -0
- package/dist/utils/session-logger.js.map +1 -0
- package/dist/utils/session-synthesizer.d.ts +36 -0
- package/dist/utils/session-synthesizer.d.ts.map +1 -0
- package/dist/utils/session-synthesizer.js +239 -0
- package/dist/utils/session-synthesizer.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-09-21
|
|
5
|
+
* @tags: [cli, init, setup, git-native, enhanced, path-config]
|
|
6
|
+
* @related: [path-config.ts, ginko-root.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [path-config, chalk, fs-extra, ora]
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import fs from 'fs-extra';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import ora from 'ora';
|
|
15
|
+
import { execSync } from 'child_process';
|
|
16
|
+
import { ProjectAnalyzer } from '../analysis/project-analyzer.js';
|
|
17
|
+
import { AiInstructionsTemplate } from '../templates/ai-instructions-template.js';
|
|
18
|
+
import { findGinkoRoot } from '../utils/ginko-root.js';
|
|
19
|
+
import { pathManager } from '../core/utils/paths.js';
|
|
20
|
+
import { getUserEmail } from '../utils/helpers.js';
|
|
21
|
+
export async function initCommand(options = {}) {
|
|
22
|
+
const spinner = ora('Initializing Ginko...').start();
|
|
23
|
+
let deepAnalysis = null; // Track deep analysis results for output
|
|
24
|
+
try {
|
|
25
|
+
// Get paths from pathManager instead of hardcoding
|
|
26
|
+
const pathConfig = pathManager.getConfig();
|
|
27
|
+
const projectRoot = pathConfig.project.root;
|
|
28
|
+
const ginkoDir = pathConfig.ginko.root;
|
|
29
|
+
// Check if already initialized in current directory
|
|
30
|
+
if (await fs.pathExists(ginkoDir)) {
|
|
31
|
+
spinner.warn('Ginko already initialized in this directory');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Check if already initialized in a parent directory
|
|
35
|
+
const existingRoot = await findGinkoRoot();
|
|
36
|
+
if (existingRoot && existingRoot !== projectRoot) {
|
|
37
|
+
spinner.warn(`Ginko already initialized in parent directory: ${existingRoot}`);
|
|
38
|
+
console.log(chalk.yellow('\nTip: Run ginko commands from any subdirectory - they will use the parent .ginko'));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Create directory structure using pathManager
|
|
42
|
+
await fs.ensureDir(pathConfig.ginko.sessions);
|
|
43
|
+
await fs.ensureDir(pathManager.joinPaths(pathConfig.ginko.root, 'patterns'));
|
|
44
|
+
await fs.ensureDir(pathManager.joinPaths(pathConfig.ginko.root, 'best-practices'));
|
|
45
|
+
await fs.ensureDir(pathConfig.ginko.context);
|
|
46
|
+
await fs.ensureDir(pathManager.joinPaths(pathConfig.ginko.context, 'modules'));
|
|
47
|
+
// Get user info from git config
|
|
48
|
+
let userEmail = 'user@example.com';
|
|
49
|
+
let userName = 'Developer';
|
|
50
|
+
try {
|
|
51
|
+
userEmail = execSync('git config user.email', { encoding: 'utf8' }).trim();
|
|
52
|
+
userName = execSync('git config user.name', { encoding: 'utf8' }).trim();
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
// Git not configured, use defaults
|
|
56
|
+
}
|
|
57
|
+
// Create user session directory using pathManager
|
|
58
|
+
const userSlug = userEmail.replace('@', '-at-').replace(/\\./g, '-');
|
|
59
|
+
const userSessionsDir = pathManager.joinPaths(pathConfig.ginko.sessions, userSlug);
|
|
60
|
+
await fs.ensureDir(userSessionsDir);
|
|
61
|
+
await fs.ensureDir(pathManager.joinPaths(userSessionsDir, 'archive'));
|
|
62
|
+
// Create default configuration (privacy-first)
|
|
63
|
+
const config = {
|
|
64
|
+
version: '0.1.0',
|
|
65
|
+
user: {
|
|
66
|
+
email: userEmail
|
|
67
|
+
},
|
|
68
|
+
privacy: {
|
|
69
|
+
shareAnonymizedUsage: false,
|
|
70
|
+
trackFeatureUsage: true,
|
|
71
|
+
includeStackTraces: false
|
|
72
|
+
},
|
|
73
|
+
features: {
|
|
74
|
+
deepAnalysis: options.analyze !== false,
|
|
75
|
+
autoBestPractices: true,
|
|
76
|
+
smartTemplates: true
|
|
77
|
+
},
|
|
78
|
+
ai: {
|
|
79
|
+
defaultModel: options.model || 'claude-3-5-sonnet-20241022',
|
|
80
|
+
fallbackModel: 'gpt-4o-mini'
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
// Save configuration using pathManager
|
|
84
|
+
const configPath = pathManager.joinPaths(pathConfig.ginko.root, 'config.json');
|
|
85
|
+
await fs.writeJSON(configPath, config, { spaces: 2 });
|
|
86
|
+
// Project analysis step
|
|
87
|
+
if (options.analyze !== false) {
|
|
88
|
+
spinner.text = 'Analyzing project structure...';
|
|
89
|
+
try {
|
|
90
|
+
const analyzer = new ProjectAnalyzer(projectRoot);
|
|
91
|
+
// Perform analysis
|
|
92
|
+
deepAnalysis = await analyzer.analyze();
|
|
93
|
+
// Save analysis results using pathManager
|
|
94
|
+
const analysisPath = pathManager.joinPaths(pathConfig.ginko.context, 'project-analysis.json');
|
|
95
|
+
await fs.writeJSON(analysisPath, deepAnalysis, { spaces: 2 });
|
|
96
|
+
spinner.succeed('Project analysis complete');
|
|
97
|
+
}
|
|
98
|
+
catch (analysisError) {
|
|
99
|
+
spinner.warn('Project analysis failed, continuing with basic setup');
|
|
100
|
+
console.warn(chalk.yellow('Analysis error:', analysisError instanceof Error ? analysisError.message : String(analysisError)));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// AI instructions generation
|
|
104
|
+
spinner.start('Generating AI collaboration instructions...');
|
|
105
|
+
try {
|
|
106
|
+
const projectContext = deepAnalysis || await new ProjectAnalyzer(projectRoot).analyze();
|
|
107
|
+
// Create template variables
|
|
108
|
+
const variables = {
|
|
109
|
+
projectName: path.basename(projectRoot),
|
|
110
|
+
projectType: projectContext.projectType || 'unknown',
|
|
111
|
+
techStack: projectContext.techStack || [],
|
|
112
|
+
frameworks: projectContext.frameworks || [],
|
|
113
|
+
languages: projectContext.languages || [],
|
|
114
|
+
packageManager: projectContext.packageManager || 'unknown',
|
|
115
|
+
testCommand: projectContext.testCommand || 'npm test',
|
|
116
|
+
buildCommand: projectContext.buildCommand || 'npm run build',
|
|
117
|
+
hasTests: projectContext.hasTests || false,
|
|
118
|
+
userEmail: await getUserEmail(),
|
|
119
|
+
userName: 'Developer',
|
|
120
|
+
date: new Date().toISOString().split('T')[0]
|
|
121
|
+
};
|
|
122
|
+
// Generate instructions
|
|
123
|
+
const instructions = AiInstructionsTemplate.generate(variables);
|
|
124
|
+
// Save instructions using pathManager
|
|
125
|
+
const instructionsPath = pathManager.joinPaths(projectRoot, 'CLAUDE.md');
|
|
126
|
+
await fs.writeFile(instructionsPath, instructions);
|
|
127
|
+
spinner.succeed('AI instructions generated');
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
spinner.warn('AI instructions generation failed');
|
|
131
|
+
console.warn(chalk.yellow('Instructions error:', error instanceof Error ? error.message : String(error)));
|
|
132
|
+
}
|
|
133
|
+
// Context rules
|
|
134
|
+
spinner.start('Setting up context management...');
|
|
135
|
+
const contextRules = `# Context Management Rules
|
|
136
|
+
|
|
137
|
+
## Privacy & Security
|
|
138
|
+
- All context stored locally in .ginko/
|
|
139
|
+
- No data leaves your machine without explicit action
|
|
140
|
+
- Handoffs are git-tracked for team collaboration
|
|
141
|
+
- Config (.ginko/config.json) is gitignored
|
|
142
|
+
|
|
143
|
+
## Best Practices
|
|
144
|
+
- Always run \`ginko handoff\` before switching context
|
|
145
|
+
- Use \`ginko start\` to resume with full context
|
|
146
|
+
- Keep handoffs under 2000 words for clarity
|
|
147
|
+
- Include specific next steps in every handoff
|
|
148
|
+
`;
|
|
149
|
+
const contextPath = pathManager.joinPaths(pathConfig.ginko.context, 'rules.md');
|
|
150
|
+
await fs.writeFile(contextPath, contextRules);
|
|
151
|
+
// Create initial best practice
|
|
152
|
+
const bestPractice = `# Local Development Best Practices
|
|
153
|
+
|
|
154
|
+
## Session Management
|
|
155
|
+
- \`ginko start\` - Begin new session with context loading
|
|
156
|
+
- \`ginko handoff\` - Save progress for seamless continuation
|
|
157
|
+
- \`ginko vibecheck\` - Quick realignment when stuck
|
|
158
|
+
|
|
159
|
+
## Development Workflow
|
|
160
|
+
1. Check what exists: \`ls -la\` relevant directories
|
|
161
|
+
2. Find examples: Look for similar features already implemented
|
|
162
|
+
3. Test existing: Try current endpoints/features first
|
|
163
|
+
4. Plan, implement, test, document
|
|
164
|
+
|
|
165
|
+
*Customize this file for your team's specific practices*
|
|
166
|
+
`;
|
|
167
|
+
const bestPracticePath = pathManager.joinPaths(pathConfig.ginko.root, 'best-practices', 'local.md');
|
|
168
|
+
await fs.writeFile(bestPracticePath, bestPractice);
|
|
169
|
+
// Add .ginko to .gitignore if it doesn't exist
|
|
170
|
+
const gitignorePath = pathManager.joinPaths(projectRoot, '.gitignore');
|
|
171
|
+
if (await fs.pathExists(gitignorePath)) {
|
|
172
|
+
const gitignore = await fs.readFile(gitignorePath, 'utf8');
|
|
173
|
+
if (!gitignore.includes('.ginko/config.json')) {
|
|
174
|
+
await fs.appendFile(gitignorePath, '\n# Ginko - Keep context, ignore private config\n.ginko/config.json\n.ginko/.temp/\n');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
await fs.writeFile(gitignorePath, '# Ginko - Keep context, ignore private config\n.ginko/config.json\n.ginko/.temp/\n');
|
|
179
|
+
}
|
|
180
|
+
spinner.succeed('Context management configured');
|
|
181
|
+
// Final setup
|
|
182
|
+
spinner.start('Completing setup...');
|
|
183
|
+
// Create initial session marker
|
|
184
|
+
const sessionMarker = pathManager.joinPaths(pathConfig.ginko.sessions, userSlug, '.session-start');
|
|
185
|
+
await fs.writeFile(sessionMarker, new Date().toISOString());
|
|
186
|
+
spinner.succeed('Ginko initialized successfully!');
|
|
187
|
+
// Success message
|
|
188
|
+
console.log('\n' + chalk.green('🎉 Ginko is ready!'));
|
|
189
|
+
console.log('\n' + chalk.blue('Quick start:'));
|
|
190
|
+
console.log(' ' + chalk.cyan('ginko start') + ' - Begin your first session');
|
|
191
|
+
console.log(' ' + chalk.cyan('ginko handoff "Initial setup complete"') + ' - Save your progress');
|
|
192
|
+
if (deepAnalysis) {
|
|
193
|
+
console.log('\n' + chalk.blue('Project analysis:'));
|
|
194
|
+
console.log(' 📊 ' + chalk.yellow('Type:') + ' ' + (deepAnalysis.type || 'Unknown'));
|
|
195
|
+
console.log(' 🔧 ' + chalk.yellow('Languages:') + ' ' + (deepAnalysis.languages?.join(', ') || 'None detected'));
|
|
196
|
+
console.log(' 📦 ' + chalk.yellow('Frameworks:') + ' ' + (deepAnalysis.frameworks?.join(', ') || 'None detected'));
|
|
197
|
+
console.log(' ⚗️ ' + chalk.yellow('Package Manager:') + ' ' + (deepAnalysis.packageManager || 'Unknown'));
|
|
198
|
+
if (deepAnalysis.commands?.length > 0) {
|
|
199
|
+
console.log(' 🎯 ' + chalk.yellow('Quick Commands:') + ' ' + deepAnalysis.commands.slice(0, 3).join(', '));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
console.log('\n' + chalk.gray('Files created:'));
|
|
203
|
+
console.log(' 📁 ' + chalk.gray(pathManager.getRelativePath(ginkoDir)));
|
|
204
|
+
console.log(' 📄 ' + chalk.gray('CLAUDE.md (AI instructions)'));
|
|
205
|
+
console.log(' 🔒 ' + chalk.gray('.gitignore (updated)'));
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
spinner.fail('Initialization failed');
|
|
209
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-09-11
|
|
5
|
+
* @tags: [magic, ai, natural-language, prompts, router]
|
|
6
|
+
* @related: [backlog/ai-prompt.ts]
|
|
7
|
+
* @priority: critical
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
interface MagicOptions {
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
raw?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Magic command - outputs prompts for ambient AI based on domain
|
|
17
|
+
*/
|
|
18
|
+
export declare function magicPromptCommand(request: string, options?: MagicOptions): Promise<void>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=magic-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"magic-prompt.d.ts","sourceRoot":"","sources":["../../src/commands/magic-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,iBAmCnF"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-09-11
|
|
5
|
+
* @tags: [magic, ai, natural-language, prompts, router]
|
|
6
|
+
* @related: [backlog/ai-prompt.ts]
|
|
7
|
+
* @priority: critical
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { aiPromptCommand } from './backlog/ai-prompt.js';
|
|
13
|
+
/**
|
|
14
|
+
* Magic command - outputs prompts for ambient AI based on domain
|
|
15
|
+
*/
|
|
16
|
+
export async function magicPromptCommand(request, options = {}) {
|
|
17
|
+
try {
|
|
18
|
+
// Detect domain from request
|
|
19
|
+
const domain = detectDomain(request);
|
|
20
|
+
if (options.verbose) {
|
|
21
|
+
console.log(chalk.dim(`Detected domain: ${domain}`));
|
|
22
|
+
}
|
|
23
|
+
// Route to appropriate prompt generator
|
|
24
|
+
switch (domain) {
|
|
25
|
+
case 'backlog':
|
|
26
|
+
return aiPromptCommand(request, options);
|
|
27
|
+
case 'git':
|
|
28
|
+
outputGitPrompt(request);
|
|
29
|
+
break;
|
|
30
|
+
case 'session':
|
|
31
|
+
outputSessionPrompt(request);
|
|
32
|
+
break;
|
|
33
|
+
case 'context':
|
|
34
|
+
outputContextPrompt(request);
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
outputGeneralPrompt(request);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(chalk.red('Failed to generate prompt'));
|
|
42
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Detect which domain the request belongs to
|
|
48
|
+
*/
|
|
49
|
+
function detectDomain(request) {
|
|
50
|
+
const lower = request.toLowerCase();
|
|
51
|
+
// Backlog keywords
|
|
52
|
+
if (lower.match(/(feature|story|task|backlog|create|add|todo|priority|assign|complete|done|work on|plan)/)) {
|
|
53
|
+
return 'backlog';
|
|
54
|
+
}
|
|
55
|
+
// Git keywords
|
|
56
|
+
if (lower.match(/(commit|push|pull|branch|merge|checkout|stash|diff|git)/)) {
|
|
57
|
+
return 'git';
|
|
58
|
+
}
|
|
59
|
+
// Session keywords
|
|
60
|
+
if (lower.match(/(handoff|session|capture|vibecheck)/)) {
|
|
61
|
+
return 'session';
|
|
62
|
+
}
|
|
63
|
+
// Context keywords
|
|
64
|
+
if (lower.match(/(context|remember|learned|insight)/)) {
|
|
65
|
+
return 'context';
|
|
66
|
+
}
|
|
67
|
+
return 'general';
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Output git operation prompt
|
|
71
|
+
*/
|
|
72
|
+
function outputGitPrompt(request) {
|
|
73
|
+
console.log(chalk.cyan('═══ AI Task ═══════════════════════════════════════════'));
|
|
74
|
+
console.log(`
|
|
75
|
+
<ai-task>
|
|
76
|
+
Help with git operation.
|
|
77
|
+
|
|
78
|
+
USER REQUEST: "${request}"
|
|
79
|
+
|
|
80
|
+
COMMON COMMANDS:
|
|
81
|
+
\`\`\`bash
|
|
82
|
+
git add . # Stage all changes
|
|
83
|
+
git commit -m "message" # Commit with message
|
|
84
|
+
git push # Push to remote
|
|
85
|
+
git pull # Pull from remote
|
|
86
|
+
git status # Check status
|
|
87
|
+
git diff # View changes
|
|
88
|
+
git log --oneline -10 # Recent commits
|
|
89
|
+
git checkout -b feature-branch # Create new branch
|
|
90
|
+
\`\`\`
|
|
91
|
+
|
|
92
|
+
Execute the appropriate git command(s) based on the request.
|
|
93
|
+
</ai-task>`);
|
|
94
|
+
console.log(chalk.cyan('═══════════════════════════════════════════════════════'));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Output session management prompt
|
|
98
|
+
*/
|
|
99
|
+
function outputSessionPrompt(request) {
|
|
100
|
+
console.log(chalk.cyan('═══ AI Task ═══════════════════════════════════════════'));
|
|
101
|
+
console.log(`
|
|
102
|
+
<ai-task>
|
|
103
|
+
Help with session management.
|
|
104
|
+
|
|
105
|
+
USER REQUEST: "${request}"
|
|
106
|
+
|
|
107
|
+
AVAILABLE COMMANDS:
|
|
108
|
+
\`\`\`bash
|
|
109
|
+
ginko handoff "message" # Save session progress
|
|
110
|
+
ginko status # Show current status
|
|
111
|
+
ginko vibecheck # Quick recalibration
|
|
112
|
+
ginko capture "insight" # Capture a learning
|
|
113
|
+
\`\`\`
|
|
114
|
+
|
|
115
|
+
Execute the appropriate command based on the request.
|
|
116
|
+
</ai-task>`);
|
|
117
|
+
console.log(chalk.cyan('═══════════════════════════════════════════════════════'));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Output context management prompt
|
|
121
|
+
*/
|
|
122
|
+
function outputContextPrompt(request) {
|
|
123
|
+
console.log(chalk.cyan('═══ AI Task ═══════════════════════════════════════════'));
|
|
124
|
+
console.log(`
|
|
125
|
+
<ai-task>
|
|
126
|
+
Help with context management.
|
|
127
|
+
|
|
128
|
+
USER REQUEST: "${request}"
|
|
129
|
+
|
|
130
|
+
AVAILABLE COMMANDS:
|
|
131
|
+
\`\`\`bash
|
|
132
|
+
ginko context # Show current context
|
|
133
|
+
ginko context -a file.ts # Add file to context
|
|
134
|
+
ginko context -r file.ts # Remove from context
|
|
135
|
+
ginko capture "learning" # Capture an insight
|
|
136
|
+
\`\`\`
|
|
137
|
+
|
|
138
|
+
Execute the appropriate command based on the request.
|
|
139
|
+
</ai-task>`);
|
|
140
|
+
console.log(chalk.cyan('═══════════════════════════════════════════════════════'));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Output general help prompt
|
|
144
|
+
*/
|
|
145
|
+
function outputGeneralPrompt(request) {
|
|
146
|
+
console.log(chalk.cyan('═══ AI Task ═══════════════════════════════════════════'));
|
|
147
|
+
console.log(`
|
|
148
|
+
<ai-task>
|
|
149
|
+
Help with Ginko command.
|
|
150
|
+
|
|
151
|
+
USER REQUEST: "${request}"
|
|
152
|
+
|
|
153
|
+
MAIN GINKO COMMANDS:
|
|
154
|
+
- ginko init # Initialize project
|
|
155
|
+
- ginko start # Start session
|
|
156
|
+
- ginko handoff "message" # Save progress
|
|
157
|
+
- ginko backlog [command] # Manage backlog
|
|
158
|
+
- ginko ship "message" # Create PR
|
|
159
|
+
- ginko vibecheck # Recalibrate
|
|
160
|
+
- ginko --help # Show all commands
|
|
161
|
+
|
|
162
|
+
Determine what the user wants and execute the appropriate command.
|
|
163
|
+
</ai-task>`);
|
|
164
|
+
console.log(chalk.cyan('═══════════════════════════════════════════════════════'));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=magic-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"magic-prompt.js","sourceRoot":"","sources":["../../src/commands/magic-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-09-11
|
|
5
|
+
* @tags: [magic, router, simple]
|
|
6
|
+
* @related: [backlog/ai-template.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
interface MagicOptions {
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Simple magic command router
|
|
16
|
+
* Only generates templates when valuable, otherwise tells user to ask AI directly
|
|
17
|
+
*/
|
|
18
|
+
export declare function magicSimpleCommand(request: string, options?: MagicOptions): Promise<void>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=magic-simple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"magic-simple.d.ts","sourceRoot":"","sources":["../../src/commands/magic-simple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,iBAgBnF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-09-11
|
|
5
|
+
* @tags: [magic, router, simple]
|
|
6
|
+
* @related: [backlog/ai-template.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { aiTemplateCommand } from './backlog/ai-template.js';
|
|
13
|
+
/**
|
|
14
|
+
* Simple magic command router
|
|
15
|
+
* Only generates templates when valuable, otherwise tells user to ask AI directly
|
|
16
|
+
*/
|
|
17
|
+
export async function magicSimpleCommand(request, options = {}) {
|
|
18
|
+
const lower = request.toLowerCase();
|
|
19
|
+
// Route content generation to template system
|
|
20
|
+
if (lower.match(/create|write|plan|decompose|break.*down/)) {
|
|
21
|
+
return aiTemplateCommand(request, options);
|
|
22
|
+
}
|
|
23
|
+
// For simple queries, just tell user to ask AI
|
|
24
|
+
console.log(chalk.yellow('Just ask me (the AI) directly!'));
|
|
25
|
+
console.log(chalk.dim('\nI can run commands like:'));
|
|
26
|
+
console.log(chalk.green(' ginko backlog list'));
|
|
27
|
+
console.log(chalk.green(' ginko backlog show FEATURE-001'));
|
|
28
|
+
console.log(chalk.green(' ginko status'));
|
|
29
|
+
console.log(chalk.dim('\nOr for content creation, use:'));
|
|
30
|
+
console.log(chalk.green(' ginko backlog ai "create feature for [description]"'));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=magic-simple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"magic-simple.js","sourceRoot":"","sources":["../../src/commands/magic-simple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAM7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,UAAwB,EAAE;IAClF,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,8CAA8C;IAC9C,IAAI,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,EAAE,CAAC;QAC3D,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,+CAA+C;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-09-11
|
|
5
|
+
* @tags: [magic, ai, natural-language, router]
|
|
6
|
+
* @related: [backlog/ai-enhanced.ts]
|
|
7
|
+
* @priority: critical
|
|
8
|
+
* @complexity: high
|
|
9
|
+
* @dependencies: [chalk, ora]
|
|
10
|
+
*/
|
|
11
|
+
interface MagicOptions {
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
dryRun?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Magic command router - determines domain and routes to appropriate AI handler
|
|
17
|
+
*/
|
|
18
|
+
export declare function magicCommand(request: string, options?: MagicOptions): Promise<void>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=magic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"magic.d.ts","sourceRoot":"","sources":["../../src/commands/magic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,iBAqD7E"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-09-11
|
|
5
|
+
* @tags: [magic, ai, natural-language, router]
|
|
6
|
+
* @related: [backlog/ai-enhanced.ts]
|
|
7
|
+
* @priority: critical
|
|
8
|
+
* @complexity: high
|
|
9
|
+
* @dependencies: [chalk, ora]
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import ora from 'ora';
|
|
13
|
+
import { aiEnhancedCommand } from './backlog/ai-enhanced.js';
|
|
14
|
+
import { getAiAdapter } from '../adapters/ai-completion.js';
|
|
15
|
+
/**
|
|
16
|
+
* Magic command router - determines domain and routes to appropriate AI handler
|
|
17
|
+
*/
|
|
18
|
+
export async function magicCommand(request, options = {}) {
|
|
19
|
+
const spinner = ora('✨ Analyzing request...').start();
|
|
20
|
+
try {
|
|
21
|
+
// Detect domain from request
|
|
22
|
+
const domain = await detectDomain(request);
|
|
23
|
+
if (options.verbose) {
|
|
24
|
+
spinner.stop();
|
|
25
|
+
console.log(chalk.dim(`Detected domain: ${domain}`));
|
|
26
|
+
spinner.start();
|
|
27
|
+
}
|
|
28
|
+
spinner.text = `Processing ${domain} request...`;
|
|
29
|
+
// Route to appropriate handler
|
|
30
|
+
switch (domain) {
|
|
31
|
+
case 'backlog':
|
|
32
|
+
spinner.stop();
|
|
33
|
+
return aiEnhancedCommand(request, options);
|
|
34
|
+
case 'git':
|
|
35
|
+
spinner.succeed('Git operations coming soon!');
|
|
36
|
+
console.log(chalk.dim('For now, use: git commit -m "message"'));
|
|
37
|
+
break;
|
|
38
|
+
case 'session':
|
|
39
|
+
spinner.succeed('Session management coming soon!');
|
|
40
|
+
console.log(chalk.dim('For now, use: ginko handoff "message"'));
|
|
41
|
+
break;
|
|
42
|
+
case 'context':
|
|
43
|
+
spinner.succeed('Context management coming soon!');
|
|
44
|
+
console.log(chalk.dim('For now, use: ginko context'));
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
spinner.stop();
|
|
48
|
+
return handleGeneralRequest(request);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
spinner.fail('Failed to process magic command');
|
|
53
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
54
|
+
// Suggest specific commands
|
|
55
|
+
console.log(chalk.dim('\nTry a more specific command:'));
|
|
56
|
+
console.log(chalk.green(' ginko backlog ai "your request"'));
|
|
57
|
+
console.log(chalk.green(' ginko handoff "your message"'));
|
|
58
|
+
console.log(chalk.green(' ginko vibecheck'));
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Detect which domain the request belongs to
|
|
64
|
+
*/
|
|
65
|
+
async function detectDomain(request) {
|
|
66
|
+
const lower = request.toLowerCase();
|
|
67
|
+
// Quick pattern matching for obvious domains
|
|
68
|
+
const backlogKeywords = [
|
|
69
|
+
'feature', 'story', 'task', 'backlog', 'create', 'add', 'todo',
|
|
70
|
+
'priority', 'assign', 'complete', 'done', 'finish', 'work on',
|
|
71
|
+
'what should i', 'next', 'plan'
|
|
72
|
+
];
|
|
73
|
+
const gitKeywords = [
|
|
74
|
+
'commit', 'push', 'pull', 'branch', 'merge', 'checkout', 'stash',
|
|
75
|
+
'diff', 'log', 'status', 'git'
|
|
76
|
+
];
|
|
77
|
+
const sessionKeywords = [
|
|
78
|
+
'handoff', 'session', 'capture', 'context', 'vibecheck', 'status'
|
|
79
|
+
];
|
|
80
|
+
// Check patterns
|
|
81
|
+
if (backlogKeywords.some(keyword => lower.includes(keyword))) {
|
|
82
|
+
return 'backlog';
|
|
83
|
+
}
|
|
84
|
+
if (gitKeywords.some(keyword => lower.includes(keyword))) {
|
|
85
|
+
return 'git';
|
|
86
|
+
}
|
|
87
|
+
if (sessionKeywords.some(keyword => lower.includes(keyword))) {
|
|
88
|
+
return 'session';
|
|
89
|
+
}
|
|
90
|
+
// If unclear, use AI to determine
|
|
91
|
+
try {
|
|
92
|
+
const adapter = await getAiAdapter();
|
|
93
|
+
const prompt = `
|
|
94
|
+
Categorize this request into one of these domains:
|
|
95
|
+
- backlog: Managing tasks, features, stories, work items
|
|
96
|
+
- git: Version control operations
|
|
97
|
+
- session: Session management, handoffs, context
|
|
98
|
+
- general: General questions or help
|
|
99
|
+
|
|
100
|
+
Request: "${request}"
|
|
101
|
+
|
|
102
|
+
Respond with just the domain name.`;
|
|
103
|
+
const response = await adapter.complete(prompt, {
|
|
104
|
+
temperature: 0.1,
|
|
105
|
+
maxTokens: 10
|
|
106
|
+
});
|
|
107
|
+
const domain = response.trim().toLowerCase();
|
|
108
|
+
if (['backlog', 'git', 'session', 'context', 'general'].includes(domain)) {
|
|
109
|
+
return domain;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
// Fallback to general if AI fails
|
|
114
|
+
}
|
|
115
|
+
return 'general';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Handle general requests that don't fit a specific domain
|
|
119
|
+
*/
|
|
120
|
+
async function handleGeneralRequest(request) {
|
|
121
|
+
try {
|
|
122
|
+
const adapter = await getAiAdapter();
|
|
123
|
+
const prompt = `
|
|
124
|
+
You are Ginko, a helpful AI assistant for developers. Answer this request concisely:
|
|
125
|
+
|
|
126
|
+
"${request}"
|
|
127
|
+
|
|
128
|
+
If this is about using Ginko, suggest specific commands.
|
|
129
|
+
Keep your response brief and actionable.`;
|
|
130
|
+
const response = await adapter.complete(prompt, {
|
|
131
|
+
temperature: 0.7
|
|
132
|
+
});
|
|
133
|
+
console.log(response);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.log(chalk.yellow('I understand you want help with: ') + request);
|
|
137
|
+
console.log(chalk.dim('\nAvailable commands:'));
|
|
138
|
+
console.log(chalk.green(' ginko backlog ai "manage work items"'));
|
|
139
|
+
console.log(chalk.green(' ginko handoff "save progress"'));
|
|
140
|
+
console.log(chalk.green(' ginko vibecheck'));
|
|
141
|
+
console.log(chalk.green(' ginko --help'));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=magic.js.map
|