@skillsmith/core 0.12.1 → 0.12.2
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/CHANGELOG.md +155 -0
- package/README.md +2 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/api/client.d.ts +5 -3
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +23 -33
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/client.registry-sync.d.ts +28 -0
- package/dist/src/api/client.registry-sync.d.ts.map +1 -0
- package/dist/src/api/client.registry-sync.js +36 -0
- package/dist/src/api/client.registry-sync.js.map +1 -0
- package/dist/src/api/client.test.js +185 -0
- package/dist/src/api/client.test.js.map +1 -1
- package/dist/src/api/client.toSkill.d.ts +16 -0
- package/dist/src/api/client.toSkill.d.ts.map +1 -0
- package/dist/src/api/client.toSkill.js +46 -0
- package/dist/src/api/client.toSkill.js.map +1 -0
- package/dist/src/api/client.types.d.ts +22 -0
- package/dist/src/api/client.types.d.ts.map +1 -1
- package/dist/src/api/index.d.ts +1 -1
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/schemas.d.ts +28 -0
- package/dist/src/api/schemas.d.ts.map +1 -1
- package/dist/src/api/schemas.js +13 -0
- package/dist/src/api/schemas.js.map +1 -1
- package/dist/src/audit/remote-audit.d.ts +85 -0
- package/dist/src/audit/remote-audit.d.ts.map +1 -1
- package/dist/src/audit/remote-audit.js +126 -3
- package/dist/src/audit/remote-audit.js.map +1 -1
- package/dist/src/audit/remote-audit.test.js +217 -1
- package/dist/src/audit/remote-audit.test.js.map +1 -1
- package/dist/src/config/index.d.ts +1 -0
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/db/migration-runner.d.ts.map +1 -1
- package/dist/src/db/migration-runner.js +6 -0
- package/dist/src/db/migration-runner.js.map +1 -1
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.d.ts +36 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.d.ts.map +1 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.js +38 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.js.map +1 -0
- package/dist/src/db/schema.d.ts +1 -1
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +3 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/exports/services.d.ts +3 -7
- package/dist/src/exports/services.d.ts.map +1 -1
- package/dist/src/exports/services.install.d.ts +18 -0
- package/dist/src/exports/services.install.d.ts.map +1 -0
- package/dist/src/exports/services.install.js +62 -0
- package/dist/src/exports/services.install.js.map +1 -0
- package/dist/src/exports/services.js +12 -32
- package/dist/src/exports/services.js.map +1 -1
- package/dist/src/exports/types.d.ts +1 -1
- package/dist/src/exports/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/install/agent-config-merge.json.d.ts +5 -4
- package/dist/src/install/agent-config-merge.json.d.ts.map +1 -1
- package/dist/src/install/agent-config-merge.json.js +10 -9
- package/dist/src/install/agent-config-merge.json.js.map +1 -1
- package/dist/src/install/agent-config-merge.types.d.ts +11 -1
- package/dist/src/install/agent-config-merge.types.d.ts.map +1 -1
- package/dist/src/install/agent-config-merge.types.js.map +1 -1
- package/dist/src/install/agent-harness-targets.d.ts +30 -2
- package/dist/src/install/agent-harness-targets.d.ts.map +1 -1
- package/dist/src/install/agent-harness-targets.js +17 -0
- package/dist/src/install/agent-harness-targets.js.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.d.ts +28 -3
- package/dist/src/install/agent-manifest-path-guard.d.ts.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.js +59 -3
- package/dist/src/install/agent-manifest-path-guard.js.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.test.js +27 -1
- package/dist/src/install/agent-manifest-path-guard.test.js.map +1 -1
- package/dist/src/install/agent-pack-installer.antigravity-mcp.d.ts +74 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.js +106 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.js.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.js +157 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.d.ts +53 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.js +207 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.js.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.js +285 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.d.ts +8 -0
- package/dist/src/install/agent-pack-installer.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.entry.d.ts +120 -3
- package/dist/src/install/agent-pack-installer.entry.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.entry.js +166 -3
- package/dist/src/install/agent-pack-installer.entry.js.map +1 -1
- package/dist/src/install/agent-pack-installer.js +97 -3
- package/dist/src/install/agent-pack-installer.js.map +1 -1
- package/dist/src/install/agent-pack-installer.types.d.ts +27 -0
- package/dist/src/install/agent-pack-installer.types.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.types.js +6 -0
- package/dist/src/install/agent-pack-installer.types.js.map +1 -1
- package/dist/src/install/agent-pack-installer.workspace-scope.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.js +148 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.js.map +1 -0
- package/dist/src/install/agent-pack-uninstaller.d.ts +18 -7
- package/dist/src/install/agent-pack-uninstaller.d.ts.map +1 -1
- package/dist/src/install/agent-pack-uninstaller.js +59 -9
- package/dist/src/install/agent-pack-uninstaller.js.map +1 -1
- package/dist/src/install/agent-pack-uninstaller.test.js +74 -1
- package/dist/src/install/agent-pack-uninstaller.test.js.map +1 -1
- package/dist/src/install/fan-out.d.ts.map +1 -1
- package/dist/src/install/fan-out.js +6 -0
- package/dist/src/install/fan-out.js.map +1 -1
- package/dist/src/install/index.d.ts +2 -0
- package/dist/src/install/index.d.ts.map +1 -1
- package/dist/src/install/index.js +2 -0
- package/dist/src/install/index.js.map +1 -1
- package/dist/src/install/workspace-scope.d.ts +207 -0
- package/dist/src/install/workspace-scope.d.ts.map +1 -0
- package/dist/src/install/workspace-scope.js +275 -0
- package/dist/src/install/workspace-scope.js.map +1 -0
- package/dist/src/install/workspace-scope.test.d.ts +2 -0
- package/dist/src/install/workspace-scope.test.d.ts.map +1 -0
- package/dist/src/install/workspace-scope.test.js +378 -0
- package/dist/src/install/workspace-scope.test.js.map +1 -0
- package/dist/src/security/__tests__/pathValidation.test.js +30 -1
- package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
- package/dist/src/services/SubagentGenerator.client-profiles.d.ts +258 -0
- package/dist/src/services/SubagentGenerator.client-profiles.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.client-profiles.js +260 -0
- package/dist/src/services/SubagentGenerator.client-profiles.js.map +1 -0
- package/dist/src/services/SubagentGenerator.d.ts +19 -41
- package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
- package/dist/src/services/SubagentGenerator.helpers.d.ts +64 -0
- package/dist/src/services/SubagentGenerator.helpers.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.helpers.js +228 -0
- package/dist/src/services/SubagentGenerator.helpers.js.map +1 -0
- package/dist/src/services/SubagentGenerator.js +66 -208
- package/dist/src/services/SubagentGenerator.js.map +1 -1
- package/dist/src/services/SubagentGenerator.types.d.ts +45 -0
- package/dist/src/services/SubagentGenerator.types.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.types.js +14 -0
- package/dist/src/services/SubagentGenerator.types.js.map +1 -0
- package/dist/src/services/TransformationService.d.ts +18 -61
- package/dist/src/services/TransformationService.d.ts.map +1 -1
- package/dist/src/services/TransformationService.js +29 -17
- package/dist/src/services/TransformationService.js.map +1 -1
- package/dist/src/services/TransformationService.types.d.ts +74 -0
- package/dist/src/services/TransformationService.types.d.ts.map +1 -0
- package/dist/src/services/TransformationService.types.js +8 -0
- package/dist/src/services/TransformationService.types.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.d.ts +5 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.js +72 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.d.ts +2 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.js +61 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js +155 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -1
- package/dist/src/services/__tests__/TransformationService.test.js +48 -0
- package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
- package/dist/src/services/agent-pack/agent-pack.test.js +1 -0
- package/dist/src/services/agent-pack/agent-pack.test.js.map +1 -1
- package/dist/src/services/agent-pack/prompt-source.d.ts +1 -1
- package/dist/src/services/agent-pack/prompt-source.d.ts.map +1 -1
- package/dist/src/services/agent-pack/prompt-source.js +10 -3
- package/dist/src/services/agent-pack/prompt-source.js.map +1 -1
- package/dist/src/services/agent-pack/types.d.ts +26 -2
- package/dist/src/services/agent-pack/types.d.ts.map +1 -1
- package/dist/src/services/agent-pack/types.js +13 -0
- package/dist/src/services/agent-pack/types.js.map +1 -1
- package/dist/src/services/agent-tool-profile.d.ts.map +1 -1
- package/dist/src/services/agent-tool-profile.js +7 -0
- package/dist/src/services/agent-tool-profile.js.map +1 -1
- package/dist/src/services/agent-tool-profile.test.js +2 -2
- package/dist/src/services/skill-content-comparison.d.ts +71 -0
- package/dist/src/services/skill-content-comparison.d.ts.map +1 -0
- package/dist/src/services/skill-content-comparison.js +90 -0
- package/dist/src/services/skill-content-comparison.js.map +1 -0
- package/dist/src/services/skill-content-comparison.test.d.ts +6 -0
- package/dist/src/services/skill-content-comparison.test.d.ts.map +1 -0
- package/dist/src/services/skill-content-comparison.test.js +83 -0
- package/dist/src/services/skill-content-comparison.test.js.map +1 -0
- package/dist/src/services/skill-identity-classification.d.ts +202 -0
- package/dist/src/services/skill-identity-classification.d.ts.map +1 -0
- package/dist/src/services/skill-identity-classification.js +295 -0
- package/dist/src/services/skill-identity-classification.js.map +1 -0
- package/dist/src/services/skill-identity-classification.test.d.ts +6 -0
- package/dist/src/services/skill-identity-classification.test.d.ts.map +1 -0
- package/dist/src/services/skill-identity-classification.test.js +314 -0
- package/dist/src/services/skill-identity-classification.test.js.map +1 -0
- package/dist/src/services/skill-installation.content.d.ts.map +1 -1
- package/dist/src/services/skill-installation.content.js +6 -1
- package/dist/src/services/skill-installation.content.js.map +1 -1
- package/dist/src/services/skill-installation.helpers.d.ts +8 -15
- package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
- package/dist/src/services/skill-installation.helpers.js +11 -105
- package/dist/src/services/skill-installation.helpers.js.map +1 -1
- package/dist/src/services/skill-installation.helpers.test.js +106 -1
- package/dist/src/services/skill-installation.helpers.test.js.map +1 -1
- package/dist/src/services/skill-installation.service.js +1 -1
- package/dist/src/services/skill-installation.service.js.map +1 -1
- package/dist/src/services/skill-installation.types.d.ts +33 -0
- package/dist/src/services/skill-installation.types.d.ts.map +1 -1
- package/dist/src/services/skill-installation.types.js.map +1 -1
- package/dist/src/services/skill-installation.uninstall.d.ts +84 -0
- package/dist/src/services/skill-installation.uninstall.d.ts.map +1 -0
- package/dist/src/services/skill-installation.uninstall.js +252 -0
- package/dist/src/services/skill-installation.uninstall.js.map +1 -0
- package/dist/src/services/skill-manifest.d.ts +41 -0
- package/dist/src/services/skill-manifest.d.ts.map +1 -1
- package/dist/src/services/skill-manifest.js +93 -0
- package/dist/src/services/skill-manifest.js.map +1 -1
- package/dist/src/services/skill-manifest.test.js +27 -0
- package/dist/src/services/skill-manifest.test.js.map +1 -1
- package/dist/src/sync/SyncEngine.d.ts.map +1 -1
- package/dist/src/sync/SyncEngine.js +69 -77
- package/dist/src/sync/SyncEngine.js.map +1 -1
- package/dist/src/telemetry/agent-marker.d.ts +8 -0
- package/dist/src/telemetry/agent-marker.d.ts.map +1 -1
- package/dist/src/telemetry/agent-marker.js +7 -0
- package/dist/src/telemetry/agent-marker.js.map +1 -1
- package/dist/src/telemetry/agent-marker.test.js +7 -1
- package/dist/src/telemetry/agent-marker.test.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +1 -1
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/wrap.d.ts +6 -0
- package/dist/src/telemetry/wrap.d.ts.map +1 -1
- package/dist/src/telemetry/wrap.js +65 -10
- package/dist/src/telemetry/wrap.js.map +1 -1
- package/dist/src/telemetry/wrap.test.js +81 -1
- package/dist/src/telemetry/wrap.test.js.map +1 -1
- package/dist/src/telemetry/wrap.tool-call-sink.test.d.ts +26 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.d.ts.map +1 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.js +162 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.js.map +1 -0
- package/dist/src/types/skill.d.ts +9 -1
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/version-check.d.ts +61 -0
- package/dist/src/utils/version-check.d.ts.map +1 -1
- package/dist/src/utils/version-check.js +78 -1
- package/dist/src/utils/version-check.js.map +1 -1
- package/dist/src/utils/version-check.test.js +130 -1
- package/dist/src/utils/version-check.test.js.map +1 -1
- package/dist/tests/db/migration-runner-race.test.js +19 -9
- package/dist/tests/db/migration-runner-race.test.js.map +1 -1
- package/dist/tests/install/fan-out.test.js +27 -0
- package/dist/tests/install/fan-out.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.abort.test.js +15 -11
- package/dist/tests/sync/SyncEngine.abort.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.status.test.js +1 -1
- package/dist/tests/sync/SyncEngine.status.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.test.d.ts +11 -2
- package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -1
- package/dist/tests/sync/SyncEngine.test.js +164 -13
- package/dist/tests/sync/SyncEngine.test.js.map +1 -1
- package/dist/tests/unit/migrations/migration-v18.test.d.ts +16 -0
- package/dist/tests/unit/migrations/migration-v18.test.d.ts.map +1 -0
- package/dist/tests/unit/migrations/migration-v18.test.js +192 -0
- package/dist/tests/unit/migrations/migration-v18.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.content.test.js +65 -1
- package/dist/tests/unit/services/skill-installation.content.test.js.map +1 -1
- package/dist/tests/unit/services/skill-installation.service.test.js +9 -8
- package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
- package/dist/tests/unit/sync-engine.source-aware.test.js +5 -5
- package/dist/tests/unit/sync-engine.source-aware.test.js.map +1 -1
- package/package.json +2 -2
package/dist/src/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @skillsmith/core - Core functionality for skill discovery
|
|
3
3
|
*/
|
|
4
4
|
// Version
|
|
5
|
-
export const VERSION = '0.12.
|
|
5
|
+
export const VERSION = '0.12.2';
|
|
6
6
|
// ============================================================================
|
|
7
7
|
// Grouped Exports from Barrel Files
|
|
8
8
|
// ============================================================================
|
|
@@ -88,7 +88,7 @@ export { RateLimiter, InMemoryRateLimitStorage, createRateLimiterFromPreset, RAT
|
|
|
88
88
|
// Audit Logging (SMI-733)
|
|
89
89
|
export { AuditLogger, MIN_RETENTION_DAYS, MAX_RETENTION_DAYS } from './security/AuditLogger.js';
|
|
90
90
|
// Remote telemetry for install events (SMI-4182) + search events (SMI-5193)
|
|
91
|
-
export { emitInstallEvent, emitSearchEvent } from './audit/remote-audit.js';
|
|
91
|
+
export { emitInstallEvent, emitSearchEvent, emitToolCallEvent, setTelemetryIdentityProvider, setTelemetryIdentityInvalidationHandler, getTelemetryEmitStats, } from './audit/remote-audit.js';
|
|
92
92
|
// Cross-ecosystem compatibility slug vocabulary (SMI-5178)
|
|
93
93
|
export { COMPATIBILITY_SLUGS, COMPATIBILITY_LABELS, BROWSE_ONLY_SLUGS, CLIENT_TO_COMPATIBILITY_SLUG, compatibilityLabel, } from './compatibility/slugs.js';
|
|
94
94
|
// Local skill indexing helper (SMI-4587 Wave 1 PR #4 / NEW-E-2)
|
|
@@ -104,11 +104,14 @@ export { loadConfig, saveConfig, getApiKey, getApiBaseUrl, getConfigDir, getConf
|
|
|
104
104
|
export { storeCredentials, loadCredentials, clearCredentials, refreshAccessToken, } from './config/token-credentials.js';
|
|
105
105
|
export { tryRefreshToken, loadStoredAccessToken, resolveFreshAccessToken, } from './api/client.token-refresh.js';
|
|
106
106
|
// SMI-5391: Cross-harness inventory device identity + local consent/throttle gate
|
|
107
|
-
|
|
107
|
+
// SMI-6362 (D-7): getOrCreateInstallId was added by SMI-5531 but never had a
|
|
108
|
+
// public export or a caller -- wiring it into context.async.ts's distinctId
|
|
109
|
+
// is exactly what it was built for.
|
|
110
|
+
export { getDeviceId, getOrCreateDeviceId, getOrCreateInstallId, setDeviceLabel, forgetDevice, isInventorySyncDisabledLocally, getLastInventoryPushAt, recordInventoryPush, shouldAutoPush, } from './config/device-identity.js';
|
|
108
111
|
// SMI-5541: Continuous-audit email digest — background auto-notify throttle/dedup state
|
|
109
112
|
export { getAuditNotifyState, recordAuditNotify, } from './config/audit-notify-state.js';
|
|
110
113
|
// Version Check (SMI-1952)
|
|
111
|
-
export { checkForUpdates, formatUpdateNotification, resolveUpdateNotificationClient, } from './utils/version-check.js';
|
|
114
|
+
export { checkForUpdates, formatUpdateNotification, resolveUpdateNotificationClient, agentInstallRemediationCommand, checkCursorMcpArtifact, } from './utils/version-check.js';
|
|
112
115
|
// GitHub URL Parsing (SMI-2171)
|
|
113
116
|
export { parseRepoUrl, isGitHubUrl } from './utils/github-url.js';
|
|
114
117
|
// SMI-2274: Safe filesystem operations
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,13 +23,14 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { type MergeOptions, type MergeResult } from './agent-config-merge.types.js';
|
|
25
25
|
/**
|
|
26
|
-
* Merge a
|
|
26
|
+
* Merge a Skillsmith MCP server entry into a JSON config file at
|
|
27
27
|
* `opts.path`, under `opts.keyPath` (e.g. `['mcpServers']`).
|
|
28
28
|
*
|
|
29
29
|
* Never performs a whole-file write of unrelated keys — the file is parsed,
|
|
30
|
-
* exactly one nested key (`
|
|
31
|
-
*
|
|
32
|
-
*
|
|
30
|
+
* exactly one nested key (`opts.entryKey`, defaulting to `'skillsmith'` —
|
|
31
|
+
* see `MergeOptions.entryKey`) is set at `[...keyPath, entryKey]`, and the
|
|
32
|
+
* WHOLE document (all other keys untouched) is re-serialized. A missing
|
|
33
|
+
* file is treated as `{}` (created fresh).
|
|
33
34
|
*/
|
|
34
35
|
export declare function mergeJsonMcpEntry(opts: MergeOptions & {
|
|
35
36
|
keyPath: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-config-merge.json.d.ts","sourceRoot":"","sources":["../../../src/install/agent-config-merge.json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAA;AAuCtC
|
|
1
|
+
{"version":3,"file":"agent-config-merge.json.d.ts","sourceRoot":"","sources":["../../../src/install/agent-config-merge.json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAA;AAuCtC;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,GAAG;IAAE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAClD,WAAW,CA+Eb"}
|
|
@@ -57,16 +57,17 @@ function writeBackup(sourcePath, backupDir) {
|
|
|
57
57
|
return backupPath;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
|
-
* Merge a
|
|
60
|
+
* Merge a Skillsmith MCP server entry into a JSON config file at
|
|
61
61
|
* `opts.path`, under `opts.keyPath` (e.g. `['mcpServers']`).
|
|
62
62
|
*
|
|
63
63
|
* Never performs a whole-file write of unrelated keys — the file is parsed,
|
|
64
|
-
* exactly one nested key (`
|
|
65
|
-
*
|
|
66
|
-
*
|
|
64
|
+
* exactly one nested key (`opts.entryKey`, defaulting to `'skillsmith'` —
|
|
65
|
+
* see `MergeOptions.entryKey`) is set at `[...keyPath, entryKey]`, and the
|
|
66
|
+
* WHOLE document (all other keys untouched) is re-serialized. A missing
|
|
67
|
+
* file is treated as `{}` (created fresh).
|
|
67
68
|
*/
|
|
68
69
|
export function mergeJsonMcpEntry(opts) {
|
|
69
|
-
const { path, keyPath, entryValue, backupDir, force = false, alreadyBackedUpPaths } = opts;
|
|
70
|
+
const { path, keyPath, entryValue, backupDir, force = false, alreadyBackedUpPaths, entryKey = 'skillsmith', } = opts;
|
|
70
71
|
let doc = {};
|
|
71
72
|
let existed = false;
|
|
72
73
|
if (existsSync(path)) {
|
|
@@ -91,7 +92,7 @@ export function mergeJsonMcpEntry(opts) {
|
|
|
91
92
|
}
|
|
92
93
|
const container = getAtPath(doc, keyPath);
|
|
93
94
|
const existingEntry = container && typeof container === 'object' && !Array.isArray(container)
|
|
94
|
-
? container
|
|
95
|
+
? container[entryKey]
|
|
95
96
|
: undefined;
|
|
96
97
|
if (existingEntry !== undefined) {
|
|
97
98
|
if (deepEqualJson(existingEntry, entryValue)) {
|
|
@@ -112,13 +113,13 @@ export function mergeJsonMcpEntry(opts) {
|
|
|
112
113
|
// "preserve-existing" suites.
|
|
113
114
|
const backupPath = existed && shouldBackup(path, alreadyBackedUpPaths) ? writeBackup(path, backupDir) : null;
|
|
114
115
|
markBackedUp(path, alreadyBackedUpPaths);
|
|
115
|
-
setAtPath(doc, keyPath, { ...container,
|
|
116
|
+
setAtPath(doc, keyPath, { ...container, [entryKey]: entryValue });
|
|
116
117
|
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
117
118
|
writeFileSync(path, JSON.stringify(doc, null, 2) + '\n', { mode: 0o600 });
|
|
118
119
|
return { status: 'updated', path, backupPath };
|
|
119
120
|
}
|
|
120
121
|
// No existing entry — safe create. Still back up the FILE (not the
|
|
121
|
-
//
|
|
122
|
+
// entryKey, which didn't exist) so a foreign file with unrelated
|
|
122
123
|
// content the user cares about is always one restore away — unless an
|
|
123
124
|
// earlier merge THIS RUN already captured the pre-install state.
|
|
124
125
|
const backupPath = existed && shouldBackup(path, alreadyBackedUpPaths) ? writeBackup(path, backupDir) : null;
|
|
@@ -126,7 +127,7 @@ export function mergeJsonMcpEntry(opts) {
|
|
|
126
127
|
const currentContainer = container && typeof container === 'object' && !Array.isArray(container)
|
|
127
128
|
? container
|
|
128
129
|
: {};
|
|
129
|
-
setAtPath(doc, keyPath, { ...currentContainer,
|
|
130
|
+
setAtPath(doc, keyPath, { ...currentContainer, [entryKey]: entryValue });
|
|
130
131
|
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
131
132
|
writeFileSync(path, JSON.stringify(doc, null, 2) + '\n', { mode: 0o600 });
|
|
132
133
|
return { status: 'created', path, backupPath };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-config-merge.json.js","sourceRoot":"","sources":["../../../src/install/agent-config-merge.json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,YAAY,GAGb,MAAM,+BAA+B,CAAA;AAEtC,oFAAoF;AACpF,SAAS,SAAS,CAAC,IAA6B,EAAE,OAA0B;IAC1E,IAAI,GAAG,GAAY,IAAI,CAAA;IACvB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;QAC3E,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,SAAS,CAChB,IAA6B,EAC7B,OAA0B,EAC1B,KAAc;IAEd,IAAI,GAAG,GAA4B,IAAI,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;QACD,GAAG,GAAG,GAAG,CAAC,GAAG,CAA4B,CAAA;IAC3C,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC3C,IAAI,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB,EAAE,SAAiB;IACxD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAA;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,QAAQ,MAAM,CAAC,CAAA;IAC9D,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7E,OAAO,UAAU,CAAA;AACnB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"agent-config-merge.json.js","sourceRoot":"","sources":["../../../src/install/agent-config-merge.json.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export interface MergeResult {
|
|
|
30
30
|
}
|
|
31
31
|
export interface MergeOptions {
|
|
32
32
|
path: string;
|
|
33
|
-
/** The value to install under
|
|
33
|
+
/** The value to install under `entryKey` (defaults to `'skillsmith'`). */
|
|
34
34
|
entryValue: Record<string, unknown>;
|
|
35
35
|
/** Directory backups are written into. Caller ensures it exists. */
|
|
36
36
|
backupDir: string;
|
|
@@ -52,6 +52,16 @@ export interface MergeOptions {
|
|
|
52
52
|
* backed up once per run, capturing genuine pre-install content.
|
|
53
53
|
*/
|
|
54
54
|
alreadyBackedUpPaths?: Set<string>;
|
|
55
|
+
/**
|
|
56
|
+
* JSON object key `entryValue` is installed under. Defaults to
|
|
57
|
+
* `'skillsmith'` — the key every `mergeJsonMcpEntry` caller except Cursor
|
|
58
|
+
* still uses (unchanged, out of scope for SMI-6279 Wave 9). Cursor passes
|
|
59
|
+
* `'@skillsmith/mcp-server'` instead, matching the key its own
|
|
60
|
+
* human-facing docs snippet uses — see `agent-pack-installer.entry.ts`'s
|
|
61
|
+
* `CURSOR_MCP_ENTRY_KEY` for the full rationale. Only meaningful for
|
|
62
|
+
* `mergeJsonMcpEntry` (the YAML/TOML-block merge helpers don't read it).
|
|
63
|
+
*/
|
|
64
|
+
entryKey?: string;
|
|
55
65
|
}
|
|
56
66
|
/**
|
|
57
67
|
* Decide whether a merge should take a backup of `path` right now: only if
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-config-merge.types.d.ts","sourceRoot":"","sources":["../../../src/install/agent-config-merge.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAA;AAEpF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gFAAgF;IAChF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,
|
|
1
|
+
{"version":3,"file":"agent-config-merge.types.d.ts","sourceRoot":"","sources":["../../../src/install/agent-config-merge.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAA;AAEpF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gFAAgF;IAChF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,OAAO,CAEjG;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,CAE9F;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAa5D;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAkB7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-config-merge.types.js","sourceRoot":"","sources":["../../../src/install/agent-config-merge.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"agent-config-merge.types.js","sourceRoot":"","sources":["../../../src/install/agent-config-merge.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,10 +44,38 @@
|
|
|
44
44
|
* `agent-pack-installer.entry.ts`). Agent markdown lives at
|
|
45
45
|
* `~/.config/opencode/agents/` — plural (opencode.ai/docs/agents/; the
|
|
46
46
|
* earlier singular `agent/` guess was wrong).
|
|
47
|
+
* - antigravity (SMI-6275 Wave 5): HIGH — `.agents/mcp_config.json`,
|
|
48
|
+
* standard `mcpServers` object shape, verified 2026-08-30 via live web
|
|
49
|
+
* search against antigravity.google/docs/ide/mcp/ and
|
|
50
|
+
* antigravity.google/docs/cli/mcp/ (both explicitly document the
|
|
51
|
+
* workspace-local path and the shared global sibling
|
|
52
|
+
* `~/.gemini/config/mcp_config.json`, corroborated by two independent
|
|
53
|
+
* third-party sources — Google Cloud Community/Medium and a Composio
|
|
54
|
+
* how-to). NOT listed in {@link AGENT_MCP_TARGETS} below, unlike every
|
|
55
|
+
* other row in this list — see `McpHarnessId`'s own doc comment for why,
|
|
56
|
+
* and `agent-pack-installer.antigravity-mcp.ts` for the dedicated
|
|
57
|
+
* writer this wave adds instead.
|
|
47
58
|
*/
|
|
48
59
|
import type { HarnessId } from '../services/agent-pack/index.js';
|
|
49
|
-
/**
|
|
50
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Harnesses that can receive an MCP server registration via
|
|
62
|
+
* {@link AGENT_MCP_TARGETS}'s HOME-anchored `Record` shape (7 targets).
|
|
63
|
+
*
|
|
64
|
+
* `antigravity` is EXCLUDED here (SMI-6275 Wave 5) even though it is a
|
|
65
|
+
* {@link HarnessId} member — its `.agents/mcp_config.json` is
|
|
66
|
+
* WORKSPACE-anchored (relative to the workspace root Wave 4's
|
|
67
|
+
* `resolveScopedSkillsDir()` resolves), not home-anchored like every other
|
|
68
|
+
* `McpConfigTarget.path` in this file, so it structurally cannot be a value
|
|
69
|
+
* in a `Record<McpHarnessId, McpConfigTarget>` whose every consumer
|
|
70
|
+
* (`relocateUnderHome`, `agent-manifest-path-guard.ts`'s home-relative
|
|
71
|
+
* suffix computation) assumes a home-anchored path. This is the same
|
|
72
|
+
* structural reason Cursor got its own dedicated installer split
|
|
73
|
+
* (`agent-pack-installer.cursor-mcp.ts`, SMI-6279 Wave 9) rather than a
|
|
74
|
+
* generic-path `AGENT_MCP_TARGETS` entry — AntiGravity gets the same
|
|
75
|
+
* treatment: `agent-pack-installer.antigravity-mcp.ts` owns its path
|
|
76
|
+
* resolution + entry-value shape entirely outside this table.
|
|
77
|
+
*/
|
|
78
|
+
export type McpHarnessId = Exclude<HarnessId, 'antigravity'> | 'windsurf' | 'hermes';
|
|
51
79
|
/** Config-file format the merge helper must speak for a given target. */
|
|
52
80
|
export type ConfigFormat = 'json' | 'yaml' | 'toml-block';
|
|
53
81
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-harness-targets.d.ts","sourceRoot":"","sources":["../../../src/install/agent-harness-targets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-harness-targets.d.ts","sourceRoot":"","sources":["../../../src/install/agent-harness-targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEpF,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAA;AAEzD;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,CAAA;IAClB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAA;IAC3C,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,YAAY,CAAA;IAC1B,sEAAsE;IACtE,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAID,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CA2C7E,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC,CA2B7E,CAAA;AAED,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC,MAAM,CAAC,aAAa,GAAG,QAAQ,GAAG,OAAO,EAAE,iBAAiB,CAAC,CAyC9D,CAAA;AAED,4GAA4G;AAC5G,eAAO,MAAM,sBAAsB,QAA+B,CAAA"}
|
|
@@ -44,6 +44,17 @@
|
|
|
44
44
|
* `agent-pack-installer.entry.ts`). Agent markdown lives at
|
|
45
45
|
* `~/.config/opencode/agents/` — plural (opencode.ai/docs/agents/; the
|
|
46
46
|
* earlier singular `agent/` guess was wrong).
|
|
47
|
+
* - antigravity (SMI-6275 Wave 5): HIGH — `.agents/mcp_config.json`,
|
|
48
|
+
* standard `mcpServers` object shape, verified 2026-08-30 via live web
|
|
49
|
+
* search against antigravity.google/docs/ide/mcp/ and
|
|
50
|
+
* antigravity.google/docs/cli/mcp/ (both explicitly document the
|
|
51
|
+
* workspace-local path and the shared global sibling
|
|
52
|
+
* `~/.gemini/config/mcp_config.json`, corroborated by two independent
|
|
53
|
+
* third-party sources — Google Cloud Community/Medium and a Composio
|
|
54
|
+
* how-to). NOT listed in {@link AGENT_MCP_TARGETS} below, unlike every
|
|
55
|
+
* other row in this list — see `McpHarnessId`'s own doc comment for why,
|
|
56
|
+
* and `agent-pack-installer.antigravity-mcp.ts` for the dedicated
|
|
57
|
+
* writer this wave adds instead.
|
|
47
58
|
*/
|
|
48
59
|
import { homedir } from 'node:os';
|
|
49
60
|
import { join } from 'node:path';
|
|
@@ -121,6 +132,12 @@ export const AGENT_SHIM_TARGETS = {
|
|
|
121
132
|
// ~/.codex/config.toml, not a standalone file — see AGENT_MCP_TARGETS.codex
|
|
122
133
|
// and agent-config-merge.toml-block.ts. No separate ShimTarget.
|
|
123
134
|
codex: null,
|
|
135
|
+
// SMI-6275 Wave 5 decision (stated, not an oversight): no named-agent shim
|
|
136
|
+
// for AntiGravity this wave — no verified evidence of a shim/companion-file
|
|
137
|
+
// convention distinct from `.agents/mcp_config.json` turned up during this
|
|
138
|
+
// wave's research. See HOOK_HARNESSES's doc comment (services/agent-pack/types.ts)
|
|
139
|
+
// for the parallel hooks decision.
|
|
140
|
+
antigravity: null,
|
|
124
141
|
};
|
|
125
142
|
/** Hook install targets — only harnesses with a real SessionStart hook (HOOK_HARNESSES). */
|
|
126
143
|
export const AGENT_HOOK_TARGETS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-harness-targets.js","sourceRoot":"","sources":["../../../src/install/agent-harness-targets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-harness-targets.js","sourceRoot":"","sources":["../../../src/install/agent-harness-targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,13 +37,38 @@
|
|
|
37
37
|
* with one of a dozen known per-harness relative locations" — a tampered
|
|
38
38
|
* manifest can no longer name `/etc/passwd` or `~/.ssh/id_rsa`.
|
|
39
39
|
*
|
|
40
|
+
* SMI-6275 Wave 5 addendum — a SECOND, WORKSPACE-relative allowlist. Every
|
|
41
|
+
* suffix above is relative to `os.homedir()`, which is correct for every
|
|
42
|
+
* OTHER installer target but not for AntiGravity's two workspace-scoped
|
|
43
|
+
* artifacts (the `.agents/skills/skillsmith-agent/SKILL.md` pack copy, ADR-139
|
|
44
|
+
* / SMI-6274 Wave 4, and `.agents/mcp_config.json`, this wave) — both are
|
|
45
|
+
* relative to a WORKSPACE root, which is any directory a user ran
|
|
46
|
+
* `agent install --scope workspace` from, not a statically enumerable set
|
|
47
|
+
* the way `CLIENT_NATIVE_PATHS` is. There is deliberately no attempt to
|
|
48
|
+
* validate "is this THE workspace root this manifest entry was actually
|
|
49
|
+
* written under" (that would require persisting and trusting the workspace
|
|
50
|
+
* root itself, which is exactly the kind of manifest-supplied data this
|
|
51
|
+
* guard exists to NOT trust) — instead the check narrows to the fixed
|
|
52
|
+
* RELATIVE suffix each artifact is known to end with, the same "shrink the
|
|
53
|
+
* blast radius to a known relative location" philosophy as the home-relative
|
|
54
|
+
* check above, applied to a workspace base instead of a home base. This
|
|
55
|
+
* still cannot match `/etc/passwd` or `~/.ssh/id_rsa`; it CAN match any file
|
|
56
|
+
* on disk literally named `.agents/mcp_config.json` (or the SKILL.md pack
|
|
57
|
+
* path) regardless of which workspace — a real but bounded reduction from
|
|
58
|
+
* "any file the process can write," consistent with this module's existing
|
|
59
|
+
* standard.
|
|
60
|
+
*
|
|
40
61
|
* @module @skillsmith/core/install/agent-manifest-path-guard
|
|
41
62
|
*/
|
|
42
63
|
/**
|
|
43
64
|
* True when `path` structurally matches one of the installer's known
|
|
44
|
-
* relative target locations (see module header)
|
|
45
|
-
*
|
|
46
|
-
*
|
|
65
|
+
* relative target locations (see module header) — either HOME-relative
|
|
66
|
+
* (every non-AntiGravity target, plus AntiGravity's own global skills dir
|
|
67
|
+
* entry in `CLIENT_NATIVE_PATHS`) or, per the SMI-6275 Wave 5 addendum,
|
|
68
|
+
* WORKSPACE-relative (AntiGravity's `.agents/`-scoped skill pack and MCP
|
|
69
|
+
* config). Normalizes via `path.resolve` first so a `..`-laden path can't
|
|
70
|
+
* dodge either suffix check by embedding traversal segments before the
|
|
71
|
+
* matched tail.
|
|
47
72
|
*/
|
|
48
73
|
export declare function isAllowedManifestEntryPath(path: string): boolean;
|
|
49
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-manifest-path-guard.d.ts","sourceRoot":"","sources":["../../../src/install/agent-manifest-path-guard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-manifest-path-guard.d.ts","sourceRoot":"","sources":["../../../src/install/agent-manifest-path-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAoFH;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAShE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAIvE"}
|
|
@@ -37,6 +37,27 @@
|
|
|
37
37
|
* with one of a dozen known per-harness relative locations" — a tampered
|
|
38
38
|
* manifest can no longer name `/etc/passwd` or `~/.ssh/id_rsa`.
|
|
39
39
|
*
|
|
40
|
+
* SMI-6275 Wave 5 addendum — a SECOND, WORKSPACE-relative allowlist. Every
|
|
41
|
+
* suffix above is relative to `os.homedir()`, which is correct for every
|
|
42
|
+
* OTHER installer target but not for AntiGravity's two workspace-scoped
|
|
43
|
+
* artifacts (the `.agents/skills/skillsmith-agent/SKILL.md` pack copy, ADR-139
|
|
44
|
+
* / SMI-6274 Wave 4, and `.agents/mcp_config.json`, this wave) — both are
|
|
45
|
+
* relative to a WORKSPACE root, which is any directory a user ran
|
|
46
|
+
* `agent install --scope workspace` from, not a statically enumerable set
|
|
47
|
+
* the way `CLIENT_NATIVE_PATHS` is. There is deliberately no attempt to
|
|
48
|
+
* validate "is this THE workspace root this manifest entry was actually
|
|
49
|
+
* written under" (that would require persisting and trusting the workspace
|
|
50
|
+
* root itself, which is exactly the kind of manifest-supplied data this
|
|
51
|
+
* guard exists to NOT trust) — instead the check narrows to the fixed
|
|
52
|
+
* RELATIVE suffix each artifact is known to end with, the same "shrink the
|
|
53
|
+
* blast radius to a known relative location" philosophy as the home-relative
|
|
54
|
+
* check above, applied to a workspace base instead of a home base. This
|
|
55
|
+
* still cannot match `/etc/passwd` or `~/.ssh/id_rsa`; it CAN match any file
|
|
56
|
+
* on disk literally named `.agents/mcp_config.json` (or the SKILL.md pack
|
|
57
|
+
* path) regardless of which workspace — a real but bounded reduction from
|
|
58
|
+
* "any file the process can write," consistent with this module's existing
|
|
59
|
+
* standard.
|
|
60
|
+
*
|
|
40
61
|
* @module @skillsmith/core/install/agent-manifest-path-guard
|
|
41
62
|
*/
|
|
42
63
|
import { homedir } from 'node:os';
|
|
@@ -44,7 +65,9 @@ import { join, relative, resolve, sep } from 'node:path';
|
|
|
44
65
|
import { AGENT_PACK_SKILL_NAME } from '../services/agent-pack/index.js';
|
|
45
66
|
import { AGENT_HOOK_TARGETS, AGENT_MCP_TARGETS, AGENT_SHIM_TARGETS, } from './agent-harness-targets.js';
|
|
46
67
|
import { getAgentInstallBackupsDir } from './agent-manifest.js';
|
|
68
|
+
import { ANTIGRAVITY_MCP_CONFIG_RELATIVE_SEGMENTS } from './agent-pack-installer.antigravity-mcp.js';
|
|
47
69
|
import { CLIENT_NATIVE_PATHS } from './paths.js';
|
|
70
|
+
import { CLIENT_WORKSPACE_SEGMENTS } from './workspace-scope.js';
|
|
48
71
|
/** Relative-to-`os.homedir()` suffix for every path the installer can ever write. */
|
|
49
72
|
function computeAllowedPathSuffixes() {
|
|
50
73
|
const suffixes = new Set();
|
|
@@ -82,11 +105,40 @@ function allowedPathSuffixes() {
|
|
|
82
105
|
cachedSuffixes = computeAllowedPathSuffixes();
|
|
83
106
|
return cachedSuffixes;
|
|
84
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Relative-to-WORKSPACE-ROOT suffix for AntiGravity's two workspace-scoped
|
|
110
|
+
* artifacts (SMI-6275 Wave 5 addendum — see module header). Both segments
|
|
111
|
+
* are sourced from the same constants the writers themselves use
|
|
112
|
+
* (`CLIENT_WORKSPACE_SEGMENTS.antigravity`, `AGENT_PACK_SKILL_NAME`,
|
|
113
|
+
* `ANTIGRAVITY_MCP_CONFIG_RELATIVE_SEGMENTS`) rather than hand-duplicated
|
|
114
|
+
* literals, so this allowlist can never silently drift from what
|
|
115
|
+
* `installAgentPack` actually writes.
|
|
116
|
+
*/
|
|
117
|
+
function computeAllowedWorkspaceRelativeSuffixes() {
|
|
118
|
+
const suffixes = new Set();
|
|
119
|
+
const antigravitySkillsSegments = CLIENT_WORKSPACE_SEGMENTS.antigravity;
|
|
120
|
+
if (antigravitySkillsSegments) {
|
|
121
|
+
suffixes.add(join(...antigravitySkillsSegments, AGENT_PACK_SKILL_NAME, 'SKILL.md'));
|
|
122
|
+
}
|
|
123
|
+
suffixes.add(join(...ANTIGRAVITY_MCP_CONFIG_RELATIVE_SEGMENTS));
|
|
124
|
+
return suffixes;
|
|
125
|
+
}
|
|
126
|
+
let cachedWorkspaceRelativeSuffixes = null;
|
|
127
|
+
function allowedWorkspaceRelativeSuffixes() {
|
|
128
|
+
if (!cachedWorkspaceRelativeSuffixes) {
|
|
129
|
+
cachedWorkspaceRelativeSuffixes = computeAllowedWorkspaceRelativeSuffixes();
|
|
130
|
+
}
|
|
131
|
+
return cachedWorkspaceRelativeSuffixes;
|
|
132
|
+
}
|
|
85
133
|
/**
|
|
86
134
|
* True when `path` structurally matches one of the installer's known
|
|
87
|
-
* relative target locations (see module header)
|
|
88
|
-
*
|
|
89
|
-
*
|
|
135
|
+
* relative target locations (see module header) — either HOME-relative
|
|
136
|
+
* (every non-AntiGravity target, plus AntiGravity's own global skills dir
|
|
137
|
+
* entry in `CLIENT_NATIVE_PATHS`) or, per the SMI-6275 Wave 5 addendum,
|
|
138
|
+
* WORKSPACE-relative (AntiGravity's `.agents/`-scoped skill pack and MCP
|
|
139
|
+
* config). Normalizes via `path.resolve` first so a `..`-laden path can't
|
|
140
|
+
* dodge either suffix check by embedding traversal segments before the
|
|
141
|
+
* matched tail.
|
|
90
142
|
*/
|
|
91
143
|
export function isAllowedManifestEntryPath(path) {
|
|
92
144
|
const normalized = resolve(path);
|
|
@@ -94,6 +146,10 @@ export function isAllowedManifestEntryPath(path) {
|
|
|
94
146
|
if (normalized.endsWith(sep + suffix) || normalized === suffix)
|
|
95
147
|
return true;
|
|
96
148
|
}
|
|
149
|
+
for (const suffix of allowedWorkspaceRelativeSuffixes()) {
|
|
150
|
+
if (normalized.endsWith(sep + suffix))
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
97
153
|
return false;
|
|
98
154
|
}
|
|
99
155
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-manifest-path-guard.js","sourceRoot":"","sources":["../../../src/install/agent-manifest-path-guard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-manifest-path-guard.js","sourceRoot":"","sources":["../../../src/install/agent-manifest-path-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,wCAAwC,EAAE,MAAM,2CAA2C,CAAA;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAEhE,qFAAqF;AACrF,SAAS,0BAA0B;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAClC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,MAAM,SAAS,GAAG,CAAC,OAAe,EAAQ,EAAE;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACnC,yEAAyE;QACzE,qEAAqE;QACrE,wEAAwE;QACxE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE;YAAE,OAAM;QAC9C,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAA;IAED,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC5D,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAA;IAChE,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM;YAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAA;QACrD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAA;QACnD,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC9B,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,IAAI,cAAc,GAA+B,IAAI,CAAA;AAErD,2FAA2F;AAC3F,SAAS,mBAAmB;IAC1B,IAAI,CAAC,cAAc;QAAE,cAAc,GAAG,0BAA0B,EAAE,CAAA;IAClE,OAAO,cAAc,CAAA;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,uCAAuC;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAClC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC,WAAW,CAAA;IACvE,IAAI,yBAAyB,EAAE,CAAC;QAC9B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,yBAAyB,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAA;IACrF,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,wCAAwC,CAAC,CAAC,CAAA;IAC/D,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,IAAI,+BAA+B,GAA+B,IAAI,CAAA;AAEtE,SAAS,gCAAgC;IACvC,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACrC,+BAA+B,GAAG,uCAAuC,EAAE,CAAA;IAC7E,CAAC;IACD,OAAO,+BAA+B,CAAA;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,UAAU,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;IAC7E,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,gCAAgC,EAAE,EAAE,CAAC;QACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;IACpD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACtC,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,CAAA;AAC7E,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* (SMI-5456 governance follow-up, code review 2026-07-01).
|
|
4
4
|
* @module @skillsmith/core/install/agent-manifest-path-guard.test
|
|
5
5
|
*/
|
|
6
|
-
import { homedir } from 'node:os';
|
|
6
|
+
import { homedir, tmpdir } from 'node:os';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { describe, expect, it } from 'vitest';
|
|
9
9
|
import { AGENT_INSTALL_DIR_ENV_VAR, getAgentInstallBackupsDir } from './agent-manifest.js';
|
|
@@ -40,6 +40,32 @@ describe('isAllowedManifestEntryPath', () => {
|
|
|
40
40
|
it('rejects a bare directory that only partially matches (no filename)', () => {
|
|
41
41
|
expect(isAllowedManifestEntryPath(join(homedir(), '.claude', 'skills'))).toBe(false);
|
|
42
42
|
});
|
|
43
|
+
// SMI-6275 Wave 5: AntiGravity's two artifacts are WORKSPACE-relative, not
|
|
44
|
+
// HOME-relative — a separate allowlist branch (module header addendum).
|
|
45
|
+
describe('AntiGravity workspace-relative artifacts (SMI-6275 Wave 5)', () => {
|
|
46
|
+
const workspaceRoot = join(tmpdir(), 'skillsmith-guard-test-workspace');
|
|
47
|
+
it('allows the workspace-scoped skill pack path under ANY workspace root', () => {
|
|
48
|
+
expect(isAllowedManifestEntryPath(join(workspaceRoot, '.agents', 'skills', 'skillsmith-agent', 'SKILL.md'))).toBe(true);
|
|
49
|
+
// A DIFFERENT workspace root — the check is deliberately root-agnostic
|
|
50
|
+
// (any file literally named this way, per any workspace), not tied to
|
|
51
|
+
// one specific resolved root (module header explains why).
|
|
52
|
+
expect(isAllowedManifestEntryPath(join(tmpdir(), 'another-workspace', '.agents', 'skills', 'skillsmith-agent', 'SKILL.md'))).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
it('allows the workspace-scoped mcp_config.json path under any workspace root', () => {
|
|
55
|
+
expect(isAllowedManifestEntryPath(join(workspaceRoot, '.agents', 'mcp_config.json'))).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
it('rejects a path that merely CONTAINS the mcp_config.json suffix as a substring, not a true path segment', () => {
|
|
58
|
+
expect(isAllowedManifestEntryPath(join(workspaceRoot, 'evil.agents', 'mcp_config.json'))).toBe(false);
|
|
59
|
+
expect(isAllowedManifestEntryPath(join(workspaceRoot, '.agents', 'evil-mcp_config.json'))).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
it('rejects a hand-edited traversal string escaping the intended tail', () => {
|
|
62
|
+
expect(isAllowedManifestEntryPath(`${workspaceRoot}/.agents/mcp_config.json/../../../etc/passwd`)).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
it('still rejects an arbitrary sensitive path — the workspace-relative branch does not widen the home-relative rejections', () => {
|
|
65
|
+
expect(isAllowedManifestEntryPath('/etc/passwd')).toBe(false);
|
|
66
|
+
expect(isAllowedManifestEntryPath(join(homedir(), '.ssh', 'id_rsa'))).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
43
69
|
});
|
|
44
70
|
describe('isAllowedManifestBackupPath', () => {
|
|
45
71
|
it('allows a path under the current backups directory', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-manifest-path-guard.test.js","sourceRoot":"","sources":["../../../src/install/agent-manifest-path-guard.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-manifest-path-guard.test.js","sourceRoot":"","sources":["../../../src/install/agent-manifest-path-guard.test.ts"],"names":[],"mappings":"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"}
|