instar 0.28.75 → 0.28.76
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/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/discovery.d.ts.map +1 -1
- package/dist/commands/discovery.js +1 -0
- package/dist/commands/discovery.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/job.d.ts.map +1 -1
- package/dist/commands/job.js +1 -0
- package/dist/commands/job.js.map +1 -1
- package/dist/commands/ledgerCleanup.d.ts.map +1 -1
- package/dist/commands/ledgerCleanup.js +1 -0
- package/dist/commands/ledgerCleanup.js.map +1 -1
- package/dist/commands/listener.d.ts.map +1 -1
- package/dist/commands/listener.js +6 -0
- package/dist/commands/listener.js.map +1 -1
- package/dist/commands/nuke.d.ts.map +1 -1
- package/dist/commands/nuke.js +6 -0
- package/dist/commands/nuke.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +2 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +6 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/slack-cli.d.ts.map +1 -1
- package/dist/commands/slack-cli.js +4 -0
- package/dist/commands/slack-cli.js.map +1 -1
- package/dist/commands/whatsapp.d.ts.map +1 -1
- package/dist/commands/whatsapp.js +1 -0
- package/dist/commands/whatsapp.js.map +1 -1
- package/dist/commands/worktree.d.ts.map +1 -1
- package/dist/commands/worktree.js +1 -0
- package/dist/commands/worktree.js.map +1 -1
- package/dist/core/AgentConnector.d.ts.map +1 -1
- package/dist/core/AgentConnector.js +3 -0
- package/dist/core/AgentConnector.js.map +1 -1
- package/dist/core/AgentRegistry.d.ts.map +1 -1
- package/dist/core/AgentRegistry.js +2 -0
- package/dist/core/AgentRegistry.js.map +1 -1
- package/dist/core/AutoDispatcher.d.ts.map +1 -1
- package/dist/core/AutoDispatcher.js +1 -0
- package/dist/core/AutoDispatcher.js.map +1 -1
- package/dist/core/AutoUpdater.d.ts.map +1 -1
- package/dist/core/AutoUpdater.js +1 -0
- package/dist/core/AutoUpdater.js.map +1 -1
- package/dist/core/AutonomousEvolution.d.ts.map +1 -1
- package/dist/core/AutonomousEvolution.js +1 -0
- package/dist/core/AutonomousEvolution.js.map +1 -1
- package/dist/core/BackupManager.d.ts.map +1 -1
- package/dist/core/BackupManager.js +1 -0
- package/dist/core/BackupManager.js.map +1 -1
- package/dist/core/BranchManager.d.ts.map +1 -1
- package/dist/core/BranchManager.js +1 -0
- package/dist/core/BranchManager.js.map +1 -1
- package/dist/core/CaffeinateManager.d.ts.map +1 -1
- package/dist/core/CaffeinateManager.js +1 -0
- package/dist/core/CaffeinateManager.js.map +1 -1
- package/dist/core/DeferredDispatchTracker.d.ts.map +1 -1
- package/dist/core/DeferredDispatchTracker.js +1 -0
- package/dist/core/DeferredDispatchTracker.js.map +1 -1
- package/dist/core/DispatchManager.d.ts.map +1 -1
- package/dist/core/DispatchManager.js +2 -0
- package/dist/core/DispatchManager.js.map +1 -1
- package/dist/core/EvolutionManager.d.ts.map +1 -1
- package/dist/core/EvolutionManager.js +1 -0
- package/dist/core/EvolutionManager.js.map +1 -1
- package/dist/core/ExecutionJournal.d.ts.map +1 -1
- package/dist/core/ExecutionJournal.js +1 -0
- package/dist/core/ExecutionJournal.js.map +1 -1
- package/dist/core/FeedbackManager.d.ts.map +1 -1
- package/dist/core/FeedbackManager.js +1 -0
- package/dist/core/FeedbackManager.js.map +1 -1
- package/dist/core/FileClassifier.d.ts.map +1 -1
- package/dist/core/FileClassifier.js +4 -0
- package/dist/core/FileClassifier.js.map +1 -1
- package/dist/core/ForegroundRestartWatcher.d.ts.map +1 -1
- package/dist/core/ForegroundRestartWatcher.js +2 -0
- package/dist/core/ForegroundRestartWatcher.js.map +1 -1
- package/dist/core/GitStateManager.d.ts.map +1 -1
- package/dist/core/GitStateManager.js +1 -0
- package/dist/core/GitStateManager.js.map +1 -1
- package/dist/core/GitSync.d.ts.map +1 -1
- package/dist/core/GitSync.js +3 -0
- package/dist/core/GitSync.js.map +1 -1
- package/dist/core/GlobalInstallCleanup.d.ts.map +1 -1
- package/dist/core/GlobalInstallCleanup.js +2 -0
- package/dist/core/GlobalInstallCleanup.js.map +1 -1
- package/dist/core/GlobalSecretStore.d.ts.map +1 -1
- package/dist/core/GlobalSecretStore.js +2 -0
- package/dist/core/GlobalSecretStore.js.map +1 -1
- package/dist/core/HandoffManager.d.ts.map +1 -1
- package/dist/core/HandoffManager.js +2 -0
- package/dist/core/HandoffManager.js.map +1 -1
- package/dist/core/LedgerSessionRegistry.d.ts.map +1 -1
- package/dist/core/LedgerSessionRegistry.js +1 -0
- package/dist/core/LedgerSessionRegistry.js.map +1 -1
- package/dist/core/MachineIdentity.d.ts.map +1 -1
- package/dist/core/MachineIdentity.js +1 -0
- package/dist/core/MachineIdentity.js.map +1 -1
- package/dist/core/ParallelDevWiring.d.ts.map +1 -1
- package/dist/core/ParallelDevWiring.js +1 -0
- package/dist/core/ParallelDevWiring.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +2 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/ProjectMapper.d.ts.map +1 -1
- package/dist/core/ProjectMapper.js +2 -0
- package/dist/core/ProjectMapper.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +2 -0
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/core/SafeFsExecutor.d.ts +41 -0
- package/dist/core/SafeFsExecutor.d.ts.map +1 -0
- package/dist/core/SafeFsExecutor.js +146 -0
- package/dist/core/SafeFsExecutor.js.map +1 -0
- package/dist/core/SafeGitExecutor.d.ts +139 -0
- package/dist/core/SafeGitExecutor.d.ts.map +1 -0
- package/dist/core/SafeGitExecutor.js +631 -0
- package/dist/core/SafeGitExecutor.js.map +1 -0
- package/dist/core/ScopeVerifier.d.ts.map +1 -1
- package/dist/core/ScopeVerifier.js +1 -0
- package/dist/core/ScopeVerifier.js.map +1 -1
- package/dist/core/SecretStore.d.ts.map +1 -1
- package/dist/core/SecretStore.js +1 -0
- package/dist/core/SecretStore.js.map +1 -1
- package/dist/core/SharedStateLedger.d.ts.map +1 -1
- package/dist/core/SharedStateLedger.js +1 -0
- package/dist/core/SharedStateLedger.js.map +1 -1
- package/dist/core/SoulManager.d.ts.map +1 -1
- package/dist/core/SoulManager.js +2 -0
- package/dist/core/SoulManager.js.map +1 -1
- package/dist/core/StateManager.d.ts.map +1 -1
- package/dist/core/StateManager.js +3 -0
- package/dist/core/StateManager.js.map +1 -1
- package/dist/core/SyncOrchestrator.d.ts.map +1 -1
- package/dist/core/SyncOrchestrator.js +3 -0
- package/dist/core/SyncOrchestrator.js.map +1 -1
- package/dist/core/UpdateChecker.d.ts.map +1 -1
- package/dist/core/UpdateChecker.js +2 -0
- package/dist/core/UpdateChecker.js.map +1 -1
- package/dist/core/UpgradeGuideProcessor.d.ts.map +1 -1
- package/dist/core/UpgradeGuideProcessor.js +2 -0
- package/dist/core/UpgradeGuideProcessor.js.map +1 -1
- package/dist/core/WorktreeManager.d.ts.map +1 -1
- package/dist/core/WorktreeManager.js +7 -0
- package/dist/core/WorktreeManager.js.map +1 -1
- package/dist/knowledge/KnowledgeManager.d.ts.map +1 -1
- package/dist/knowledge/KnowledgeManager.js +1 -0
- package/dist/knowledge/KnowledgeManager.js.map +1 -1
- package/dist/lifeline/ServerSupervisor.d.ts.map +1 -1
- package/dist/lifeline/ServerSupervisor.js +14 -0
- package/dist/lifeline/ServerSupervisor.js.map +1 -1
- package/dist/lifeline/TelegramLifeline.d.ts.map +1 -1
- package/dist/lifeline/TelegramLifeline.js +1 -0
- package/dist/lifeline/TelegramLifeline.js.map +1 -1
- package/dist/lifeline/droppedMessages.d.ts.map +1 -1
- package/dist/lifeline/droppedMessages.js +1 -0
- package/dist/lifeline/droppedMessages.js.map +1 -1
- package/dist/memory/EpisodicMemory.d.ts.map +1 -1
- package/dist/memory/EpisodicMemory.js +1 -0
- package/dist/memory/EpisodicMemory.js.map +1 -1
- package/dist/memory/TopicMemory.d.ts.map +1 -1
- package/dist/memory/TopicMemory.js +4 -0
- package/dist/memory/TopicMemory.js.map +1 -1
- package/dist/messaging/AgentTokenManager.d.ts.map +1 -1
- package/dist/messaging/AgentTokenManager.js +1 -0
- package/dist/messaging/AgentTokenManager.js.map +1 -1
- package/dist/messaging/DropPickup.js +1 -0
- package/dist/messaging/DropPickup.js.map +1 -1
- package/dist/messaging/GitSyncTransport.d.ts.map +1 -1
- package/dist/messaging/GitSyncTransport.js +3 -0
- package/dist/messaging/GitSyncTransport.js.map +1 -1
- package/dist/messaging/MessageStore.d.ts.map +1 -1
- package/dist/messaging/MessageStore.js +2 -0
- package/dist/messaging/MessageStore.js.map +1 -1
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js +4 -0
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/messaging/backends/BaileysBackend.d.ts.map +1 -1
- package/dist/messaging/backends/BaileysBackend.js +2 -0
- package/dist/messaging/backends/BaileysBackend.js.map +1 -1
- package/dist/messaging/shared/EncryptedAuthStore.d.ts.map +1 -1
- package/dist/messaging/shared/EncryptedAuthStore.js +2 -0
- package/dist/messaging/shared/EncryptedAuthStore.js.map +1 -1
- package/dist/messaging/shared/MessageLogger.d.ts.map +1 -1
- package/dist/messaging/shared/MessageLogger.js +1 -0
- package/dist/messaging/shared/MessageLogger.js.map +1 -1
- package/dist/messaging/shared/PrivacyConsent.d.ts.map +1 -1
- package/dist/messaging/shared/PrivacyConsent.js +1 -0
- package/dist/messaging/shared/PrivacyConsent.js.map +1 -1
- package/dist/messaging/shared/SessionChannelRegistry.d.ts.map +1 -1
- package/dist/messaging/shared/SessionChannelRegistry.js +1 -0
- package/dist/messaging/shared/SessionChannelRegistry.js.map +1 -1
- package/dist/moltbridge/ProfileCompiler.d.ts.map +1 -1
- package/dist/moltbridge/ProfileCompiler.js +3 -0
- package/dist/moltbridge/ProfileCompiler.js.map +1 -1
- package/dist/monitoring/CommitmentTracker.d.ts.map +1 -1
- package/dist/monitoring/CommitmentTracker.js +1 -0
- package/dist/monitoring/CommitmentTracker.js.map +1 -1
- package/dist/monitoring/CredentialProvider.d.ts.map +1 -1
- package/dist/monitoring/CredentialProvider.js +1 -0
- package/dist/monitoring/CredentialProvider.js.map +1 -1
- package/dist/monitoring/HealthChecker.d.ts.map +1 -1
- package/dist/monitoring/HealthChecker.js +1 -0
- package/dist/monitoring/HealthChecker.js.map +1 -1
- package/dist/monitoring/HookEventReceiver.d.ts.map +1 -1
- package/dist/monitoring/HookEventReceiver.js +1 -0
- package/dist/monitoring/HookEventReceiver.js.map +1 -1
- package/dist/monitoring/InstructionsVerifier.d.ts.map +1 -1
- package/dist/monitoring/InstructionsVerifier.js +1 -0
- package/dist/monitoring/InstructionsVerifier.js.map +1 -1
- package/dist/monitoring/PresenceProxy.d.ts.map +1 -1
- package/dist/monitoring/PresenceProxy.js +4 -0
- package/dist/monitoring/PresenceProxy.js.map +1 -1
- package/dist/monitoring/QuotaTracker.d.ts.map +1 -1
- package/dist/monitoring/QuotaTracker.js +1 -0
- package/dist/monitoring/QuotaTracker.js.map +1 -1
- package/dist/monitoring/SessionMigrator.d.ts.map +1 -1
- package/dist/monitoring/SessionMigrator.js +1 -0
- package/dist/monitoring/SessionMigrator.js.map +1 -1
- package/dist/monitoring/SessionRecovery.d.ts.map +1 -1
- package/dist/monitoring/SessionRecovery.js +1 -0
- package/dist/monitoring/SessionRecovery.js.map +1 -1
- package/dist/monitoring/TelemetryAuth.d.ts.map +1 -1
- package/dist/monitoring/TelemetryAuth.js +2 -0
- package/dist/monitoring/TelemetryAuth.js.map +1 -1
- package/dist/monitoring/TriageOrchestrator.d.ts.map +1 -1
- package/dist/monitoring/TriageOrchestrator.js +2 -0
- package/dist/monitoring/TriageOrchestrator.js.map +1 -1
- package/dist/monitoring/WorktreeReaper.d.ts.map +1 -1
- package/dist/monitoring/WorktreeReaper.js +3 -0
- package/dist/monitoring/WorktreeReaper.js.map +1 -1
- package/dist/monitoring/probes/PlatformProbe.d.ts.map +1 -1
- package/dist/monitoring/probes/PlatformProbe.js +2 -0
- package/dist/monitoring/probes/PlatformProbe.js.map +1 -1
- package/dist/paste/PasteManager.d.ts.map +1 -1
- package/dist/paste/PasteManager.js +4 -0
- package/dist/paste/PasteManager.js.map +1 -1
- package/dist/publishing/PrivateViewer.d.ts.map +1 -1
- package/dist/publishing/PrivateViewer.js +1 -0
- package/dist/publishing/PrivateViewer.js.map +1 -1
- package/dist/scheduler/JobScheduler.d.ts.map +1 -1
- package/dist/scheduler/JobScheduler.js +1 -0
- package/dist/scheduler/JobScheduler.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +21 -9
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/AgentDiscovery.d.ts.map +1 -1
- package/dist/threadline/AgentDiscovery.js +1 -0
- package/dist/threadline/AgentDiscovery.js.map +1 -1
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
- package/dist/threadline/AgentTrustManager.js +1 -0
- package/dist/threadline/AgentTrustManager.js.map +1 -1
- package/dist/threadline/CircuitBreaker.d.ts.map +1 -1
- package/dist/threadline/CircuitBreaker.js +1 -0
- package/dist/threadline/CircuitBreaker.js.map +1 -1
- package/dist/threadline/ComputeMeter.d.ts.map +1 -1
- package/dist/threadline/ComputeMeter.js +1 -0
- package/dist/threadline/ComputeMeter.js.map +1 -1
- package/dist/threadline/ContextThreadMap.d.ts.map +1 -1
- package/dist/threadline/ContextThreadMap.js +1 -0
- package/dist/threadline/ContextThreadMap.js.map +1 -1
- package/dist/threadline/InvitationManager.d.ts.map +1 -1
- package/dist/threadline/InvitationManager.js +1 -0
- package/dist/threadline/InvitationManager.js.map +1 -1
- package/dist/threadline/MCPAuth.d.ts.map +1 -1
- package/dist/threadline/MCPAuth.js +1 -0
- package/dist/threadline/MCPAuth.js.map +1 -1
- package/dist/threadline/PipeSessionSpawner.d.ts.map +1 -1
- package/dist/threadline/PipeSessionSpawner.js +2 -0
- package/dist/threadline/PipeSessionSpawner.js.map +1 -1
- package/dist/threadline/RateLimiter.d.ts.map +1 -1
- package/dist/threadline/RateLimiter.js +1 -0
- package/dist/threadline/RateLimiter.js.map +1 -1
- package/dist/threadline/SessionLifecycle.d.ts.map +1 -1
- package/dist/threadline/SessionLifecycle.js +1 -0
- package/dist/threadline/SessionLifecycle.js.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.js +1 -0
- package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
- package/dist/threadline/WakeSocketServer.d.ts.map +1 -1
- package/dist/threadline/WakeSocketServer.js +2 -0
- package/dist/threadline/WakeSocketServer.js.map +1 -1
- package/dist/threadline/listener-daemon.d.ts.map +1 -1
- package/dist/threadline/listener-daemon.js +2 -0
- package/dist/threadline/listener-daemon.js.map +1 -1
- package/dist/users/UserManager.d.ts.map +1 -1
- package/dist/users/UserManager.js +1 -0
- package/dist/users/UserManager.js.map +1 -1
- package/dist/users/UserOnboarding.d.ts.map +1 -1
- package/dist/users/UserOnboarding.js +1 -0
- package/dist/users/UserOnboarding.js.map +1 -1
- package/dist/utils/jsonl-rotation.d.ts.map +1 -1
- package/dist/utils/jsonl-rotation.js +1 -0
- package/dist/utils/jsonl-rotation.js.map +1 -1
- package/package.json +4 -2
- package/scripts/add-migration-marker.js +121 -0
- package/scripts/analyze-release.js +6 -0
- package/scripts/check-contract-evidence.js +2 -0
- package/scripts/destructive-command-shim.js +1 -0
- package/scripts/fix-better-sqlite3.cjs +2 -0
- package/scripts/generate-builtin-manifest.cjs +1 -0
- package/scripts/instar-dev-precommit.js +2 -0
- package/scripts/lint-no-direct-destructive.js +597 -0
- package/scripts/migrate-incident-2026-04-17.mjs +1 -0
- package/scripts/pre-push-gate.js +24 -0
- package/scripts/test-bootstrap-relay.mjs +1 -0
- package/scripts/worktree-commit-msg-hook.js +4 -0
- package/scripts/worktree-precommit-gate.js +1 -0
- package/src/data/builtin-manifest.json +98 -98
- package/src/templates/scripts/git-sync-gate.sh +4 -0
- package/upgrades/0.28.76.md +67 -0
- package/upgrades/side-effects/comprehensive-destructive-tool-containment-foundation.md +74 -0
- package/upgrades/side-effects/telegram-lifeline-version-missing-info.md +76 -0
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
// safe-git-allow: this file is the single funnel point for destructive git invocations.
|
|
2
|
+
/**
|
|
3
|
+
* SafeGitExecutor — the single funnel for destructive git invocations.
|
|
4
|
+
*
|
|
5
|
+
* Background: PR #96 (DESTRUCTIVE-TOOL-TARGET-GUARDS-SPEC) added
|
|
6
|
+
* `assertNotInstarSourceTree` to the constructors of `GitSyncManager`,
|
|
7
|
+
* `BranchManager`, and `HandoffManager`. Five days later, Incident B recurred
|
|
8
|
+
* because test fixtures invoked `execFileSync('git', ['add', '-A'], { cwd })`
|
|
9
|
+
* directly — bypassing the manager constructors entirely.
|
|
10
|
+
*
|
|
11
|
+
* This module is the funnel layer described in
|
|
12
|
+
* `docs/specs/COMPREHENSIVE-DESTRUCTIVE-TOOL-CONTAINMENT-SPEC.md`. Every
|
|
13
|
+
* destructive git invocation in the codebase routes through one of three
|
|
14
|
+
* methods on this class, each of which calls `assertNotInstarSourceTree`
|
|
15
|
+
* BEFORE spawning git. Read-only verbs may go through `readSync`, which
|
|
16
|
+
* also runs the assertion (defense-in-depth against repo-local aliases).
|
|
17
|
+
*
|
|
18
|
+
* Constraints enforced:
|
|
19
|
+
* - Every directory the subprocess could mutate is canonicalized via
|
|
20
|
+
* `realpathSync` and passed through `assertNotInstarSourceTree`. This
|
|
21
|
+
* covers `opts.cwd`, the `-C <dir>` target, and the path values in
|
|
22
|
+
* `--git-dir=<path>`, `--work-tree=<path>`. Any one being the instar
|
|
23
|
+
* source causes the call to throw before subprocess spawn.
|
|
24
|
+
* - Caller-supplied env has the git-redirection denylist stripped:
|
|
25
|
+
* GIT_DIR, GIT_WORK_TREE, GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY,
|
|
26
|
+
* GIT_COMMON_DIR, GIT_NAMESPACE, GIT_CONFIG*, GIT_CEILING_DIRECTORIES,
|
|
27
|
+
* GIT_DISCOVERY_ACROSS_FILESYSTEM.
|
|
28
|
+
* - GIT_CONFIG_GLOBAL=/dev/null + GIT_CONFIG_SYSTEM=/dev/null +
|
|
29
|
+
* GIT_CONFIG_NOSYSTEM=1 are injected unconditionally. This disables
|
|
30
|
+
* user-level and system-level git config (including aliases that could
|
|
31
|
+
* rebind a "read-only" verb to a destructive command).
|
|
32
|
+
* - A JSON line is appended to .instar/audit/destructive-ops.jsonl per
|
|
33
|
+
* call (fail-soft on log write failure).
|
|
34
|
+
*/
|
|
35
|
+
import { execFileSync, spawn as nodeSpawn, } from 'node:child_process';
|
|
36
|
+
import fs from 'node:fs';
|
|
37
|
+
import path from 'node:path';
|
|
38
|
+
import { fileURLToPath } from 'node:url';
|
|
39
|
+
import { assertNotInstarSourceTree, SourceTreeGuardError, } from './SourceTreeGuard.js';
|
|
40
|
+
// ── Verb classification ─────────────────────────────────────────────
|
|
41
|
+
/**
|
|
42
|
+
* Verbs treated as destructive. Closed enumeration; additions are spec changes.
|
|
43
|
+
*/
|
|
44
|
+
export const DESTRUCTIVE_GIT_VERBS = new Set([
|
|
45
|
+
'add',
|
|
46
|
+
'am',
|
|
47
|
+
'apply',
|
|
48
|
+
'branch', // shape-checked: bare `branch <name>` is destructive
|
|
49
|
+
'checkout',
|
|
50
|
+
'cherry-pick',
|
|
51
|
+
'clean',
|
|
52
|
+
'clone',
|
|
53
|
+
'commit',
|
|
54
|
+
'fetch',
|
|
55
|
+
'gc',
|
|
56
|
+
'init',
|
|
57
|
+
'merge',
|
|
58
|
+
'mv',
|
|
59
|
+
'pull',
|
|
60
|
+
'push',
|
|
61
|
+
'rebase',
|
|
62
|
+
'reset',
|
|
63
|
+
'restore',
|
|
64
|
+
'revert',
|
|
65
|
+
'rm',
|
|
66
|
+
'stash',
|
|
67
|
+
'submodule',
|
|
68
|
+
'switch',
|
|
69
|
+
'tag',
|
|
70
|
+
'update-ref',
|
|
71
|
+
'worktree', // shape-checked: `worktree list` is read-only
|
|
72
|
+
'prune',
|
|
73
|
+
'notes',
|
|
74
|
+
'replace',
|
|
75
|
+
'filter-branch',
|
|
76
|
+
'remote', // shape-checked: `remote get-url` is read-only
|
|
77
|
+
'config', // shape-checked: `config --get` is read-only
|
|
78
|
+
'format-patch', // shape-checked: --inline is destructive
|
|
79
|
+
]);
|
|
80
|
+
/**
|
|
81
|
+
* Read-only verbs explicitly safe to call. Closed enumeration.
|
|
82
|
+
*/
|
|
83
|
+
export const READONLY_GIT_VERBS = new Set([
|
|
84
|
+
'status',
|
|
85
|
+
'log',
|
|
86
|
+
'diff',
|
|
87
|
+
'show',
|
|
88
|
+
'rev-parse',
|
|
89
|
+
'rev-list',
|
|
90
|
+
'ls-files',
|
|
91
|
+
'ls-tree',
|
|
92
|
+
'ls-remote',
|
|
93
|
+
'describe',
|
|
94
|
+
'name-rev',
|
|
95
|
+
'blame',
|
|
96
|
+
'cat-file',
|
|
97
|
+
'grep',
|
|
98
|
+
'shortlog',
|
|
99
|
+
'count-objects',
|
|
100
|
+
'fsck',
|
|
101
|
+
'var',
|
|
102
|
+
'version',
|
|
103
|
+
'--version',
|
|
104
|
+
'help',
|
|
105
|
+
'write-tree',
|
|
106
|
+
'interpret-trailers',
|
|
107
|
+
'check-ref-format',
|
|
108
|
+
'symbolic-ref',
|
|
109
|
+
'for-each-ref',
|
|
110
|
+
'merge-base',
|
|
111
|
+
'reflog', // read-only by default; reflog expire/delete is destructive (caller must use execSync)
|
|
112
|
+
'hash-object',
|
|
113
|
+
'config', // overlap with destructive set; readSync shape-check enforces --get only
|
|
114
|
+
'remote', // overlap; readSync shape-check enforces list/get-url only
|
|
115
|
+
'branch', // overlap; readSync shape-check enforces --list / -l / --show-current / -v
|
|
116
|
+
'worktree', // overlap; readSync shape-check enforces list only
|
|
117
|
+
'format-patch', // overlap; readSync shape-check rejects --inline
|
|
118
|
+
'stash', // shape-check: `stash list` / `stash show` allowed
|
|
119
|
+
]);
|
|
120
|
+
// ── Env denylist ────────────────────────────────────────────────────
|
|
121
|
+
const GIT_ENV_DENYLIST = new Set([
|
|
122
|
+
'GIT_DIR',
|
|
123
|
+
'GIT_WORK_TREE',
|
|
124
|
+
'GIT_INDEX_FILE',
|
|
125
|
+
'GIT_OBJECT_DIRECTORY',
|
|
126
|
+
'GIT_COMMON_DIR',
|
|
127
|
+
'GIT_NAMESPACE',
|
|
128
|
+
'GIT_CONFIG',
|
|
129
|
+
'GIT_CONFIG_GLOBAL',
|
|
130
|
+
'GIT_CONFIG_SYSTEM',
|
|
131
|
+
'GIT_CONFIG_NOSYSTEM',
|
|
132
|
+
'GIT_CONFIG_PARAMETERS',
|
|
133
|
+
'GIT_CONFIG_COUNT',
|
|
134
|
+
'GIT_CEILING_DIRECTORIES',
|
|
135
|
+
'GIT_DISCOVERY_ACROSS_FILESYSTEM',
|
|
136
|
+
]);
|
|
137
|
+
function sanitizeEnv(callerEnv) {
|
|
138
|
+
// Start from a copy of process.env, then strip the denylist, then strip
|
|
139
|
+
// anything the caller supplied that's on the denylist or that matches
|
|
140
|
+
// GIT_CONFIG_KEY_* / GIT_CONFIG_VALUE_*.
|
|
141
|
+
const merged = { ...process.env, ...(callerEnv || {}) };
|
|
142
|
+
for (const k of Object.keys(merged)) {
|
|
143
|
+
if (GIT_ENV_DENYLIST.has(k)) {
|
|
144
|
+
delete merged[k];
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (/^GIT_CONFIG_(KEY|VALUE)_\d+$/.test(k)) {
|
|
148
|
+
delete merged[k];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Inject unconditional config disables.
|
|
152
|
+
merged.GIT_CONFIG_GLOBAL = '/dev/null';
|
|
153
|
+
merged.GIT_CONFIG_SYSTEM = '/dev/null';
|
|
154
|
+
merged.GIT_CONFIG_NOSYSTEM = '1';
|
|
155
|
+
return merged;
|
|
156
|
+
}
|
|
157
|
+
// ── Pre-verb global flags (a closed set) ────────────────────────────
|
|
158
|
+
const PRE_VERB_FLAGS_TAKING_VALUE = new Set([
|
|
159
|
+
'-C',
|
|
160
|
+
'-c',
|
|
161
|
+
'--git-dir',
|
|
162
|
+
'--work-tree',
|
|
163
|
+
'--namespace',
|
|
164
|
+
]);
|
|
165
|
+
const PRE_VERB_FLAGS_NO_VALUE = new Set([
|
|
166
|
+
'--bare',
|
|
167
|
+
'--no-pager',
|
|
168
|
+
'-P',
|
|
169
|
+
'--no-replace-objects',
|
|
170
|
+
'--literal-pathspecs',
|
|
171
|
+
'--glob-pathspecs',
|
|
172
|
+
'--noglob-pathspecs',
|
|
173
|
+
'--icase-pathspecs',
|
|
174
|
+
'--exec-path', // when used without `=` it's actually informational; allow
|
|
175
|
+
'-p',
|
|
176
|
+
'--paginate',
|
|
177
|
+
'--no-optional-locks',
|
|
178
|
+
]);
|
|
179
|
+
/**
|
|
180
|
+
* Walk the args array skipping leading pre-verb global flags. Return:
|
|
181
|
+
* { verb, targets: [opts.cwd, -C target, --git-dir target, --work-tree target] }
|
|
182
|
+
*
|
|
183
|
+
* Targets are canonicalized via `realpathSync`. If realpath fails on an
|
|
184
|
+
* existing path the raw value is passed through; the assertion handles
|
|
185
|
+
* uncanonicalizable inputs in fail-closed fashion.
|
|
186
|
+
*/
|
|
187
|
+
function extractVerbAndTargets(args, cwd) {
|
|
188
|
+
const targets = [canonicalize(cwd)];
|
|
189
|
+
let i = 0;
|
|
190
|
+
while (i < args.length) {
|
|
191
|
+
const a = args[i];
|
|
192
|
+
if (a === undefined)
|
|
193
|
+
break;
|
|
194
|
+
if (a === '-C') {
|
|
195
|
+
const next = args[i + 1];
|
|
196
|
+
if (next === undefined) {
|
|
197
|
+
throw new Error(`SafeGitExecutor: \`-C\` flag missing value: ${args.join(' ')}`);
|
|
198
|
+
}
|
|
199
|
+
targets.push(canonicalize(next));
|
|
200
|
+
i += 2;
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (a === '-c') {
|
|
204
|
+
// -c key=value — skip pair, no target.
|
|
205
|
+
const next = args[i + 1];
|
|
206
|
+
if (next === undefined) {
|
|
207
|
+
throw new Error(`SafeGitExecutor: \`-c\` flag missing value: ${args.join(' ')}`);
|
|
208
|
+
}
|
|
209
|
+
i += 2;
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (a.startsWith('--git-dir=')) {
|
|
213
|
+
const value = a.slice('--git-dir='.length);
|
|
214
|
+
targets.push(canonicalize(value));
|
|
215
|
+
i += 1;
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
if (a === '--git-dir') {
|
|
219
|
+
const next = args[i + 1];
|
|
220
|
+
if (next === undefined) {
|
|
221
|
+
throw new Error(`SafeGitExecutor: \`--git-dir\` flag missing value: ${args.join(' ')}`);
|
|
222
|
+
}
|
|
223
|
+
targets.push(canonicalize(next));
|
|
224
|
+
i += 2;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (a.startsWith('--work-tree=')) {
|
|
228
|
+
const value = a.slice('--work-tree='.length);
|
|
229
|
+
targets.push(canonicalize(value));
|
|
230
|
+
i += 1;
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (a === '--work-tree') {
|
|
234
|
+
const next = args[i + 1];
|
|
235
|
+
if (next === undefined) {
|
|
236
|
+
throw new Error(`SafeGitExecutor: \`--work-tree\` flag missing value: ${args.join(' ')}`);
|
|
237
|
+
}
|
|
238
|
+
targets.push(canonicalize(next));
|
|
239
|
+
i += 2;
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (a.startsWith('--namespace=')) {
|
|
243
|
+
i += 1;
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (a === '--namespace') {
|
|
247
|
+
const next = args[i + 1];
|
|
248
|
+
if (next === undefined) {
|
|
249
|
+
throw new Error(`SafeGitExecutor: \`--namespace\` flag missing value: ${args.join(' ')}`);
|
|
250
|
+
}
|
|
251
|
+
i += 2;
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
if (PRE_VERB_FLAGS_NO_VALUE.has(a)) {
|
|
255
|
+
i += 1;
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
// Not a recognized pre-verb flag — must be the verb.
|
|
259
|
+
if (a.startsWith('-')) {
|
|
260
|
+
// Unrecognized leading flag — fail loud (mirrors git's own conservative behavior).
|
|
261
|
+
throw new Error(`SafeGitExecutor: unrecognized pre-verb flag '${a}' in args ${JSON.stringify(args)}; ` +
|
|
262
|
+
`add it to PRE_VERB_FLAGS_NO_VALUE or PRE_VERB_FLAGS_TAKING_VALUE if it is a legitimate git global option.`);
|
|
263
|
+
}
|
|
264
|
+
return { verb: a, targets: dedupeTargets(targets) };
|
|
265
|
+
}
|
|
266
|
+
throw new Error(`SafeGitExecutor: no verb found in args ${JSON.stringify(args)}`);
|
|
267
|
+
}
|
|
268
|
+
function canonicalize(p) {
|
|
269
|
+
try {
|
|
270
|
+
return fs.realpathSync(path.resolve(p));
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
// realpath failed (path doesn't exist, EACCES, etc.) — return resolved
|
|
274
|
+
// absolute. The assertion handles non-existent inputs via its
|
|
275
|
+
// nearest-existing-ancestor walk.
|
|
276
|
+
try {
|
|
277
|
+
return path.resolve(p);
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
return p;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function dedupeTargets(targets) {
|
|
285
|
+
const seen = new Set();
|
|
286
|
+
const out = [];
|
|
287
|
+
for (const t of targets) {
|
|
288
|
+
if (!seen.has(t)) {
|
|
289
|
+
seen.add(t);
|
|
290
|
+
out.push(t);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return out;
|
|
294
|
+
}
|
|
295
|
+
// ── Shape checks for ambiguous verbs ────────────────────────────────
|
|
296
|
+
/**
|
|
297
|
+
* Returns true if the args under a `branch` verb describe a read-only
|
|
298
|
+
* invocation (`branch --list`, `branch -l`, `branch --show-current`,
|
|
299
|
+
* `branch -v` (no name), bare `branch` (list mode)). Returns false for
|
|
300
|
+
* destructive shapes (`branch <name>`, `branch -d`, `branch -D`,
|
|
301
|
+
* `branch -m`, `branch -M`, `branch --set-upstream-to=`, etc.).
|
|
302
|
+
*/
|
|
303
|
+
function isReadOnlyBranchInvocation(verbArgs) {
|
|
304
|
+
// verbArgs is the slice AFTER the `branch` verb. If empty, that's `git branch` (list).
|
|
305
|
+
if (verbArgs.length === 0)
|
|
306
|
+
return true;
|
|
307
|
+
const destructiveFlags = new Set([
|
|
308
|
+
'-d',
|
|
309
|
+
'-D',
|
|
310
|
+
'--delete',
|
|
311
|
+
'-m',
|
|
312
|
+
'-M',
|
|
313
|
+
'--move',
|
|
314
|
+
'-c',
|
|
315
|
+
'-C',
|
|
316
|
+
'--copy',
|
|
317
|
+
'--unset-upstream',
|
|
318
|
+
'--edit-description',
|
|
319
|
+
'--track',
|
|
320
|
+
'--no-track',
|
|
321
|
+
]);
|
|
322
|
+
for (const a of verbArgs) {
|
|
323
|
+
if (destructiveFlags.has(a))
|
|
324
|
+
return false;
|
|
325
|
+
if (a.startsWith('--set-upstream'))
|
|
326
|
+
return false;
|
|
327
|
+
if (!a.startsWith('-')) {
|
|
328
|
+
// Bare positional arg = branch name = create branch (destructive).
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return true;
|
|
333
|
+
}
|
|
334
|
+
function isReadOnlyRemoteInvocation(verbArgs) {
|
|
335
|
+
if (verbArgs.length === 0)
|
|
336
|
+
return true; // `git remote` — list mode
|
|
337
|
+
const sub = verbArgs[0];
|
|
338
|
+
if (sub === '-v' || sub === '--verbose')
|
|
339
|
+
return true;
|
|
340
|
+
if (sub === 'show' || sub === 'get-url')
|
|
341
|
+
return true;
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
function isReadOnlyWorktreeInvocation(verbArgs) {
|
|
345
|
+
if (verbArgs.length === 0)
|
|
346
|
+
return false;
|
|
347
|
+
return verbArgs[0] === 'list';
|
|
348
|
+
}
|
|
349
|
+
function isReadOnlyConfigInvocation(verbArgs) {
|
|
350
|
+
// Read-only config: --get, --get-all, --get-regexp, --list, -l, --get-color,
|
|
351
|
+
// --get-colorbool. Destructive: bare set, --add, --unset, --replace-all,
|
|
352
|
+
// --rename-section, --remove-section.
|
|
353
|
+
for (const a of verbArgs) {
|
|
354
|
+
if (a === '--get' || a === '--get-all' || a === '--get-regexp')
|
|
355
|
+
return true;
|
|
356
|
+
if (a === '--list' || a === '-l')
|
|
357
|
+
return true;
|
|
358
|
+
if (a === '--get-color' || a === '--get-colorbool')
|
|
359
|
+
return true;
|
|
360
|
+
if (a === '--get-urlmatch')
|
|
361
|
+
return true;
|
|
362
|
+
}
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
function isReadOnlyFormatPatchInvocation(verbArgs) {
|
|
366
|
+
// format-patch is read-only by default. --inline rewrites in-tree files
|
|
367
|
+
// and is destructive; it forces the caller to use execSync.
|
|
368
|
+
for (const a of verbArgs) {
|
|
369
|
+
if (a === '--inline')
|
|
370
|
+
return false;
|
|
371
|
+
}
|
|
372
|
+
return true;
|
|
373
|
+
}
|
|
374
|
+
function isReadOnlyStashInvocation(verbArgs) {
|
|
375
|
+
if (verbArgs.length === 0)
|
|
376
|
+
return false;
|
|
377
|
+
const sub = verbArgs[0];
|
|
378
|
+
return sub === 'list' || sub === 'show';
|
|
379
|
+
}
|
|
380
|
+
function isReadOnlyReflogInvocation(verbArgs) {
|
|
381
|
+
if (verbArgs.length === 0)
|
|
382
|
+
return true;
|
|
383
|
+
const sub = verbArgs[0];
|
|
384
|
+
// Default subcommand is `show` (read-only). `expire`, `delete` mutate refs.
|
|
385
|
+
return sub === 'show' || sub === 'exists';
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Ambiguous-verb shape check. Returns true if (verb, verbArgs) describes
|
|
389
|
+
* a read-only invocation. Returns false for unambiguously-destructive
|
|
390
|
+
* shapes. Returns null if the verb isn't ambiguous (caller uses verb-set
|
|
391
|
+
* membership).
|
|
392
|
+
*/
|
|
393
|
+
function isReadOnlyShape(verb, verbArgs) {
|
|
394
|
+
switch (verb) {
|
|
395
|
+
case 'branch':
|
|
396
|
+
return isReadOnlyBranchInvocation(verbArgs);
|
|
397
|
+
case 'remote':
|
|
398
|
+
return isReadOnlyRemoteInvocation(verbArgs);
|
|
399
|
+
case 'worktree':
|
|
400
|
+
return isReadOnlyWorktreeInvocation(verbArgs);
|
|
401
|
+
case 'config':
|
|
402
|
+
return isReadOnlyConfigInvocation(verbArgs);
|
|
403
|
+
case 'format-patch':
|
|
404
|
+
return isReadOnlyFormatPatchInvocation(verbArgs);
|
|
405
|
+
case 'stash':
|
|
406
|
+
return isReadOnlyStashInvocation(verbArgs);
|
|
407
|
+
case 'reflog':
|
|
408
|
+
return isReadOnlyReflogInvocation(verbArgs);
|
|
409
|
+
default:
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
/** Return the verbArgs (slice after the verb), accounting for pre-verb flags. */
|
|
414
|
+
function sliceAfterVerb(args, verb) {
|
|
415
|
+
const idx = args.indexOf(verb);
|
|
416
|
+
if (idx < 0)
|
|
417
|
+
return [];
|
|
418
|
+
return args.slice(idx + 1);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Where to write audit lines. Override via env for tests.
|
|
422
|
+
* INSTAR_AUDIT_LOG_DIR — directory for the JSONL file.
|
|
423
|
+
* INSTAR_AUDIT_LOG_DISABLED=1 — skip audit logging entirely.
|
|
424
|
+
*/
|
|
425
|
+
function auditLogPath() {
|
|
426
|
+
if (process.env.INSTAR_AUDIT_LOG_DISABLED === '1')
|
|
427
|
+
return null;
|
|
428
|
+
const overrideDir = process.env.INSTAR_AUDIT_LOG_DIR;
|
|
429
|
+
if (overrideDir) {
|
|
430
|
+
return path.join(overrideDir, 'destructive-ops.jsonl');
|
|
431
|
+
}
|
|
432
|
+
// Default: <cwd>/.instar/audit/destructive-ops.jsonl
|
|
433
|
+
return path.join(process.cwd(), '.instar', 'audit', 'destructive-ops.jsonl');
|
|
434
|
+
}
|
|
435
|
+
export function appendAuditEntry(entry) {
|
|
436
|
+
const file = auditLogPath();
|
|
437
|
+
if (!file)
|
|
438
|
+
return;
|
|
439
|
+
try {
|
|
440
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
441
|
+
fs.appendFileSync(file, JSON.stringify(entry) + '\n');
|
|
442
|
+
}
|
|
443
|
+
catch (err) {
|
|
444
|
+
// Fail-soft: writing audit must never block the operation.
|
|
445
|
+
try {
|
|
446
|
+
process.stderr.write(`[SafeGitExecutor] audit log write failed: ${err.message}\n`);
|
|
447
|
+
}
|
|
448
|
+
catch {
|
|
449
|
+
// ignore
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
function captureCallerFrame() {
|
|
454
|
+
const e = new Error();
|
|
455
|
+
const stack = (e.stack || '').split('\n');
|
|
456
|
+
// Skip 0 (Error), 1 (this fn), 2 (caller in this file), pick 3.
|
|
457
|
+
const frame = stack[3] || stack[2] || '';
|
|
458
|
+
return frame.trim();
|
|
459
|
+
}
|
|
460
|
+
// ── Errors ─────────────────────────────────────────────────────────
|
|
461
|
+
export class SafeGitExecutorError extends Error {
|
|
462
|
+
code = 'INSTAR_SAFE_GIT_EXECUTOR';
|
|
463
|
+
constructor(message) {
|
|
464
|
+
super(message);
|
|
465
|
+
this.name = 'SafeGitExecutorError';
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
// ── The funnel ──────────────────────────────────────────────────────
|
|
469
|
+
export class SafeGitExecutor {
|
|
470
|
+
/**
|
|
471
|
+
* Synchronous destructive git execution.
|
|
472
|
+
*
|
|
473
|
+
* 1. Extract the verb and ALL target directories from args + opts.cwd.
|
|
474
|
+
* 2. Canonicalize each target and call assertNotInstarSourceTree on each.
|
|
475
|
+
* 3. Verify the verb is in DESTRUCTIVE_GIT_VERBS (or is an ambiguous verb
|
|
476
|
+
* in destructive shape). Read-only verbs throw — callers must use readSync.
|
|
477
|
+
* 4. Strip env denylist; inject GIT_CONFIG_GLOBAL/SYSTEM=/dev/null.
|
|
478
|
+
* 5. Spawn git via execFileSync; return stdout.
|
|
479
|
+
*
|
|
480
|
+
* Throws SourceTreeGuardError if any target is the instar source tree.
|
|
481
|
+
* Throws SafeGitExecutorError on classification mismatch or arg errors.
|
|
482
|
+
*/
|
|
483
|
+
static execSync(args, opts) {
|
|
484
|
+
const { verb, targets } = extractVerbAndTargets(args, opts.cwd);
|
|
485
|
+
// Run source-tree assertion against every target.
|
|
486
|
+
runSourceTreeChecks(targets, opts.operation, 'git', verb);
|
|
487
|
+
// Verb classification.
|
|
488
|
+
const verbArgs = sliceAfterVerb(args, verb);
|
|
489
|
+
const ambiguousReadOnly = isReadOnlyShape(verb, verbArgs);
|
|
490
|
+
if (ambiguousReadOnly === true) {
|
|
491
|
+
// The verb is ambiguous and the shape is read-only — caller used the
|
|
492
|
+
// wrong method. Fail loud rather than silently allow.
|
|
493
|
+
audit('git', opts.operation, verb, targets[0], 'denied', 'read-only-shape-via-execSync');
|
|
494
|
+
throw new SafeGitExecutorError(`SafeGitExecutor.execSync called with read-only shape '${verb} ${verbArgs.join(' ')}' — use SafeGitExecutor.readSync instead.`);
|
|
495
|
+
}
|
|
496
|
+
if (ambiguousReadOnly === null && !DESTRUCTIVE_GIT_VERBS.has(verb)) {
|
|
497
|
+
// Pure read-only verb routed through execSync.
|
|
498
|
+
audit('git', opts.operation, verb, targets[0], 'denied', 'readonly-verb-via-execSync');
|
|
499
|
+
throw new SafeGitExecutorError(`SafeGitExecutor.execSync called with read-only verb '${verb}' — use SafeGitExecutor.readSync instead.`);
|
|
500
|
+
}
|
|
501
|
+
const env = sanitizeEnv(opts.env);
|
|
502
|
+
let stdout;
|
|
503
|
+
try {
|
|
504
|
+
stdout = execFileSync('git', args, {
|
|
505
|
+
cwd: opts.cwd,
|
|
506
|
+
stdio: opts.stdio ?? 'pipe',
|
|
507
|
+
encoding: opts.encoding ?? 'utf-8',
|
|
508
|
+
timeout: opts.timeout ?? 30000,
|
|
509
|
+
env,
|
|
510
|
+
input: opts.input,
|
|
511
|
+
maxBuffer: opts.maxBuffer ?? 10 * 1024 * 1024,
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
catch (err) {
|
|
515
|
+
audit('git', opts.operation, verb, targets[0], 'denied', `subprocess-error: ${err.message}`);
|
|
516
|
+
throw err;
|
|
517
|
+
}
|
|
518
|
+
audit('git', opts.operation, verb, targets[0], 'allowed');
|
|
519
|
+
return stdout || '';
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Async/streaming variant. Same guard semantics as execSync.
|
|
523
|
+
*/
|
|
524
|
+
static spawn(args, opts) {
|
|
525
|
+
const { verb, targets } = extractVerbAndTargets(args, opts.cwd);
|
|
526
|
+
runSourceTreeChecks(targets, opts.operation, 'git', verb);
|
|
527
|
+
const verbArgs = sliceAfterVerb(args, verb);
|
|
528
|
+
const ambiguousReadOnly = isReadOnlyShape(verb, verbArgs);
|
|
529
|
+
if (ambiguousReadOnly === true) {
|
|
530
|
+
audit('git', opts.operation, verb, targets[0], 'denied', 'read-only-shape-via-spawn');
|
|
531
|
+
throw new SafeGitExecutorError(`SafeGitExecutor.spawn called with read-only shape '${verb}' — use SafeGitExecutor.readSync instead.`);
|
|
532
|
+
}
|
|
533
|
+
if (ambiguousReadOnly === null && !DESTRUCTIVE_GIT_VERBS.has(verb)) {
|
|
534
|
+
audit('git', opts.operation, verb, targets[0], 'denied', 'readonly-verb-via-spawn');
|
|
535
|
+
throw new SafeGitExecutorError(`SafeGitExecutor.spawn called with read-only verb '${verb}' — use SafeGitExecutor.readSync instead.`);
|
|
536
|
+
}
|
|
537
|
+
const env = sanitizeEnv(opts.env);
|
|
538
|
+
const spawnOpts = {
|
|
539
|
+
cwd: opts.cwd,
|
|
540
|
+
stdio: opts.stdio ?? 'pipe',
|
|
541
|
+
env,
|
|
542
|
+
};
|
|
543
|
+
audit('git', opts.operation, verb, targets[0], 'allowed');
|
|
544
|
+
return nodeSpawn('git', args, spawnOpts);
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Read-only escape valve. Runs `git <args>` after verifying:
|
|
548
|
+
* - Verb is in READONLY_GIT_VERBS (or is an ambiguous verb in read-only shape).
|
|
549
|
+
* - assertNotInstarSourceTree passes against every target (defense-in-depth
|
|
550
|
+
* against repo-local aliases that could rebind a "read-only" verb).
|
|
551
|
+
*/
|
|
552
|
+
static readSync(args, opts) {
|
|
553
|
+
const { verb, targets } = extractVerbAndTargets(args, opts.cwd);
|
|
554
|
+
// Verb classification first, BEFORE source-tree check, so callers
|
|
555
|
+
// misusing this method get a clear "use execSync" error rather than
|
|
556
|
+
// a guard error first.
|
|
557
|
+
const verbArgs = sliceAfterVerb(args, verb);
|
|
558
|
+
const ambiguousReadOnly = isReadOnlyShape(verb, verbArgs);
|
|
559
|
+
if (ambiguousReadOnly === false) {
|
|
560
|
+
audit('git', opts.operation, verb, targets[0], 'denied', 'destructive-shape-via-readSync');
|
|
561
|
+
throw new SafeGitExecutorError(`SafeGitExecutor.readSync called with destructive shape '${verb} ${verbArgs.join(' ')}' — use SafeGitExecutor.execSync instead.`);
|
|
562
|
+
}
|
|
563
|
+
if (ambiguousReadOnly === null && !READONLY_GIT_VERBS.has(verb)) {
|
|
564
|
+
audit('git', opts.operation, verb, targets[0], 'denied', 'destructive-verb-via-readSync');
|
|
565
|
+
throw new SafeGitExecutorError(`SafeGitExecutor.readSync called with destructive verb '${verb}' — use SafeGitExecutor.execSync instead.`);
|
|
566
|
+
}
|
|
567
|
+
// Defense-in-depth: source-tree check on the read path too.
|
|
568
|
+
runSourceTreeChecks(targets, opts.operation, 'git', verb);
|
|
569
|
+
const env = sanitizeEnv(opts.env);
|
|
570
|
+
let stdout;
|
|
571
|
+
try {
|
|
572
|
+
stdout = execFileSync('git', args, {
|
|
573
|
+
cwd: opts.cwd,
|
|
574
|
+
stdio: opts.stdio ?? 'pipe',
|
|
575
|
+
encoding: opts.encoding ?? 'utf-8',
|
|
576
|
+
timeout: opts.timeout ?? 30000,
|
|
577
|
+
env,
|
|
578
|
+
input: opts.input,
|
|
579
|
+
maxBuffer: opts.maxBuffer ?? 10 * 1024 * 1024,
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
catch (err) {
|
|
583
|
+
audit('git', opts.operation, verb, targets[0], 'denied', `subprocess-error: ${err.message}`);
|
|
584
|
+
throw err;
|
|
585
|
+
}
|
|
586
|
+
audit('git', opts.operation, verb, targets[0], 'allowed');
|
|
587
|
+
return stdout || '';
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
function runSourceTreeChecks(targets, operation, executor, verb) {
|
|
591
|
+
for (const t of targets) {
|
|
592
|
+
try {
|
|
593
|
+
assertNotInstarSourceTree(t, operation);
|
|
594
|
+
}
|
|
595
|
+
catch (err) {
|
|
596
|
+
if (err instanceof SourceTreeGuardError) {
|
|
597
|
+
audit(executor, operation, verb, t, 'denied', err.message);
|
|
598
|
+
}
|
|
599
|
+
throw err;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
function audit(executor, operation, verb, target, outcome, reason) {
|
|
604
|
+
const entry = {
|
|
605
|
+
timestamp: new Date().toISOString(),
|
|
606
|
+
executor,
|
|
607
|
+
operation,
|
|
608
|
+
target,
|
|
609
|
+
outcome,
|
|
610
|
+
caller: captureCallerFrame(),
|
|
611
|
+
};
|
|
612
|
+
if (verb !== undefined)
|
|
613
|
+
entry.verb = verb;
|
|
614
|
+
if (reason !== undefined)
|
|
615
|
+
entry.reason = reason;
|
|
616
|
+
appendAuditEntry(entry);
|
|
617
|
+
}
|
|
618
|
+
// ── Internal helpers exported for tests only ────────────────────────
|
|
619
|
+
/** @internal — exposed for SafeGitExecutor.test.ts */
|
|
620
|
+
export const _internal = {
|
|
621
|
+
extractVerbAndTargets,
|
|
622
|
+
isReadOnlyShape,
|
|
623
|
+
sanitizeEnv,
|
|
624
|
+
GIT_ENV_DENYLIST,
|
|
625
|
+
};
|
|
626
|
+
// Suppress unused-export warnings for the convenience re-exports. The
|
|
627
|
+
// test suite imports these symbols.
|
|
628
|
+
export { SourceTreeGuardError };
|
|
629
|
+
// fileURLToPath import kept available for future use; no current consumers.
|
|
630
|
+
void fileURLToPath;
|
|
631
|
+
//# sourceMappingURL=SafeGitExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SafeGitExecutor.js","sourceRoot":"","sources":["../../src/core/SafeGitExecutor.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,YAAY,EACZ,KAAK,IAAI,SAAS,GAGnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,uEAAuE;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,KAAK;IACL,IAAI;IACJ,OAAO;IACP,QAAQ,EAAE,qDAAqD;IAC/D,UAAU;IACV,aAAa;IACb,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,IAAI;IACJ,MAAM;IACN,OAAO;IACP,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,WAAW;IACX,QAAQ;IACR,KAAK;IACL,YAAY;IACZ,UAAU,EAAE,8CAA8C;IAC1D,OAAO;IACP,OAAO;IACP,SAAS;IACT,eAAe;IACf,QAAQ,EAAE,+CAA+C;IACzD,QAAQ,EAAE,6CAA6C;IACvD,cAAc,EAAE,yCAAyC;CAC1D,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,WAAW;IACX,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;IACX,UAAU;IACV,UAAU;IACV,OAAO;IACP,UAAU;IACV,MAAM;IACN,UAAU;IACV,eAAe;IACf,MAAM;IACN,KAAK;IACL,SAAS;IACT,WAAW;IACX,MAAM;IACN,YAAY;IACZ,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,YAAY;IACZ,QAAQ,EAAE,uFAAuF;IACjG,aAAa;IACb,QAAQ,EAAE,yEAAyE;IACnF,QAAQ,EAAE,2DAA2D;IACrE,QAAQ,EAAE,2EAA2E;IACrF,UAAU,EAAE,mDAAmD;IAC/D,cAAc,EAAE,iDAAiD;IACjE,OAAO,EAAE,mDAAmD;CAC7D,CAAC,CAAC;AAEH,uEAAuE;AAEvE,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IACpD,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sBAAsB;IACtB,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,uBAAuB;IACvB,kBAAkB;IAClB,yBAAyB;IACzB,iCAAiC;CAClC,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,SAA6B;IAChD,wEAAwE;IACxE,sEAAsE;IACtE,yCAAyC;IACzC,MAAM,MAAM,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,wCAAwC;IACxC,MAAM,CAAC,iBAAiB,GAAG,WAAW,CAAC;IACvC,MAAM,CAAC,iBAAiB,GAAG,WAAW,CAAC;IACvC,MAAM,CAAC,mBAAmB,GAAG,GAAG,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AAEvE,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC;IAC/D,IAAI;IACJ,IAAI;IACJ,WAAW;IACX,aAAa;IACb,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAC3D,QAAQ;IACR,YAAY;IACZ,IAAI;IACJ,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,aAAa,EAAE,2DAA2D;IAC1E,IAAI;IACJ,YAAY;IACZ,qBAAqB;CACtB,CAAC,CAAC;AAaH;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,IAAuB,EACvB,GAAW;IAEX,MAAM,OAAO,GAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM;QAE3B,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,uCAAuC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACjC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,qDAAqD;QACrD,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,mFAAmF;YACnF,MAAM,IAAI,KAAK,CACb,gDAAgD,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;gBACpF,2GAA2G,CAC9G,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,8DAA8D;QAC9D,kCAAkC;QAClC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAiB;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uEAAuE;AAEvE;;;;;;GAMG;AACH,SAAS,0BAA0B,CAAC,QAA2B;IAC7D,uFAAuF;IACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;QAC/B,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,kBAAkB;QAClB,oBAAoB;QACpB,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,mEAAmE;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,QAA2B;IAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,2BAA2B;IACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,4BAA4B,CAAC,QAA2B;IAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;AAChC,CAAC;AAED,SAAS,0BAA0B,CAAC,QAA2B;IAC7D,6EAA6E;IAC7E,yEAAyE;IACzE,sCAAsC;IACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QAC5E,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9C,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAChE,IAAI,CAAC,KAAK,gBAAgB;YAAE,OAAO,IAAI,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CAAC,QAA2B;IAClE,wEAAwE;IACxE,4DAA4D;IAC5D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,QAA2B;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,CAAC;AAC1C,CAAC;AAED,SAAS,0BAA0B,CAAC,QAA2B;IAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,4EAA4E;IAC5E,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CACtB,IAAY,EACZ,QAA2B;IAE3B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,QAAQ;YACX,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,UAAU;YACb,OAAO,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAChD,KAAK,QAAQ;YACX,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,cAAc;YACjB,OAAO,+BAA+B,CAAC,QAAQ,CAAC,CAAC;QACnD,KAAK,OAAO;YACV,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC9C;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,SAAS,cAAc,CACrB,IAAuB,EACvB,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC;AAeD;;;;GAIG;AACH,SAAS,YAAY;IACnB,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACrD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACzD,CAAC;IACD,qDAAqD;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2DAA2D;QAC3D,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6CAA8C,GAAa,CAAC,OAAO,IAAI,CACxE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,gEAAgE;IAChE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAuBD,sEAAsE;AAEtE,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,GAAG,0BAA0B,CAAC;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,uEAAuE;AAEvE,MAAM,OAAO,eAAe;IAC1B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAuB,EAAE,IAAoB;QAC3D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhE,kDAAkD;QAClD,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1D,uBAAuB;QACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC/B,qEAAqE;YACrE,sDAAsD;YACtD,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;YACzF,MAAM,IAAI,oBAAoB,CAC5B,yDAAyD,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,2CAA2C,CAC/H,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnE,+CAA+C;YAC/C,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YACvF,MAAM,IAAI,oBAAoB,CAC5B,wDAAwD,IAAI,2CAA2C,CACxG,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAgB,EAAE;gBAC7C,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO;gBAClC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;gBAC9B,GAAG;gBACH,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;aAC9C,CAAW,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACxG,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAuB,EAAE,IAAoB;QACxD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC/B,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;YACtF,MAAM,IAAI,oBAAoB,CAC5B,sDAAsD,IAAI,2CAA2C,CACtG,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;YACpF,MAAM,IAAI,oBAAoB,CAC5B,qDAAqD,IAAI,2CAA2C,CACrG,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,SAAS,GAAiB;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM;YAC3B,GAAG;SACJ,CAAC;QACF,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,SAAS,CAAC,KAAK,EAAE,IAAgB,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAuB,EAAE,IAAoB;QAC3D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhE,kEAAkE;QAClE,oEAAoE;QACpE,uBAAuB;QACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,iBAAiB,KAAK,KAAK,EAAE,CAAC;YAChC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gCAAgC,CAAC,CAAC;YAC3F,MAAM,IAAI,oBAAoB,CAC5B,2DAA2D,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,2CAA2C,CACjI,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,+BAA+B,CAAC,CAAC;YAC1F,MAAM,IAAI,oBAAoB,CAC5B,0DAA0D,IAAI,2CAA2C,CAC1G,CAAC;QACJ,CAAC;QAED,4DAA4D;QAC5D,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1D,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAgB,EAAE;gBAC7C,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO;gBAClC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;gBAC9B,GAAG;gBACH,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;aAC9C,CAAW,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACxG,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;CACF;AAED,SAAS,mBAAmB,CAC1B,OAA0B,EAC1B,SAAiB,EACjB,QAAsB,EACtB,IAAwB;IAExB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,yBAAyB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;gBACxC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CACZ,QAAsB,EACtB,SAAiB,EACjB,IAAwB,EACxB,MAAc,EACd,OAA6B,EAC7B,MAAe;IAEf,MAAM,KAAK,GAAe;QACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ;QACR,SAAS;QACT,MAAM;QACN,OAAO;QACP,MAAM,EAAE,kBAAkB,EAAE;KAC7B,CAAC;IACF,IAAI,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1C,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAChD,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,uEAAuE;AAEvE,sDAAsD;AACtD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,qBAAqB;IACrB,eAAe;IACf,WAAW;IACX,gBAAgB;CACjB,CAAC;AAEF,sEAAsE;AACtE,oCAAoC;AACpC,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,4EAA4E;AAC5E,KAAK,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeVerifier.d.ts","sourceRoot":"","sources":["../../src/core/ScopeVerifier.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ScopeVerifier.d.ts","sourceRoot":"","sources":["../../src/core/ScopeVerifier.ts"],"names":[],"mappings":"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"}
|