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,121 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* add-migration-marker.js — stamp every pre-existing direct destructive
|
|
4
|
+
* git/fs callsite with `// safe-git-allow: incremental-migration` so the
|
|
5
|
+
* lint rule (`scripts/lint-no-direct-destructive.js`) accepts the existing
|
|
6
|
+
* codebase during the transitional period.
|
|
7
|
+
*
|
|
8
|
+
* Idempotent. Running it multiple times is safe — already-marked callsites
|
|
9
|
+
* are skipped. After PR #2 migrates every callsite through SafeGitExecutor /
|
|
10
|
+
* SafeFsExecutor, this script can be deleted along with the marker support
|
|
11
|
+
* in the lint rule.
|
|
12
|
+
*
|
|
13
|
+
* Mechanism:
|
|
14
|
+
* 1. Run the lint rule with markers temporarily disabled to collect every
|
|
15
|
+
* pre-existing violation as (file, line) pairs.
|
|
16
|
+
* 2. For each unique line in each file, prepend a `// safe-git-allow:
|
|
17
|
+
* incremental-migration` comment matching the indentation of the
|
|
18
|
+
* flagged line. Skip if the marker already exists immediately above
|
|
19
|
+
* or on the same line.
|
|
20
|
+
* 3. Write the file back.
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* node scripts/add-migration-marker.js
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import fs from 'node:fs';
|
|
27
|
+
import path from 'node:path';
|
|
28
|
+
import { fileURLToPath } from 'node:url';
|
|
29
|
+
import { spawnSync } from 'node:child_process';
|
|
30
|
+
|
|
31
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
32
|
+
const __dirname = path.dirname(__filename);
|
|
33
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
34
|
+
|
|
35
|
+
const MARKER = '// safe-git-allow: incremental-migration';
|
|
36
|
+
const MARKER_RE = /\/\/\s*safe-git-allow:\s*incremental-migration\b/;
|
|
37
|
+
|
|
38
|
+
function collectViolations() {
|
|
39
|
+
// Run lint with the marker disabled by setting an env override the lint
|
|
40
|
+
// rule respects. Easier: pass --no-marker-suppression. The lint rule
|
|
41
|
+
// doesn't support that flag, so instead we set INSTAR_DISABLE_MIGRATION_MARKER=1
|
|
42
|
+
// and have the lint rule honor it.
|
|
43
|
+
const env = { ...process.env, INSTAR_DISABLE_MIGRATION_MARKER: '1' };
|
|
44
|
+
const result = spawnSync(process.execPath, [path.join(ROOT, 'scripts/lint-no-direct-destructive.js')], {
|
|
45
|
+
cwd: ROOT,
|
|
46
|
+
env,
|
|
47
|
+
encoding: 'utf8',
|
|
48
|
+
});
|
|
49
|
+
// Lint exits 1 on violations. We parse stderr regardless.
|
|
50
|
+
const stderr = result.stderr || '';
|
|
51
|
+
|
|
52
|
+
// Output format from lint:
|
|
53
|
+
// <relpath>:<line>:<col>
|
|
54
|
+
// <message>
|
|
55
|
+
const violations = [];
|
|
56
|
+
const lines = stderr.split('\n');
|
|
57
|
+
for (let i = 0; i < lines.length; i++) {
|
|
58
|
+
const m = lines[i].match(/^\s+([^:\s][^:]*):(\d+):(\d+)\s*$/);
|
|
59
|
+
if (m) {
|
|
60
|
+
violations.push({ file: m[1], line: parseInt(m[2], 10) });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return violations;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function applyMarkers(violations) {
|
|
67
|
+
// Group by file.
|
|
68
|
+
const byFile = new Map();
|
|
69
|
+
for (const v of violations) {
|
|
70
|
+
if (!byFile.has(v.file)) byFile.set(v.file, new Set());
|
|
71
|
+
byFile.get(v.file).add(v.line);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
let marked = 0;
|
|
75
|
+
let skipped = 0;
|
|
76
|
+
for (const [relFile, lineSet] of byFile) {
|
|
77
|
+
const full = path.resolve(ROOT, relFile);
|
|
78
|
+
let text;
|
|
79
|
+
try {
|
|
80
|
+
text = fs.readFileSync(full, 'utf8');
|
|
81
|
+
} catch {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const orig = text.split('\n');
|
|
85
|
+
|
|
86
|
+
// Sort target lines DESCENDING so insertions don't shift later targets.
|
|
87
|
+
const targets = Array.from(lineSet).sort((a, b) => b - a);
|
|
88
|
+
const out = orig.slice();
|
|
89
|
+
|
|
90
|
+
for (const lineNum of targets) {
|
|
91
|
+
const idx = lineNum - 1; // 0-based
|
|
92
|
+
if (idx < 0 || idx >= out.length) continue;
|
|
93
|
+
const targetLine = out[idx];
|
|
94
|
+
// Skip if marker already on the target line or on the line above.
|
|
95
|
+
if (MARKER_RE.test(targetLine)) { skipped++; continue; }
|
|
96
|
+
if (idx - 1 >= 0 && MARKER_RE.test(out[idx - 1])) { skipped++; continue; }
|
|
97
|
+
|
|
98
|
+
// Match the indentation of the target line.
|
|
99
|
+
const indentMatch = targetLine.match(/^(\s*)/);
|
|
100
|
+
const indent = indentMatch ? indentMatch[1] : '';
|
|
101
|
+
out.splice(idx, 0, `${indent}${MARKER}`);
|
|
102
|
+
marked++;
|
|
103
|
+
}
|
|
104
|
+
fs.writeFileSync(full, out.join('\n'));
|
|
105
|
+
}
|
|
106
|
+
return { marked, skipped };
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function main() {
|
|
110
|
+
const violations = collectViolations();
|
|
111
|
+
if (violations.length === 0) {
|
|
112
|
+
console.log('No violations detected — nothing to mark.');
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
console.log(`Found ${violations.length} flagged callsites.`);
|
|
116
|
+
const { marked, skipped } = applyMarkers(violations);
|
|
117
|
+
console.log(`Stamped ${marked} new marker(s); ${skipped} already had a marker.`);
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
process.exit(main());
|
|
@@ -44,15 +44,18 @@ function log(msg) {
|
|
|
44
44
|
|
|
45
45
|
function getLastReleaseTag() {
|
|
46
46
|
try {
|
|
47
|
+
// safe-git-allow: incremental-migration
|
|
47
48
|
return execSync('git describe --tags --abbrev=0', { cwd: ROOT, encoding: 'utf-8' }).trim();
|
|
48
49
|
} catch {
|
|
49
50
|
// No tags at all — diff against the initial commit
|
|
51
|
+
// safe-git-allow: incremental-migration
|
|
50
52
|
return execSync('git rev-list --max-parents=0 HEAD', { cwd: ROOT, encoding: 'utf-8' }).trim();
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
function getCommitsSinceTag(tag) {
|
|
55
57
|
try {
|
|
58
|
+
// safe-git-allow: incremental-migration
|
|
56
59
|
const raw = execSync(`git log ${tag}..HEAD --oneline --no-merges`, { cwd: ROOT, encoding: 'utf-8' });
|
|
57
60
|
return raw.trim().split('\n').filter(Boolean).map(line => {
|
|
58
61
|
const [hash, ...rest] = line.split(' ');
|
|
@@ -65,6 +68,7 @@ function getCommitsSinceTag(tag) {
|
|
|
65
68
|
|
|
66
69
|
function getDiffStat(tag) {
|
|
67
70
|
try {
|
|
71
|
+
// safe-git-allow: incremental-migration
|
|
68
72
|
return execSync(`git diff ${tag}..HEAD --stat`, { cwd: ROOT, encoding: 'utf-8' }).trim();
|
|
69
73
|
} catch {
|
|
70
74
|
return '';
|
|
@@ -73,6 +77,7 @@ function getDiffStat(tag) {
|
|
|
73
77
|
|
|
74
78
|
function getChangedFiles(tag) {
|
|
75
79
|
try {
|
|
80
|
+
// safe-git-allow: incremental-migration
|
|
76
81
|
const raw = execSync(`git diff ${tag}..HEAD --name-status`, { cwd: ROOT, encoding: 'utf-8' });
|
|
77
82
|
return raw.trim().split('\n').filter(Boolean).map(line => {
|
|
78
83
|
const [status, ...pathParts] = line.split('\t');
|
|
@@ -85,6 +90,7 @@ function getChangedFiles(tag) {
|
|
|
85
90
|
|
|
86
91
|
function getFileDiff(tag, file) {
|
|
87
92
|
try {
|
|
93
|
+
// safe-git-allow: incremental-migration
|
|
88
94
|
return execSync(`git diff ${tag}..HEAD -- "${file}"`, { cwd: ROOT, encoding: 'utf-8' });
|
|
89
95
|
} catch {
|
|
90
96
|
return '';
|
|
@@ -36,12 +36,14 @@ const ADAPTER_PATHS = [
|
|
|
36
36
|
let adapterChanges = [];
|
|
37
37
|
try {
|
|
38
38
|
// Find files changed since the last npm version tag
|
|
39
|
+
// safe-git-allow: incremental-migration
|
|
39
40
|
const lastTag = execSync('git describe --tags --abbrev=0 2>/dev/null || echo ""', {
|
|
40
41
|
encoding: 'utf-8',
|
|
41
42
|
cwd: ROOT,
|
|
42
43
|
}).trim();
|
|
43
44
|
|
|
44
45
|
const diffBase = lastTag || 'HEAD~10';
|
|
46
|
+
// safe-git-allow: incremental-migration
|
|
45
47
|
const changedFiles = execSync(`git diff --name-only ${diffBase}...HEAD 2>/dev/null || echo ""`, {
|
|
46
48
|
encoding: 'utf-8',
|
|
47
49
|
cwd: ROOT,
|
|
@@ -102,6 +102,7 @@ function dryRunGitClean(cwd, args) {
|
|
|
102
102
|
// Use -n to count what would be removed
|
|
103
103
|
const dryArgs = ['-C', cwd, 'clean', '-n', ...args.filter(a => a !== '-f')];
|
|
104
104
|
try {
|
|
105
|
+
// safe-git-allow: incremental-migration
|
|
105
106
|
const out = execFileSync('git', dryArgs, { encoding: 'utf-8', timeout: 5000 });
|
|
106
107
|
return out.split('\n').filter(Boolean).length;
|
|
107
108
|
} catch { return Number.POSITIVE_INFINITY; }
|
|
@@ -167,6 +167,7 @@ function tryPrebuild(pkgDir, betterSqliteVersion) {
|
|
|
167
167
|
console.log(`[fix-better-sqlite3] Downloading ${url}`);
|
|
168
168
|
execSync(`curl -L -f -o "${tmpFile}" "${url}"`, { stdio: 'pipe', timeout: 30000 });
|
|
169
169
|
|
|
170
|
+
// safe-git-allow: incremental-migration
|
|
170
171
|
if (fs.existsSync(buildDir)) fs.rmSync(buildDir, { recursive: true });
|
|
171
172
|
execSync(`tar xzf "${tmpFile}" -C "${pkgDir}"`, { stdio: 'pipe' });
|
|
172
173
|
return true;
|
|
@@ -174,6 +175,7 @@ function tryPrebuild(pkgDir, betterSqliteVersion) {
|
|
|
174
175
|
console.warn(`[fix-better-sqlite3] prebuild download/extract failed: ${err.message}`);
|
|
175
176
|
return false;
|
|
176
177
|
} finally {
|
|
178
|
+
// safe-git-allow: incremental-migration
|
|
177
179
|
try { fs.unlinkSync(tmpFile); } catch {}
|
|
178
180
|
}
|
|
179
181
|
}
|
|
@@ -18,6 +18,7 @@ const ROOT = path.resolve(__dirname, '..');
|
|
|
18
18
|
|
|
19
19
|
// Guard: warn if working tree is dirty (manifest won't match committed source in CI)
|
|
20
20
|
try {
|
|
21
|
+
// safe-git-allow: incremental-migration
|
|
21
22
|
const status = execSync('git status --porcelain -- src/', { cwd: ROOT, encoding: 'utf-8' }).trim();
|
|
22
23
|
if (status) {
|
|
23
24
|
console.warn('\n⚠️ WARNING: Working tree has uncommitted changes in src/.');
|
|
@@ -47,6 +47,7 @@ if (fs.existsSync(path.join(ROOT, '.git', 'MERGE_HEAD'))) {
|
|
|
47
47
|
|
|
48
48
|
let stagedOutput;
|
|
49
49
|
try {
|
|
50
|
+
// safe-git-allow: incremental-migration
|
|
50
51
|
stagedOutput = execSync('git diff --cached --name-only --diff-filter=ACMR', {
|
|
51
52
|
cwd: ROOT,
|
|
52
53
|
encoding: 'utf8',
|
|
@@ -93,6 +94,7 @@ if (inScopeFiles.length === 0) {
|
|
|
93
94
|
|
|
94
95
|
let addedOutput = '';
|
|
95
96
|
try {
|
|
97
|
+
// safe-git-allow: incremental-migration
|
|
96
98
|
addedOutput = execSync('git diff --cached --name-only --diff-filter=A', {
|
|
97
99
|
cwd: ROOT,
|
|
98
100
|
encoding: 'utf8',
|