@skillsmith/core 0.9.0 → 0.11.0
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 +16 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/tree-sitter/pythonIncremental.d.ts +23 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.d.ts.map +1 -1
- package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.js +137 -0
- package/dist/src/analysis/tree-sitter/pythonIncremental.hardening.test.js.map +1 -1
- package/dist/src/analysis/tree-sitter/pythonIncremental.js +83 -10
- package/dist/src/analysis/tree-sitter/pythonIncremental.js.map +1 -1
- package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.js +6 -1
- package/dist/src/analysis/tree-sitter/queryExtractionMatchesOrExceedsRegex.test.js.map +1 -1
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +6 -0
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/client.test.d.ts +9 -0
- package/dist/src/api/client.test.d.ts.map +1 -0
- package/dist/src/api/client.test.js +81 -0
- package/dist/src/api/client.test.js.map +1 -0
- package/dist/src/config/audit-notify-state.d.ts +46 -0
- package/dist/src/config/audit-notify-state.d.ts.map +1 -0
- package/dist/src/config/audit-notify-state.js +55 -0
- package/dist/src/config/audit-notify-state.js.map +1 -0
- package/dist/src/config/audit-notify-state.test.d.ts +9 -0
- package/dist/src/config/audit-notify-state.test.d.ts.map +1 -0
- package/dist/src/config/audit-notify-state.test.js +63 -0
- package/dist/src/config/audit-notify-state.test.js.map +1 -0
- package/dist/src/config/index.d.ts +10 -0
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/exports/services.d.ts +3 -1
- package/dist/src/exports/services.d.ts.map +1 -1
- package/dist/src/exports/services.js +9 -1
- package/dist/src/exports/services.js.map +1 -1
- package/dist/src/index.d.ts +6 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/install/agent-config-merge.json-array.d.ts +29 -0
- package/dist/src/install/agent-config-merge.json-array.d.ts.map +1 -0
- package/dist/src/install/agent-config-merge.json-array.js +100 -0
- package/dist/src/install/agent-config-merge.json-array.js.map +1 -0
- package/dist/src/install/agent-config-merge.json.d.ts +37 -0
- package/dist/src/install/agent-config-merge.json.d.ts.map +1 -0
- package/dist/src/install/agent-config-merge.json.js +134 -0
- package/dist/src/install/agent-config-merge.json.js.map +1 -0
- package/dist/src/install/agent-config-merge.toml-block.d.ts +48 -0
- package/dist/src/install/agent-config-merge.toml-block.d.ts.map +1 -0
- package/dist/src/install/agent-config-merge.toml-block.js +107 -0
- package/dist/src/install/agent-config-merge.toml-block.js.map +1 -0
- package/dist/src/install/agent-config-merge.types.d.ts +87 -0
- package/dist/src/install/agent-config-merge.types.d.ts.map +1 -0
- package/dist/src/install/agent-config-merge.types.js +83 -0
- package/dist/src/install/agent-config-merge.types.js.map +1 -0
- package/dist/src/install/agent-config-merge.yaml.d.ts +46 -0
- package/dist/src/install/agent-config-merge.yaml.d.ts.map +1 -0
- package/dist/src/install/agent-config-merge.yaml.js +133 -0
- package/dist/src/install/agent-config-merge.yaml.js.map +1 -0
- package/dist/src/install/agent-config-merge.yaml.test.d.ts +2 -0
- package/dist/src/install/agent-config-merge.yaml.test.d.ts.map +1 -0
- package/dist/src/install/agent-config-merge.yaml.test.js +210 -0
- package/dist/src/install/agent-config-merge.yaml.test.js.map +1 -0
- package/dist/src/install/agent-harness-targets.d.ts +98 -0
- package/dist/src/install/agent-harness-targets.d.ts.map +1 -0
- package/dist/src/install/agent-harness-targets.js +154 -0
- package/dist/src/install/agent-harness-targets.js.map +1 -0
- package/dist/src/install/agent-home-relocate.d.ts +29 -0
- package/dist/src/install/agent-home-relocate.d.ts.map +1 -0
- package/dist/src/install/agent-home-relocate.js +38 -0
- package/dist/src/install/agent-home-relocate.js.map +1 -0
- package/dist/src/install/agent-manifest-path-guard.d.ts +55 -0
- package/dist/src/install/agent-manifest-path-guard.d.ts.map +1 -0
- package/dist/src/install/agent-manifest-path-guard.js +109 -0
- package/dist/src/install/agent-manifest-path-guard.js.map +1 -0
- package/dist/src/install/agent-manifest-path-guard.test.d.ts +2 -0
- package/dist/src/install/agent-manifest-path-guard.test.d.ts.map +1 -0
- package/dist/src/install/agent-manifest-path-guard.test.js +72 -0
- package/dist/src/install/agent-manifest-path-guard.test.js.map +1 -0
- package/dist/src/install/agent-manifest.d.ts +58 -0
- package/dist/src/install/agent-manifest.d.ts.map +1 -0
- package/dist/src/install/agent-manifest.js +103 -0
- package/dist/src/install/agent-manifest.js.map +1 -0
- package/dist/src/install/agent-pack-installer.d.ts +39 -0
- package/dist/src/install/agent-pack-installer.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.entry.d.ts +55 -0
- package/dist/src/install/agent-pack-installer.entry.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.entry.js +90 -0
- package/dist/src/install/agent-pack-installer.entry.js.map +1 -0
- package/dist/src/install/agent-pack-installer.fs-helpers.d.ts +33 -0
- package/dist/src/install/agent-pack-installer.fs-helpers.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.fs-helpers.js +59 -0
- package/dist/src/install/agent-pack-installer.fs-helpers.js.map +1 -0
- package/dist/src/install/agent-pack-installer.harness.d.ts +66 -0
- package/dist/src/install/agent-pack-installer.harness.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.harness.js +310 -0
- package/dist/src/install/agent-pack-installer.harness.js.map +1 -0
- package/dist/src/install/agent-pack-installer.js +221 -0
- package/dist/src/install/agent-pack-installer.js.map +1 -0
- package/dist/src/install/agent-pack-installer.preserve.test.d.ts +11 -0
- package/dist/src/install/agent-pack-installer.preserve.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.preserve.test.js +72 -0
- package/dist/src/install/agent-pack-installer.preserve.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.test.js +350 -0
- package/dist/src/install/agent-pack-installer.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.types.d.ts +51 -0
- package/dist/src/install/agent-pack-installer.types.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.types.js +16 -0
- package/dist/src/install/agent-pack-installer.types.js.map +1 -0
- package/dist/src/install/agent-pack-uninstaller.d.ts +43 -0
- package/dist/src/install/agent-pack-uninstaller.d.ts.map +1 -0
- package/dist/src/install/agent-pack-uninstaller.js +113 -0
- package/dist/src/install/agent-pack-uninstaller.js.map +1 -0
- package/dist/src/install/agent-pack-uninstaller.test.d.ts +2 -0
- package/dist/src/install/agent-pack-uninstaller.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-uninstaller.test.js +212 -0
- package/dist/src/install/agent-pack-uninstaller.test.js.map +1 -0
- package/dist/src/install/index.d.ts +7 -0
- package/dist/src/install/index.d.ts.map +1 -1
- package/dist/src/install/index.js +7 -0
- package/dist/src/install/index.js.map +1 -1
- package/dist/src/install/paths.d.ts +1 -1
- package/dist/src/install/paths.d.ts.map +1 -1
- package/dist/src/install/paths.js +4 -0
- package/dist/src/install/paths.js.map +1 -1
- package/dist/src/install/paths.test.js +15 -0
- package/dist/src/install/paths.test.js.map +1 -1
- package/dist/src/journal/hash.d.ts +13 -0
- package/dist/src/journal/hash.d.ts.map +1 -0
- package/dist/src/journal/hash.js +16 -0
- package/dist/src/journal/hash.js.map +1 -0
- package/dist/src/journal/index.d.ts +15 -0
- package/dist/src/journal/index.d.ts.map +1 -0
- package/dist/src/journal/index.js +15 -0
- package/dist/src/journal/index.js.map +1 -0
- package/dist/src/journal/journal.test.d.ts +16 -0
- package/dist/src/journal/journal.test.d.ts.map +1 -0
- package/dist/src/journal/journal.test.js +171 -0
- package/dist/src/journal/journal.test.js.map +1 -0
- package/dist/src/journal/path.d.ts +44 -0
- package/dist/src/journal/path.d.ts.map +1 -0
- package/dist/src/journal/path.js +61 -0
- package/dist/src/journal/path.js.map +1 -0
- package/dist/src/journal/reader.d.ts +38 -0
- package/dist/src/journal/reader.d.ts.map +1 -0
- package/dist/src/journal/reader.js +93 -0
- package/dist/src/journal/reader.js.map +1 -0
- package/dist/src/journal/types.d.ts +87 -0
- package/dist/src/journal/types.d.ts.map +1 -0
- package/dist/src/journal/types.js +21 -0
- package/dist/src/journal/types.js.map +1 -0
- package/dist/src/journal/writer.d.ts +52 -0
- package/dist/src/journal/writer.d.ts.map +1 -0
- package/dist/src/journal/writer.js +125 -0
- package/dist/src/journal/writer.js.map +1 -0
- package/dist/src/logging/context.d.ts +58 -0
- package/dist/src/logging/context.d.ts.map +1 -0
- package/dist/src/logging/context.js +62 -0
- package/dist/src/logging/context.js.map +1 -0
- package/dist/src/logging/context.test.d.ts +14 -0
- package/dist/src/logging/context.test.d.ts.map +1 -0
- package/dist/src/logging/context.test.js +88 -0
- package/dist/src/logging/context.test.js.map +1 -0
- package/dist/src/logging/index.d.ts +13 -0
- package/dist/src/logging/index.d.ts.map +1 -0
- package/dist/src/logging/index.js +12 -0
- package/dist/src/logging/index.js.map +1 -0
- package/dist/src/logging/logger.d.ts +71 -0
- package/dist/src/logging/logger.d.ts.map +1 -0
- package/dist/src/logging/logger.js +264 -0
- package/dist/src/logging/logger.js.map +1 -0
- package/dist/src/logging/logger.test.d.ts +9 -0
- package/dist/src/logging/logger.test.d.ts.map +1 -0
- package/dist/src/logging/logger.test.js +320 -0
- package/dist/src/logging/logger.test.js.map +1 -0
- package/dist/src/logging/redact.d.ts +35 -0
- package/dist/src/logging/redact.d.ts.map +1 -0
- package/dist/src/logging/redact.js +152 -0
- package/dist/src/logging/redact.js.map +1 -0
- package/dist/src/logging/redact.test.d.ts +8 -0
- package/dist/src/logging/redact.test.d.ts.map +1 -0
- package/dist/src/logging/redact.test.js +330 -0
- package/dist/src/logging/redact.test.js.map +1 -0
- package/dist/src/logging/rotation.d.ts +75 -0
- package/dist/src/logging/rotation.d.ts.map +1 -0
- package/dist/src/logging/rotation.js +284 -0
- package/dist/src/logging/rotation.js.map +1 -0
- package/dist/src/logging/rotation.test.d.ts +11 -0
- package/dist/src/logging/rotation.test.d.ts.map +1 -0
- package/dist/src/logging/rotation.test.js +132 -0
- package/dist/src/logging/rotation.test.js.map +1 -0
- package/dist/src/logging/types.d.ts +69 -0
- package/dist/src/logging/types.d.ts.map +1 -0
- package/dist/src/logging/types.js +9 -0
- package/dist/src/logging/types.js.map +1 -0
- package/dist/src/paywall-triggers/index.d.ts +13 -0
- package/dist/src/paywall-triggers/index.d.ts.map +1 -0
- package/dist/src/paywall-triggers/index.js +13 -0
- package/dist/src/paywall-triggers/index.js.map +1 -0
- package/dist/src/paywall-triggers/path.d.ts +47 -0
- package/dist/src/paywall-triggers/path.d.ts.map +1 -0
- package/dist/src/paywall-triggers/path.js +73 -0
- package/dist/src/paywall-triggers/path.js.map +1 -0
- package/dist/src/paywall-triggers/store.d.ts +75 -0
- package/dist/src/paywall-triggers/store.d.ts.map +1 -0
- package/dist/src/paywall-triggers/store.js +122 -0
- package/dist/src/paywall-triggers/store.js.map +1 -0
- package/dist/src/paywall-triggers/store.test.d.ts +2 -0
- package/dist/src/paywall-triggers/store.test.d.ts.map +1 -0
- package/dist/src/paywall-triggers/store.test.js +121 -0
- package/dist/src/paywall-triggers/store.test.js.map +1 -0
- package/dist/src/paywall-triggers/types.d.ts +24 -0
- package/dist/src/paywall-triggers/types.d.ts.map +1 -0
- package/dist/src/paywall-triggers/types.js +13 -0
- package/dist/src/paywall-triggers/types.js.map +1 -0
- package/dist/src/security/index.d.ts +2 -0
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +4 -0
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.compound.d.ts +13 -0
- package/dist/src/security/scanner/SecurityScanner.compound.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.compound.js +127 -0
- package/dist/src/security/scanner/SecurityScanner.compound.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.hostile-update.d.ts +46 -0
- package/dist/src/security/scanner/SecurityScanner.hostile-update.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.hostile-update.js +209 -0
- package/dist/src/security/scanner/SecurityScanner.hostile-update.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.js +10 -1
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.pii.d.ts +23 -0
- package/dist/src/security/scanner/SecurityScanner.pii.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.pii.js +152 -0
- package/dist/src/security/scanner/SecurityScanner.pii.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.scanners.d.ts +5 -12
- package/dist/src/security/scanner/SecurityScanner.scanners.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.scanners.js +63 -137
- package/dist/src/security/scanner/SecurityScanner.scanners.js.map +1 -1
- package/dist/src/security/scanner/index.d.ts +2 -1
- package/dist/src/security/scanner/index.d.ts.map +1 -1
- package/dist/src/security/scanner/index.js +2 -0
- package/dist/src/security/scanner/index.js.map +1 -1
- package/dist/src/security/scanner/patterns.d.ts +2 -0
- package/dist/src/security/scanner/patterns.d.ts.map +1 -1
- package/dist/src/security/scanner/patterns.js +79 -11
- package/dist/src/security/scanner/patterns.js.map +1 -1
- package/dist/src/security/scanner/types.d.ts +23 -0
- package/dist/src/security/scanner/types.d.ts.map +1 -1
- package/dist/src/services/agent-pack/agent-pack.test.d.ts +18 -0
- package/dist/src/services/agent-pack/agent-pack.test.d.ts.map +1 -0
- package/dist/src/services/agent-pack/agent-pack.test.js +344 -0
- package/dist/src/services/agent-pack/agent-pack.test.js.map +1 -0
- package/dist/src/services/agent-pack/hooks.d.ts +29 -0
- package/dist/src/services/agent-pack/hooks.d.ts.map +1 -0
- package/dist/src/services/agent-pack/hooks.js +139 -0
- package/dist/src/services/agent-pack/hooks.js.map +1 -0
- package/dist/src/services/agent-pack/index.d.ts +26 -0
- package/dist/src/services/agent-pack/index.d.ts.map +1 -0
- package/dist/src/services/agent-pack/index.js +109 -0
- package/dist/src/services/agent-pack/index.js.map +1 -0
- package/dist/src/services/agent-pack/prompt-source.d.ts +47 -0
- package/dist/src/services/agent-pack/prompt-source.d.ts.map +1 -0
- package/dist/src/services/agent-pack/prompt-source.js +182 -0
- package/dist/src/services/agent-pack/prompt-source.js.map +1 -0
- package/dist/src/services/agent-pack/shims.d.ts +40 -0
- package/dist/src/services/agent-pack/shims.d.ts.map +1 -0
- package/dist/src/services/agent-pack/shims.js +96 -0
- package/dist/src/services/agent-pack/shims.js.map +1 -0
- package/dist/src/services/agent-pack/skill-md.d.ts +35 -0
- package/dist/src/services/agent-pack/skill-md.d.ts.map +1 -0
- package/dist/src/services/agent-pack/skill-md.js +89 -0
- package/dist/src/services/agent-pack/skill-md.js.map +1 -0
- package/dist/src/services/agent-pack/types.d.ts +118 -0
- package/dist/src/services/agent-pack/types.d.ts.map +1 -0
- package/dist/src/services/agent-pack/types.js +61 -0
- package/dist/src/services/agent-pack/types.js.map +1 -0
- package/dist/src/services/agent-tool-profile.d.ts +59 -0
- package/dist/src/services/agent-tool-profile.d.ts.map +1 -0
- package/dist/src/services/agent-tool-profile.js +76 -0
- package/dist/src/services/agent-tool-profile.js.map +1 -0
- package/dist/src/services/agent-tool-profile.test.d.ts +2 -0
- package/dist/src/services/agent-tool-profile.test.d.ts.map +1 -0
- package/dist/src/services/agent-tool-profile.test.js +28 -0
- package/dist/src/services/agent-tool-profile.test.js.map +1 -0
- package/dist/src/services/bundled-sibling-scan.d.ts +111 -0
- package/dist/src/services/bundled-sibling-scan.d.ts.map +1 -0
- package/dist/src/services/bundled-sibling-scan.js +170 -0
- package/dist/src/services/bundled-sibling-scan.js.map +1 -0
- package/dist/src/services/skill-installation.io.d.ts +16 -5
- package/dist/src/services/skill-installation.io.d.ts.map +1 -1
- package/dist/src/services/skill-installation.io.js +63 -22
- package/dist/src/services/skill-installation.io.js.map +1 -1
- package/dist/src/services/skill-installation.policy.d.ts +96 -0
- package/dist/src/services/skill-installation.policy.d.ts.map +1 -0
- package/dist/src/services/skill-installation.policy.js +144 -0
- package/dist/src/services/skill-installation.policy.js.map +1 -0
- package/dist/src/services/skill-installation.service.d.ts.map +1 -1
- package/dist/src/services/skill-installation.service.js +9 -3
- package/dist/src/services/skill-installation.service.js.map +1 -1
- package/dist/src/sources/index.d.ts +1 -0
- package/dist/src/sources/index.d.ts.map +1 -1
- package/dist/src/sources/index.js +4 -0
- package/dist/src/sources/index.js.map +1 -1
- package/dist/src/sync/access-token.d.ts +27 -0
- package/dist/src/sync/access-token.d.ts.map +1 -0
- package/dist/src/sync/access-token.js +40 -0
- package/dist/src/sync/access-token.js.map +1 -0
- package/dist/src/sync/audit-notify-client.d.ts +83 -0
- package/dist/src/sync/audit-notify-client.d.ts.map +1 -0
- package/dist/src/sync/audit-notify-client.js +126 -0
- package/dist/src/sync/audit-notify-client.js.map +1 -0
- package/dist/src/sync/audit-notify-client.test.d.ts +14 -0
- package/dist/src/sync/audit-notify-client.test.d.ts.map +1 -0
- package/dist/src/sync/audit-notify-client.test.js +133 -0
- package/dist/src/sync/audit-notify-client.test.js.map +1 -0
- package/dist/src/sync/index.d.ts +2 -1
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/index.js +3 -1
- package/dist/src/sync/index.js.map +1 -1
- package/dist/src/sync/inventory-client.d.ts +16 -0
- package/dist/src/sync/inventory-client.d.ts.map +1 -1
- package/dist/src/sync/inventory-client.js +59 -16
- package/dist/src/sync/inventory-client.js.map +1 -1
- package/dist/src/sync/inventory-client.test.js +67 -1
- package/dist/src/sync/inventory-client.test.js.map +1 -1
- package/dist/src/sync/inventory-collector.d.ts.map +1 -1
- package/dist/src/sync/inventory-collector.js +32 -5
- package/dist/src/sync/inventory-collector.js.map +1 -1
- package/dist/src/sync/inventory-collector.test.js +50 -1
- package/dist/src/sync/inventory-collector.test.js.map +1 -1
- package/dist/src/sync/inventory-types.d.ts +9 -0
- package/dist/src/sync/inventory-types.d.ts.map +1 -1
- package/dist/src/sync/inventory-types.js +3 -0
- package/dist/src/sync/inventory-types.js.map +1 -1
- package/dist/src/telemetry/agent-marker.d.ts +137 -0
- package/dist/src/telemetry/agent-marker.d.ts.map +1 -0
- package/dist/src/telemetry/agent-marker.js +242 -0
- package/dist/src/telemetry/agent-marker.js.map +1 -0
- package/dist/src/telemetry/agent-marker.test.d.ts +13 -0
- package/dist/src/telemetry/agent-marker.test.d.ts.map +1 -0
- package/dist/src/telemetry/agent-marker.test.js +202 -0
- package/dist/src/telemetry/agent-marker.test.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +2 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +6 -1
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/posthog.d.ts +25 -0
- package/dist/src/telemetry/posthog.d.ts.map +1 -1
- package/dist/src/telemetry/posthog.js +10 -1
- package/dist/src/telemetry/posthog.js.map +1 -1
- package/dist/src/telemetry/wrap.bench.js +5 -0
- package/dist/src/telemetry/wrap.bench.js.map +1 -1
- package/dist/src/telemetry/wrap.correlation.test.d.ts +20 -0
- package/dist/src/telemetry/wrap.correlation.test.d.ts.map +1 -0
- package/dist/src/telemetry/wrap.correlation.test.js +174 -0
- package/dist/src/telemetry/wrap.correlation.test.js.map +1 -0
- package/dist/src/telemetry/wrap.d.ts +28 -7
- package/dist/src/telemetry/wrap.d.ts.map +1 -1
- package/dist/src/telemetry/wrap.gate.test.d.ts +22 -0
- package/dist/src/telemetry/wrap.gate.test.d.ts.map +1 -0
- package/dist/src/telemetry/wrap.gate.test.js +202 -0
- package/dist/src/telemetry/wrap.gate.test.js.map +1 -0
- package/dist/src/telemetry/wrap.js +196 -52
- package/dist/src/telemetry/wrap.js.map +1 -1
- package/dist/src/telemetry/wrap.marker.test.d.ts +16 -0
- package/dist/src/telemetry/wrap.marker.test.d.ts.map +1 -0
- package/dist/src/telemetry/wrap.marker.test.js +190 -0
- package/dist/src/telemetry/wrap.marker.test.js.map +1 -0
- package/dist/src/telemetry/wrap.test.js +14 -0
- package/dist/src/telemetry/wrap.test.js.map +1 -1
- package/dist/src/types.d.ts +6 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tests/SecurityScanner.exec.test.js +60 -0
- package/dist/tests/SecurityScanner.exec.test.js.map +1 -1
- package/dist/tests/security/ContinuousSecurity.test.js +10 -4
- package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
- package/dist/tests/security/SecurityScanner.chmod-evasion.test.d.ts +2 -0
- package/dist/tests/security/SecurityScanner.chmod-evasion.test.d.ts.map +1 -0
- package/dist/tests/security/SecurityScanner.chmod-evasion.test.js +126 -0
- package/dist/tests/security/SecurityScanner.chmod-evasion.test.js.map +1 -0
- package/dist/tests/security/chmod-compound.test.d.ts +2 -0
- package/dist/tests/security/chmod-compound.test.d.ts.map +1 -0
- package/dist/tests/security/chmod-compound.test.js +188 -0
- package/dist/tests/security/chmod-compound.test.js.map +1 -0
- package/dist/tests/security/pii-detection.test.js +24 -0
- package/dist/tests/security/pii-detection.test.js.map +1 -1
- package/dist/tests/security/scanner-regression-guard.test.d.ts +23 -7
- package/dist/tests/security/scanner-regression-guard.test.d.ts.map +1 -1
- package/dist/tests/security/scanner-regression-guard.test.js +206 -12
- package/dist/tests/security/scanner-regression-guard.test.js.map +1 -1
- package/dist/tests/security/sensitive-path-fp.test.d.ts +2 -0
- package/dist/tests/security/sensitive-path-fp.test.d.ts.map +1 -0
- package/dist/tests/security/sensitive-path-fp.test.js +142 -0
- package/dist/tests/security/sensitive-path-fp.test.js.map +1 -0
- package/dist/tests/services/bundled-sibling-scan.test.d.ts +2 -0
- package/dist/tests/services/bundled-sibling-scan.test.d.ts.map +1 -0
- package/dist/tests/services/bundled-sibling-scan.test.js +139 -0
- package/dist/tests/services/bundled-sibling-scan.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.io.test.js +166 -0
- package/dist/tests/unit/services/skill-installation.io.test.js.map +1 -1
- package/dist/tests/unit/services/skill-installation.policy.test.d.ts +8 -0
- package/dist/tests/unit/services/skill-installation.policy.test.d.ts.map +1 -0
- package/dist/tests/unit/services/skill-installation.policy.test.js +151 -0
- package/dist/tests/unit/services/skill-installation.policy.test.js.map +1 -0
- package/package.json +28 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory-collector.test.js","sourceRoot":"","sources":["../../../src/sync/inventory-collector.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAU;IAC/E,mBAAmB,EAAE,EAA4B;CAClD,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,UAAU,EAAE,SAAS,CAAC,UAAU;IAChC,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;CACnD,CAAC,CAAC,CAAA;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,SAAS,OAAO,CAAC,IAAY,EAAE,OAAgB;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,OAAO,cAAc,IAAI,GAAG,WAAW,cAAc,IAAI,IAAI,CAAA;AAC/D,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,IAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"inventory-collector.test.js","sourceRoot":"","sources":["../../../src/sync/inventory-collector.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAU;IAC/E,mBAAmB,EAAE,EAA4B;CAClD,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,UAAU,EAAE,SAAS,CAAC,UAAU;IAChC,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;CACnD,CAAC,CAAC,CAAA;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,SAAS,OAAO,CAAC,IAAY,EAAE,OAAgB;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,OAAO,cAAc,IAAI,GAAG,WAAW,cAAc,IAAI,IAAI,CAAA;AAC/D,CAAC;AAQD,SAAS,qBAAqB,CAC5B,IAAY,EACZ,UAA4B,EAC5B,OAAgB;IAEhB,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5E,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACtF,OAAO,cAAc,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,cAAc,IAAI,IAAI,CAAA;AACrG,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,IAAY,EACZ,OAAsE,EAAE;IAExE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAW,EAAE,IAAI,CAAC,CAAA;IACxE,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3D,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,IAAI,IAAY,CAAA;AAEhB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAA;QACtD,uEAAuE;QACvE,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACtC,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACpD,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,EAAE,CAAC,eAAe,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,MAAM,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAExD,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAA;QAEvD,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC3E,6EAA6E;QAC7E,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvE,0DAA0D;QAC1D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;QACrG,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAC1E,MAAM,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACnF,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAW,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;QAE1F,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAA;QAEvD,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC3B,mEAAmE;QACnE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,8CAA8C;IAC9C,EAAE;IACF,4EAA4E;IAC5E,gFAAgF;IAChF,8EAA8E;IAC9E,+EAA+E;IAC/E,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;QACxG,MAAM,CAAC,GAAG,CAAC,CAAA;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;QAEtE,gFAAgF;QAChF,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC3B,qEAAqE;QACrE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAChE,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;QAE3D,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;QAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAA;QAEvD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAEtD,0EAA0E;QAC1E,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;QAChC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,6EAA6E;IAC7E,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,WAAW,CAAC,aAAa,EAAE,kBAAkB,EAAE;YACnD,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,qBAAqB,CAC5B,kBAAkB,EAClB;gBACE,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,+BAA+B;aAC5C,EACD,OAAO,CACR;SACF,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,kBAAkB,CAAC,CAAA;QAEpE,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,6EAA6E;IAC7E,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAClG,uEAAuE;QACvE,MAAM,WAAW,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAEvE,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,CAAA;QAEjE,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QAChC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;QACjC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAC5E,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;QAC7G,MAAM,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAEpE,uEAAuE;QACvE,4EAA4E;QAC5E,yEAAyE;QACzE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAW,EAAE,UAAU,CAAC,CAAA;QAC3F,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE9D,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAE3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACtE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QACtE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -48,6 +48,12 @@ export interface InventorySkillEntry {
|
|
|
48
48
|
version?: string | null;
|
|
49
49
|
/** Where it was installed from (registry, local path, git, …). */
|
|
50
50
|
source?: string | null;
|
|
51
|
+
/** Author claim from SKILL.md front-matter — self-asserted (unverified). */
|
|
52
|
+
author?: string | null;
|
|
53
|
+
/** License claim from SKILL.md front-matter — self-asserted (unverified). */
|
|
54
|
+
license?: string | null;
|
|
55
|
+
/** Repository URL claim from SKILL.md front-matter — self-asserted (unverified). */
|
|
56
|
+
repository?: string | null;
|
|
51
57
|
/** Content hash of the installed skill, for registry drift detection. */
|
|
52
58
|
content_hash?: string | null;
|
|
53
59
|
/** Pinned version, if the user pinned it (suppresses drift/stale flags). */
|
|
@@ -92,6 +98,9 @@ export declare const INVENTORY_LIMITS: {
|
|
|
92
98
|
readonly SKILL_ID_MAX: 255;
|
|
93
99
|
readonly VERSION_MAX: 64;
|
|
94
100
|
readonly SOURCE_MAX: 255;
|
|
101
|
+
readonly AUTHOR_MAX: 200;
|
|
102
|
+
readonly LICENSE_MAX: 64;
|
|
103
|
+
readonly REPOSITORY_MAX: 512;
|
|
95
104
|
readonly CONTENT_HASH_MAX: 128;
|
|
96
105
|
readonly PINNED_VERSION_MAX: 64;
|
|
97
106
|
readonly UPDATE_POLICY_MAX: 16;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory-types.d.ts","sourceRoot":"","sources":["../../../src/sync/inventory-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE/D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,oCAAoC;IACpC,aAAa,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAA;CAC7C;AAED,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"inventory-types.d.ts","sourceRoot":"","sources":["../../../src/sync/inventory-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE/D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,oCAAoC;IACpC,aAAa,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAA;CAC7C;AAED,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;CAkBnB,CAAA;AAEV,wEAAwE;AACxE,eAAO,MAAM,yBAAyB,EAAE,SAAS,qBAAqB,EAI5D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory-types.js","sourceRoot":"","sources":["../../../src/sync/inventory-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"inventory-types.js","sourceRoot":"","sources":["../../../src/sync/inventory-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA4EH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,GAAG;IACd,oBAAoB,EAAE,GAAG;IACzB,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE;IACZ,eAAe,EAAE,EAAE;IACnB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,GAAG;IACjB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,GAAG;IACnB,gBAAgB,EAAE,GAAG;IACrB,kBAAkB,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE;CACb,CAAA;AAEV,wEAAwE;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAqC;IACzE,MAAM;IACN,QAAQ;IACR,OAAO;CACC,CAAA"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-5456: Agent-mediation marker channel.
|
|
3
|
+
*
|
|
4
|
+
* Wave 1 needs to distinguish agent-mediated skill invocations from ambient
|
|
5
|
+
* ones so the mediation gate (≥25% agent-mediated share by day 30) is
|
|
6
|
+
* measurable. Two channels feed the three per-event telemetry fields
|
|
7
|
+
* (`agent_session`, `nudge_origin`, `trigger_id`) plus the per-harness
|
|
8
|
+
* `framework` attribution (via the vocabulary-validated `harness` hint —
|
|
9
|
+
* the mediation dashboard's per-harness denominator):
|
|
10
|
+
*
|
|
11
|
+
* 1. MCP `_meta` on the tool call (spec-clean; wins when present). No Tier-1
|
|
12
|
+
* harness can inject `_meta` on a genuine agent tool call today (Step-0
|
|
13
|
+
* spike (e)) — hooks only touch `arguments`, the model has no `_meta`
|
|
14
|
+
* schema affordance — so this is forward-looking infrastructure that
|
|
15
|
+
* activates the day a harness ships native support.
|
|
16
|
+
* 2. A session-scoped marker file written by a harness SessionStart hook
|
|
17
|
+
* under `~/.skillsmith/agent-markers/` (PRIMARY channel for Wave 1). The
|
|
18
|
+
* server treats these files as READ-ONLY: it never writes, updates, or
|
|
19
|
+
* deletes them (that is the hook's job at SessionEnd). Stale files that a
|
|
20
|
+
* crashed session left behind expire by a session TTL.
|
|
21
|
+
*
|
|
22
|
+
* A missing / corrupt / expired file is simply "no marker" — never an error.
|
|
23
|
+
*/
|
|
24
|
+
/** On-disk marker schema version — bump on a breaking shape change. */
|
|
25
|
+
export declare const AGENT_MARKER_SCHEMA_VERSION = 1;
|
|
26
|
+
/**
|
|
27
|
+
* Session TTL. A marker older than this (measured from its `started_at`) is
|
|
28
|
+
* ignored as stale.
|
|
29
|
+
*
|
|
30
|
+
* Rationale for 12h: the primary staleness control is the hook deleting its
|
|
31
|
+
* own file at SessionEnd; the TTL only backstops a session that crashed
|
|
32
|
+
* without cleanup. 12h comfortably spans a long interactive working day so a
|
|
33
|
+
* genuinely live session is never expired mid-flight, while still ensuring a
|
|
34
|
+
* marker abandoned by a crash cannot mislabel invocations a day or more later.
|
|
35
|
+
*/
|
|
36
|
+
export declare const AGENT_MARKER_TTL_MS: number;
|
|
37
|
+
/**
|
|
38
|
+
* Max bytes read from a single marker file.
|
|
39
|
+
*
|
|
40
|
+
* `readSessionMarker` runs synchronously on the MCP dispatch hot path (every
|
|
41
|
+
* tool call). A well-formed marker is a handful of scalar fields — a few
|
|
42
|
+
* hundred bytes; 16 KiB is generous headroom. Without this cap a corrupt or
|
|
43
|
+
* hostile file of unbounded size would block the event loop for the full
|
|
44
|
+
* synchronous `readFileSync` + `JSON.parse` on every single tool call until
|
|
45
|
+
* the hook cleans it up (or the TTL elapses, which only affects staleness,
|
|
46
|
+
* not the read cost). Oversized files are treated as corrupt: skipped, never
|
|
47
|
+
* thrown.
|
|
48
|
+
*/
|
|
49
|
+
export declare const AGENT_MARKER_MAX_FILE_BYTES: number;
|
|
50
|
+
/**
|
|
51
|
+
* Accepted `harness` vocabulary — the SMI-5012 wire format's `framework` enum
|
|
52
|
+
* (authoritative list: skill-invoke-telemetry-guide.md § Wire format) minus
|
|
53
|
+
* `'unknown'`. `'unknown'` is the extractor's absence fallback, not a value a
|
|
54
|
+
* marker may assert: accepting it would let a marker file overwrite a real
|
|
55
|
+
* extractor result with noise. Anything outside this set (junk from disk or
|
|
56
|
+
* `_meta`) resolves to `undefined` and never flows into telemetry.
|
|
57
|
+
*/
|
|
58
|
+
export declare const KNOWN_HARNESS_FRAMEWORKS: readonly ["claude-code", "cursor", "continue", "cline", "copilot", "windsurf", "codex", "vscode", "opencode", "hermes"];
|
|
59
|
+
/** A validated harness/framework value from the marker channel. */
|
|
60
|
+
export type HarnessFramework = (typeof KNOWN_HARNESS_FRAMEWORKS)[number];
|
|
61
|
+
/** The "no marker present" resolution — all fields at their neutral default. */
|
|
62
|
+
export declare const NO_AGENT_MARKER: AgentMarker;
|
|
63
|
+
/**
|
|
64
|
+
* Resolved marker — the three per-event fields threaded into the telemetry
|
|
65
|
+
* payload. Always fully populated (neutral defaults when no marker resolves).
|
|
66
|
+
*/
|
|
67
|
+
export interface AgentMarker {
|
|
68
|
+
/** True when the invocation is part of an agent-mediated session. */
|
|
69
|
+
agentSession: boolean;
|
|
70
|
+
/** True when the invocation originated from a nudge (job-9 onboarding). */
|
|
71
|
+
nudgeOrigin: boolean;
|
|
72
|
+
/** Paywall / nudge trigger id, or `null` when none applies. */
|
|
73
|
+
triggerId: string | null;
|
|
74
|
+
/**
|
|
75
|
+
* Validated harness identity from the marker channel (the file's `harness`
|
|
76
|
+
* hint or `_meta.harness`). Feeds the event's `framework` field when the
|
|
77
|
+
* per-call extractor has nothing better (see wrap.ts). Absent when the
|
|
78
|
+
* channel supplied no value or an out-of-vocabulary one.
|
|
79
|
+
*/
|
|
80
|
+
harness?: HarnessFramework;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* On-disk marker file shape (snake_case to match the telemetry wire format).
|
|
84
|
+
* Written by a harness SessionStart hook; only ever READ by the server.
|
|
85
|
+
*/
|
|
86
|
+
export interface AgentMarkerFile {
|
|
87
|
+
/** Schema version (see `AGENT_MARKER_SCHEMA_VERSION`). */
|
|
88
|
+
schema?: number;
|
|
89
|
+
/** Harness session identifier (the hook's `session_id`). */
|
|
90
|
+
session_id: string;
|
|
91
|
+
/** Epoch-ms session start; the TTL is measured from this. */
|
|
92
|
+
started_at: number;
|
|
93
|
+
/** Optional harness hint, e.g. `'claude-code'`, `'cursor'`, `'opencode'`. */
|
|
94
|
+
harness?: string;
|
|
95
|
+
/** Agent session? Defaults true for a valid marker; set false to opt out. */
|
|
96
|
+
agent_session?: boolean;
|
|
97
|
+
/** Nudge-originated? Defaults false. */
|
|
98
|
+
nudge_origin?: boolean;
|
|
99
|
+
/** Trigger id, or null. Defaults null. */
|
|
100
|
+
trigger_id?: string | null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Read the freshest non-expired session marker from `~/.skillsmith/agent-markers/`.
|
|
104
|
+
*
|
|
105
|
+
* Wave-1 correlation note: the server cannot know its own harness session id,
|
|
106
|
+
* so it selects the most recently started live marker. Concurrent sessions on
|
|
107
|
+
* one machine may therefore observe each other's marker — an accepted,
|
|
108
|
+
* documented imprecision (the `_meta` channel is exact and wins when present).
|
|
109
|
+
*
|
|
110
|
+
* @returns the resolved marker, or null when no live marker exists.
|
|
111
|
+
*/
|
|
112
|
+
export declare function readSessionMarker(opts?: {
|
|
113
|
+
now?: number;
|
|
114
|
+
}): AgentMarker | null;
|
|
115
|
+
/**
|
|
116
|
+
* Defensively extract the marker fields from an MCP request's `_meta`.
|
|
117
|
+
*
|
|
118
|
+
* `_meta` is a loose passthrough schema (SDK 1.29.0), so junk keys and wrong
|
|
119
|
+
* types must be ignored. Keys are snake_case to match the wire format:
|
|
120
|
+
* `agent_session`, `nudge_origin`, `trigger_id`, `harness`. Only well-typed
|
|
121
|
+
* values are returned; everything else is dropped (`harness` additionally
|
|
122
|
+
* gated on the `KNOWN_HARNESS_FRAMEWORKS` vocabulary).
|
|
123
|
+
*/
|
|
124
|
+
export declare function extractMarkerMeta(meta: unknown): Partial<AgentMarker>;
|
|
125
|
+
/**
|
|
126
|
+
* Resolve the agent marker for a single tool call.
|
|
127
|
+
*
|
|
128
|
+
* Per-field precedence: a value present in `_meta` wins; otherwise the session
|
|
129
|
+
* marker file supplies it; otherwise the neutral default (`false`/`false`/`null`).
|
|
130
|
+
*
|
|
131
|
+
* @param meta - the MCP request's `_meta` object (or undefined).
|
|
132
|
+
* @param opts.now - injectable clock for tests.
|
|
133
|
+
*/
|
|
134
|
+
export declare function resolveAgentMarker(meta: unknown, opts?: {
|
|
135
|
+
now?: number;
|
|
136
|
+
}): AgentMarker;
|
|
137
|
+
//# sourceMappingURL=agent-marker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-marker.d.ts","sourceRoot":"","sources":["../../../src/telemetry/agent-marker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,uEAAuE;AACvE,eAAO,MAAM,2BAA2B,IAAI,CAAA;AAE5C;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,QAAsB,CAAA;AAEtD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,QAAY,CAAA;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,yHAW3B,CAAA;AAEV,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAA;AAWxE,gFAAgF;AAChF,eAAO,MAAM,eAAe,EAAE,WAI5B,CAAA;AAMF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,YAAY,EAAE,OAAO,CAAA;IACrB,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAA;IACpB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAkFD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,GAAG,IAAI,CAoBjF;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAWrE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,CAS1F"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-5456: Agent-mediation marker channel.
|
|
3
|
+
*
|
|
4
|
+
* Wave 1 needs to distinguish agent-mediated skill invocations from ambient
|
|
5
|
+
* ones so the mediation gate (≥25% agent-mediated share by day 30) is
|
|
6
|
+
* measurable. Two channels feed the three per-event telemetry fields
|
|
7
|
+
* (`agent_session`, `nudge_origin`, `trigger_id`) plus the per-harness
|
|
8
|
+
* `framework` attribution (via the vocabulary-validated `harness` hint —
|
|
9
|
+
* the mediation dashboard's per-harness denominator):
|
|
10
|
+
*
|
|
11
|
+
* 1. MCP `_meta` on the tool call (spec-clean; wins when present). No Tier-1
|
|
12
|
+
* harness can inject `_meta` on a genuine agent tool call today (Step-0
|
|
13
|
+
* spike (e)) — hooks only touch `arguments`, the model has no `_meta`
|
|
14
|
+
* schema affordance — so this is forward-looking infrastructure that
|
|
15
|
+
* activates the day a harness ships native support.
|
|
16
|
+
* 2. A session-scoped marker file written by a harness SessionStart hook
|
|
17
|
+
* under `~/.skillsmith/agent-markers/` (PRIMARY channel for Wave 1). The
|
|
18
|
+
* server treats these files as READ-ONLY: it never writes, updates, or
|
|
19
|
+
* deletes them (that is the hook's job at SessionEnd). Stale files that a
|
|
20
|
+
* crashed session left behind expire by a session TTL.
|
|
21
|
+
*
|
|
22
|
+
* A missing / corrupt / expired file is simply "no marker" — never an error.
|
|
23
|
+
*/
|
|
24
|
+
import { existsSync, lstatSync, readFileSync, readdirSync } from 'node:fs';
|
|
25
|
+
import { join } from 'node:path';
|
|
26
|
+
import { getConfigDir } from '../config/index.js';
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Constants
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
/** On-disk marker schema version — bump on a breaking shape change. */
|
|
31
|
+
export const AGENT_MARKER_SCHEMA_VERSION = 1;
|
|
32
|
+
/**
|
|
33
|
+
* Session TTL. A marker older than this (measured from its `started_at`) is
|
|
34
|
+
* ignored as stale.
|
|
35
|
+
*
|
|
36
|
+
* Rationale for 12h: the primary staleness control is the hook deleting its
|
|
37
|
+
* own file at SessionEnd; the TTL only backstops a session that crashed
|
|
38
|
+
* without cleanup. 12h comfortably spans a long interactive working day so a
|
|
39
|
+
* genuinely live session is never expired mid-flight, while still ensuring a
|
|
40
|
+
* marker abandoned by a crash cannot mislabel invocations a day or more later.
|
|
41
|
+
*/
|
|
42
|
+
export const AGENT_MARKER_TTL_MS = 12 * 60 * 60 * 1000;
|
|
43
|
+
/**
|
|
44
|
+
* Max bytes read from a single marker file.
|
|
45
|
+
*
|
|
46
|
+
* `readSessionMarker` runs synchronously on the MCP dispatch hot path (every
|
|
47
|
+
* tool call). A well-formed marker is a handful of scalar fields — a few
|
|
48
|
+
* hundred bytes; 16 KiB is generous headroom. Without this cap a corrupt or
|
|
49
|
+
* hostile file of unbounded size would block the event loop for the full
|
|
50
|
+
* synchronous `readFileSync` + `JSON.parse` on every single tool call until
|
|
51
|
+
* the hook cleans it up (or the TTL elapses, which only affects staleness,
|
|
52
|
+
* not the read cost). Oversized files are treated as corrupt: skipped, never
|
|
53
|
+
* thrown.
|
|
54
|
+
*/
|
|
55
|
+
export const AGENT_MARKER_MAX_FILE_BYTES = 16 * 1024;
|
|
56
|
+
/**
|
|
57
|
+
* Accepted `harness` vocabulary — the SMI-5012 wire format's `framework` enum
|
|
58
|
+
* (authoritative list: skill-invoke-telemetry-guide.md § Wire format) minus
|
|
59
|
+
* `'unknown'`. `'unknown'` is the extractor's absence fallback, not a value a
|
|
60
|
+
* marker may assert: accepting it would let a marker file overwrite a real
|
|
61
|
+
* extractor result with noise. Anything outside this set (junk from disk or
|
|
62
|
+
* `_meta`) resolves to `undefined` and never flows into telemetry.
|
|
63
|
+
*/
|
|
64
|
+
export const KNOWN_HARNESS_FRAMEWORKS = [
|
|
65
|
+
'claude-code',
|
|
66
|
+
'cursor',
|
|
67
|
+
'continue',
|
|
68
|
+
'cline',
|
|
69
|
+
'copilot',
|
|
70
|
+
'windsurf',
|
|
71
|
+
'codex',
|
|
72
|
+
'vscode',
|
|
73
|
+
'opencode',
|
|
74
|
+
'hermes',
|
|
75
|
+
];
|
|
76
|
+
const KNOWN_HARNESS_SET = new Set(KNOWN_HARNESS_FRAMEWORKS);
|
|
77
|
+
/** Validate an untrusted harness value; anything not in the vocabulary → undefined. */
|
|
78
|
+
function validHarness(value) {
|
|
79
|
+
return typeof value === 'string' && KNOWN_HARNESS_SET.has(value)
|
|
80
|
+
? value
|
|
81
|
+
: undefined;
|
|
82
|
+
}
|
|
83
|
+
/** The "no marker present" resolution — all fields at their neutral default. */
|
|
84
|
+
export const NO_AGENT_MARKER = Object.freeze({
|
|
85
|
+
agentSession: false,
|
|
86
|
+
nudgeOrigin: false,
|
|
87
|
+
triggerId: null,
|
|
88
|
+
});
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// Directory resolution (matches getCacheDir override convention, SMI-4577)
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
/**
|
|
93
|
+
* Resolve `~/.skillsmith/agent-markers/`.
|
|
94
|
+
*
|
|
95
|
+
* `SKILLSMITH_AGENT_MARKER_DIR` overrides the default — mirrors
|
|
96
|
+
* `SKILLSMITH_CACHE_DIR_OVERRIDE`, needed because macOS `os.homedir()`
|
|
97
|
+
* resolves via `getpwuid()` and ignores `process.env.HOME` mutations in tests.
|
|
98
|
+
*
|
|
99
|
+
* Read-only: this only computes the path, it never creates the directory.
|
|
100
|
+
*/
|
|
101
|
+
function getAgentMarkerDir() {
|
|
102
|
+
const override = process.env.SKILLSMITH_AGENT_MARKER_DIR;
|
|
103
|
+
return override && override.length > 0 ? override : join(getConfigDir(), 'agent-markers');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Read + validate a single marker file. Returns null for anything that is not
|
|
107
|
+
* a well-formed, non-expired marker (corrupt JSON, wrong shape, missing/invalid
|
|
108
|
+
* `started_at`, empty `session_id`, past the TTL, not a regular file, or over
|
|
109
|
+
* `AGENT_MARKER_MAX_FILE_BYTES`). Never throws.
|
|
110
|
+
*/
|
|
111
|
+
function readMarkerFile(path, now) {
|
|
112
|
+
let raw;
|
|
113
|
+
try {
|
|
114
|
+
// `lstatSync` (not `stat`) so a symlink is rejected outright rather than
|
|
115
|
+
// followed — the directory is documented read-only server-side, so a
|
|
116
|
+
// symlink here is never something the reader itself created.
|
|
117
|
+
const stat = lstatSync(path);
|
|
118
|
+
if (!stat.isFile())
|
|
119
|
+
return null;
|
|
120
|
+
if (stat.size > AGENT_MARKER_MAX_FILE_BYTES)
|
|
121
|
+
return null;
|
|
122
|
+
raw = readFileSync(path, 'utf-8');
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
let data;
|
|
128
|
+
try {
|
|
129
|
+
data = JSON.parse(raw);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
if (!data || typeof data !== 'object')
|
|
135
|
+
return null;
|
|
136
|
+
const file = data;
|
|
137
|
+
if (typeof file.session_id !== 'string' || file.session_id.length === 0)
|
|
138
|
+
return null;
|
|
139
|
+
const startedAt = file.started_at;
|
|
140
|
+
if (typeof startedAt !== 'number' || !Number.isFinite(startedAt) || startedAt <= 0)
|
|
141
|
+
return null;
|
|
142
|
+
// Expired: older than the TTL. A future timestamp (clock skew) is not stale.
|
|
143
|
+
if (now - startedAt > AGENT_MARKER_TTL_MS)
|
|
144
|
+
return null;
|
|
145
|
+
return { file: file, startedAt };
|
|
146
|
+
}
|
|
147
|
+
/** Map a validated on-disk file to the resolved marker fields. */
|
|
148
|
+
function markerFromFile(file) {
|
|
149
|
+
return {
|
|
150
|
+
// A valid marker means "agent session" by presence; honour an explicit opt-out.
|
|
151
|
+
agentSession: file.agent_session === false ? false : true,
|
|
152
|
+
nudgeOrigin: file.nudge_origin === true,
|
|
153
|
+
triggerId: typeof file.trigger_id === 'string' ? file.trigger_id : null,
|
|
154
|
+
// Vocabulary-gated: junk from disk must not flow into telemetry.
|
|
155
|
+
harness: validHarness(file.harness),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Read the freshest non-expired session marker from `~/.skillsmith/agent-markers/`.
|
|
160
|
+
*
|
|
161
|
+
* Wave-1 correlation note: the server cannot know its own harness session id,
|
|
162
|
+
* so it selects the most recently started live marker. Concurrent sessions on
|
|
163
|
+
* one machine may therefore observe each other's marker — an accepted,
|
|
164
|
+
* documented imprecision (the `_meta` channel is exact and wins when present).
|
|
165
|
+
*
|
|
166
|
+
* @returns the resolved marker, or null when no live marker exists.
|
|
167
|
+
*/
|
|
168
|
+
export function readSessionMarker(opts = {}) {
|
|
169
|
+
const now = opts.now ?? Date.now();
|
|
170
|
+
const dir = getAgentMarkerDir();
|
|
171
|
+
let names;
|
|
172
|
+
try {
|
|
173
|
+
if (!existsSync(dir))
|
|
174
|
+
return null;
|
|
175
|
+
names = readdirSync(dir).filter((n) => n.endsWith('.json'));
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
let best = null;
|
|
181
|
+
for (const name of names) {
|
|
182
|
+
const parsed = readMarkerFile(join(dir, name), now);
|
|
183
|
+
if (!parsed)
|
|
184
|
+
continue;
|
|
185
|
+
if (!best || parsed.startedAt > best.startedAt)
|
|
186
|
+
best = parsed;
|
|
187
|
+
}
|
|
188
|
+
return best ? markerFromFile(best.file) : null;
|
|
189
|
+
}
|
|
190
|
+
// ---------------------------------------------------------------------------
|
|
191
|
+
// `_meta` extraction
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
/**
|
|
194
|
+
* Defensively extract the marker fields from an MCP request's `_meta`.
|
|
195
|
+
*
|
|
196
|
+
* `_meta` is a loose passthrough schema (SDK 1.29.0), so junk keys and wrong
|
|
197
|
+
* types must be ignored. Keys are snake_case to match the wire format:
|
|
198
|
+
* `agent_session`, `nudge_origin`, `trigger_id`, `harness`. Only well-typed
|
|
199
|
+
* values are returned; everything else is dropped (`harness` additionally
|
|
200
|
+
* gated on the `KNOWN_HARNESS_FRAMEWORKS` vocabulary).
|
|
201
|
+
*/
|
|
202
|
+
export function extractMarkerMeta(meta) {
|
|
203
|
+
if (!meta || typeof meta !== 'object')
|
|
204
|
+
return {};
|
|
205
|
+
const m = meta;
|
|
206
|
+
const out = {};
|
|
207
|
+
if (typeof m.agent_session === 'boolean')
|
|
208
|
+
out.agentSession = m.agent_session;
|
|
209
|
+
if (typeof m.nudge_origin === 'boolean')
|
|
210
|
+
out.nudgeOrigin = m.nudge_origin;
|
|
211
|
+
if (typeof m.trigger_id === 'string')
|
|
212
|
+
out.triggerId = m.trigger_id;
|
|
213
|
+
else if (m.trigger_id === null)
|
|
214
|
+
out.triggerId = null;
|
|
215
|
+
const metaHarness = validHarness(m.harness);
|
|
216
|
+
if (metaHarness !== undefined)
|
|
217
|
+
out.harness = metaHarness;
|
|
218
|
+
return out;
|
|
219
|
+
}
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
221
|
+
// Resolution (precedence: _meta wins per-field, else marker file, else default)
|
|
222
|
+
// ---------------------------------------------------------------------------
|
|
223
|
+
/**
|
|
224
|
+
* Resolve the agent marker for a single tool call.
|
|
225
|
+
*
|
|
226
|
+
* Per-field precedence: a value present in `_meta` wins; otherwise the session
|
|
227
|
+
* marker file supplies it; otherwise the neutral default (`false`/`false`/`null`).
|
|
228
|
+
*
|
|
229
|
+
* @param meta - the MCP request's `_meta` object (or undefined).
|
|
230
|
+
* @param opts.now - injectable clock for tests.
|
|
231
|
+
*/
|
|
232
|
+
export function resolveAgentMarker(meta, opts = {}) {
|
|
233
|
+
const fromFile = readSessionMarker(opts) ?? NO_AGENT_MARKER;
|
|
234
|
+
const fromMeta = extractMarkerMeta(meta);
|
|
235
|
+
return {
|
|
236
|
+
agentSession: fromMeta.agentSession ?? fromFile.agentSession,
|
|
237
|
+
nudgeOrigin: fromMeta.nudgeOrigin ?? fromFile.nudgeOrigin,
|
|
238
|
+
triggerId: fromMeta.triggerId !== undefined ? fromMeta.triggerId : fromFile.triggerId,
|
|
239
|
+
harness: fromMeta.harness ?? fromFile.harness,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=agent-marker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-marker.js","sourceRoot":"","sources":["../../../src/telemetry/agent-marker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,uEAAuE;AACvE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAA;AAE5C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAA;AAEpD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,aAAa;IACb,QAAQ;IACR,UAAU;IACV,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,QAAQ;IACR,UAAU;IACV,QAAQ;CACA,CAAA;AAKV,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAA;AAEhF,uFAAuF;AACvF,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9D,CAAC,CAAE,KAA0B;QAC7B,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAgB,MAAM,CAAC,MAAM,CAAC;IACxD,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AA+CF,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,SAAS,iBAAiB;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAA;IACxD,OAAO,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAA;AAC3F,CAAC;AAWD;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,GAAW;IAC/C,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,yEAAyE;QACzE,qEAAqE;QACrE,6DAA6D;QAC7D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAA;QAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,2BAA2B;YAAE,OAAO,IAAI,CAAA;QACxD,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAa,CAAA;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAClD,MAAM,IAAI,GAAG,IAA+B,CAAA;IAE5C,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAA;IACjC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAE/F,6EAA6E;IAC7E,IAAI,GAAG,GAAG,SAAS,GAAG,mBAAmB;QAAE,OAAO,IAAI,CAAA;IAEtD,OAAO,EAAE,IAAI,EAAE,IAAkC,EAAE,SAAS,EAAE,CAAA;AAChE,CAAC;AAED,kEAAkE;AAClE,SAAS,cAAc,CAAC,IAAqB;IAC3C,OAAO;QACL,gFAAgF;QAChF,YAAY,EAAE,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACzD,WAAW,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI;QACvC,SAAS,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QACvE,iEAAiE;QACjE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;KACpC,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAyB,EAAE;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IAClC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAA;IAE/B,IAAI,KAAe,CAAA;IACnB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QACjC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAI,GAAwB,IAAI,CAAA;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM;YAAE,SAAQ;QACrB,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAAE,IAAI,GAAG,MAAM,CAAA;IAC/D,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChD,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAChD,MAAM,CAAC,GAAG,IAA+B,CAAA;IACzC,MAAM,GAAG,GAAyB,EAAE,CAAA;IACpC,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,SAAS;QAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,aAAa,CAAA;IAC5E,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,SAAS;QAAE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,CAAA;IACzE,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,CAAA;SAC7D,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI;QAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;IACpD,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,WAAW,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,GAAG,WAAW,CAAA;IACxD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa,EAAE,OAAyB,EAAE;IAC3E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAA;IAC3D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY;QAC5D,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW;QACzD,SAAS,EAAE,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;QACrF,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;KAC9C,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-5456: Tests for the agent-mediation marker channel.
|
|
3
|
+
*
|
|
4
|
+
* Covers the P-5 shared-state invariants for the session marker file:
|
|
5
|
+
* - `_meta` wins over the marker file (per-field precedence)
|
|
6
|
+
* - marker file alone works
|
|
7
|
+
* - neither present ⇒ fields default false / false / null
|
|
8
|
+
* - stale (past-TTL) marker is ignored
|
|
9
|
+
* - corrupt / malformed marker file is ignored, never throws
|
|
10
|
+
* - `_meta` extraction is defensive (junk types dropped)
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=agent-marker.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-marker.test.d.ts","sourceRoot":"","sources":["../../../src/telemetry/agent-marker.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|