@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,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-08-28
|
|
5
|
+
* @tags: [cli, vibecheck, situational-awareness, pair-programming]
|
|
6
|
+
* @priority: critical
|
|
7
|
+
* @complexity: medium
|
|
8
|
+
* @dependencies: [chalk, fs-extra, simple-git]
|
|
9
|
+
*/
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import fs from 'fs-extra';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import simpleGit from 'simple-git';
|
|
14
|
+
import { getGinkoDir, detectWorkMode } from '../utils/helpers.js';
|
|
15
|
+
/**
|
|
16
|
+
* Situationally-aware vibecheck - like a thoughtful pair programming partner
|
|
17
|
+
*/
|
|
18
|
+
export async function vibecheckAwareCommand(concern, options = {}) {
|
|
19
|
+
try {
|
|
20
|
+
const git = simpleGit();
|
|
21
|
+
const ginkoDir = await getGinkoDir();
|
|
22
|
+
// Gather situational context
|
|
23
|
+
const context = await gatherSituationalContext(git, ginkoDir);
|
|
24
|
+
// Start with a simple acknowledgment
|
|
25
|
+
console.log(chalk.yellow('\n🎯 Vibecheck\n'));
|
|
26
|
+
if (concern) {
|
|
27
|
+
// Show the concern
|
|
28
|
+
console.log(chalk.dim('You: ') + concern);
|
|
29
|
+
console.log();
|
|
30
|
+
// Generate situationally-aware response
|
|
31
|
+
const response = generateAwareResponse(concern, context);
|
|
32
|
+
console.log(chalk.cyan('Me: ') + response.primary);
|
|
33
|
+
// Offer options if relevant
|
|
34
|
+
if (response.options.length > 0) {
|
|
35
|
+
console.log();
|
|
36
|
+
response.options.forEach((option, i) => {
|
|
37
|
+
console.log(chalk.dim(` ${i + 1}. ${option}`));
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// Show awareness hints if verbose
|
|
41
|
+
if (options.verbose && response.awareness) {
|
|
42
|
+
console.log();
|
|
43
|
+
console.log(chalk.dim(`(Awareness: ${response.awareness})`));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// No specific concern - do a general check based on patterns
|
|
48
|
+
const assessment = assessCurrentSituation(context);
|
|
49
|
+
console.log(chalk.cyan(assessment.message));
|
|
50
|
+
if (assessment.suggestion) {
|
|
51
|
+
console.log();
|
|
52
|
+
console.log(chalk.dim(assessment.suggestion));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Always end with calm encouragement
|
|
56
|
+
console.log();
|
|
57
|
+
console.log(chalk.dim('Take your time. We\'ll continue when you\'re ready.'));
|
|
58
|
+
// Log for pattern recognition
|
|
59
|
+
if (concern) {
|
|
60
|
+
await logVibecheck(ginkoDir, concern, context);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
// Even errors should maintain the calm vibe
|
|
65
|
+
console.log(chalk.yellow('\n🎯 Vibecheck\n'));
|
|
66
|
+
console.log(chalk.cyan('Let\'s pause for a moment. Something feels off.'));
|
|
67
|
+
console.log(chalk.dim('\nTake a breath. What\'s your gut telling you?'));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Gather comprehensive situational context
|
|
72
|
+
*/
|
|
73
|
+
async function gatherSituationalContext(git, ginkoDir) {
|
|
74
|
+
const status = await git.status();
|
|
75
|
+
const log = await git.log({ maxCount: 20 });
|
|
76
|
+
const mode = await detectWorkMode(status);
|
|
77
|
+
// Analyze recent activity patterns
|
|
78
|
+
const recentCommits = [...log.all].slice(0, 10);
|
|
79
|
+
const uncommittedChanges = status.modified.length + status.not_added.length;
|
|
80
|
+
// Detect work patterns
|
|
81
|
+
const workPattern = analyzeWorkPattern(recentCommits, status);
|
|
82
|
+
const failedAttempts = countFailedAttempts(recentCommits);
|
|
83
|
+
const contextSaturation = estimateContextSaturation(ginkoDir);
|
|
84
|
+
// Get last activity from session
|
|
85
|
+
let lastActivity = 'Starting fresh';
|
|
86
|
+
try {
|
|
87
|
+
const sessionFiles = await fs.readdir(path.join(ginkoDir, 'sessions')).catch(() => []);
|
|
88
|
+
for (const dir of sessionFiles) {
|
|
89
|
+
const currentPath = path.join(ginkoDir, 'sessions', dir, 'current.md');
|
|
90
|
+
if (await fs.pathExists(currentPath)) {
|
|
91
|
+
const content = await fs.readFile(currentPath, 'utf8');
|
|
92
|
+
const match = content.match(/## 📊 Session Summary\n([^\n]+)/);
|
|
93
|
+
if (match)
|
|
94
|
+
lastActivity = match[1];
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch { }
|
|
100
|
+
return {
|
|
101
|
+
mode,
|
|
102
|
+
recentCommits,
|
|
103
|
+
uncommittedChanges,
|
|
104
|
+
lastActivity,
|
|
105
|
+
workPattern,
|
|
106
|
+
contextSaturation,
|
|
107
|
+
failedAttempts
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Generate situationally-aware response based on concern and context
|
|
112
|
+
*/
|
|
113
|
+
function generateAwareResponse(concern, context) {
|
|
114
|
+
const concernLower = concern.toLowerCase();
|
|
115
|
+
// Debugging situations
|
|
116
|
+
if (context.mode === 'Debugging' || concernLower.includes('error') || concernLower.includes('bug')) {
|
|
117
|
+
if (context.failedAttempts >= 3) {
|
|
118
|
+
return {
|
|
119
|
+
primary: 'We\'ve been at this for a while. Maybe we should try a different angle?',
|
|
120
|
+
options: [
|
|
121
|
+
'Step back and re-read the error message carefully',
|
|
122
|
+
'Add some debug logging to understand the flow',
|
|
123
|
+
'Take a 5-minute break and come back fresh',
|
|
124
|
+
'Mark as BUG and move to something else'
|
|
125
|
+
],
|
|
126
|
+
awareness: `${context.failedAttempts} similar attempts in recent commits`
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (concernLower.includes('red') || concernLower.includes('error message')) {
|
|
130
|
+
return {
|
|
131
|
+
primary: 'I see the error too. Let\'s think about this systematically.',
|
|
132
|
+
options: [
|
|
133
|
+
'Read the full error stack',
|
|
134
|
+
'Check if we introduced this recently',
|
|
135
|
+
'Look for similar patterns we\'ve fixed before'
|
|
136
|
+
],
|
|
137
|
+
awareness: 'Error detection in output'
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
primary: 'Debugging can be frustrating. What specifically isn\'t working as expected?',
|
|
142
|
+
options: [],
|
|
143
|
+
awareness: 'Debugging mode active'
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
// Lost/confused situations
|
|
147
|
+
if (concernLower.includes('lost') || concernLower.includes('confused') || concernLower.includes('what')) {
|
|
148
|
+
if (context.contextSaturation > 0.7) {
|
|
149
|
+
return {
|
|
150
|
+
primary: 'Our context might be getting cluttered. Should we clear our heads?',
|
|
151
|
+
options: [
|
|
152
|
+
'Create a quick handoff to summarize where we are',
|
|
153
|
+
'Run `ginko compact` to reduce context',
|
|
154
|
+
'Just tell me the original goal again'
|
|
155
|
+
],
|
|
156
|
+
awareness: 'High context saturation detected'
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
primary: `Let\'s recenter. We were: "${context.lastActivity}". Still the goal?`,
|
|
161
|
+
options: [
|
|
162
|
+
'Yes, let\'s refocus on that',
|
|
163
|
+
'Actually, priorities have changed',
|
|
164
|
+
'I need to rethink the approach'
|
|
165
|
+
],
|
|
166
|
+
awareness: 'Checking alignment with original goal'
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// Complexity/overthinking situations
|
|
170
|
+
if (concernLower.includes('complex') || concernLower.includes('complicated') || concernLower.includes('over')) {
|
|
171
|
+
return {
|
|
172
|
+
primary: 'You\'re right to pause. Complexity is a smell.',
|
|
173
|
+
options: [
|
|
174
|
+
'What\'s the simplest thing that could work?',
|
|
175
|
+
'Can we break this into smaller steps?',
|
|
176
|
+
'Should we ship what works and iterate?'
|
|
177
|
+
],
|
|
178
|
+
awareness: `${context.uncommittedChanges} uncommitted changes might indicate overthinking`
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
// Progress check situations
|
|
182
|
+
if (concernLower.includes('progress') || concernLower.includes('right') || concernLower.includes('should')) {
|
|
183
|
+
if (context.workPattern === 'steady') {
|
|
184
|
+
return {
|
|
185
|
+
primary: 'We\'re making steady progress. Trust the process.',
|
|
186
|
+
options: [],
|
|
187
|
+
awareness: 'Consistent commit pattern detected'
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
primary: 'Let me check... ' + (context.failedAttempts > 1 ?
|
|
192
|
+
'We might be spinning. Time to try something different?' :
|
|
193
|
+
'We\'re on track. What\'s making you uncertain?'),
|
|
194
|
+
options: [],
|
|
195
|
+
awareness: `Work pattern: ${context.workPattern}`
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
// Stuck/blocked situations
|
|
199
|
+
if (concernLower.includes('stuck') || concernLower.includes('blocked')) {
|
|
200
|
+
return {
|
|
201
|
+
primary: 'Being stuck is information. What\'s the specific blocker?',
|
|
202
|
+
options: [
|
|
203
|
+
'Missing information or documentation',
|
|
204
|
+
'Technical issue I can\'t resolve',
|
|
205
|
+
'Unclear requirements',
|
|
206
|
+
'Need to wait for something external'
|
|
207
|
+
],
|
|
208
|
+
awareness: 'Detecting blockage pattern'
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
// Time pressure situations
|
|
212
|
+
if (concernLower.includes('taking too long') || concernLower.includes('slow')) {
|
|
213
|
+
return {
|
|
214
|
+
primary: 'Progress over perfection. What\'s the MVP here?',
|
|
215
|
+
options: [
|
|
216
|
+
'Ship what works, improve later',
|
|
217
|
+
'Cut scope to essential features',
|
|
218
|
+
'This actually needs the full time'
|
|
219
|
+
],
|
|
220
|
+
awareness: 'Time concern detected'
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
// Default: open-ended support
|
|
224
|
+
return {
|
|
225
|
+
primary: 'I\'m listening. What\'s on your mind?',
|
|
226
|
+
options: [],
|
|
227
|
+
awareness: 'Open conversation mode'
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Assess situation when no specific concern is provided
|
|
232
|
+
*/
|
|
233
|
+
function assessCurrentSituation(context) {
|
|
234
|
+
// Multiple failed attempts
|
|
235
|
+
if (context.failedAttempts >= 3) {
|
|
236
|
+
return {
|
|
237
|
+
message: 'I notice we\'ve had a few failed attempts. Everything okay?',
|
|
238
|
+
suggestion: 'Sometimes a fresh perspective helps.'
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
// Many uncommitted changes
|
|
242
|
+
if (context.uncommittedChanges > 15) {
|
|
243
|
+
return {
|
|
244
|
+
message: 'That\'s a lot of uncommitted changes. Feeling overwhelmed?',
|
|
245
|
+
suggestion: 'Maybe we should commit what works and continue?'
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
// High context saturation
|
|
249
|
+
if (context.contextSaturation > 0.8) {
|
|
250
|
+
return {
|
|
251
|
+
message: 'Our context is getting pretty full. Still focused?',
|
|
252
|
+
suggestion: 'Consider `ginko compact` if things feel cluttered.'
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
// Debugging for a while
|
|
256
|
+
if (context.mode === 'Debugging' && context.workPattern === 'thrashing') {
|
|
257
|
+
return {
|
|
258
|
+
message: 'We\'ve been debugging for a bit. Need a different approach?',
|
|
259
|
+
suggestion: 'Sometimes stepping away briefly helps.'
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
// Everything seems fine
|
|
263
|
+
return {
|
|
264
|
+
message: 'Just checking in. How are things going?',
|
|
265
|
+
suggestion: null
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Analyze work patterns from commits and status
|
|
270
|
+
*/
|
|
271
|
+
function analyzeWorkPattern(commits, status) {
|
|
272
|
+
if (commits.length < 3)
|
|
273
|
+
return 'just-started';
|
|
274
|
+
const messages = commits.map(c => c.message.toLowerCase());
|
|
275
|
+
const hasFixCommits = messages.filter(m => m.includes('fix')).length;
|
|
276
|
+
const hasWIPCommits = messages.filter(m => m.includes('wip') || m.includes('temp')).length;
|
|
277
|
+
// Detect thrashing (repeated attempts at same thing)
|
|
278
|
+
const similarMessages = messages.filter((m, i) => messages.slice(i + 1).some(other => similar(m, other))).length;
|
|
279
|
+
if (similarMessages > 3)
|
|
280
|
+
return 'thrashing';
|
|
281
|
+
if (hasFixCommits > commits.length / 2)
|
|
282
|
+
return 'debugging';
|
|
283
|
+
if (hasWIPCommits > 2)
|
|
284
|
+
return 'exploring';
|
|
285
|
+
if (status.modified.length > 10)
|
|
286
|
+
return 'heavy-changes';
|
|
287
|
+
return 'steady';
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Count failed attempts from commit patterns
|
|
291
|
+
*/
|
|
292
|
+
function countFailedAttempts(commits) {
|
|
293
|
+
const messages = commits.map(c => c.message.toLowerCase());
|
|
294
|
+
let count = 0;
|
|
295
|
+
for (const msg of messages) {
|
|
296
|
+
if (msg.includes('fix') || msg.includes('retry') || msg.includes('attempt') ||
|
|
297
|
+
msg.includes('revert') || msg.includes('still') || msg.includes('again')) {
|
|
298
|
+
count++;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return count;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Estimate context saturation (0-1)
|
|
305
|
+
*/
|
|
306
|
+
function estimateContextSaturation(ginkoDir) {
|
|
307
|
+
// This is a simplified estimation
|
|
308
|
+
// In reality, would check context file sizes, module count, etc.
|
|
309
|
+
try {
|
|
310
|
+
const contextPath = path.join(ginkoDir, 'context');
|
|
311
|
+
if (!fs.pathExistsSync(contextPath))
|
|
312
|
+
return 0;
|
|
313
|
+
const modules = fs.readdirSync(path.join(contextPath, 'modules')).length;
|
|
314
|
+
// Assume saturation increases with module count
|
|
315
|
+
return Math.min(modules / 20, 1);
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
return 0.5; // Default middle ground
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Simple string similarity check
|
|
323
|
+
*/
|
|
324
|
+
function similar(a, b) {
|
|
325
|
+
const wordsA = a.split(/\s+/);
|
|
326
|
+
const wordsB = b.split(/\s+/);
|
|
327
|
+
const common = wordsA.filter(w => wordsB.includes(w)).length;
|
|
328
|
+
return common > Math.min(wordsA.length, wordsB.length) * 0.5;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Log vibecheck for pattern analysis
|
|
332
|
+
*/
|
|
333
|
+
async function logVibecheck(ginkoDir, concern, context) {
|
|
334
|
+
try {
|
|
335
|
+
const logFile = path.join(ginkoDir, 'sessions', 'vibechecks.log');
|
|
336
|
+
const entry = {
|
|
337
|
+
timestamp: new Date().toISOString(),
|
|
338
|
+
concern,
|
|
339
|
+
mode: context.mode,
|
|
340
|
+
pattern: context.workPattern,
|
|
341
|
+
failedAttempts: context.failedAttempts
|
|
342
|
+
};
|
|
343
|
+
await fs.appendFile(logFile, JSON.stringify(entry) + '\n');
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
// Silent fail for logging
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
export { vibecheckAwareCommand as vibecheckCommand };
|
|
350
|
+
//# sourceMappingURL=vibecheck-aware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibecheck-aware.js","sourceRoot":"","sources":["../../src/commands/vibecheck-aware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-08-28
|
|
5
|
+
* @tags: [cli, vibecheck, conversation]
|
|
6
|
+
* @priority: critical
|
|
7
|
+
* @complexity: low
|
|
8
|
+
* @dependencies: [chalk, fs-extra, simple-git]
|
|
9
|
+
*/
|
|
10
|
+
interface VibecheckOptions {
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Vibecheck - A simple pause moment that provides context for natural conversation
|
|
15
|
+
*
|
|
16
|
+
* Philosophy: The vibecheck is not a tool that generates output, but rather
|
|
17
|
+
* a moment that provides context. The AI should naturally respond to the concern
|
|
18
|
+
* based on awareness of what's been happening.
|
|
19
|
+
*/
|
|
20
|
+
export declare function vibecheckCommand(concern?: string, options?: VibecheckOptions): Promise<void>;
|
|
21
|
+
export default vibecheckCommand;
|
|
22
|
+
//# sourceMappingURL=vibecheck-final.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibecheck-final.d.ts","sourceRoot":"","sources":["../../src/commands/vibecheck-final.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,iBA+DtF;AA8DD,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-08-28
|
|
5
|
+
* @tags: [cli, vibecheck, conversation]
|
|
6
|
+
* @priority: critical
|
|
7
|
+
* @complexity: low
|
|
8
|
+
* @dependencies: [chalk, fs-extra, simple-git]
|
|
9
|
+
*/
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import fs from 'fs-extra';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import simpleGit from 'simple-git';
|
|
14
|
+
import { getGinkoDir, detectWorkMode } from '../utils/helpers.js';
|
|
15
|
+
/**
|
|
16
|
+
* Vibecheck - A simple pause moment that provides context for natural conversation
|
|
17
|
+
*
|
|
18
|
+
* Philosophy: The vibecheck is not a tool that generates output, but rather
|
|
19
|
+
* a moment that provides context. The AI should naturally respond to the concern
|
|
20
|
+
* based on awareness of what's been happening.
|
|
21
|
+
*/
|
|
22
|
+
export async function vibecheckCommand(concern, options = {}) {
|
|
23
|
+
try {
|
|
24
|
+
const git = simpleGit();
|
|
25
|
+
const ginkoDir = await getGinkoDir();
|
|
26
|
+
const status = await git.status();
|
|
27
|
+
console.log(chalk.yellow('\n🎯 Vibecheck\n'));
|
|
28
|
+
// If no concern provided, just show current state
|
|
29
|
+
if (!concern) {
|
|
30
|
+
const mode = await detectWorkMode(status);
|
|
31
|
+
console.log(`Currently ${chalk.cyan(mode.toLowerCase())} on branch ${chalk.cyan(status.current)}`);
|
|
32
|
+
console.log(chalk.dim(`${status.modified.length} files modified, ${status.staged.length} staged`));
|
|
33
|
+
// Simple prompt
|
|
34
|
+
console.log();
|
|
35
|
+
console.log('How\'s it going?');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Show the concern
|
|
39
|
+
console.log(concern);
|
|
40
|
+
console.log(); // Add spacing for natural pause
|
|
41
|
+
// In verbose mode, show additional context
|
|
42
|
+
if (options.verbose) {
|
|
43
|
+
console.log();
|
|
44
|
+
console.log(chalk.dim('Current context:'));
|
|
45
|
+
const log = await git.log({ maxCount: 5 });
|
|
46
|
+
const mode = await detectWorkMode(status);
|
|
47
|
+
// Recent activity
|
|
48
|
+
console.log(chalk.dim(` • Mode: ${mode}`));
|
|
49
|
+
console.log(chalk.dim(` • Branch: ${status.current}`));
|
|
50
|
+
console.log(chalk.dim(` • Changes: ${status.modified.length} modified, ${status.staged.length} staged`));
|
|
51
|
+
// Recent commits hint at what we've been doing
|
|
52
|
+
if (log.all.length > 0) {
|
|
53
|
+
const recentWork = analyzeRecentWork([...log.all]);
|
|
54
|
+
if (recentWork) {
|
|
55
|
+
console.log(chalk.dim(` • Recent focus: ${recentWork}`));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Check for patterns that might be relevant
|
|
59
|
+
const patterns = detectPatterns([...log.all], status);
|
|
60
|
+
if (patterns.length > 0) {
|
|
61
|
+
console.log(chalk.dim(` • Patterns: ${patterns.join(', ')}`));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Log the vibecheck
|
|
65
|
+
await logVibecheck(ginkoDir, concern);
|
|
66
|
+
// That's it - clean output, no indicators
|
|
67
|
+
// The empty line after the concern is enough spacing for natural conversation
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Even errors should be calm
|
|
71
|
+
console.log(chalk.yellow('\n🎯 Vibecheck\n'));
|
|
72
|
+
console.log('Let\'s pause for a moment.');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Analyze recent commits to understand what we've been working on
|
|
77
|
+
*/
|
|
78
|
+
function analyzeRecentWork(commits) {
|
|
79
|
+
const messages = commits.map(c => c.message.toLowerCase());
|
|
80
|
+
// Look for patterns
|
|
81
|
+
const fixing = messages.filter(m => m.includes('fix')).length;
|
|
82
|
+
const features = messages.filter(m => m.includes('feat') || m.includes('add')).length;
|
|
83
|
+
const refactoring = messages.filter(m => m.includes('refactor')).length;
|
|
84
|
+
if (fixing >= 2)
|
|
85
|
+
return 'Bug fixing';
|
|
86
|
+
if (features >= 2)
|
|
87
|
+
return 'Feature development';
|
|
88
|
+
if (refactoring >= 1)
|
|
89
|
+
return 'Refactoring';
|
|
90
|
+
// Default to first commit message topic
|
|
91
|
+
if (messages.length > 0) {
|
|
92
|
+
const firstMsg = messages[0].split(':')[0].split(' ')[0];
|
|
93
|
+
return firstMsg.charAt(0).toUpperCase() + firstMsg.slice(1);
|
|
94
|
+
}
|
|
95
|
+
return '';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Detect patterns that might indicate issues
|
|
99
|
+
*/
|
|
100
|
+
function detectPatterns(commits, status) {
|
|
101
|
+
const patterns = [];
|
|
102
|
+
const messages = commits.map(c => c.message.toLowerCase());
|
|
103
|
+
// Multiple fix attempts might indicate struggling
|
|
104
|
+
const fixes = messages.filter(m => m.includes('fix')).length;
|
|
105
|
+
if (fixes >= 3)
|
|
106
|
+
patterns.push('multiple fix attempts');
|
|
107
|
+
// Many uncommitted changes might indicate uncertainty
|
|
108
|
+
if (status.modified.length > 10)
|
|
109
|
+
patterns.push('many uncommitted changes');
|
|
110
|
+
// WIP commits indicate exploration
|
|
111
|
+
if (messages.some(m => m.includes('wip')))
|
|
112
|
+
patterns.push('work in progress');
|
|
113
|
+
// Reverts indicate backtracking
|
|
114
|
+
if (messages.some(m => m.includes('revert')))
|
|
115
|
+
patterns.push('backtracking');
|
|
116
|
+
return patterns;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Log vibecheck for future pattern analysis
|
|
120
|
+
*/
|
|
121
|
+
async function logVibecheck(ginkoDir, concern) {
|
|
122
|
+
try {
|
|
123
|
+
const logFile = path.join(ginkoDir, 'sessions', 'vibechecks.log');
|
|
124
|
+
const entry = `${new Date().toISOString()} | ${concern}\n`;
|
|
125
|
+
await fs.appendFile(logFile, entry);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Silent fail - logging is not critical
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export default vibecheckCommand;
|
|
132
|
+
//# sourceMappingURL=vibecheck-final.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibecheck-final.js","sourceRoot":"","sources":["../../src/commands/vibecheck-final.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-08-28
|
|
5
|
+
* @tags: [cli, vibecheck, natural-conversation]
|
|
6
|
+
* @priority: critical
|
|
7
|
+
* @complexity: low
|
|
8
|
+
* @dependencies: [chalk, fs-extra, simple-git]
|
|
9
|
+
*/
|
|
10
|
+
interface VibecheckOptions {
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Natural vibecheck - just gather context and let the AI respond naturally
|
|
15
|
+
*/
|
|
16
|
+
export declare function vibecheckNaturalCommand(concern?: string, options?: VibecheckOptions): Promise<void>;
|
|
17
|
+
export { vibecheckNaturalCommand as vibecheckCommand };
|
|
18
|
+
//# sourceMappingURL=vibecheck-natural.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibecheck-natural.d.ts","sourceRoot":"","sources":["../../src/commands/vibecheck-natural.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,iBAmD7F;AA6CD,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-08-28
|
|
5
|
+
* @tags: [cli, vibecheck, natural-conversation]
|
|
6
|
+
* @priority: critical
|
|
7
|
+
* @complexity: low
|
|
8
|
+
* @dependencies: [chalk, fs-extra, simple-git]
|
|
9
|
+
*/
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import fs from 'fs-extra';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import simpleGit from 'simple-git';
|
|
14
|
+
import { getGinkoDir, detectWorkMode } from '../utils/helpers.js';
|
|
15
|
+
/**
|
|
16
|
+
* Natural vibecheck - just gather context and let the AI respond naturally
|
|
17
|
+
*/
|
|
18
|
+
export async function vibecheckNaturalCommand(concern, options = {}) {
|
|
19
|
+
try {
|
|
20
|
+
const git = simpleGit();
|
|
21
|
+
const ginkoDir = await getGinkoDir();
|
|
22
|
+
const status = await git.status();
|
|
23
|
+
const log = await git.log({ maxCount: 10 });
|
|
24
|
+
// If no concern, just show a simple status
|
|
25
|
+
if (!concern) {
|
|
26
|
+
const mode = await detectWorkMode(status);
|
|
27
|
+
console.log(chalk.yellow('\n🎯 Vibecheck\n'));
|
|
28
|
+
console.log(`Currently ${chalk.cyan(mode.toLowerCase())} on ${chalk.cyan(status.current)}`);
|
|
29
|
+
console.log(`${chalk.dim(status.modified.length + ' modified files')}`);
|
|
30
|
+
console.log();
|
|
31
|
+
console.log(chalk.dim('How are things going?'));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Gather context for the AI to understand the situation
|
|
35
|
+
const context = await gatherContext(git, ginkoDir, status, log);
|
|
36
|
+
// Output for AI to process naturally
|
|
37
|
+
console.log(chalk.yellow('\n🎯 Vibecheck\n'));
|
|
38
|
+
console.log(concern);
|
|
39
|
+
console.log();
|
|
40
|
+
// Provide context as a hint to the AI (exit code 48 for natural vibecheck)
|
|
41
|
+
console.log(chalk.dim('---'));
|
|
42
|
+
console.log(chalk.dim('Context for AI response:'));
|
|
43
|
+
console.log(chalk.dim(JSON.stringify(context, null, 2)));
|
|
44
|
+
console.log(chalk.dim('---'));
|
|
45
|
+
console.log(chalk.dim(`
|
|
46
|
+
Respond naturally to the vibecheck concern above. Be a thoughtful pair programmer:
|
|
47
|
+
- Consider what we've been working on (see context)
|
|
48
|
+
- Acknowledge the concern directly and conversationally
|
|
49
|
+
- Be concise - 1-3 sentences usually
|
|
50
|
+
- Offer actionable next steps if appropriate
|
|
51
|
+
- Keep the tone calm and supportive
|
|
52
|
+
- Goal is to help return to flow state
|
|
53
|
+
|
|
54
|
+
Don't use templates or formal structure. Just respond naturally.
|
|
55
|
+
`));
|
|
56
|
+
// Exit with code 0 to avoid stderr interpretation
|
|
57
|
+
// The vibecheck prompt is expected behavior, not an error
|
|
58
|
+
process.exit(0);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.log(chalk.yellow('\n🎯 Vibecheck\n'));
|
|
62
|
+
console.log(chalk.dim('Something went wrong, but let\'s take a moment anyway.'));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Gather relevant context for AI awareness
|
|
67
|
+
*/
|
|
68
|
+
async function gatherContext(git, ginkoDir, status, log) {
|
|
69
|
+
const mode = await detectWorkMode(status);
|
|
70
|
+
// Count potential issues
|
|
71
|
+
const recentMessages = log.all.map((c) => c.message.toLowerCase());
|
|
72
|
+
const fixAttempts = recentMessages.filter((m) => m.includes('fix') || m.includes('debug') || m.includes('attempt')).length;
|
|
73
|
+
// Get last session activity
|
|
74
|
+
let lastActivity = '';
|
|
75
|
+
try {
|
|
76
|
+
const sessionDirs = await fs.readdir(path.join(ginkoDir, 'sessions')).catch(() => []);
|
|
77
|
+
for (const dir of sessionDirs) {
|
|
78
|
+
const currentPath = path.join(ginkoDir, 'sessions', dir, 'current.md');
|
|
79
|
+
if (await fs.pathExists(currentPath)) {
|
|
80
|
+
const content = await fs.readFile(currentPath, 'utf8');
|
|
81
|
+
const match = content.match(/## 📊 Session Summary\n([^\n]+)/);
|
|
82
|
+
if (match)
|
|
83
|
+
lastActivity = match[1];
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch { }
|
|
89
|
+
return {
|
|
90
|
+
currentMode: mode,
|
|
91
|
+
branch: status.current,
|
|
92
|
+
modifiedFiles: status.modified.length,
|
|
93
|
+
uncommittedFiles: status.not_added.length,
|
|
94
|
+
recentCommitCount: log.all.length,
|
|
95
|
+
fixAttempts,
|
|
96
|
+
lastActivity: lastActivity || 'No previous activity found',
|
|
97
|
+
hasConflicts: status.conflicted.length > 0,
|
|
98
|
+
lastCommitMessage: log.latest?.message || '',
|
|
99
|
+
timeSinceLastCommit: log.latest ?
|
|
100
|
+
Math.round((Date.now() - new Date(log.latest.date).getTime()) / 1000 / 60) + ' minutes ago' :
|
|
101
|
+
'No commits yet'
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export { vibecheckNaturalCommand as vibecheckCommand };
|
|
105
|
+
//# sourceMappingURL=vibecheck-natural.js.map
|