@stackmemoryai/stackmemory 0.8.1 → 1.0.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/LICENSE +64 -0
- package/README.md +81 -273
- package/dist/src/agents/core/agent-task-manager.js +0 -1
- package/dist/src/agents/verifiers/base-verifier.js +0 -1
- package/dist/src/agents/verifiers/formatter-verifier.js +0 -1
- package/dist/src/agents/verifiers/llm-judge.js +0 -1
- package/dist/src/cli/auto-detect.js +0 -1
- package/dist/src/cli/claude-sm-danger.js +0 -1
- package/dist/src/cli/claude-sm.js +9 -1
- package/dist/src/cli/codex-sm-danger.js +0 -1
- package/dist/src/cli/codex-sm.js +9 -1
- package/dist/src/cli/commands/api.js +0 -1
- package/dist/src/cli/commands/auto-background.js +0 -1
- package/dist/src/cli/commands/cleanup-processes.js +0 -1
- package/dist/src/cli/commands/clear.js +0 -1
- package/dist/src/cli/commands/config.js +0 -1
- package/dist/src/cli/commands/context-rehydrate.js +0 -1
- package/dist/src/cli/commands/context.js +0 -1
- package/dist/src/cli/commands/daemon.js +0 -1
- package/dist/src/cli/commands/dashboard.js +4 -5
- package/dist/src/cli/commands/db.js +0 -1
- package/dist/src/cli/commands/decision.js +0 -1
- package/dist/src/cli/commands/discovery.js +0 -1
- package/dist/src/cli/commands/handoff.js +0 -1
- package/dist/src/cli/commands/hooks.js +0 -1
- package/dist/src/cli/commands/linear.js +0 -1
- package/dist/src/cli/commands/log.js +0 -1
- package/dist/src/cli/commands/login.js +0 -1
- package/dist/src/cli/commands/migrate.js +0 -1
- package/dist/src/cli/commands/model.js +0 -1
- package/dist/src/cli/commands/onboard.js +0 -1
- package/dist/src/cli/commands/ping.js +0 -1
- package/dist/src/cli/commands/projects.js +0 -1
- package/dist/src/cli/commands/ralph.js +0 -1
- package/dist/src/cli/commands/retrieval.js +0 -1
- package/dist/src/cli/commands/search.js +0 -1
- package/dist/src/cli/commands/service.js +0 -1
- package/dist/src/cli/commands/session.js +0 -1
- package/dist/src/cli/commands/setup.js +0 -4
- package/dist/src/cli/commands/shell.js +0 -1
- package/dist/src/cli/commands/signup.js +0 -1
- package/dist/src/cli/commands/skills.js +4 -3
- package/dist/src/cli/commands/storage-tier.js +0 -1
- package/dist/src/cli/commands/sweep.js +0 -1
- package/dist/src/cli/commands/tasks.js +0 -1
- package/dist/src/cli/commands/worktree.js +10 -5
- package/dist/src/cli/index.js +8 -5
- package/dist/src/cli/opencode-sm.js +0 -1
- package/dist/src/cli/utils/viewer.js +0 -1
- package/dist/src/core/config/config-manager.js +0 -1
- package/dist/src/core/config/feature-flags.js +0 -1
- package/dist/src/core/config/storage-config.js +0 -1
- package/dist/src/core/config/types.js +0 -1
- package/dist/src/core/context/auto-context.js +0 -1
- package/dist/src/core/context/dual-stack-manager.js +0 -1
- package/dist/src/core/context/enhanced-rehydration.js +0 -2
- package/dist/src/core/context/frame-database.js +60 -6
- package/dist/src/core/context/frame-digest.js +0 -1
- package/dist/src/core/context/frame-handoff-manager.js +0 -1
- package/dist/src/core/context/frame-lifecycle-hooks.js +0 -1
- package/dist/src/core/context/frame-recovery.js +0 -1
- package/dist/src/core/context/frame-stack.js +0 -1
- package/dist/src/core/context/frame-types.js +0 -1
- package/dist/src/core/context/index.js +0 -1
- package/dist/src/core/context/permission-manager.js +0 -1
- package/dist/src/core/context/recursive-context-manager.js +3 -2
- package/dist/src/core/context/refactored-frame-manager.js +0 -1
- package/dist/src/core/context/shared-context-layer.js +0 -1
- package/dist/src/core/context/stack-merge-resolver.js +0 -1
- package/dist/src/core/context/validation.js +0 -1
- package/dist/src/core/database/batch-operations.js +0 -1
- package/dist/src/core/database/connection-pool.js +0 -1
- package/dist/src/core/database/database-adapter.js +0 -1
- package/dist/src/core/database/embedding-provider-factory.js +0 -1
- package/dist/src/core/database/embedding-provider.js +0 -1
- package/dist/src/core/database/migration-manager.js +0 -1
- package/dist/src/core/database/ollama-embedding-provider.js +0 -1
- package/dist/src/core/database/openai-embedding-provider.js +0 -1
- package/dist/src/core/database/query-cache.js +0 -1
- package/dist/src/core/database/query-router.js +0 -1
- package/dist/src/core/database/sqlite-adapter.js +18 -108
- package/dist/src/core/database/transformers-embedding-provider.js +0 -1
- package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -1
- package/dist/src/core/digest/frame-digest-integration.js +0 -1
- package/dist/src/core/digest/hybrid-digest-generator.js +0 -1
- package/dist/src/core/digest/index.js +0 -1
- package/dist/src/core/digest/types.js +0 -1
- package/dist/src/core/errors/error-utils.js +0 -1
- package/dist/src/core/errors/index.js +0 -1
- package/dist/src/core/errors/recovery.js +0 -1
- package/dist/src/core/execution/parallel-executor.js +0 -1
- package/dist/src/core/extensions/custom-tools.js +0 -1
- package/dist/src/core/extensions/index.js +0 -1
- package/dist/src/core/extensions/loader.js +0 -1
- package/dist/src/core/extensions/plugin-system.js +0 -1
- package/dist/src/core/extensions/provider-adapter.js +0 -1
- package/dist/src/core/extensions/sandbox-runtime.js +0 -1
- package/dist/src/core/extensions/types.js +0 -1
- package/dist/src/core/frame/workflow-templates.js +0 -1
- package/dist/src/core/merge/conflict-detector.js +0 -1
- package/dist/src/core/merge/index.js +0 -1
- package/dist/src/core/merge/resolution-engine.js +0 -1
- package/dist/src/core/merge/stack-diff.js +0 -1
- package/dist/src/core/merge/types.js +0 -1
- package/dist/src/core/merge/unified-merge-resolver.js +0 -1
- package/dist/src/core/models/fallback-monitor.js +0 -1
- package/dist/src/core/models/model-router.js +0 -1
- package/dist/src/core/monitoring/error-handler.js +0 -1
- package/dist/src/core/monitoring/logger.js +0 -1
- package/dist/src/core/monitoring/metrics.js +0 -1
- package/dist/src/core/monitoring/progress-tracker.js +0 -1
- package/dist/src/core/monitoring/session-monitor.js +0 -1
- package/dist/src/core/performance/context-cache.js +0 -1
- package/dist/src/core/performance/index.js +0 -1
- package/dist/src/core/performance/lazy-context-loader.js +3 -8
- package/dist/src/core/performance/monitor.js +0 -1
- package/dist/src/core/performance/optimized-frame-context.js +0 -1
- package/dist/src/core/performance/performance-benchmark.js +0 -1
- package/dist/src/core/performance/performance-profiler.js +0 -1
- package/dist/src/core/performance/streaming-jsonl-parser.js +0 -1
- package/dist/src/core/persistence/postgres-adapter.js +0 -1
- package/dist/src/core/projects/project-isolation.js +0 -1
- package/dist/src/core/projects/project-manager.js +0 -1
- package/dist/src/core/query/query-parser.js +0 -1
- package/dist/src/core/query/query-templates.js +0 -1
- package/dist/src/core/retrieval/context-retriever.js +0 -1
- package/dist/src/core/retrieval/index.js +0 -1
- package/dist/src/core/retrieval/llm-context-retrieval.js +0 -1
- package/dist/src/core/retrieval/llm-provider.js +0 -1
- package/dist/src/core/retrieval/privacy-filter.js +0 -1
- package/dist/src/core/retrieval/retrieval-audit.js +0 -1
- package/dist/src/core/retrieval/summary-generator.js +15 -6
- package/dist/src/core/retrieval/types.js +0 -1
- package/dist/src/core/retrieval/unified-context-assembler.js +0 -1
- package/dist/src/core/security/index.js +0 -1
- package/dist/src/core/security/input-sanitizer.js +0 -1
- package/dist/src/core/session/clear-survival.js +0 -1
- package/dist/src/core/session/enhanced-handoff.js +0 -1
- package/dist/src/core/session/handoff-generator.js +0 -1
- package/dist/src/core/session/index.js +0 -1
- package/dist/src/core/session/session-manager.js +0 -1
- package/dist/src/core/skills/index.js +0 -1
- package/dist/src/core/skills/skill-storage.js +0 -1
- package/dist/src/core/skills/types.js +0 -1
- package/dist/src/core/storage/chromadb-adapter.js +0 -1
- package/dist/src/core/storage/infinite-storage.js +0 -1
- package/dist/src/core/storage/project-registry.js +0 -1
- package/dist/src/core/storage/remote-storage.js +4 -2
- package/dist/src/core/storage/storage-tier-manager.js +0 -1
- package/dist/src/core/storage/two-tier-storage.js +0 -1
- package/dist/src/core/trace/cli-trace-wrapper.js +0 -1
- package/dist/src/core/trace/db-trace-wrapper.js +0 -1
- package/dist/src/core/trace/debug-trace.js +0 -1
- package/dist/src/core/trace/index.js +0 -1
- package/dist/src/core/trace/linear-api-wrapper.js +0 -1
- package/dist/src/core/trace/trace-detector.js +0 -1
- package/dist/src/core/trace/trace-store.js +4 -5
- package/dist/src/core/trace/types.js +0 -1
- package/dist/src/core/types.js +0 -1
- package/dist/src/core/utils/async-mutex.js +0 -1
- package/dist/src/core/utils/compression.js +0 -1
- package/dist/src/core/utils/update-checker.js +0 -1
- package/dist/src/core/worktree/worktree-manager.js +0 -1
- package/dist/src/daemon/daemon-config.js +0 -1
- package/dist/src/daemon/services/context-service.js +0 -1
- package/dist/src/daemon/services/linear-service.js +0 -1
- package/dist/src/daemon/services/maintenance-service.js +0 -1
- package/dist/src/daemon/services/memory-service.js +0 -1
- package/dist/src/daemon/session-daemon.js +0 -1
- package/dist/src/daemon/unified-daemon.js +0 -1
- package/dist/src/features/analytics/api/analytics-api.js +0 -1
- package/dist/src/features/analytics/core/analytics-service.js +1 -2
- package/dist/src/features/analytics/index.js +0 -1
- package/dist/src/features/analytics/queries/metrics-queries.js +8 -9
- package/dist/src/features/analytics/types/metrics.js +0 -1
- package/dist/src/features/browser/browser-mcp.js +0 -1
- package/dist/src/features/sweep/index.js +0 -1
- package/dist/src/features/sweep/prediction-client.js +0 -1
- package/dist/src/features/sweep/prompt-builder.js +0 -1
- package/dist/src/features/sweep/pty-wrapper.js +9 -1
- package/dist/src/features/sweep/state-watcher.js +0 -1
- package/dist/src/features/sweep/status-bar.js +0 -1
- package/dist/src/features/sweep/sweep-server-manager.js +0 -1
- package/dist/src/features/sweep/tab-interceptor.js +0 -1
- package/dist/src/features/sweep/types.js +0 -1
- package/dist/src/features/tasks/linear-task-manager.js +0 -1
- package/dist/src/features/tasks/task-aware-context.js +0 -1
- package/dist/src/features/tui/simple-monitor.js +0 -1
- package/dist/src/features/tui/swarm-monitor.js +0 -1
- package/dist/src/features/web/client/stores/task-store.js +0 -1
- package/dist/src/features/web/server/index.js +0 -1
- package/dist/src/features/workers/tmux-manager.js +0 -1
- package/dist/src/features/workers/worker-registry.js +0 -1
- package/dist/src/hooks/auto-background.js +0 -1
- package/dist/src/hooks/config.js +0 -1
- package/dist/src/hooks/daemon.js +8 -1
- package/dist/src/hooks/diffmem-hooks.js +0 -1
- package/dist/src/hooks/events.js +0 -1
- package/dist/src/hooks/graphiti-hooks.js +104 -0
- package/dist/src/hooks/index.js +0 -1
- package/dist/src/hooks/linear-task-picker.js +0 -1
- package/dist/src/hooks/schemas.js +0 -1
- package/dist/src/hooks/secure-fs.js +0 -1
- package/dist/src/hooks/security-logger.js +0 -1
- package/dist/src/hooks/session-summary.js +0 -1
- package/dist/src/index.js +0 -1
- package/dist/src/integrations/anthropic/client.js +0 -1
- package/dist/src/integrations/claude-code/agent-bridge.js +0 -1
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +0 -1
- package/dist/src/integrations/claude-code/lifecycle-hooks.js +0 -1
- package/dist/src/integrations/claude-code/post-task-hooks.js +0 -1
- package/dist/src/integrations/claude-code/subagent-client-stub.js +0 -1
- package/dist/src/integrations/claude-code/subagent-client.js +0 -1
- package/dist/src/integrations/claude-code/task-coordinator.js +0 -1
- package/dist/src/integrations/diffmem/client.js +0 -1
- package/dist/src/integrations/diffmem/config.js +0 -1
- package/dist/src/integrations/diffmem/index.js +0 -1
- package/dist/src/integrations/diffmem/types.js +0 -1
- package/dist/src/integrations/graphiti/client.js +103 -0
- package/dist/src/integrations/graphiti/config.js +17 -0
- package/dist/src/integrations/graphiti/types.js +4 -0
- package/dist/src/integrations/linear/auth.js +0 -1
- package/dist/src/integrations/linear/auto-sync.js +0 -1
- package/dist/src/integrations/linear/client.js +0 -1
- package/dist/src/integrations/linear/config.js +0 -1
- package/dist/src/integrations/linear/migration.js +0 -1
- package/dist/src/integrations/linear/oauth-server.js +0 -1
- package/dist/src/integrations/linear/rest-client.js +0 -1
- package/dist/src/integrations/linear/sync-manager.js +0 -1
- package/dist/src/integrations/linear/sync-service.js +0 -1
- package/dist/src/integrations/linear/sync.js +0 -1
- package/dist/src/integrations/linear/types.js +0 -1
- package/dist/src/integrations/linear/unified-sync.js +0 -1
- package/dist/src/integrations/linear/webhook-handler.js +0 -1
- package/dist/src/integrations/linear/webhook-server.js +0 -1
- package/dist/src/integrations/linear/webhook.js +0 -1
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +0 -1
- package/dist/src/integrations/mcp/handlers/context-handlers.js +43 -30
- package/dist/src/integrations/mcp/handlers/diffmem-handlers.js +0 -1
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js +0 -1
- package/dist/src/integrations/mcp/handlers/index.js +1 -3
- package/dist/src/integrations/mcp/handlers/linear-handlers.js +24 -61
- package/dist/src/integrations/mcp/handlers/skill-handlers.js +0 -1
- package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -1
- package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -1
- package/dist/src/integrations/mcp/index.js +0 -1
- package/dist/src/integrations/mcp/middleware/tool-scoring.js +3 -2
- package/dist/src/integrations/mcp/pending-utils.js +0 -1
- package/dist/src/integrations/mcp/refactored-server.js +0 -1
- package/dist/src/integrations/mcp/remote-server.js +0 -1
- package/dist/src/integrations/mcp/schemas.js +0 -1
- package/dist/src/integrations/mcp/server.js +20 -24
- package/dist/src/integrations/mcp/tool-definitions-code.js +0 -1
- package/dist/src/integrations/mcp/tool-definitions.js +0 -1
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -1
- package/dist/src/integrations/ralph/context/context-budget-manager.js +0 -1
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +0 -1
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +0 -1
- package/dist/src/integrations/ralph/index.js +0 -1
- package/dist/src/integrations/ralph/learning/pattern-learner.js +0 -1
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +5 -5
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +0 -1
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js +0 -1
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -1
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -1
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +0 -1
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +0 -1
- package/dist/src/integrations/ralph/performance/performance-optimizer.js +0 -1
- package/dist/src/integrations/ralph/recovery/crash-recovery.js +0 -1
- package/dist/src/integrations/ralph/state/state-reconciler.js +25 -9
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +0 -1
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +0 -1
- package/dist/src/integrations/ralph/types.js +0 -1
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js +0 -1
- package/dist/src/mcp/stackmemory-mcp-server.js +0 -1
- package/dist/src/middleware/exponential-rate-limiter.js +0 -1
- package/dist/src/models/user.model.js +0 -1
- package/dist/src/orchestrators/multimodal/constants.js +0 -1
- package/dist/src/orchestrators/multimodal/harness.js +0 -1
- package/dist/src/orchestrators/multimodal/providers.js +0 -1
- package/dist/src/orchestrators/multimodal/types.js +0 -1
- package/dist/src/orchestrators/multimodal/utils.js +0 -1
- package/dist/src/servers/production/auth-middleware.js +0 -1
- package/dist/src/services/config-service.js +0 -1
- package/dist/src/services/context-service.js +0 -1
- package/dist/src/skills/api-discovery.js +0 -1
- package/dist/src/skills/api-skill.js +0 -1
- package/dist/src/skills/claude-skills.js +0 -1
- package/dist/src/skills/dashboard-launcher.js +0 -1
- package/dist/src/skills/linear-task-runner.js +0 -1
- package/dist/src/skills/recursive-agent-orchestrator.js +0 -1
- package/dist/src/skills/repo-ingestion-skill.js +0 -1
- package/dist/src/skills/spec-generator-skill.js +0 -1
- package/dist/src/skills/unified-rlm-orchestrator.js +0 -1
- package/dist/src/types/task.js +0 -1
- package/dist/src/utils/env.js +0 -1
- package/dist/src/utils/formatting.js +0 -1
- package/dist/src/utils/process-cleanup.js +0 -1
- package/package.json +32 -7
- package/dist/scripts/benchmark-performance.js +0 -48
- package/dist/scripts/benchmark-performance.js.map +0 -7
- package/dist/scripts/check-redis.js +0 -42
- package/dist/scripts/check-redis.js.map +0 -7
- package/dist/scripts/initialize.js +0 -183
- package/dist/scripts/initialize.js.map +0 -7
- package/dist/scripts/list-linear-tasks.js +0 -124
- package/dist/scripts/list-linear-tasks.js.map +0 -7
- package/dist/scripts/measure-handoff-impact.js +0 -340
- package/dist/scripts/measure-handoff-impact.js.map +0 -7
- package/dist/scripts/query-chromadb.js +0 -160
- package/dist/scripts/query-chromadb.js.map +0 -7
- package/dist/scripts/show-linear-summary.js +0 -119
- package/dist/scripts/show-linear-summary.js.map +0 -7
- package/dist/scripts/simple-swarm-demo.js +0 -90
- package/dist/scripts/simple-swarm-demo.js.map +0 -7
- package/dist/scripts/status.js +0 -155
- package/dist/scripts/status.js.map +0 -7
- package/dist/scripts/test-chromadb-sync.js +0 -192
- package/dist/scripts/test-chromadb-sync.js.map +0 -7
- package/dist/scripts/test-ralph-iteration-fix.js +0 -86
- package/dist/scripts/test-ralph-iteration-fix.js.map +0 -7
- package/dist/scripts/test-ralph-iterations.js +0 -121
- package/dist/scripts/test-ralph-iterations.js.map +0 -7
- package/dist/scripts/test-redis-storage.js +0 -389
- package/dist/scripts/test-redis-storage.js.map +0 -7
- package/dist/scripts/test-simple-ralph-state-sync.js +0 -115
- package/dist/scripts/test-simple-ralph-state-sync.js.map +0 -7
- package/dist/scripts/test-swarm-fixes.js +0 -125
- package/dist/scripts/test-swarm-fixes.js.map +0 -7
- package/dist/scripts/test-swarm-tui.js +0 -23
- package/dist/scripts/test-swarm-tui.js.map +0 -7
- package/dist/scripts/test-tui-shortcuts.js +0 -52
- package/dist/scripts/test-tui-shortcuts.js.map +0 -7
- package/dist/scripts/validate-tui-shortcuts.js +0 -60
- package/dist/scripts/validate-tui-shortcuts.js.map +0 -7
- package/dist/src/agents/core/agent-task-manager.js.map +0 -7
- package/dist/src/agents/verifiers/base-verifier.js.map +0 -7
- package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -7
- package/dist/src/agents/verifiers/llm-judge.js.map +0 -7
- package/dist/src/cli/auto-detect.js.map +0 -7
- package/dist/src/cli/claude-sm-danger.js.map +0 -7
- package/dist/src/cli/claude-sm.js.map +0 -7
- package/dist/src/cli/codex-sm-danger.js.map +0 -7
- package/dist/src/cli/codex-sm.js.map +0 -7
- package/dist/src/cli/commands/api.js.map +0 -7
- package/dist/src/cli/commands/auto-background.js.map +0 -7
- package/dist/src/cli/commands/cleanup-processes.js.map +0 -7
- package/dist/src/cli/commands/clear.js.map +0 -7
- package/dist/src/cli/commands/config.js.map +0 -7
- package/dist/src/cli/commands/context-rehydrate.js.map +0 -7
- package/dist/src/cli/commands/context.js.map +0 -7
- package/dist/src/cli/commands/daemon.js.map +0 -7
- package/dist/src/cli/commands/dashboard.js.map +0 -7
- package/dist/src/cli/commands/db.js.map +0 -7
- package/dist/src/cli/commands/decision.js.map +0 -7
- package/dist/src/cli/commands/discovery.js.map +0 -7
- package/dist/src/cli/commands/handoff.js.map +0 -7
- package/dist/src/cli/commands/hooks.js.map +0 -7
- package/dist/src/cli/commands/linear.js.map +0 -7
- package/dist/src/cli/commands/log.js.map +0 -7
- package/dist/src/cli/commands/login.js.map +0 -7
- package/dist/src/cli/commands/migrate.js.map +0 -7
- package/dist/src/cli/commands/model.js.map +0 -7
- package/dist/src/cli/commands/onboard.js.map +0 -7
- package/dist/src/cli/commands/ping.js.map +0 -7
- package/dist/src/cli/commands/projects.js.map +0 -7
- package/dist/src/cli/commands/ralph.js.map +0 -7
- package/dist/src/cli/commands/retrieval.js.map +0 -7
- package/dist/src/cli/commands/search.js.map +0 -7
- package/dist/src/cli/commands/service.js.map +0 -7
- package/dist/src/cli/commands/session.js.map +0 -7
- package/dist/src/cli/commands/settings.js +0 -306
- package/dist/src/cli/commands/settings.js.map +0 -7
- package/dist/src/cli/commands/setup.js.map +0 -7
- package/dist/src/cli/commands/shell.js.map +0 -7
- package/dist/src/cli/commands/signup.js.map +0 -7
- package/dist/src/cli/commands/skills.js.map +0 -7
- package/dist/src/cli/commands/sms-notify.js +0 -795
- package/dist/src/cli/commands/sms-notify.js.map +0 -7
- package/dist/src/cli/commands/storage-tier.js.map +0 -7
- package/dist/src/cli/commands/sweep.js.map +0 -7
- package/dist/src/cli/commands/tasks.js.map +0 -7
- package/dist/src/cli/commands/worktree.js.map +0 -7
- package/dist/src/cli/index.js.map +0 -7
- package/dist/src/cli/opencode-sm.js.map +0 -7
- package/dist/src/cli/utils/viewer.js.map +0 -7
- package/dist/src/core/config/config-manager.js.map +0 -7
- package/dist/src/core/config/feature-flags.js.map +0 -7
- package/dist/src/core/config/storage-config.js.map +0 -7
- package/dist/src/core/config/types.js.map +0 -7
- package/dist/src/core/context/auto-context.js.map +0 -7
- package/dist/src/core/context/dual-stack-manager.js.map +0 -7
- package/dist/src/core/context/enhanced-rehydration.js.map +0 -7
- package/dist/src/core/context/frame-database.js.map +0 -7
- package/dist/src/core/context/frame-digest.js.map +0 -7
- package/dist/src/core/context/frame-handoff-manager.js.map +0 -7
- package/dist/src/core/context/frame-lifecycle-hooks.js.map +0 -7
- package/dist/src/core/context/frame-recovery.js.map +0 -7
- package/dist/src/core/context/frame-stack.js.map +0 -7
- package/dist/src/core/context/frame-types.js.map +0 -7
- package/dist/src/core/context/index.js.map +0 -7
- package/dist/src/core/context/permission-manager.js.map +0 -7
- package/dist/src/core/context/recursive-context-manager.js.map +0 -7
- package/dist/src/core/context/refactored-frame-manager.js.map +0 -7
- package/dist/src/core/context/shared-context-layer.js.map +0 -7
- package/dist/src/core/context/stack-merge-resolver.js.map +0 -7
- package/dist/src/core/context/validation.js.map +0 -7
- package/dist/src/core/database/batch-operations.js.map +0 -7
- package/dist/src/core/database/connection-pool.js.map +0 -7
- package/dist/src/core/database/database-adapter.js.map +0 -7
- package/dist/src/core/database/embedding-provider-factory.js.map +0 -7
- package/dist/src/core/database/embedding-provider.js.map +0 -7
- package/dist/src/core/database/migration-manager.js.map +0 -7
- package/dist/src/core/database/ollama-embedding-provider.js.map +0 -7
- package/dist/src/core/database/openai-embedding-provider.js.map +0 -7
- package/dist/src/core/database/query-cache.js.map +0 -7
- package/dist/src/core/database/query-router.js.map +0 -7
- package/dist/src/core/database/sqlite-adapter.js.map +0 -7
- package/dist/src/core/database/transformers-embedding-provider.js.map +0 -7
- package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -7
- package/dist/src/core/digest/frame-digest-integration.js.map +0 -7
- package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -7
- package/dist/src/core/digest/index.js.map +0 -7
- package/dist/src/core/digest/types.js.map +0 -7
- package/dist/src/core/errors/error-utils.js.map +0 -7
- package/dist/src/core/errors/index.js.map +0 -7
- package/dist/src/core/errors/recovery.js.map +0 -7
- package/dist/src/core/execution/parallel-executor.js.map +0 -7
- package/dist/src/core/extensions/custom-tools.js.map +0 -7
- package/dist/src/core/extensions/index.js.map +0 -7
- package/dist/src/core/extensions/loader.js.map +0 -7
- package/dist/src/core/extensions/plugin-system.js.map +0 -7
- package/dist/src/core/extensions/provider-adapter.js.map +0 -7
- package/dist/src/core/extensions/sandbox-runtime.js.map +0 -7
- package/dist/src/core/extensions/types.js.map +0 -7
- package/dist/src/core/frame/workflow-templates.js.map +0 -7
- package/dist/src/core/merge/conflict-detector.js.map +0 -7
- package/dist/src/core/merge/index.js.map +0 -7
- package/dist/src/core/merge/resolution-engine.js.map +0 -7
- package/dist/src/core/merge/stack-diff.js.map +0 -7
- package/dist/src/core/merge/types.js.map +0 -7
- package/dist/src/core/merge/unified-merge-resolver.js.map +0 -7
- package/dist/src/core/models/fallback-monitor.js.map +0 -7
- package/dist/src/core/models/model-router.js.map +0 -7
- package/dist/src/core/monitoring/error-handler.js.map +0 -7
- package/dist/src/core/monitoring/logger.js.map +0 -7
- package/dist/src/core/monitoring/metrics.js.map +0 -7
- package/dist/src/core/monitoring/progress-tracker.js.map +0 -7
- package/dist/src/core/monitoring/session-monitor.js.map +0 -7
- package/dist/src/core/performance/context-cache.js.map +0 -7
- package/dist/src/core/performance/index.js.map +0 -7
- package/dist/src/core/performance/lazy-context-loader.js.map +0 -7
- package/dist/src/core/performance/monitor.js.map +0 -7
- package/dist/src/core/performance/optimized-frame-context.js.map +0 -7
- package/dist/src/core/performance/performance-benchmark.js.map +0 -7
- package/dist/src/core/performance/performance-profiler.js.map +0 -7
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -7
- package/dist/src/core/persistence/postgres-adapter.js.map +0 -7
- package/dist/src/core/projects/project-isolation.js.map +0 -7
- package/dist/src/core/projects/project-manager.js.map +0 -7
- package/dist/src/core/query/query-parser.js.map +0 -7
- package/dist/src/core/query/query-templates.js.map +0 -7
- package/dist/src/core/retrieval/context-retriever.js.map +0 -7
- package/dist/src/core/retrieval/index.js.map +0 -7
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -7
- package/dist/src/core/retrieval/llm-provider.js.map +0 -7
- package/dist/src/core/retrieval/privacy-filter.js.map +0 -7
- package/dist/src/core/retrieval/retrieval-audit.js.map +0 -7
- package/dist/src/core/retrieval/summary-generator.js.map +0 -7
- package/dist/src/core/retrieval/types.js.map +0 -7
- package/dist/src/core/retrieval/unified-context-assembler.js.map +0 -7
- package/dist/src/core/security/index.js.map +0 -7
- package/dist/src/core/security/input-sanitizer.js.map +0 -7
- package/dist/src/core/session/clear-survival.js.map +0 -7
- package/dist/src/core/session/enhanced-handoff.js.map +0 -7
- package/dist/src/core/session/handoff-generator.js.map +0 -7
- package/dist/src/core/session/index.js.map +0 -7
- package/dist/src/core/session/session-manager.js.map +0 -7
- package/dist/src/core/skills/index.js.map +0 -7
- package/dist/src/core/skills/skill-storage.js.map +0 -7
- package/dist/src/core/skills/types.js.map +0 -7
- package/dist/src/core/storage/chromadb-adapter.js.map +0 -7
- package/dist/src/core/storage/infinite-storage.js.map +0 -7
- package/dist/src/core/storage/project-registry.js.map +0 -7
- package/dist/src/core/storage/remote-storage.js.map +0 -7
- package/dist/src/core/storage/storage-tier-manager.js.map +0 -7
- package/dist/src/core/storage/two-tier-storage.js.map +0 -7
- package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -7
- package/dist/src/core/trace/db-trace-wrapper.js.map +0 -7
- package/dist/src/core/trace/debug-trace.js.map +0 -7
- package/dist/src/core/trace/index.js.map +0 -7
- package/dist/src/core/trace/linear-api-wrapper.js.map +0 -7
- package/dist/src/core/trace/trace-detector.js.map +0 -7
- package/dist/src/core/trace/trace-store.js.map +0 -7
- package/dist/src/core/trace/types.js.map +0 -7
- package/dist/src/core/types.js.map +0 -7
- package/dist/src/core/utils/async-mutex.js.map +0 -7
- package/dist/src/core/utils/compression.js.map +0 -7
- package/dist/src/core/utils/update-checker.js.map +0 -7
- package/dist/src/core/worktree/worktree-manager.js.map +0 -7
- package/dist/src/daemon/daemon-config.js.map +0 -7
- package/dist/src/daemon/services/context-service.js.map +0 -7
- package/dist/src/daemon/services/linear-service.js.map +0 -7
- package/dist/src/daemon/services/maintenance-service.js.map +0 -7
- package/dist/src/daemon/services/memory-service.js.map +0 -7
- package/dist/src/daemon/session-daemon.js.map +0 -7
- package/dist/src/daemon/unified-daemon.js.map +0 -7
- package/dist/src/features/analytics/api/analytics-api.js.map +0 -7
- package/dist/src/features/analytics/core/analytics-service.js.map +0 -7
- package/dist/src/features/analytics/index.js.map +0 -7
- package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -7
- package/dist/src/features/analytics/types/metrics.js.map +0 -7
- package/dist/src/features/browser/browser-mcp.js.map +0 -7
- package/dist/src/features/sweep/index.js.map +0 -7
- package/dist/src/features/sweep/prediction-client.js.map +0 -7
- package/dist/src/features/sweep/prompt-builder.js.map +0 -7
- package/dist/src/features/sweep/pty-wrapper.js.map +0 -7
- package/dist/src/features/sweep/state-watcher.js.map +0 -7
- package/dist/src/features/sweep/status-bar.js.map +0 -7
- package/dist/src/features/sweep/sweep-server-manager.js.map +0 -7
- package/dist/src/features/sweep/tab-interceptor.js.map +0 -7
- package/dist/src/features/sweep/types.js.map +0 -7
- package/dist/src/features/tasks/linear-task-manager.js.map +0 -7
- package/dist/src/features/tasks/task-aware-context.js.map +0 -7
- package/dist/src/features/tui/simple-monitor.js.map +0 -7
- package/dist/src/features/tui/swarm-monitor.js.map +0 -7
- package/dist/src/features/web/client/stores/task-store.js.map +0 -7
- package/dist/src/features/web/server/index.js.map +0 -7
- package/dist/src/features/workers/tmux-manager.js.map +0 -7
- package/dist/src/features/workers/worker-registry.js.map +0 -7
- package/dist/src/hooks/auto-background.js.map +0 -7
- package/dist/src/hooks/claude-code-whatsapp-hook.js +0 -197
- package/dist/src/hooks/claude-code-whatsapp-hook.js.map +0 -7
- package/dist/src/hooks/config.js.map +0 -7
- package/dist/src/hooks/daemon.js.map +0 -7
- package/dist/src/hooks/diffmem-hooks.js.map +0 -7
- package/dist/src/hooks/events.js.map +0 -7
- package/dist/src/hooks/index.js.map +0 -7
- package/dist/src/hooks/linear-task-picker.js.map +0 -7
- package/dist/src/hooks/schemas.js.map +0 -7
- package/dist/src/hooks/secure-fs.js.map +0 -7
- package/dist/src/hooks/security-logger.js.map +0 -7
- package/dist/src/hooks/session-summary.js.map +0 -7
- package/dist/src/hooks/sms-action-runner.js +0 -371
- package/dist/src/hooks/sms-action-runner.js.map +0 -7
- package/dist/src/hooks/sms-notify.js +0 -506
- package/dist/src/hooks/sms-notify.js.map +0 -7
- package/dist/src/hooks/sms-watcher.js +0 -93
- package/dist/src/hooks/sms-watcher.js.map +0 -7
- package/dist/src/hooks/sms-webhook.js +0 -555
- package/dist/src/hooks/sms-webhook.js.map +0 -7
- package/dist/src/hooks/whatsapp-commands.js +0 -479
- package/dist/src/hooks/whatsapp-commands.js.map +0 -7
- package/dist/src/hooks/whatsapp-scheduler.js +0 -317
- package/dist/src/hooks/whatsapp-scheduler.js.map +0 -7
- package/dist/src/hooks/whatsapp-sync.js +0 -409
- package/dist/src/hooks/whatsapp-sync.js.map +0 -7
- package/dist/src/index.js.map +0 -7
- package/dist/src/integrations/anthropic/client.js.map +0 -7
- package/dist/src/integrations/claude-code/agent-bridge.js.map +0 -7
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
- package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +0 -7
- package/dist/src/integrations/claude-code/post-task-hooks.js.map +0 -7
- package/dist/src/integrations/claude-code/subagent-client-stub.js.map +0 -7
- package/dist/src/integrations/claude-code/subagent-client.js.map +0 -7
- package/dist/src/integrations/claude-code/task-coordinator.js.map +0 -7
- package/dist/src/integrations/diffmem/client.js.map +0 -7
- package/dist/src/integrations/diffmem/config.js.map +0 -7
- package/dist/src/integrations/diffmem/index.js.map +0 -7
- package/dist/src/integrations/diffmem/types.js.map +0 -7
- package/dist/src/integrations/linear/auth.js.map +0 -7
- package/dist/src/integrations/linear/auto-sync.js.map +0 -7
- package/dist/src/integrations/linear/client.js.map +0 -7
- package/dist/src/integrations/linear/config.js.map +0 -7
- package/dist/src/integrations/linear/migration.js.map +0 -7
- package/dist/src/integrations/linear/oauth-server.js.map +0 -7
- package/dist/src/integrations/linear/rest-client.js.map +0 -7
- package/dist/src/integrations/linear/sync-manager.js.map +0 -7
- package/dist/src/integrations/linear/sync-service.js.map +0 -7
- package/dist/src/integrations/linear/sync.js.map +0 -7
- package/dist/src/integrations/linear/types.js.map +0 -7
- package/dist/src/integrations/linear/unified-sync.js.map +0 -7
- package/dist/src/integrations/linear/webhook-handler.js.map +0 -7
- package/dist/src/integrations/linear/webhook-server.js.map +0 -7
- package/dist/src/integrations/linear/webhook.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/diffmem-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/index.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -7
- package/dist/src/integrations/mcp/index.js.map +0 -7
- package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +0 -7
- package/dist/src/integrations/mcp/pending-utils.js.map +0 -7
- package/dist/src/integrations/mcp/refactored-server.js.map +0 -7
- package/dist/src/integrations/mcp/remote-server.js.map +0 -7
- package/dist/src/integrations/mcp/schemas.js.map +0 -7
- package/dist/src/integrations/mcp/server.js.map +0 -7
- package/dist/src/integrations/mcp/tool-definitions-code.js.map +0 -7
- package/dist/src/integrations/mcp/tool-definitions.js.map +0 -7
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
- package/dist/src/integrations/ralph/context/context-budget-manager.js.map +0 -7
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
- package/dist/src/integrations/ralph/index.js.map +0 -7
- package/dist/src/integrations/ralph/learning/pattern-learner.js.map +0 -7
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
- package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +0 -7
- package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +0 -7
- package/dist/src/integrations/ralph/state/state-reconciler.js.map +0 -7
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
- package/dist/src/integrations/ralph/types.js.map +0 -7
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
- package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -7
- package/dist/src/middleware/exponential-rate-limiter.js.map +0 -7
- package/dist/src/models/user.model.js.map +0 -7
- package/dist/src/orchestrators/multimodal/constants.js.map +0 -7
- package/dist/src/orchestrators/multimodal/harness.js.map +0 -7
- package/dist/src/orchestrators/multimodal/providers.js.map +0 -7
- package/dist/src/orchestrators/multimodal/types.js.map +0 -7
- package/dist/src/orchestrators/multimodal/utils.js.map +0 -7
- package/dist/src/servers/production/auth-middleware.js.map +0 -7
- package/dist/src/services/config-service.js.map +0 -7
- package/dist/src/services/context-service.js.map +0 -7
- package/dist/src/skills/api-discovery.js.map +0 -7
- package/dist/src/skills/api-skill.js.map +0 -7
- package/dist/src/skills/claude-skills.js.map +0 -7
- package/dist/src/skills/dashboard-launcher.js.map +0 -7
- package/dist/src/skills/linear-task-runner.js.map +0 -7
- package/dist/src/skills/recursive-agent-orchestrator.js.map +0 -7
- package/dist/src/skills/repo-ingestion-skill.js.map +0 -7
- package/dist/src/skills/spec-generator-skill.js.map +0 -7
- package/dist/src/skills/unified-rlm-orchestrator.js.map +0 -7
- package/dist/src/types/task.js.map +0 -7
- package/dist/src/utils/env.js.map +0 -7
- package/dist/src/utils/formatting.js.map +0 -7
- package/dist/src/utils/process-cleanup.js.map +0 -7
- package/scripts/README-TESTING.md +0 -186
- package/scripts/analyze-cli-security.js +0 -288
- package/scripts/archive/add-phase-tasks-to-linear.js +0 -163
- package/scripts/archive/analyze-linear-duplicates.js +0 -214
- package/scripts/archive/analyze-remaining-duplicates.js +0 -230
- package/scripts/archive/analyze-sta-duplicates.js +0 -292
- package/scripts/archive/analyze-sta-graphql.js +0 -399
- package/scripts/archive/cancel-duplicate-tasks.ts +0 -246
- package/scripts/archive/check-all-duplicates.ts +0 -419
- package/scripts/archive/clean-duplicate-tasks.js +0 -114
- package/scripts/archive/cleanup-duplicate-tasks.ts +0 -286
- package/scripts/archive/create-phase-tasks.js +0 -387
- package/scripts/archive/delete-linear-duplicates.js +0 -182
- package/scripts/archive/delete-remaining-duplicates.js +0 -158
- package/scripts/archive/delete-sta-duplicates.js +0 -201
- package/scripts/archive/delete-sta-oauth.js +0 -201
- package/scripts/archive/export-sta-tasks.js +0 -62
- package/scripts/archive/install-auto-sync.js +0 -266
- package/scripts/archive/install-chromadb-hooks.sh +0 -133
- package/scripts/archive/install-enhanced-clear-hooks.sh +0 -431
- package/scripts/archive/install-post-task-hooks.sh +0 -289
- package/scripts/archive/install-stackmemory-hooks.sh +0 -420
- package/scripts/archive/merge-linear-duplicates-safe.ts +0 -362
- package/scripts/archive/merge-linear-duplicates.ts +0 -182
- package/scripts/archive/remove-sta-tasks.js +0 -70
- package/scripts/archive/setup-background-sync.sh +0 -168
- package/scripts/archive/setup-claude-auto-triggers.sh +0 -181
- package/scripts/archive/setup-claude-autostart.sh +0 -305
- package/scripts/archive/setup-git-hooks.sh +0 -25
- package/scripts/archive/setup-linear-oauth.sh +0 -46
- package/scripts/archive/setup-mcp.sh +0 -113
- package/scripts/archive/setup-railway-deployment.sh +0 -81
- package/scripts/auto-handoff.sh +0 -262
- package/scripts/background-sync-manager.js +0 -478
- package/scripts/benchmark-performance.ts +0 -57
- package/scripts/check-redis.ts +0 -48
- package/scripts/chromadb-auto-loader.sh +0 -128
- package/scripts/chromadb-context-loader.js +0 -479
- package/scripts/claude-chromadb-hook.js +0 -460
- package/scripts/claude-linear-skill.js +0 -455
- package/scripts/claude-pre-commit.sh +0 -302
- package/scripts/claude-sm-autostart.js +0 -579
- package/scripts/claude-with-chromadb.sh +0 -69
- package/scripts/clean-linear-backlog.js +0 -273
- package/scripts/cleanup-old-sessions.sh +0 -57
- package/scripts/create-cleanup-issues.js +0 -302
- package/scripts/create-sandbox.sh +0 -269
- package/scripts/debug-linear-update.js +0 -174
- package/scripts/delete-linear-tasks.js +0 -167
- package/scripts/demos/browser-test.ts +0 -39
- package/scripts/demos/ralph-integration-demo.ts +0 -245
- package/scripts/demos/trace-demo.ts +0 -200
- package/scripts/demos/trace-detector.demo.ts +0 -171
- package/scripts/demos/trace-test.ts +0 -79
- package/scripts/deploy-ralph-swarm.sh +0 -365
- package/scripts/deploy.sh +0 -89
- package/scripts/deployment/test-deployment.js +0 -194
- package/scripts/detect-and-rehydrate.js +0 -162
- package/scripts/detect-and-rehydrate.mjs +0 -165
- package/scripts/development/create-demo-tasks.js +0 -143
- package/scripts/development/debug-frame-test.js +0 -16
- package/scripts/development/demo-auto-sync.js +0 -128
- package/scripts/development/fix-all-imports.js +0 -213
- package/scripts/development/fix-imports.js +0 -229
- package/scripts/development/fix-lint-loop.cjs +0 -103
- package/scripts/development/fix-project-id.ts +0 -161
- package/scripts/development/fix-strict-mode-issues.ts +0 -291
- package/scripts/development/reorganize-structure.sh +0 -228
- package/scripts/development/test-persistence-direct.js +0 -148
- package/scripts/development/test-persistence.js +0 -114
- package/scripts/development/test-tasks.js +0 -93
- package/scripts/development/update-imports.js +0 -212
- package/scripts/fetch-linear-status.js +0 -125
- package/scripts/initialize.ts +0 -220
- package/scripts/linear-auto-sync.js +0 -262
- package/scripts/linear-auto-sync.sh +0 -161
- package/scripts/linear-sync-daemon.js +0 -150
- package/scripts/linear-task-review.js +0 -237
- package/scripts/list-linear-tasks.ts +0 -178
- package/scripts/mcp-proxy.js +0 -66
- package/scripts/measure-handoff-impact.mjs +0 -395
- package/scripts/measure-handoff-impact.ts +0 -450
- package/scripts/publish-local.js +0 -74
- package/scripts/query-chromadb.ts +0 -201
- package/scripts/ralph-integration-test.js +0 -274
- package/scripts/reconcile-local-tasks.js +0 -170
- package/scripts/recreate-frames-db.js +0 -89
- package/scripts/show-linear-summary.ts +0 -172
- package/scripts/simple-swarm-demo.ts +0 -114
- package/scripts/stackmemory-auto-handoff.sh +0 -231
- package/scripts/start-linear-sync-daemon.sh +0 -141
- package/scripts/start-temporal-paradox.sh +0 -214
- package/scripts/status.ts +0 -224
- package/scripts/stop-notify-webhook.sh +0 -19
- package/scripts/swarm-monitor.js +0 -509
- package/scripts/sync-and-clean-tasks.js +0 -258
- package/scripts/sync-linear-graphql.js +0 -303
- package/scripts/sync-linear-tasks.js +0 -186
- package/scripts/test-auto-triggers.sh +0 -57
- package/scripts/test-browser-mcp.js +0 -74
- package/scripts/test-chromadb-full.js +0 -115
- package/scripts/test-chromadb-hooks.sh +0 -28
- package/scripts/test-chromadb-sync.ts +0 -245
- package/scripts/test-claude-config.sh +0 -123
- package/scripts/test-cli-security.js +0 -293
- package/scripts/test-code-execution.js +0 -143
- package/scripts/test-hooks-persistence.sh +0 -220
- package/scripts/test-installation-scenarios.sh +0 -359
- package/scripts/test-installation.sh +0 -224
- package/scripts/test-mcp.js +0 -163
- package/scripts/test-parallel-swarms.js +0 -443
- package/scripts/test-pre-publish-quick.sh +0 -69
- package/scripts/test-quality-gates.sh +0 -263
- package/scripts/test-ralph-iteration-fix.ts +0 -118
- package/scripts/test-ralph-iterations.ts +0 -164
- package/scripts/test-redis-storage.ts +0 -490
- package/scripts/test-rlm-basic.sh +0 -122
- package/scripts/test-rlm-comprehensive.sh +0 -260
- package/scripts/test-rlm-e2e.sh +0 -268
- package/scripts/test-rlm-simple.js +0 -90
- package/scripts/test-rlm.js +0 -110
- package/scripts/test-session-handoff.sh +0 -165
- package/scripts/test-setup-e2e.sh +0 -154
- package/scripts/test-shell-integration.sh +0 -275
- package/scripts/test-simple-ralph-state-sync.ts +0 -178
- package/scripts/test-swarm-fixes.ts +0 -161
- package/scripts/test-swarm-git-workflow.js +0 -338
- package/scripts/test-swarm-tui.ts +0 -34
- package/scripts/test-tui-shortcuts.ts +0 -66
- package/scripts/testing/ab-test-runner.ts +0 -510
- package/scripts/testing/collect-metrics.ts +0 -457
- package/scripts/testing/quick-effectiveness-demo.js +0 -187
- package/scripts/testing/ralph-cli-test.js +0 -88
- package/scripts/testing/ralph-integration-validation.js +0 -727
- package/scripts/testing/ralph-swarm-test-scenarios.js +0 -613
- package/scripts/testing/real-performance-test.js +0 -422
- package/scripts/testing/results/real-performance-results.json +0 -90
- package/scripts/testing/run-effectiveness-tests.sh +0 -176
- package/scripts/testing/simple-effectiveness-test.js +0 -310
- package/scripts/testing/test-tier-migration.js +0 -100
- package/scripts/update-linear-status.js +0 -268
- package/scripts/update-linear-tasks-fixed.js +0 -284
- package/scripts/validate-claude-config.sh +0 -155
- package/scripts/validate-swarm-implementation.js +0 -467
- package/scripts/validate-tui-shortcuts.ts +0 -83
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
-
import { dirname as __pathDirname } from 'path';
|
|
3
|
-
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
-
const __dirname = __pathDirname(__filename);
|
|
5
|
-
import { Command } from "commander";
|
|
6
|
-
import chalk from "chalk";
|
|
7
|
-
import inquirer from "inquirer";
|
|
8
|
-
import { existsSync, writeFileSync, mkdirSync, readFileSync } from "fs";
|
|
9
|
-
import { join } from "path";
|
|
10
|
-
import { homedir } from "os";
|
|
11
|
-
import {
|
|
12
|
-
loadSMSConfig,
|
|
13
|
-
saveSMSConfig,
|
|
14
|
-
getMissingConfig
|
|
15
|
-
} from "../../hooks/sms-notify.js";
|
|
16
|
-
function createSettingsCommand() {
|
|
17
|
-
const cmd = new Command("settings").description("View and configure StackMemory settings").addHelpText(
|
|
18
|
-
"after",
|
|
19
|
-
`
|
|
20
|
-
Examples:
|
|
21
|
-
stackmemory settings Show all settings and missing config
|
|
22
|
-
stackmemory settings notifications Configure notifications interactively
|
|
23
|
-
stackmemory settings env Show required environment variables
|
|
24
|
-
`
|
|
25
|
-
);
|
|
26
|
-
cmd.command("show").description("Show current settings and what is missing").action(() => {
|
|
27
|
-
showSettings();
|
|
28
|
-
});
|
|
29
|
-
cmd.command("notifications").alias("notify").description("Configure notifications interactively").action(async () => {
|
|
30
|
-
await configureNotifications();
|
|
31
|
-
});
|
|
32
|
-
cmd.command("env").description("Show required environment variables").action(() => {
|
|
33
|
-
showEnvVars();
|
|
34
|
-
});
|
|
35
|
-
cmd.action(() => {
|
|
36
|
-
showSettings();
|
|
37
|
-
});
|
|
38
|
-
return cmd;
|
|
39
|
-
}
|
|
40
|
-
function showSettings() {
|
|
41
|
-
console.log(chalk.blue.bold("\nStackMemory Settings\n"));
|
|
42
|
-
const config = loadSMSConfig();
|
|
43
|
-
const { missing, configured, ready } = getMissingConfig();
|
|
44
|
-
console.log(chalk.cyan("Notifications:"));
|
|
45
|
-
console.log(
|
|
46
|
-
` ${chalk.gray("Enabled:")} ${config.enabled ? chalk.green("yes") : chalk.yellow("no")}`
|
|
47
|
-
);
|
|
48
|
-
console.log(
|
|
49
|
-
` ${chalk.gray("Channel:")} ${config.channel === "whatsapp" ? chalk.cyan("WhatsApp") : chalk.blue("SMS")}`
|
|
50
|
-
);
|
|
51
|
-
console.log(
|
|
52
|
-
` ${chalk.gray("Ready:")} ${ready ? chalk.green("yes") : chalk.red("no")}`
|
|
53
|
-
);
|
|
54
|
-
if (configured.length > 0) {
|
|
55
|
-
console.log(`
|
|
56
|
-
${chalk.green("Configured:")}`);
|
|
57
|
-
configured.forEach((item) => {
|
|
58
|
-
console.log(` ${chalk.green("\u2713")} ${item}`);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
if (missing.length > 0) {
|
|
62
|
-
console.log(`
|
|
63
|
-
${chalk.red("Missing:")}`);
|
|
64
|
-
missing.forEach((item) => {
|
|
65
|
-
console.log(` ${chalk.red("\u2717")} ${item}`);
|
|
66
|
-
});
|
|
67
|
-
console.log(
|
|
68
|
-
chalk.yellow('\n Run "stackmemory settings notifications" to configure')
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
const ngrokUrlPath = join(homedir(), ".stackmemory", "ngrok-url.txt");
|
|
72
|
-
if (existsSync(ngrokUrlPath)) {
|
|
73
|
-
const ngrokUrl = readFileSync(ngrokUrlPath, "utf8").trim();
|
|
74
|
-
console.log(`
|
|
75
|
-
${chalk.gray("Webhook URL:")} ${ngrokUrl}/sms/incoming`);
|
|
76
|
-
}
|
|
77
|
-
console.log();
|
|
78
|
-
}
|
|
79
|
-
function showEnvVars() {
|
|
80
|
-
console.log(chalk.blue.bold("\nRequired Environment Variables\n"));
|
|
81
|
-
const { missing, configured } = getMissingConfig();
|
|
82
|
-
const config = loadSMSConfig();
|
|
83
|
-
console.log(chalk.cyan("Twilio Credentials (required):"));
|
|
84
|
-
console.log(
|
|
85
|
-
` ${configured.includes("TWILIO_ACCOUNT_SID") ? chalk.green("\u2713") : chalk.red("\u2717")} TWILIO_ACCOUNT_SID`
|
|
86
|
-
);
|
|
87
|
-
console.log(
|
|
88
|
-
` ${configured.includes("TWILIO_AUTH_TOKEN") ? chalk.green("\u2713") : chalk.red("\u2717")} TWILIO_AUTH_TOKEN`
|
|
89
|
-
);
|
|
90
|
-
console.log(
|
|
91
|
-
chalk.cyan(
|
|
92
|
-
`
|
|
93
|
-
${config.channel === "whatsapp" ? "WhatsApp" : "SMS"} Numbers:`
|
|
94
|
-
)
|
|
95
|
-
);
|
|
96
|
-
if (config.channel === "whatsapp") {
|
|
97
|
-
console.log(
|
|
98
|
-
` ${configured.includes("TWILIO_WHATSAPP_FROM") ? chalk.green("\u2713") : chalk.red("\u2717")} TWILIO_WHATSAPP_FROM`
|
|
99
|
-
);
|
|
100
|
-
console.log(
|
|
101
|
-
` ${configured.includes("TWILIO_WHATSAPP_TO") ? chalk.green("\u2713") : chalk.red("\u2717")} TWILIO_WHATSAPP_TO`
|
|
102
|
-
);
|
|
103
|
-
} else {
|
|
104
|
-
console.log(
|
|
105
|
-
` ${configured.includes("TWILIO_SMS_FROM") ? chalk.green("\u2713") : chalk.red("\u2717")} TWILIO_SMS_FROM`
|
|
106
|
-
);
|
|
107
|
-
console.log(
|
|
108
|
-
` ${configured.includes("TWILIO_SMS_TO") ? chalk.green("\u2713") : chalk.red("\u2717")} TWILIO_SMS_TO`
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
if (missing.length > 0) {
|
|
112
|
-
console.log(chalk.yellow("\nAdd to your .env file or shell profile:"));
|
|
113
|
-
console.log(chalk.gray("\u2500".repeat(50)));
|
|
114
|
-
if (missing.includes("TWILIO_ACCOUNT_SID")) {
|
|
115
|
-
console.log('export TWILIO_ACCOUNT_SID="your_account_sid"');
|
|
116
|
-
}
|
|
117
|
-
if (missing.includes("TWILIO_AUTH_TOKEN")) {
|
|
118
|
-
console.log('export TWILIO_AUTH_TOKEN="your_auth_token"');
|
|
119
|
-
}
|
|
120
|
-
if (missing.includes("TWILIO_WHATSAPP_FROM")) {
|
|
121
|
-
console.log(
|
|
122
|
-
'export TWILIO_WHATSAPP_FROM="+14155238886" # Twilio sandbox'
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
if (missing.includes("TWILIO_WHATSAPP_TO")) {
|
|
126
|
-
console.log('export TWILIO_WHATSAPP_TO="+1234567890" # Your phone');
|
|
127
|
-
}
|
|
128
|
-
if (missing.includes("TWILIO_SMS_FROM")) {
|
|
129
|
-
console.log('export TWILIO_SMS_FROM="+1234567890" # Twilio number');
|
|
130
|
-
}
|
|
131
|
-
if (missing.includes("TWILIO_SMS_TO")) {
|
|
132
|
-
console.log('export TWILIO_SMS_TO="+1234567890" # Your phone');
|
|
133
|
-
}
|
|
134
|
-
console.log(chalk.gray("\u2500".repeat(50)));
|
|
135
|
-
}
|
|
136
|
-
console.log();
|
|
137
|
-
}
|
|
138
|
-
async function configureNotifications() {
|
|
139
|
-
console.log(chalk.blue.bold("\nNotification Setup\n"));
|
|
140
|
-
const config = loadSMSConfig();
|
|
141
|
-
const { missing } = getMissingConfig();
|
|
142
|
-
const { enable } = await inquirer.prompt([
|
|
143
|
-
{
|
|
144
|
-
type: "confirm",
|
|
145
|
-
name: "enable",
|
|
146
|
-
message: "Enable SMS/WhatsApp notifications?",
|
|
147
|
-
default: config.enabled
|
|
148
|
-
}
|
|
149
|
-
]);
|
|
150
|
-
if (!enable) {
|
|
151
|
-
config.enabled = false;
|
|
152
|
-
saveSMSConfig(config);
|
|
153
|
-
console.log(chalk.yellow("Notifications disabled"));
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
const { channel } = await inquirer.prompt([
|
|
157
|
-
{
|
|
158
|
-
type: "list",
|
|
159
|
-
name: "channel",
|
|
160
|
-
message: "Which channel do you want to use?",
|
|
161
|
-
choices: [
|
|
162
|
-
{
|
|
163
|
-
name: "WhatsApp (recommended - cheaper for conversations)",
|
|
164
|
-
value: "whatsapp"
|
|
165
|
-
},
|
|
166
|
-
{ name: "SMS (requires A2P 10DLC registration for US)", value: "sms" }
|
|
167
|
-
],
|
|
168
|
-
default: config.channel
|
|
169
|
-
}
|
|
170
|
-
]);
|
|
171
|
-
config.channel = channel;
|
|
172
|
-
if (missing.includes("TWILIO_ACCOUNT_SID") || missing.includes("TWILIO_AUTH_TOKEN")) {
|
|
173
|
-
console.log(chalk.yellow("\nTwilio credentials not found in environment."));
|
|
174
|
-
const { hasAccount } = await inquirer.prompt([
|
|
175
|
-
{
|
|
176
|
-
type: "confirm",
|
|
177
|
-
name: "hasAccount",
|
|
178
|
-
message: "Do you have a Twilio account?",
|
|
179
|
-
default: true
|
|
180
|
-
}
|
|
181
|
-
]);
|
|
182
|
-
if (!hasAccount) {
|
|
183
|
-
console.log(chalk.cyan("\nCreate a free Twilio account:"));
|
|
184
|
-
console.log(" https://www.twilio.com/try-twilio\n");
|
|
185
|
-
console.log("Then run this command again.");
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
const { saveToEnv } = await inquirer.prompt([
|
|
189
|
-
{
|
|
190
|
-
type: "confirm",
|
|
191
|
-
name: "saveToEnv",
|
|
192
|
-
message: "Would you like to save credentials to ~/.stackmemory/.env?",
|
|
193
|
-
default: true
|
|
194
|
-
}
|
|
195
|
-
]);
|
|
196
|
-
if (saveToEnv) {
|
|
197
|
-
const { accountSid, authToken } = await inquirer.prompt([
|
|
198
|
-
{
|
|
199
|
-
type: "input",
|
|
200
|
-
name: "accountSid",
|
|
201
|
-
message: "Twilio Account SID:",
|
|
202
|
-
validate: (input) => input.startsWith("AC") ? true : "Account SID should start with AC"
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
type: "password",
|
|
206
|
-
name: "authToken",
|
|
207
|
-
message: "Twilio Auth Token:",
|
|
208
|
-
mask: "*"
|
|
209
|
-
}
|
|
210
|
-
]);
|
|
211
|
-
saveToEnvFile({
|
|
212
|
-
TWILIO_ACCOUNT_SID: accountSid,
|
|
213
|
-
TWILIO_AUTH_TOKEN: authToken
|
|
214
|
-
});
|
|
215
|
-
console.log(chalk.green("Credentials saved to ~/.stackmemory/.env"));
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
if (channel === "whatsapp") {
|
|
219
|
-
console.log(chalk.cyan("\nWhatsApp Setup:"));
|
|
220
|
-
console.log(
|
|
221
|
-
" 1. Go to: https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn"
|
|
222
|
-
);
|
|
223
|
-
console.log(" 2. Note the sandbox number (e.g., +14155238886)");
|
|
224
|
-
console.log(" 3. Send the join code from your phone\n");
|
|
225
|
-
const { whatsappFrom, whatsappTo } = await inquirer.prompt([
|
|
226
|
-
{
|
|
227
|
-
type: "input",
|
|
228
|
-
name: "whatsappFrom",
|
|
229
|
-
message: "Twilio WhatsApp number (sandbox):",
|
|
230
|
-
default: config.whatsappFromNumber || "+14155238886"
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
type: "input",
|
|
234
|
-
name: "whatsappTo",
|
|
235
|
-
message: "Your phone number:",
|
|
236
|
-
default: config.whatsappToNumber,
|
|
237
|
-
validate: (input) => input.startsWith("+") ? true : "Include country code (e.g., +1234567890)"
|
|
238
|
-
}
|
|
239
|
-
]);
|
|
240
|
-
saveToEnvFile({
|
|
241
|
-
TWILIO_WHATSAPP_FROM: whatsappFrom,
|
|
242
|
-
TWILIO_WHATSAPP_TO: whatsappTo,
|
|
243
|
-
TWILIO_CHANNEL: "whatsapp"
|
|
244
|
-
});
|
|
245
|
-
} else {
|
|
246
|
-
console.log(chalk.cyan("\nSMS Setup:"));
|
|
247
|
-
console.log(
|
|
248
|
-
chalk.yellow(" Note: US carriers require A2P 10DLC registration")
|
|
249
|
-
);
|
|
250
|
-
console.log(
|
|
251
|
-
" Register at: https://console.twilio.com/us1/develop/sms/settings/compliance\n"
|
|
252
|
-
);
|
|
253
|
-
const { smsFrom, smsTo } = await inquirer.prompt([
|
|
254
|
-
{
|
|
255
|
-
type: "input",
|
|
256
|
-
name: "smsFrom",
|
|
257
|
-
message: "Twilio SMS number:",
|
|
258
|
-
default: config.smsFromNumber
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
type: "input",
|
|
262
|
-
name: "smsTo",
|
|
263
|
-
message: "Your phone number:",
|
|
264
|
-
default: config.smsToNumber,
|
|
265
|
-
validate: (input) => input.startsWith("+") ? true : "Include country code (e.g., +1234567890)"
|
|
266
|
-
}
|
|
267
|
-
]);
|
|
268
|
-
saveToEnvFile({
|
|
269
|
-
TWILIO_SMS_FROM: smsFrom,
|
|
270
|
-
TWILIO_SMS_TO: smsTo,
|
|
271
|
-
TWILIO_CHANNEL: "sms"
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
config.enabled = true;
|
|
275
|
-
saveSMSConfig(config);
|
|
276
|
-
console.log(chalk.green("\nNotifications configured!"));
|
|
277
|
-
console.log(chalk.gray("Test with: stackmemory notify test"));
|
|
278
|
-
}
|
|
279
|
-
function saveToEnvFile(vars) {
|
|
280
|
-
const envDir = join(homedir(), ".stackmemory");
|
|
281
|
-
const envPath = join(envDir, ".env");
|
|
282
|
-
if (!existsSync(envDir)) {
|
|
283
|
-
mkdirSync(envDir, { recursive: true });
|
|
284
|
-
}
|
|
285
|
-
let content = "";
|
|
286
|
-
if (existsSync(envPath)) {
|
|
287
|
-
content = readFileSync(envPath, "utf8");
|
|
288
|
-
}
|
|
289
|
-
for (const [key, value] of Object.entries(vars)) {
|
|
290
|
-
const regex = new RegExp(`^${key}=.*$`, "m");
|
|
291
|
-
const line = `${key}="${value}"`;
|
|
292
|
-
if (regex.test(content)) {
|
|
293
|
-
content = content.replace(regex, line);
|
|
294
|
-
} else {
|
|
295
|
-
content += `${content.endsWith("\n") || content === "" ? "" : "\n"}${line}
|
|
296
|
-
`;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
writeFileSync(envPath, content);
|
|
300
|
-
}
|
|
301
|
-
var settings_default = createSettingsCommand;
|
|
302
|
-
export {
|
|
303
|
-
createSettingsCommand,
|
|
304
|
-
settings_default as default
|
|
305
|
-
};
|
|
306
|
-
//# sourceMappingURL=settings.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/cli/commands/settings.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * CLI command for viewing and configuring StackMemory settings\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport { existsSync, writeFileSync, mkdirSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport {\n loadSMSConfig,\n saveSMSConfig,\n getMissingConfig,\n type MessageChannel,\n} from '../../hooks/sms-notify.js';\n\nexport function createSettingsCommand(): Command {\n const cmd = new Command('settings')\n .description('View and configure StackMemory settings')\n .addHelpText(\n 'after',\n `\nExamples:\n stackmemory settings Show all settings and missing config\n stackmemory settings notifications Configure notifications interactively\n stackmemory settings env Show required environment variables\n`\n );\n\n cmd\n .command('show')\n .description('Show current settings and what is missing')\n .action(() => {\n showSettings();\n });\n\n cmd\n .command('notifications')\n .alias('notify')\n .description('Configure notifications interactively')\n .action(async () => {\n await configureNotifications();\n });\n\n cmd\n .command('env')\n .description('Show required environment variables')\n .action(() => {\n showEnvVars();\n });\n\n // Default action - show settings\n cmd.action(() => {\n showSettings();\n });\n\n return cmd;\n}\n\nfunction showSettings(): void {\n console.log(chalk.blue.bold('\\nStackMemory Settings\\n'));\n\n // Notification settings\n const config = loadSMSConfig();\n const { missing, configured, ready } = getMissingConfig();\n\n console.log(chalk.cyan('Notifications:'));\n console.log(\n ` ${chalk.gray('Enabled:')} ${config.enabled ? chalk.green('yes') : chalk.yellow('no')}`\n );\n console.log(\n ` ${chalk.gray('Channel:')} ${config.channel === 'whatsapp' ? chalk.cyan('WhatsApp') : chalk.blue('SMS')}`\n );\n console.log(\n ` ${chalk.gray('Ready:')} ${ready ? chalk.green('yes') : chalk.red('no')}`\n );\n\n if (configured.length > 0) {\n console.log(`\\n ${chalk.green('Configured:')}`);\n configured.forEach((item) => {\n console.log(` ${chalk.green('\u2713')} ${item}`);\n });\n }\n\n if (missing.length > 0) {\n console.log(`\\n ${chalk.red('Missing:')}`);\n missing.forEach((item) => {\n console.log(` ${chalk.red('\u2717')} ${item}`);\n });\n\n console.log(\n chalk.yellow('\\n Run \"stackmemory settings notifications\" to configure')\n );\n }\n\n // Show ngrok URL if available\n const ngrokUrlPath = join(homedir(), '.stackmemory', 'ngrok-url.txt');\n if (existsSync(ngrokUrlPath)) {\n const ngrokUrl = readFileSync(ngrokUrlPath, 'utf8').trim();\n console.log(`\\n ${chalk.gray('Webhook URL:')} ${ngrokUrl}/sms/incoming`);\n }\n\n console.log();\n}\n\nfunction showEnvVars(): void {\n console.log(chalk.blue.bold('\\nRequired Environment Variables\\n'));\n\n const { missing, configured } = getMissingConfig();\n const config = loadSMSConfig();\n\n console.log(chalk.cyan('Twilio Credentials (required):'));\n console.log(\n ` ${configured.includes('TWILIO_ACCOUNT_SID') ? chalk.green('\u2713') : chalk.red('\u2717')} TWILIO_ACCOUNT_SID`\n );\n console.log(\n ` ${configured.includes('TWILIO_AUTH_TOKEN') ? chalk.green('\u2713') : chalk.red('\u2717')} TWILIO_AUTH_TOKEN`\n );\n\n console.log(\n chalk.cyan(\n `\\n${config.channel === 'whatsapp' ? 'WhatsApp' : 'SMS'} Numbers:`\n )\n );\n if (config.channel === 'whatsapp') {\n console.log(\n ` ${configured.includes('TWILIO_WHATSAPP_FROM') ? chalk.green('\u2713') : chalk.red('\u2717')} TWILIO_WHATSAPP_FROM`\n );\n console.log(\n ` ${configured.includes('TWILIO_WHATSAPP_TO') ? chalk.green('\u2713') : chalk.red('\u2717')} TWILIO_WHATSAPP_TO`\n );\n } else {\n console.log(\n ` ${configured.includes('TWILIO_SMS_FROM') ? chalk.green('\u2713') : chalk.red('\u2717')} TWILIO_SMS_FROM`\n );\n console.log(\n ` ${configured.includes('TWILIO_SMS_TO') ? chalk.green('\u2713') : chalk.red('\u2717')} TWILIO_SMS_TO`\n );\n }\n\n if (missing.length > 0) {\n console.log(chalk.yellow('\\nAdd to your .env file or shell profile:'));\n console.log(chalk.gray('\u2500'.repeat(50)));\n\n if (missing.includes('TWILIO_ACCOUNT_SID')) {\n console.log('export TWILIO_ACCOUNT_SID=\"your_account_sid\"');\n }\n if (missing.includes('TWILIO_AUTH_TOKEN')) {\n console.log('export TWILIO_AUTH_TOKEN=\"your_auth_token\"');\n }\n if (missing.includes('TWILIO_WHATSAPP_FROM')) {\n console.log(\n 'export TWILIO_WHATSAPP_FROM=\"+14155238886\" # Twilio sandbox'\n );\n }\n if (missing.includes('TWILIO_WHATSAPP_TO')) {\n console.log('export TWILIO_WHATSAPP_TO=\"+1234567890\" # Your phone');\n }\n if (missing.includes('TWILIO_SMS_FROM')) {\n console.log('export TWILIO_SMS_FROM=\"+1234567890\" # Twilio number');\n }\n if (missing.includes('TWILIO_SMS_TO')) {\n console.log('export TWILIO_SMS_TO=\"+1234567890\" # Your phone');\n }\n\n console.log(chalk.gray('\u2500'.repeat(50)));\n }\n\n console.log();\n}\n\nasync function configureNotifications(): Promise<void> {\n console.log(chalk.blue.bold('\\nNotification Setup\\n'));\n\n const config = loadSMSConfig();\n const { missing } = getMissingConfig();\n\n // Ask if they want to enable\n const { enable } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'enable',\n message: 'Enable SMS/WhatsApp notifications?',\n default: config.enabled,\n },\n ]);\n\n if (!enable) {\n config.enabled = false;\n saveSMSConfig(config);\n console.log(chalk.yellow('Notifications disabled'));\n return;\n }\n\n // Choose channel\n const { channel } = await inquirer.prompt([\n {\n type: 'list',\n name: 'channel',\n message: 'Which channel do you want to use?',\n choices: [\n {\n name: 'WhatsApp (recommended - cheaper for conversations)',\n value: 'whatsapp',\n },\n { name: 'SMS (requires A2P 10DLC registration for US)', value: 'sms' },\n ],\n default: config.channel,\n },\n ]);\n\n config.channel = channel as MessageChannel;\n\n // Check for missing credentials\n if (\n missing.includes('TWILIO_ACCOUNT_SID') ||\n missing.includes('TWILIO_AUTH_TOKEN')\n ) {\n console.log(chalk.yellow('\\nTwilio credentials not found in environment.'));\n\n const { hasAccount } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'hasAccount',\n message: 'Do you have a Twilio account?',\n default: true,\n },\n ]);\n\n if (!hasAccount) {\n console.log(chalk.cyan('\\nCreate a free Twilio account:'));\n console.log(' https://www.twilio.com/try-twilio\\n');\n console.log('Then run this command again.');\n return;\n }\n\n const { saveToEnv } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'saveToEnv',\n message: 'Would you like to save credentials to ~/.stackmemory/.env?',\n default: true,\n },\n ]);\n\n if (saveToEnv) {\n const { accountSid, authToken } = await inquirer.prompt([\n {\n type: 'input',\n name: 'accountSid',\n message: 'Twilio Account SID:',\n validate: (input: string) =>\n input.startsWith('AC') ? true : 'Account SID should start with AC',\n },\n {\n type: 'password',\n name: 'authToken',\n message: 'Twilio Auth Token:',\n mask: '*',\n },\n ]);\n\n saveToEnvFile({\n TWILIO_ACCOUNT_SID: accountSid,\n TWILIO_AUTH_TOKEN: authToken,\n });\n console.log(chalk.green('Credentials saved to ~/.stackmemory/.env'));\n }\n }\n\n // Get phone numbers\n if (channel === 'whatsapp') {\n console.log(chalk.cyan('\\nWhatsApp Setup:'));\n console.log(\n ' 1. Go to: https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn'\n );\n console.log(' 2. Note the sandbox number (e.g., +14155238886)');\n console.log(' 3. Send the join code from your phone\\n');\n\n const { whatsappFrom, whatsappTo } = await inquirer.prompt([\n {\n type: 'input',\n name: 'whatsappFrom',\n message: 'Twilio WhatsApp number (sandbox):',\n default: config.whatsappFromNumber || '+14155238886',\n },\n {\n type: 'input',\n name: 'whatsappTo',\n message: 'Your phone number:',\n default: config.whatsappToNumber,\n validate: (input: string) =>\n input.startsWith('+')\n ? true\n : 'Include country code (e.g., +1234567890)',\n },\n ]);\n\n saveToEnvFile({\n TWILIO_WHATSAPP_FROM: whatsappFrom,\n TWILIO_WHATSAPP_TO: whatsappTo,\n TWILIO_CHANNEL: 'whatsapp',\n });\n } else {\n console.log(chalk.cyan('\\nSMS Setup:'));\n console.log(\n chalk.yellow(' Note: US carriers require A2P 10DLC registration')\n );\n console.log(\n ' Register at: https://console.twilio.com/us1/develop/sms/settings/compliance\\n'\n );\n\n const { smsFrom, smsTo } = await inquirer.prompt([\n {\n type: 'input',\n name: 'smsFrom',\n message: 'Twilio SMS number:',\n default: config.smsFromNumber,\n },\n {\n type: 'input',\n name: 'smsTo',\n message: 'Your phone number:',\n default: config.smsToNumber,\n validate: (input: string) =>\n input.startsWith('+')\n ? true\n : 'Include country code (e.g., +1234567890)',\n },\n ]);\n\n saveToEnvFile({\n TWILIO_SMS_FROM: smsFrom,\n TWILIO_SMS_TO: smsTo,\n TWILIO_CHANNEL: 'sms',\n });\n }\n\n config.enabled = true;\n saveSMSConfig(config);\n\n console.log(chalk.green('\\nNotifications configured!'));\n console.log(chalk.gray('Test with: stackmemory notify test'));\n}\n\nfunction saveToEnvFile(vars: Record<string, string>): void {\n const envDir = join(homedir(), '.stackmemory');\n const envPath = join(envDir, '.env');\n\n if (!existsSync(envDir)) {\n mkdirSync(envDir, { recursive: true });\n }\n\n let content = '';\n if (existsSync(envPath)) {\n content = readFileSync(envPath, 'utf8');\n }\n\n for (const [key, value] of Object.entries(vars)) {\n const regex = new RegExp(`^${key}=.*$`, 'm');\n const line = `${key}=\"${value}\"`;\n\n if (regex.test(content)) {\n content = content.replace(regex, line);\n } else {\n content += `${content.endsWith('\\n') || content === '' ? '' : '\\n'}${line}\\n`;\n }\n }\n\n writeFileSync(envPath, content);\n}\n\nexport default createSettingsCommand;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/cli/commands/setup.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Setup commands for StackMemory onboarding\n * - setup-mcp: Auto-configure Claude Code MCP integration\n * - doctor: Diagnose common issues\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport { execSync } from 'child_process';\n\n// Claude config paths\nconst CLAUDE_DIR = join(homedir(), '.claude');\nconst CLAUDE_CONFIG_FILE = join(CLAUDE_DIR, 'config.json');\nconst MCP_CONFIG_FILE = join(CLAUDE_DIR, 'stackmemory-mcp.json');\nconst HOOKS_JSON = join(CLAUDE_DIR, 'hooks.json');\n\ninterface DiagnosticResult {\n name: string;\n status: 'ok' | 'warn' | 'error';\n message: string;\n fix?: string;\n}\n\n/**\n * Create setup-mcp command\n */\nexport function createSetupMCPCommand(): Command {\n return new Command('setup-mcp')\n .description('Auto-configure Claude Code MCP integration')\n .option('--dry-run', 'Show what would be configured without making changes')\n .option('--reset', 'Reset MCP configuration to defaults')\n .action(async (options) => {\n console.log(chalk.cyan('\\nStackMemory MCP Setup\\n'));\n\n if (options.dryRun) {\n console.log(chalk.yellow('[DRY RUN] No changes will be made.\\n'));\n }\n\n // Step 1: Ensure Claude directory exists\n if (!existsSync(CLAUDE_DIR)) {\n if (options.dryRun) {\n console.log(chalk.gray(`Would create: ${CLAUDE_DIR}`));\n } else {\n mkdirSync(CLAUDE_DIR, { recursive: true });\n console.log(chalk.green('[OK]') + ' Created ~/.claude directory');\n }\n }\n\n // Step 2: Create MCP server configuration\n const mcpConfig = {\n mcpServers: {\n stackmemory: {\n command: 'stackmemory',\n args: ['mcp-server'],\n env: {\n NODE_ENV: 'production',\n },\n },\n },\n };\n\n if (options.dryRun) {\n console.log(\n chalk.gray(`Would write MCP config to: ${MCP_CONFIG_FILE}`)\n );\n console.log(chalk.gray(JSON.stringify(mcpConfig, null, 2)));\n } else {\n writeFileSync(MCP_CONFIG_FILE, JSON.stringify(mcpConfig, null, 2));\n console.log(chalk.green('[OK]') + ' Created MCP server configuration');\n }\n\n // Step 3: Update Claude config.json to reference MCP config\n let claudeConfig: Record<string, unknown> = {};\n if (existsSync(CLAUDE_CONFIG_FILE)) {\n try {\n claudeConfig = JSON.parse(readFileSync(CLAUDE_CONFIG_FILE, 'utf8'));\n } catch {\n console.log(\n chalk.yellow('[WARN]') +\n ' Could not parse existing config.json, creating new'\n );\n }\n }\n\n // Ensure mcp.configFiles array includes our config\n if (!claudeConfig.mcp) {\n claudeConfig.mcp = {};\n }\n const mcp = claudeConfig.mcp as Record<string, unknown>;\n if (!mcp.configFiles) {\n mcp.configFiles = [];\n }\n const configFiles = mcp.configFiles as string[];\n if (!configFiles.includes(MCP_CONFIG_FILE)) {\n configFiles.push(MCP_CONFIG_FILE);\n }\n\n if (options.dryRun) {\n console.log(chalk.gray(`Would update: ${CLAUDE_CONFIG_FILE}`));\n } else {\n writeFileSync(\n CLAUDE_CONFIG_FILE,\n JSON.stringify(claudeConfig, null, 2)\n );\n console.log(chalk.green('[OK]') + ' Updated Claude config.json');\n }\n\n // Step 4: Validate configuration\n console.log(chalk.cyan('\\nValidating configuration...'));\n\n // Check stackmemory command is available\n try {\n execSync('stackmemory --version', { stdio: 'pipe' });\n console.log(chalk.green('[OK]') + ' stackmemory CLI is installed');\n } catch {\n console.log(chalk.yellow('[WARN]') + ' stackmemory CLI not in PATH');\n console.log(chalk.gray(' You may need to restart your terminal'));\n }\n\n // Check Claude Code is available\n try {\n execSync('claude --version', { stdio: 'pipe' });\n console.log(chalk.green('[OK]') + ' Claude Code is installed');\n } catch {\n console.log(chalk.yellow('[WARN]') + ' Claude Code not found');\n console.log(chalk.gray(' Install from: https://claude.ai/code'));\n }\n\n // Final instructions\n if (!options.dryRun) {\n console.log(chalk.green('\\nMCP setup complete!'));\n console.log(chalk.cyan('\\nNext steps:'));\n console.log(chalk.white(' 1. Restart Claude Code'));\n console.log(\n chalk.white(\n ' 2. The StackMemory MCP tools will be available automatically'\n )\n );\n console.log(\n chalk.gray(\n '\\nTo verify: Run \"stackmemory doctor\" to check all integrations'\n )\n );\n }\n });\n}\n\n/**\n * Create doctor command for diagnostics\n */\nexport function createDoctorCommand(): Command {\n return new Command('doctor')\n .description('Diagnose StackMemory configuration and common issues')\n .option('--fix', 'Attempt to automatically fix issues')\n .action(async (options) => {\n console.log(chalk.cyan('\\nStackMemory Doctor\\n'));\n console.log(chalk.gray('Checking configuration and dependencies...\\n'));\n\n const results: DiagnosticResult[] = [];\n\n // 1. Check project initialization\n const projectDir = join(process.cwd(), '.stackmemory');\n const dbPath = join(projectDir, 'context.db');\n if (existsSync(dbPath)) {\n results.push({\n name: 'Project Initialization',\n status: 'ok',\n message: 'StackMemory is initialized in this project',\n });\n } else if (existsSync(projectDir)) {\n results.push({\n name: 'Project Initialization',\n status: 'warn',\n message: '.stackmemory directory exists but database not found',\n fix: 'Run: stackmemory init',\n });\n } else {\n results.push({\n name: 'Project Initialization',\n status: 'error',\n message: 'StackMemory not initialized in this project',\n fix: 'Run: stackmemory init',\n });\n }\n\n // 2. Check database integrity\n if (existsSync(dbPath)) {\n try {\n const Database = (await import('better-sqlite3')).default;\n const db = new Database(dbPath, { readonly: true });\n const tables = db\n .prepare(\"SELECT name FROM sqlite_master WHERE type='table'\")\n .all() as { name: string }[];\n db.close();\n\n const hasFrames = tables.some((t) => t.name === 'frames');\n if (hasFrames) {\n results.push({\n name: 'Database Integrity',\n status: 'ok',\n message: `Database has ${tables.length} tables`,\n });\n } else {\n results.push({\n name: 'Database Integrity',\n status: 'warn',\n message: 'Database exists but missing expected tables',\n fix: 'Run: stackmemory init --interactive',\n });\n }\n } catch (error) {\n results.push({\n name: 'Database Integrity',\n status: 'error',\n message: `Database error: ${(error as Error).message}`,\n fix: 'Remove .stackmemory/context.db and run: stackmemory init',\n });\n }\n }\n\n // 3. Check MCP configuration\n if (existsSync(MCP_CONFIG_FILE)) {\n try {\n const config = JSON.parse(readFileSync(MCP_CONFIG_FILE, 'utf8'));\n if (config.mcpServers?.stackmemory) {\n results.push({\n name: 'MCP Configuration',\n status: 'ok',\n message: 'MCP server configured',\n });\n } else {\n results.push({\n name: 'MCP Configuration',\n status: 'warn',\n message:\n 'MCP config file exists but stackmemory server not configured',\n fix: 'Run: stackmemory setup-mcp',\n });\n }\n } catch {\n results.push({\n name: 'MCP Configuration',\n status: 'error',\n message: 'Invalid MCP configuration file',\n fix: 'Run: stackmemory setup-mcp --reset',\n });\n }\n } else {\n results.push({\n name: 'MCP Configuration',\n status: 'warn',\n message: 'MCP not configured for Claude Code',\n fix: 'Run: stackmemory setup-mcp',\n });\n }\n\n // 4. Check Claude hooks\n if (existsSync(HOOKS_JSON)) {\n try {\n const hooks = JSON.parse(readFileSync(HOOKS_JSON, 'utf8'));\n const hasTraceHook = !!hooks['tool-use-approval'];\n if (hasTraceHook) {\n results.push({\n name: 'Claude Hooks',\n status: 'ok',\n message: 'Tool tracing hook installed',\n });\n } else {\n results.push({\n name: 'Claude Hooks',\n status: 'warn',\n message: 'Hooks file exists but tracing not configured',\n fix: 'Run: stackmemory hooks install',\n });\n }\n } catch {\n results.push({\n name: 'Claude Hooks',\n status: 'warn',\n message: 'Could not read hooks.json',\n });\n }\n } else {\n results.push({\n name: 'Claude Hooks',\n status: 'warn',\n message: 'Claude hooks not installed (optional)',\n fix: 'Run: stackmemory hooks install',\n });\n }\n\n // 5. Check environment variables\n const envChecks = [\n { key: 'LINEAR_API_KEY', name: 'Linear API Key', optional: true },\n ];\n\n for (const check of envChecks) {\n const value = process.env[check.key];\n if (value) {\n results.push({\n name: check.name,\n status: 'ok',\n message: 'Environment variable set',\n });\n } else if (!check.optional) {\n results.push({\n name: check.name,\n status: 'error',\n message: 'Required environment variable not set',\n fix: `Set ${check.key} in your .env file`,\n });\n }\n // Skip optional env vars that aren't set\n }\n\n // 6. Check file permissions\n const homeStackmemory = join(homedir(), '.stackmemory');\n if (existsSync(homeStackmemory)) {\n try {\n const testFile = join(homeStackmemory, '.write-test');\n writeFileSync(testFile, 'test');\n const { unlinkSync } = await import('fs');\n unlinkSync(testFile);\n results.push({\n name: 'File Permissions',\n status: 'ok',\n message: '~/.stackmemory is writable',\n });\n } catch {\n results.push({\n name: 'File Permissions',\n status: 'error',\n message: '~/.stackmemory is not writable',\n fix: 'Run: chmod 700 ~/.stackmemory',\n });\n }\n }\n\n // Display results\n let hasErrors = false;\n let hasWarnings = false;\n\n for (const result of results) {\n const icon =\n result.status === 'ok'\n ? chalk.green('[OK]')\n : result.status === 'warn'\n ? chalk.yellow('[WARN]')\n : chalk.red('[ERROR]');\n\n console.log(`${icon} ${result.name}`);\n console.log(chalk.gray(` ${result.message}`));\n\n if (result.fix) {\n console.log(chalk.cyan(` Fix: ${result.fix}`));\n\n if (options.fix && result.status !== 'ok') {\n // Auto-fix logic for specific issues\n if (result.fix.includes('stackmemory setup-mcp')) {\n console.log(chalk.gray(' Attempting auto-fix...'));\n try {\n execSync('stackmemory setup-mcp', { stdio: 'inherit' });\n } catch {\n console.log(chalk.red(' Auto-fix failed'));\n }\n }\n }\n }\n\n if (result.status === 'error') hasErrors = true;\n if (result.status === 'warn') hasWarnings = true;\n }\n\n // Summary\n console.log('');\n if (hasErrors) {\n console.log(\n chalk.red('Some issues need attention. Run suggested fixes above.')\n );\n process.exit(1);\n } else if (hasWarnings) {\n console.log(\n chalk.yellow(\n 'StackMemory is working but some optional features are not configured.'\n )\n );\n } else {\n console.log(\n chalk.green('All checks passed! StackMemory is properly configured.')\n );\n }\n });\n}\n\n/**\n * Create setup-plugins command\n */\nexport function createSetupPluginsCommand(): Command {\n const cmd = new Command('setup-plugins');\n\n cmd\n .description('Install StackMemory plugins for Claude Code')\n .option('--force', 'Overwrite existing plugins')\n .action(async (options) => {\n console.log(\n chalk.cyan('Installing StackMemory plugins for Claude Code...\\n')\n );\n\n const pluginsDir = join(CLAUDE_DIR, 'plugins');\n\n // Ensure plugins directory exists\n if (!existsSync(pluginsDir)) {\n mkdirSync(pluginsDir, { recursive: true });\n console.log(chalk.gray(`Created: ${pluginsDir}`));\n }\n\n // Find the plugins source directory\n // Check multiple locations: local dev, global npm, local npm\n const possiblePaths = [\n join(process.cwd(), 'plugins'),\n join(__dirname, '..', '..', '..', 'plugins'),\n join(homedir(), '.stackmemory', 'plugins'),\n ];\n\n // Try to find via npm root\n try {\n const globalRoot = execSync('npm root -g', {\n encoding: 'utf-8',\n }).trim();\n possiblePaths.push(\n join(globalRoot, '@stackmemoryai', 'stackmemory', 'plugins')\n );\n } catch {\n // npm not available or failed\n }\n\n let sourcePluginsDir: string | undefined;\n for (const p of possiblePaths) {\n if (existsSync(p) && existsSync(join(p, 'stackmemory'))) {\n sourcePluginsDir = p;\n break;\n }\n }\n\n if (!sourcePluginsDir) {\n console.log(chalk.red('Could not find StackMemory plugins directory'));\n console.log(chalk.gray('Searched:'));\n possiblePaths.forEach((p) => console.log(chalk.gray(` - ${p}`)));\n process.exit(1);\n }\n\n console.log(chalk.gray(`Source: ${sourcePluginsDir}\\n`));\n\n // List of plugins to install\n const plugins = ['stackmemory', 'ralph-wiggum'];\n let installed = 0;\n\n for (const plugin of plugins) {\n const sourcePath = join(sourcePluginsDir, plugin);\n const targetPath = join(pluginsDir, plugin);\n\n if (!existsSync(sourcePath)) {\n console.log(chalk.yellow(` [SKIP] ${plugin} - not found in source`));\n continue;\n }\n\n if (existsSync(targetPath)) {\n if (options.force) {\n // Remove existing\n try {\n execSync(`rm -rf \"${targetPath}\"`, { encoding: 'utf-8' });\n } catch {\n console.log(\n chalk.red(` [ERROR] ${plugin} - could not remove existing`)\n );\n continue;\n }\n } else {\n console.log(\n chalk.gray(` [EXISTS] ${plugin} - use --force to overwrite`)\n );\n continue;\n }\n }\n\n // Create symlink\n try {\n execSync(`ln -s \"${sourcePath}\" \"${targetPath}\"`, {\n encoding: 'utf-8',\n });\n console.log(chalk.green(` [OK] ${plugin}`));\n installed++;\n } catch (err) {\n console.log(\n chalk.red(` [ERROR] ${plugin} - ${(err as Error).message}`)\n );\n }\n }\n\n console.log('');\n if (installed > 0) {\n console.log(chalk.green(`Installed ${installed} plugin(s)`));\n console.log(chalk.gray('\\nAvailable commands in Claude Code:'));\n console.log(\n chalk.white(' /sm-status ') +\n chalk.gray('Show StackMemory status')\n );\n console.log(\n chalk.white(' /sm-capture ') +\n chalk.gray('Capture work for handoff')\n );\n console.log(\n chalk.white(' /sm-restore ') +\n chalk.gray('Restore from last handoff')\n );\n console.log(\n chalk.white(' /sm-decision ') + chalk.gray('Record a decision')\n );\n console.log(\n chalk.white(' /sm-help ') + chalk.gray('Show all commands')\n );\n console.log(\n chalk.white(' /ralph-loop ') +\n chalk.gray('Start Ralph iteration loop')\n );\n } else {\n console.log(chalk.yellow('No plugins installed'));\n }\n });\n\n return cmd;\n}\n\n/**\n * Create setup-remote command for remote MCP server auto-start\n */\nexport function createSetupRemoteCommand(): Command {\n const cmd = new Command('setup-remote');\n\n cmd\n .description('Configure remote MCP server to auto-start on boot')\n .option('--port <number>', 'Port for remote server', '3847')\n .option('--project <path>', 'Project root directory')\n .option('--uninstall', 'Remove the auto-start service')\n .option('--status', 'Check service status')\n .action(async (options) => {\n const home = homedir();\n const platform = process.platform;\n\n // Service configuration\n const serviceName =\n platform === 'darwin'\n ? 'com.stackmemory.remote-mcp'\n : 'stackmemory-remote-mcp';\n const serviceDir =\n platform === 'darwin'\n ? join(home, 'Library', 'LaunchAgents')\n : join(home, '.config', 'systemd', 'user');\n const serviceFile =\n platform === 'darwin'\n ? join(serviceDir, `${serviceName}.plist`)\n : join(serviceDir, `${serviceName}.service`);\n const logDir = join(home, '.stackmemory', 'logs');\n const pidFile = join(home, '.stackmemory', 'remote-mcp.pid');\n\n // Handle status check\n if (options.status) {\n console.log(chalk.cyan('\\nRemote MCP Server Status\\n'));\n\n if (platform === 'darwin') {\n try {\n const result = execSync(\n `launchctl list | grep ${serviceName} || true`,\n { encoding: 'utf-8' }\n );\n if (result.includes(serviceName)) {\n console.log(chalk.green('[RUNNING]') + ' Service is active');\n try {\n const health = execSync(\n `curl -s http://localhost:${options.port}/health 2>/dev/null`,\n { encoding: 'utf-8' }\n );\n const data = JSON.parse(health);\n console.log(chalk.gray(` Project: ${data.projectId}`));\n console.log(\n chalk.gray(` URL: http://localhost:${options.port}/sse`)\n );\n } catch {\n console.log(\n chalk.yellow(' Server not responding to health check')\n );\n }\n } else {\n console.log(chalk.yellow('[STOPPED]') + ' Service not running');\n }\n } catch {\n console.log(chalk.yellow('[UNKNOWN]') + ' Could not check status');\n }\n } else if (platform === 'linux') {\n try {\n execSync(`systemctl --user is-active ${serviceName}`, {\n stdio: 'pipe',\n });\n console.log(chalk.green('[RUNNING]') + ' Service is active');\n } catch {\n console.log(chalk.yellow('[STOPPED]') + ' Service not running');\n }\n }\n\n console.log(chalk.gray(`\\nService file: ${serviceFile}`));\n console.log(chalk.gray(`Logs: ${logDir}/remote-mcp.log`));\n return;\n }\n\n // Handle uninstall\n if (options.uninstall) {\n console.log(chalk.cyan('\\nUninstalling Remote MCP Server Service\\n'));\n\n if (platform === 'darwin') {\n try {\n execSync(`launchctl unload \"${serviceFile}\"`, { stdio: 'pipe' });\n console.log(chalk.green('[OK]') + ' Service unloaded');\n } catch {\n console.log(chalk.gray('[SKIP]') + ' Service was not loaded');\n }\n\n if (existsSync(serviceFile)) {\n const fs = await import('fs/promises');\n await fs.unlink(serviceFile);\n console.log(chalk.green('[OK]') + ' Service file removed');\n }\n } else if (platform === 'linux') {\n try {\n execSync(`systemctl --user stop ${serviceName}`, { stdio: 'pipe' });\n execSync(`systemctl --user disable ${serviceName}`, {\n stdio: 'pipe',\n });\n console.log(chalk.green('[OK]') + ' Service stopped and disabled');\n } catch {\n console.log(chalk.gray('[SKIP]') + ' Service was not running');\n }\n\n if (existsSync(serviceFile)) {\n const fs = await import('fs/promises');\n await fs.unlink(serviceFile);\n execSync('systemctl --user daemon-reload', { stdio: 'pipe' });\n console.log(chalk.green('[OK]') + ' Service file removed');\n }\n }\n\n console.log(chalk.green('\\nRemote MCP service uninstalled'));\n return;\n }\n\n // Install service\n console.log(chalk.cyan('\\nSetting up Remote MCP Server Auto-Start\\n'));\n\n if (platform !== 'darwin' && platform !== 'linux') {\n console.log(\n chalk.red('Auto-start is only supported on macOS and Linux')\n );\n console.log(chalk.gray('\\nManual start: stackmemory mcp-remote'));\n return;\n }\n\n // Create directories\n if (!existsSync(serviceDir)) {\n mkdirSync(serviceDir, { recursive: true });\n }\n if (!existsSync(logDir)) {\n mkdirSync(logDir, { recursive: true });\n }\n\n // Find node and stackmemory paths\n let nodePath: string;\n try {\n nodePath = execSync('which node', { encoding: 'utf-8' }).trim();\n } catch {\n nodePath = '/usr/local/bin/node';\n }\n\n // Find stackmemory CLI path\n let stackmemoryPath: string;\n try {\n stackmemoryPath = execSync('which stackmemory', {\n encoding: 'utf-8',\n }).trim();\n } catch {\n // Try npm global path\n try {\n const npmRoot = execSync('npm root -g', { encoding: 'utf-8' }).trim();\n stackmemoryPath = join(\n npmRoot,\n '@stackmemoryai',\n 'stackmemory',\n 'dist',\n 'cli',\n 'index.js'\n );\n } catch {\n stackmemoryPath = 'npx stackmemory';\n }\n }\n\n const projectPath = options.project || home;\n const port = options.port || '3847';\n\n if (platform === 'darwin') {\n // Generate macOS launchd plist\n const plist = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>${serviceName}</string>\n\n <key>ProgramArguments</key>\n <array>\n <string>${stackmemoryPath.includes('npx') ? 'npx' : nodePath}</string>\n ${stackmemoryPath.includes('npx') ? '<string>stackmemory</string>' : `<string>${stackmemoryPath}</string>`}\n <string>mcp-remote</string>\n <string>--port</string>\n <string>${port}</string>\n <string>--project</string>\n <string>${projectPath}</string>\n </array>\n\n <key>RunAtLoad</key>\n <true/>\n\n <key>KeepAlive</key>\n <dict>\n <key>SuccessfulExit</key>\n <false/>\n </dict>\n\n <key>WorkingDirectory</key>\n <string>${projectPath}</string>\n\n <key>StandardOutPath</key>\n <string>${logDir}/remote-mcp.log</string>\n\n <key>StandardErrorPath</key>\n <string>${logDir}/remote-mcp.error.log</string>\n\n <key>EnvironmentVariables</key>\n <dict>\n <key>HOME</key>\n <string>${home}</string>\n <key>PATH</key>\n <string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin</string>\n <key>NODE_ENV</key>\n <string>production</string>\n </dict>\n\n <key>ThrottleInterval</key>\n <integer>10</integer>\n</dict>\n</plist>`;\n\n writeFileSync(serviceFile, plist);\n console.log(chalk.green('[OK]') + ' Created launchd service file');\n\n // Unload if already loaded\n try {\n execSync(`launchctl unload \"${serviceFile}\" 2>/dev/null`, {\n stdio: 'pipe',\n });\n } catch {\n // Not loaded, ignore\n }\n\n // Load the service\n try {\n execSync(`launchctl load -w \"${serviceFile}\"`, { stdio: 'pipe' });\n console.log(chalk.green('[OK]') + ' Service loaded and started');\n } catch (err) {\n console.log(chalk.red('[ERROR]') + ` Failed to load service: ${err}`);\n return;\n }\n } else if (platform === 'linux') {\n // Generate systemd service\n const service = `[Unit]\nDescription=StackMemory Remote MCP Server\nDocumentation=https://github.com/stackmemoryai/stackmemory\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=${stackmemoryPath.includes('npx') ? 'npx stackmemory' : `${nodePath} ${stackmemoryPath}`} mcp-remote --port ${port} --project ${projectPath}\nRestart=on-failure\nRestartSec=10\nWorkingDirectory=${projectPath}\n\nEnvironment=HOME=${home}\nEnvironment=PATH=/usr/local/bin:/usr/bin:/bin\nEnvironment=NODE_ENV=production\n\nStandardOutput=append:${logDir}/remote-mcp.log\nStandardError=append:${logDir}/remote-mcp.error.log\n\n[Install]\nWantedBy=default.target`;\n\n writeFileSync(serviceFile, service);\n console.log(chalk.green('[OK]') + ' Created systemd service file');\n\n try {\n execSync('systemctl --user daemon-reload', { stdio: 'pipe' });\n execSync(`systemctl --user enable ${serviceName}`, { stdio: 'pipe' });\n execSync(`systemctl --user start ${serviceName}`, { stdio: 'pipe' });\n console.log(chalk.green('[OK]') + ' Service enabled and started');\n } catch (err) {\n console.log(\n chalk.red('[ERROR]') + ` Failed to start service: ${err}`\n );\n return;\n }\n }\n\n // Verify it's running\n console.log(chalk.cyan('\\nVerifying server...\\n'));\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n try {\n const health = execSync(\n `curl -s http://localhost:${port}/health 2>/dev/null`,\n { encoding: 'utf-8' }\n );\n const data = JSON.parse(health);\n console.log(chalk.green('[OK]') + ' Server is running');\n console.log(chalk.gray(` Project: ${data.projectId}`));\n } catch {\n console.log(\n chalk.yellow('[WARN]') +\n ' Server not responding yet (may still be starting)'\n );\n }\n\n console.log(\n chalk.green('\\nRemote MCP Server configured for auto-start!')\n );\n console.log(chalk.cyan('\\nConnection info:'));\n console.log(chalk.white(` URL: http://localhost:${port}/sse`));\n console.log(chalk.white(` Health: http://localhost:${port}/health`));\n console.log(chalk.gray(`\\nLogs: ${logDir}/remote-mcp.log`));\n console.log(chalk.gray(`Service: ${serviceFile}`));\n console.log(chalk.cyan('\\nFor external access (ngrok):'));\n console.log(chalk.white(` ngrok http ${port}`));\n console.log(chalk.gray(' Then use the ngrok URL + /sse in Claude.ai'));\n });\n\n return cmd;\n}\n\n/**\n * Register setup commands\n */\nexport function registerSetupCommands(program: Command): void {\n program.addCommand(createSetupMCPCommand());\n program.addCommand(createDoctorCommand());\n program.addCommand(createSetupPluginsCommand());\n program.addCommand(createSetupRemoteCommand());\n}\n"],
|
|
5
|
-
"mappings": ";;;;AAMA,SAAS,eAAe;AACxB,OAAO,WAAW;AAClB,SAAS,YAAY,cAAc,eAAe,iBAAiB;AACnE,SAAS,YAAY;AACrB,SAAS,eAAe;AACxB,SAAS,gBAAgB;AAGzB,MAAM,aAAa,KAAK,QAAQ,GAAG,SAAS;AAC5C,MAAM,qBAAqB,KAAK,YAAY,aAAa;AACzD,MAAM,kBAAkB,KAAK,YAAY,sBAAsB;AAC/D,MAAM,aAAa,KAAK,YAAY,YAAY;AAYzC,SAAS,wBAAiC;AAC/C,SAAO,IAAI,QAAQ,WAAW,EAC3B,YAAY,4CAA4C,EACxD,OAAO,aAAa,sDAAsD,EAC1E,OAAO,WAAW,qCAAqC,EACvD,OAAO,OAAO,YAAY;AACzB,YAAQ,IAAI,MAAM,KAAK,2BAA2B,CAAC;AAEnD,QAAI,QAAQ,QAAQ;AAClB,cAAQ,IAAI,MAAM,OAAO,sCAAsC,CAAC;AAAA,IAClE;AAGA,QAAI,CAAC,WAAW,UAAU,GAAG;AAC3B,UAAI,QAAQ,QAAQ;AAClB,gBAAQ,IAAI,MAAM,KAAK,iBAAiB,UAAU,EAAE,CAAC;AAAA,MACvD,OAAO;AACL,kBAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AACzC,gBAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,8BAA8B;AAAA,MAClE;AAAA,IACF;AAGA,UAAM,YAAY;AAAA,MAChB,YAAY;AAAA,QACV,aAAa;AAAA,UACX,SAAS;AAAA,UACT,MAAM,CAAC,YAAY;AAAA,UACnB,KAAK;AAAA,YACH,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,QAAQ,QAAQ;AAClB,cAAQ;AAAA,QACN,MAAM,KAAK,8BAA8B,eAAe,EAAE;AAAA,MAC5D;AACA,cAAQ,IAAI,MAAM,KAAK,KAAK,UAAU,WAAW,MAAM,CAAC,CAAC,CAAC;AAAA,IAC5D,OAAO;AACL,oBAAc,iBAAiB,KAAK,UAAU,WAAW,MAAM,CAAC,CAAC;AACjE,cAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,mCAAmC;AAAA,IACvE;AAGA,QAAI,eAAwC,CAAC;AAC7C,QAAI,WAAW,kBAAkB,GAAG;AAClC,UAAI;AACF,uBAAe,KAAK,MAAM,aAAa,oBAAoB,MAAM,CAAC;AAAA,MACpE,QAAQ;AACN,gBAAQ;AAAA,UACN,MAAM,OAAO,QAAQ,IACnB;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAGA,QAAI,CAAC,aAAa,KAAK;AACrB,mBAAa,MAAM,CAAC;AAAA,IACtB;AACA,UAAM,MAAM,aAAa;AACzB,QAAI,CAAC,IAAI,aAAa;AACpB,UAAI,cAAc,CAAC;AAAA,IACrB;AACA,UAAM,cAAc,IAAI;AACxB,QAAI,CAAC,YAAY,SAAS,eAAe,GAAG;AAC1C,kBAAY,KAAK,eAAe;AAAA,IAClC;AAEA,QAAI,QAAQ,QAAQ;AAClB,cAAQ,IAAI,MAAM,KAAK,iBAAiB,kBAAkB,EAAE,CAAC;AAAA,IAC/D,OAAO;AACL;AAAA,QACE;AAAA,QACA,KAAK,UAAU,cAAc,MAAM,CAAC;AAAA,MACtC;AACA,cAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,6BAA6B;AAAA,IACjE;AAGA,YAAQ,IAAI,MAAM,KAAK,+BAA+B,CAAC;AAGvD,QAAI;AACF,eAAS,yBAAyB,EAAE,OAAO,OAAO,CAAC;AACnD,cAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,+BAA+B;AAAA,IACnE,QAAQ;AACN,cAAQ,IAAI,MAAM,OAAO,QAAQ,IAAI,8BAA8B;AACnE,cAAQ,IAAI,MAAM,KAAK,yCAAyC,CAAC;AAAA,IACnE;AAGA,QAAI;AACF,eAAS,oBAAoB,EAAE,OAAO,OAAO,CAAC;AAC9C,cAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,2BAA2B;AAAA,IAC/D,QAAQ;AACN,cAAQ,IAAI,MAAM,OAAO,QAAQ,IAAI,wBAAwB;AAC7D,cAAQ,IAAI,MAAM,KAAK,wCAAwC,CAAC;AAAA,IAClE;AAGA,QAAI,CAAC,QAAQ,QAAQ;AACnB,cAAQ,IAAI,MAAM,MAAM,uBAAuB,CAAC;AAChD,cAAQ,IAAI,MAAM,KAAK,eAAe,CAAC;AACvC,cAAQ,IAAI,MAAM,MAAM,0BAA0B,CAAC;AACnD,cAAQ;AAAA,QACN,MAAM;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AACA,cAAQ;AAAA,QACN,MAAM;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACL;AAKO,SAAS,sBAA+B;AAC7C,SAAO,IAAI,QAAQ,QAAQ,EACxB,YAAY,sDAAsD,EAClE,OAAO,SAAS,qCAAqC,EACrD,OAAO,OAAO,YAAY;AACzB,YAAQ,IAAI,MAAM,KAAK,wBAAwB,CAAC;AAChD,YAAQ,IAAI,MAAM,KAAK,8CAA8C,CAAC;AAEtE,UAAM,UAA8B,CAAC;AAGrC,UAAM,aAAa,KAAK,QAAQ,IAAI,GAAG,cAAc;AACrD,UAAM,SAAS,KAAK,YAAY,YAAY;AAC5C,QAAI,WAAW,MAAM,GAAG;AACtB,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,MACX,CAAC;AAAA,IACH,WAAW,WAAW,UAAU,GAAG;AACjC,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,KAAK;AAAA,MACP,CAAC;AAAA,IACH,OAAO;AACL,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AAGA,QAAI,WAAW,MAAM,GAAG;AACtB,UAAI;AACF,cAAM,YAAY,MAAM,OAAO,gBAAgB,GAAG;AAClD,cAAM,KAAK,IAAI,SAAS,QAAQ,EAAE,UAAU,KAAK,CAAC;AAClD,cAAM,SAAS,GACZ,QAAQ,mDAAmD,EAC3D,IAAI;AACP,WAAG,MAAM;AAET,cAAM,YAAY,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ;AACxD,YAAI,WAAW;AACb,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS,gBAAgB,OAAO,MAAM;AAAA,UACxC,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,KAAK;AAAA,UACP,CAAC;AAAA,QACH;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,mBAAoB,MAAgB,OAAO;AAAA,UACpD,KAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,WAAW,eAAe,GAAG;AAC/B,UAAI;AACF,cAAM,SAAS,KAAK,MAAM,aAAa,iBAAiB,MAAM,CAAC;AAC/D,YAAI,OAAO,YAAY,aAAa;AAClC,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS;AAAA,UACX,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SACE;AAAA,YACF,KAAK;AAAA,UACP,CAAC;AAAA,QACH;AAAA,MACF,QAAQ;AACN,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,KAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AAGA,QAAI,WAAW,UAAU,GAAG;AAC1B,UAAI;AACF,cAAM,QAAQ,KAAK,MAAM,aAAa,YAAY,MAAM,CAAC;AACzD,cAAM,eAAe,CAAC,CAAC,MAAM,mBAAmB;AAChD,YAAI,cAAc;AAChB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS;AAAA,UACX,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,KAAK;AAAA,UACP,CAAC;AAAA,QACH;AAAA,MACF,QAAQ;AACN,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AAGA,UAAM,YAAY;AAAA,MAChB,EAAE,KAAK,kBAAkB,MAAM,kBAAkB,UAAU,KAAK;AAAA,IAClE;AAEA,eAAW,SAAS,WAAW;AAC7B,YAAM,QAAQ,QAAQ,IAAI,MAAM,GAAG;AACnC,UAAI,OAAO;AACT,gBAAQ,KAAK;AAAA,UACX,MAAM,MAAM;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,QACX,CAAC;AAAA,MACH,WAAW,CAAC,MAAM,UAAU;AAC1B,gBAAQ,KAAK;AAAA,UACX,MAAM,MAAM;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,KAAK,OAAO,MAAM,GAAG;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IAEF;AAGA,UAAM,kBAAkB,KAAK,QAAQ,GAAG,cAAc;AACtD,QAAI,WAAW,eAAe,GAAG;AAC/B,UAAI;AACF,cAAM,WAAW,KAAK,iBAAiB,aAAa;AACpD,sBAAc,UAAU,MAAM;AAC9B,cAAM,EAAE,WAAW,IAAI,MAAM,OAAO,IAAI;AACxC,mBAAW,QAAQ;AACnB,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,QACX,CAAC;AAAA,MACH,QAAQ;AACN,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,KAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,YAAY;AAChB,QAAI,cAAc;AAElB,eAAW,UAAU,SAAS;AAC5B,YAAM,OACJ,OAAO,WAAW,OACd,MAAM,MAAM,MAAM,IAClB,OAAO,WAAW,SAChB,MAAM,OAAO,QAAQ,IACrB,MAAM,IAAI,SAAS;AAE3B,cAAQ,IAAI,GAAG,IAAI,IAAI,OAAO,IAAI,EAAE;AACpC,cAAQ,IAAI,MAAM,KAAK,OAAO,OAAO,OAAO,EAAE,CAAC;AAE/C,UAAI,OAAO,KAAK;AACd,gBAAQ,IAAI,MAAM,KAAK,YAAY,OAAO,GAAG,EAAE,CAAC;AAEhD,YAAI,QAAQ,OAAO,OAAO,WAAW,MAAM;AAEzC,cAAI,OAAO,IAAI,SAAS,uBAAuB,GAAG;AAChD,oBAAQ,IAAI,MAAM,KAAK,4BAA4B,CAAC;AACpD,gBAAI;AACF,uBAAS,yBAAyB,EAAE,OAAO,UAAU,CAAC;AAAA,YACxD,QAAQ;AACN,sBAAQ,IAAI,MAAM,IAAI,qBAAqB,CAAC;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,OAAO,WAAW,QAAS,aAAY;AAC3C,UAAI,OAAO,WAAW,OAAQ,eAAc;AAAA,IAC9C;AAGA,YAAQ,IAAI,EAAE;AACd,QAAI,WAAW;AACb,cAAQ;AAAA,QACN,MAAM,IAAI,wDAAwD;AAAA,MACpE;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB,WAAW,aAAa;AACtB,cAAQ;AAAA,QACN,MAAM;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,cAAQ;AAAA,QACN,MAAM,MAAM,wDAAwD;AAAA,MACtE;AAAA,IACF;AAAA,EACF,CAAC;AACL;AAKO,SAAS,4BAAqC;AACnD,QAAM,MAAM,IAAI,QAAQ,eAAe;AAEvC,MACG,YAAY,6CAA6C,EACzD,OAAO,WAAW,4BAA4B,EAC9C,OAAO,OAAO,YAAY;AACzB,YAAQ;AAAA,MACN,MAAM,KAAK,qDAAqD;AAAA,IAClE;AAEA,UAAM,aAAa,KAAK,YAAY,SAAS;AAG7C,QAAI,CAAC,WAAW,UAAU,GAAG;AAC3B,gBAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AACzC,cAAQ,IAAI,MAAM,KAAK,YAAY,UAAU,EAAE,CAAC;AAAA,IAClD;AAIA,UAAM,gBAAgB;AAAA,MACpB,KAAK,QAAQ,IAAI,GAAG,SAAS;AAAA,MAC7B,KAAK,WAAW,MAAM,MAAM,MAAM,SAAS;AAAA,MAC3C,KAAK,QAAQ,GAAG,gBAAgB,SAAS;AAAA,IAC3C;AAGA,QAAI;AACF,YAAM,aAAa,SAAS,eAAe;AAAA,QACzC,UAAU;AAAA,MACZ,CAAC,EAAE,KAAK;AACR,oBAAc;AAAA,QACZ,KAAK,YAAY,kBAAkB,eAAe,SAAS;AAAA,MAC7D;AAAA,IACF,QAAQ;AAAA,IAER;AAEA,QAAI;AACJ,eAAW,KAAK,eAAe;AAC7B,UAAI,WAAW,CAAC,KAAK,WAAW,KAAK,GAAG,aAAa,CAAC,GAAG;AACvD,2BAAmB;AACnB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,kBAAkB;AACrB,cAAQ,IAAI,MAAM,IAAI,8CAA8C,CAAC;AACrE,cAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AACnC,oBAAc,QAAQ,CAAC,MAAM,QAAQ,IAAI,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;AAChE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,YAAQ,IAAI,MAAM,KAAK,WAAW,gBAAgB;AAAA,CAAI,CAAC;AAGvD,UAAM,UAAU,CAAC,eAAe,cAAc;AAC9C,QAAI,YAAY;AAEhB,eAAW,UAAU,SAAS;AAC5B,YAAM,aAAa,KAAK,kBAAkB,MAAM;AAChD,YAAM,aAAa,KAAK,YAAY,MAAM;AAE1C,UAAI,CAAC,WAAW,UAAU,GAAG;AAC3B,gBAAQ,IAAI,MAAM,OAAO,YAAY,MAAM,wBAAwB,CAAC;AACpE;AAAA,MACF;AAEA,UAAI,WAAW,UAAU,GAAG;AAC1B,YAAI,QAAQ,OAAO;AAEjB,cAAI;AACF,qBAAS,WAAW,UAAU,KAAK,EAAE,UAAU,QAAQ,CAAC;AAAA,UAC1D,QAAQ;AACN,oBAAQ;AAAA,cACN,MAAM,IAAI,aAAa,MAAM,8BAA8B;AAAA,YAC7D;AACA;AAAA,UACF;AAAA,QACF,OAAO;AACL,kBAAQ;AAAA,YACN,MAAM,KAAK,cAAc,MAAM,6BAA6B;AAAA,UAC9D;AACA;AAAA,QACF;AAAA,MACF;AAGA,UAAI;AACF,iBAAS,UAAU,UAAU,MAAM,UAAU,KAAK;AAAA,UAChD,UAAU;AAAA,QACZ,CAAC;AACD,gBAAQ,IAAI,MAAM,MAAM,UAAU,MAAM,EAAE,CAAC;AAC3C;AAAA,MACF,SAAS,KAAK;AACZ,gBAAQ;AAAA,UACN,MAAM,IAAI,aAAa,MAAM,MAAO,IAAc,OAAO,EAAE;AAAA,QAC7D;AAAA,MACF;AAAA,IACF;AAEA,YAAQ,IAAI,EAAE;AACd,QAAI,YAAY,GAAG;AACjB,cAAQ,IAAI,MAAM,MAAM,aAAa,SAAS,YAAY,CAAC;AAC3D,cAAQ,IAAI,MAAM,KAAK,sCAAsC,CAAC;AAC9D,cAAQ;AAAA,QACN,MAAM,MAAM,kBAAkB,IAC5B,MAAM,KAAK,yBAAyB;AAAA,MACxC;AACA,cAAQ;AAAA,QACN,MAAM,MAAM,kBAAkB,IAC5B,MAAM,KAAK,0BAA0B;AAAA,MACzC;AACA,cAAQ;AAAA,QACN,MAAM,MAAM,kBAAkB,IAC5B,MAAM,KAAK,2BAA2B;AAAA,MAC1C;AACA,cAAQ;AAAA,QACN,MAAM,MAAM,kBAAkB,IAAI,MAAM,KAAK,mBAAmB;AAAA,MAClE;AACA,cAAQ;AAAA,QACN,MAAM,MAAM,kBAAkB,IAAI,MAAM,KAAK,mBAAmB;AAAA,MAClE;AACA,cAAQ;AAAA,QACN,MAAM,MAAM,kBAAkB,IAC5B,MAAM,KAAK,4BAA4B;AAAA,MAC3C;AAAA,IACF,OAAO;AACL,cAAQ,IAAI,MAAM,OAAO,sBAAsB,CAAC;AAAA,IAClD;AAAA,EACF,CAAC;AAEH,SAAO;AACT;AAKO,SAAS,2BAAoC;AAClD,QAAM,MAAM,IAAI,QAAQ,cAAc;AAEtC,MACG,YAAY,mDAAmD,EAC/D,OAAO,mBAAmB,0BAA0B,MAAM,EAC1D,OAAO,oBAAoB,wBAAwB,EACnD,OAAO,eAAe,+BAA+B,EACrD,OAAO,YAAY,sBAAsB,EACzC,OAAO,OAAO,YAAY;AACzB,UAAM,OAAO,QAAQ;AACrB,UAAM,WAAW,QAAQ;AAGzB,UAAM,cACJ,aAAa,WACT,+BACA;AACN,UAAM,aACJ,aAAa,WACT,KAAK,MAAM,WAAW,cAAc,IACpC,KAAK,MAAM,WAAW,WAAW,MAAM;AAC7C,UAAM,cACJ,aAAa,WACT,KAAK,YAAY,GAAG,WAAW,QAAQ,IACvC,KAAK,YAAY,GAAG,WAAW,UAAU;AAC/C,UAAM,SAAS,KAAK,MAAM,gBAAgB,MAAM;AAChD,UAAM,UAAU,KAAK,MAAM,gBAAgB,gBAAgB;AAG3D,QAAI,QAAQ,QAAQ;AAClB,cAAQ,IAAI,MAAM,KAAK,8BAA8B,CAAC;AAEtD,UAAI,aAAa,UAAU;AACzB,YAAI;AACF,gBAAM,SAAS;AAAA,YACb,yBAAyB,WAAW;AAAA,YACpC,EAAE,UAAU,QAAQ;AAAA,UACtB;AACA,cAAI,OAAO,SAAS,WAAW,GAAG;AAChC,oBAAQ,IAAI,MAAM,MAAM,WAAW,IAAI,oBAAoB;AAC3D,gBAAI;AACF,oBAAM,SAAS;AAAA,gBACb,4BAA4B,QAAQ,IAAI;AAAA,gBACxC,EAAE,UAAU,QAAQ;AAAA,cACtB;AACA,oBAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,sBAAQ,IAAI,MAAM,KAAK,cAAc,KAAK,SAAS,EAAE,CAAC;AACtD,sBAAQ;AAAA,gBACN,MAAM,KAAK,2BAA2B,QAAQ,IAAI,MAAM;AAAA,cAC1D;AAAA,YACF,QAAQ;AACN,sBAAQ;AAAA,gBACN,MAAM,OAAO,yCAAyC;AAAA,cACxD;AAAA,YACF;AAAA,UACF,OAAO;AACL,oBAAQ,IAAI,MAAM,OAAO,WAAW,IAAI,sBAAsB;AAAA,UAChE;AAAA,QACF,QAAQ;AACN,kBAAQ,IAAI,MAAM,OAAO,WAAW,IAAI,yBAAyB;AAAA,QACnE;AAAA,MACF,WAAW,aAAa,SAAS;AAC/B,YAAI;AACF,mBAAS,8BAA8B,WAAW,IAAI;AAAA,YACpD,OAAO;AAAA,UACT,CAAC;AACD,kBAAQ,IAAI,MAAM,MAAM,WAAW,IAAI,oBAAoB;AAAA,QAC7D,QAAQ;AACN,kBAAQ,IAAI,MAAM,OAAO,WAAW,IAAI,sBAAsB;AAAA,QAChE;AAAA,MACF;AAEA,cAAQ,IAAI,MAAM,KAAK;AAAA,gBAAmB,WAAW,EAAE,CAAC;AACxD,cAAQ,IAAI,MAAM,KAAK,SAAS,MAAM,iBAAiB,CAAC;AACxD;AAAA,IACF;AAGA,QAAI,QAAQ,WAAW;AACrB,cAAQ,IAAI,MAAM,KAAK,4CAA4C,CAAC;AAEpE,UAAI,aAAa,UAAU;AACzB,YAAI;AACF,mBAAS,qBAAqB,WAAW,KAAK,EAAE,OAAO,OAAO,CAAC;AAC/D,kBAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,mBAAmB;AAAA,QACvD,QAAQ;AACN,kBAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,yBAAyB;AAAA,QAC9D;AAEA,YAAI,WAAW,WAAW,GAAG;AAC3B,gBAAM,KAAK,MAAM,OAAO,aAAa;AACrC,gBAAM,GAAG,OAAO,WAAW;AAC3B,kBAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,uBAAuB;AAAA,QAC3D;AAAA,MACF,WAAW,aAAa,SAAS;AAC/B,YAAI;AACF,mBAAS,yBAAyB,WAAW,IAAI,EAAE,OAAO,OAAO,CAAC;AAClE,mBAAS,4BAA4B,WAAW,IAAI;AAAA,YAClD,OAAO;AAAA,UACT,CAAC;AACD,kBAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,+BAA+B;AAAA,QACnE,QAAQ;AACN,kBAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,0BAA0B;AAAA,QAC/D;AAEA,YAAI,WAAW,WAAW,GAAG;AAC3B,gBAAM,KAAK,MAAM,OAAO,aAAa;AACrC,gBAAM,GAAG,OAAO,WAAW;AAC3B,mBAAS,kCAAkC,EAAE,OAAO,OAAO,CAAC;AAC5D,kBAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,uBAAuB;AAAA,QAC3D;AAAA,MACF;AAEA,cAAQ,IAAI,MAAM,MAAM,kCAAkC,CAAC;AAC3D;AAAA,IACF;AAGA,YAAQ,IAAI,MAAM,KAAK,6CAA6C,CAAC;AAErE,QAAI,aAAa,YAAY,aAAa,SAAS;AACjD,cAAQ;AAAA,QACN,MAAM,IAAI,iDAAiD;AAAA,MAC7D;AACA,cAAQ,IAAI,MAAM,KAAK,wCAAwC,CAAC;AAChE;AAAA,IACF;AAGA,QAAI,CAAC,WAAW,UAAU,GAAG;AAC3B,gBAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AAAA,IAC3C;AACA,QAAI,CAAC,WAAW,MAAM,GAAG;AACvB,gBAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,IACvC;AAGA,QAAI;AACJ,QAAI;AACF,iBAAW,SAAS,cAAc,EAAE,UAAU,QAAQ,CAAC,EAAE,KAAK;AAAA,IAChE,QAAQ;AACN,iBAAW;AAAA,IACb;AAGA,QAAI;AACJ,QAAI;AACF,wBAAkB,SAAS,qBAAqB;AAAA,QAC9C,UAAU;AAAA,MACZ,CAAC,EAAE,KAAK;AAAA,IACV,QAAQ;AAEN,UAAI;AACF,cAAM,UAAU,SAAS,eAAe,EAAE,UAAU,QAAQ,CAAC,EAAE,KAAK;AACpE,0BAAkB;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,QAAQ;AACN,0BAAkB;AAAA,MACpB;AAAA,IACF;AAEA,UAAM,cAAc,QAAQ,WAAW;AACvC,UAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAI,aAAa,UAAU;AAEzB,YAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,cAKR,WAAW;AAAA;AAAA;AAAA;AAAA,kBAIP,gBAAgB,SAAS,KAAK,IAAI,QAAQ,QAAQ;AAAA,UAC1D,gBAAgB,SAAS,KAAK,IAAI,iCAAiC,WAAW,eAAe,WAAW;AAAA;AAAA;AAAA,kBAGhG,IAAI;AAAA;AAAA,kBAEJ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAaf,WAAW;AAAA;AAAA;AAAA,cAGX,MAAM;AAAA;AAAA;AAAA,cAGN,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKF,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYd,oBAAc,aAAa,KAAK;AAChC,cAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,+BAA+B;AAGjE,UAAI;AACF,iBAAS,qBAAqB,WAAW,iBAAiB;AAAA,UACxD,OAAO;AAAA,QACT,CAAC;AAAA,MACH,QAAQ;AAAA,MAER;AAGA,UAAI;AACF,iBAAS,sBAAsB,WAAW,KAAK,EAAE,OAAO,OAAO,CAAC;AAChE,gBAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,6BAA6B;AAAA,MACjE,SAAS,KAAK;AACZ,gBAAQ,IAAI,MAAM,IAAI,SAAS,IAAI,4BAA4B,GAAG,EAAE;AACpE;AAAA,MACF;AAAA,IACF,WAAW,aAAa,SAAS;AAE/B,YAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOZ,gBAAgB,SAAS,KAAK,IAAI,oBAAoB,GAAG,QAAQ,IAAI,eAAe,EAAE,sBAAsB,IAAI,cAAc,WAAW;AAAA;AAAA;AAAA,mBAGlI,WAAW;AAAA;AAAA,mBAEX,IAAI;AAAA;AAAA;AAAA;AAAA,wBAIC,MAAM;AAAA,uBACP,MAAM;AAAA;AAAA;AAAA;AAKrB,oBAAc,aAAa,OAAO;AAClC,cAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,+BAA+B;AAEjE,UAAI;AACF,iBAAS,kCAAkC,EAAE,OAAO,OAAO,CAAC;AAC5D,iBAAS,2BAA2B,WAAW,IAAI,EAAE,OAAO,OAAO,CAAC;AACpE,iBAAS,0BAA0B,WAAW,IAAI,EAAE,OAAO,OAAO,CAAC;AACnE,gBAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,8BAA8B;AAAA,MAClE,SAAS,KAAK;AACZ,gBAAQ;AAAA,UACN,MAAM,IAAI,SAAS,IAAI,6BAA6B,GAAG;AAAA,QACzD;AACA;AAAA,MACF;AAAA,IACF;AAGA,YAAQ,IAAI,MAAM,KAAK,yBAAyB,CAAC;AACjD,UAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAI,CAAC;AAExD,QAAI;AACF,YAAM,SAAS;AAAA,QACb,4BAA4B,IAAI;AAAA,QAChC,EAAE,UAAU,QAAQ;AAAA,MACtB;AACA,YAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,cAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,oBAAoB;AACtD,cAAQ,IAAI,MAAM,KAAK,cAAc,KAAK,SAAS,EAAE,CAAC;AAAA,IACxD,QAAQ;AACN,cAAQ;AAAA,QACN,MAAM,OAAO,QAAQ,IACnB;AAAA,MACJ;AAAA,IACF;AAEA,YAAQ;AAAA,MACN,MAAM,MAAM,gDAAgD;AAAA,IAC9D;AACA,YAAQ,IAAI,MAAM,KAAK,oBAAoB,CAAC;AAC5C,YAAQ,IAAI,MAAM,MAAM,2BAA2B,IAAI,MAAM,CAAC;AAC9D,YAAQ,IAAI,MAAM,MAAM,8BAA8B,IAAI,SAAS,CAAC;AACpE,YAAQ,IAAI,MAAM,KAAK;AAAA,QAAW,MAAM,iBAAiB,CAAC;AAC1D,YAAQ,IAAI,MAAM,KAAK,YAAY,WAAW,EAAE,CAAC;AACjD,YAAQ,IAAI,MAAM,KAAK,gCAAgC,CAAC;AACxD,YAAQ,IAAI,MAAM,MAAM,gBAAgB,IAAI,EAAE,CAAC;AAC/C,YAAQ,IAAI,MAAM,KAAK,8CAA8C,CAAC;AAAA,EACxE,CAAC;AAEH,SAAO;AACT;AAKO,SAAS,sBAAsB,SAAwB;AAC5D,UAAQ,WAAW,sBAAsB,CAAC;AAC1C,UAAQ,WAAW,oBAAoB,CAAC;AACxC,UAAQ,WAAW,0BAA0B,CAAC;AAC9C,UAAQ,WAAW,yBAAyB,CAAC;AAC/C;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/cli/commands/shell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Shell Integration CLI Command\n * Install Sweep-powered completions for zsh/bash\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport {\n existsSync,\n readFileSync,\n writeFileSync,\n mkdirSync,\n copyFileSync,\n chmodSync,\n appendFileSync,\n} from 'fs';\nimport { join } from 'path';\n\n// __filename and __dirname are provided by esbuild banner for ESM compatibility\n\nfunction getShellType(): 'zsh' | 'bash' | 'unknown' {\n const shell = process.env.SHELL || '';\n if (shell.includes('zsh')) return 'zsh';\n if (shell.includes('bash')) return 'bash';\n return 'unknown';\n}\n\nfunction getShellRcFile(): string {\n const home = process.env.HOME || '';\n const shell = getShellType();\n\n if (shell === 'zsh') {\n return join(home, '.zshrc');\n } else if (shell === 'bash') {\n const bashrc = join(home, '.bashrc');\n const profile = join(home, '.bash_profile');\n return existsSync(bashrc) ? bashrc : profile;\n }\n\n return join(home, '.profile');\n}\n\nfunction findTemplateFile(filename: string): string | null {\n const locations = [\n join(process.cwd(), 'templates', 'shell', filename),\n join(\n process.cwd(),\n 'node_modules',\n '@stackmemoryai',\n 'stackmemory',\n 'templates',\n 'shell',\n filename\n ),\n join(dirname(dirname(dirname(__dirname))), 'templates', 'shell', filename),\n ];\n\n for (const loc of locations) {\n if (existsSync(loc)) {\n return loc;\n }\n }\n return null;\n}\n\nexport function createShellCommand(): Command {\n const cmd = new Command('shell')\n .description('Shell integration for Sweep-powered completions')\n .addHelpText(\n 'after',\n `\nExamples:\n stackmemory shell install Install shell completions\n stackmemory shell status Check installation status\n stackmemory shell uninstall Remove shell integration\n\nAfter installation:\n - Ctrl+] Request suggestion\n - Shift+Tab Accept suggestion\n - sweep_status Check status\n - sweep_toggle Enable/disable\n`\n );\n\n cmd\n .command('install')\n .description('Install Sweep-powered shell completions')\n .option('--shell <type>', 'Shell type (zsh or bash)', getShellType())\n .action(async (options) => {\n const spinner = ora('Installing shell integration...').start();\n\n const home = process.env.HOME || '';\n const shellDir = join(home, '.stackmemory', 'shell');\n const shell = options.shell as 'zsh' | 'bash';\n\n if (shell === 'unknown') {\n spinner.fail(chalk.red('Could not detect shell type'));\n console.log(chalk.gray('Use --shell zsh or --shell bash'));\n process.exit(1);\n }\n\n try {\n mkdirSync(shellDir, { recursive: true });\n\n const zshSource = findTemplateFile('sweep-complete.zsh');\n const suggestSource = findTemplateFile('sweep-suggest.js');\n\n if (!zshSource || !suggestSource) {\n spinner.fail(chalk.red('Template files not found'));\n console.log(chalk.gray('Ensure stackmemory is installed correctly'));\n process.exit(1);\n }\n\n const zshDest = join(shellDir, 'sweep-complete.zsh');\n const suggestDest = join(shellDir, 'sweep-suggest.js');\n\n copyFileSync(zshSource, zshDest);\n copyFileSync(suggestSource, suggestDest);\n chmodSync(suggestDest, '755');\n\n spinner.text = 'Updating shell configuration...';\n\n const rcFile = getShellRcFile();\n const sourceCmd =\n shell === 'zsh'\n ? `source \"${zshDest}\"`\n : `source \"${shellDir}/sweep-complete.bash\"`;\n\n const marker = '# StackMemory Sweep Completion';\n\n if (existsSync(rcFile)) {\n const content = readFileSync(rcFile, 'utf-8');\n\n if (content.includes(marker)) {\n spinner.succeed(chalk.green('Shell integration already installed'));\n console.log(\n chalk.gray('Restart your shell or run: source ' + rcFile)\n );\n return;\n }\n\n const addition = `\n${marker}\nif [[ -f \"${zshDest}\" ]]; then\n ${sourceCmd}\nfi\n`;\n appendFileSync(rcFile, addition);\n } else {\n writeFileSync(\n rcFile,\n `${marker}\\nif [[ -f \"${zshDest}\" ]]; then\\n ${sourceCmd}\\nfi\\n`\n );\n }\n\n spinner.succeed(chalk.green('Shell integration installed'));\n console.log('');\n console.log(chalk.bold('Files installed:'));\n console.log(chalk.gray(` ${zshDest}`));\n console.log(chalk.gray(` ${suggestDest}`));\n console.log('');\n console.log(chalk.bold('To activate:'));\n console.log(` source ${rcFile}`);\n console.log(' OR restart your terminal');\n console.log('');\n console.log(chalk.bold('Usage:'));\n console.log(' Ctrl+] Request suggestion');\n console.log(' Shift+Tab Accept suggestion');\n console.log(' sweep_status Check status');\n console.log(' sweep_toggle Enable/disable');\n } catch (error) {\n spinner.fail(chalk.red('Installation failed'));\n console.log(chalk.gray((error as Error).message));\n process.exit(1);\n }\n });\n\n cmd\n .command('status')\n .description('Check shell integration status')\n .action(() => {\n const home = process.env.HOME || '';\n const shellDir = join(home, '.stackmemory', 'shell');\n const zshFile = join(shellDir, 'sweep-complete.zsh');\n const suggestFile = join(shellDir, 'sweep-suggest.js');\n const rcFile = getShellRcFile();\n\n console.log(chalk.bold('\\nShell Integration Status\\n'));\n\n console.log(`Shell: ${chalk.cyan(getShellType())}`);\n console.log(`RC file: ${chalk.gray(rcFile)}`);\n console.log('');\n\n const zshInstalled = existsSync(zshFile);\n const suggestInstalled = existsSync(suggestFile);\n\n console.log(\n `Completion script: ${zshInstalled ? chalk.green('Installed') : chalk.yellow('Not installed')}`\n );\n console.log(\n `Suggest script: ${suggestInstalled ? chalk.green('Installed') : chalk.yellow('Not installed')}`\n );\n\n if (existsSync(rcFile)) {\n const content = readFileSync(rcFile, 'utf-8');\n const configured = content.includes('StackMemory Sweep Completion');\n console.log(\n `RC configured: ${configured ? chalk.green('Yes') : chalk.yellow('No')}`\n );\n } else {\n console.log(`RC configured: ${chalk.yellow('No RC file')}`);\n }\n\n const sweepState = join(home, '.stackmemory', 'sweep-state.json');\n if (existsSync(sweepState)) {\n try {\n const state = JSON.parse(readFileSync(sweepState, 'utf-8'));\n console.log('');\n console.log(chalk.bold('Sweep Context:'));\n console.log(\n chalk.gray(` Recent diffs: ${state.recentDiffs?.length || 0}`)\n );\n if (state.lastPrediction) {\n const age = Date.now() - state.lastPrediction.timestamp;\n const ageStr =\n age < 60000\n ? `${Math.round(age / 1000)}s ago`\n : `${Math.round(age / 60000)}m ago`;\n console.log(chalk.gray(` Last prediction: ${ageStr}`));\n }\n } catch {\n // Ignore\n }\n }\n\n if (!zshInstalled || !suggestInstalled) {\n console.log('');\n console.log(chalk.bold('To install: stackmemory shell install'));\n }\n });\n\n cmd\n .command('uninstall')\n .description('Remove shell integration')\n .action(() => {\n const rcFile = getShellRcFile();\n\n if (existsSync(rcFile)) {\n let content = readFileSync(rcFile, 'utf-8');\n\n const marker = '# StackMemory Sweep Completion';\n const markerIndex = content.indexOf(marker);\n\n if (markerIndex !== -1) {\n const endPattern = /\\nfi\\n/;\n const afterMarker = content.slice(markerIndex);\n const endMatch = afterMarker.match(endPattern);\n\n if (endMatch && endMatch.index !== undefined) {\n const endIndex = markerIndex + endMatch.index + endMatch[0].length;\n content = content.slice(0, markerIndex) + content.slice(endIndex);\n writeFileSync(rcFile, content);\n console.log(\n chalk.green('Shell integration removed from ' + rcFile)\n );\n }\n } else {\n console.log(chalk.yellow('No shell integration found in ' + rcFile));\n }\n }\n\n console.log(\n chalk.gray('\\nRestart your shell to complete uninstallation')\n );\n });\n\n cmd.action(() => {\n const home = process.env.HOME || '';\n const zshFile = join(home, '.stackmemory', 'shell', 'sweep-complete.zsh');\n const installed = existsSync(zshFile);\n\n console.log(chalk.bold('\\nStackMemory Shell Integration\\n'));\n console.log(\n `Status: ${installed ? chalk.green('Installed') : chalk.yellow('Not installed')}`\n );\n\n if (!installed) {\n console.log('');\n console.log(chalk.bold('Install with:'));\n console.log(' stackmemory shell install');\n } else {\n console.log('');\n console.log(chalk.bold('Commands:'));\n console.log(' stackmemory shell status Check status');\n console.log(' stackmemory shell uninstall Remove integration');\n }\n });\n\n return cmd;\n}\n\nexport default createShellCommand();\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/cli/commands/signup.ts"],
|
|
4
|
-
"sourcesContent": ["import { Command } from 'commander';\nimport chalk from 'chalk';\nimport open from 'open';\nimport inquirer from 'inquirer';\n\nexport function registerSignupCommand(program: Command): void {\n program\n .command('signup')\n .alias('register')\n .description('Sign up for StackMemory hosted service')\n .option('--no-open', 'Do not automatically open browser')\n .action(async (options) => {\n console.log(chalk.cyan('\uD83D\uDE80 StackMemory Hosted Service Signup\\n'));\n\n const signupUrl = 'https://stackmemory.ai/signup';\n \n if (options.open !== false) {\n console.log(chalk.gray('Opening signup page in your browser...'));\n try {\n await open(signupUrl);\n console.log(chalk.green('\u2713 Opened: ') + chalk.cyan(signupUrl));\n } catch (error) {\n console.log(chalk.yellow('Could not open browser automatically.'));\n console.log(chalk.gray('Please visit: ') + chalk.cyan(signupUrl));\n }\n } else {\n console.log(chalk.gray('Visit this URL to sign up:'));\n console.log(chalk.cyan(signupUrl));\n }\n\n console.log(chalk.gray('\\nAfter signing up, you can login with:'));\n console.log(chalk.cyan(' stackmemory login'));\n\n // Optional: Ask if they want to login now\n const { proceed } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'proceed',\n message: 'Have you completed signup and want to login now?',\n default: false,\n },\n ]);\n\n if (proceed) {\n // Import and run login command\n const { registerLoginCommand } = await import('./login.js');\n const loginCmd = new Command();\n registerLoginCommand(loginCmd);\n \n // Execute login\n console.log(chalk.cyan('\\n\uD83D\uDD10 Proceeding to login...\\n'));\n await loginCmd.parseAsync(['node', 'stackmemory', 'login']);\n } else {\n console.log(chalk.gray('\\nWhen ready, run: ') + chalk.cyan('stackmemory login'));\n }\n });\n}"],
|
|
5
|
-
"mappings": ";;;;AAAA,SAAS,eAAe;AACxB,OAAO,WAAW;AAClB,OAAO,UAAU;AACjB,OAAO,cAAc;AAEd,SAAS,sBAAsB,SAAwB;AAC5D,UACG,QAAQ,QAAQ,EAChB,MAAM,UAAU,EAChB,YAAY,wCAAwC,EACpD,OAAO,aAAa,mCAAmC,EACvD,OAAO,OAAO,YAAY;AACzB,YAAQ,IAAI,MAAM,KAAK,+CAAwC,CAAC;AAEhE,UAAM,YAAY;AAElB,QAAI,QAAQ,SAAS,OAAO;AAC1B,cAAQ,IAAI,MAAM,KAAK,wCAAwC,CAAC;AAChE,UAAI;AACF,cAAM,KAAK,SAAS;AACpB,gBAAQ,IAAI,MAAM,MAAM,iBAAY,IAAI,MAAM,KAAK,SAAS,CAAC;AAAA,MAC/D,SAAS,OAAO;AACd,gBAAQ,IAAI,MAAM,OAAO,uCAAuC,CAAC;AACjE,gBAAQ,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,SAAS,CAAC;AAAA,MAClE;AAAA,IACF,OAAO;AACL,cAAQ,IAAI,MAAM,KAAK,4BAA4B,CAAC;AACpD,cAAQ,IAAI,MAAM,KAAK,SAAS,CAAC;AAAA,IACnC;AAEA,YAAQ,IAAI,MAAM,KAAK,yCAAyC,CAAC;AACjE,YAAQ,IAAI,MAAM,KAAK,qBAAqB,CAAC;AAG7C,UAAM,EAAE,QAAQ,IAAI,MAAM,SAAS,OAAO;AAAA,MACxC;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AAED,QAAI,SAAS;AAEX,YAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,YAAY;AAC1D,YAAM,WAAW,IAAI,QAAQ;AAC7B,2BAAqB,QAAQ;AAG7B,cAAQ,IAAI,MAAM,KAAK,sCAA+B,CAAC;AACvD,YAAM,SAAS,WAAW,CAAC,QAAQ,eAAe,OAAO,CAAC;AAAA,IAC5D,OAAO;AACL,cAAQ,IAAI,MAAM,KAAK,qBAAqB,IAAI,MAAM,KAAK,mBAAmB,CAAC;AAAA,IACjF;AAAA,EACF,CAAC;AACL;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|