@su-record/vibe 3.0.0 → 3.1.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/hooks/scripts/__tests__/.vibe/command-log.txt +3 -78
- package/hooks/scripts/__tests__/.vibe/memories/memories.db +0 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
- package/hooks/scripts/__tests__/clone-behaviors.test.js +64 -0
- package/hooks/scripts/__tests__/clone-merge-responsive.test.js +106 -0
- package/hooks/scripts/clone-extract.js +242 -28
- package/hooks/scripts/clone-merge-responsive.js +184 -0
- package/hooks/scripts/clone-spec.js +33 -8
- package/hooks/scripts/clone-validate.js +15 -9
- package/package.json +5 -2
- package/skills/clone/SKILL.md +132 -55
- package/skills/vibe.clone/SKILL.md +39 -19
- package/dist/cli/llm/gemini-commands.d.ts +0 -25
- package/dist/cli/llm/gemini-commands.d.ts.map +0 -1
- package/dist/cli/llm/gemini-commands.js +0 -143
- package/dist/cli/llm/gemini-commands.js.map +0 -1
- package/dist/cli/postinstall/codex-agents.d.ts +0 -24
- package/dist/cli/postinstall/codex-agents.d.ts.map +0 -1
- package/dist/cli/postinstall/codex-agents.js +0 -114
- package/dist/cli/postinstall/codex-agents.js.map +0 -1
- package/dist/cli/postinstall/codex-instruction.d.ts +0 -10
- package/dist/cli/postinstall/codex-instruction.d.ts.map +0 -1
- package/dist/cli/postinstall/codex-instruction.js +0 -56
- package/dist/cli/postinstall/codex-instruction.js.map +0 -1
- package/dist/cli/postinstall/gemini-agents.d.ts +0 -12
- package/dist/cli/postinstall/gemini-agents.d.ts.map +0 -1
- package/dist/cli/postinstall/gemini-agents.js +0 -80
- package/dist/cli/postinstall/gemini-agents.js.map +0 -1
- package/dist/cli/postinstall/gemini-instruction.d.ts +0 -10
- package/dist/cli/postinstall/gemini-instruction.d.ts.map +0 -1
- package/dist/cli/postinstall/gemini-instruction.js +0 -59
- package/dist/cli/postinstall/gemini-instruction.js.map +0 -1
- package/dist/infra/lib/ContextCompressor.d.ts +0 -104
- package/dist/infra/lib/ContextCompressor.d.ts.map +0 -1
- package/dist/infra/lib/ContextCompressor.js +0 -297
- package/dist/infra/lib/ContextCompressor.js.map +0 -1
- package/dist/infra/lib/ContextCompressor.test.d.ts +0 -2
- package/dist/infra/lib/ContextCompressor.test.d.ts.map +0 -1
- package/dist/infra/lib/ContextCompressor.test.js +0 -25
- package/dist/infra/lib/ContextCompressor.test.js.map +0 -1
- package/dist/infra/lib/ProgressTracker.d.ts +0 -73
- package/dist/infra/lib/ProgressTracker.d.ts.map +0 -1
- package/dist/infra/lib/ProgressTracker.js +0 -267
- package/dist/infra/lib/ProgressTracker.js.map +0 -1
- package/dist/infra/lib/TokenBudgetTracker.d.ts +0 -68
- package/dist/infra/lib/TokenBudgetTracker.d.ts.map +0 -1
- package/dist/infra/lib/TokenBudgetTracker.js +0 -191
- package/dist/infra/lib/TokenBudgetTracker.js.map +0 -1
- package/dist/infra/lib/autonomy/AuditStore.d.ts +0 -63
- package/dist/infra/lib/autonomy/AuditStore.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/AuditStore.js +0 -185
- package/dist/infra/lib/autonomy/AuditStore.js.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyConfig.d.ts +0 -84
- package/dist/infra/lib/autonomy/AutonomyConfig.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyConfig.js +0 -49
- package/dist/infra/lib/autonomy/AutonomyConfig.js.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts +0 -78
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.js +0 -246
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.js.map +0 -1
- package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts +0 -36
- package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/BackgroundMonitor.js +0 -138
- package/dist/infra/lib/autonomy/BackgroundMonitor.js.map +0 -1
- package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts +0 -56
- package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/CollaborationProtocol.js +0 -122
- package/dist/infra/lib/autonomy/CollaborationProtocol.js.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationManager.d.ts +0 -42
- package/dist/infra/lib/autonomy/ConfirmationManager.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationManager.js +0 -200
- package/dist/infra/lib/autonomy/ConfirmationManager.js.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationStore.d.ts +0 -55
- package/dist/infra/lib/autonomy/ConfirmationStore.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationStore.js +0 -130
- package/dist/infra/lib/autonomy/ConfirmationStore.js.map +0 -1
- package/dist/infra/lib/autonomy/EventBus.d.ts +0 -20
- package/dist/infra/lib/autonomy/EventBus.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/EventBus.js +0 -119
- package/dist/infra/lib/autonomy/EventBus.js.map +0 -1
- package/dist/infra/lib/autonomy/EventOutbox.d.ts +0 -32
- package/dist/infra/lib/autonomy/EventOutbox.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/EventOutbox.js +0 -152
- package/dist/infra/lib/autonomy/EventOutbox.js.map +0 -1
- package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts +0 -24
- package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/NotificationDispatcher.js +0 -112
- package/dist/infra/lib/autonomy/NotificationDispatcher.js.map +0 -1
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts +0 -76
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/PolicyEngine.js +0 -208
- package/dist/infra/lib/autonomy/PolicyEngine.js.map +0 -1
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts +0 -61
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.js +0 -236
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.js.map +0 -1
- package/dist/infra/lib/autonomy/RiskClassifier.d.ts +0 -35
- package/dist/infra/lib/autonomy/RiskClassifier.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/RiskClassifier.js +0 -147
- package/dist/infra/lib/autonomy/RiskClassifier.js.map +0 -1
- package/dist/infra/lib/autonomy/SecuritySentinel.d.ts +0 -51
- package/dist/infra/lib/autonomy/SecuritySentinel.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/SecuritySentinel.js +0 -162
- package/dist/infra/lib/autonomy/SecuritySentinel.js.map +0 -1
- package/dist/infra/lib/autonomy/SuggestionStore.d.ts +0 -54
- package/dist/infra/lib/autonomy/SuggestionStore.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +0 -144
- package/dist/infra/lib/autonomy/SuggestionStore.js.map +0 -1
- package/dist/infra/lib/autonomy/TaskDecomposer.d.ts +0 -38
- package/dist/infra/lib/autonomy/TaskDecomposer.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/TaskDecomposer.js +0 -175
- package/dist/infra/lib/autonomy/TaskDecomposer.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.js +0 -198
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.js +0 -225
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-core.test.js +0 -194
- package/dist/infra/lib/autonomy/__tests__/event-core.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/governance.test.js +0 -540
- package/dist/infra/lib/autonomy/__tests__/governance.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/integration.test.js +0 -480
- package/dist/infra/lib/autonomy/__tests__/integration.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/proactive.test.js +0 -410
- package/dist/infra/lib/autonomy/__tests__/proactive.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.js +0 -486
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.js.map +0 -1
- package/dist/infra/lib/autonomy/index.d.ts +0 -18
- package/dist/infra/lib/autonomy/index.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/index.js +0 -22
- package/dist/infra/lib/autonomy/index.js.map +0 -1
- package/dist/infra/lib/autonomy/schemas.d.ts +0 -317
- package/dist/infra/lib/autonomy/schemas.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/schemas.js +0 -90
- package/dist/infra/lib/autonomy/schemas.js.map +0 -1
- package/dist/infra/lib/claude/index.d.ts +0 -5
- package/dist/infra/lib/claude/index.d.ts.map +0 -1
- package/dist/infra/lib/claude/index.js +0 -5
- package/dist/infra/lib/claude/index.js.map +0 -1
- package/dist/infra/lib/claude/storage.d.ts +0 -12
- package/dist/infra/lib/claude/storage.d.ts.map +0 -1
- package/dist/infra/lib/claude/storage.js +0 -54
- package/dist/infra/lib/claude/storage.js.map +0 -1
- package/dist/infra/lib/gemini/auth.d.ts +0 -18
- package/dist/infra/lib/gemini/auth.d.ts.map +0 -1
- package/dist/infra/lib/gemini/auth.js +0 -32
- package/dist/infra/lib/gemini/auth.js.map +0 -1
- package/dist/infra/lib/gemini/capabilities.d.ts +0 -28
- package/dist/infra/lib/gemini/capabilities.d.ts.map +0 -1
- package/dist/infra/lib/gemini/capabilities.js +0 -178
- package/dist/infra/lib/gemini/capabilities.js.map +0 -1
- package/dist/infra/lib/gemini/chat.d.ts +0 -35
- package/dist/infra/lib/gemini/chat.d.ts.map +0 -1
- package/dist/infra/lib/gemini/chat.js +0 -161
- package/dist/infra/lib/gemini/chat.js.map +0 -1
- package/dist/infra/lib/gemini/completion.d.ts +0 -12
- package/dist/infra/lib/gemini/completion.d.ts.map +0 -1
- package/dist/infra/lib/gemini/completion.js +0 -13
- package/dist/infra/lib/gemini/completion.js.map +0 -1
- package/dist/infra/lib/gemini/constants.d.ts +0 -8
- package/dist/infra/lib/gemini/constants.d.ts.map +0 -1
- package/dist/infra/lib/gemini/constants.js +0 -11
- package/dist/infra/lib/gemini/constants.js.map +0 -1
- package/dist/infra/lib/gemini/index.d.ts +0 -13
- package/dist/infra/lib/gemini/index.d.ts.map +0 -1
- package/dist/infra/lib/gemini/index.js +0 -12
- package/dist/infra/lib/gemini/index.js.map +0 -1
- package/dist/infra/lib/gemini/models.d.ts +0 -11
- package/dist/infra/lib/gemini/models.d.ts.map +0 -1
- package/dist/infra/lib/gemini/models.js +0 -38
- package/dist/infra/lib/gemini/models.js.map +0 -1
- package/dist/infra/lib/gemini/orchestration.d.ts +0 -33
- package/dist/infra/lib/gemini/orchestration.d.ts.map +0 -1
- package/dist/infra/lib/gemini/orchestration.js +0 -62
- package/dist/infra/lib/gemini/orchestration.js.map +0 -1
- package/dist/infra/lib/gemini/types.d.ts +0 -115
- package/dist/infra/lib/gemini/types.d.ts.map +0 -1
- package/dist/infra/lib/gemini/types.js +0 -5
- package/dist/infra/lib/gemini/types.js.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.d.ts +0 -64
- package/dist/infra/orchestrator/AgentAnnouncer.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.js +0 -127
- package/dist/infra/orchestrator/AgentAnnouncer.js.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts +0 -5
- package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.test.js +0 -119
- package/dist/infra/orchestrator/AgentAnnouncer.test.js.map +0 -1
- package/dist/infra/orchestrator/AgentExecutor.d.ts +0 -22
- package/dist/infra/orchestrator/AgentExecutor.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentExecutor.js +0 -272
- package/dist/infra/orchestrator/AgentExecutor.js.map +0 -1
- package/dist/infra/orchestrator/AgentManager.d.ts +0 -72
- package/dist/infra/orchestrator/AgentManager.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentManager.js +0 -183
- package/dist/infra/orchestrator/AgentManager.js.map +0 -1
- package/dist/infra/orchestrator/AgentManifestCache.d.ts +0 -54
- package/dist/infra/orchestrator/AgentManifestCache.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentManifestCache.js +0 -191
- package/dist/infra/orchestrator/AgentManifestCache.js.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.d.ts +0 -76
- package/dist/infra/orchestrator/AgentRegistry.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.js +0 -217
- package/dist/infra/orchestrator/AgentRegistry.js.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.test.d.ts +0 -5
- package/dist/infra/orchestrator/AgentRegistry.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.test.js +0 -122
- package/dist/infra/orchestrator/AgentRegistry.test.js.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.d.ts +0 -128
- package/dist/infra/orchestrator/BackgroundManager.d.ts.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.js +0 -620
- package/dist/infra/orchestrator/BackgroundManager.js.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.test.d.ts +0 -6
- package/dist/infra/orchestrator/BackgroundManager.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.test.js +0 -162
- package/dist/infra/orchestrator/BackgroundManager.test.js.map +0 -1
- package/dist/infra/orchestrator/CheckpointManager.d.ts +0 -54
- package/dist/infra/orchestrator/CheckpointManager.d.ts.map +0 -1
- package/dist/infra/orchestrator/CheckpointManager.js +0 -121
- package/dist/infra/orchestrator/CheckpointManager.js.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +0 -12
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.js +0 -94
- package/dist/infra/orchestrator/CodexAgentRuntime.js.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +0 -2
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js +0 -37
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +0 -1
- package/dist/infra/orchestrator/LLMCluster.d.ts +0 -82
- package/dist/infra/orchestrator/LLMCluster.d.ts.map +0 -1
- package/dist/infra/orchestrator/LLMCluster.js +0 -146
- package/dist/infra/orchestrator/LLMCluster.js.map +0 -1
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts +0 -31
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +0 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +0 -160
- package/dist/infra/orchestrator/MultiLlmResearch.js.map +0 -1
- package/dist/infra/orchestrator/PhasePipeline.d.ts +0 -122
- package/dist/infra/orchestrator/PhasePipeline.d.ts.map +0 -1
- package/dist/infra/orchestrator/PhasePipeline.js +0 -385
- package/dist/infra/orchestrator/PhasePipeline.js.map +0 -1
- package/dist/infra/orchestrator/PhaseResultStore.d.ts +0 -39
- package/dist/infra/orchestrator/PhaseResultStore.d.ts.map +0 -1
- package/dist/infra/orchestrator/PhaseResultStore.js +0 -151
- package/dist/infra/orchestrator/PhaseResultStore.js.map +0 -1
- package/dist/infra/orchestrator/SessionStore.d.ts +0 -40
- package/dist/infra/orchestrator/SessionStore.d.ts.map +0 -1
- package/dist/infra/orchestrator/SessionStore.js +0 -116
- package/dist/infra/orchestrator/SessionStore.js.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.d.ts +0 -90
- package/dist/infra/orchestrator/SmartRouter.d.ts.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.js +0 -277
- package/dist/infra/orchestrator/SmartRouter.js.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.test.d.ts +0 -5
- package/dist/infra/orchestrator/SmartRouter.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.test.js +0 -484
- package/dist/infra/orchestrator/SmartRouter.test.js.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.d.ts +0 -143
- package/dist/infra/orchestrator/SwarmOrchestrator.d.ts.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.js +0 -378
- package/dist/infra/orchestrator/SwarmOrchestrator.js.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts +0 -5
- package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +0 -95
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js.map +0 -1
- package/dist/infra/orchestrator/agentDiscovery.d.ts +0 -26
- package/dist/infra/orchestrator/agentDiscovery.d.ts.map +0 -1
- package/dist/infra/orchestrator/agentDiscovery.js +0 -175
- package/dist/infra/orchestrator/agentDiscovery.js.map +0 -1
- package/dist/infra/orchestrator/backgroundAgent.d.ts +0 -9
- package/dist/infra/orchestrator/backgroundAgent.d.ts.map +0 -1
- package/dist/infra/orchestrator/backgroundAgent.js +0 -10
- package/dist/infra/orchestrator/backgroundAgent.js.map +0 -1
- package/dist/infra/orchestrator/index.d.ts +0 -207
- package/dist/infra/orchestrator/index.d.ts.map +0 -1
- package/dist/infra/orchestrator/index.js +0 -362
- package/dist/infra/orchestrator/index.js.map +0 -1
- package/dist/infra/orchestrator/orchestrator.d.ts +0 -60
- package/dist/infra/orchestrator/orchestrator.d.ts.map +0 -1
- package/dist/infra/orchestrator/orchestrator.js +0 -214
- package/dist/infra/orchestrator/orchestrator.js.map +0 -1
- package/dist/infra/orchestrator/parallelResearch.d.ts +0 -27
- package/dist/infra/orchestrator/parallelResearch.d.ts.map +0 -1
- package/dist/infra/orchestrator/parallelResearch.js +0 -285
- package/dist/infra/orchestrator/parallelResearch.js.map +0 -1
- package/dist/infra/orchestrator/types.d.ts +0 -205
- package/dist/infra/orchestrator/types.d.ts.map +0 -1
- package/dist/infra/orchestrator/types.js +0 -87
- package/dist/infra/orchestrator/types.js.map +0 -1
- package/dist/infra/orchestrator/types.test.d.ts +0 -2
- package/dist/infra/orchestrator/types.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/types.test.js +0 -57
- package/dist/infra/orchestrator/types.test.js.map +0 -1
- package/dist/tools/semantic/analyzeDependencyGraph.d.ts +0 -12
- package/dist/tools/semantic/analyzeDependencyGraph.d.ts.map +0 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js +0 -359
- package/dist/tools/semantic/analyzeDependencyGraph.js.map +0 -1
- package/dist/tools/semantic/astGrep.d.ts +0 -25
- package/dist/tools/semantic/astGrep.d.ts.map +0 -1
- package/dist/tools/semantic/astGrep.js +0 -324
- package/dist/tools/semantic/astGrep.js.map +0 -1
- package/dist/tools/semantic/astGrep.test.d.ts +0 -2
- package/dist/tools/semantic/astGrep.test.d.ts.map +0 -1
- package/dist/tools/semantic/astGrep.test.js +0 -74
- package/dist/tools/semantic/astGrep.test.js.map +0 -1
- package/dist/tools/semantic/findReferences.d.ts +0 -9
- package/dist/tools/semantic/findReferences.d.ts.map +0 -1
- package/dist/tools/semantic/findReferences.js +0 -200
- package/dist/tools/semantic/findReferences.js.map +0 -1
- package/dist/tools/semantic/findSymbol.d.ts +0 -8
- package/dist/tools/semantic/findSymbol.d.ts.map +0 -1
- package/dist/tools/semantic/findSymbol.js +0 -204
- package/dist/tools/semantic/findSymbol.js.map +0 -1
- package/dist/tools/semantic/index.d.ts +0 -9
- package/dist/tools/semantic/index.d.ts.map +0 -1
- package/dist/tools/semantic/index.js +0 -11
- package/dist/tools/semantic/index.js.map +0 -1
- package/dist/tools/semantic/lsp.d.ts +0 -68
- package/dist/tools/semantic/lsp.d.ts.map +0 -1
- package/dist/tools/semantic/lsp.js +0 -561
- package/dist/tools/semantic/lsp.js.map +0 -1
- package/dist/tools/spec/e2eTestGenerator.d.ts +0 -61
- package/dist/tools/spec/e2eTestGenerator.d.ts.map +0 -1
- package/dist/tools/spec/e2eTestGenerator.js +0 -255
- package/dist/tools/spec/e2eTestGenerator.js.map +0 -1
- package/dist/tools/spec/specVersioning.d.ts +0 -76
- package/dist/tools/spec/specVersioning.d.ts.map +0 -1
- package/dist/tools/spec/specVersioning.js +0 -236
- package/dist/tools/spec/specVersioning.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe.clone
|
|
3
3
|
description: URL → 마크업 레벨 픽셀 완벽 클론 — 헤드리스 브라우저로 라이브 사이트 캡처 후 현재 프로젝트 스택에 맞게 스캐폴딩
|
|
4
|
-
argument-hint: "<url> [<url2>...] [--name=<feature>] [--mo-only] [--pc-only] [--ignore-robots] [--no-interact]"
|
|
4
|
+
argument-hint: "<url> [<url2>...] [--name=<feature>] [--mo-only] [--pc-only] [--ignore-robots] [--no-interact] [--real-content]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -21,6 +21,7 @@ URL을 받아 **마크업 수준으로 정밀 복제**하고 현재 프로젝트
|
|
|
21
21
|
/vibe.clone <url1> <url2> <url3> # 다중 페이지 클론 (같은 사이트의 여러 경로)
|
|
22
22
|
/vibe.clone <url> --ignore-robots # robots.txt 무시 (사이트 소유자 허가 있을 때만)
|
|
23
23
|
/vibe.clone <url> --no-interact # 능동 인터랙션 스윕 끄기 (완전 결정론적·재현 가능 캡처)
|
|
24
|
+
/vibe.clone <url> --real-content # 텍스트 verbatim 유지 (본인 소유/허가 확인 1회 필수)
|
|
24
25
|
```
|
|
25
26
|
|
|
26
27
|
## Argument Routing
|
|
@@ -31,6 +32,7 @@ Step 1) 인자 수집
|
|
|
31
32
|
feature = --name=<value> | URL host → kebab-case
|
|
32
33
|
scope = --mo-only | --pc-only | (기본: both)
|
|
33
34
|
ignoreRobots = --ignore-robots 플래그 유무
|
|
35
|
+
realContent = --real-content 플래그 유무 (소유/허가 확인 질문 1회 후 적용)
|
|
34
36
|
|
|
35
37
|
Step 2) 인자 검증
|
|
36
38
|
urls.length === 0 → 사용자에게 URL 입력 요청, 중단
|
|
@@ -53,9 +55,11 @@ Phase 0: Setup
|
|
|
53
55
|
Phase 1: Capture (병렬 — scope에 따라 MO/PC 동시)
|
|
54
56
|
- node {{VIBE_PATH}}/hooks/scripts/clone-extract.js capture <url> \
|
|
55
57
|
--out=/tmp/{feature}/{bp}/ --viewport={WxH} --bp={mo|pc}
|
|
56
|
-
- 출력: rendered.html, computed.json, screenshot.png, states.json, behaviors.json, asset-map.json, assets/
|
|
57
|
-
- behaviors.json = 능동 인터랙션 스윕(스크롤
|
|
58
|
+
- 출력: rendered.html, computed.json, screenshot.png, states.json, behaviors.json, asset-map.json, assets/ (images·fonts·seo)
|
|
59
|
+
- behaviors.json = 능동 인터랙션 스윕 4종+ (스크롤 헤더 diff · 탭 클릭 콘텐츠 스왑 · 호버 diff ·
|
|
60
|
+
in-view 등장 애니메이션 · time-driven 캐러셀 후보 · 스무스 스크롤 라이브러리 감지).
|
|
58
61
|
JS로 세팅되는 상태(정적 CSS로는 안 잡힘)를 포착 — 클론 정확도의 핵심. --no-interact 로 비활성화.
|
|
62
|
+
- assets/seo/ = favicon·apple-touch-icon·og:image·webmanifest (Foundation 단계에서 배선)
|
|
59
63
|
|
|
60
64
|
Phase 2: Refine (BP마다 독립)
|
|
61
65
|
- node {{VIBE_PATH}}/hooks/scripts/clone-refine.js \
|
|
@@ -63,21 +67,34 @@ Phase 2: Refine (BP마다 독립)
|
|
|
63
67
|
--out=/tmp/{feature}/{bp}/sections.json --states=/tmp/{feature}/{bp}/states.json --bp={mo|pc}
|
|
64
68
|
- sections.json 에 section.interaction(인터랙션 모델 추정) + section.states(상태 규칙) 포함
|
|
65
69
|
|
|
66
|
-
Phase
|
|
70
|
+
Phase 2.5: Foundation (순차 — 섹션 빌드 전)
|
|
71
|
+
- 폰트 배선(Next → next/font) · assets/seo/ → public/ (favicon·OG·manifest 메타 배선)
|
|
72
|
+
- 인라인 SVG dedupe → 아이콘 모듈 · scrollLib 감지 시 페이지 레벨 배선
|
|
73
|
+
|
|
74
|
+
Phase 3: Scaffold (BP 순차 — MO 완료 후 PC / 섹션은 병렬 빌더 디스패치)
|
|
67
75
|
- Step 0: node {{VIBE_PATH}}/hooks/scripts/clone-spec.js \
|
|
68
76
|
/tmp/{feature}/{bp}/sections.json \
|
|
69
|
-
--out=./components/{feature}/_specs/ --feature={feature}
|
|
70
|
-
→ 섹션별 빌드 계약서(_specs/{Section}.spec.md).
|
|
77
|
+
--out=./components/{feature}/_specs/{bp}/ --feature={feature} [--real-content]
|
|
78
|
+
→ 섹션별 빌드 계약서(_specs/{bp}/{Section}.spec.md). 디스패치 전 TODO(인터랙션 모델 확정·상태 목록·텍스트 교체) 해결
|
|
79
|
+
→ spec 150줄 초과 시 하위 컴포넌트 spec으로 분할 (기계적 체크 — wc -l)
|
|
71
80
|
- Step A: node {{VIBE_PATH}}/hooks/scripts/clone-to-scss.js \
|
|
72
81
|
/tmp/{feature}/{bp}/sections.json \
|
|
73
|
-
--out=./styles/{feature}/ --feature={feature}
|
|
74
|
-
|
|
82
|
+
--out=./styles/{feature}/{bp}/ --feature={feature}
|
|
83
|
+
→ SCSS 초안. 이후 근거(computed/states/behaviors) 인용 시 수정 허용 — clone-validate가 판정자
|
|
84
|
+
- 병렬 디스패치: 섹션별 빌더 서브에이전트 — spec 전문을 프롬프트에 인라인, 병렬 파일 쓰기는 worktree 격리
|
|
75
85
|
- Step B: node {{VIBE_PATH}}/hooks/scripts/clone-validate.js \
|
|
76
|
-
./styles/{feature}/ /tmp/{feature}/{bp}/sections.json --section={Name}
|
|
77
|
-
- 섹션마다 PASS
|
|
86
|
+
./styles/{feature}/{bp}/ /tmp/{feature}/{bp}/sections.json --section={Name}
|
|
87
|
+
- 섹션마다 PASS 후 완료 처리 (머지 순서: 하위 컴포넌트 → 래퍼)
|
|
88
|
+
|
|
89
|
+
Phase 3C: Responsive Merge (MO+PC 모두 Phase 5 통과 후)
|
|
90
|
+
- node {{VIBE_PATH}}/hooks/scripts/clone-merge-responsive.js \
|
|
91
|
+
--mo=./styles/{feature}/mo/ --pc=./styles/{feature}/pc/ \
|
|
92
|
+
--out=./styles/{feature}/ [--breakpoint=1024]
|
|
93
|
+
→ mobile-first 병합: MO 선언 = 기본, PC diff만 @media (min-width) 블록
|
|
94
|
+
- 컴포넌트 import를 병합 index.scss로 전환 → Phase 4 → Phase 5를 두 뷰포트 모두 재실행
|
|
78
95
|
|
|
79
96
|
Phase 4: Compile Gate (clone SKILL.md 규칙)
|
|
80
|
-
Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md
|
|
97
|
+
Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙; 병합 후엔 MO·PC 양쪽)
|
|
81
98
|
```
|
|
82
99
|
|
|
83
100
|
## Prerequisites
|
|
@@ -94,16 +111,18 @@ Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙)
|
|
|
94
111
|
├── mo/, pc/ # rendered.html, computed.json, screenshot.png, states.json, behaviors.json, sections.json, assets/
|
|
95
112
|
└── project-tokens.json # 기존 프로젝트 토큰 인덱스
|
|
96
113
|
|
|
97
|
-
./components/{feature}/ #
|
|
98
|
-
./components/{feature}/_specs/
|
|
99
|
-
./styles/{feature}/ #
|
|
100
|
-
├──
|
|
114
|
+
./components/{feature}/ # 빌더가 작성한 컴포넌트 (.tsx/.vue/.svelte/.html)
|
|
115
|
+
./components/{feature}/_specs/{mo,pc}/ # clone-spec.js가 생성한 섹션별 빌드 계약서 (*.spec.md)
|
|
116
|
+
./styles/{feature}/ # 최종 병합 SCSS (Phase 3C 산출 — mobile-first @media)
|
|
117
|
+
├── mo/, pc/ # BP별 SCSS 초안 (clone-to-scss.js + 근거 기반 수정)
|
|
118
|
+
├── _tokens.scss # CSS 변수 (병합)
|
|
101
119
|
├── _base.scss # @font-face
|
|
102
|
-
├── _shared.scss # 유틸
|
|
103
|
-
├── sections/_<name>.scss # 섹션별 partial
|
|
104
|
-
├── index.scss # 마스터 orchestrator
|
|
105
|
-
└── class-plan.json # 노드 id → BEM 클래스
|
|
120
|
+
├── _shared.scss # 유틸 + 글로벌 동작 (scroll-lib 등)
|
|
121
|
+
├── sections/_<name>.scss # 섹션별 partial (병합)
|
|
122
|
+
├── index.scss # 마스터 orchestrator (병합)
|
|
123
|
+
└── class-plan.json # 노드 id → BEM 클래스 (병합)
|
|
106
124
|
./public/images/{feature}/ # 다운로드된 이미지/폰트
|
|
125
|
+
./public/ (프로젝트 관례 경로) # favicon·OG·manifest (assets/seo/ 에서 배선)
|
|
107
126
|
```
|
|
108
127
|
|
|
109
128
|
## Legal Notes
|
|
@@ -121,6 +140,7 @@ Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙)
|
|
|
121
140
|
|
|
122
141
|
Claude 기본 행동:
|
|
123
142
|
- 저작권 텍스트 → 플레이스홀더("[Lorem ipsum]") 교체
|
|
143
|
+
- --real-content → 소유/허가 확인 질문 1회 후 verbatim 유지 (본인 사이트 재구축 유스케이스)
|
|
124
144
|
- robots.txt 차단 경로 → 명시적 --ignore-robots 없으면 거부
|
|
125
145
|
- 사용자 의도가 사칭/기만이면 즉시 거부
|
|
126
146
|
```
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI 명령어
|
|
3
|
-
*
|
|
4
|
-
* - vibe gemini key: API Key 설정
|
|
5
|
-
* - vibe gemini status: 상태 확인
|
|
6
|
-
* - vibe gemini logout: 설정 제거
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Gemini 인증 핵심 로직 (process.exit 없음)
|
|
10
|
-
* API Key 확인
|
|
11
|
-
*/
|
|
12
|
-
export declare function geminiAuthCore(): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Gemini 인증 (CLI 명령어용)
|
|
15
|
-
*/
|
|
16
|
-
export declare function geminiAuth(): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* Gemini 상태 확인
|
|
19
|
-
*/
|
|
20
|
-
export declare function geminiStatus(): void;
|
|
21
|
-
/**
|
|
22
|
-
* Gemini 로그아웃
|
|
23
|
-
*/
|
|
24
|
-
export declare function geminiLogout(): void;
|
|
25
|
-
//# sourceMappingURL=gemini-commands.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/llm/gemini-commands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAYxC;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAiCnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CA6BnC"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI 명령어
|
|
3
|
-
*
|
|
4
|
-
* - vibe gemini key: API Key 설정
|
|
5
|
-
* - vibe gemini status: 상태 확인
|
|
6
|
-
* - vibe gemini logout: 설정 제거
|
|
7
|
-
*/
|
|
8
|
-
import fs from 'fs';
|
|
9
|
-
import { getProjectConfigPath, getProjectConfigPaths, readGlobalConfig, writeGlobalConfig, } from '../../infra/lib/config/GlobalConfigManager.js';
|
|
10
|
-
/**
|
|
11
|
-
* Gemini 인증 핵심 로직 (process.exit 없음)
|
|
12
|
-
* API Key 확인
|
|
13
|
-
*/
|
|
14
|
-
export function geminiAuthCore() {
|
|
15
|
-
const config = readGlobalConfig();
|
|
16
|
-
const apiKey = config.credentials?.gemini?.apiKey || process.env.GEMINI_API_KEY;
|
|
17
|
-
if (apiKey) {
|
|
18
|
-
updateConfigOnAuth('apikey');
|
|
19
|
-
console.log('Gemini API Key configured.');
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
console.log('No API key found. Run "vibe gemini key <key>" to set up.');
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Gemini 인증 (CLI 명령어용)
|
|
27
|
-
*/
|
|
28
|
-
export async function geminiAuth() {
|
|
29
|
-
console.log(`
|
|
30
|
-
Gemini Authentication
|
|
31
|
-
|
|
32
|
-
API Key (Google AI Studio):
|
|
33
|
-
vibe gemini key <your-api-key>
|
|
34
|
-
|
|
35
|
-
Get your API key from:
|
|
36
|
-
https://aistudio.google.com/apikey
|
|
37
|
-
`);
|
|
38
|
-
const config = readGlobalConfig();
|
|
39
|
-
const apiKey = config.credentials?.gemini?.apiKey;
|
|
40
|
-
if (apiKey) {
|
|
41
|
-
console.log('API Key: configured');
|
|
42
|
-
console.log('\nStatus: vibe gemini status');
|
|
43
|
-
console.log('Logout: vibe gemini logout');
|
|
44
|
-
process.exit(0);
|
|
45
|
-
}
|
|
46
|
-
console.log('No API key configured.');
|
|
47
|
-
console.log('Run: vibe gemini key <your-api-key>');
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Gemini 상태 확인
|
|
52
|
-
*/
|
|
53
|
-
export function geminiStatus() {
|
|
54
|
-
try {
|
|
55
|
-
const config = readGlobalConfig();
|
|
56
|
-
const geminiCreds = config.credentials?.gemini;
|
|
57
|
-
const hasApiKey = Boolean(geminiCreds?.apiKey) || Boolean(process.env.GEMINI_API_KEY);
|
|
58
|
-
if (hasApiKey) {
|
|
59
|
-
const modelOverrides = config.models;
|
|
60
|
-
const lines = [
|
|
61
|
-
'\nGemini Status\n',
|
|
62
|
-
'Auth: API Key',
|
|
63
|
-
`Source: ${geminiCreds?.apiKey ? '~/.vibe/config.json' : 'GEMINI_API_KEY env'}`,
|
|
64
|
-
];
|
|
65
|
-
lines.push('\nModels:');
|
|
66
|
-
lines.push(` gemini=${modelOverrides?.gemini || process.env.GEMINI_MODEL || '(default)'}`);
|
|
67
|
-
lines.push(` geminiFlash=${modelOverrides?.geminiFlash || process.env.GEMINI_FLASH_MODEL || '(default)'}\n`);
|
|
68
|
-
console.log(lines.join('\n'));
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
console.log(`
|
|
72
|
-
Gemini Status
|
|
73
|
-
|
|
74
|
-
No credentials found.
|
|
75
|
-
|
|
76
|
-
Set up:
|
|
77
|
-
vibe gemini key <your-api-key>
|
|
78
|
-
or set GEMINI_API_KEY env var
|
|
79
|
-
`);
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
83
|
-
console.error('Status check failed:', message);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Gemini 로그아웃
|
|
88
|
-
*/
|
|
89
|
-
export function geminiLogout() {
|
|
90
|
-
try {
|
|
91
|
-
const config = readGlobalConfig();
|
|
92
|
-
if (config.credentials?.gemini) {
|
|
93
|
-
delete config.credentials.gemini;
|
|
94
|
-
writeGlobalConfig(config);
|
|
95
|
-
console.log('Gemini credentials removed from ~/.vibe/config.json');
|
|
96
|
-
}
|
|
97
|
-
const projectRoot = process.cwd();
|
|
98
|
-
const configPath = findExistingProjectConfig(projectRoot);
|
|
99
|
-
if (fs.existsSync(configPath)) {
|
|
100
|
-
try {
|
|
101
|
-
const projConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
102
|
-
if (projConfig.models?.gemini) {
|
|
103
|
-
projConfig.models.gemini.enabled = false;
|
|
104
|
-
projConfig.models.gemini.authType = undefined;
|
|
105
|
-
projConfig.models.gemini.email = undefined;
|
|
106
|
-
fs.writeFileSync(configPath, JSON.stringify(projConfig, null, 2));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch { /* ignore */ }
|
|
110
|
-
}
|
|
111
|
-
console.log('Gemini credentials cleared.');
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
115
|
-
console.error('Logout failed:', message);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* config.json에 Gemini 활성화 기록
|
|
120
|
-
*/
|
|
121
|
-
function updateConfigOnAuth(method) {
|
|
122
|
-
const configPath = findExistingProjectConfig(process.cwd());
|
|
123
|
-
if (!fs.existsSync(configPath))
|
|
124
|
-
return;
|
|
125
|
-
try {
|
|
126
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
127
|
-
if (!config.models)
|
|
128
|
-
config.models = {};
|
|
129
|
-
config.models.gemini = {
|
|
130
|
-
enabled: true,
|
|
131
|
-
authType: method,
|
|
132
|
-
role: 'exploration',
|
|
133
|
-
description: 'Gemini (API Key)',
|
|
134
|
-
};
|
|
135
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
136
|
-
}
|
|
137
|
-
catch { /* ignore */ }
|
|
138
|
-
}
|
|
139
|
-
function findExistingProjectConfig(projectRoot) {
|
|
140
|
-
return getProjectConfigPaths(projectRoot).find(p => fs.existsSync(p))
|
|
141
|
-
|| getProjectConfigPath(projectRoot);
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=gemini-commands.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-commands.js","sourceRoot":"","sources":["../../../src/cli/llm/gemini-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex 플러그인 설치
|
|
3
|
-
*
|
|
4
|
-
* Codex v0.117.0+ 플러그인 시스템 대응.
|
|
5
|
-
* agents + skills → ~/.codex/plugins/vibe/ 플러그인 번들로 패키징.
|
|
6
|
-
*
|
|
7
|
-
* 생성 구조:
|
|
8
|
-
* ~/.codex/plugins/vibe/
|
|
9
|
-
* ├── .codex-plugin/plugin.json
|
|
10
|
-
* ├── skills/
|
|
11
|
-
* ├── agents/
|
|
12
|
-
* └── AGENTS.md
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Codex 플러그인 설치 (agents + skills + manifest + AGENTS.md)
|
|
16
|
-
*
|
|
17
|
-
* @param agentsSource - agents/ 소스 디렉토리
|
|
18
|
-
* @param skillsSource - skills/ 소스 디렉토리
|
|
19
|
-
* @param codexConfigDir - ~/.codex/ 디렉토리
|
|
20
|
-
* @param packageRoot - 패키지 루트 디렉토리
|
|
21
|
-
*/
|
|
22
|
-
export declare function installCodexPlugin(agentsSource: string, skillsSource: string, codexConfigDir: string, packageRoot: string): void;
|
|
23
|
-
export declare const installCodexAgents: typeof installCodexPlugin;
|
|
24
|
-
//# sourceMappingURL=codex-agents.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgFH;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,IAAI,CA+BN;AAGD,eAAO,MAAM,kBAAkB,2BAAqB,CAAC"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex 플러그인 설치
|
|
3
|
-
*
|
|
4
|
-
* Codex v0.117.0+ 플러그인 시스템 대응.
|
|
5
|
-
* agents + skills → ~/.codex/plugins/vibe/ 플러그인 번들로 패키징.
|
|
6
|
-
*
|
|
7
|
-
* 생성 구조:
|
|
8
|
-
* ~/.codex/plugins/vibe/
|
|
9
|
-
* ├── .codex-plugin/plugin.json
|
|
10
|
-
* ├── skills/
|
|
11
|
-
* ├── agents/
|
|
12
|
-
* └── AGENTS.md
|
|
13
|
-
*/
|
|
14
|
-
import path from 'path';
|
|
15
|
-
import fs from 'fs';
|
|
16
|
-
import { ensureDir, removeDirRecursive, copySkillsFiltered, removeLegacySkills } from './fs-utils.js';
|
|
17
|
-
import { GLOBAL_SKILLS, LEGACY_SKILL_DIRS } from './constants.js';
|
|
18
|
-
import { generateCodexAgentsMd } from './codex-instruction.js';
|
|
19
|
-
/**
|
|
20
|
-
* package.json에서 버전 읽기
|
|
21
|
-
*/
|
|
22
|
-
function getPackageVersion(packageRoot) {
|
|
23
|
-
try {
|
|
24
|
-
const pkgPath = path.join(packageRoot, 'package.json');
|
|
25
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
26
|
-
return pkg.version ?? '0.0.0';
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
return '0.0.0';
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* .codex-plugin/plugin.json 매니페스트 생성
|
|
34
|
-
*/
|
|
35
|
-
function writePluginManifest(pluginDir, version) {
|
|
36
|
-
const manifestDir = path.join(pluginDir, '.codex-plugin');
|
|
37
|
-
ensureDir(manifestDir);
|
|
38
|
-
const manifest = {
|
|
39
|
-
name: 'vibe',
|
|
40
|
-
version,
|
|
41
|
-
description: 'VIBE — Easy vibe coding with minimum quality guaranteed',
|
|
42
|
-
skills: './skills/',
|
|
43
|
-
agents: './agents/',
|
|
44
|
-
};
|
|
45
|
-
fs.writeFileSync(path.join(manifestDir, 'plugin.json'), JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* agents/*.md → pluginDir/agents/ 재귀 복사 (YAML frontmatter 제거)
|
|
49
|
-
*/
|
|
50
|
-
function installAgentsToPlugin(agentsSource, pluginAgentsDir) {
|
|
51
|
-
if (!fs.existsSync(agentsSource))
|
|
52
|
-
return 0;
|
|
53
|
-
ensureDir(pluginAgentsDir);
|
|
54
|
-
let installed = 0;
|
|
55
|
-
function processDirectory(srcDir, destDir) {
|
|
56
|
-
ensureDir(destDir);
|
|
57
|
-
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
58
|
-
for (const entry of entries) {
|
|
59
|
-
const srcPath = path.join(srcDir, entry.name);
|
|
60
|
-
const destPath = path.join(destDir, entry.name);
|
|
61
|
-
if (entry.isDirectory()) {
|
|
62
|
-
processDirectory(srcPath, destPath);
|
|
63
|
-
}
|
|
64
|
-
else if (entry.name.endsWith('.md')) {
|
|
65
|
-
try {
|
|
66
|
-
let content = fs.readFileSync(srcPath, 'utf-8');
|
|
67
|
-
content = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
68
|
-
content = content.replace(/^---\n[\s\S]*?\n---\n/, '');
|
|
69
|
-
fs.writeFileSync(destPath, content.trimStart(), 'utf-8');
|
|
70
|
-
installed++;
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
// skip failed files
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
processDirectory(agentsSource, pluginAgentsDir);
|
|
79
|
-
return installed;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Codex 플러그인 설치 (agents + skills + manifest + AGENTS.md)
|
|
83
|
-
*
|
|
84
|
-
* @param agentsSource - agents/ 소스 디렉토리
|
|
85
|
-
* @param skillsSource - skills/ 소스 디렉토리
|
|
86
|
-
* @param codexConfigDir - ~/.codex/ 디렉토리
|
|
87
|
-
* @param packageRoot - 패키지 루트 디렉토리
|
|
88
|
-
*/
|
|
89
|
-
export function installCodexPlugin(agentsSource, skillsSource, codexConfigDir, packageRoot) {
|
|
90
|
-
const pluginDir = path.join(codexConfigDir, 'plugins', 'vibe');
|
|
91
|
-
// 클린 설치
|
|
92
|
-
if (fs.existsSync(pluginDir)) {
|
|
93
|
-
removeDirRecursive(pluginDir);
|
|
94
|
-
}
|
|
95
|
-
ensureDir(pluginDir);
|
|
96
|
-
// 1. 매니페스트 생성
|
|
97
|
-
const version = getPackageVersion(packageRoot);
|
|
98
|
-
writePluginManifest(pluginDir, version);
|
|
99
|
-
// 2. Agents 설치
|
|
100
|
-
const agentCount = installAgentsToPlugin(agentsSource, path.join(pluginDir, 'agents'));
|
|
101
|
-
// 3. Skills 설치
|
|
102
|
-
const pluginSkillsDir = path.join(pluginDir, 'skills');
|
|
103
|
-
if (fs.existsSync(skillsSource)) {
|
|
104
|
-
ensureDir(pluginSkillsDir);
|
|
105
|
-
removeLegacySkills(pluginSkillsDir, LEGACY_SKILL_DIRS);
|
|
106
|
-
copySkillsFiltered(skillsSource, pluginSkillsDir, GLOBAL_SKILLS);
|
|
107
|
-
}
|
|
108
|
-
// 4. AGENTS.md 생성 (플러그인 내부)
|
|
109
|
-
generateCodexAgentsMd(pluginDir, packageRoot);
|
|
110
|
-
console.log(` 📦 Codex plugin: ${agentCount} agents installed → ${pluginDir}`);
|
|
111
|
-
}
|
|
112
|
-
// 레거시 호환 — installCodexAgents 이름으로도 export
|
|
113
|
-
export const installCodexAgents = installCodexPlugin;
|
|
114
|
-
//# sourceMappingURL=codex-agents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-agents.js","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex CLI 전역 AGENTS.md 생성
|
|
3
|
-
*
|
|
4
|
-
* CLAUDE.md에서 VIBE 섹션을 읽어 Codex AGENTS.md 형식으로 변환
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* 전역 ~/.codex/AGENTS.md 생성
|
|
8
|
-
*/
|
|
9
|
-
export declare function generateCodexAgentsMd(codexDir: string, packageRoot: string): void;
|
|
10
|
-
//# sourceMappingURL=codex-instruction.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-instruction.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmDH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQjF"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex CLI 전역 AGENTS.md 생성
|
|
3
|
-
*
|
|
4
|
-
* CLAUDE.md에서 VIBE 섹션을 읽어 Codex AGENTS.md 형식으로 변환
|
|
5
|
-
*/
|
|
6
|
-
import path from 'path';
|
|
7
|
-
import fs from 'fs';
|
|
8
|
-
const CORE_START_MARKER = '# VIBE';
|
|
9
|
-
const CORE_END_MARKER = '<!-- VIBE:END -->';
|
|
10
|
-
/**
|
|
11
|
-
* CLAUDE.md에서 VIBE 섹션 추출 (CLI-neutral 공통 내용)
|
|
12
|
-
*/
|
|
13
|
-
function getVibeInstructionContent(packageRoot) {
|
|
14
|
-
const claudeMdPath = path.join(packageRoot, 'CLAUDE.md');
|
|
15
|
-
if (!fs.existsSync(claudeMdPath))
|
|
16
|
-
return '';
|
|
17
|
-
const content = fs.readFileSync(claudeMdPath, 'utf-8').replace(/\r\n/g, '\n');
|
|
18
|
-
const startIdx = content.indexOf(CORE_START_MARKER);
|
|
19
|
-
const endIdx = content.indexOf(CORE_END_MARKER);
|
|
20
|
-
if (startIdx === -1)
|
|
21
|
-
return '';
|
|
22
|
-
const endPos = endIdx !== -1 ? endIdx + CORE_END_MARKER.length : content.length;
|
|
23
|
-
return content.substring(startIdx, endPos);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* VIBE 내용을 Codex 형식으로 변환
|
|
27
|
-
* - "Claude Code Exclusive" 문구 제거
|
|
28
|
-
* - hooks 관련 섹션 제거 (Codex 미지원)
|
|
29
|
-
* - 경로 참조를 ~/.codex/ 기준으로 변환
|
|
30
|
-
*/
|
|
31
|
-
function adaptForCodex(content) {
|
|
32
|
-
let adapted = content;
|
|
33
|
-
// "Claude Code Exclusive" 문구 제거
|
|
34
|
-
adapted = adapted.replace(/\(Claude Code Exclusive\)/g, '');
|
|
35
|
-
adapted = adapted.replace(/Claude Code Exclusive/g, '');
|
|
36
|
-
// Hooks System 섹션 제거 (Codex 미지원)
|
|
37
|
-
adapted = adapted.replace(/## Hooks System\n[\s\S]*?(?=\n## )/g, '');
|
|
38
|
-
// ~/.claude/ → ~/.codex/ 경로 변환
|
|
39
|
-
adapted = adapted.replace(/~\/\.claude\//g, '~/.codex/');
|
|
40
|
-
adapted = adapted.replace(/\.claude\//g, '.codex/');
|
|
41
|
-
// "Claude Code" → "Codex CLI" 변환 (일반적 참조)
|
|
42
|
-
adapted = adapted.replace(/Claude Code/g, 'Codex CLI');
|
|
43
|
-
return adapted.trim();
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* 전역 ~/.codex/AGENTS.md 생성
|
|
47
|
-
*/
|
|
48
|
-
export function generateCodexAgentsMd(codexDir, packageRoot) {
|
|
49
|
-
const vibeContent = getVibeInstructionContent(packageRoot);
|
|
50
|
-
if (!vibeContent)
|
|
51
|
-
return;
|
|
52
|
-
const codexContent = adaptForCodex(vibeContent);
|
|
53
|
-
const agentsMdPath = path.join(codexDir, 'AGENTS.md');
|
|
54
|
-
fs.writeFileSync(agentsMdPath, codexContent + '\n', 'utf-8');
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=codex-instruction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-instruction.js","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C;;GAEG;AACH,SAAS,yBAAyB,CAAC,WAAmB;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhD,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAEhF,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,OAAO,GAAG,OAAO,CAAC;IAEtB,gCAAgC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAExD,iCAAiC;IACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;IAErE,+BAA+B;IAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEpD,0CAA0C;IAC1C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEvD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,WAAmB;IACzE,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEtD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI 에이전트 변환 및 설치
|
|
3
|
-
*
|
|
4
|
-
* VIBE 에이전트 마크다운 파일을 Gemini CLI 형식
|
|
5
|
-
* (YAML frontmatter: name, description만) 으로 변환하여 ~/.gemini/agents/에 설치
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Gemini CLI 에이전트 설치
|
|
9
|
-
* agents/ → ~/.gemini/agents/ 재귀 순회하여 변환 후 설치
|
|
10
|
-
*/
|
|
11
|
-
export declare function installGeminiAgents(agentsSource: string, geminiAgentsDir: string): void;
|
|
12
|
-
//# sourceMappingURL=gemini-agents.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/gemini-agents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAsCvF"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI 에이전트 변환 및 설치
|
|
3
|
-
*
|
|
4
|
-
* VIBE 에이전트 마크다운 파일을 Gemini CLI 형식
|
|
5
|
-
* (YAML frontmatter: name, description만) 으로 변환하여 ~/.gemini/agents/에 설치
|
|
6
|
-
*/
|
|
7
|
-
import path from 'path';
|
|
8
|
-
import fs from 'fs';
|
|
9
|
-
import { ensureDir, removeDirRecursive } from './fs-utils.js';
|
|
10
|
-
/**
|
|
11
|
-
* VIBE 에이전트를 Gemini CLI 형식으로 변환
|
|
12
|
-
* Gemini frontmatter: name, description만 (model/tools/permissionMode 없음)
|
|
13
|
-
*/
|
|
14
|
-
function convertAgentToGemini(content, filename) {
|
|
15
|
-
const normalizedContent = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
16
|
-
const name = path.basename(filename, '.md');
|
|
17
|
-
// 제목 추출
|
|
18
|
-
const titleMatch = normalizedContent.match(/^# (.+)$/m);
|
|
19
|
-
const title = titleMatch ? titleMatch[1].trim() : name;
|
|
20
|
-
// Role 섹션 추출
|
|
21
|
-
const roleMatch = normalizedContent.match(/## Role\s*\n([\s\S]*?)(?=\n## )/);
|
|
22
|
-
const roleLines = roleMatch
|
|
23
|
-
? roleMatch[1]
|
|
24
|
-
.split('\n')
|
|
25
|
-
.filter((line) => line.trim().startsWith('- '))
|
|
26
|
-
.map((line) => line.trim().replace(/^- /, '').trim())
|
|
27
|
-
.slice(0, 3)
|
|
28
|
-
: [];
|
|
29
|
-
const description = roleLines.length > 0
|
|
30
|
-
? `${title}. ${roleLines.join(', ')}.`
|
|
31
|
-
: title;
|
|
32
|
-
// Gemini YAML frontmatter (name, description만)
|
|
33
|
-
let frontmatter = '---\n';
|
|
34
|
-
frontmatter += `name: ${name}\n`;
|
|
35
|
-
frontmatter += `description: ${description}\n`;
|
|
36
|
-
frontmatter += '---\n';
|
|
37
|
-
// 기존 frontmatter 제거 후 원본 본문 유지
|
|
38
|
-
const bodyContent = normalizedContent.replace(/^---\n[\s\S]*?\n---\n/, '');
|
|
39
|
-
return `${frontmatter}\n${bodyContent}`;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Gemini CLI 에이전트 설치
|
|
43
|
-
* agents/ → ~/.gemini/agents/ 재귀 순회하여 변환 후 설치
|
|
44
|
-
*/
|
|
45
|
-
export function installGeminiAgents(agentsSource, geminiAgentsDir) {
|
|
46
|
-
if (!fs.existsSync(agentsSource)) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
// 클린 설치
|
|
50
|
-
if (fs.existsSync(geminiAgentsDir)) {
|
|
51
|
-
removeDirRecursive(geminiAgentsDir);
|
|
52
|
-
}
|
|
53
|
-
ensureDir(geminiAgentsDir);
|
|
54
|
-
let installed = 0;
|
|
55
|
-
function processDirectory(srcDir, destDir) {
|
|
56
|
-
ensureDir(destDir);
|
|
57
|
-
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
58
|
-
for (const entry of entries) {
|
|
59
|
-
const srcPath = path.join(srcDir, entry.name);
|
|
60
|
-
const destPath = path.join(destDir, entry.name);
|
|
61
|
-
if (entry.isDirectory()) {
|
|
62
|
-
processDirectory(srcPath, destPath);
|
|
63
|
-
}
|
|
64
|
-
else if (entry.name.endsWith('.md')) {
|
|
65
|
-
try {
|
|
66
|
-
const content = fs.readFileSync(srcPath, 'utf-8');
|
|
67
|
-
const geminiContent = convertAgentToGemini(content, entry.name);
|
|
68
|
-
fs.writeFileSync(destPath, geminiContent, 'utf-8');
|
|
69
|
-
installed++;
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
// skip failed files
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
processDirectory(agentsSource, geminiAgentsDir);
|
|
78
|
-
console.log(` 📦 Gemini agents: ${installed} installed`);
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=gemini-agents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-agents.js","sourceRoot":"","sources":["../../../src/cli/postinstall/gemini-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI 전역 GEMINI.md 생성
|
|
3
|
-
*
|
|
4
|
-
* CLAUDE.md에서 VIBE 섹션을 읽어 GEMINI.md 형식으로 변환
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* 전역 ~/.gemini/GEMINI.md 생성
|
|
8
|
-
*/
|
|
9
|
-
export declare function generateGeminiMd(geminiDir: string, packageRoot: string): void;
|
|
10
|
-
//# sourceMappingURL=gemini-instruction.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-instruction.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/gemini-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsDH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQ7E"}
|