@skillsmith/core 0.4.1 → 0.4.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/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/adapters/java-parsers.d.ts +64 -0
- package/dist/src/analysis/adapters/java-parsers.d.ts.map +1 -0
- package/dist/src/analysis/adapters/java-parsers.js +114 -0
- package/dist/src/analysis/adapters/java-parsers.js.map +1 -0
- package/dist/src/analysis/adapters/java.d.ts +1 -51
- package/dist/src/analysis/adapters/java.d.ts.map +1 -1
- package/dist/src/analysis/adapters/java.js +94 -205
- package/dist/src/analysis/adapters/java.js.map +1 -1
- package/dist/src/analysis/adapters/python-frameworks.d.ts +21 -0
- package/dist/src/analysis/adapters/python-frameworks.d.ts.map +1 -0
- package/dist/src/analysis/adapters/python-frameworks.js +86 -0
- package/dist/src/analysis/adapters/python-frameworks.js.map +1 -0
- package/dist/src/analysis/adapters/python.d.ts +0 -50
- package/dist/src/analysis/adapters/python.d.ts.map +1 -1
- package/dist/src/analysis/adapters/python.js +5 -120
- package/dist/src/analysis/adapters/python.js.map +1 -1
- package/dist/src/analysis/adapters/rust-parsers.d.ts +33 -0
- package/dist/src/analysis/adapters/rust-parsers.d.ts.map +1 -0
- package/dist/src/analysis/adapters/rust-parsers.js +94 -0
- package/dist/src/analysis/adapters/rust-parsers.js.map +1 -0
- package/dist/src/analysis/adapters/rust.d.ts +1 -43
- package/dist/src/analysis/adapters/rust.d.ts.map +1 -1
- package/dist/src/analysis/adapters/rust.js +74 -173
- package/dist/src/analysis/adapters/rust.js.map +1 -1
- package/dist/src/analysis/worker-pool.d.ts +25 -52
- package/dist/src/analysis/worker-pool.d.ts.map +1 -1
- package/dist/src/analysis/worker-pool.js +29 -181
- package/dist/src/analysis/worker-pool.js.map +1 -1
- package/dist/src/analysis/worker-types.d.ts +64 -0
- package/dist/src/analysis/worker-types.d.ts.map +1 -0
- package/dist/src/analysis/worker-types.js +11 -0
- package/dist/src/analysis/worker-types.js.map +1 -0
- package/dist/src/analysis/worker-utils.d.ts +49 -0
- package/dist/src/analysis/worker-utils.d.ts.map +1 -0
- package/dist/src/analysis/worker-utils.js +206 -0
- package/dist/src/analysis/worker-utils.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts +1 -5
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.helpers.d.ts +28 -0
- package/dist/src/analytics/AnalyticsRepository.helpers.d.ts.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.helpers.js +90 -0
- package/dist/src/analytics/AnalyticsRepository.helpers.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.js +16 -129
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.types.d.ts +82 -0
- package/dist/src/analytics/AnalyticsRepository.types.d.ts.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.types.js +8 -0
- package/dist/src/analytics/AnalyticsRepository.types.js.map +1 -0
- package/dist/src/api/client.d.ts +5 -121
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +17 -131
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/schemas.d.ts +122 -0
- package/dist/src/api/schemas.d.ts.map +1 -0
- package/dist/src/api/schemas.js +71 -0
- package/dist/src/api/schemas.js.map +1 -0
- package/dist/src/api/utils.d.ts +35 -0
- package/dist/src/api/utils.d.ts.map +1 -0
- package/dist/src/api/utils.js +86 -0
- package/dist/src/api/utils.js.map +1 -0
- package/dist/src/billing/GDPRComplianceService.d.ts +2 -97
- package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -1
- package/dist/src/billing/GDPRComplianceService.js.map +1 -1
- package/dist/src/billing/StripeClient.d.ts +3 -62
- package/dist/src/billing/StripeClient.d.ts.map +1 -1
- package/dist/src/billing/StripeClient.js +10 -68
- package/dist/src/billing/StripeClient.js.map +1 -1
- package/dist/src/billing/StripeReconciliationJob.d.ts +2 -47
- package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -1
- package/dist/src/billing/StripeReconciliationJob.js +1 -41
- package/dist/src/billing/StripeReconciliationJob.js.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.d.ts +3 -59
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.js +14 -304
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
- package/dist/src/billing/gdpr-types.d.ts +103 -0
- package/dist/src/billing/gdpr-types.d.ts.map +1 -0
- package/dist/src/billing/gdpr-types.js +7 -0
- package/dist/src/billing/gdpr-types.js.map +1 -0
- package/dist/src/billing/reconciliation-helpers.d.ts +16 -0
- package/dist/src/billing/reconciliation-helpers.d.ts.map +1 -0
- package/dist/src/billing/reconciliation-helpers.js +53 -0
- package/dist/src/billing/reconciliation-helpers.js.map +1 -0
- package/dist/src/billing/reconciliation-types.d.ts +71 -0
- package/dist/src/billing/reconciliation-types.d.ts.map +1 -0
- package/dist/src/billing/reconciliation-types.js +7 -0
- package/dist/src/billing/reconciliation-types.js.map +1 -0
- package/dist/src/billing/stripe-client-types.d.ts +45 -0
- package/dist/src/billing/stripe-client-types.d.ts.map +1 -0
- package/dist/src/billing/stripe-client-types.js +7 -0
- package/dist/src/billing/stripe-client-types.js.map +1 -0
- package/dist/src/billing/stripe-helpers.d.ts +17 -0
- package/dist/src/billing/stripe-helpers.d.ts.map +1 -0
- package/dist/src/billing/stripe-helpers.js +50 -0
- package/dist/src/billing/stripe-helpers.js.map +1 -0
- package/dist/src/billing/webhook-handlers.d.ts +56 -0
- package/dist/src/billing/webhook-handlers.d.ts.map +1 -0
- package/dist/src/billing/webhook-handlers.js +303 -0
- package/dist/src/billing/webhook-handlers.js.map +1 -0
- package/dist/src/billing/webhook-types.d.ts +42 -0
- package/dist/src/billing/webhook-types.d.ts.map +1 -0
- package/dist/src/billing/webhook-types.js +7 -0
- package/dist/src/billing/webhook-types.js.map +1 -0
- package/dist/src/config/index.d.ts +118 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +172 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/db/migration-types.d.ts +101 -0
- package/dist/src/db/migration-types.d.ts.map +1 -0
- package/dist/src/db/migration-types.js +6 -0
- package/dist/src/db/migration-types.js.map +1 -0
- package/dist/src/db/migration.d.ts +7 -104
- package/dist/src/db/migration.d.ts.map +1 -1
- package/dist/src/db/migration.js +15 -65
- package/dist/src/db/migration.js.map +1 -1
- package/dist/src/embeddings/embedding-types.d.ts +44 -0
- package/dist/src/embeddings/embedding-types.d.ts.map +1 -0
- package/dist/src/embeddings/embedding-types.js +6 -0
- package/dist/src/embeddings/embedding-types.js.map +1 -0
- package/dist/src/embeddings/embedding-utils.d.ts +42 -0
- package/dist/src/embeddings/embedding-utils.d.ts.map +1 -0
- package/dist/src/embeddings/embedding-utils.js +121 -0
- package/dist/src/embeddings/embedding-utils.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +36 -112
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +37 -210
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/exports/repositories.d.ts +18 -0
- package/dist/src/exports/repositories.d.ts.map +1 -0
- package/dist/src/exports/repositories.js +30 -0
- package/dist/src/exports/repositories.js.map +1 -0
- package/dist/src/exports/services.d.ts +30 -0
- package/dist/src/exports/services.d.ts.map +1 -0
- package/dist/src/exports/services.js +70 -0
- package/dist/src/exports/services.js.map +1 -0
- package/dist/src/exports/types.d.ts +21 -0
- package/dist/src/exports/types.d.ts.map +1 -0
- package/dist/src/exports/types.js +12 -0
- package/dist/src/exports/types.js.map +1 -0
- package/dist/src/index.d.ts +10 -54
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +24 -59
- package/dist/src/index.js.map +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.d.ts +4 -176
- package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.js +9 -83
- package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
- package/dist/src/pipeline/pipeline-types.d.ts +132 -0
- package/dist/src/pipeline/pipeline-types.d.ts.map +1 -0
- package/dist/src/pipeline/pipeline-types.js +6 -0
- package/dist/src/pipeline/pipeline-types.js.map +1 -0
- package/dist/src/routing/expert-types.d.ts +109 -0
- package/dist/src/routing/expert-types.d.ts.map +1 -0
- package/dist/src/routing/expert-types.js +162 -0
- package/dist/src/routing/expert-types.js.map +1 -0
- package/dist/src/routing/request-types.d.ts +113 -0
- package/dist/src/routing/request-types.d.ts.map +1 -0
- package/dist/src/routing/request-types.js +9 -0
- package/dist/src/routing/request-types.js.map +1 -0
- package/dist/src/routing/types.d.ts +5 -207
- package/dist/src/routing/types.d.ts.map +1 -1
- package/dist/src/routing/types.js +3 -153
- package/dist/src/routing/types.js.map +1 -1
- package/dist/src/scripts/github-import/github-auth.d.ts +17 -0
- package/dist/src/scripts/github-import/github-auth.d.ts.map +1 -0
- package/dist/src/scripts/github-import/github-auth.js +201 -0
- package/dist/src/scripts/github-import/github-auth.js.map +1 -0
- package/dist/src/scripts/github-import/github-client.d.ts +5 -5
- package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
- package/dist/src/scripts/github-import/github-client.js +5 -203
- package/dist/src/scripts/github-import/github-client.js.map +1 -1
- package/dist/src/scripts/merge-skills.d.ts +5 -27
- package/dist/src/scripts/merge-skills.d.ts.map +1 -1
- package/dist/src/scripts/merge-skills.js +4 -144
- package/dist/src/scripts/merge-skills.js.map +1 -1
- package/dist/src/scripts/merge-types.d.ts +72 -0
- package/dist/src/scripts/merge-types.d.ts.map +1 -0
- package/dist/src/scripts/merge-types.js +7 -0
- package/dist/src/scripts/merge-types.js.map +1 -0
- package/dist/src/scripts/merge-utils.d.ts +23 -0
- package/dist/src/scripts/merge-utils.d.ts.map +1 -0
- package/dist/src/scripts/merge-utils.js +150 -0
- package/dist/src/scripts/merge-utils.js.map +1 -0
- package/dist/src/scripts/review-categories.d.ts +41 -0
- package/dist/src/scripts/review-categories.d.ts.map +1 -0
- package/dist/src/scripts/review-categories.js +316 -0
- package/dist/src/scripts/review-categories.js.map +1 -0
- package/dist/src/scripts/review-lenny-skills.d.ts +1 -0
- package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -1
- package/dist/src/scripts/review-lenny-skills.js +5 -310
- package/dist/src/scripts/review-lenny-skills.js.map +1 -1
- package/dist/src/security/AuditLogger.d.ts +4 -75
- package/dist/src/security/AuditLogger.d.ts.map +1 -1
- package/dist/src/security/AuditLogger.js +2 -11
- package/dist/src/security/AuditLogger.js.map +1 -1
- package/dist/src/security/audit-types.d.ts +96 -0
- package/dist/src/security/audit-types.d.ts.map +1 -0
- package/dist/src/security/audit-types.js +15 -0
- package/dist/src/security/audit-types.js.map +1 -0
- package/dist/src/security/sanitization.d.ts +1 -85
- package/dist/src/security/sanitization.d.ts.map +1 -1
- package/dist/src/security/sanitization.js +2 -133
- package/dist/src/security/sanitization.js.map +1 -1
- package/dist/src/security/stripe-validators.d.ts +92 -0
- package/dist/src/security/stripe-validators.d.ts.map +1 -0
- package/dist/src/security/stripe-validators.js +139 -0
- package/dist/src/security/stripe-validators.js.map +1 -0
- package/dist/src/services/SearchService.d.ts +2 -31
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.helpers.d.ts +42 -0
- package/dist/src/services/SearchService.helpers.d.ts.map +1 -0
- package/dist/src/services/SearchService.helpers.js +128 -0
- package/dist/src/services/SearchService.helpers.js.map +1 -0
- package/dist/src/services/SearchService.js +14 -132
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/services/SearchService.types.d.ts +53 -0
- package/dist/src/services/SearchService.types.d.ts.map +1 -0
- package/dist/src/services/SearchService.types.js +7 -0
- package/dist/src/services/SearchService.types.js.map +1 -0
- package/dist/src/services/SkillAnalyzer.d.ts +6 -86
- package/dist/src/services/SkillAnalyzer.d.ts.map +1 -1
- package/dist/src/services/SkillAnalyzer.helpers.d.ts +103 -0
- package/dist/src/services/SkillAnalyzer.helpers.d.ts.map +1 -0
- package/dist/src/services/SkillAnalyzer.helpers.js +237 -0
- package/dist/src/services/SkillAnalyzer.helpers.js.map +1 -0
- package/dist/src/services/SkillAnalyzer.js +16 -167
- package/dist/src/services/SkillAnalyzer.js.map +1 -1
- package/dist/src/services/SkillAnalyzer.types.d.ts +110 -0
- package/dist/src/services/SkillAnalyzer.types.d.ts.map +1 -0
- package/dist/src/services/SkillAnalyzer.types.js +9 -0
- package/dist/src/services/SkillAnalyzer.types.js.map +1 -0
- package/dist/src/services/SkillDecomposer.d.ts +4 -70
- package/dist/src/services/SkillDecomposer.d.ts.map +1 -1
- package/dist/src/services/SkillDecomposer.helpers.d.ts +75 -0
- package/dist/src/services/SkillDecomposer.helpers.d.ts.map +1 -0
- package/dist/src/services/SkillDecomposer.helpers.js +277 -0
- package/dist/src/services/SkillDecomposer.helpers.js.map +1 -0
- package/dist/src/services/SkillDecomposer.js +6 -249
- package/dist/src/services/SkillDecomposer.js.map +1 -1
- package/dist/src/services/SkillDecomposer.types.d.ts +104 -0
- package/dist/src/services/SkillDecomposer.types.d.ts.map +1 -0
- package/dist/src/services/SkillDecomposer.types.js +9 -0
- package/dist/src/services/SkillDecomposer.types.js.map +1 -0
- package/dist/src/services/SubagentGenerator.d.ts +12 -3
- package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
- package/dist/src/services/SubagentGenerator.js +43 -10
- package/dist/src/services/SubagentGenerator.js.map +1 -1
- package/dist/src/services/TaskRunner.d.ts +227 -0
- package/dist/src/services/TaskRunner.d.ts.map +1 -0
- package/dist/src/services/TaskRunner.js +423 -0
- package/dist/src/services/TaskRunner.js.map +1 -0
- package/dist/src/services/TransformationService.d.ts +8 -4
- package/dist/src/services/TransformationService.d.ts.map +1 -1
- package/dist/src/services/TransformationService.js +58 -34
- package/dist/src/services/TransformationService.js.map +1 -1
- package/dist/src/services/__tests__/TaskRunner.test.d.ts +7 -0
- package/dist/src/services/__tests__/TaskRunner.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/TaskRunner.test.js +316 -0
- package/dist/src/services/__tests__/TaskRunner.test.js.map +1 -0
- package/dist/src/services/__tests__/TransformationService.test.js +12 -10
- package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
- package/dist/src/telemetry/metric-helpers.d.ts +47 -0
- package/dist/src/telemetry/metric-helpers.d.ts.map +1 -0
- package/dist/src/telemetry/metric-helpers.js +96 -0
- package/dist/src/telemetry/metric-helpers.js.map +1 -0
- package/dist/src/telemetry/metric-types.d.ts +73 -0
- package/dist/src/telemetry/metric-types.d.ts.map +1 -0
- package/dist/src/telemetry/metric-types.js +9 -0
- package/dist/src/telemetry/metric-types.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +8 -119
- package/dist/src/telemetry/metrics.d.ts.map +1 -1
- package/dist/src/telemetry/metrics.js +20 -193
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/span-utils.d.ts +30 -0
- package/dist/src/telemetry/span-utils.d.ts.map +1 -0
- package/dist/src/telemetry/span-utils.js +62 -0
- package/dist/src/telemetry/span-utils.js.map +1 -0
- package/dist/src/telemetry/tracer-types.d.ts +91 -0
- package/dist/src/telemetry/tracer-types.d.ts.map +1 -0
- package/dist/src/telemetry/tracer-types.js +6 -0
- package/dist/src/telemetry/tracer-types.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts +5 -122
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +23 -168
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/triggers/TriggerDetector.d.ts +6 -142
- package/dist/src/triggers/TriggerDetector.d.ts.map +1 -1
- package/dist/src/triggers/TriggerDetector.js +15 -247
- package/dist/src/triggers/TriggerDetector.js.map +1 -1
- package/dist/src/triggers/trigger-constants.d.ts +22 -0
- package/dist/src/triggers/trigger-constants.d.ts.map +1 -0
- package/dist/src/triggers/trigger-constants.js +185 -0
- package/dist/src/triggers/trigger-constants.js.map +1 -0
- package/dist/src/triggers/trigger-types.d.ts +90 -0
- package/dist/src/triggers/trigger-types.d.ts.map +1 -0
- package/dist/src/triggers/trigger-types.js +6 -0
- package/dist/src/triggers/trigger-types.js.map +1 -0
- package/dist/src/types/skill.d.ts +4 -1
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types/skill.js.map +1 -1
- package/dist/src/types.d.ts +6 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/validation/index.d.ts +5 -105
- package/dist/src/validation/index.d.ts.map +1 -1
- package/dist/src/validation/index.js +9 -421
- package/dist/src/validation/index.js.map +1 -1
- package/dist/src/validation/input-validators.d.ts +68 -0
- package/dist/src/validation/input-validators.d.ts.map +1 -0
- package/dist/src/validation/input-validators.js +126 -0
- package/dist/src/validation/input-validators.js.map +1 -0
- package/dist/src/validation/path-validators.d.ts +23 -0
- package/dist/src/validation/path-validators.d.ts.map +1 -0
- package/dist/src/validation/path-validators.js +47 -0
- package/dist/src/validation/path-validators.js.map +1 -0
- package/dist/src/validation/url-validators.d.ts +55 -0
- package/dist/src/validation/url-validators.d.ts.map +1 -0
- package/dist/src/validation/url-validators.js +267 -0
- package/dist/src/validation/url-validators.js.map +1 -0
- package/dist/src/validation/validation-error.d.ts +14 -0
- package/dist/src/validation/validation-error.d.ts.map +1 -0
- package/dist/src/validation/validation-error.js +19 -0
- package/dist/src/validation/validation-error.js.map +1 -0
- package/dist/src/webhooks/WebhookPayload.d.ts +4 -215
- package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -1
- package/dist/src/webhooks/WebhookPayload.js +1 -122
- package/dist/src/webhooks/WebhookPayload.js.map +1 -1
- package/dist/src/webhooks/WebhookQueue.d.ts +2 -140
- package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
- package/dist/src/webhooks/WebhookQueue.js +4 -11
- package/dist/src/webhooks/WebhookQueue.js.map +1 -1
- package/dist/src/webhooks/WebhookQueue.types.d.ts +149 -0
- package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookQueue.types.js +10 -0
- package/dist/src/webhooks/WebhookQueue.types.js.map +1 -0
- package/dist/src/webhooks/WebhookQueue.utils.d.ts +44 -0
- package/dist/src/webhooks/WebhookQueue.utils.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookQueue.utils.js +58 -0
- package/dist/src/webhooks/WebhookQueue.utils.js.map +1 -0
- package/dist/src/webhooks/webhook-schemas.d.ts +213 -0
- package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -0
- package/dist/src/webhooks/webhook-schemas.js +132 -0
- package/dist/src/webhooks/webhook-schemas.js.map +1 -0
- package/dist/src/webhooks/webhook-types.d.ts +222 -0
- package/dist/src/webhooks/webhook-types.d.ts.map +1 -0
- package/dist/src/webhooks/webhook-types.js +10 -0
- package/dist/src/webhooks/webhook-types.js.map +1 -0
- package/dist/tests/integration/neural/neural-fixtures.d.ts +19 -0
- package/dist/tests/integration/neural/neural-fixtures.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-fixtures.js +49 -0
- package/dist/tests/integration/neural/neural-fixtures.js.map +1 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.d.ts +78 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.js +146 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.js.map +1 -0
- package/dist/tests/integration/neural/neural-mocks.d.ts +90 -0
- package/dist/tests/integration/neural/neural-mocks.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-mocks.js +288 -0
- package/dist/tests/integration/neural/neural-mocks.js.map +1 -0
- package/dist/tests/integration/neural/neural-test-utils.d.ts +27 -0
- package/dist/tests/integration/neural/neural-test-utils.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-test-utils.js +35 -0
- package/dist/tests/integration/neural/neural-test-utils.js.map +1 -0
- package/dist/tests/integration/neural/setup.d.ts +6 -165
- package/dist/tests/integration/neural/setup.d.ts.map +1 -1
- package/dist/tests/integration/neural/setup.js +9 -477
- package/dist/tests/integration/neural/setup.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1788: SkillAnalyzer Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for skill analysis and optimization detection.
|
|
5
|
+
* Used by the Skillsmith Optimization Layer for transforming
|
|
6
|
+
* community skills into more performant versions.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Analysis result for a skill's optimization potential
|
|
10
|
+
*/
|
|
11
|
+
export interface SkillAnalysis {
|
|
12
|
+
/** Total line count of the skill content */
|
|
13
|
+
lineCount: number;
|
|
14
|
+
/** Number of lines in the main content (excluding examples) */
|
|
15
|
+
mainContentLines: number;
|
|
16
|
+
/** Number of lines in examples section */
|
|
17
|
+
examplesLines: number;
|
|
18
|
+
/** Tools detected in the skill content */
|
|
19
|
+
toolUsage: ToolUsageAnalysis;
|
|
20
|
+
/** Task() call patterns detected */
|
|
21
|
+
taskPatterns: TaskPatternAnalysis;
|
|
22
|
+
/** Sections that could be extracted as sub-skills */
|
|
23
|
+
extractableSections: ExtractableSection[];
|
|
24
|
+
/** Recommended optimizations to apply */
|
|
25
|
+
recommendations: OptimizationRecommendation[];
|
|
26
|
+
/** Overall optimization score (0-100) */
|
|
27
|
+
optimizationScore: number;
|
|
28
|
+
/** Whether this skill would benefit from transformation */
|
|
29
|
+
shouldTransform: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Tool usage analysis result
|
|
33
|
+
*/
|
|
34
|
+
export interface ToolUsageAnalysis {
|
|
35
|
+
/** List of detected tools */
|
|
36
|
+
detectedTools: string[];
|
|
37
|
+
/** Number of Bash commands detected */
|
|
38
|
+
bashCommandCount: number;
|
|
39
|
+
/** Number of file reads detected (Read/Glob/Grep) */
|
|
40
|
+
fileReadCount: number;
|
|
41
|
+
/** Number of file writes detected (Write/Edit) */
|
|
42
|
+
fileWriteCount: number;
|
|
43
|
+
/** Whether heavy tool usage suggests subagent */
|
|
44
|
+
suggestsSubagent: boolean;
|
|
45
|
+
/** Confidence in tool detection */
|
|
46
|
+
confidence: 'high' | 'medium' | 'low';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Task() call pattern analysis
|
|
50
|
+
*/
|
|
51
|
+
export interface TaskPatternAnalysis {
|
|
52
|
+
/** Total number of Task() calls detected */
|
|
53
|
+
taskCallCount: number;
|
|
54
|
+
/** Number of sequential Task() calls that could be parallelized */
|
|
55
|
+
sequentialCalls: number;
|
|
56
|
+
/** Whether Task() calls can be batched */
|
|
57
|
+
canBatch: boolean;
|
|
58
|
+
/** Estimated token savings from batching (percentage) */
|
|
59
|
+
batchSavingsPercent: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Section that could be extracted as a sub-skill
|
|
63
|
+
*/
|
|
64
|
+
export interface ExtractableSection {
|
|
65
|
+
/** Section name/title */
|
|
66
|
+
name: string;
|
|
67
|
+
/** Start line number */
|
|
68
|
+
startLine: number;
|
|
69
|
+
/** End line number */
|
|
70
|
+
endLine: number;
|
|
71
|
+
/** Number of lines */
|
|
72
|
+
lineCount: number;
|
|
73
|
+
/** Extraction priority (1 = highest) */
|
|
74
|
+
priority: number;
|
|
75
|
+
/** Reason for extraction recommendation */
|
|
76
|
+
reason: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Optimization recommendation
|
|
80
|
+
*/
|
|
81
|
+
export interface OptimizationRecommendation {
|
|
82
|
+
/** Recommendation type */
|
|
83
|
+
type: 'decompose' | 'parallelize' | 'subagent' | 'progressive-disclosure';
|
|
84
|
+
/** Human-readable description */
|
|
85
|
+
description: string;
|
|
86
|
+
/** Estimated token savings (percentage) */
|
|
87
|
+
estimatedSavings: number;
|
|
88
|
+
/** Priority (1 = highest) */
|
|
89
|
+
priority: number;
|
|
90
|
+
/** Affected sections or patterns */
|
|
91
|
+
affectedAreas: string[];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Parsed section from skill content
|
|
95
|
+
*/
|
|
96
|
+
export interface ParsedSection {
|
|
97
|
+
/** Section name/title */
|
|
98
|
+
name: string;
|
|
99
|
+
/** Start line number */
|
|
100
|
+
startLine: number;
|
|
101
|
+
/** End line number */
|
|
102
|
+
endLine: number;
|
|
103
|
+
/** Full section content */
|
|
104
|
+
content: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Confidence level type
|
|
108
|
+
*/
|
|
109
|
+
export type ConfidenceLevel = 'high' | 'medium' | 'low';
|
|
110
|
+
//# sourceMappingURL=SkillAnalyzer.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillAnalyzer.types.d.ts","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAA;IAEjB,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAA;IAExB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAA;IAErB,0CAA0C;IAC1C,SAAS,EAAE,iBAAiB,CAAA;IAE5B,oCAAoC;IACpC,YAAY,EAAE,mBAAmB,CAAA;IAEjC,qDAAqD;IACrD,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;IAEzC,yCAAyC;IACzC,eAAe,EAAE,0BAA0B,EAAE,CAAA;IAE7C,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAA;IAEzB,2DAA2D;IAC3D,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAA;IAEvB,uCAAuC;IACvC,gBAAgB,EAAE,MAAM,CAAA;IAExB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAA;IAErB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAA;IAEtB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAA;IAEzB,mCAAmC;IACnC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IAErB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAA;IAEvB,0CAA0C;IAC1C,QAAQ,EAAE,OAAO,CAAA;IAEjB,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IAEZ,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAA;IAEjB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IAEf,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAA;IAEjB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAA;IAEhB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,wBAAwB,CAAA;IAEzE,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAA;IAEnB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAA;IAExB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAEhB,oCAAoC;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IAEZ,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAA;IAEjB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IAEf,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1788: SkillAnalyzer Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for skill analysis and optimization detection.
|
|
5
|
+
* Used by the Skillsmith Optimization Layer for transforming
|
|
6
|
+
* community skills into more performant versions.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=SkillAnalyzer.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillAnalyzer.types.js","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SMI-
|
|
2
|
+
* SMI-1788: SkillDecomposer - Decompose large skills into sub-skills
|
|
3
3
|
*
|
|
4
4
|
* Transforms skills >500 lines into a main SKILL.md + sub-skills structure
|
|
5
5
|
* following the Skillsmith optimization standard:
|
|
@@ -10,75 +10,9 @@
|
|
|
10
10
|
* community skills into more performant versions.
|
|
11
11
|
*/
|
|
12
12
|
import type { SkillAnalysis } from './SkillAnalyzer.js';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export interface DecompositionResult {
|
|
17
|
-
/** The optimized main SKILL.md content */
|
|
18
|
-
mainSkill: DecomposedSkill;
|
|
19
|
-
/** Extracted sub-skills */
|
|
20
|
-
subSkills: SubSkill[];
|
|
21
|
-
/** Whether decomposition was applied */
|
|
22
|
-
wasDecomposed: boolean;
|
|
23
|
-
/** Statistics about the decomposition */
|
|
24
|
-
stats: DecompositionStats;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* The main skill after decomposition
|
|
28
|
-
*/
|
|
29
|
-
export interface DecomposedSkill {
|
|
30
|
-
/** Filename (always SKILL.md) */
|
|
31
|
-
filename: string;
|
|
32
|
-
/** The optimized content */
|
|
33
|
-
content: string;
|
|
34
|
-
/** Line count after optimization */
|
|
35
|
-
lineCount: number;
|
|
36
|
-
/** References to sub-skills */
|
|
37
|
-
subSkillRefs: string[];
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* An extracted sub-skill
|
|
41
|
-
*/
|
|
42
|
-
export interface SubSkill {
|
|
43
|
-
/** Filename (e.g., api.md, examples.md) */
|
|
44
|
-
filename: string;
|
|
45
|
-
/** Original section name */
|
|
46
|
-
sectionName: string;
|
|
47
|
-
/** The extracted content */
|
|
48
|
-
content: string;
|
|
49
|
-
/** Line count */
|
|
50
|
-
lineCount: number;
|
|
51
|
-
/** Why this section was extracted */
|
|
52
|
-
extractionReason: string;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Statistics about the decomposition
|
|
56
|
-
*/
|
|
57
|
-
export interface DecompositionStats {
|
|
58
|
-
/** Original line count */
|
|
59
|
-
originalLines: number;
|
|
60
|
-
/** Main skill line count after decomposition */
|
|
61
|
-
mainSkillLines: number;
|
|
62
|
-
/** Total lines in sub-skills */
|
|
63
|
-
subSkillLines: number;
|
|
64
|
-
/** Number of sub-skills created */
|
|
65
|
-
subSkillCount: number;
|
|
66
|
-
/** Estimated token reduction percentage */
|
|
67
|
-
tokenReductionPercent: number;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Configuration for decomposition behavior
|
|
71
|
-
*/
|
|
72
|
-
export interface DecomposerOptions {
|
|
73
|
-
/** Maximum lines for main skill (default: 400) */
|
|
74
|
-
maxMainSkillLines?: number;
|
|
75
|
-
/** Minimum lines for a section to be extracted (default: 50) */
|
|
76
|
-
minExtractableLines?: number;
|
|
77
|
-
/** Whether to add navigation links to main skill (default: true) */
|
|
78
|
-
addNavigation?: boolean;
|
|
79
|
-
/** Whether to add "Optimized by Skillsmith" attribution (default: true) */
|
|
80
|
-
addAttribution?: boolean;
|
|
81
|
-
}
|
|
13
|
+
export type { DecompositionResult, DecomposedSkill, SubSkill, DecompositionStats, SkillMetadata, DecomposerOptions, } from './SkillDecomposer.types.js';
|
|
14
|
+
import type { DecompositionResult, DecomposerOptions } from './SkillDecomposer.types.js';
|
|
15
|
+
export { DEFAULT_EXTRACT_KEYWORDS, sanitizeFilename } from './SkillDecomposer.helpers.js';
|
|
82
16
|
/**
|
|
83
17
|
* Decompose a skill into main + sub-skills based on analysis
|
|
84
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillDecomposer.d.ts","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"SkillDecomposer.d.ts","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGvD,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAexF,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAEzF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,mBAAmB,CA6BrB;AAoCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2C5D;;;;;AAED,wBAAuD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1788: SkillDecomposer Helpers
|
|
3
|
+
*
|
|
4
|
+
* Helper functions and constants for skill decomposition.
|
|
5
|
+
*/
|
|
6
|
+
import type { DecomposerOptions, ResolvedDecomposerOptions, SkillMetadata, ParsedSection, SubSkill, DecomposedSkill, DecompositionStats } from './SkillDecomposer.types.js';
|
|
7
|
+
import type { ExtractableSection } from './SkillAnalyzer.types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Default keywords that indicate a section should be extracted as a sub-skill.
|
|
10
|
+
* These are used when no custom extractKeywords are provided.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_EXTRACT_KEYWORDS: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Default decomposer options
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_OPTIONS: ResolvedDecomposerOptions;
|
|
17
|
+
/**
|
|
18
|
+
* Merge user options with defaults
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveOptions(options?: DecomposerOptions): ResolvedDecomposerOptions;
|
|
21
|
+
/**
|
|
22
|
+
* Parse skill content into metadata, frontmatter, and sections
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseSkillContent(content: string): {
|
|
25
|
+
metadata: SkillMetadata;
|
|
26
|
+
frontmatter: string;
|
|
27
|
+
sections: ParsedSection[];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Determine which sections should be extracted as sub-skills
|
|
31
|
+
*/
|
|
32
|
+
export declare function determineSectionsToExtract(sections: ParsedSection[], extractableSections: ExtractableSection[], opts: ResolvedDecomposerOptions): ParsedSection[];
|
|
33
|
+
/**
|
|
34
|
+
* SMI-1794: Sanitize and validate filename for sub-skill
|
|
35
|
+
* Prevents path traversal and invalid characters
|
|
36
|
+
*/
|
|
37
|
+
export declare function sanitizeFilename(name: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Generate a filename for a sub-skill
|
|
40
|
+
* SMI-1794: Uses sanitized filename to prevent security issues
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateSubSkillFilename(sectionTitle: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Format sub-skill content with proper header
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatSubSkillContent(section: ParsedSection, skillName: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* Create sub-skills from extracted sections
|
|
49
|
+
*/
|
|
50
|
+
export declare function createSubSkills(sections: ParsedSection[], skillName: string): SubSkill[];
|
|
51
|
+
/**
|
|
52
|
+
* Generate navigation section linking to sub-skills
|
|
53
|
+
*/
|
|
54
|
+
export declare function generateSubSkillNavigation(subSkills: SubSkill[]): string;
|
|
55
|
+
/**
|
|
56
|
+
* Generate attribution footer
|
|
57
|
+
*/
|
|
58
|
+
export declare function generateAttribution(): string;
|
|
59
|
+
/**
|
|
60
|
+
* Add attribution to content without decomposition
|
|
61
|
+
*/
|
|
62
|
+
export declare function addAttributionToContent(content: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Create the main skill content with remaining sections
|
|
65
|
+
*/
|
|
66
|
+
export declare function createMainSkill(frontmatter: string, allSections: ParsedSection[], extractedSections: ParsedSection[], subSkills: SubSkill[], opts: ResolvedDecomposerOptions): DecomposedSkill;
|
|
67
|
+
/**
|
|
68
|
+
* Calculate decomposition statistics
|
|
69
|
+
*/
|
|
70
|
+
export declare function calculateStats(originalContent: string, mainSkill: DecomposedSkill, subSkills: SubSkill[]): DecompositionStats;
|
|
71
|
+
/**
|
|
72
|
+
* Format multiple Task() calls as a batched operation
|
|
73
|
+
*/
|
|
74
|
+
export declare function formatBatchedTasks(tasks: string[]): string[];
|
|
75
|
+
//# sourceMappingURL=SkillDecomposer.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillDecomposer.helpers.d.ts","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,eAAe,EACf,kBAAkB,EACnB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,UASpC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,yBAM7B,CAAA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,yBAAyB,CAErF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAClD,QAAQ,EAAE,aAAa,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B,CAuEA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,aAAa,EAAE,EACzB,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,IAAI,EAAE,yBAAyB,GAC9B,aAAa,EAAE,CAiCjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASvF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyBxF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAUxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,aAAa,EAAE,EAC5B,iBAAiB,EAAE,aAAa,EAAE,EAClC,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,yBAAyB,GAC9B,eAAe,CA2BjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,QAAQ,EAAE,GACpB,kBAAkB,CAkBpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO5D"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1788: SkillDecomposer Helpers
|
|
3
|
+
*
|
|
4
|
+
* Helper functions and constants for skill decomposition.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default keywords that indicate a section should be extracted as a sub-skill.
|
|
8
|
+
* These are used when no custom extractKeywords are provided.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_EXTRACT_KEYWORDS = [
|
|
11
|
+
'api',
|
|
12
|
+
'reference',
|
|
13
|
+
'example',
|
|
14
|
+
'usage',
|
|
15
|
+
'advanced',
|
|
16
|
+
'configuration',
|
|
17
|
+
'troubleshoot',
|
|
18
|
+
'appendix',
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Default decomposer options
|
|
22
|
+
*/
|
|
23
|
+
export const DEFAULT_OPTIONS = {
|
|
24
|
+
maxMainSkillLines: 400,
|
|
25
|
+
minExtractableLines: 50,
|
|
26
|
+
addNavigation: true,
|
|
27
|
+
addAttribution: true,
|
|
28
|
+
extractKeywords: DEFAULT_EXTRACT_KEYWORDS,
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Merge user options with defaults
|
|
32
|
+
*/
|
|
33
|
+
export function resolveOptions(options) {
|
|
34
|
+
return { ...DEFAULT_OPTIONS, ...options };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse skill content into metadata, frontmatter, and sections
|
|
38
|
+
*/
|
|
39
|
+
export function parseSkillContent(content) {
|
|
40
|
+
const lines = content.split('\n');
|
|
41
|
+
let frontmatter = '';
|
|
42
|
+
let contentStart = 0;
|
|
43
|
+
const metadata = {};
|
|
44
|
+
// Extract frontmatter
|
|
45
|
+
if (lines[0]?.trim() === '---') {
|
|
46
|
+
let frontmatterEnd = -1;
|
|
47
|
+
for (let i = 1; i < lines.length; i++) {
|
|
48
|
+
if (lines[i]?.trim() === '---') {
|
|
49
|
+
frontmatterEnd = i;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (frontmatterEnd > 0) {
|
|
54
|
+
frontmatter = lines.slice(0, frontmatterEnd + 1).join('\n');
|
|
55
|
+
contentStart = frontmatterEnd + 1;
|
|
56
|
+
// Parse metadata from frontmatter
|
|
57
|
+
const yamlContent = lines.slice(1, frontmatterEnd).join('\n');
|
|
58
|
+
const nameMatch = yamlContent.match(/^name:\s*(.+)$/m);
|
|
59
|
+
const descMatch = yamlContent.match(/^description:\s*(.+)$/m);
|
|
60
|
+
if (nameMatch)
|
|
61
|
+
metadata.name = nameMatch[1].trim();
|
|
62
|
+
if (descMatch)
|
|
63
|
+
metadata.description = descMatch[1].trim();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Parse sections
|
|
67
|
+
const sections = [];
|
|
68
|
+
let currentSection = null;
|
|
69
|
+
for (let i = contentStart; i < lines.length; i++) {
|
|
70
|
+
const line = lines[i];
|
|
71
|
+
const headerMatch = line.match(/^(#{1,3})\s+(.+)$/);
|
|
72
|
+
if (headerMatch) {
|
|
73
|
+
// Save previous section
|
|
74
|
+
if (currentSection) {
|
|
75
|
+
sections.push(currentSection);
|
|
76
|
+
}
|
|
77
|
+
currentSection = {
|
|
78
|
+
level: headerMatch[1].length,
|
|
79
|
+
title: headerMatch[2].trim(),
|
|
80
|
+
startLine: i,
|
|
81
|
+
lines: [line],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
else if (currentSection) {
|
|
85
|
+
currentSection.lines.push(line);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// Content before first header
|
|
89
|
+
if (!sections.length && line.trim()) {
|
|
90
|
+
currentSection = {
|
|
91
|
+
level: 0,
|
|
92
|
+
title: '_preamble',
|
|
93
|
+
startLine: i,
|
|
94
|
+
lines: [line],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Save last section
|
|
100
|
+
if (currentSection) {
|
|
101
|
+
sections.push(currentSection);
|
|
102
|
+
}
|
|
103
|
+
return { metadata, frontmatter, sections };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Determine which sections should be extracted as sub-skills
|
|
107
|
+
*/
|
|
108
|
+
export function determineSectionsToExtract(sections, extractableSections, opts) {
|
|
109
|
+
const toExtract = [];
|
|
110
|
+
// Create a map of section names from analysis for quick lookup
|
|
111
|
+
const extractableNames = new Set(extractableSections.map((s) => s.name.toLowerCase()));
|
|
112
|
+
// Use configurable keywords (defaults provided via DEFAULT_OPTIONS)
|
|
113
|
+
const keywords = opts.extractKeywords ?? DEFAULT_EXTRACT_KEYWORDS;
|
|
114
|
+
for (const section of sections) {
|
|
115
|
+
const lineCount = section.lines.length;
|
|
116
|
+
const titleLower = section.title.toLowerCase();
|
|
117
|
+
// Skip preamble and very short sections
|
|
118
|
+
if (section.title === '_preamble' || lineCount < opts.minExtractableLines) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
// Extract if:
|
|
122
|
+
// 1. In analysis extractable list
|
|
123
|
+
// 2. Has extract keyword in title
|
|
124
|
+
// 3. Is a large section (>100 lines)
|
|
125
|
+
const shouldExtract = extractableNames.has(titleLower) ||
|
|
126
|
+
keywords.some((kw) => titleLower.includes(kw)) ||
|
|
127
|
+
lineCount > 100;
|
|
128
|
+
if (shouldExtract) {
|
|
129
|
+
toExtract.push(section);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return toExtract;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* SMI-1794: Sanitize and validate filename for sub-skill
|
|
136
|
+
* Prevents path traversal and invalid characters
|
|
137
|
+
*/
|
|
138
|
+
export function sanitizeFilename(name) {
|
|
139
|
+
return (name
|
|
140
|
+
.toLowerCase()
|
|
141
|
+
.replace(/[^a-z0-9-_]/g, '-') // Only allow alphanumeric, dash, underscore
|
|
142
|
+
.replace(/-+/g, '-') // Collapse multiple dashes
|
|
143
|
+
.replace(/^-|-$/g, '') // Remove leading/trailing dashes
|
|
144
|
+
.slice(0, 64) || 'sub-skill'); // Limit length, provide default
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Generate a filename for a sub-skill
|
|
148
|
+
* SMI-1794: Uses sanitized filename to prevent security issues
|
|
149
|
+
*/
|
|
150
|
+
export function generateSubSkillFilename(sectionTitle) {
|
|
151
|
+
const slug = sanitizeFilename(sectionTitle);
|
|
152
|
+
return `${slug}.md`;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Format sub-skill content with proper header
|
|
156
|
+
*/
|
|
157
|
+
export function formatSubSkillContent(section, skillName) {
|
|
158
|
+
const header = `---
|
|
159
|
+
parent_skill: ${skillName}
|
|
160
|
+
section: ${section.title}
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
`;
|
|
164
|
+
return header + section.lines.join('\n');
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Create sub-skills from extracted sections
|
|
168
|
+
*/
|
|
169
|
+
export function createSubSkills(sections, skillName) {
|
|
170
|
+
return sections.map((section) => {
|
|
171
|
+
const filename = generateSubSkillFilename(section.title);
|
|
172
|
+
const content = formatSubSkillContent(section, skillName);
|
|
173
|
+
// Determine extraction reason
|
|
174
|
+
const titleLower = section.title.toLowerCase();
|
|
175
|
+
let reason = 'Large section suitable for on-demand loading';
|
|
176
|
+
if (titleLower.includes('api') || titleLower.includes('reference')) {
|
|
177
|
+
reason = 'API reference loaded on-demand to reduce initial context';
|
|
178
|
+
}
|
|
179
|
+
else if (titleLower.includes('example') || titleLower.includes('usage')) {
|
|
180
|
+
reason = 'Examples progressively disclosed when needed';
|
|
181
|
+
}
|
|
182
|
+
else if (titleLower.includes('advanced') || titleLower.includes('configuration')) {
|
|
183
|
+
reason = 'Advanced content loaded only when required';
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
filename,
|
|
187
|
+
sectionName: section.title,
|
|
188
|
+
content,
|
|
189
|
+
lineCount: content.split('\n').length,
|
|
190
|
+
extractionReason: reason,
|
|
191
|
+
};
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Generate navigation section linking to sub-skills
|
|
196
|
+
*/
|
|
197
|
+
export function generateSubSkillNavigation(subSkills) {
|
|
198
|
+
const links = subSkills.map((s) => `- [${s.sectionName}](./${s.filename})`).join('\n');
|
|
199
|
+
return `## Additional Resources
|
|
200
|
+
|
|
201
|
+
The following sections are available as sub-skills for on-demand loading:
|
|
202
|
+
|
|
203
|
+
${links}
|
|
204
|
+
|
|
205
|
+
*Load these sections only when needed to optimize context usage.*`;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Generate attribution footer
|
|
209
|
+
*/
|
|
210
|
+
export function generateAttribution() {
|
|
211
|
+
return `---
|
|
212
|
+
|
|
213
|
+
*Optimized by Skillsmith - Token usage reduced through intelligent decomposition*`;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Add attribution to content without decomposition
|
|
217
|
+
*/
|
|
218
|
+
export function addAttributionToContent(content) {
|
|
219
|
+
return content.trimEnd() + '\n\n' + generateAttribution();
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create the main skill content with remaining sections
|
|
223
|
+
*/
|
|
224
|
+
export function createMainSkill(frontmatter, allSections, extractedSections, subSkills, opts) {
|
|
225
|
+
const extractedTitles = new Set(extractedSections.map((s) => s.title));
|
|
226
|
+
// Build main content from non-extracted sections
|
|
227
|
+
const remainingSections = allSections.filter((s) => !extractedTitles.has(s.title));
|
|
228
|
+
let mainContent = remainingSections.map((s) => s.lines.join('\n')).join('\n\n');
|
|
229
|
+
// Add navigation to sub-skills if enabled
|
|
230
|
+
if (opts.addNavigation && subSkills.length > 0) {
|
|
231
|
+
const nav = generateSubSkillNavigation(subSkills);
|
|
232
|
+
mainContent = mainContent + '\n\n' + nav;
|
|
233
|
+
}
|
|
234
|
+
// Add attribution if enabled
|
|
235
|
+
if (opts.addAttribution) {
|
|
236
|
+
mainContent = mainContent + '\n\n' + generateAttribution();
|
|
237
|
+
}
|
|
238
|
+
// Combine frontmatter and content
|
|
239
|
+
const finalContent = frontmatter ? frontmatter + '\n\n' + mainContent : mainContent;
|
|
240
|
+
return {
|
|
241
|
+
filename: 'SKILL.md',
|
|
242
|
+
content: finalContent.trim(),
|
|
243
|
+
lineCount: finalContent.split('\n').length,
|
|
244
|
+
subSkillRefs: subSkills.map((s) => s.filename),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Calculate decomposition statistics
|
|
249
|
+
*/
|
|
250
|
+
export function calculateStats(originalContent, mainSkill, subSkills) {
|
|
251
|
+
const originalLines = originalContent.split('\n').length;
|
|
252
|
+
const mainSkillLines = mainSkill.lineCount;
|
|
253
|
+
const subSkillLines = subSkills.reduce((sum, s) => sum + s.lineCount, 0);
|
|
254
|
+
// Estimate token reduction
|
|
255
|
+
// Main skill is always loaded; sub-skills are loaded on-demand
|
|
256
|
+
// Assume 50% of sub-skill content would have been needed on average
|
|
257
|
+
const effectiveReduction = subSkillLines * 0.5;
|
|
258
|
+
const tokenReductionPercent = Math.round((effectiveReduction / originalLines) * 100);
|
|
259
|
+
return {
|
|
260
|
+
originalLines,
|
|
261
|
+
mainSkillLines,
|
|
262
|
+
subSkillLines,
|
|
263
|
+
subSkillCount: subSkills.length,
|
|
264
|
+
tokenReductionPercent,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Format multiple Task() calls as a batched operation
|
|
269
|
+
*/
|
|
270
|
+
export function formatBatchedTasks(tasks) {
|
|
271
|
+
if (tasks.length < 2) {
|
|
272
|
+
return tasks;
|
|
273
|
+
}
|
|
274
|
+
// Add comment about batching
|
|
275
|
+
return ['// Batched for parallel execution (Skillsmith optimization)', ...tasks];
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=SkillDecomposer.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillDecomposer.helpers.js","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.helpers.ts"],"names":[],"mappings":"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"}
|