@skillsmith/core 0.12.0 → 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 +166 -1
- package/README.md +7 -8
- 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/config/token-credentials.d.ts +20 -0
- package/dist/src/config/token-credentials.d.ts.map +1 -1
- package/dist/src/config/token-credentials.js +59 -0
- package/dist/src/config/token-credentials.js.map +1 -1
- package/dist/src/config/token-credentials.test.d.ts +3 -0
- package/dist/src/config/token-credentials.test.d.ts.map +1 -1
- package/dist/src/config/token-credentials.test.js +68 -0
- package/dist/src/config/token-credentials.test.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 +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -5
- 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/skill-scanner/allowlist.test.js +7 -1
- package/dist/tests/skill-scanner/allowlist.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 +3 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ADR-139 (SMI-6274 Wave 4) point 5's Wave 5 bootstrap
|
|
3
|
+
* requirement — `installAgentPack({ scope: 'workspace' })` must be the
|
|
4
|
+
* ONLY thing that can CREATE `.agents/skills` when it doesn't exist yet.
|
|
5
|
+
* Split from the sibling `agent-pack-installer.test.ts` (already at the
|
|
6
|
+
* 500-line gate) following this file family's existing
|
|
7
|
+
* `.cursor-hooks.test.ts`/`.cursor-mcp.test.ts` sibling convention.
|
|
8
|
+
*
|
|
9
|
+
* SMI-6275 Wave 5 correction to this file's own original assertions: Wave
|
|
10
|
+
* 4 omitted the `antigravity` report row entirely when no workspace scope
|
|
11
|
+
* resolved — this test file originally asserted exactly that omission.
|
|
12
|
+
* Wave 5's own required test ("no `.agents/` directory and no `--scope
|
|
13
|
+
* workspace` → clear message, no silent no-op — match whatever 'not
|
|
14
|
+
* detected' reporting shape other undetected harnesses already use")
|
|
15
|
+
* corrects that: AntiGravity now ALWAYS gets a row, `detected: false`
|
|
16
|
+
* with an explanatory note when its workspace scope doesn't resolve,
|
|
17
|
+
* matching every other harness's reporting shape. The first test below is
|
|
18
|
+
* updated accordingly. MCP-config-specific coverage (schema, idempotency,
|
|
19
|
+
* conflict/force, uninstall) lives in the sibling
|
|
20
|
+
* `agent-pack-installer.antigravity-mcp.test.ts`.
|
|
21
|
+
* @module @skillsmith/core/install/agent-pack-installer.workspace-scope.test
|
|
22
|
+
* @see ADR-139 required test 15.
|
|
23
|
+
*/
|
|
24
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync } from 'node:fs';
|
|
25
|
+
import { tmpdir } from 'node:os';
|
|
26
|
+
import { join } from 'node:path';
|
|
27
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
28
|
+
import { installAgentPack } from './agent-pack-installer.js';
|
|
29
|
+
import { uninstallAgentPack } from './agent-pack-uninstaller.js';
|
|
30
|
+
import { AGENT_INSTALL_DIR_ENV_VAR } from './agent-manifest.js';
|
|
31
|
+
import { CLIENT_NATIVE_PATHS } from './paths.js';
|
|
32
|
+
import { relocateUnderHome } from './agent-home-relocate.js';
|
|
33
|
+
let homeDir;
|
|
34
|
+
let workspaceDir;
|
|
35
|
+
let manifestDir;
|
|
36
|
+
let prevInstallDirEnv;
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
homeDir = mkdtempSync(join(tmpdir(), 'skillsmith-agent-install-home-'));
|
|
39
|
+
workspaceDir = mkdtempSync(join(tmpdir(), 'skillsmith-agent-install-workspace-'));
|
|
40
|
+
mkdirSync(join(workspaceDir, '.git'), { recursive: true });
|
|
41
|
+
manifestDir = mkdtempSync(join(tmpdir(), 'skillsmith-agent-install-manifest-'));
|
|
42
|
+
prevInstallDirEnv = process.env[AGENT_INSTALL_DIR_ENV_VAR];
|
|
43
|
+
process.env[AGENT_INSTALL_DIR_ENV_VAR] = manifestDir;
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
rmSync(homeDir, { recursive: true, force: true });
|
|
47
|
+
rmSync(workspaceDir, { recursive: true, force: true });
|
|
48
|
+
rmSync(manifestDir, { recursive: true, force: true });
|
|
49
|
+
if (prevInstallDirEnv !== undefined)
|
|
50
|
+
process.env[AGENT_INSTALL_DIR_ENV_VAR] = prevInstallDirEnv;
|
|
51
|
+
else
|
|
52
|
+
delete process.env[AGENT_INSTALL_DIR_ENV_VAR];
|
|
53
|
+
});
|
|
54
|
+
describe('installAgentPack --scope workspace (ADR-139 point 5, required test 15)', () => {
|
|
55
|
+
it('bare `agent install` (no scope, no existing .agents/) never creates .agents/skills, and reports antigravity as not detected — SMI-6275 Wave 5 correction: a row is now ALWAYS present, matching every other harness', () => {
|
|
56
|
+
const result = installAgentPack({ homeDir, cwd: workspaceDir });
|
|
57
|
+
expect(existsSync(join(workspaceDir, '.agents', 'skills'))).toBe(false);
|
|
58
|
+
const antigravityReport = result.harnessReports.find((r) => r.harness === 'antigravity');
|
|
59
|
+
expect(antigravityReport).toBeDefined();
|
|
60
|
+
expect(antigravityReport?.detected).toBe(false);
|
|
61
|
+
expect(antigravityReport?.skillPackWritten).toBe(false);
|
|
62
|
+
expect(antigravityReport?.mcpConfig).toBeNull();
|
|
63
|
+
// Clear message, not a silent no-op (SMI-6275 Wave 5 required test).
|
|
64
|
+
expect(antigravityReport?.notes.some((n) => n.includes('No .agents/') && n.includes('--scope workspace'))).toBe(true);
|
|
65
|
+
});
|
|
66
|
+
it('bare `agent install` (no scope) AUTO-DETECTS an already-existing .agents/skills marker and configures AntiGravity — SMI-6275 Wave 5', () => {
|
|
67
|
+
mkdirSync(join(workspaceDir, '.agents', 'skills'), { recursive: true });
|
|
68
|
+
const result = installAgentPack({ homeDir, cwd: workspaceDir });
|
|
69
|
+
const skillPackPath = join(workspaceDir, '.agents', 'skills', 'skillsmith-agent', 'SKILL.md');
|
|
70
|
+
expect(existsSync(skillPackPath)).toBe(true);
|
|
71
|
+
const mcpConfigPath = join(workspaceDir, '.agents', 'mcp_config.json');
|
|
72
|
+
expect(existsSync(mcpConfigPath)).toBe(true);
|
|
73
|
+
const antigravityReport = result.harnessReports.find((r) => r.harness === 'antigravity');
|
|
74
|
+
expect(antigravityReport?.detected).toBe(true);
|
|
75
|
+
expect(antigravityReport?.skillPackWritten).toBe(true);
|
|
76
|
+
expect(antigravityReport?.mcpConfig?.status).toBe('created');
|
|
77
|
+
// Auto-detect never creates — the marker already existed.
|
|
78
|
+
expect(antigravityReport?.notes.some((n) => n.includes('Created workspace'))).toBe(false);
|
|
79
|
+
});
|
|
80
|
+
it('`--scope workspace` in a repository with no .agents/ creates it and registers antigravity as a target, writing both the skill pack and mcp_config.json', () => {
|
|
81
|
+
expect(existsSync(join(workspaceDir, '.agents'))).toBe(false);
|
|
82
|
+
const result = installAgentPack({ homeDir, cwd: workspaceDir, scope: 'workspace' });
|
|
83
|
+
const skillPackPath = join(workspaceDir, '.agents', 'skills', 'skillsmith-agent', 'SKILL.md');
|
|
84
|
+
expect(existsSync(skillPackPath)).toBe(true);
|
|
85
|
+
expect(readFileSync(skillPackPath, 'utf-8').length).toBeGreaterThan(0);
|
|
86
|
+
const mcpConfigPath = join(workspaceDir, '.agents', 'mcp_config.json');
|
|
87
|
+
expect(existsSync(mcpConfigPath)).toBe(true);
|
|
88
|
+
const antigravityReport = result.harnessReports.find((r) => r.harness === 'antigravity');
|
|
89
|
+
expect(antigravityReport).toBeDefined();
|
|
90
|
+
expect(antigravityReport?.detected).toBe(true);
|
|
91
|
+
expect(antigravityReport?.skillPackWritten).toBe(true);
|
|
92
|
+
expect(antigravityReport?.mcpConfig?.status).toBe('created');
|
|
93
|
+
expect(antigravityReport?.notes.some((n) => n.includes('Created workspace'))).toBe(true);
|
|
94
|
+
});
|
|
95
|
+
it('`--scope workspace` when .agents/skills already exists writes into it without a "Created" note', () => {
|
|
96
|
+
mkdirSync(join(workspaceDir, '.agents', 'skills'), { recursive: true });
|
|
97
|
+
const result = installAgentPack({ homeDir, cwd: workspaceDir, scope: 'workspace' });
|
|
98
|
+
const antigravityReport = result.harnessReports.find((r) => r.harness === 'antigravity');
|
|
99
|
+
expect(antigravityReport?.skillPackWritten).toBe(true);
|
|
100
|
+
expect(antigravityReport?.notes.some((n) => n.includes('Created workspace'))).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
// GPT-5.6-Sol pr-reviewer finding (SMI-6275 Wave 5): resolveScopedSkillsDir()
|
|
103
|
+
// throws UnsatisfiableWorkspaceScopeError when `--scope workspace` can't be
|
|
104
|
+
// satisfied (no .agents/ marker AND no ancestor .git). Before the fix, that
|
|
105
|
+
// throw propagated out of installAgentPack() entirely, skipping
|
|
106
|
+
// saveAgentManifest() and losing every OTHER harness's already-written
|
|
107
|
+
// entries — real files on disk with no manifest record, unreachable by
|
|
108
|
+
// `agent uninstall`.
|
|
109
|
+
it('`--scope workspace` outside any workspace (no .agents/, no ancestor .git) does not throw, reports antigravity as not detected with the resolver error, and still persists every other harness to the manifest', () => {
|
|
110
|
+
const bareDir = mkdtempSync(join(tmpdir(), 'skillsmith-agent-install-bare-'));
|
|
111
|
+
try {
|
|
112
|
+
let result;
|
|
113
|
+
expect(() => {
|
|
114
|
+
result = installAgentPack({ homeDir, cwd: bareDir, scope: 'workspace' });
|
|
115
|
+
}).not.toThrow();
|
|
116
|
+
const antigravityReport = result?.harnessReports.find((r) => r.harness === 'antigravity');
|
|
117
|
+
expect(antigravityReport?.detected).toBe(false);
|
|
118
|
+
expect(antigravityReport?.skillPackWritten).toBe(false);
|
|
119
|
+
expect(antigravityReport?.notes.some((n) => n.includes('workspace scope could not be resolved'))).toBe(true);
|
|
120
|
+
// Proof the manifest actually recorded every other harness's writes
|
|
121
|
+
// (not just that the files exist on disk, which would be true even
|
|
122
|
+
// with the bug — the bug was the MANIFEST being skipped): a real
|
|
123
|
+
// installer-written file from a harness untouched by this failure
|
|
124
|
+
// must still exist...
|
|
125
|
+
const claudeSkillPath = join(relocateUnderHome(CLIENT_NATIVE_PATHS['claude-code'], homeDir), 'skillsmith-agent', 'SKILL.md');
|
|
126
|
+
expect(existsSync(claudeSkillPath)).toBe(true);
|
|
127
|
+
// ...and uninstallAgentPack (which replays ONLY the manifest, never
|
|
128
|
+
// re-deriving "what the generator would currently produce") must be
|
|
129
|
+
// able to find and remove it — impossible unless saveAgentManifest()
|
|
130
|
+
// was actually reached despite the AntiGravity resolver's throw.
|
|
131
|
+
const uninstallResult = uninstallAgentPack();
|
|
132
|
+
expect(uninstallResult.removed).toContain(claudeSkillPath);
|
|
133
|
+
expect(existsSync(claudeSkillPath)).toBe(false);
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
rmSync(bareDir, { recursive: true, force: true });
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
it('every other harness report is unaffected by --scope workspace', () => {
|
|
140
|
+
const withoutScope = installAgentPack({ homeDir, cwd: workspaceDir });
|
|
141
|
+
rmSync(homeDir, { recursive: true, force: true });
|
|
142
|
+
homeDir = mkdtempSync(join(tmpdir(), 'skillsmith-agent-install-home-'));
|
|
143
|
+
const withScope = installAgentPack({ homeDir, cwd: workspaceDir, scope: 'workspace' });
|
|
144
|
+
const nonAntigravity = (r) => r.filter((x) => x.harness !== 'antigravity').map((x) => x.harness);
|
|
145
|
+
expect(nonAntigravity(withScope.harnessReports)).toEqual(nonAntigravity(withoutScope.harnessReports));
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=agent-pack-installer.workspace-scope.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-pack-installer.workspace-scope.test.js","sourceRoot":"","sources":["../../../src/install/agent-pack-installer.workspace-scope.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,16 +15,27 @@
|
|
|
15
15
|
* - A path already missing on disk (user deleted it manually) is a no-op,
|
|
16
16
|
* not an error.
|
|
17
17
|
*
|
|
18
|
-
* SECURITY (governance follow-up, 2026-07-01
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
18
|
+
* SECURITY (governance follow-up, 2026-07-01; symlink check added SMI-6275
|
|
19
|
+
* Wave 5 per two rounds of GPT-5.6-Sol pr-reviewer findings — round 1 caught
|
|
20
|
+
* a symlinked LEAF, round 2 caught round 1's own fix still missing a
|
|
21
|
+
* symlinked ANCESTOR directory): before touching the filesystem, every
|
|
22
|
+
* entry's `path` is checked against {@link isAllowedManifestEntryPath} (must
|
|
23
|
+
* structurally match one of the installer's known per-harness target
|
|
24
|
+
* locations), that `realpathSync()`'s fully-resolved form of the path
|
|
25
|
+
* (dereferencing EVERY symlink in the chain, leaf and ancestors alike)
|
|
26
|
+
* equals its own plain `path.resolve()` (a matching suffix proves the path
|
|
27
|
+
* LOOKS right, not that every component of the actual filesystem node
|
|
28
|
+
* reached by that path is a plain, non-symlinked directory/file the
|
|
29
|
+
* installer actually wrote — a link anywhere in the chain would make the
|
|
30
|
+
* restore branch's `writeFileSync` follow it and overwrite whatever is at
|
|
31
|
+
* the far end instead), and, when `backupPath` is set,
|
|
32
|
+
* {@link isAllowedManifestBackupPath} (must resolve under this run's
|
|
23
33
|
* manifest backups directory). The manifest is an ordinary user-writable
|
|
24
34
|
* JSON file, not a signed record — a corrupted or tampered manifest must
|
|
25
35
|
* never become an arbitrary-file-delete/overwrite primitive. An entry
|
|
26
|
-
* failing
|
|
27
|
-
* counted toward neither `removed` nor `restored`)
|
|
36
|
+
* failing any check is skipped entirely (added to `result.rejected`,
|
|
37
|
+
* counted toward neither `removed` nor `restored`)
|
|
38
|
+
* rather than acted on.
|
|
28
39
|
*
|
|
29
40
|
* After removing all installer-created files, now-empty directories we
|
|
30
41
|
* likely created (the parents of removed paths) are cleaned up bottom-up —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-pack-uninstaller.d.ts","sourceRoot":"","sources":["../../../src/install/agent-pack-uninstaller.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-pack-uninstaller.d.ts","sourceRoot":"","sources":["../../../src/install/agent-pack-uninstaller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAiBH,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAElG,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,qBAA0B,GAAG,oBAAoB,CAwF1F"}
|
|
@@ -15,16 +15,27 @@
|
|
|
15
15
|
* - A path already missing on disk (user deleted it manually) is a no-op,
|
|
16
16
|
* not an error.
|
|
17
17
|
*
|
|
18
|
-
* SECURITY (governance follow-up, 2026-07-01
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
18
|
+
* SECURITY (governance follow-up, 2026-07-01; symlink check added SMI-6275
|
|
19
|
+
* Wave 5 per two rounds of GPT-5.6-Sol pr-reviewer findings — round 1 caught
|
|
20
|
+
* a symlinked LEAF, round 2 caught round 1's own fix still missing a
|
|
21
|
+
* symlinked ANCESTOR directory): before touching the filesystem, every
|
|
22
|
+
* entry's `path` is checked against {@link isAllowedManifestEntryPath} (must
|
|
23
|
+
* structurally match one of the installer's known per-harness target
|
|
24
|
+
* locations), that `realpathSync()`'s fully-resolved form of the path
|
|
25
|
+
* (dereferencing EVERY symlink in the chain, leaf and ancestors alike)
|
|
26
|
+
* equals its own plain `path.resolve()` (a matching suffix proves the path
|
|
27
|
+
* LOOKS right, not that every component of the actual filesystem node
|
|
28
|
+
* reached by that path is a plain, non-symlinked directory/file the
|
|
29
|
+
* installer actually wrote — a link anywhere in the chain would make the
|
|
30
|
+
* restore branch's `writeFileSync` follow it and overwrite whatever is at
|
|
31
|
+
* the far end instead), and, when `backupPath` is set,
|
|
32
|
+
* {@link isAllowedManifestBackupPath} (must resolve under this run's
|
|
23
33
|
* manifest backups directory). The manifest is an ordinary user-writable
|
|
24
34
|
* JSON file, not a signed record — a corrupted or tampered manifest must
|
|
25
35
|
* never become an arbitrary-file-delete/overwrite primitive. An entry
|
|
26
|
-
* failing
|
|
27
|
-
* counted toward neither `removed` nor `restored`)
|
|
36
|
+
* failing any check is skipped entirely (added to `result.rejected`,
|
|
37
|
+
* counted toward neither `removed` nor `restored`)
|
|
38
|
+
* rather than acted on.
|
|
28
39
|
*
|
|
29
40
|
* After removing all installer-created files, now-empty directories we
|
|
30
41
|
* likely created (the parents of removed paths) are cleaned up bottom-up —
|
|
@@ -38,8 +49,8 @@
|
|
|
38
49
|
*
|
|
39
50
|
* @module @skillsmith/core/install/agent-pack-uninstaller
|
|
40
51
|
*/
|
|
41
|
-
import { dirname } from 'node:path';
|
|
42
|
-
import { existsSync, readFileSync, rmdirSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
52
|
+
import { dirname, resolve } from 'node:path';
|
|
53
|
+
import { existsSync, readFileSync, realpathSync, rmdirSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
43
54
|
import { loadAgentManifest, saveAgentManifest } from './agent-manifest.js';
|
|
44
55
|
import { isAllowedManifestBackupPath, isAllowedManifestEntryPath, } from './agent-manifest-path-guard.js';
|
|
45
56
|
export function uninstallAgentPack(_opts = {}) {
|
|
@@ -66,6 +77,45 @@ export function uninstallAgentPack(_opts = {}) {
|
|
|
66
77
|
alreadyGone.push(entry.path);
|
|
67
78
|
continue;
|
|
68
79
|
}
|
|
80
|
+
// GPT-5.6-Sol pr-reviewer finding (SMI-6275 Wave 5), round 2: passing
|
|
81
|
+
// isAllowedManifestEntryPath's structural suffix check proves entry.path
|
|
82
|
+
// LOOKS like one of the installer's known targets — it does not prove
|
|
83
|
+
// the filesystem node there is the plain file/directory this installer
|
|
84
|
+
// actually wrote. Round 1 of this fix only lstat'd the LEAF (entry.path
|
|
85
|
+
// itself) for isSymbolicLink() — round 2's confirmation pass correctly
|
|
86
|
+
// flagged that as incomplete: lstat does not dereference PARENT path
|
|
87
|
+
// components, so a symlinked ancestor directory (e.g. `.agents` itself
|
|
88
|
+
// being a symlink — a real risk for the workspace-relative allowlist
|
|
89
|
+
// added this wave, since a workspace root is far more likely to contain
|
|
90
|
+
// untrusted pre-existing content than $HOME) would still let the leaf
|
|
91
|
+
// check pass while writeFileSync's restore branch below resolves
|
|
92
|
+
// through that ancestor link and overwrites content OUTSIDE the
|
|
93
|
+
// manifest-declared path entirely. realpathSync() resolves EVERY
|
|
94
|
+
// symlink in the full chain (leaf and every ancestor); comparing its
|
|
95
|
+
// result against the plain, non-dereferencing path.resolve() of the
|
|
96
|
+
// same input catches a link anywhere in that chain in one check — this
|
|
97
|
+
// supersedes (not supplements) the leaf-only lstatSync check.
|
|
98
|
+
const resolvedPath = resolve(entry.path);
|
|
99
|
+
let realEntryPath;
|
|
100
|
+
try {
|
|
101
|
+
realEntryPath = realpathSync(resolvedPath);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// existsSync() above passed, but the path vanished (or a component
|
|
105
|
+
// became unreadable) before realpathSync ran — a race, not proof of
|
|
106
|
+
// safety. Reject rather than fall through to alreadyGone, which
|
|
107
|
+
// would silently skip cleanup of what could be a real artifact.
|
|
108
|
+
rejected.push(entry.path);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
// audit-allow:realpath-asymmetry — both sides derive from the SAME
|
|
112
|
+
// input (entry.path); the divergence itself is the detection signal
|
|
113
|
+
// (see the fuller comment above), not the SMI-4688/4692 bug this check
|
|
114
|
+
// targets (two independently-derived paths, only one realpath'd).
|
|
115
|
+
if (realEntryPath !== resolvedPath) {
|
|
116
|
+
rejected.push(entry.path);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
69
119
|
touchedDirs.add(dirname(entry.path));
|
|
70
120
|
if (entry.backupPath && existsSync(entry.backupPath)) {
|
|
71
121
|
const content = readFileSync(entry.backupPath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-pack-uninstaller.js","sourceRoot":"","sources":["../../../src/install/agent-pack-uninstaller.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-pack-uninstaller.js","sourceRoot":"","sources":["../../../src/install/agent-pack-uninstaller.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* the governance manifest-path-guard security tests.
|
|
7
7
|
* @module @skillsmith/core/install/agent-pack-uninstaller.test
|
|
8
8
|
*/
|
|
9
|
-
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
9
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, symlinkSync, writeFileSync, } from 'node:fs';
|
|
10
10
|
import { tmpdir } from 'node:os';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
@@ -91,6 +91,79 @@ describe('uninstallAgentPack — exact reversal', () => {
|
|
|
91
91
|
expect(result.rejected).toContain(sensitivePath);
|
|
92
92
|
expect(result.removed).not.toContain(sensitivePath);
|
|
93
93
|
});
|
|
94
|
+
// GPT-5.6-Sol pr-reviewer finding (SMI-6275 Wave 5): isAllowedManifestEntryPath
|
|
95
|
+
// proves entry.path structurally LOOKS like a known installer target — it
|
|
96
|
+
// says nothing about whether the filesystem node there is the plain file
|
|
97
|
+
// the installer wrote, versus a symlink (e.g. content already present at
|
|
98
|
+
// that exact path before Skillsmith ever ran). Without a symlink check,
|
|
99
|
+
// the restore branch's `writeFileSync` follows the link and overwrites
|
|
100
|
+
// whatever it points at, even though `entry.path` and `entry.backupPath`
|
|
101
|
+
// both pass every existing validation.
|
|
102
|
+
it('refuses to restore into (or delete) a manifest entry whose path is a symlink, even with a legitimate backupPath', () => {
|
|
103
|
+
mkdirSync(join(homeDir, '.claude'), { recursive: true });
|
|
104
|
+
const settingsPath = join(homeDir, '.claude', 'settings.json');
|
|
105
|
+
writeFileSync(settingsPath, JSON.stringify({ someOtherKey: true }, null, 2));
|
|
106
|
+
installAgentPack({ homeDir });
|
|
107
|
+
const manifestPath = getAgentManifestPath();
|
|
108
|
+
const manifestAfterInstall = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
109
|
+
const settingsEntry = manifestAfterInstall.entries.find((e) => e.path === settingsPath);
|
|
110
|
+
// A REAL, trusted backup from the real install run — proves the symlink
|
|
111
|
+
// check is what blocks this, not the pre-existing backupPath validation.
|
|
112
|
+
expect(settingsEntry?.backupPath).toBeTruthy();
|
|
113
|
+
// Replace the real settings.json with a symlink to an unrelated victim
|
|
114
|
+
// file OUTSIDE any installer target, simulating content that already
|
|
115
|
+
// occupied this exact allowed-suffix path before Skillsmith ran.
|
|
116
|
+
rmSync(settingsPath);
|
|
117
|
+
const victimPath = join(homeDir, 'victim.txt');
|
|
118
|
+
writeFileSync(victimPath, 'victim original content');
|
|
119
|
+
symlinkSync(victimPath, settingsPath);
|
|
120
|
+
const result = uninstallAgentPack();
|
|
121
|
+
// The victim file must be untouched — restore-from-backup must NOT
|
|
122
|
+
// follow the symlink and overwrite its target.
|
|
123
|
+
expect(readFileSync(victimPath, 'utf-8')).toBe('victim original content');
|
|
124
|
+
// The symlink itself is left alone too (rejected, not replaced/deleted).
|
|
125
|
+
expect(existsSync(settingsPath)).toBe(true);
|
|
126
|
+
expect(result.rejected).toContain(settingsPath);
|
|
127
|
+
expect(result.restored).not.toContain(settingsPath);
|
|
128
|
+
expect(result.removed).not.toContain(settingsPath);
|
|
129
|
+
});
|
|
130
|
+
// GPT-5.6-Sol pr-reviewer round-2 confirmation finding: round 1's fix only
|
|
131
|
+
// lstat'd the LEAF path for isSymbolicLink() — a symlinked ANCESTOR
|
|
132
|
+
// directory still slipped through, since lstat doesn't dereference parent
|
|
133
|
+
// components. The realpathSync()-based fix must catch this too.
|
|
134
|
+
it('refuses to restore into (or delete) a manifest entry whose path is reached through a symlinked ANCESTOR directory', () => {
|
|
135
|
+
// A real, non-symlinked ".claude" directory holding the victim...
|
|
136
|
+
const realClaudeDir = join(homeDir, 'real-claude-target');
|
|
137
|
+
mkdirSync(realClaudeDir, { recursive: true });
|
|
138
|
+
const victimPath = join(realClaudeDir, 'settings.json');
|
|
139
|
+
writeFileSync(victimPath, 'victim original content');
|
|
140
|
+
// ...and a manifest entry whose path is reached via a SYMLINKED
|
|
141
|
+
// ".claude" directory (the parent, not the leaf) pointing at it — the
|
|
142
|
+
// leaf component itself ("settings.json") is not a symlink at all.
|
|
143
|
+
const claudeSymlinkPath = join(homeDir, '.claude');
|
|
144
|
+
symlinkSync(realClaudeDir, claudeSymlinkPath);
|
|
145
|
+
const entryPath = join(claudeSymlinkPath, 'settings.json');
|
|
146
|
+
const manifestPath = getAgentManifestPath();
|
|
147
|
+
writeFileSync(manifestPath, JSON.stringify({
|
|
148
|
+
schemaVersion: 1,
|
|
149
|
+
installedAt: new Date().toISOString(),
|
|
150
|
+
packSchemaVersion: 1,
|
|
151
|
+
entries: [
|
|
152
|
+
{
|
|
153
|
+
path: entryPath,
|
|
154
|
+
kind: 'mcp-config',
|
|
155
|
+
harness: 'claude-code',
|
|
156
|
+
backupPath: null,
|
|
157
|
+
executable: false,
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
}, null, 2));
|
|
161
|
+
const result = uninstallAgentPack();
|
|
162
|
+
// The victim file must be untouched.
|
|
163
|
+
expect(readFileSync(victimPath, 'utf-8')).toBe('victim original content');
|
|
164
|
+
expect(result.rejected).toContain(entryPath);
|
|
165
|
+
expect(result.removed).not.toContain(entryPath);
|
|
166
|
+
});
|
|
94
167
|
it('refuses to restore from a backupPath outside the manifest backups directory', () => {
|
|
95
168
|
mkdirSync(join(homeDir, '.claude'), { recursive: true });
|
|
96
169
|
const settingsPath = join(homeDir, '.claude', 'settings.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-pack-uninstaller.test.js","sourceRoot":"","sources":["../../../src/install/agent-pack-uninstaller.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-pack-uninstaller.test.js","sourceRoot":"","sources":["../../../src/install/agent-pack-uninstaller.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../../src/install/fan-out.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAyC,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../../src/install/fan-out.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAyC,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGjF,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAA;IACV,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAY1D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,UAAU,EAAE,QAAQ,CAAA;IACpB,0DAA0D;IAC1D,QAAQ,EAAE,QAAQ,CAAA;IAClB,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAA;IAClB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAA;CACxB;AAuED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAiE1E;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlE;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,CAE/C"}
|
|
@@ -20,6 +20,7 @@ import * as path from 'node:path';
|
|
|
20
20
|
import * as fs from 'node:fs';
|
|
21
21
|
import * as fsp from 'node:fs/promises';
|
|
22
22
|
import { CLIENT_NATIVE_PATHS, CANONICAL_CLIENT } from './paths.js';
|
|
23
|
+
import { assertNotRealUserHome } from '../services/skill-manifest.js';
|
|
23
24
|
const MANIFEST_VERSION = 1;
|
|
24
25
|
/**
|
|
25
26
|
* Resolve the manifest file path. Sits under `~/.skillsmith/` so it shares
|
|
@@ -53,6 +54,11 @@ export async function loadManifest() {
|
|
|
53
54
|
*/
|
|
54
55
|
export async function saveManifest(manifest) {
|
|
55
56
|
const manifestPath = getLinkManifestPath();
|
|
57
|
+
// SMI-6343 follow-up (adversarial review): a fourth parallel manifest-write
|
|
58
|
+
// implementation (a different file, `links/manifest.json`, but the same
|
|
59
|
+
// homedir-derived-with-no-override shape). The $HOME sandbox
|
|
60
|
+
// (vitest.setup.ts) was this file's only defense until this guard.
|
|
61
|
+
assertNotRealUserHome(manifestPath, 'write');
|
|
56
62
|
const dir = path.dirname(manifestPath);
|
|
57
63
|
await fsp.mkdir(dir, { recursive: true });
|
|
58
64
|
const tmp = `${manifestPath}.${process.pid}.tmp`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fan-out.js","sourceRoot":"","sources":["../../../src/install/fan-out.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"fan-out.js","sourceRoot":"","sources":["../../../src/install/fan-out.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,4 +20,6 @@ export { HARNESS_SUPPORT_TIER, type AgentInstallOptions, type AgentInstallResult
|
|
|
20
20
|
export { AGENT_MCP_TARGETS, AGENT_SHIM_TARGETS, AGENT_HOOK_TARGETS, CODEX_CONFIG_TOML_PATH, type McpHarnessId, type ConfigFormat, type McpConfigTarget, type ShimTarget, type HookInstallTarget, } from './agent-harness-targets.js';
|
|
21
21
|
export { type MergeResult, type MergeStatus } from './agent-config-merge.types.js';
|
|
22
22
|
export { isAllowedManifestEntryPath, isAllowedManifestBackupPath, } from './agent-manifest-path-guard.js';
|
|
23
|
+
export { CLIENT_WORKSPACE_SEGMENTS, InvalidScopeValueError, UnsatisfiableWorkspaceScopeError, findWorkspaceRoot, getDefaultScopeForClient, parseInstallScope, resolveScopedSkillsDir, resolveSkillScope, resolveWorkspaceManifestPath, } from './workspace-scope.js';
|
|
24
|
+
export type { FindWorkspaceRootOptions, InstallScope, ResolveScopeParams, ResolvedSkillScope, ScopedInstallTarget, WorkspaceRootResult, } from './workspace-scope.js';
|
|
23
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/install/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,UAAU,GACX,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,gCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/install/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,UAAU,GACX,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAA"}
|
|
@@ -18,4 +18,6 @@ export { getAgentInstallBackupsDir, getAgentManifestPath, saveAgentManifest, AGE
|
|
|
18
18
|
export { HARNESS_SUPPORT_TIER, } from './agent-pack-installer.types.js';
|
|
19
19
|
export { AGENT_MCP_TARGETS, AGENT_SHIM_TARGETS, AGENT_HOOK_TARGETS, CODEX_CONFIG_TOML_PATH, } from './agent-harness-targets.js';
|
|
20
20
|
export { isAllowedManifestEntryPath, isAllowedManifestBackupPath, } from './agent-manifest-path-guard.js';
|
|
21
|
+
// ADR-139 (SMI-6274 Wave 4): global-vs-workspace install scope resolution.
|
|
22
|
+
export { CLIENT_WORKSPACE_SEGMENTS, InvalidScopeValueError, UnsatisfiableWorkspaceScopeError, findWorkspaceRoot, getDefaultScopeForClient, parseInstallScope, resolveScopedSkillsDir, resolveSkillScope, resolveWorkspaceManifestPath, } from './workspace-scope.js';
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/install/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,cAAc,CAAA;AASrB,mEAAmE;AACnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,GAI9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,GAOrB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GAMvB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,gCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/install/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,cAAc,CAAA;AASrB,mEAAmE;AACnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,GAI9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,GAOrB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GAMvB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,gCAAgC,CAAA;AAEvC,2EAA2E;AAC3E,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAA"}
|