@ginkoai/cli 1.0.0 → 1.4.1
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/README.md +19 -0
- package/dist/analysis/project-analyzer.d.ts.map +1 -1
- package/dist/analysis/project-analyzer.js +68 -4
- package/dist/analysis/project-analyzer.js.map +1 -1
- package/dist/commands/architecture/architecture-pipeline-enhanced.d.ts.map +1 -1
- package/dist/commands/architecture/architecture-pipeline-enhanced.js +10 -6
- package/dist/commands/architecture/architecture-pipeline-enhanced.js.map +1 -1
- package/dist/commands/backlog/base.d.ts.map +1 -1
- package/dist/commands/backlog/base.js +3 -0
- package/dist/commands/backlog/base.js.map +1 -1
- package/dist/commands/backlog/create.js +20 -20
- package/dist/commands/backlog/create.js.map +1 -1
- package/dist/commands/backlog/index.d.ts.map +1 -1
- package/dist/commands/backlog/index.js +6 -1
- package/dist/commands/backlog/index.js.map +1 -1
- package/dist/commands/changelog/changelog-reflection.d.ts.map +1 -1
- package/dist/commands/changelog/changelog-reflection.js +7 -3
- package/dist/commands/changelog/changelog-reflection.js.map +1 -1
- package/dist/commands/charter.d.ts +28 -0
- package/dist/commands/charter.d.ts.map +1 -0
- package/dist/commands/charter.js +434 -0
- package/dist/commands/charter.js.map +1 -0
- package/dist/commands/documentation/documentation-pipeline.d.ts.map +1 -1
- package/dist/commands/documentation/documentation-pipeline.js +15 -7
- package/dist/commands/documentation/documentation-pipeline.js.map +1 -1
- package/dist/commands/git/git-pipeline.d.ts.map +1 -1
- package/dist/commands/git/git-pipeline.js +3 -2
- package/dist/commands/git/git-pipeline.js.map +1 -1
- package/dist/commands/graph/api-client.d.ts +212 -0
- package/dist/commands/graph/api-client.d.ts.map +1 -0
- package/dist/commands/graph/api-client.js +143 -0
- package/dist/commands/graph/api-client.js.map +1 -0
- package/dist/commands/graph/config.d.ts +82 -0
- package/dist/commands/graph/config.d.ts.map +1 -0
- package/dist/commands/graph/config.js +113 -0
- package/dist/commands/graph/config.js.map +1 -0
- package/dist/commands/graph/explore.d.ts +19 -0
- package/dist/commands/graph/explore.d.ts.map +1 -0
- package/dist/commands/graph/explore.js +117 -0
- package/dist/commands/graph/explore.js.map +1 -0
- package/dist/commands/graph/index.d.ts +17 -0
- package/dist/commands/graph/index.d.ts.map +1 -0
- package/dist/commands/graph/index.js +104 -0
- package/dist/commands/graph/index.js.map +1 -0
- package/dist/commands/graph/init.d.ts +21 -0
- package/dist/commands/graph/init.d.ts.map +1 -0
- package/dist/commands/graph/init.js +173 -0
- package/dist/commands/graph/init.js.map +1 -0
- package/dist/commands/graph/load.d.ts +21 -0
- package/dist/commands/graph/load.d.ts.map +1 -0
- package/dist/commands/graph/load.js +224 -0
- package/dist/commands/graph/load.js.map +1 -0
- package/dist/commands/graph/query.d.ts +23 -0
- package/dist/commands/graph/query.d.ts.map +1 -0
- package/dist/commands/graph/query.js +145 -0
- package/dist/commands/graph/query.js.map +1 -0
- package/dist/commands/graph/status.d.ts +15 -0
- package/dist/commands/graph/status.d.ts.map +1 -0
- package/dist/commands/graph/status.js +88 -0
- package/dist/commands/graph/status.js.map +1 -0
- package/dist/commands/handoff.d.ts +14 -5
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +84 -142
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +88 -41
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/knowledge/create.d.ts +24 -0
- package/dist/commands/knowledge/create.d.ts.map +1 -0
- package/dist/commands/knowledge/create.js +180 -0
- package/dist/commands/knowledge/create.js.map +1 -0
- package/dist/commands/knowledge/graph.d.ts +21 -0
- package/dist/commands/knowledge/graph.d.ts.map +1 -0
- package/dist/commands/knowledge/graph.js +199 -0
- package/dist/commands/knowledge/graph.js.map +1 -0
- package/dist/commands/knowledge/index.d.ts +25 -0
- package/dist/commands/knowledge/index.d.ts.map +1 -0
- package/dist/commands/knowledge/index.js +121 -0
- package/dist/commands/knowledge/index.js.map +1 -0
- package/dist/commands/knowledge/search.d.ts +23 -0
- package/dist/commands/knowledge/search.d.ts.map +1 -0
- package/dist/commands/knowledge/search.js +157 -0
- package/dist/commands/knowledge/search.js.map +1 -0
- package/dist/commands/knowledge/sync.d.ts +28 -0
- package/dist/commands/knowledge/sync.d.ts.map +1 -0
- package/dist/commands/knowledge/sync.js +251 -0
- package/dist/commands/knowledge/sync.js.map +1 -0
- package/dist/commands/log.d.ts +32 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +632 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/login.d.ts +27 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +177 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +15 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +31 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/project/create.d.ts +22 -0
- package/dist/commands/project/create.d.ts.map +1 -0
- package/dist/commands/project/create.js +69 -0
- package/dist/commands/project/create.js.map +1 -0
- package/dist/commands/project/delete.d.ts +19 -0
- package/dist/commands/project/delete.d.ts.map +1 -0
- package/dist/commands/project/delete.js +73 -0
- package/dist/commands/project/delete.js.map +1 -0
- package/dist/commands/project/index.d.ts +22 -0
- package/dist/commands/project/index.d.ts.map +1 -0
- package/dist/commands/project/index.js +134 -0
- package/dist/commands/project/index.js.map +1 -0
- package/dist/commands/project/info.d.ts +15 -0
- package/dist/commands/project/info.d.ts.map +1 -0
- package/dist/commands/project/info.js +92 -0
- package/dist/commands/project/info.js.map +1 -0
- package/dist/commands/project/list.d.ts +20 -0
- package/dist/commands/project/list.d.ts.map +1 -0
- package/dist/commands/project/list.js +82 -0
- package/dist/commands/project/list.js.map +1 -0
- package/dist/commands/project/members.d.ts +27 -0
- package/dist/commands/project/members.d.ts.map +1 -0
- package/dist/commands/project/members.js +140 -0
- package/dist/commands/project/members.js.map +1 -0
- package/dist/commands/project/update.d.ts +24 -0
- package/dist/commands/project/update.d.ts.map +1 -0
- package/dist/commands/project/update.js +83 -0
- package/dist/commands/project/update.js.map +1 -0
- package/dist/commands/reflect.js +0 -3
- package/dist/commands/reflect.js.map +1 -1
- package/dist/commands/ship.d.ts +3 -1
- package/dist/commands/ship.d.ts.map +1 -1
- package/dist/commands/ship.js +100 -9
- package/dist/commands/ship.js.map +1 -1
- package/dist/commands/start/index.d.ts.map +1 -1
- package/dist/commands/start/index.js +5 -3
- package/dist/commands/start/index.js.map +1 -1
- package/dist/commands/start/start-reflection.d.ts +2 -1
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +265 -43
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +41 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/team/create.d.ts +15 -0
- package/dist/commands/team/create.d.ts.map +1 -0
- package/dist/commands/team/create.js +48 -0
- package/dist/commands/team/create.js.map +1 -0
- package/dist/commands/team/index.d.ts +22 -0
- package/dist/commands/team/index.d.ts.map +1 -0
- package/dist/commands/team/index.js +109 -0
- package/dist/commands/team/index.js.map +1 -0
- package/dist/commands/team/list.d.ts +15 -0
- package/dist/commands/team/list.d.ts.map +1 -0
- package/dist/commands/team/list.js +67 -0
- package/dist/commands/team/list.js.map +1 -0
- package/dist/commands/team/members.d.ts +27 -0
- package/dist/commands/team/members.d.ts.map +1 -0
- package/dist/commands/team/members.js +135 -0
- package/dist/commands/team/members.js.map +1 -0
- package/dist/commands/team/projects.d.ts +19 -0
- package/dist/commands/team/projects.d.ts.map +1 -0
- package/dist/commands/team/projects.js +107 -0
- package/dist/commands/team/projects.js.map +1 -0
- package/dist/commands/team.d.ts +22 -0
- package/dist/commands/team.d.ts.map +1 -0
- package/dist/commands/team.js +238 -0
- package/dist/commands/team.js.map +1 -0
- package/dist/commands/testing/testing-pipeline-enhanced.d.ts.map +1 -1
- package/dist/commands/testing/testing-pipeline-enhanced.js +5 -3
- package/dist/commands/testing/testing-pipeline-enhanced.js.map +1 -1
- package/dist/commands/testing/testing-pipeline.d.ts.map +1 -1
- package/dist/commands/testing/testing-pipeline.js +5 -3
- package/dist/commands/testing/testing-pipeline.js.map +1 -1
- package/dist/commands/whoami.d.ts +15 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +38 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/core/reflection-pattern.d.ts +1 -1
- package/dist/core/reflection-pattern.d.ts.map +1 -1
- package/dist/core/reflection-pattern.js +2 -12
- package/dist/core/reflection-pattern.js.map +1 -1
- package/dist/core/session-log-manager.d.ts +44 -4
- package/dist/core/session-log-manager.d.ts.map +1 -1
- package/dist/core/session-log-manager.js +132 -31
- package/dist/core/session-log-manager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +116 -17
- package/dist/index.js.map +1 -1
- package/dist/lib/api/projects-client.d.ts +119 -0
- package/dist/lib/api/projects-client.d.ts.map +1 -0
- package/dist/lib/api/projects-client.js +125 -0
- package/dist/lib/api/projects-client.js.map +1 -0
- package/dist/lib/api/teams-client.d.ts +73 -0
- package/dist/lib/api/teams-client.d.ts.map +1 -0
- package/dist/lib/api/teams-client.js +68 -0
- package/dist/lib/api/teams-client.js.map +1 -0
- package/dist/lib/charter/charter-editor.d.ts +60 -0
- package/dist/lib/charter/charter-editor.d.ts.map +1 -0
- package/dist/lib/charter/charter-editor.js +559 -0
- package/dist/lib/charter/charter-editor.js.map +1 -0
- package/dist/lib/charter/charter-storage.d.ts +92 -0
- package/dist/lib/charter/charter-storage.d.ts.map +1 -0
- package/dist/lib/charter/charter-storage.js +501 -0
- package/dist/lib/charter/charter-storage.js.map +1 -0
- package/dist/lib/charter/charter-synthesizer.d.ts +94 -0
- package/dist/lib/charter/charter-synthesizer.d.ts.map +1 -0
- package/dist/lib/charter/charter-synthesizer.js +521 -0
- package/dist/lib/charter/charter-synthesizer.js.map +1 -0
- package/dist/lib/charter/charter-versioning.d.ts +57 -0
- package/dist/lib/charter/charter-versioning.d.ts.map +1 -0
- package/dist/lib/charter/charter-versioning.js +283 -0
- package/dist/lib/charter/charter-versioning.js.map +1 -0
- package/dist/lib/charter/confidence-scorer.d.ts +263 -0
- package/dist/lib/charter/confidence-scorer.d.ts.map +1 -0
- package/dist/lib/charter/confidence-scorer.js +737 -0
- package/dist/lib/charter/confidence-scorer.js.map +1 -0
- package/dist/lib/charter/conversation-context.d.ts +99 -0
- package/dist/lib/charter/conversation-context.d.ts.map +1 -0
- package/dist/lib/charter/conversation-context.js +297 -0
- package/dist/lib/charter/conversation-context.js.map +1 -0
- package/dist/lib/charter/conversation-facilitator.d.ts +117 -0
- package/dist/lib/charter/conversation-facilitator.d.ts.map +1 -0
- package/dist/lib/charter/conversation-facilitator.js +360 -0
- package/dist/lib/charter/conversation-facilitator.js.map +1 -0
- package/dist/lib/charter/question-templates.d.ts +82 -0
- package/dist/lib/charter/question-templates.d.ts.map +1 -0
- package/dist/lib/charter/question-templates.js +355 -0
- package/dist/lib/charter/question-templates.js.map +1 -0
- package/dist/lib/charter/signal-detection.d.ts +49 -0
- package/dist/lib/charter/signal-detection.d.ts.map +1 -0
- package/dist/lib/charter/signal-detection.js +338 -0
- package/dist/lib/charter/signal-detection.js.map +1 -0
- package/dist/lib/context-loader-events.d.ts +111 -0
- package/dist/lib/context-loader-events.d.ts.map +1 -0
- package/dist/lib/context-loader-events.js +475 -0
- package/dist/lib/context-loader-events.js.map +1 -0
- package/dist/lib/event-logger.d.ts +64 -0
- package/dist/lib/event-logger.d.ts.map +1 -0
- package/dist/lib/event-logger.js +197 -0
- package/dist/lib/event-logger.js.map +1 -0
- package/dist/lib/event-queue.d.ts +104 -0
- package/dist/lib/event-queue.d.ts.map +1 -0
- package/dist/lib/event-queue.js +274 -0
- package/dist/lib/event-queue.js.map +1 -0
- package/dist/lib/session-cursor.d.ts +80 -0
- package/dist/lib/session-cursor.d.ts.map +1 -0
- package/dist/lib/session-cursor.js +250 -0
- package/dist/lib/session-cursor.js.map +1 -0
- package/dist/lib/sync/conflict-detector.d.ts +41 -0
- package/dist/lib/sync/conflict-detector.d.ts.map +1 -0
- package/dist/lib/sync/conflict-detector.js +124 -0
- package/dist/lib/sync/conflict-detector.js.map +1 -0
- package/dist/lib/sync/logger.d.ts +89 -0
- package/dist/lib/sync/logger.d.ts.map +1 -0
- package/dist/lib/sync/logger.js +202 -0
- package/dist/lib/sync/logger.js.map +1 -0
- package/dist/lib/sync/parser.d.ts +32 -0
- package/dist/lib/sync/parser.d.ts.map +1 -0
- package/dist/lib/sync/parser.js +180 -0
- package/dist/lib/sync/parser.js.map +1 -0
- package/dist/lib/sync/scanner.d.ts +34 -0
- package/dist/lib/sync/scanner.d.ts.map +1 -0
- package/dist/lib/sync/scanner.js +97 -0
- package/dist/lib/sync/scanner.js.map +1 -0
- package/dist/lib/sync/uploader.d.ts +33 -0
- package/dist/lib/sync/uploader.d.ts.map +1 -0
- package/dist/lib/sync/uploader.js +188 -0
- package/dist/lib/sync/uploader.js.map +1 -0
- package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts +77 -0
- package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts.map +1 -0
- package/dist/lib/write-dispatcher/adapters/graph-adapter.js +178 -0
- package/dist/lib/write-dispatcher/adapters/graph-adapter.js.map +1 -0
- package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts +133 -0
- package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts.map +1 -0
- package/dist/lib/write-dispatcher/adapters/local-adapter.js +324 -0
- package/dist/lib/write-dispatcher/adapters/local-adapter.js.map +1 -0
- package/dist/lib/write-dispatcher/write-dispatcher.d.ts +151 -0
- package/dist/lib/write-dispatcher/write-dispatcher.d.ts.map +1 -0
- package/dist/lib/write-dispatcher/write-dispatcher.js +197 -0
- package/dist/lib/write-dispatcher/write-dispatcher.js.map +1 -0
- package/dist/types/charter.d.ts +330 -0
- package/dist/types/charter.d.ts.map +1 -0
- package/dist/types/charter.js +76 -0
- package/dist/types/charter.js.map +1 -0
- package/dist/types/config.d.ts +65 -17
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +50 -21
- package/dist/types/config.js.map +1 -1
- package/dist/utils/api-client.d.ts +36 -0
- package/dist/utils/api-client.d.ts.map +1 -0
- package/dist/utils/api-client.js +97 -0
- package/dist/utils/api-client.js.map +1 -0
- package/dist/utils/auth-storage.d.ts +56 -0
- package/dist/utils/auth-storage.d.ts.map +1 -0
- package/dist/utils/auth-storage.js +133 -0
- package/dist/utils/auth-storage.js.map +1 -0
- package/dist/utils/cleanup.d.ts +21 -0
- package/dist/utils/cleanup.d.ts.map +1 -0
- package/dist/utils/cleanup.js +122 -0
- package/dist/utils/cleanup.js.map +1 -0
- package/dist/utils/config-loader.d.ts +76 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +269 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/context-loader.d.ts +154 -0
- package/dist/utils/context-loader.d.ts.map +1 -0
- package/dist/utils/context-loader.js +411 -0
- package/dist/utils/context-loader.js.map +1 -0
- package/dist/utils/dispatcher-logger.d.ts +30 -0
- package/dist/utils/dispatcher-logger.d.ts.map +1 -0
- package/dist/utils/dispatcher-logger.js +128 -0
- package/dist/utils/dispatcher-logger.js.map +1 -0
- package/dist/utils/ginko-root.d.ts +3 -2
- package/dist/utils/ginko-root.d.ts.map +1 -1
- package/dist/utils/ginko-root.js +35 -2
- package/dist/utils/ginko-root.js.map +1 -1
- package/dist/utils/helpers.d.ts +1 -0
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +3 -0
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/log-quality.d.ts +55 -0
- package/dist/utils/log-quality.d.ts.map +1 -0
- package/dist/utils/log-quality.js +297 -0
- package/dist/utils/log-quality.js.map +1 -0
- package/dist/utils/reference-parser.d.ts +164 -0
- package/dist/utils/reference-parser.d.ts.map +1 -0
- package/dist/utils/reference-parser.js +363 -0
- package/dist/utils/reference-parser.js.map +1 -0
- package/dist/utils/synthesis.d.ts +180 -0
- package/dist/utils/synthesis.d.ts.map +1 -0
- package/dist/utils/synthesis.js +724 -0
- package/dist/utils/synthesis.js.map +1 -0
- package/dist/utils/team-awareness.d.ts +127 -0
- package/dist/utils/team-awareness.d.ts.map +1 -0
- package/dist/utils/team-awareness.js +385 -0
- package/dist/utils/team-awareness.js.map +1 -0
- package/package.json +6 -4
- package/dist/commands/handoff/handoff-reflection-pipeline.d.ts +0 -106
- package/dist/commands/handoff/handoff-reflection-pipeline.d.ts.map +0 -1
- package/dist/commands/handoff/handoff-reflection-pipeline.js +0 -534
- package/dist/commands/handoff/handoff-reflection-pipeline.js.map +0 -1
- package/dist/commands/handoff/handoff-save.d.ts +0 -16
- package/dist/commands/handoff/handoff-save.d.ts.map +0 -1
- package/dist/commands/handoff/handoff-save.js +0 -72
- package/dist/commands/handoff/handoff-save.js.map +0 -1
- package/dist/commands/handoff/index.d.ts +0 -19
- package/dist/commands/handoff/index.d.ts.map +0 -1
- package/dist/commands/handoff/index.js +0 -55
- package/dist/commands/handoff/index.js.map +0 -1
- package/dist/commands/handoff-ai-orig.d.ts +0 -27
- package/dist/commands/handoff-ai-orig.d.ts.map +0 -1
- package/dist/commands/handoff-ai-orig.js +0 -405
- package/dist/commands/handoff-ai-orig.js.map +0 -1
- package/dist/commands/handoff-ai.d.ts +0 -27
- package/dist/commands/handoff-ai.d.ts.map +0 -1
- package/dist/commands/handoff-ai.js +0 -405
- package/dist/commands/handoff-ai.js.map +0 -1
- package/dist/commands/handoff-enhanced-orig.d.ts +0 -25
- package/dist/commands/handoff-enhanced-orig.d.ts.map +0 -1
- package/dist/commands/handoff-enhanced-orig.js +0 -349
- package/dist/commands/handoff-enhanced-orig.js.map +0 -1
- package/dist/commands/handoff-enhanced.d.ts +0 -25
- package/dist/commands/handoff-enhanced.d.ts.map +0 -1
- package/dist/commands/handoff-enhanced.js +0 -349
- package/dist/commands/handoff-enhanced.js.map +0 -1
- package/dist/commands/handoff-orig.d.ts +0 -10
- package/dist/commands/handoff-orig.d.ts.map +0 -1
- package/dist/commands/handoff-orig.js +0 -167
- package/dist/commands/handoff-orig.js.map +0 -1
- package/dist/commands/init-enhanced.d.ts +0 -20
- package/dist/commands/init-enhanced.d.ts.map +0 -1
- package/dist/commands/init-enhanced.js +0 -430
- package/dist/commands/init-enhanced.js.map +0 -1
- package/dist/commands/prd/prd-reflection-enhanced.d.ts +0 -63
- package/dist/commands/prd/prd-reflection-enhanced.d.ts.map +0 -1
- package/dist/commands/prd/prd-reflection-enhanced.js +0 -310
- package/dist/commands/prd/prd-reflection-enhanced.js.map +0 -1
- package/dist/commands/start-enhanced.d.ts +0 -19
- package/dist/commands/start-enhanced.d.ts.map +0 -1
- package/dist/commands/start-enhanced.js +0 -434
- package/dist/commands/start-enhanced.js.map +0 -1
- package/dist/commands/start.d.ts +0 -10
- package/dist/commands/start.d.ts.map +0 -1
- package/dist/commands/start.js +0 -119
- package/dist/commands/start.js.map +0 -1
- package/dist/core/config/config-aware-reflection.d.ts +0 -37
- package/dist/core/config/config-aware-reflection.d.ts.map +0 -1
- package/dist/core/config/config-aware-reflection.js +0 -97
- package/dist/core/config/config-aware-reflection.js.map +0 -1
- package/dist/core/config/config-loader.d.ts +0 -154
- package/dist/core/config/config-loader.d.ts.map +0 -1
- package/dist/core/config/config-loader.js +0 -424
- package/dist/core/config/config-loader.js.map +0 -1
- package/dist/core/config/config-migrator.d.ts +0 -150
- package/dist/core/config/config-migrator.d.ts.map +0 -1
- package/dist/core/config/config-migrator.js +0 -423
- package/dist/core/config/config-migrator.js.map +0 -1
- package/dist/core/config/config-schema.d.ts +0 -276
- package/dist/core/config/config-schema.d.ts.map +0 -1
- package/dist/core/config/config-schema.js +0 -277
- package/dist/core/config/config-schema.js.map +0 -1
- package/dist/core/config/index.d.ts +0 -260
- package/dist/core/config/index.d.ts.map +0 -1
- package/dist/core/config/index.js +0 -283
- package/dist/core/config/index.js.map +0 -1
- package/dist/core/config/interactive-config.d.ts +0 -76
- package/dist/core/config/interactive-config.d.ts.map +0 -1
- package/dist/core/config/interactive-config.js +0 -315
- package/dist/core/config/interactive-config.js.map +0 -1
- package/dist/core/config/path-config.d.ts +0 -121
- package/dist/core/config/path-config.d.ts.map +0 -1
- package/dist/core/config/path-config.js +0 -210
- package/dist/core/config/path-config.js.map +0 -1
- package/dist/core/config/path-resolver.d.ts +0 -151
- package/dist/core/config/path-resolver.d.ts.map +0 -1
- package/dist/core/config/path-resolver.js +0 -343
- package/dist/core/config/path-resolver.js.map +0 -1
- package/dist/core/config/project-detector.d.ts +0 -58
- package/dist/core/config/project-detector.d.ts.map +0 -1
- package/dist/core/config/project-detector.js +0 -310
- package/dist/core/config/project-detector.js.map +0 -1
- package/dist/core/config-backup/config-aware-reflection.d.ts +0 -37
- package/dist/core/config-backup/config-aware-reflection.d.ts.map +0 -1
- package/dist/core/config-backup/config-aware-reflection.js +0 -97
- package/dist/core/config-backup/config-aware-reflection.js.map +0 -1
- package/dist/core/config-backup/config-loader.d.ts +0 -71
- package/dist/core/config-backup/config-loader.d.ts.map +0 -1
- package/dist/core/config-backup/config-loader.js +0 -288
- package/dist/core/config-backup/config-loader.js.map +0 -1
- package/dist/core/config-backup/interactive-config.d.ts +0 -76
- package/dist/core/config-backup/interactive-config.d.ts.map +0 -1
- package/dist/core/config-backup/interactive-config.js +0 -315
- package/dist/core/config-backup/interactive-config.js.map +0 -1
- package/dist/core/config-backup/path-config.d.ts +0 -121
- package/dist/core/config-backup/path-config.d.ts.map +0 -1
- package/dist/core/config-backup/path-config.js +0 -210
- package/dist/core/config-backup/path-config.js.map +0 -1
- package/dist/core/config-backup/project-detector.d.ts +0 -58
- package/dist/core/config-backup/project-detector.d.ts.map +0 -1
- package/dist/core/config-backup/project-detector.js +0 -310
- package/dist/core/config-backup/project-detector.js.map +0 -1
- package/dist/core/documents/document-manager.d.ts +0 -97
- package/dist/core/documents/document-manager.d.ts.map +0 -1
- package/dist/core/documents/document-manager.js +0 -441
- package/dist/core/documents/document-manager.js.map +0 -1
- package/dist/core/documents/document-migrator.d.ts +0 -138
- package/dist/core/documents/document-migrator.d.ts.map +0 -1
- package/dist/core/documents/document-migrator.js +0 -349
- package/dist/core/documents/document-migrator.js.map +0 -1
- package/dist/core/documents/document-namer.d.ts +0 -111
- package/dist/core/documents/document-namer.d.ts.map +0 -1
- package/dist/core/documents/document-namer.js +0 -225
- package/dist/core/documents/document-namer.js.map +0 -1
- package/dist/core/documents/examples.d.ts +0 -74
- package/dist/core/documents/examples.d.ts.map +0 -1
- package/dist/core/documents/examples.js +0 -273
- package/dist/core/documents/examples.js.map +0 -1
- package/dist/core/documents/file-system.d.ts +0 -93
- package/dist/core/documents/file-system.d.ts.map +0 -1
- package/dist/core/documents/file-system.js +0 -432
- package/dist/core/documents/file-system.js.map +0 -1
- package/dist/core/documents/index.d.ts +0 -97
- package/dist/core/documents/index.d.ts.map +0 -1
- package/dist/core/documents/index.js +0 -119
- package/dist/core/documents/index.js.map +0 -1
- package/dist/core/documents/markdown-processor.d.ts +0 -84
- package/dist/core/documents/markdown-processor.d.ts.map +0 -1
- package/dist/core/documents/markdown-processor.js +0 -302
- package/dist/core/documents/markdown-processor.js.map +0 -1
- package/dist/core/documents/sequence-manager.d.ts +0 -107
- package/dist/core/documents/sequence-manager.d.ts.map +0 -1
- package/dist/core/documents/sequence-manager.js +0 -246
- package/dist/core/documents/sequence-manager.js.map +0 -1
- package/dist/core/documents/template-engine.d.ts +0 -101
- package/dist/core/documents/template-engine.d.ts.map +0 -1
- package/dist/core/documents/template-engine.js +0 -440
- package/dist/core/documents/template-engine.js.map +0 -1
- package/dist/core/platform/hook-migration.d.ts +0 -73
- package/dist/core/platform/hook-migration.d.ts.map +0 -1
- package/dist/core/platform/hook-migration.js +0 -339
- package/dist/core/platform/hook-migration.js.map +0 -1
- package/dist/core/platform/hook-migrator.d.ts +0 -49
- package/dist/core/platform/hook-migrator.d.ts.map +0 -1
- package/dist/core/platform/hook-migrator.js +0 -305
- package/dist/core/platform/hook-migrator.js.map +0 -1
- package/dist/core/platform/path-resolver.d.ts +0 -120
- package/dist/core/platform/path-resolver.d.ts.map +0 -1
- package/dist/core/platform/path-resolver.js +0 -339
- package/dist/core/platform/path-resolver.js.map +0 -1
- package/dist/core/platform/platform-templates.d.ts +0 -62
- package/dist/core/platform/platform-templates.d.ts.map +0 -1
- package/dist/core/platform/platform-templates.js +0 -364
- package/dist/core/platform/platform-templates.js.map +0 -1
- package/dist/core/pressure-monitor.d.ts +0 -76
- package/dist/core/pressure-monitor.d.ts.map +0 -1
- package/dist/core/pressure-monitor.js +0 -156
- package/dist/core/pressure-monitor.js.map +0 -1
- package/dist/core/validators/git-validator.test.d.ts +0 -12
- package/dist/core/validators/git-validator.test.d.ts.map +0 -1
- package/dist/core/validators/git-validator.test.js +0 -40
- package/dist/core/validators/git-validator.test.js.map +0 -1
- package/dist/core/validators/temp_index.d.ts +0 -56
- package/dist/core/validators/temp_index.d.ts.map +0 -1
- package/dist/core/validators/temp_index.js +0 -94
- package/dist/core/validators/temp_index.js.map +0 -1
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileType: utility
|
|
3
|
-
* @status: current
|
|
4
|
-
* @updated: 2025-09-21
|
|
5
|
-
* @tags: [reflection, config-aware, paths, documents, base-class]
|
|
6
|
-
* @related: [reflection-pattern.ts, config-loader.ts, reflectors]
|
|
7
|
-
* @priority: high
|
|
8
|
-
* @complexity: medium
|
|
9
|
-
* @dependencies: [reflection-pattern, config-loader, fs-extra, path, path-config]
|
|
10
|
-
*/
|
|
11
|
-
import { ReflectionCommand } from '../reflection-pattern.js';
|
|
12
|
-
import { configLoader } from './config-loader.js';
|
|
13
|
-
import { pathManager } from './path-config.js';
|
|
14
|
-
import fs from 'fs-extra';
|
|
15
|
-
import path from 'path';
|
|
16
|
-
import chalk from 'chalk';
|
|
17
|
-
/**
|
|
18
|
-
* Configuration-aware reflection base class
|
|
19
|
-
* Handles path resolution and document naming using pathManager
|
|
20
|
-
*/
|
|
21
|
-
export class ConfigAwareReflectionCommand extends ReflectionCommand {
|
|
22
|
-
config = null;
|
|
23
|
-
constructor(domain) {
|
|
24
|
-
super(domain);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Load configuration before executing
|
|
28
|
-
*/
|
|
29
|
-
async execute(intent, options = {}) {
|
|
30
|
-
// Load configuration
|
|
31
|
-
this.config = await configLoader.loadConfig();
|
|
32
|
-
// Call parent execute
|
|
33
|
-
await super.execute(intent, options);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Save artifact using configuration-based paths
|
|
37
|
-
*/
|
|
38
|
-
async saveArtifact(content, filename) {
|
|
39
|
-
if (!this.config) {
|
|
40
|
-
throw new Error('Configuration not loaded');
|
|
41
|
-
}
|
|
42
|
-
// Get the configured path for this domain
|
|
43
|
-
const documentPath = await this.getDocumentPath();
|
|
44
|
-
await fs.ensureDir(documentPath);
|
|
45
|
-
// Generate filename if not provided
|
|
46
|
-
if (!filename) {
|
|
47
|
-
filename = await this.generateDocumentName(content);
|
|
48
|
-
}
|
|
49
|
-
const filePath = path.join(documentPath, filename);
|
|
50
|
-
await fs.writeFile(filePath, content, 'utf8');
|
|
51
|
-
console.log(chalk.green(`✓ Saved to: ${filePath}`));
|
|
52
|
-
return filePath;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get document path for this domain using pathManager
|
|
56
|
-
*/
|
|
57
|
-
async getDocumentPath() {
|
|
58
|
-
try {
|
|
59
|
-
// Map domain to configuration path using pathManager
|
|
60
|
-
const pathConfig = pathManager.getConfig();
|
|
61
|
-
const pathMapping = {
|
|
62
|
-
'prd': pathConfig.docs.prd,
|
|
63
|
-
'architecture': pathConfig.docs.adr,
|
|
64
|
-
'adr': pathConfig.docs.adr,
|
|
65
|
-
'sprint': pathConfig.docs.sprints,
|
|
66
|
-
'backlog': pathConfig.ginko.backlog,
|
|
67
|
-
'documentation': pathConfig.docs.root
|
|
68
|
-
};
|
|
69
|
-
const documentPath = pathMapping[this.domain];
|
|
70
|
-
if (!documentPath) {
|
|
71
|
-
throw new Error(`No path configured for domain: ${this.domain}`);
|
|
72
|
-
}
|
|
73
|
-
return documentPath;
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
// Fallback to default paths if configuration fails
|
|
77
|
-
console.warn(chalk.yellow(`Warning: Using fallback path for ${this.domain}`));
|
|
78
|
-
return this.getFallbackPath();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Get fallback path when configuration fails - now using pathManager
|
|
83
|
-
*/
|
|
84
|
-
getFallbackPath() {
|
|
85
|
-
const pathConfig = pathManager.getConfig();
|
|
86
|
-
const fallbackPaths = {
|
|
87
|
-
'prd': pathConfig.docs.prd,
|
|
88
|
-
'architecture': pathConfig.docs.adr,
|
|
89
|
-
'adr': pathConfig.docs.adr,
|
|
90
|
-
'sprint': pathConfig.docs.sprints,
|
|
91
|
-
'backlog': pathConfig.ginko.backlog,
|
|
92
|
-
'documentation': pathConfig.docs.root
|
|
93
|
-
};
|
|
94
|
-
return fallbackPaths[this.domain] || pathConfig.docs.root;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=config-aware-reflection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-aware-reflection.js","sourceRoot":"","sources":["../../../src/core/config/config-aware-reflection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileType: utility
|
|
3
|
-
* @status: current
|
|
4
|
-
* @updated: 2025-09-19
|
|
5
|
-
* @tags: [config, loader, singleton, defaults, caching]
|
|
6
|
-
* @related: [config-schema.ts, path-resolver.ts, config-migrator.ts]
|
|
7
|
-
* @priority: critical
|
|
8
|
-
* @complexity: high
|
|
9
|
-
* @dependencies: [fs, path]
|
|
10
|
-
*/
|
|
11
|
-
import { GinkoConfig } from './config-schema.js';
|
|
12
|
-
import { PathResolver } from './path-resolver.js';
|
|
13
|
-
/**
|
|
14
|
-
* Configuration Loader with Singleton Pattern
|
|
15
|
-
* Implements ADR-028 First-Use Experience Enhancement Architecture
|
|
16
|
-
*/
|
|
17
|
-
export interface LoaderOptions {
|
|
18
|
-
/** Project root directory (defaults to cwd) */
|
|
19
|
-
projectRoot?: string;
|
|
20
|
-
/** Configuration file name (defaults to 'ginko.json') */
|
|
21
|
-
configFileName?: string;
|
|
22
|
-
/** Force reload from disk, ignoring cache */
|
|
23
|
-
forceReload?: boolean;
|
|
24
|
-
/** Enable automatic migration */
|
|
25
|
-
autoMigrate?: boolean;
|
|
26
|
-
/** Validation strictness level */
|
|
27
|
-
validation?: 'strict' | 'loose' | 'none';
|
|
28
|
-
}
|
|
29
|
-
export interface LoadResult {
|
|
30
|
-
/** Loaded configuration */
|
|
31
|
-
config: GinkoConfig;
|
|
32
|
-
/** Path to configuration file */
|
|
33
|
-
configPath: string;
|
|
34
|
-
/** Whether config was loaded from file or defaults */
|
|
35
|
-
fromFile: boolean;
|
|
36
|
-
/** Whether config was migrated */
|
|
37
|
-
migrated: boolean;
|
|
38
|
-
/** Path resolver instance */
|
|
39
|
-
resolver: PathResolver;
|
|
40
|
-
/** Validation warnings */
|
|
41
|
-
warnings: string[];
|
|
42
|
-
/** Load timestamp */
|
|
43
|
-
loadedAt: Date;
|
|
44
|
-
}
|
|
45
|
-
export declare class ConfigLoadError extends Error {
|
|
46
|
-
configPath?: string | undefined;
|
|
47
|
-
cause?: Error | undefined;
|
|
48
|
-
constructor(message: string, configPath?: string | undefined, cause?: Error | undefined);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* ConfigLoader singleton for managing ginko configuration
|
|
52
|
-
*/
|
|
53
|
-
export declare class ConfigLoader {
|
|
54
|
-
private static instance;
|
|
55
|
-
private cachedResult;
|
|
56
|
-
private loadPromise;
|
|
57
|
-
private constructor();
|
|
58
|
-
/**
|
|
59
|
-
* Get the singleton instance
|
|
60
|
-
*/
|
|
61
|
-
static getInstance(): ConfigLoader;
|
|
62
|
-
/**
|
|
63
|
-
* Reset the singleton (useful for testing)
|
|
64
|
-
*/
|
|
65
|
-
static reset(): void;
|
|
66
|
-
/**
|
|
67
|
-
* Load configuration with caching and graceful fallback
|
|
68
|
-
*/
|
|
69
|
-
load(options?: LoaderOptions): Promise<LoadResult>;
|
|
70
|
-
/**
|
|
71
|
-
* Internal loading logic
|
|
72
|
-
*/
|
|
73
|
-
private doLoad;
|
|
74
|
-
/**
|
|
75
|
-
* Save configuration to file
|
|
76
|
-
*/
|
|
77
|
-
save(config: GinkoConfig, options?: LoaderOptions): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Create default configuration with platform detection
|
|
80
|
-
*/
|
|
81
|
-
private createDefaultConfig;
|
|
82
|
-
/**
|
|
83
|
-
* Detect current platform configuration
|
|
84
|
-
*/
|
|
85
|
-
private detectPlatform;
|
|
86
|
-
/**
|
|
87
|
-
* Get platform-specific configurations
|
|
88
|
-
*/
|
|
89
|
-
private getPlatformSpecific;
|
|
90
|
-
/**
|
|
91
|
-
* Detect Linux distribution
|
|
92
|
-
*/
|
|
93
|
-
private detectLinuxDistribution;
|
|
94
|
-
/**
|
|
95
|
-
* Check if configuration needs migration
|
|
96
|
-
*/
|
|
97
|
-
private needsMigration;
|
|
98
|
-
/**
|
|
99
|
-
* Merge user configuration with defaults
|
|
100
|
-
*/
|
|
101
|
-
private mergeWithDefaults;
|
|
102
|
-
/**
|
|
103
|
-
* Create path resolver from configuration
|
|
104
|
-
*/
|
|
105
|
-
private createPathResolver;
|
|
106
|
-
/**
|
|
107
|
-
* Get current configuration without loading
|
|
108
|
-
*/
|
|
109
|
-
getCached(): LoadResult | null;
|
|
110
|
-
/**
|
|
111
|
-
* Check if configuration exists
|
|
112
|
-
*/
|
|
113
|
-
exists(options?: LoaderOptions): Promise<boolean>;
|
|
114
|
-
/**
|
|
115
|
-
* Initialize a new configuration file
|
|
116
|
-
*/
|
|
117
|
-
initialize(options?: LoaderOptions): Promise<LoadResult>;
|
|
118
|
-
/**
|
|
119
|
-
* Invalidate cache
|
|
120
|
-
*/
|
|
121
|
-
invalidateCache(): void;
|
|
122
|
-
/**
|
|
123
|
-
* Get configuration statistics
|
|
124
|
-
*/
|
|
125
|
-
getStats(): {
|
|
126
|
-
cached: boolean;
|
|
127
|
-
loadedAt?: Date;
|
|
128
|
-
configPath?: string;
|
|
129
|
-
fromFile?: boolean;
|
|
130
|
-
migrated?: boolean;
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Convenience functions for common operations
|
|
135
|
-
*/
|
|
136
|
-
export declare namespace ConfigLoaderUtils {
|
|
137
|
-
/**
|
|
138
|
-
* Quick load with defaults
|
|
139
|
-
*/
|
|
140
|
-
function quickLoad(projectRoot?: string): Promise<GinkoConfig>;
|
|
141
|
-
/**
|
|
142
|
-
* Get resolved path from configuration
|
|
143
|
-
*/
|
|
144
|
-
function getResolvedPath(pathKey: string, projectRoot?: string): Promise<string>;
|
|
145
|
-
/**
|
|
146
|
-
* Check if a feature is enabled
|
|
147
|
-
*/
|
|
148
|
-
function isFeatureEnabled(feature: string, projectRoot?: string): Promise<boolean>;
|
|
149
|
-
/**
|
|
150
|
-
* Update a single configuration value
|
|
151
|
-
*/
|
|
152
|
-
function updateConfig(updates: Partial<GinkoConfig>, projectRoot?: string): Promise<void>;
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileType: utility
|
|
3
|
-
* @status: current
|
|
4
|
-
* @updated: 2025-09-19
|
|
5
|
-
* @tags: [config, loader, singleton, defaults, caching]
|
|
6
|
-
* @related: [config-schema.ts, path-resolver.ts, config-migrator.ts]
|
|
7
|
-
* @priority: critical
|
|
8
|
-
* @complexity: high
|
|
9
|
-
* @dependencies: [fs, path]
|
|
10
|
-
*/
|
|
11
|
-
import * as fs from 'fs/promises';
|
|
12
|
-
import * as path from 'path';
|
|
13
|
-
import { DEFAULT_CONFIG, validateConfig, ConfigValidationError } from './config-schema.js';
|
|
14
|
-
import { PathResolver } from './path-resolver.js';
|
|
15
|
-
export class ConfigLoadError extends Error {
|
|
16
|
-
configPath;
|
|
17
|
-
cause;
|
|
18
|
-
constructor(message, configPath, cause) {
|
|
19
|
-
super(message);
|
|
20
|
-
this.configPath = configPath;
|
|
21
|
-
this.cause = cause;
|
|
22
|
-
this.name = 'ConfigLoadError';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* ConfigLoader singleton for managing ginko configuration
|
|
27
|
-
*/
|
|
28
|
-
export class ConfigLoader {
|
|
29
|
-
static instance = null;
|
|
30
|
-
cachedResult = null;
|
|
31
|
-
loadPromise = null;
|
|
32
|
-
constructor() {
|
|
33
|
-
// Private constructor for singleton
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Get the singleton instance
|
|
37
|
-
*/
|
|
38
|
-
static getInstance() {
|
|
39
|
-
if (!ConfigLoader.instance) {
|
|
40
|
-
ConfigLoader.instance = new ConfigLoader();
|
|
41
|
-
}
|
|
42
|
-
return ConfigLoader.instance;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Reset the singleton (useful for testing)
|
|
46
|
-
*/
|
|
47
|
-
static reset() {
|
|
48
|
-
ConfigLoader.instance = null;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Load configuration with caching and graceful fallback
|
|
52
|
-
*/
|
|
53
|
-
async load(options = {}) {
|
|
54
|
-
const { projectRoot = process.cwd(), configFileName = 'ginko.json', forceReload = false, autoMigrate = true, validation = 'strict' } = options;
|
|
55
|
-
// Return cached result if available and not forcing reload
|
|
56
|
-
if (this.cachedResult && !forceReload) {
|
|
57
|
-
return this.cachedResult;
|
|
58
|
-
}
|
|
59
|
-
// If already loading, return the same promise
|
|
60
|
-
if (this.loadPromise && !forceReload) {
|
|
61
|
-
return this.loadPromise;
|
|
62
|
-
}
|
|
63
|
-
// Start loading
|
|
64
|
-
this.loadPromise = this.doLoad(projectRoot, configFileName, autoMigrate, validation);
|
|
65
|
-
try {
|
|
66
|
-
const result = await this.loadPromise;
|
|
67
|
-
this.cachedResult = result;
|
|
68
|
-
return result;
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
this.loadPromise = null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Internal loading logic
|
|
76
|
-
*/
|
|
77
|
-
async doLoad(projectRoot, configFileName, autoMigrate, validation) {
|
|
78
|
-
const configPath = path.join(projectRoot, configFileName);
|
|
79
|
-
const warnings = [];
|
|
80
|
-
try {
|
|
81
|
-
// Try to load from file
|
|
82
|
-
const fileContent = await fs.readFile(configPath, 'utf-8');
|
|
83
|
-
let config;
|
|
84
|
-
try {
|
|
85
|
-
config = JSON.parse(fileContent);
|
|
86
|
-
}
|
|
87
|
-
catch (parseError) {
|
|
88
|
-
throw new ConfigLoadError(`Invalid JSON in configuration file: ${configPath}`, configPath, parseError instanceof Error ? parseError : new Error('Parse error'));
|
|
89
|
-
}
|
|
90
|
-
// Validate configuration
|
|
91
|
-
if (validation !== 'none') {
|
|
92
|
-
const validationResult = validateConfig(config);
|
|
93
|
-
if (!validationResult.valid) {
|
|
94
|
-
if (validation === 'strict') {
|
|
95
|
-
throw new ConfigValidationError(`Configuration validation failed: ${validationResult.errors.join(', ')}`);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
warnings.push(...validationResult.errors);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Handle migration if needed
|
|
103
|
-
let migrated = false;
|
|
104
|
-
if (autoMigrate && this.needsMigration(config)) {
|
|
105
|
-
const { ConfigMigrator } = await import('./config-migrator.js');
|
|
106
|
-
const migrator = new ConfigMigrator();
|
|
107
|
-
config = await migrator.migrate(config);
|
|
108
|
-
migrated = true;
|
|
109
|
-
warnings.push('Configuration was automatically migrated to current version');
|
|
110
|
-
}
|
|
111
|
-
// Merge with defaults for any missing fields
|
|
112
|
-
const mergedConfig = this.mergeWithDefaults(config);
|
|
113
|
-
// Create path resolver
|
|
114
|
-
const resolver = this.createPathResolver(mergedConfig);
|
|
115
|
-
return {
|
|
116
|
-
config: mergedConfig,
|
|
117
|
-
configPath,
|
|
118
|
-
fromFile: true,
|
|
119
|
-
migrated,
|
|
120
|
-
resolver,
|
|
121
|
-
warnings,
|
|
122
|
-
loadedAt: new Date()
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
if (error instanceof ConfigLoadError || error instanceof ConfigValidationError) {
|
|
127
|
-
throw error;
|
|
128
|
-
}
|
|
129
|
-
// File doesn't exist or other IO error - use defaults
|
|
130
|
-
if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
|
|
131
|
-
warnings.push(`Configuration file not found at ${configPath}, using defaults`);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
warnings.push(`Failed to load configuration: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
135
|
-
}
|
|
136
|
-
const defaultConfig = this.createDefaultConfig();
|
|
137
|
-
const resolver = this.createPathResolver(defaultConfig);
|
|
138
|
-
return {
|
|
139
|
-
config: defaultConfig,
|
|
140
|
-
configPath,
|
|
141
|
-
fromFile: false,
|
|
142
|
-
migrated: false,
|
|
143
|
-
resolver,
|
|
144
|
-
warnings,
|
|
145
|
-
loadedAt: new Date()
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Save configuration to file
|
|
151
|
-
*/
|
|
152
|
-
async save(config, options = {}) {
|
|
153
|
-
const { projectRoot = process.cwd(), configFileName = 'ginko.json' } = options;
|
|
154
|
-
const configPath = path.join(projectRoot, configFileName);
|
|
155
|
-
// Validate before saving
|
|
156
|
-
const validationResult = validateConfig(config);
|
|
157
|
-
if (!validationResult.valid) {
|
|
158
|
-
throw new ConfigValidationError(`Cannot save invalid configuration: ${validationResult.errors.join(', ')}`);
|
|
159
|
-
}
|
|
160
|
-
// Update metadata
|
|
161
|
-
const configWithMetadata = {
|
|
162
|
-
...config,
|
|
163
|
-
metadata: {
|
|
164
|
-
...config.metadata,
|
|
165
|
-
updatedAt: new Date().toISOString(),
|
|
166
|
-
updatedBy: process.env.USER || process.env.USERNAME || 'unknown'
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
try {
|
|
170
|
-
// Ensure directory exists
|
|
171
|
-
await fs.mkdir(path.dirname(configPath), { recursive: true });
|
|
172
|
-
// Write file with pretty formatting
|
|
173
|
-
await fs.writeFile(configPath, JSON.stringify(configWithMetadata, null, 2) + '\n', 'utf-8');
|
|
174
|
-
// Clear cache to force reload
|
|
175
|
-
this.cachedResult = null;
|
|
176
|
-
}
|
|
177
|
-
catch (error) {
|
|
178
|
-
throw new ConfigLoadError(`Failed to save configuration to ${configPath}`, configPath, error instanceof Error ? error : new Error('Unknown error'));
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Create default configuration with platform detection
|
|
183
|
-
*/
|
|
184
|
-
createDefaultConfig() {
|
|
185
|
-
const platform = this.detectPlatform();
|
|
186
|
-
return {
|
|
187
|
-
...DEFAULT_CONFIG,
|
|
188
|
-
platform,
|
|
189
|
-
metadata: {
|
|
190
|
-
createdAt: new Date().toISOString(),
|
|
191
|
-
updatedAt: new Date().toISOString(),
|
|
192
|
-
updatedBy: process.env.USER || process.env.USERNAME || 'unknown',
|
|
193
|
-
migrationHistory: []
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Detect current platform configuration
|
|
199
|
-
*/
|
|
200
|
-
detectPlatform() {
|
|
201
|
-
const type = PathResolver.detectPlatform();
|
|
202
|
-
const homeDirectory = require('os').homedir();
|
|
203
|
-
// Detect shell
|
|
204
|
-
let shell = 'bash';
|
|
205
|
-
if (type === 'windows') {
|
|
206
|
-
shell = process.env.ComSpec?.includes('powershell') ? 'powershell' : 'cmd';
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
shell = path.basename(process.env.SHELL || 'bash');
|
|
210
|
-
}
|
|
211
|
-
return {
|
|
212
|
-
type,
|
|
213
|
-
shell,
|
|
214
|
-
pathSeparator: path.sep,
|
|
215
|
-
homeDirectory,
|
|
216
|
-
specific: this.getPlatformSpecific(type)
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Get platform-specific configurations
|
|
221
|
-
*/
|
|
222
|
-
getPlatformSpecific(type) {
|
|
223
|
-
switch (type) {
|
|
224
|
-
case 'windows':
|
|
225
|
-
return {
|
|
226
|
-
windows: {
|
|
227
|
-
useWSL: !!process.env.WSL_DISTRO_NAME,
|
|
228
|
-
wslDistro: process.env.WSL_DISTRO_NAME
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
case 'macos':
|
|
232
|
-
return {
|
|
233
|
-
macos: {
|
|
234
|
-
brewPrefix: process.env.HOMEBREW_PREFIX || '/opt/homebrew'
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
case 'linux':
|
|
238
|
-
return {
|
|
239
|
-
linux: {
|
|
240
|
-
distribution: this.detectLinuxDistribution()
|
|
241
|
-
}
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Detect Linux distribution
|
|
247
|
-
*/
|
|
248
|
-
detectLinuxDistribution() {
|
|
249
|
-
try {
|
|
250
|
-
// This is a simplified detection - could be enhanced
|
|
251
|
-
if (process.env.DEBIAN_FRONTEND)
|
|
252
|
-
return 'debian';
|
|
253
|
-
if (process.env.RHEL_VERSION)
|
|
254
|
-
return 'rhel';
|
|
255
|
-
return 'unknown';
|
|
256
|
-
}
|
|
257
|
-
catch {
|
|
258
|
-
return 'unknown';
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Check if configuration needs migration
|
|
263
|
-
*/
|
|
264
|
-
needsMigration(config) {
|
|
265
|
-
if (!config.version)
|
|
266
|
-
return true;
|
|
267
|
-
if (config.version !== DEFAULT_CONFIG.version)
|
|
268
|
-
return true;
|
|
269
|
-
return false;
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Merge user configuration with defaults
|
|
273
|
-
*/
|
|
274
|
-
mergeWithDefaults(userConfig) {
|
|
275
|
-
const defaultConfig = this.createDefaultConfig();
|
|
276
|
-
return {
|
|
277
|
-
version: userConfig.version || defaultConfig.version,
|
|
278
|
-
paths: {
|
|
279
|
-
docs: { ...defaultConfig.paths.docs, ...userConfig.paths?.docs },
|
|
280
|
-
ginko: { ...defaultConfig.paths.ginko, ...userConfig.paths?.ginko }
|
|
281
|
-
},
|
|
282
|
-
features: { ...defaultConfig.features, ...userConfig.features },
|
|
283
|
-
platform: userConfig.platform || defaultConfig.platform,
|
|
284
|
-
metadata: { ...defaultConfig.metadata, ...userConfig.metadata }
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Create path resolver from configuration
|
|
289
|
-
*/
|
|
290
|
-
createPathResolver(config) {
|
|
291
|
-
// Flatten path configuration for resolver
|
|
292
|
-
const variables = {};
|
|
293
|
-
// Add docs paths
|
|
294
|
-
for (const [key, value] of Object.entries(config.paths.docs)) {
|
|
295
|
-
variables[`docs.${key}`] = value;
|
|
296
|
-
}
|
|
297
|
-
// Add ginko paths
|
|
298
|
-
for (const [key, value] of Object.entries(config.paths.ginko)) {
|
|
299
|
-
variables[`ginko.${key}`] = value;
|
|
300
|
-
}
|
|
301
|
-
return PathResolver.create(variables);
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Get current configuration without loading
|
|
305
|
-
*/
|
|
306
|
-
getCached() {
|
|
307
|
-
return this.cachedResult;
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Check if configuration exists
|
|
311
|
-
*/
|
|
312
|
-
async exists(options = {}) {
|
|
313
|
-
const { projectRoot = process.cwd(), configFileName = 'ginko.json' } = options;
|
|
314
|
-
const configPath = path.join(projectRoot, configFileName);
|
|
315
|
-
try {
|
|
316
|
-
await fs.access(configPath);
|
|
317
|
-
return true;
|
|
318
|
-
}
|
|
319
|
-
catch {
|
|
320
|
-
return false;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* Initialize a new configuration file
|
|
325
|
-
*/
|
|
326
|
-
async initialize(options = {}) {
|
|
327
|
-
const { projectRoot = process.cwd(), configFileName = 'ginko.json' } = options;
|
|
328
|
-
const configPath = path.join(projectRoot, configFileName);
|
|
329
|
-
// Check if file already exists
|
|
330
|
-
if (await this.exists(options)) {
|
|
331
|
-
throw new ConfigLoadError(`Configuration file already exists at ${configPath}`, configPath);
|
|
332
|
-
}
|
|
333
|
-
// Create default configuration
|
|
334
|
-
const config = this.createDefaultConfig();
|
|
335
|
-
// Save to file
|
|
336
|
-
await this.save(config, options);
|
|
337
|
-
// Return load result
|
|
338
|
-
return this.load({ ...options, forceReload: true });
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Invalidate cache
|
|
342
|
-
*/
|
|
343
|
-
invalidateCache() {
|
|
344
|
-
this.cachedResult = null;
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Get configuration statistics
|
|
348
|
-
*/
|
|
349
|
-
getStats() {
|
|
350
|
-
if (!this.cachedResult) {
|
|
351
|
-
return { cached: false };
|
|
352
|
-
}
|
|
353
|
-
return {
|
|
354
|
-
cached: true,
|
|
355
|
-
loadedAt: this.cachedResult.loadedAt,
|
|
356
|
-
configPath: this.cachedResult.configPath,
|
|
357
|
-
fromFile: this.cachedResult.fromFile,
|
|
358
|
-
migrated: this.cachedResult.migrated
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Convenience functions for common operations
|
|
364
|
-
*/
|
|
365
|
-
export var ConfigLoaderUtils;
|
|
366
|
-
(function (ConfigLoaderUtils) {
|
|
367
|
-
/**
|
|
368
|
-
* Quick load with defaults
|
|
369
|
-
*/
|
|
370
|
-
async function quickLoad(projectRoot) {
|
|
371
|
-
const loader = ConfigLoader.getInstance();
|
|
372
|
-
const result = await loader.load({ projectRoot });
|
|
373
|
-
return result.config;
|
|
374
|
-
}
|
|
375
|
-
ConfigLoaderUtils.quickLoad = quickLoad;
|
|
376
|
-
/**
|
|
377
|
-
* Get resolved path from configuration
|
|
378
|
-
*/
|
|
379
|
-
async function getResolvedPath(pathKey, projectRoot) {
|
|
380
|
-
const loader = ConfigLoader.getInstance();
|
|
381
|
-
const result = await loader.load({ projectRoot });
|
|
382
|
-
// Parse path key (e.g., "docs.adr" or "ginko.sessions")
|
|
383
|
-
const [category, key] = pathKey.split('.');
|
|
384
|
-
if (!category || !key) {
|
|
385
|
-
throw new Error(`Invalid path key: ${pathKey}. Expected format: "category.key"`);
|
|
386
|
-
}
|
|
387
|
-
const pathTemplate = result.config.paths[category]?.[key];
|
|
388
|
-
if (!pathTemplate) {
|
|
389
|
-
throw new Error(`Path not found: ${pathKey}`);
|
|
390
|
-
}
|
|
391
|
-
const resolved = result.resolver.resolve(pathTemplate);
|
|
392
|
-
if (!resolved.success) {
|
|
393
|
-
throw new Error(`Failed to resolve path ${pathKey}: ${resolved.errors.join(', ')}`);
|
|
394
|
-
}
|
|
395
|
-
return resolved.resolved;
|
|
396
|
-
}
|
|
397
|
-
ConfigLoaderUtils.getResolvedPath = getResolvedPath;
|
|
398
|
-
/**
|
|
399
|
-
* Check if a feature is enabled
|
|
400
|
-
*/
|
|
401
|
-
async function isFeatureEnabled(feature, projectRoot) {
|
|
402
|
-
const config = await quickLoad(projectRoot);
|
|
403
|
-
return config.features[feature] === true;
|
|
404
|
-
}
|
|
405
|
-
ConfigLoaderUtils.isFeatureEnabled = isFeatureEnabled;
|
|
406
|
-
/**
|
|
407
|
-
* Update a single configuration value
|
|
408
|
-
*/
|
|
409
|
-
async function updateConfig(updates, projectRoot) {
|
|
410
|
-
const loader = ConfigLoader.getInstance();
|
|
411
|
-
const result = await loader.load({ projectRoot });
|
|
412
|
-
const updatedConfig = {
|
|
413
|
-
...result.config,
|
|
414
|
-
...updates,
|
|
415
|
-
metadata: {
|
|
416
|
-
...result.config.metadata,
|
|
417
|
-
updatedAt: new Date().toISOString()
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
|
-
await loader.save(updatedConfig, { projectRoot });
|
|
421
|
-
}
|
|
422
|
-
ConfigLoaderUtils.updateConfig = updateConfig;
|
|
423
|
-
})(ConfigLoaderUtils || (ConfigLoaderUtils = {}));
|
|
424
|
-
//# sourceMappingURL=config-loader.js.map
|