@skillsmith/core 0.4.0 → 0.4.1
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/CodebaseAnalyzer.d.ts.map +1 -1
- package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
- package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -1
- package/dist/src/analysis/language-detector.d.ts +4 -20
- package/dist/src/analysis/language-detector.d.ts.map +1 -1
- package/dist/src/analysis/language-detector.js +2 -399
- package/dist/src/analysis/language-detector.js.map +1 -1
- package/dist/src/analysis/language-detector.patterns.d.ts +17 -0
- package/dist/src/analysis/language-detector.patterns.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.patterns.js +413 -0
- package/dist/src/analysis/language-detector.patterns.js.map +1 -0
- package/dist/src/analysis/language-detector.types.d.ts +48 -0
- package/dist/src/analysis/language-detector.types.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.types.js +6 -0
- package/dist/src/analysis/language-detector.types.js.map +1 -0
- package/dist/src/analysis/metrics.d.ts +22 -219
- package/dist/src/analysis/metrics.d.ts.map +1 -1
- package/dist/src/analysis/metrics.implementations.d.ts +39 -0
- package/dist/src/analysis/metrics.implementations.d.ts.map +1 -0
- package/dist/src/analysis/metrics.implementations.js +114 -0
- package/dist/src/analysis/metrics.implementations.js.map +1 -0
- package/dist/src/analysis/metrics.js +21 -224
- package/dist/src/analysis/metrics.js.map +1 -1
- package/dist/src/analysis/metrics.types.d.ts +79 -0
- package/dist/src/analysis/metrics.types.d.ts.map +1 -0
- package/dist/src/analysis/metrics.types.js +6 -0
- package/dist/src/analysis/metrics.types.js.map +1 -0
- package/dist/src/analytics/ROIDashboardService.js +4 -2
- package/dist/src/analytics/ROIDashboardService.js.map +1 -1
- package/dist/src/api/cache.d.ts.map +1 -1
- package/dist/src/api/cache.js.map +1 -1
- package/dist/src/api/client.d.ts +1 -0
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +17 -3
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/types.d.ts +1 -1
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.js +1 -1
- package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
- package/dist/src/billing/BillingService.d.ts +15 -53
- package/dist/src/billing/BillingService.d.ts.map +1 -1
- package/dist/src/billing/BillingService.helpers.d.ts +15 -0
- package/dist/src/billing/BillingService.helpers.d.ts.map +1 -0
- package/dist/src/billing/BillingService.helpers.js +45 -0
- package/dist/src/billing/BillingService.helpers.js.map +1 -0
- package/dist/src/billing/BillingService.js +49 -179
- package/dist/src/billing/BillingService.js.map +1 -1
- package/dist/src/billing/BillingService.types.d.ts +52 -0
- package/dist/src/billing/BillingService.types.d.ts.map +1 -0
- package/dist/src/billing/BillingService.types.js +6 -0
- package/dist/src/billing/BillingService.types.js.map +1 -0
- package/dist/src/billing/StripeClient.d.ts +3 -2
- package/dist/src/billing/StripeClient.d.ts.map +1 -1
- package/dist/src/billing/StripeClient.js +4 -3
- package/dist/src/billing/StripeClient.js.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.d.ts +13 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.js +52 -9
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
- package/dist/src/db/migration.d.ts +129 -0
- package/dist/src/db/migration.d.ts.map +1 -0
- package/dist/src/db/migration.js +289 -0
- package/dist/src/db/migration.js.map +1 -0
- package/dist/src/db/schema.d.ts +2 -2
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +23 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.d.ts +8 -518
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
- package/dist/src/embeddings/hnsw-store.helpers.d.ts +83 -0
- package/dist/src/embeddings/hnsw-store.helpers.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.helpers.js +147 -0
- package/dist/src/embeddings/hnsw-store.helpers.js.map +1 -0
- package/dist/src/embeddings/hnsw-store.js +66 -517
- package/dist/src/embeddings/hnsw-store.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.types.d.ts +154 -0
- package/dist/src/embeddings/hnsw-store.types.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.types.js +26 -0
- package/dist/src/embeddings/hnsw-store.types.js.map +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +18 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
- package/dist/src/indexer/GitHubIndexer.js +17 -4
- package/dist/src/indexer/GitHubIndexer.js.map +1 -1
- package/dist/src/indexer/SwarmIndexer.d.ts.map +1 -1
- package/dist/src/indexer/SwarmIndexer.js +1 -1
- package/dist/src/indexer/SwarmIndexer.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +6 -426
- package/dist/src/learning/PatternStore.d.ts.map +1 -1
- package/dist/src/learning/PatternStore.helpers.d.ts +88 -0
- package/dist/src/learning/PatternStore.helpers.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.helpers.js +286 -0
- package/dist/src/learning/PatternStore.helpers.js.map +1 -0
- package/dist/src/learning/PatternStore.js +52 -598
- package/dist/src/learning/PatternStore.js.map +1 -1
- package/dist/src/learning/PatternStore.queries.d.ts +83 -0
- package/dist/src/learning/PatternStore.queries.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.queries.js +189 -0
- package/dist/src/learning/PatternStore.queries.js.map +1 -0
- package/dist/src/learning/PatternStore.types.d.ts +308 -0
- package/dist/src/learning/PatternStore.types.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.types.js +44 -0
- package/dist/src/learning/PatternStore.types.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts +5 -345
- package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -1
- package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts +49 -0
- package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.helpers.js +180 -0
- package/dist/src/learning/ReasoningBankIntegration.helpers.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.js +21 -390
- package/dist/src/learning/ReasoningBankIntegration.js.map +1 -1
- package/dist/src/learning/ReasoningBankIntegration.types.d.ts +167 -0
- package/dist/src/learning/ReasoningBankIntegration.types.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.types.js +51 -0
- package/dist/src/learning/ReasoningBankIntegration.types.js.map +1 -0
- package/dist/src/learning/interfaces.d.ts.map +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.js +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
- package/dist/src/repositories/IndexerRepository.d.ts +1 -0
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
- package/dist/src/repositories/IndexerRepository.js +6 -0
- package/dist/src/repositories/IndexerRepository.js.map +1 -1
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
- package/dist/src/repositories/SkillRepository.js +20 -5
- package/dist/src/repositories/SkillRepository.js.map +1 -1
- package/dist/src/routing/SONARouter.d.ts +3 -101
- package/dist/src/routing/SONARouter.d.ts.map +1 -1
- package/dist/src/routing/SONARouter.helpers.d.ts +112 -0
- package/dist/src/routing/SONARouter.helpers.d.ts.map +1 -0
- package/dist/src/routing/SONARouter.helpers.js +184 -0
- package/dist/src/routing/SONARouter.helpers.js.map +1 -0
- package/dist/src/routing/SONARouter.js +16 -318
- package/dist/src/routing/SONARouter.js.map +1 -1
- package/dist/src/scripts/github-import/github-client.js +0 -1
- package/dist/src/scripts/github-import/github-client.js.map +1 -1
- package/dist/src/scripts/ingest-lenny-skills.d.ts +40 -0
- package/dist/src/scripts/ingest-lenny-skills.d.ts.map +1 -0
- package/dist/src/scripts/ingest-lenny-skills.js +346 -0
- package/dist/src/scripts/ingest-lenny-skills.js.map +1 -0
- package/dist/src/scripts/review-lenny-skills.d.ts +25 -0
- package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -0
- package/dist/src/scripts/review-lenny-skills.js +520 -0
- package/dist/src/scripts/review-lenny-skills.js.map +1 -0
- package/dist/src/scripts/sync-to-supabase.d.ts +10 -0
- package/dist/src/scripts/sync-to-supabase.d.ts.map +1 -0
- package/dist/src/scripts/sync-to-supabase.js +93 -0
- package/dist/src/scripts/sync-to-supabase.js.map +1 -0
- package/dist/src/security/AuditLogger.js +1 -1
- package/dist/src/security/AuditLogger.js.map +1 -1
- package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.d.ts +12 -88
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.formatters.d.ts +49 -0
- package/dist/src/security/scanner/SecurityScanner.formatters.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.formatters.js +139 -0
- package/dist/src/security/scanner/SecurityScanner.formatters.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +40 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.js +142 -0
- package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -0
- package/dist/src/security/scanner/SecurityScanner.js +26 -255
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/services/SearchService.d.ts +5 -0
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.js +143 -11
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/services/SkillAnalyzer.d.ts +117 -0
- package/dist/src/services/SkillAnalyzer.d.ts.map +1 -0
- package/dist/src/services/SkillAnalyzer.js +421 -0
- package/dist/src/services/SkillAnalyzer.js.map +1 -0
- package/dist/src/services/SkillDecomposer.d.ts +103 -0
- package/dist/src/services/SkillDecomposer.d.ts.map +1 -0
- package/dist/src/services/SkillDecomposer.js +359 -0
- package/dist/src/services/SkillDecomposer.js.map +1 -0
- package/dist/src/services/SubagentGenerator.d.ts +68 -0
- package/dist/src/services/SubagentGenerator.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.js +319 -0
- package/dist/src/services/SubagentGenerator.js.map +1 -0
- package/dist/src/services/TransformationService.d.ts +163 -0
- package/dist/src/services/TransformationService.d.ts.map +1 -0
- package/dist/src/services/TransformationService.js +291 -0
- package/dist/src/services/TransformationService.js.map +1 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts +6 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.js +177 -0
- package/dist/src/services/__tests__/SkillAnalyzer.test.js.map +1 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.d.ts +6 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.js +235 -0
- package/dist/src/services/__tests__/SkillDecomposer.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.d.ts +6 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js +174 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -0
- package/dist/src/services/__tests__/TransformationService.test.d.ts +6 -0
- package/dist/src/services/__tests__/TransformationService.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/TransformationService.test.js +242 -0
- package/dist/src/services/__tests__/TransformationService.test.js.map +1 -0
- package/dist/src/session/SessionContext.js +1 -1
- package/dist/src/session/SessionContext.js.map +1 -1
- package/dist/src/session/SessionManager.d.ts +3 -67
- package/dist/src/session/SessionManager.d.ts.map +1 -1
- package/dist/src/session/SessionManager.helpers.d.ts +68 -0
- package/dist/src/session/SessionManager.helpers.d.ts.map +1 -0
- package/dist/src/session/SessionManager.helpers.js +152 -0
- package/dist/src/session/SessionManager.helpers.js.map +1 -0
- package/dist/src/session/SessionManager.js +58 -163
- package/dist/src/session/SessionManager.js.map +1 -1
- package/dist/src/session/SessionManager.types.d.ts +88 -0
- package/dist/src/session/SessionManager.types.d.ts.map +1 -0
- package/dist/src/session/SessionManager.types.js +27 -0
- package/dist/src/session/SessionManager.types.js.map +1 -0
- package/dist/src/session/SessionRecovery.d.ts.map +1 -1
- package/dist/src/session/SessionRecovery.js +3 -2
- package/dist/src/session/SessionRecovery.js.map +1 -1
- package/dist/src/sources/RawUrlSourceAdapter.js.map +1 -1
- package/dist/src/sources/SourceAdapterRegistry.js +1 -1
- package/dist/src/sources/SourceAdapterRegistry.js.map +1 -1
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +2 -3
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.d.ts +17 -293
- package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -1
- package/dist/src/testing/MultiLLMProvider.helpers.d.ts +54 -0
- package/dist/src/testing/MultiLLMProvider.helpers.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.helpers.js +126 -0
- package/dist/src/testing/MultiLLMProvider.helpers.js.map +1 -0
- package/dist/src/testing/MultiLLMProvider.js +50 -323
- package/dist/src/testing/MultiLLMProvider.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.types.d.ts +253 -0
- package/dist/src/testing/MultiLLMProvider.types.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.types.js +111 -0
- package/dist/src/testing/MultiLLMProvider.types.js.map +1 -0
- package/dist/src/triggers/__tests__/TriggerDetector.test.js +1 -1
- package/dist/src/triggers/__tests__/TriggerDetector.test.js.map +1 -1
- package/dist/src/types/skill.d.ts +29 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types/skill.js +11 -1
- package/dist/src/types/skill.js.map +1 -1
- package/dist/src/types.d.ts +22 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/retry.js +2 -2
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/validation/index.js +2 -2
- package/dist/src/validation/index.js.map +1 -1
- package/dist/src/webhooks/WebhookHandler.d.ts.map +1 -1
- package/dist/src/webhooks/WebhookHandler.js.map +1 -1
- package/dist/src/webhooks/WebhookPayload.js +1 -1
- package/dist/src/webhooks/WebhookPayload.js.map +1 -1
- package/dist/tests/Analytics.integration.test.js +2 -2
- package/dist/tests/Analytics.integration.test.js.map +1 -1
- package/dist/tests/AnalyticsRepository.test.js +3 -5
- package/dist/tests/AnalyticsRepository.test.js.map +1 -1
- package/dist/tests/AnalyticsStorage.test.js.map +1 -1
- package/dist/tests/ApiPartialResponses.test.d.ts +12 -0
- package/dist/tests/ApiPartialResponses.test.d.ts.map +1 -0
- package/dist/tests/ApiPartialResponses.test.js +202 -0
- package/dist/tests/ApiPartialResponses.test.js.map +1 -0
- package/dist/tests/AuditLogger.test.js.map +1 -1
- package/dist/tests/BenchmarkRunner.test.js +6 -6
- package/dist/tests/BenchmarkRunner.test.js.map +1 -1
- package/dist/tests/CacheSecurity.test.js.map +1 -1
- package/dist/tests/CodebaseAnalyzer.test.js.map +1 -1
- package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
- package/dist/tests/EmbeddingService.test.js.map +1 -1
- package/dist/tests/GitHubIndexer.test.js +4 -3
- package/dist/tests/GitHubIndexer.test.js.map +1 -1
- package/dist/tests/MemoryProfiler.test.js +3 -3
- package/dist/tests/MemoryProfiler.test.js.map +1 -1
- package/dist/tests/QualityScorer.test.js.map +1 -1
- package/dist/tests/RateLimiter.test.js.map +1 -1
- package/dist/tests/ScraperAdapters.test.js.map +1 -1
- package/dist/tests/SecurityScanner.test.js +4 -4
- package/dist/tests/SecurityScanner.test.js.map +1 -1
- package/dist/tests/SessionManager.security.test.js +1 -1
- package/dist/tests/SessionManager.security.test.js.map +1 -1
- package/dist/tests/SessionManager.test.js +4 -4
- package/dist/tests/SessionManager.test.js.map +1 -1
- package/dist/tests/SwarmIndexer.test.js +1 -1
- package/dist/tests/SwarmIndexer.test.js.map +1 -1
- package/dist/tests/TieredCache.test.js +2 -11
- package/dist/tests/TieredCache.test.js.map +1 -1
- package/dist/tests/WebhookHandler.test.js.map +1 -1
- package/dist/tests/fixtures/api-responses/index.d.ts +119 -0
- package/dist/tests/fixtures/api-responses/index.d.ts.map +1 -0
- package/dist/tests/fixtures/api-responses/index.js +419 -0
- package/dist/tests/fixtures/api-responses/index.js.map +1 -0
- package/dist/tests/logger.test.js +1 -1
- package/dist/tests/logger.test.js.map +1 -1
- package/dist/tests/performance/LargeScalePerformance.test.js +1 -1
- package/dist/tests/performance/LargeScalePerformance.test.js.map +1 -1
- package/dist/tests/sanitization.test.js.map +1 -1
- package/dist/tests/session/SessionManager.helpers.test.d.ts +8 -0
- package/dist/tests/session/SessionManager.helpers.test.d.ts.map +1 -0
- package/dist/tests/session/SessionManager.helpers.test.js +105 -0
- package/dist/tests/session/SessionManager.helpers.test.js.map +1 -0
- package/dist/tests/sources.test.js.map +1 -1
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.js +1 -1
- package/dist/tests/webhooks/WebhookHandler.idempotency.test.js.map +1 -1
- package/dist/tests/webhooks/WebhookPayload.security.test.js.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-XXX: SkillAnalyzer - Analyze skills for optimization patterns
|
|
3
|
+
*
|
|
4
|
+
* Detects optimization opportunities based on:
|
|
5
|
+
* - Line count (>500 lines suggests decomposition)
|
|
6
|
+
* - Tool usage patterns (heavy tool usage suggests subagent)
|
|
7
|
+
* - Sequential Task() calls (can be parallelized)
|
|
8
|
+
* - Large examples sections (can use progressive disclosure)
|
|
9
|
+
*
|
|
10
|
+
* Part of the Skillsmith Optimization Layer for transforming
|
|
11
|
+
* community skills into more performant versions.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Tool detection patterns for analyzing skill content
|
|
15
|
+
*/
|
|
16
|
+
const TOOL_PATTERNS = {
|
|
17
|
+
Read: {
|
|
18
|
+
patterns: ['read file', 'read the file', 'examine', 'view file', 'cat ', 'Read tool'],
|
|
19
|
+
weight: 1,
|
|
20
|
+
},
|
|
21
|
+
Write: {
|
|
22
|
+
patterns: [
|
|
23
|
+
'write file',
|
|
24
|
+
'create file',
|
|
25
|
+
'save to',
|
|
26
|
+
'output to file',
|
|
27
|
+
'Write tool',
|
|
28
|
+
'write the file',
|
|
29
|
+
],
|
|
30
|
+
weight: 2,
|
|
31
|
+
},
|
|
32
|
+
Edit: {
|
|
33
|
+
patterns: ['edit file', 'modify file', 'update file', 'patch', 'Edit tool', 'replace in'],
|
|
34
|
+
weight: 2,
|
|
35
|
+
},
|
|
36
|
+
Bash: {
|
|
37
|
+
patterns: [
|
|
38
|
+
'bash',
|
|
39
|
+
'npm ',
|
|
40
|
+
'npx ',
|
|
41
|
+
'git ',
|
|
42
|
+
'docker',
|
|
43
|
+
'yarn ',
|
|
44
|
+
'pnpm ',
|
|
45
|
+
'execute command',
|
|
46
|
+
'run command',
|
|
47
|
+
'terminal',
|
|
48
|
+
'shell',
|
|
49
|
+
'Bash tool',
|
|
50
|
+
],
|
|
51
|
+
weight: 3,
|
|
52
|
+
},
|
|
53
|
+
Grep: {
|
|
54
|
+
patterns: ['grep', 'search for', 'find text', 'pattern match', 'Grep tool'],
|
|
55
|
+
weight: 1,
|
|
56
|
+
},
|
|
57
|
+
Glob: {
|
|
58
|
+
patterns: ['glob', 'find file', 'file pattern', 'list files', 'Glob tool'],
|
|
59
|
+
weight: 1,
|
|
60
|
+
},
|
|
61
|
+
WebFetch: {
|
|
62
|
+
patterns: ['fetch', 'http', 'api call', 'url', 'WebFetch', 'download', 'request'],
|
|
63
|
+
weight: 2,
|
|
64
|
+
},
|
|
65
|
+
WebSearch: {
|
|
66
|
+
patterns: ['web search', 'search online', 'lookup online', 'WebSearch'],
|
|
67
|
+
weight: 2,
|
|
68
|
+
},
|
|
69
|
+
Task: {
|
|
70
|
+
patterns: ['Task(', 'Task tool', 'spawn agent', 'delegate to', 'subagent'],
|
|
71
|
+
weight: 3,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Thresholds for optimization decisions
|
|
76
|
+
*/
|
|
77
|
+
const THRESHOLDS = {
|
|
78
|
+
/** Maximum lines before recommending decomposition */
|
|
79
|
+
maxLinesBeforeDecompose: 500,
|
|
80
|
+
/** Minimum lines for an extractable section */
|
|
81
|
+
minSectionLines: 50,
|
|
82
|
+
/** Heavy tool usage count that suggests subagent */
|
|
83
|
+
heavyToolUsageCount: 5,
|
|
84
|
+
/** Sequential Task() calls that should be parallelized */
|
|
85
|
+
sequentialTaskThreshold: 2,
|
|
86
|
+
/** Minimum optimization score to recommend transformation */
|
|
87
|
+
minTransformScore: 30,
|
|
88
|
+
/** Large examples section threshold */
|
|
89
|
+
largeExamplesThreshold: 200,
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Analyze a skill's content for optimization opportunities
|
|
93
|
+
*
|
|
94
|
+
* @param content - The full SKILL.md content
|
|
95
|
+
* @returns Analysis of optimization potential
|
|
96
|
+
*/
|
|
97
|
+
export function analyzeSkill(content) {
|
|
98
|
+
const lines = content.split('\n');
|
|
99
|
+
const lineCount = lines.length;
|
|
100
|
+
// Analyze sections
|
|
101
|
+
const { mainContentLines, examplesLines, sections } = analyzeSections(content);
|
|
102
|
+
// Analyze tool usage
|
|
103
|
+
const toolUsage = analyzeToolUsage(content);
|
|
104
|
+
// Analyze Task() patterns
|
|
105
|
+
const taskPatterns = analyzeTaskPatterns(content);
|
|
106
|
+
// Find extractable sections
|
|
107
|
+
const extractableSections = findExtractableSections(sections, lineCount);
|
|
108
|
+
// Generate recommendations
|
|
109
|
+
const recommendations = generateRecommendations(lineCount, mainContentLines, examplesLines, toolUsage, taskPatterns, extractableSections);
|
|
110
|
+
// Calculate optimization score
|
|
111
|
+
const optimizationScore = calculateOptimizationScore(lineCount, toolUsage, taskPatterns, recommendations);
|
|
112
|
+
return {
|
|
113
|
+
lineCount,
|
|
114
|
+
mainContentLines,
|
|
115
|
+
examplesLines,
|
|
116
|
+
toolUsage,
|
|
117
|
+
taskPatterns,
|
|
118
|
+
extractableSections,
|
|
119
|
+
recommendations,
|
|
120
|
+
optimizationScore,
|
|
121
|
+
shouldTransform: optimizationScore >= THRESHOLDS.minTransformScore,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Analyze sections within the skill content
|
|
126
|
+
*/
|
|
127
|
+
function analyzeSections(content) {
|
|
128
|
+
const lines = content.split('\n');
|
|
129
|
+
const sections = [];
|
|
130
|
+
let currentSection = null;
|
|
131
|
+
let examplesStartLine = -1;
|
|
132
|
+
let examplesEndLine = -1;
|
|
133
|
+
for (let i = 0; i < lines.length; i++) {
|
|
134
|
+
const line = lines[i];
|
|
135
|
+
const headerMatch = line.match(/^(#{1,3})\s+(.+)$/);
|
|
136
|
+
if (headerMatch) {
|
|
137
|
+
// Save previous section
|
|
138
|
+
if (currentSection) {
|
|
139
|
+
sections.push({
|
|
140
|
+
name: currentSection.name,
|
|
141
|
+
startLine: currentSection.startLine,
|
|
142
|
+
endLine: i - 1,
|
|
143
|
+
content: currentSection.lines.join('\n'),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
currentSection = {
|
|
147
|
+
name: headerMatch[2].trim(),
|
|
148
|
+
startLine: i,
|
|
149
|
+
lines: [],
|
|
150
|
+
};
|
|
151
|
+
// Track examples section
|
|
152
|
+
const sectionName = headerMatch[2].toLowerCase();
|
|
153
|
+
if (sectionName.includes('example') || sectionName.includes('usage')) {
|
|
154
|
+
examplesStartLine = i;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (currentSection) {
|
|
158
|
+
currentSection.lines.push(line);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Save last section
|
|
162
|
+
if (currentSection) {
|
|
163
|
+
sections.push({
|
|
164
|
+
name: currentSection.name,
|
|
165
|
+
startLine: currentSection.startLine,
|
|
166
|
+
endLine: lines.length - 1,
|
|
167
|
+
content: currentSection.lines.join('\n'),
|
|
168
|
+
});
|
|
169
|
+
if (examplesStartLine >= 0 && examplesEndLine < 0) {
|
|
170
|
+
examplesEndLine = lines.length - 1;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Calculate line counts
|
|
174
|
+
const examplesLines = examplesStartLine >= 0
|
|
175
|
+
? examplesEndLine - examplesStartLine + 1
|
|
176
|
+
: estimateExamplesLines(content);
|
|
177
|
+
const mainContentLines = lines.length - examplesLines;
|
|
178
|
+
return { mainContentLines, examplesLines, sections };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Estimate examples lines by looking for code blocks
|
|
182
|
+
*/
|
|
183
|
+
function estimateExamplesLines(content) {
|
|
184
|
+
const codeBlockMatches = content.match(/```[\s\S]*?```/g) || [];
|
|
185
|
+
let totalLines = 0;
|
|
186
|
+
for (const block of codeBlockMatches) {
|
|
187
|
+
totalLines += block.split('\n').length;
|
|
188
|
+
}
|
|
189
|
+
return totalLines;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Analyze tool usage patterns in the content
|
|
193
|
+
*/
|
|
194
|
+
function analyzeToolUsage(content) {
|
|
195
|
+
const lowerContent = content.toLowerCase();
|
|
196
|
+
const detectedTools = [];
|
|
197
|
+
let totalWeight = 0;
|
|
198
|
+
for (const [tool, config] of Object.entries(TOOL_PATTERNS)) {
|
|
199
|
+
for (const pattern of config.patterns) {
|
|
200
|
+
if (lowerContent.includes(pattern.toLowerCase())) {
|
|
201
|
+
if (!detectedTools.includes(tool)) {
|
|
202
|
+
detectedTools.push(tool);
|
|
203
|
+
totalWeight += config.weight;
|
|
204
|
+
}
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Count specific tool patterns
|
|
210
|
+
const bashCommandCount = (content.match(/\b(npm|npx|git|docker|yarn|pnpm)\s/gi) || []).length;
|
|
211
|
+
const fileReadCount = (content.match(/\b(read|cat|head|tail|grep|find)\s/gi) || []).length;
|
|
212
|
+
const fileWriteCount = (content.match(/\b(write|edit|modify|create)\s+file/gi) || []).length;
|
|
213
|
+
// Determine if heavy tool usage suggests subagent
|
|
214
|
+
const suggestsSubagent = bashCommandCount >= THRESHOLDS.heavyToolUsageCount ||
|
|
215
|
+
fileReadCount + fileWriteCount >= THRESHOLDS.heavyToolUsageCount ||
|
|
216
|
+
totalWeight >= 10;
|
|
217
|
+
// Calculate confidence
|
|
218
|
+
const matchCount = detectedTools.length;
|
|
219
|
+
const confidence = matchCount >= 4 ? 'high' : matchCount >= 2 ? 'medium' : 'low';
|
|
220
|
+
return {
|
|
221
|
+
detectedTools,
|
|
222
|
+
bashCommandCount,
|
|
223
|
+
fileReadCount,
|
|
224
|
+
fileWriteCount,
|
|
225
|
+
suggestsSubagent,
|
|
226
|
+
confidence,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Analyze Task() call patterns
|
|
231
|
+
*/
|
|
232
|
+
function analyzeTaskPatterns(content) {
|
|
233
|
+
// Find Task() calls
|
|
234
|
+
const taskCalls = content.match(/Task\s*\([^)]+\)/g) || [];
|
|
235
|
+
const taskCallCount = taskCalls.length;
|
|
236
|
+
// Detect sequential patterns (Task calls on consecutive lines without batching)
|
|
237
|
+
const lines = content.split('\n');
|
|
238
|
+
let sequentialCalls = 0;
|
|
239
|
+
let consecutiveTaskLines = 0;
|
|
240
|
+
for (const line of lines) {
|
|
241
|
+
if (line.includes('Task(') || line.includes('Task (')) {
|
|
242
|
+
consecutiveTaskLines++;
|
|
243
|
+
}
|
|
244
|
+
else if (consecutiveTaskLines > 0) {
|
|
245
|
+
if (consecutiveTaskLines >= THRESHOLDS.sequentialTaskThreshold) {
|
|
246
|
+
sequentialCalls += consecutiveTaskLines;
|
|
247
|
+
}
|
|
248
|
+
consecutiveTaskLines = 0;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Check for final sequence
|
|
252
|
+
if (consecutiveTaskLines >= THRESHOLDS.sequentialTaskThreshold) {
|
|
253
|
+
sequentialCalls += consecutiveTaskLines;
|
|
254
|
+
}
|
|
255
|
+
const canBatch = sequentialCalls >= THRESHOLDS.sequentialTaskThreshold;
|
|
256
|
+
// Estimate savings from batching
|
|
257
|
+
// Batching reduces context overhead by ~30-50%
|
|
258
|
+
const batchSavingsPercent = canBatch ? Math.min(50, sequentialCalls * 10) : 0;
|
|
259
|
+
return {
|
|
260
|
+
taskCallCount,
|
|
261
|
+
sequentialCalls,
|
|
262
|
+
canBatch,
|
|
263
|
+
batchSavingsPercent,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Find sections that could be extracted as sub-skills
|
|
268
|
+
*/
|
|
269
|
+
function findExtractableSections(sections, totalLines) {
|
|
270
|
+
const extractable = [];
|
|
271
|
+
for (const section of sections) {
|
|
272
|
+
const lineCount = section.endLine - section.startLine + 1;
|
|
273
|
+
// Skip small sections
|
|
274
|
+
if (lineCount < THRESHOLDS.minSectionLines) {
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
// Calculate priority based on size relative to total
|
|
278
|
+
const sizeRatio = lineCount / totalLines;
|
|
279
|
+
let priority = 3;
|
|
280
|
+
if (sizeRatio > 0.3) {
|
|
281
|
+
priority = 1;
|
|
282
|
+
}
|
|
283
|
+
else if (sizeRatio > 0.15) {
|
|
284
|
+
priority = 2;
|
|
285
|
+
}
|
|
286
|
+
// Determine reason for extraction
|
|
287
|
+
let reason = '';
|
|
288
|
+
const lowerName = section.name.toLowerCase();
|
|
289
|
+
if (lowerName.includes('api') || lowerName.includes('reference')) {
|
|
290
|
+
reason = 'API reference sections can be loaded on-demand';
|
|
291
|
+
}
|
|
292
|
+
else if (lowerName.includes('example') || lowerName.includes('usage')) {
|
|
293
|
+
reason = 'Examples can be progressively disclosed';
|
|
294
|
+
}
|
|
295
|
+
else if (lowerName.includes('advanced') || lowerName.includes('configuration')) {
|
|
296
|
+
reason = 'Advanced topics are rarely needed in initial context';
|
|
297
|
+
}
|
|
298
|
+
else if (lineCount > 100) {
|
|
299
|
+
reason = 'Large section suitable for sub-skill extraction';
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
reason = 'Section size suggests separate loading benefit';
|
|
303
|
+
}
|
|
304
|
+
extractable.push({
|
|
305
|
+
name: section.name,
|
|
306
|
+
startLine: section.startLine,
|
|
307
|
+
endLine: section.endLine,
|
|
308
|
+
lineCount,
|
|
309
|
+
priority,
|
|
310
|
+
reason,
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
// Sort by priority
|
|
314
|
+
return extractable.sort((a, b) => a.priority - b.priority);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Generate optimization recommendations
|
|
318
|
+
*/
|
|
319
|
+
function generateRecommendations(lineCount, mainContentLines, examplesLines, toolUsage, taskPatterns, extractableSections) {
|
|
320
|
+
const recommendations = [];
|
|
321
|
+
// Recommend decomposition for large skills
|
|
322
|
+
if (lineCount > THRESHOLDS.maxLinesBeforeDecompose) {
|
|
323
|
+
const sectionNames = extractableSections.slice(0, 3).map((s) => s.name);
|
|
324
|
+
recommendations.push({
|
|
325
|
+
type: 'decompose',
|
|
326
|
+
description: `Skill has ${lineCount} lines (threshold: ${THRESHOLDS.maxLinesBeforeDecompose}). Decompose into main SKILL.md + sub-skills.`,
|
|
327
|
+
estimatedSavings: Math.min(70, Math.floor((lineCount - 400) / 10)),
|
|
328
|
+
priority: 1,
|
|
329
|
+
affectedAreas: sectionNames.length > 0 ? sectionNames : ['full-content'],
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
// Recommend subagent for heavy tool usage
|
|
333
|
+
if (toolUsage.suggestsSubagent) {
|
|
334
|
+
recommendations.push({
|
|
335
|
+
type: 'subagent',
|
|
336
|
+
description: `Heavy tool usage detected (${toolUsage.bashCommandCount} bash, ${toolUsage.fileReadCount} reads). Generate companion subagent for context isolation.`,
|
|
337
|
+
estimatedSavings: 40,
|
|
338
|
+
priority: 2,
|
|
339
|
+
affectedAreas: toolUsage.detectedTools,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
// Recommend parallelization for sequential Task() calls
|
|
343
|
+
if (taskPatterns.canBatch) {
|
|
344
|
+
recommendations.push({
|
|
345
|
+
type: 'parallelize',
|
|
346
|
+
description: `${taskPatterns.sequentialCalls} sequential Task() calls detected. Batch into single message for parallel execution.`,
|
|
347
|
+
estimatedSavings: taskPatterns.batchSavingsPercent,
|
|
348
|
+
priority: 2,
|
|
349
|
+
affectedAreas: ['Task-calls'],
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
// Recommend progressive disclosure for large examples
|
|
353
|
+
if (examplesLines > THRESHOLDS.largeExamplesThreshold) {
|
|
354
|
+
recommendations.push({
|
|
355
|
+
type: 'progressive-disclosure',
|
|
356
|
+
description: `Large examples section (${examplesLines} lines). Move to sub-skill for on-demand loading.`,
|
|
357
|
+
estimatedSavings: Math.min(60, Math.floor(examplesLines / 5)),
|
|
358
|
+
priority: 3,
|
|
359
|
+
affectedAreas: ['examples'],
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
// Sort by priority
|
|
363
|
+
return recommendations.sort((a, b) => a.priority - b.priority);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Calculate overall optimization score
|
|
367
|
+
*/
|
|
368
|
+
function calculateOptimizationScore(lineCount, toolUsage, taskPatterns, recommendations) {
|
|
369
|
+
let score = 0;
|
|
370
|
+
// Line count factor (0-40 points)
|
|
371
|
+
if (lineCount > THRESHOLDS.maxLinesBeforeDecompose) {
|
|
372
|
+
score += Math.min(40, Math.floor((lineCount - 400) / 10));
|
|
373
|
+
}
|
|
374
|
+
else if (lineCount > 300) {
|
|
375
|
+
score += Math.floor((lineCount - 300) / 20);
|
|
376
|
+
}
|
|
377
|
+
// Tool usage factor (0-30 points)
|
|
378
|
+
if (toolUsage.suggestsSubagent) {
|
|
379
|
+
score += 20;
|
|
380
|
+
}
|
|
381
|
+
score += Math.min(10, toolUsage.detectedTools.length * 2);
|
|
382
|
+
// Task pattern factor (0-20 points)
|
|
383
|
+
if (taskPatterns.canBatch) {
|
|
384
|
+
score += Math.min(20, taskPatterns.sequentialCalls * 5);
|
|
385
|
+
}
|
|
386
|
+
// Recommendation impact (0-10 points)
|
|
387
|
+
score += Math.min(10, recommendations.length * 3);
|
|
388
|
+
return Math.min(100, score);
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Quick check if a skill needs transformation without full analysis
|
|
392
|
+
*
|
|
393
|
+
* @param content - The full SKILL.md content
|
|
394
|
+
* @returns Whether quick transformation check passed
|
|
395
|
+
*/
|
|
396
|
+
export function quickTransformCheck(content) {
|
|
397
|
+
const lineCount = content.split('\n').length;
|
|
398
|
+
// Quick checks that indicate transformation needed
|
|
399
|
+
if (lineCount > THRESHOLDS.maxLinesBeforeDecompose) {
|
|
400
|
+
return true;
|
|
401
|
+
}
|
|
402
|
+
// Check for heavy tool usage patterns
|
|
403
|
+
const heavyToolPatterns = ['npm ', 'npx ', 'git ', 'docker', 'Bash('];
|
|
404
|
+
let heavyToolCount = 0;
|
|
405
|
+
for (const pattern of heavyToolPatterns) {
|
|
406
|
+
if (content.includes(pattern)) {
|
|
407
|
+
heavyToolCount++;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
if (heavyToolCount >= 3) {
|
|
411
|
+
return true;
|
|
412
|
+
}
|
|
413
|
+
// Check for sequential Task() calls
|
|
414
|
+
const taskMatches = content.match(/Task\s*\(/g) || [];
|
|
415
|
+
if (taskMatches.length >= THRESHOLDS.sequentialTaskThreshold) {
|
|
416
|
+
return true;
|
|
417
|
+
}
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
export default { analyzeSkill, quickTransformCheck };
|
|
421
|
+
//# sourceMappingURL=SkillAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillAnalyzer.js","sourceRoot":"","sources":["../../../src/services/SkillAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-XXX: SkillDecomposer - Decompose large skills into sub-skills
|
|
3
|
+
*
|
|
4
|
+
* Transforms skills >500 lines into a main SKILL.md + sub-skills structure
|
|
5
|
+
* following the Skillsmith optimization standard:
|
|
6
|
+
* - Main SKILL.md: <500 lines, contains header + navigation + core content
|
|
7
|
+
* - Sub-skills: Extracted sections loaded on-demand
|
|
8
|
+
*
|
|
9
|
+
* Part of the Skillsmith Optimization Layer for transforming
|
|
10
|
+
* community skills into more performant versions.
|
|
11
|
+
*/
|
|
12
|
+
import type { SkillAnalysis } from './SkillAnalyzer.js';
|
|
13
|
+
/**
|
|
14
|
+
* Result of skill decomposition
|
|
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
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Decompose a skill into main + sub-skills based on analysis
|
|
84
|
+
*
|
|
85
|
+
* @param content - The original SKILL.md content
|
|
86
|
+
* @param analysis - Analysis from SkillAnalyzer
|
|
87
|
+
* @param options - Decomposition options
|
|
88
|
+
* @returns Decomposition result with main skill and sub-skills
|
|
89
|
+
*/
|
|
90
|
+
export declare function decomposeSkill(content: string, analysis: SkillAnalysis, options?: DecomposerOptions): DecompositionResult;
|
|
91
|
+
/**
|
|
92
|
+
* Parallelize sequential Task() calls in skill content
|
|
93
|
+
*
|
|
94
|
+
* @param content - The skill content
|
|
95
|
+
* @returns Content with Task() calls batched for parallel execution
|
|
96
|
+
*/
|
|
97
|
+
export declare function parallelizeTaskCalls(content: string): string;
|
|
98
|
+
declare const _default: {
|
|
99
|
+
decomposeSkill: typeof decomposeSkill;
|
|
100
|
+
parallelizeTaskCalls: typeof parallelizeTaskCalls;
|
|
101
|
+
};
|
|
102
|
+
export default _default;
|
|
103
|
+
//# sourceMappingURL=SkillDecomposer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillDecomposer.d.ts","sourceRoot":"","sources":["../../../src/services/SkillDecomposer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAA;AAE3E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,SAAS,EAAE,eAAe,CAAA;IAE1B,2BAA2B;IAC3B,SAAS,EAAE,QAAQ,EAAE,CAAA;IAErB,wCAAwC;IACxC,aAAa,EAAE,OAAO,CAAA;IAEtB,yCAAyC;IACzC,KAAK,EAAE,kBAAkB,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAA;IAEhB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IAEjB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAEhB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;IAEnB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAA;IAErB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAA;IAEtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAA;IAErB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAA;IAErB,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAWD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,oEAAoE;IACpE,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AASD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,mBAAmB,CAoCrB;AAuUD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2C5D;;;;;AAcD,wBAAuD"}
|