@mesrai/cli 0.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +670 -0
- package/dist/agents/agent.interface.d.ts +41 -0
- package/dist/agents/agent.interface.d.ts.map +1 -0
- package/dist/agents/agent.interface.js +2 -0
- package/dist/agents/agent.interface.js.map +1 -0
- package/dist/agents/claude-code.agent.d.ts +14 -0
- package/dist/agents/claude-code.agent.d.ts.map +1 -0
- package/dist/agents/claude-code.agent.js +90 -0
- package/dist/agents/claude-code.agent.js.map +1 -0
- package/dist/agents/codex.agent.d.ts +14 -0
- package/dist/agents/codex.agent.d.ts.map +1 -0
- package/dist/agents/codex.agent.js +77 -0
- package/dist/agents/codex.agent.js.map +1 -0
- package/dist/agents/cursor.agent.d.ts +29 -0
- package/dist/agents/cursor.agent.d.ts.map +1 -0
- package/dist/agents/cursor.agent.js +85 -0
- package/dist/agents/cursor.agent.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +60 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +37 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/auth/login.d.ts +11 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +158 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +2 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +26 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/status.d.ts +2 -0
- package/dist/commands/auth/status.d.ts.map +1 -0
- package/dist/commands/auth/status.js +82 -0
- package/dist/commands/auth/status.js.map +1 -0
- package/dist/commands/auth/team-key.d.ts +5 -0
- package/dist/commands/auth/team-key.d.ts.map +1 -0
- package/dist/commands/auth/team-key.js +112 -0
- package/dist/commands/auth/team-key.js.map +1 -0
- package/dist/commands/auth/token.d.ts +2 -0
- package/dist/commands/auth/token.d.ts.map +1 -0
- package/dist/commands/auth/token.js +33 -0
- package/dist/commands/auth/token.js.map +1 -0
- package/dist/commands/config.d.ts +5 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +26 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +23 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/hook/index.d.ts +3 -0
- package/dist/commands/hook/index.d.ts.map +1 -0
- package/dist/commands/hook/index.js +24 -0
- package/dist/commands/hook/index.js.map +1 -0
- package/dist/commands/hook/install.d.ts +11 -0
- package/dist/commands/hook/install.d.ts.map +1 -0
- package/dist/commands/hook/install.js +149 -0
- package/dist/commands/hook/install.js.map +1 -0
- package/dist/commands/hook/status.d.ts +2 -0
- package/dist/commands/hook/status.d.ts.map +1 -0
- package/dist/commands/hook/status.js +36 -0
- package/dist/commands/hook/status.js.map +1 -0
- package/dist/commands/hook/uninstall.d.ts +5 -0
- package/dist/commands/hook/uninstall.d.ts.map +1 -0
- package/dist/commands/hook/uninstall.js +66 -0
- package/dist/commands/hook/uninstall.js.map +1 -0
- package/dist/commands/memory/capture.d.ts +8 -0
- package/dist/commands/memory/capture.d.ts.map +1 -0
- package/dist/commands/memory/capture.js +124 -0
- package/dist/commands/memory/capture.js.map +1 -0
- package/dist/commands/memory/disable.d.ts +5 -0
- package/dist/commands/memory/disable.d.ts.map +1 -0
- package/dist/commands/memory/disable.js +67 -0
- package/dist/commands/memory/disable.js.map +1 -0
- package/dist/commands/memory/enable.d.ts +7 -0
- package/dist/commands/memory/enable.d.ts.map +1 -0
- package/dist/commands/memory/enable.js +74 -0
- package/dist/commands/memory/enable.js.map +1 -0
- package/dist/commands/memory/hooks.d.ts +31 -0
- package/dist/commands/memory/hooks.d.ts.map +1 -0
- package/dist/commands/memory/hooks.js +283 -0
- package/dist/commands/memory/hooks.js.map +1 -0
- package/dist/commands/memory/index.d.ts +3 -0
- package/dist/commands/memory/index.d.ts.map +1 -0
- package/dist/commands/memory/index.js +36 -0
- package/dist/commands/memory/index.js.map +1 -0
- package/dist/commands/memory/session-hooks/claude-code.d.ts +2 -0
- package/dist/commands/memory/session-hooks/claude-code.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks/claude-code.js +24 -0
- package/dist/commands/memory/session-hooks/claude-code.js.map +1 -0
- package/dist/commands/memory/session-hooks/codex.d.ts +2 -0
- package/dist/commands/memory/session-hooks/codex.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks/codex.js +16 -0
- package/dist/commands/memory/session-hooks/codex.js.map +1 -0
- package/dist/commands/memory/session-hooks/cursor.d.ts +2 -0
- package/dist/commands/memory/session-hooks/cursor.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks/cursor.js +20 -0
- package/dist/commands/memory/session-hooks/cursor.js.map +1 -0
- package/dist/commands/memory/session-hooks/index.d.ts +3 -0
- package/dist/commands/memory/session-hooks/index.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks/index.js +21 -0
- package/dist/commands/memory/session-hooks/index.js.map +1 -0
- package/dist/commands/memory/session-hooks/shared.d.ts +7 -0
- package/dist/commands/memory/session-hooks/shared.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks/shared.js +52 -0
- package/dist/commands/memory/session-hooks/shared.js.map +1 -0
- package/dist/commands/memory/session-hooks-install-codex.d.ts +19 -0
- package/dist/commands/memory/session-hooks-install-codex.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks-install-codex.js +91 -0
- package/dist/commands/memory/session-hooks-install-codex.js.map +1 -0
- package/dist/commands/memory/session-hooks-install-cursor.d.ts +9 -0
- package/dist/commands/memory/session-hooks-install-cursor.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks-install-cursor.js +119 -0
- package/dist/commands/memory/session-hooks-install-cursor.js.map +1 -0
- package/dist/commands/memory/session-hooks-install.d.ts +9 -0
- package/dist/commands/memory/session-hooks-install.d.ts.map +1 -0
- package/dist/commands/memory/session-hooks-install.js +173 -0
- package/dist/commands/memory/session-hooks-install.js.map +1 -0
- package/dist/commands/pr.d.ts +2 -0
- package/dist/commands/pr.d.ts.map +1 -0
- package/dist/commands/pr.js +2 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/commands/review.d.ts +2 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +2 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/rules.d.ts +31 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +159 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/schema.d.ts +3 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +62 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +85 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +99 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/subscribe.d.ts +4 -0
- package/dist/commands/subscribe.d.ts.map +1 -0
- package/dist/commands/subscribe.js +25 -0
- package/dist/commands/subscribe.js.map +1 -0
- package/dist/commands/update.d.ts +10 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +112 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -0
- package/dist/features/centralized-config/actions.d.ts +20 -0
- package/dist/features/centralized-config/actions.d.ts.map +1 -0
- package/dist/features/centralized-config/actions.js +114 -0
- package/dist/features/centralized-config/actions.js.map +1 -0
- package/dist/features/centralized-config/command.d.ts +4 -0
- package/dist/features/centralized-config/command.d.ts.map +1 -0
- package/dist/features/centralized-config/command.js +43 -0
- package/dist/features/centralized-config/command.js.map +1 -0
- package/dist/features/pr/command.d.ts +4 -0
- package/dist/features/pr/command.d.ts.map +1 -0
- package/dist/features/pr/command.js +222 -0
- package/dist/features/pr/command.js.map +1 -0
- package/dist/features/repo-config/actions.d.ts +33 -0
- package/dist/features/repo-config/actions.d.ts.map +1 -0
- package/dist/features/repo-config/actions.js +271 -0
- package/dist/features/repo-config/actions.js.map +1 -0
- package/dist/features/repo-config/command.d.ts +15 -0
- package/dist/features/repo-config/command.d.ts.map +1 -0
- package/dist/features/repo-config/command.js +135 -0
- package/dist/features/repo-config/command.js.map +1 -0
- package/dist/features/review/command.d.ts +4 -0
- package/dist/features/review/command.d.ts.map +1 -0
- package/dist/features/review/command.js +404 -0
- package/dist/features/review/command.js.map +1 -0
- package/dist/features/review/diff.d.ts +23 -0
- package/dist/features/review/diff.d.ts.map +1 -0
- package/dist/features/review/diff.js +47 -0
- package/dist/features/review/diff.js.map +1 -0
- package/dist/features/review/errors.d.ts +3 -0
- package/dist/features/review/errors.d.ts.map +1 -0
- package/dist/features/review/errors.js +26 -0
- package/dist/features/review/errors.js.map +1 -0
- package/dist/features/review/hunk-context.d.ts +25 -0
- package/dist/features/review/hunk-context.d.ts.map +1 -0
- package/dist/features/review/hunk-context.js +158 -0
- package/dist/features/review/hunk-context.js.map +1 -0
- package/dist/features/review/hunk-viewer.d.ts +25 -0
- package/dist/features/review/hunk-viewer.d.ts.map +1 -0
- package/dist/features/review/hunk-viewer.js +59 -0
- package/dist/features/review/hunk-viewer.js.map +1 -0
- package/dist/features/review/no-changes.d.ts +6 -0
- package/dist/features/review/no-changes.d.ts.map +1 -0
- package/dist/features/review/no-changes.js +31 -0
- package/dist/features/review/no-changes.js.map +1 -0
- package/dist/features/review/options.d.ts +7 -0
- package/dist/features/review/options.d.ts.map +1 -0
- package/dist/features/review/options.js +18 -0
- package/dist/features/review/options.js.map +1 -0
- package/dist/features/review/result.d.ts +40 -0
- package/dist/features/review/result.d.ts.map +1 -0
- package/dist/features/review/result.js +95 -0
- package/dist/features/review/result.js.map +1 -0
- package/dist/formatters/json.d.ts +7 -0
- package/dist/formatters/json.d.ts.map +1 -0
- package/dist/formatters/json.js +7 -0
- package/dist/formatters/json.js.map +1 -0
- package/dist/formatters/markdown.d.ts +7 -0
- package/dist/formatters/markdown.d.ts.map +1 -0
- package/dist/formatters/markdown.js +93 -0
- package/dist/formatters/markdown.js.map +1 -0
- package/dist/formatters/prompt.d.ts +12 -0
- package/dist/formatters/prompt.d.ts.map +1 -0
- package/dist/formatters/prompt.js +90 -0
- package/dist/formatters/prompt.js.map +1 -0
- package/dist/formatters/repo-config.d.ts +7 -0
- package/dist/formatters/repo-config.d.ts.map +1 -0
- package/dist/formatters/repo-config.js +99 -0
- package/dist/formatters/repo-config.js.map +1 -0
- package/dist/formatters/terminal.d.ts +7 -0
- package/dist/formatters/terminal.d.ts.map +1 -0
- package/dist/formatters/terminal.js +130 -0
- package/dist/formatters/terminal.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/services/api/api-core.d.ts +27 -0
- package/dist/services/api/api-core.d.ts.map +1 -0
- package/dist/services/api/api-core.js +451 -0
- package/dist/services/api/api-core.js.map +1 -0
- package/dist/services/api/api.interface.d.ts +101 -0
- package/dist/services/api/api.interface.d.ts.map +1 -0
- package/dist/services/api/api.interface.js +2 -0
- package/dist/services/api/api.interface.js.map +1 -0
- package/dist/services/api/api.real.d.ts +19 -0
- package/dist/services/api/api.real.d.ts.map +1 -0
- package/dist/services/api/api.real.js +20 -0
- package/dist/services/api/api.real.js.map +1 -0
- package/dist/services/api/auth.api.d.ts +17 -0
- package/dist/services/api/auth.api.d.ts.map +1 -0
- package/dist/services/api/auth.api.js +73 -0
- package/dist/services/api/auth.api.js.map +1 -0
- package/dist/services/api/cli-auth.api.d.ts +29 -0
- package/dist/services/api/cli-auth.api.d.ts.map +1 -0
- package/dist/services/api/cli-auth.api.js +23 -0
- package/dist/services/api/cli-auth.api.js.map +1 -0
- package/dist/services/api/config.api.d.ts +34 -0
- package/dist/services/api/config.api.d.ts.map +1 -0
- package/dist/services/api/config.api.js +108 -0
- package/dist/services/api/config.api.js.map +1 -0
- package/dist/services/api/index.d.ts +4 -0
- package/dist/services/api/index.d.ts.map +1 -0
- package/dist/services/api/index.js +3 -0
- package/dist/services/api/index.js.map +1 -0
- package/dist/services/api/memory.api.d.ts +10 -0
- package/dist/services/api/memory.api.d.ts.map +1 -0
- package/dist/services/api/memory.api.js +19 -0
- package/dist/services/api/memory.api.js.map +1 -0
- package/dist/services/api/review.api.d.ts +27 -0
- package/dist/services/api/review.api.d.ts.map +1 -0
- package/dist/services/api/review.api.js +140 -0
- package/dist/services/api/review.api.js.map +1 -0
- package/dist/services/api/rules.api.d.ts +13 -0
- package/dist/services/api/rules.api.d.ts.map +1 -0
- package/dist/services/api/rules.api.js +41 -0
- package/dist/services/api/rules.api.js.map +1 -0
- package/dist/services/api/sessions.api.d.ts +6 -0
- package/dist/services/api/sessions.api.d.ts.map +1 -0
- package/dist/services/api/sessions.api.js +129 -0
- package/dist/services/api/sessions.api.js.map +1 -0
- package/dist/services/api/trial.api.d.ts +10 -0
- package/dist/services/api/trial.api.d.ts.map +1 -0
- package/dist/services/api/trial.api.js +11 -0
- package/dist/services/api/trial.api.js.map +1 -0
- package/dist/services/auth.service.d.ts +29 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +190 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/browser-login.service.d.ts +23 -0
- package/dist/services/browser-login.service.d.ts.map +1 -0
- package/dist/services/browser-login.service.js +187 -0
- package/dist/services/browser-login.service.js.map +1 -0
- package/dist/services/centralized-config.service.d.ts +24 -0
- package/dist/services/centralized-config.service.d.ts.map +1 -0
- package/dist/services/centralized-config.service.js +112 -0
- package/dist/services/centralized-config.service.js.map +1 -0
- package/dist/services/context.service.d.ts +25 -0
- package/dist/services/context.service.d.ts.map +1 -0
- package/dist/services/context.service.js +134 -0
- package/dist/services/context.service.js.map +1 -0
- package/dist/services/device-login.service.d.ts +23 -0
- package/dist/services/device-login.service.d.ts.map +1 -0
- package/dist/services/device-login.service.js +70 -0
- package/dist/services/device-login.service.js.map +1 -0
- package/dist/services/fix.service.d.ts +31 -0
- package/dist/services/fix.service.d.ts.map +1 -0
- package/dist/services/fix.service.js +121 -0
- package/dist/services/fix.service.js.map +1 -0
- package/dist/services/git-hooks.service.d.ts +20 -0
- package/dist/services/git-hooks.service.d.ts.map +1 -0
- package/dist/services/git-hooks.service.js +126 -0
- package/dist/services/git-hooks.service.js.map +1 -0
- package/dist/services/git.service.d.ts +44 -0
- package/dist/services/git.service.d.ts.map +1 -0
- package/dist/services/git.service.js +321 -0
- package/dist/services/git.service.js.map +1 -0
- package/dist/services/hook-logger.service.d.ts +18 -0
- package/dist/services/hook-logger.service.d.ts.map +1 -0
- package/dist/services/hook-logger.service.js +48 -0
- package/dist/services/hook-logger.service.js.map +1 -0
- package/dist/services/lifecycle-events.d.ts +49 -0
- package/dist/services/lifecycle-events.d.ts.map +1 -0
- package/dist/services/lifecycle-events.js +86 -0
- package/dist/services/lifecycle-events.js.map +1 -0
- package/dist/services/lifecycle-git-context.d.ts +15 -0
- package/dist/services/lifecycle-git-context.d.ts.map +1 -0
- package/dist/services/lifecycle-git-context.js +23 -0
- package/dist/services/lifecycle-git-context.js.map +1 -0
- package/dist/services/lifecycle-local-turn-state.d.ts +14 -0
- package/dist/services/lifecycle-local-turn-state.d.ts.map +1 -0
- package/dist/services/lifecycle-local-turn-state.js +18 -0
- package/dist/services/lifecycle-local-turn-state.js.map +1 -0
- package/dist/services/lifecycle-transcript.d.ts +25 -0
- package/dist/services/lifecycle-transcript.d.ts.map +1 -0
- package/dist/services/lifecycle-transcript.js +29 -0
- package/dist/services/lifecycle-transcript.js.map +1 -0
- package/dist/services/lifecycle-turn-data.d.ts +11 -0
- package/dist/services/lifecycle-turn-data.d.ts.map +1 -0
- package/dist/services/lifecycle-turn-data.js +23 -0
- package/dist/services/lifecycle-turn-data.js.map +1 -0
- package/dist/services/lifecycle.service.d.ts +14 -0
- package/dist/services/lifecycle.service.d.ts.map +1 -0
- package/dist/services/lifecycle.service.js +276 -0
- package/dist/services/lifecycle.service.js.map +1 -0
- package/dist/services/repo-config.service.d.ts +22 -0
- package/dist/services/repo-config.service.d.ts.map +1 -0
- package/dist/services/repo-config.service.js +81 -0
- package/dist/services/repo-config.service.js.map +1 -0
- package/dist/services/repo-settings-wizard.service.d.ts +19 -0
- package/dist/services/repo-settings-wizard.service.d.ts.map +1 -0
- package/dist/services/repo-settings-wizard.service.js +260 -0
- package/dist/services/repo-settings-wizard.service.js.map +1 -0
- package/dist/services/repo-settings.service.d.ts +30 -0
- package/dist/services/repo-settings.service.d.ts.map +1 -0
- package/dist/services/repo-settings.service.js +99 -0
- package/dist/services/repo-settings.service.js.map +1 -0
- package/dist/services/review-auth-fallback.d.ts +7 -0
- package/dist/services/review-auth-fallback.d.ts.map +1 -0
- package/dist/services/review-auth-fallback.js +25 -0
- package/dist/services/review-auth-fallback.js.map +1 -0
- package/dist/services/review-config-builder.d.ts +19 -0
- package/dist/services/review-config-builder.d.ts.map +1 -0
- package/dist/services/review-config-builder.js +29 -0
- package/dist/services/review-config-builder.js.map +1 -0
- package/dist/services/review-file-filter.d.ts +3 -0
- package/dist/services/review-file-filter.d.ts.map +1 -0
- package/dist/services/review-file-filter.js +35 -0
- package/dist/services/review-file-filter.js.map +1 -0
- package/dist/services/review-normalizer.d.ts +6 -0
- package/dist/services/review-normalizer.d.ts.map +1 -0
- package/dist/services/review-normalizer.js +62 -0
- package/dist/services/review-normalizer.js.map +1 -0
- package/dist/services/review-verbose.d.ts +28 -0
- package/dist/services/review-verbose.d.ts.map +1 -0
- package/dist/services/review-verbose.js +52 -0
- package/dist/services/review-verbose.js.map +1 -0
- package/dist/services/review.service.d.ts +38 -0
- package/dist/services/review.service.d.ts.map +1 -0
- package/dist/services/review.service.js +152 -0
- package/dist/services/review.service.js.map +1 -0
- package/dist/services/rules.service.d.ts +16 -0
- package/dist/services/rules.service.d.ts.map +1 -0
- package/dist/services/rules.service.js +98 -0
- package/dist/services/rules.service.js.map +1 -0
- package/dist/services/session-local.service.d.ts +25 -0
- package/dist/services/session-local.service.d.ts.map +1 -0
- package/dist/services/session-local.service.js +79 -0
- package/dist/services/session-local.service.js.map +1 -0
- package/dist/services/transcript-parser.service.d.ts +10 -0
- package/dist/services/transcript-parser.service.d.ts.map +1 -0
- package/dist/services/transcript-parser.service.js +127 -0
- package/dist/services/transcript-parser.service.js.map +1 -0
- package/dist/services/transcript.service.d.ts +33 -0
- package/dist/services/transcript.service.d.ts.map +1 -0
- package/dist/services/transcript.service.js +264 -0
- package/dist/services/transcript.service.js.map +1 -0
- package/dist/types/auth.d.ts +18 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/cli.d.ts +41 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +2 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/command-output.d.ts +29 -0
- package/dist/types/command-output.d.ts.map +1 -0
- package/dist/types/command-output.js +2 -0
- package/dist/types/command-output.js.map +1 -0
- package/dist/types/config.d.ts +68 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/errors.d.ts +8 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +15 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memory.d.ts +39 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +2 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/repo-config.d.ts +24 -0
- package/dist/types/repo-config.d.ts.map +1 -0
- package/dist/types/repo-config.js +2 -0
- package/dist/types/repo-config.js.map +1 -0
- package/dist/types/review.d.ts +112 -0
- package/dist/types/review.d.ts.map +1 -0
- package/dist/types/review.js +2 -0
- package/dist/types/review.js.map +1 -0
- package/dist/types/rules.d.ts +42 -0
- package/dist/types/rules.d.ts.map +1 -0
- package/dist/types/rules.js +7 -0
- package/dist/types/rules.js.map +1 -0
- package/dist/types/session-events.d.ts +48 -0
- package/dist/types/session-events.d.ts.map +1 -0
- package/dist/types/session-events.js +2 -0
- package/dist/types/session-events.js.map +1 -0
- package/dist/types/session.d.ts +150 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +9 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/trial.d.ts +10 -0
- package/dist/types/trial.d.ts.map +1 -0
- package/dist/types/trial.js +2 -0
- package/dist/types/trial.js.map +1 -0
- package/dist/ui/interactive-formatters.d.ts +6 -0
- package/dist/ui/interactive-formatters.d.ts.map +1 -0
- package/dist/ui/interactive-formatters.js +61 -0
- package/dist/ui/interactive-formatters.js.map +1 -0
- package/dist/ui/interactive-helpers.d.ts +20 -0
- package/dist/ui/interactive-helpers.d.ts.map +1 -0
- package/dist/ui/interactive-helpers.js +82 -0
- package/dist/ui/interactive-helpers.js.map +1 -0
- package/dist/ui/interactive-renderers.d.ts +6 -0
- package/dist/ui/interactive-renderers.d.ts.map +1 -0
- package/dist/ui/interactive-renderers.js +82 -0
- package/dist/ui/interactive-renderers.js.map +1 -0
- package/dist/ui/interactive.d.ts +25 -0
- package/dist/ui/interactive.d.ts.map +1 -0
- package/dist/ui/interactive.js +228 -0
- package/dist/ui/interactive.js.map +1 -0
- package/dist/utils/auth-mode.d.ts +7 -0
- package/dist/utils/auth-mode.d.ts.map +1 -0
- package/dist/utils/auth-mode.js +42 -0
- package/dist/utils/auth-mode.js.map +1 -0
- package/dist/utils/banner.d.ts +2 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +180 -0
- package/dist/utils/banner.js.map +1 -0
- package/dist/utils/cli-exit.d.ts +13 -0
- package/dist/utils/cli-exit.d.ts.map +1 -0
- package/dist/utils/cli-exit.js +29 -0
- package/dist/utils/cli-exit.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +11 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/command-context.d.ts +12 -0
- package/dist/utils/command-context.d.ts.map +1 -0
- package/dist/utils/command-context.js +15 -0
- package/dist/utils/command-context.js.map +1 -0
- package/dist/utils/command-errors.d.ts +12 -0
- package/dist/utils/command-errors.d.ts.map +1 -0
- package/dist/utils/command-errors.js +112 -0
- package/dist/utils/command-errors.js.map +1 -0
- package/dist/utils/command-output.d.ts +5 -0
- package/dist/utils/command-output.d.ts.map +1 -0
- package/dist/utils/command-output.js +46 -0
- package/dist/utils/command-output.js.map +1 -0
- package/dist/utils/command-schema.d.ts +29 -0
- package/dist/utils/command-schema.d.ts.map +1 -0
- package/dist/utils/command-schema.js +74 -0
- package/dist/utils/command-schema.js.map +1 -0
- package/dist/utils/commander-errors.d.ts +8 -0
- package/dist/utils/commander-errors.d.ts.map +1 -0
- package/dist/utils/commander-errors.js +79 -0
- package/dist/utils/commander-errors.js.map +1 -0
- package/dist/utils/commander-setup.d.ts +3 -0
- package/dist/utils/commander-setup.d.ts.map +1 -0
- package/dist/utils/commander-setup.js +10 -0
- package/dist/utils/commander-setup.js.map +1 -0
- package/dist/utils/config.d.ts +13 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +71 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/credentials.d.ts +6 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +64 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/device.d.ts +7 -0
- package/dist/utils/device.d.ts.map +1 -0
- package/dist/utils/device.js +133 -0
- package/dist/utils/device.js.map +1 -0
- package/dist/utils/field-mask.d.ts +2 -0
- package/dist/utils/field-mask.d.ts.map +1 -0
- package/dist/utils/field-mask.js +93 -0
- package/dist/utils/field-mask.js.map +1 -0
- package/dist/utils/git-diff.d.ts +5 -0
- package/dist/utils/git-diff.d.ts.map +1 -0
- package/dist/utils/git-diff.js +14 -0
- package/dist/utils/git-diff.js.map +1 -0
- package/dist/utils/git-file-reader.d.ts +22 -0
- package/dist/utils/git-file-reader.d.ts.map +1 -0
- package/dist/utils/git-file-reader.js +45 -0
- package/dist/utils/git-file-reader.js.map +1 -0
- package/dist/utils/git-file-selection.d.ts +14 -0
- package/dist/utils/git-file-selection.d.ts.map +1 -0
- package/dist/utils/git-file-selection.js +20 -0
- package/dist/utils/git-file-selection.js.map +1 -0
- package/dist/utils/git-file-targets.d.ts +4 -0
- package/dist/utils/git-file-targets.d.ts.map +1 -0
- package/dist/utils/git-file-targets.js +11 -0
- package/dist/utils/git-file-targets.js.map +1 -0
- package/dist/utils/git-remote.d.ts +7 -0
- package/dist/utils/git-remote.d.ts.map +1 -0
- package/dist/utils/git-remote.js +94 -0
- package/dist/utils/git-remote.js.map +1 -0
- package/dist/utils/git-status.d.ts +7 -0
- package/dist/utils/git-status.d.ts.map +1 -0
- package/dist/utils/git-status.js +36 -0
- package/dist/utils/git-status.js.map +1 -0
- package/dist/utils/hunk.d.ts +15 -0
- package/dist/utils/hunk.d.ts.map +1 -0
- package/dist/utils/hunk.js +44 -0
- package/dist/utils/hunk.js.map +1 -0
- package/dist/utils/input-validation.d.ts +11 -0
- package/dist/utils/input-validation.d.ts.map +1 -0
- package/dist/utils/input-validation.js +73 -0
- package/dist/utils/input-validation.js.map +1 -0
- package/dist/utils/install-instructions.d.ts +6 -0
- package/dist/utils/install-instructions.d.ts.map +1 -0
- package/dist/utils/install-instructions.js +18 -0
- package/dist/utils/install-instructions.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +48 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/rate-limit.d.ts +5 -0
- package/dist/utils/rate-limit.d.ts.map +1 -0
- package/dist/utils/rate-limit.js +56 -0
- package/dist/utils/rate-limit.js.map +1 -0
- package/dist/utils/recent-activity.d.ts +9 -0
- package/dist/utils/recent-activity.d.ts.map +1 -0
- package/dist/utils/recent-activity.js +139 -0
- package/dist/utils/recent-activity.js.map +1 -0
- package/dist/utils/repo-settings-dashboard.d.ts +6 -0
- package/dist/utils/repo-settings-dashboard.d.ts.map +1 -0
- package/dist/utils/repo-settings-dashboard.js +36 -0
- package/dist/utils/repo-settings-dashboard.js.map +1 -0
- package/dist/utils/repo-settings-patterns.d.ts +7 -0
- package/dist/utils/repo-settings-patterns.d.ts.map +1 -0
- package/dist/utils/repo-settings-patterns.js +66 -0
- package/dist/utils/repo-settings-patterns.js.map +1 -0
- package/dist/utils/repo-settings-schema.d.ts +6 -0
- package/dist/utils/repo-settings-schema.d.ts.map +1 -0
- package/dist/utils/repo-settings-schema.js +70 -0
- package/dist/utils/repo-settings-schema.js.map +1 -0
- package/dist/utils/review-output.d.ts +4 -0
- package/dist/utils/review-output.d.ts.map +1 -0
- package/dist/utils/review-output.js +18 -0
- package/dist/utils/review-output.js.map +1 -0
- package/dist/utils/skills-sync-manifest.d.ts +5 -0
- package/dist/utils/skills-sync-manifest.d.ts.map +1 -0
- package/dist/utils/skills-sync-manifest.js +39 -0
- package/dist/utils/skills-sync-manifest.js.map +1 -0
- package/dist/utils/skills-sync-paths.d.ts +5 -0
- package/dist/utils/skills-sync-paths.d.ts.map +1 -0
- package/dist/utils/skills-sync-paths.js +60 -0
- package/dist/utils/skills-sync-paths.js.map +1 -0
- package/dist/utils/skills-sync-targets.d.ts +3 -0
- package/dist/utils/skills-sync-targets.d.ts.map +1 -0
- package/dist/utils/skills-sync-targets.js +218 -0
- package/dist/utils/skills-sync-targets.js.map +1 -0
- package/dist/utils/skills-sync.d.ts +39 -0
- package/dist/utils/skills-sync.d.ts.map +1 -0
- package/dist/utils/skills-sync.js +200 -0
- package/dist/utils/skills-sync.js.map +1 -0
- package/dist/utils/skills.d.ts +13 -0
- package/dist/utils/skills.d.ts.map +1 -0
- package/dist/utils/skills.js +117 -0
- package/dist/utils/skills.js.map +1 -0
- package/dist/utils/stream-input.d.ts +13 -0
- package/dist/utils/stream-input.d.ts.map +1 -0
- package/dist/utils/stream-input.js +36 -0
- package/dist/utils/stream-input.js.map +1 -0
- package/dist/utils/team-key-auth.d.ts +5 -0
- package/dist/utils/team-key-auth.d.ts.map +1 -0
- package/dist/utils/team-key-auth.js +14 -0
- package/dist/utils/team-key-auth.js.map +1 -0
- package/dist/utils/update-check.d.ts +2 -0
- package/dist/utils/update-check.d.ts.map +1 -0
- package/dist/utils/update-check.js +30 -0
- package/dist/utils/update-check.js.map +1 -0
- package/package.json +90 -0
- package/skills/README.md +64 -0
- package/skills/hunk-review/SKILL.md +154 -0
- package/skills/mesrai-business-rules-validation/SKILL.md +65 -0
- package/skills/mesrai-centralized-config/SKILL.md +102 -0
- package/skills/mesrai-mesrai-rules/SKILL.md +103 -0
- package/skills/mesrai-mesrai-rules/instructions/create-mesrai-rule.md +56 -0
- package/skills/mesrai-mesrai-rules/instructions/update-mesrai-rule.md +63 -0
- package/skills/mesrai-mesrai-rules/instructions/view-mesrai-rules.md +65 -0
- package/skills/mesrai-mesrai-rules/rules/create-mesrai-rule.md +48 -0
- package/skills/mesrai-mesrai-rules/rules/update-mesrai-rule.md +55 -0
- package/skills/mesrai-mesrai-rules/rules/view-mesrai-rules.md +56 -0
- package/skills/mesrai-pr-suggestions-resolver/SKILL.md +61 -0
- package/skills/mesrai-review/SKILL.md +53 -0
- package/skills/mesrai-review-dev/SKILL.md +55 -0
- package/skills/mesrai-review-dev/scripts/run-local-cli.sh +49 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { input, password, confirm } from '@inquirer/prompts';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { authService } from '../../services/auth.service.js';
|
|
5
|
+
import { closeApiClient } from '../../services/api/api-core.js';
|
|
6
|
+
import { exitWithCode } from '../../utils/cli-exit.js';
|
|
7
|
+
import { cliError, cliInfo } from '../../utils/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Free the resources that would otherwise keep the CLI process alive
|
|
10
|
+
* after the login finishes:
|
|
11
|
+
* - the long-lived undici dispatcher (60 min keep-alive on idle sockets)
|
|
12
|
+
* - any raw-mode the previous inquirer prompt may have left on stdin
|
|
13
|
+
* Without this the user is dropped back to the shell with raw stdin,
|
|
14
|
+
* which renders keypresses as escape sequences (`^M^A^[A...`) and the
|
|
15
|
+
* process never exits on its own.
|
|
16
|
+
*/
|
|
17
|
+
async function releaseTerminal() {
|
|
18
|
+
await closeApiClient();
|
|
19
|
+
if (process.stdin.isTTY && typeof process.stdin.setRawMode === 'function') {
|
|
20
|
+
try {
|
|
21
|
+
process.stdin.setRawMode(false);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// ignore
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Stop holding the event loop via stdin even if some library left
|
|
28
|
+
// it `resume()`d. pause() is safe whether or not it was active.
|
|
29
|
+
process.stdin.pause();
|
|
30
|
+
}
|
|
31
|
+
export async function loginAction(options) {
|
|
32
|
+
const spinner = ora();
|
|
33
|
+
try {
|
|
34
|
+
const isAuthenticated = await authService.isAuthenticated();
|
|
35
|
+
if (isAuthenticated &&
|
|
36
|
+
!options.email &&
|
|
37
|
+
!options.deviceCode &&
|
|
38
|
+
!options.legacy) {
|
|
39
|
+
const credentials = await authService.getCredentials();
|
|
40
|
+
const email = credentials?.user?.email;
|
|
41
|
+
cliInfo(chalk.yellow(email
|
|
42
|
+
? `\nAlready logged in as ${email}`
|
|
43
|
+
: '\nAlready authenticated with team key'));
|
|
44
|
+
const shouldRelogin = await confirm({
|
|
45
|
+
message: email
|
|
46
|
+
? 'Do you want to login with a different account?'
|
|
47
|
+
: 'Do you want to login with an account instead?',
|
|
48
|
+
default: false,
|
|
49
|
+
});
|
|
50
|
+
if (!shouldRelogin) {
|
|
51
|
+
await releaseTerminal();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const useLegacy = options.legacy ||
|
|
56
|
+
Boolean(options.email) ||
|
|
57
|
+
Boolean(options.password);
|
|
58
|
+
if (useLegacy) {
|
|
59
|
+
await runLegacyLogin(options, spinner);
|
|
60
|
+
await releaseTerminal();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (options.deviceCode || !canOpenBrowser()) {
|
|
64
|
+
await runDeviceCodeLogin(spinner);
|
|
65
|
+
await releaseTerminal();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
await runBrowserLogin(spinner);
|
|
69
|
+
await releaseTerminal();
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof Error && error.message.includes('force closed')) {
|
|
73
|
+
cliInfo(chalk.yellow('\nOperation cancelled'));
|
|
74
|
+
await releaseTerminal();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
spinner.fail(chalk.red('Login failed'));
|
|
78
|
+
if (error instanceof Error) {
|
|
79
|
+
cliError(chalk.red(error.message));
|
|
80
|
+
}
|
|
81
|
+
await releaseTerminal();
|
|
82
|
+
exitWithCode(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function runBrowserLogin(spinner) {
|
|
86
|
+
spinner.start(chalk.cyan('Opening Mesrai in your browser...'));
|
|
87
|
+
const user = await authService.loginViaBrowser({
|
|
88
|
+
onOpenUrl: (url) => {
|
|
89
|
+
spinner.stop();
|
|
90
|
+
cliInfo(chalk.cyan('\nIf the browser did not open, paste this URL:'));
|
|
91
|
+
cliInfo(chalk.underline(url));
|
|
92
|
+
cliInfo('');
|
|
93
|
+
spinner.start(chalk.cyan('Waiting for authorization...'));
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
spinner.succeed(chalk.green(`Logged in as ${user.email}`));
|
|
97
|
+
}
|
|
98
|
+
async function runDeviceCodeLogin(spinner) {
|
|
99
|
+
const user = await authService.loginViaDeviceCode({
|
|
100
|
+
onPrompt: (prompt) => {
|
|
101
|
+
cliInfo('');
|
|
102
|
+
cliInfo(chalk.cyan('Open this URL to authorize the CLI:'));
|
|
103
|
+
cliInfo(` ${chalk.underline(prompt.verificationUri)}`);
|
|
104
|
+
cliInfo('');
|
|
105
|
+
cliInfo(chalk.cyan('Then enter this code:'));
|
|
106
|
+
cliInfo(` ${chalk.bold(prompt.userCode)}`);
|
|
107
|
+
cliInfo('');
|
|
108
|
+
cliInfo(chalk.dim(`Code expires in ${Math.round(prompt.expiresIn / 60)} minutes.`));
|
|
109
|
+
spinner.start(chalk.cyan('Waiting for authorization...'));
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
spinner.succeed(chalk.green(`Logged in as ${user.email}`));
|
|
113
|
+
}
|
|
114
|
+
async function runLegacyLogin(options, spinner) {
|
|
115
|
+
cliInfo(chalk.yellow('\n[deprecated] Email + password login is kept for CI scripts. ' +
|
|
116
|
+
'For interactive use, run `mesrai auth login` (without flags) ' +
|
|
117
|
+
'to authenticate via the browser instead.'));
|
|
118
|
+
let email = options.email;
|
|
119
|
+
let pwd = options.password;
|
|
120
|
+
if (!email) {
|
|
121
|
+
email = await input({
|
|
122
|
+
message: 'Email:',
|
|
123
|
+
validate: (value) => {
|
|
124
|
+
if (!value || !value.includes('@')) {
|
|
125
|
+
return 'Please enter a valid email';
|
|
126
|
+
}
|
|
127
|
+
return true;
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
if (!pwd) {
|
|
132
|
+
pwd = await password({
|
|
133
|
+
message: 'Password:',
|
|
134
|
+
mask: '*',
|
|
135
|
+
validate: (value) => {
|
|
136
|
+
if (!value || value.length < 6) {
|
|
137
|
+
return 'Password must be at least 6 characters';
|
|
138
|
+
}
|
|
139
|
+
return true;
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
spinner.start(chalk.blue('Logging in...'));
|
|
144
|
+
await authService.login(email, pwd);
|
|
145
|
+
spinner.succeed(chalk.green(`Logged in as ${email}`));
|
|
146
|
+
}
|
|
147
|
+
function canOpenBrowser() {
|
|
148
|
+
// Heuristics: a real interactive terminal with no SSH session typically
|
|
149
|
+
// means a developer machine where opening the browser works.
|
|
150
|
+
if (process.env.SSH_CONNECTION || process.env.SSH_CLIENT)
|
|
151
|
+
return false;
|
|
152
|
+
if (process.env.CI)
|
|
153
|
+
return false;
|
|
154
|
+
if (!process.stdout.isTTY)
|
|
155
|
+
return false;
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;GAQG;AACH,KAAK,UAAU,eAAe;IAC1B,MAAM,cAAc,EAAE,CAAC;IACvB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxE,IAAI,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACL,SAAS;QACb,CAAC;IACL,CAAC;IACD,kEAAkE;IAClE,gEAAgE;IAChE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAqB;IACnD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IAEtB,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;QAE5D,IACI,eAAe;YACf,CAAC,OAAO,CAAC,KAAK;YACd,CAAC,OAAO,CAAC,UAAU;YACnB,CAAC,OAAO,CAAC,MAAM,EACjB,CAAC;YACC,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC;YACvC,OAAO,CACH,KAAK,CAAC,MAAM,CACR,KAAK;gBACD,CAAC,CAAC,0BAA0B,KAAK,EAAE;gBACnC,CAAC,CAAC,uCAAuC,CAChD,CACJ,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;gBAChC,OAAO,EAAE,KAAK;oBACV,CAAC,CAAC,gDAAgD;oBAClD,CAAC,CAAC,+CAA+C;gBACrD,OAAO,EAAE,KAAK;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,MAAM,eAAe,EAAE,CAAC;gBACxB,OAAO;YACX,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GACX,OAAO,CAAC,MAAM;YACd,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YACtB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,eAAe,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1C,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,eAAe,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,eAAe,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC/C,MAAM,eAAe,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAExC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,eAAe,EAAE,CAAC;QACxB,YAAY,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAA+B;IAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC;QAC3C,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC9D,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC7B,OAA+B;IAE/B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC;QAC9C,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACjB,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO,CACH,KAAK,CAAC,GAAG,CACL,mBAAmB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,CAClE,CACJ,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC9D,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,cAAc,CACzB,OAAqB,EACrB,OAA+B;IAE/B,OAAO,CACH,KAAK,CAAC,MAAM,CACR,gEAAgE;QAC5D,+DAA+D;QAC/D,0CAA0C,CACjD,CACJ,CAAC;IAEF,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,KAAK,GAAG,MAAM,KAAK,CAAC;YAChB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,OAAO,4BAA4B,CAAC;gBACxC,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,GAAG,GAAG,MAAM,QAAQ,CAAC;YACjB,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,wCAAwC,CAAC;gBACpD,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3C,MAAM,WAAW,CAAC,KAAK,CAAC,KAAM,EAAE,GAAI,CAAC,CAAC;IACtC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc;IACnB,wEAAwE;IACxE,6DAA6D;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/logout.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBlD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { authService } from '../../services/auth.service.js';
|
|
4
|
+
import { exitWithCode } from '../../utils/cli-exit.js';
|
|
5
|
+
import { cliError, cliInfo } from '../../utils/logger.js';
|
|
6
|
+
export async function logoutAction() {
|
|
7
|
+
const spinner = ora();
|
|
8
|
+
try {
|
|
9
|
+
const isAuthenticated = await authService.isAuthenticated();
|
|
10
|
+
if (!isAuthenticated) {
|
|
11
|
+
cliInfo(chalk.yellow('\nNot authenticated.'));
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
spinner.start(chalk.blue('Logging out...'));
|
|
15
|
+
await authService.logout();
|
|
16
|
+
spinner.succeed(chalk.green('Logged out successfully'));
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
spinner.fail(chalk.red('Logout failed'));
|
|
20
|
+
if (error instanceof Error) {
|
|
21
|
+
cliError(chalk.red(error.message));
|
|
22
|
+
}
|
|
23
|
+
exitWithCode(1);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/commands/auth/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IAEtB,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;QAE5D,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC9C,OAAO;QACX,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE5C,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAE3B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,YAAY,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA4GlD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { authService } from '../../services/auth.service.js';
|
|
4
|
+
import { loadConfig } from '../../utils/config.js';
|
|
5
|
+
import { checkTrialStatus } from '../../utils/rate-limit.js';
|
|
6
|
+
import { exitWithCode } from '../../utils/cli-exit.js';
|
|
7
|
+
import { cliError, cliInfo } from '../../utils/logger.js';
|
|
8
|
+
export async function statusAction() {
|
|
9
|
+
const spinner = ora();
|
|
10
|
+
try {
|
|
11
|
+
const isAuthenticated = await authService.isAuthenticated();
|
|
12
|
+
if (isAuthenticated) {
|
|
13
|
+
const credentials = await authService.getCredentials();
|
|
14
|
+
const teamConfig = await loadConfig();
|
|
15
|
+
const hasTeamKey = !!teamConfig?.teamKey;
|
|
16
|
+
const hasUserEmail = !!credentials?.user?.email;
|
|
17
|
+
if (!hasUserEmail && hasTeamKey) {
|
|
18
|
+
cliInfo(chalk.bold('\nAuthentication Status\n'));
|
|
19
|
+
cliInfo(`${chalk.dim('Mode:')} ${chalk.green('Team Key')}`);
|
|
20
|
+
cliInfo(`${chalk.dim('Organization:')} ${teamConfig?.organizationName ?? '(unknown)'}`);
|
|
21
|
+
cliInfo(`${chalk.dim('Team:')} ${teamConfig?.teamName ?? '(unknown)'}`);
|
|
22
|
+
cliInfo(`${chalk.dim('Token:')} ${chalk.green('Configured')}`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (!credentials) {
|
|
26
|
+
cliInfo(chalk.yellow('\nNo credentials found.'));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
cliInfo(chalk.bold('\nAuthentication Status\n'));
|
|
30
|
+
cliInfo(`${chalk.dim('Mode:')} ${chalk.green('Logged In')}`);
|
|
31
|
+
cliInfo(`${chalk.dim('Email:')} ${credentials.user?.email ?? '(unknown)'}`);
|
|
32
|
+
const expiresAt = new Date(credentials.expiresAt);
|
|
33
|
+
const timeUntilExpiry = expiresAt.getTime() - Date.now();
|
|
34
|
+
const hoursUntilExpiry = Math.floor(timeUntilExpiry / (1000 * 60 * 60));
|
|
35
|
+
if (timeUntilExpiry > 0) {
|
|
36
|
+
if (hoursUntilExpiry < 1) {
|
|
37
|
+
cliInfo(`${chalk.dim('Token:')} ${chalk.yellow('Expires in < 1 hour')}`);
|
|
38
|
+
}
|
|
39
|
+
else if (hoursUntilExpiry < 24) {
|
|
40
|
+
cliInfo(`${chalk.dim('Token:')} ${chalk.yellow(`Expires in ${hoursUntilExpiry} hours`)}`);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
cliInfo(`${chalk.dim('Token:')} ${chalk.green('Valid')}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
cliInfo(`${chalk.dim('Token:')} ${chalk.red('Expired')}`);
|
|
48
|
+
cliInfo(chalk.yellow('\nYour session has expired. Run `mesrai auth login` to refresh.'));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (credentials.user?.orgs && credentials.user.orgs.length > 0) {
|
|
52
|
+
cliInfo(`${chalk.dim('Organizations:')}`);
|
|
53
|
+
credentials.user.orgs.forEach((org) => {
|
|
54
|
+
cliInfo(` ${chalk.dim('•')} ${org}`);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
spinner.start(chalk.blue('Checking trial status...'));
|
|
60
|
+
const trialStatus = await checkTrialStatus();
|
|
61
|
+
spinner.stop();
|
|
62
|
+
cliInfo(chalk.bold('\nAuthentication Status\n'));
|
|
63
|
+
cliInfo(`${chalk.dim('Mode:')} ${chalk.yellow('Trial')}`);
|
|
64
|
+
cliInfo(`${chalk.dim('Reviews today:')} ${trialStatus.reviewsUsed}/${trialStatus.reviewsLimit}`);
|
|
65
|
+
cliInfo(`${chalk.dim('Files limit:')} ${trialStatus.filesLimit} per review`);
|
|
66
|
+
cliInfo(`${chalk.dim('Resets at:')} ${new Date(trialStatus.resetsAt).toLocaleString()}`);
|
|
67
|
+
if (trialStatus.isLimited) {
|
|
68
|
+
cliInfo(chalk.yellow('\n⚡ Daily limit reached!'));
|
|
69
|
+
}
|
|
70
|
+
cliInfo(chalk.dim('\nSign up to remove limits: ') +
|
|
71
|
+
chalk.cyan('mesrai auth login'));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
spinner.fail(chalk.red('Failed to get status'));
|
|
76
|
+
if (error instanceof Error) {
|
|
77
|
+
cliError(chalk.red(error.message));
|
|
78
|
+
}
|
|
79
|
+
exitWithCode(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-key.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/team-key.ts"],"names":[],"mappings":"AAmCA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyG5E;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAetD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { clearConfig, loadConfig, saveConfig } from '../../utils/config.js';
|
|
3
|
+
import { clearCredentials } from '../../utils/credentials.js';
|
|
4
|
+
import { resolveApiBaseUrl, getCloudflareAccessHeaders, } from '../../services/api/api.real.js';
|
|
5
|
+
import { getDeviceIdentity, updateDeviceToken } from '../../utils/device.js';
|
|
6
|
+
import { exitWithCode } from '../../utils/cli-exit.js';
|
|
7
|
+
import { cliError, cliInfo } from '../../utils/logger.js';
|
|
8
|
+
function getTeamKeyErrorMessage(payload) {
|
|
9
|
+
if (payload.code === 'DEVICE_LIMIT_REACHED') {
|
|
10
|
+
const limit = payload.details?.limit;
|
|
11
|
+
const activeDevices = payload.details?.current ?? payload.details?.activeDevices;
|
|
12
|
+
if (typeof limit === 'number' && typeof activeDevices === 'number') {
|
|
13
|
+
return `Device limit reached (${activeDevices}/${limit}). Remove an old device or contact your admin.`;
|
|
14
|
+
}
|
|
15
|
+
return 'Device limit reached for this organization. Remove an old device or contact your admin.';
|
|
16
|
+
}
|
|
17
|
+
return payload.message || 'Invalid team key';
|
|
18
|
+
}
|
|
19
|
+
export async function teamKeyAction(options) {
|
|
20
|
+
if (!options.key) {
|
|
21
|
+
cliError(chalk.red('Error: --key is required'));
|
|
22
|
+
cliInfo('\nGet your team key from: https://app.mesrai.com/organization/cli-keys');
|
|
23
|
+
exitWithCode(1);
|
|
24
|
+
}
|
|
25
|
+
if (!options.key.startsWith('mesrai_')) {
|
|
26
|
+
cliError(chalk.red('Error: Invalid key format. Key should start with "mesrai_"'));
|
|
27
|
+
exitWithCode(1);
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const device = await getDeviceIdentity().catch(() => undefined);
|
|
31
|
+
const apiUrl = await resolveApiBaseUrl();
|
|
32
|
+
const cfHeaders = await getCloudflareAccessHeaders();
|
|
33
|
+
const response = await fetch(`${apiUrl}/cli/validate-key`, {
|
|
34
|
+
headers: {
|
|
35
|
+
'X-Team-Key': options.key,
|
|
36
|
+
...cfHeaders,
|
|
37
|
+
...(device?.deviceId
|
|
38
|
+
? { 'X-Mesrai-Device-Id': device.deviceId }
|
|
39
|
+
: {}),
|
|
40
|
+
...(device?.deviceToken
|
|
41
|
+
? { 'X-Mesrai-Device-Token': device.deviceToken }
|
|
42
|
+
: {}),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const responseDeviceToken = response.headers.get('x-mesrai-device-token');
|
|
46
|
+
if (responseDeviceToken) {
|
|
47
|
+
await updateDeviceToken(responseDeviceToken).catch(() => { });
|
|
48
|
+
}
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
const rawError = await response
|
|
51
|
+
.json()
|
|
52
|
+
.catch(() => ({}));
|
|
53
|
+
const payload = rawError &&
|
|
54
|
+
typeof rawError === 'object' &&
|
|
55
|
+
'data' in rawError
|
|
56
|
+
? (rawError.data ?? {})
|
|
57
|
+
: rawError;
|
|
58
|
+
throw new Error(getTeamKeyErrorMessage(payload));
|
|
59
|
+
}
|
|
60
|
+
const rawData = await response.json().catch(() => ({}));
|
|
61
|
+
const payload = rawData && typeof rawData === 'object' && 'data' in rawData
|
|
62
|
+
? rawData.data
|
|
63
|
+
: rawData;
|
|
64
|
+
const teamName = payload?.team?.name ?? payload?.teamName;
|
|
65
|
+
const organizationName = payload?.organization?.name ??
|
|
66
|
+
payload?.organizationName ??
|
|
67
|
+
payload?.org?.name;
|
|
68
|
+
if (!teamName || !organizationName) {
|
|
69
|
+
throw new Error('Invalid response from server. Missing organization or team info.');
|
|
70
|
+
}
|
|
71
|
+
// Preserve existing config fields (apiUrl, CF Access credentials, etc.)
|
|
72
|
+
const existingConfig = await loadConfig();
|
|
73
|
+
await saveConfig({
|
|
74
|
+
...existingConfig,
|
|
75
|
+
teamKey: options.key,
|
|
76
|
+
teamName,
|
|
77
|
+
organizationName,
|
|
78
|
+
});
|
|
79
|
+
// Team-key auth should not compete with a previously stored user session.
|
|
80
|
+
try {
|
|
81
|
+
await clearCredentials();
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
await clearConfig().catch(() => { });
|
|
85
|
+
throw new Error('Failed to switch to team-key auth because personal credentials could not be cleared.');
|
|
86
|
+
}
|
|
87
|
+
cliInfo(chalk.green('✓ Authenticated successfully!'));
|
|
88
|
+
cliInfo(chalk.cyan(` Organization: ${organizationName}`));
|
|
89
|
+
cliInfo(chalk.cyan(` Team: ${teamName}`));
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
cliError(chalk.red('✗ Authentication failed:'), error instanceof Error ? error.message : 'Unknown error');
|
|
93
|
+
cliInfo('\nMake sure:');
|
|
94
|
+
cliInfo(' 1. Your key is correct');
|
|
95
|
+
cliInfo(' 2. The key has not been revoked');
|
|
96
|
+
cliInfo(' 3. You have internet connection');
|
|
97
|
+
exitWithCode(1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export async function teamStatusAction() {
|
|
101
|
+
const config = await loadConfig();
|
|
102
|
+
if (!config) {
|
|
103
|
+
cliInfo(chalk.yellow('Not authenticated with team key'));
|
|
104
|
+
cliInfo('\nRun: mesrai auth team-key --key <your-key>');
|
|
105
|
+
cliInfo('Get your key from: https://app.mesrai.com/organization/cli-keys');
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
cliInfo(chalk.green('✓ Authenticated'));
|
|
109
|
+
cliInfo(chalk.cyan(` Organization: ${config.organizationName}`));
|
|
110
|
+
cliInfo(chalk.cyan(` Team: ${config.teamName}`));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=team-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-key.js","sourceRoot":"","sources":["../../../src/commands/auth/team-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqCjD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { authService } from '../../services/auth.service.js';
|
|
4
|
+
import { exitWithCode } from '../../utils/cli-exit.js';
|
|
5
|
+
import { cliError, cliInfo } from '../../utils/logger.js';
|
|
6
|
+
export async function tokenAction() {
|
|
7
|
+
const spinner = ora();
|
|
8
|
+
try {
|
|
9
|
+
const isAuthenticated = await authService.isAuthenticated();
|
|
10
|
+
if (!isAuthenticated) {
|
|
11
|
+
cliInfo(chalk.yellow('\nYou need to be logged in to generate a token.'));
|
|
12
|
+
cliInfo(chalk.dim('Run `mesrai auth login` first.'));
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
spinner.start(chalk.blue('Generating token...'));
|
|
16
|
+
const token = await authService.generateCIToken();
|
|
17
|
+
spinner.succeed(chalk.green('Token generated!'));
|
|
18
|
+
cliInfo(chalk.bold('\nCI/CD Token\n'));
|
|
19
|
+
cliInfo(chalk.dim('Use this token in your CI/CD pipelines:'));
|
|
20
|
+
cliInfo(chalk.cyan(`\n${token}\n`));
|
|
21
|
+
cliInfo(chalk.dim('Set as environment variable:'));
|
|
22
|
+
cliInfo(chalk.dim(' export MESRAI_TOKEN=<token>'));
|
|
23
|
+
cliInfo(chalk.yellow('\n⚠️ Keep this token secret! It provides access to your account.'));
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
spinner.fail(chalk.red('Failed to generate token'));
|
|
27
|
+
if (error instanceof Error) {
|
|
28
|
+
cliError(chalk.red(error.message));
|
|
29
|
+
}
|
|
30
|
+
exitWithCode(1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,WAAW;IAC7B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IAEtB,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;QAE5D,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,CACH,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAClE,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACrD,OAAO;QACX,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAEjD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;QAElD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAEjD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACpD,OAAO,CACH,KAAK,CAAC,MAAM,CACR,mEAAmE,CACtE,CACJ,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,YAAY,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export { configCentralizedDisableAction, configCentralizedDownloadAction, configCentralizedInitAction, configCentralizedStatusAction, configCentralizedSyncAction, } from '../features/centralized-config/actions.js';
|
|
3
|
+
export { configRemoteAction, configRemoteAddAction, configRepoAction, configRepoAddAction, configRepoListAction, configRepoShowAction, configRepoSetupAction, configRepoOpenAction, configRepoSetAction, configRepoPatternAddAction, configRepoPatternRemoveAction, } from '../features/repo-config/actions.js';
|
|
4
|
+
export declare const configCommand: Command;
|
|
5
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,OAAO,EACH,8BAA8B,EAC9B,+BAA+B,EAC/B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,GAC9B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,GAChC,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,aAAa,SAEzB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { configRemoteAction, } from '../features/repo-config/actions.js';
|
|
3
|
+
import { registerRemoteRepositoryConfig, registerRepoAliasConfig, } from '../features/repo-config/command.js';
|
|
4
|
+
import { registerCentralizedConfigCommand } from '../features/centralized-config/command.js';
|
|
5
|
+
export { configCentralizedDisableAction, configCentralizedDownloadAction, configCentralizedInitAction, configCentralizedStatusAction, configCentralizedSyncAction, } from '../features/centralized-config/actions.js';
|
|
6
|
+
export { configRemoteAction, configRemoteAddAction, configRepoAction, configRepoAddAction, configRepoListAction, configRepoShowAction, configRepoSetupAction, configRepoOpenAction, configRepoSetAction, configRepoPatternAddAction, configRepoPatternRemoveAction, } from '../features/repo-config/actions.js';
|
|
7
|
+
export const configCommand = new Command('config').description('Configuration commands');
|
|
8
|
+
configCommand
|
|
9
|
+
.option('-r, --remote [repository]', "Add a repository to Mesrai. Shortcut for: mesrai config remote add [repository]. Use '.' for the current repo.")
|
|
10
|
+
.option('--no-prompt', 'Skip the post-add setup prompt')
|
|
11
|
+
.action(async (options, command) => {
|
|
12
|
+
if (options.remote !== undefined) {
|
|
13
|
+
const repository = typeof options.remote === 'string' ? options.remote : '.';
|
|
14
|
+
await configRemoteAction(repository, {
|
|
15
|
+
prompt: options.prompt,
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
command.help();
|
|
20
|
+
});
|
|
21
|
+
registerRemoteRepositoryConfig(configCommand.command('remote'));
|
|
22
|
+
registerCentralizedConfigCommand(configCommand.command('centralized'));
|
|
23
|
+
const repoAliasCommand = configCommand.command('repo');
|
|
24
|
+
repoAliasCommand._hidden = true;
|
|
25
|
+
registerRepoAliasConfig(repoAliasCommand);
|
|
26
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACH,kBAAkB,GAErB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,8BAA8B,EAC9B,uBAAuB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAE7F,OAAO,EACH,8BAA8B,EAC9B,+BAA+B,EAC/B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,GAC9B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,GAChC,MAAM,oCAAoC,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAC1D,wBAAwB,CAC3B,CAAC;AAEF,aAAa;KACR,MAAM,CACH,2BAA2B,EAC3B,gHAAgH,CACnH;KACA,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,UAAU,GACZ,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9D,MAAM,kBAAkB,CAAC,UAAU,EAAE;YACjC,MAAM,EAAG,OAAgC,CAAC,MAAM;SACnD,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEP,8BAA8B,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,gCAAgC,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtD,gBAAoD,CAAC,OAAO,GAAG,IAAI,CAAC;AACrE,uBAAuB,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,WAAW,SAyBlB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { cliError } from '../utils/logger.js';
|
|
4
|
+
import { runHunk } from '../utils/hunk.js';
|
|
5
|
+
export const diffCommand = new Command('diff')
|
|
6
|
+
.description('Open the current changeset in the Hunk terminal diff viewer (wraps `hunk diff`)')
|
|
7
|
+
.allowUnknownOption(true)
|
|
8
|
+
.helpOption(false)
|
|
9
|
+
.argument('[args...]', 'Arguments forwarded to `hunk diff`')
|
|
10
|
+
.action(async (_args, _opts, command) => {
|
|
11
|
+
const forwarded = command.args;
|
|
12
|
+
try {
|
|
13
|
+
const { exitCode } = await runHunk(['diff', ...forwarded]);
|
|
14
|
+
if (exitCode !== 0) {
|
|
15
|
+
process.exit(exitCode);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
cliError(chalk.red(`hunk diff failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KACzC,WAAW,CACR,iFAAiF,CACpF;KACA,kBAAkB,CAAC,IAAI,CAAC;KACxB,UAAU,CAAC,KAAK,CAAC;KACjB,QAAQ,CAAC,WAAW,EAAE,oCAAoC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,IAAI,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QAC3D,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,QAAQ,CACJ,KAAK,CAAC,GAAG,CACL,qBACI,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACzD,EAAE,CACL,CACJ,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/hook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,WAAW,SAEvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { installAction } from './install.js';
|
|
3
|
+
import { uninstallAction } from './uninstall.js';
|
|
4
|
+
import { statusAction } from './status.js';
|
|
5
|
+
export const hookCommand = new Command('hook').description('Manage pre-push hook for automatic code review');
|
|
6
|
+
hookCommand
|
|
7
|
+
.command('install')
|
|
8
|
+
.description('Install pre-push hook for automatic code review')
|
|
9
|
+
.option('--fail-on <severity>', 'Minimum severity to block push (info, warning, error, critical)', 'critical')
|
|
10
|
+
.option('--fast', 'Use fast mode for review (default: true)', true)
|
|
11
|
+
.option('--no-fast', 'Disable fast mode for review')
|
|
12
|
+
.option('--force', 'Overwrite existing hook without prompting')
|
|
13
|
+
.option('--dry-run', 'Print planned changes without writing files', false)
|
|
14
|
+
.action((options, cmd) => installAction(options, cmd.optsWithGlobals()));
|
|
15
|
+
hookCommand
|
|
16
|
+
.command('uninstall')
|
|
17
|
+
.description('Remove pre-push hook installed by mesrai')
|
|
18
|
+
.option('--dry-run', 'Print planned changes without writing files', false)
|
|
19
|
+
.action((options, cmd) => uninstallAction(options, cmd.optsWithGlobals()));
|
|
20
|
+
hookCommand
|
|
21
|
+
.command('status')
|
|
22
|
+
.description('Show pre-push hook status')
|
|
23
|
+
.action(statusAction);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/hook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CACtD,gDAAgD,CACnD,CAAC;AAEF,WAAW;KACN,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CACH,sBAAsB,EACtB,iEAAiE,EACjE,UAAU,CACb;KACA,MAAM,CAAC,QAAQ,EAAE,0CAA0C,EAAE,IAAI,CAAC;KAClE,MAAM,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACnD,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;KAC9D,MAAM,CAAC,WAAW,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACzE,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAE7E,WAAW;KACN,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACzE,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAE/E,WAAW;KACN,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { GlobalOptions } from '../../types/cli.js';
|
|
2
|
+
declare const MESRAI_MARKER = "# mesrai-hook";
|
|
3
|
+
declare function generateHookScript(failOn: string, fast: boolean): string;
|
|
4
|
+
export declare function installAction(options: {
|
|
5
|
+
failOn?: string;
|
|
6
|
+
fast?: boolean;
|
|
7
|
+
force?: boolean;
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
}, globalOpts?: GlobalOptions): Promise<void>;
|
|
10
|
+
export { MESRAI_MARKER, generateHookScript };
|
|
11
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/hook/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD,QAAA,MAAM,aAAa,kBAAkB,CAAC;AAEtC,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAwDjE;AAED,wBAAsB,aAAa,CAC/B,OAAO,EAAE;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,EACD,UAAU,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsGf;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC"}
|