@skillsmith/core 0.12.0 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +166 -1
- package/README.md +7 -8
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/api/client.d.ts +5 -3
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +23 -33
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/client.registry-sync.d.ts +28 -0
- package/dist/src/api/client.registry-sync.d.ts.map +1 -0
- package/dist/src/api/client.registry-sync.js +36 -0
- package/dist/src/api/client.registry-sync.js.map +1 -0
- package/dist/src/api/client.test.js +185 -0
- package/dist/src/api/client.test.js.map +1 -1
- package/dist/src/api/client.toSkill.d.ts +16 -0
- package/dist/src/api/client.toSkill.d.ts.map +1 -0
- package/dist/src/api/client.toSkill.js +46 -0
- package/dist/src/api/client.toSkill.js.map +1 -0
- package/dist/src/api/client.types.d.ts +22 -0
- package/dist/src/api/client.types.d.ts.map +1 -1
- package/dist/src/api/index.d.ts +1 -1
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/schemas.d.ts +28 -0
- package/dist/src/api/schemas.d.ts.map +1 -1
- package/dist/src/api/schemas.js +13 -0
- package/dist/src/api/schemas.js.map +1 -1
- package/dist/src/audit/remote-audit.d.ts +85 -0
- package/dist/src/audit/remote-audit.d.ts.map +1 -1
- package/dist/src/audit/remote-audit.js +126 -3
- package/dist/src/audit/remote-audit.js.map +1 -1
- package/dist/src/audit/remote-audit.test.js +217 -1
- package/dist/src/audit/remote-audit.test.js.map +1 -1
- package/dist/src/config/index.d.ts +1 -0
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/token-credentials.d.ts +20 -0
- package/dist/src/config/token-credentials.d.ts.map +1 -1
- package/dist/src/config/token-credentials.js +59 -0
- package/dist/src/config/token-credentials.js.map +1 -1
- package/dist/src/config/token-credentials.test.d.ts +3 -0
- package/dist/src/config/token-credentials.test.d.ts.map +1 -1
- package/dist/src/config/token-credentials.test.js +68 -0
- package/dist/src/config/token-credentials.test.js.map +1 -1
- package/dist/src/db/migration-runner.d.ts.map +1 -1
- package/dist/src/db/migration-runner.js +6 -0
- package/dist/src/db/migration-runner.js.map +1 -1
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.d.ts +36 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.d.ts.map +1 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.js +38 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.js.map +1 -0
- package/dist/src/db/schema.d.ts +1 -1
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +3 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/exports/services.d.ts +3 -7
- package/dist/src/exports/services.d.ts.map +1 -1
- package/dist/src/exports/services.install.d.ts +18 -0
- package/dist/src/exports/services.install.d.ts.map +1 -0
- package/dist/src/exports/services.install.js +62 -0
- package/dist/src/exports/services.install.js.map +1 -0
- package/dist/src/exports/services.js +12 -32
- package/dist/src/exports/services.js.map +1 -1
- package/dist/src/exports/types.d.ts +1 -1
- package/dist/src/exports/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/install/agent-config-merge.json.d.ts +5 -4
- package/dist/src/install/agent-config-merge.json.d.ts.map +1 -1
- package/dist/src/install/agent-config-merge.json.js +10 -9
- package/dist/src/install/agent-config-merge.json.js.map +1 -1
- package/dist/src/install/agent-config-merge.types.d.ts +11 -1
- package/dist/src/install/agent-config-merge.types.d.ts.map +1 -1
- package/dist/src/install/agent-config-merge.types.js.map +1 -1
- package/dist/src/install/agent-harness-targets.d.ts +30 -2
- package/dist/src/install/agent-harness-targets.d.ts.map +1 -1
- package/dist/src/install/agent-harness-targets.js +17 -0
- package/dist/src/install/agent-harness-targets.js.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.d.ts +28 -3
- package/dist/src/install/agent-manifest-path-guard.d.ts.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.js +59 -3
- package/dist/src/install/agent-manifest-path-guard.js.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.test.js +27 -1
- package/dist/src/install/agent-manifest-path-guard.test.js.map +1 -1
- package/dist/src/install/agent-pack-installer.antigravity-mcp.d.ts +74 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.js +106 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.js.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.js +157 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.d.ts +53 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.js +207 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.js.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.js +285 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.d.ts +8 -0
- package/dist/src/install/agent-pack-installer.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.entry.d.ts +120 -3
- package/dist/src/install/agent-pack-installer.entry.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.entry.js +166 -3
- package/dist/src/install/agent-pack-installer.entry.js.map +1 -1
- package/dist/src/install/agent-pack-installer.js +97 -3
- package/dist/src/install/agent-pack-installer.js.map +1 -1
- package/dist/src/install/agent-pack-installer.types.d.ts +27 -0
- package/dist/src/install/agent-pack-installer.types.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.types.js +6 -0
- package/dist/src/install/agent-pack-installer.types.js.map +1 -1
- package/dist/src/install/agent-pack-installer.workspace-scope.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.js +148 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.js.map +1 -0
- package/dist/src/install/agent-pack-uninstaller.d.ts +18 -7
- package/dist/src/install/agent-pack-uninstaller.d.ts.map +1 -1
- package/dist/src/install/agent-pack-uninstaller.js +59 -9
- package/dist/src/install/agent-pack-uninstaller.js.map +1 -1
- package/dist/src/install/agent-pack-uninstaller.test.js +74 -1
- package/dist/src/install/agent-pack-uninstaller.test.js.map +1 -1
- package/dist/src/install/fan-out.d.ts.map +1 -1
- package/dist/src/install/fan-out.js +6 -0
- package/dist/src/install/fan-out.js.map +1 -1
- package/dist/src/install/index.d.ts +2 -0
- package/dist/src/install/index.d.ts.map +1 -1
- package/dist/src/install/index.js +2 -0
- package/dist/src/install/index.js.map +1 -1
- package/dist/src/install/workspace-scope.d.ts +207 -0
- package/dist/src/install/workspace-scope.d.ts.map +1 -0
- package/dist/src/install/workspace-scope.js +275 -0
- package/dist/src/install/workspace-scope.js.map +1 -0
- package/dist/src/install/workspace-scope.test.d.ts +2 -0
- package/dist/src/install/workspace-scope.test.d.ts.map +1 -0
- package/dist/src/install/workspace-scope.test.js +378 -0
- package/dist/src/install/workspace-scope.test.js.map +1 -0
- package/dist/src/security/__tests__/pathValidation.test.js +30 -1
- package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
- package/dist/src/services/SubagentGenerator.client-profiles.d.ts +258 -0
- package/dist/src/services/SubagentGenerator.client-profiles.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.client-profiles.js +260 -0
- package/dist/src/services/SubagentGenerator.client-profiles.js.map +1 -0
- package/dist/src/services/SubagentGenerator.d.ts +19 -41
- package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
- package/dist/src/services/SubagentGenerator.helpers.d.ts +64 -0
- package/dist/src/services/SubagentGenerator.helpers.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.helpers.js +228 -0
- package/dist/src/services/SubagentGenerator.helpers.js.map +1 -0
- package/dist/src/services/SubagentGenerator.js +66 -208
- package/dist/src/services/SubagentGenerator.js.map +1 -1
- package/dist/src/services/SubagentGenerator.types.d.ts +45 -0
- package/dist/src/services/SubagentGenerator.types.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.types.js +14 -0
- package/dist/src/services/SubagentGenerator.types.js.map +1 -0
- package/dist/src/services/TransformationService.d.ts +18 -61
- package/dist/src/services/TransformationService.d.ts.map +1 -1
- package/dist/src/services/TransformationService.js +29 -17
- package/dist/src/services/TransformationService.js.map +1 -1
- package/dist/src/services/TransformationService.types.d.ts +74 -0
- package/dist/src/services/TransformationService.types.d.ts.map +1 -0
- package/dist/src/services/TransformationService.types.js +8 -0
- package/dist/src/services/TransformationService.types.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.d.ts +5 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.js +72 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.d.ts +2 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.js +61 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js +155 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -1
- package/dist/src/services/__tests__/TransformationService.test.js +48 -0
- package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
- package/dist/src/services/agent-pack/agent-pack.test.js +1 -0
- package/dist/src/services/agent-pack/agent-pack.test.js.map +1 -1
- package/dist/src/services/agent-pack/prompt-source.d.ts +1 -1
- package/dist/src/services/agent-pack/prompt-source.d.ts.map +1 -1
- package/dist/src/services/agent-pack/prompt-source.js +10 -3
- package/dist/src/services/agent-pack/prompt-source.js.map +1 -1
- package/dist/src/services/agent-pack/types.d.ts +26 -2
- package/dist/src/services/agent-pack/types.d.ts.map +1 -1
- package/dist/src/services/agent-pack/types.js +13 -0
- package/dist/src/services/agent-pack/types.js.map +1 -1
- package/dist/src/services/agent-tool-profile.d.ts.map +1 -1
- package/dist/src/services/agent-tool-profile.js +7 -0
- package/dist/src/services/agent-tool-profile.js.map +1 -1
- package/dist/src/services/agent-tool-profile.test.js +2 -2
- package/dist/src/services/skill-content-comparison.d.ts +71 -0
- package/dist/src/services/skill-content-comparison.d.ts.map +1 -0
- package/dist/src/services/skill-content-comparison.js +90 -0
- package/dist/src/services/skill-content-comparison.js.map +1 -0
- package/dist/src/services/skill-content-comparison.test.d.ts +6 -0
- package/dist/src/services/skill-content-comparison.test.d.ts.map +1 -0
- package/dist/src/services/skill-content-comparison.test.js +83 -0
- package/dist/src/services/skill-content-comparison.test.js.map +1 -0
- package/dist/src/services/skill-identity-classification.d.ts +202 -0
- package/dist/src/services/skill-identity-classification.d.ts.map +1 -0
- package/dist/src/services/skill-identity-classification.js +295 -0
- package/dist/src/services/skill-identity-classification.js.map +1 -0
- package/dist/src/services/skill-identity-classification.test.d.ts +6 -0
- package/dist/src/services/skill-identity-classification.test.d.ts.map +1 -0
- package/dist/src/services/skill-identity-classification.test.js +314 -0
- package/dist/src/services/skill-identity-classification.test.js.map +1 -0
- package/dist/src/services/skill-installation.content.d.ts.map +1 -1
- package/dist/src/services/skill-installation.content.js +6 -1
- package/dist/src/services/skill-installation.content.js.map +1 -1
- package/dist/src/services/skill-installation.helpers.d.ts +8 -15
- package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
- package/dist/src/services/skill-installation.helpers.js +11 -105
- package/dist/src/services/skill-installation.helpers.js.map +1 -1
- package/dist/src/services/skill-installation.helpers.test.js +106 -1
- package/dist/src/services/skill-installation.helpers.test.js.map +1 -1
- package/dist/src/services/skill-installation.service.js +1 -1
- package/dist/src/services/skill-installation.service.js.map +1 -1
- package/dist/src/services/skill-installation.types.d.ts +33 -0
- package/dist/src/services/skill-installation.types.d.ts.map +1 -1
- package/dist/src/services/skill-installation.types.js.map +1 -1
- package/dist/src/services/skill-installation.uninstall.d.ts +84 -0
- package/dist/src/services/skill-installation.uninstall.d.ts.map +1 -0
- package/dist/src/services/skill-installation.uninstall.js +252 -0
- package/dist/src/services/skill-installation.uninstall.js.map +1 -0
- package/dist/src/services/skill-manifest.d.ts +41 -0
- package/dist/src/services/skill-manifest.d.ts.map +1 -1
- package/dist/src/services/skill-manifest.js +93 -0
- package/dist/src/services/skill-manifest.js.map +1 -1
- package/dist/src/services/skill-manifest.test.js +27 -0
- package/dist/src/services/skill-manifest.test.js.map +1 -1
- package/dist/src/sync/SyncEngine.d.ts.map +1 -1
- package/dist/src/sync/SyncEngine.js +69 -77
- package/dist/src/sync/SyncEngine.js.map +1 -1
- package/dist/src/telemetry/agent-marker.d.ts +8 -0
- package/dist/src/telemetry/agent-marker.d.ts.map +1 -1
- package/dist/src/telemetry/agent-marker.js +7 -0
- package/dist/src/telemetry/agent-marker.js.map +1 -1
- package/dist/src/telemetry/agent-marker.test.js +7 -1
- package/dist/src/telemetry/agent-marker.test.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +1 -1
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/wrap.d.ts +6 -0
- package/dist/src/telemetry/wrap.d.ts.map +1 -1
- package/dist/src/telemetry/wrap.js +65 -10
- package/dist/src/telemetry/wrap.js.map +1 -1
- package/dist/src/telemetry/wrap.test.js +81 -1
- package/dist/src/telemetry/wrap.test.js.map +1 -1
- package/dist/src/telemetry/wrap.tool-call-sink.test.d.ts +26 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.d.ts.map +1 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.js +162 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.js.map +1 -0
- package/dist/src/types/skill.d.ts +9 -1
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/version-check.d.ts +61 -0
- package/dist/src/utils/version-check.d.ts.map +1 -1
- package/dist/src/utils/version-check.js +78 -1
- package/dist/src/utils/version-check.js.map +1 -1
- package/dist/src/utils/version-check.test.js +130 -1
- package/dist/src/utils/version-check.test.js.map +1 -1
- package/dist/tests/db/migration-runner-race.test.js +19 -9
- package/dist/tests/db/migration-runner-race.test.js.map +1 -1
- package/dist/tests/install/fan-out.test.js +27 -0
- package/dist/tests/install/fan-out.test.js.map +1 -1
- package/dist/tests/skill-scanner/allowlist.test.js +7 -1
- package/dist/tests/skill-scanner/allowlist.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.abort.test.js +15 -11
- package/dist/tests/sync/SyncEngine.abort.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.status.test.js +1 -1
- package/dist/tests/sync/SyncEngine.status.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.test.d.ts +11 -2
- package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -1
- package/dist/tests/sync/SyncEngine.test.js +164 -13
- package/dist/tests/sync/SyncEngine.test.js.map +1 -1
- package/dist/tests/unit/migrations/migration-v18.test.d.ts +16 -0
- package/dist/tests/unit/migrations/migration-v18.test.d.ts.map +1 -0
- package/dist/tests/unit/migrations/migration-v18.test.js +192 -0
- package/dist/tests/unit/migrations/migration-v18.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.content.test.js +65 -1
- package/dist/tests/unit/services/skill-installation.content.test.js.map +1 -1
- package/dist/tests/unit/services/skill-installation.service.test.js +9 -8
- package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
- package/dist/tests/unit/sync-engine.source-aware.test.js +5 -5
- package/dist/tests/unit/sync-engine.source-aware.test.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubagentGenerator.js","sourceRoot":"","sources":["../../../src/services/SubagentGenerator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SubagentGenerator.js","sourceRoot":"","sources":["../../../src/services/SubagentGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1788: Types for SubagentGenerator — split out under the 500-line
|
|
3
|
+
* standard (SMI-6276) following this directory's existing `.types.ts`
|
|
4
|
+
* convention (see SkillAnalyzer.types.ts / SkillDecomposer.types.ts).
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* SMI-1795: Claude model constants for type safety and consistency
|
|
8
|
+
*/
|
|
9
|
+
export declare const CLAUDE_MODELS: {
|
|
10
|
+
readonly HAIKU: "haiku";
|
|
11
|
+
readonly SONNET: "sonnet";
|
|
12
|
+
readonly OPUS: "opus";
|
|
13
|
+
};
|
|
14
|
+
export type ClaudeModel = (typeof CLAUDE_MODELS)[keyof typeof CLAUDE_MODELS];
|
|
15
|
+
/**
|
|
16
|
+
* Generated subagent definition
|
|
17
|
+
*/
|
|
18
|
+
export interface SubagentDefinition {
|
|
19
|
+
/** Subagent name (e.g., "jest-helper-specialist") */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Description for the Task tool */
|
|
22
|
+
description: string;
|
|
23
|
+
/** Trigger phrases that should invoke this subagent */
|
|
24
|
+
triggerPhrases: string[];
|
|
25
|
+
/** Tools the subagent needs access to */
|
|
26
|
+
tools: string[];
|
|
27
|
+
/** Recommended model */
|
|
28
|
+
model: ClaudeModel;
|
|
29
|
+
/** The full markdown content for the target client's companion-agent directory */
|
|
30
|
+
content: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of subagent generation
|
|
34
|
+
*/
|
|
35
|
+
export interface SubagentGenerationResult {
|
|
36
|
+
/** Whether a subagent was generated */
|
|
37
|
+
generated: boolean;
|
|
38
|
+
/** The subagent definition (if generated) */
|
|
39
|
+
subagent?: SubagentDefinition;
|
|
40
|
+
/** Reason if not generated */
|
|
41
|
+
reason?: string;
|
|
42
|
+
/** CLAUDE.md integration snippet */
|
|
43
|
+
claudeMdSnippet?: string;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=SubagentGenerator.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentGenerator.types.d.ts","sourceRoot":"","sources":["../../../src/services/SubagentGenerator.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;CAIhB,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IAEZ,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAA;IAEnB,uDAAuD;IACvD,cAAc,EAAE,MAAM,EAAE,CAAA;IAExB,yCAAyC;IACzC,KAAK,EAAE,MAAM,EAAE,CAAA;IAEf,wBAAwB;IACxB,KAAK,EAAE,WAAW,CAAA;IAElB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAA;IAElB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAE7B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1788: Types for SubagentGenerator — split out under the 500-line
|
|
3
|
+
* standard (SMI-6276) following this directory's existing `.types.ts`
|
|
4
|
+
* convention (see SkillAnalyzer.types.ts / SkillDecomposer.types.ts).
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* SMI-1795: Claude model constants for type safety and consistency
|
|
8
|
+
*/
|
|
9
|
+
export const CLAUDE_MODELS = {
|
|
10
|
+
HAIKU: 'haiku',
|
|
11
|
+
SONNET: 'sonnet',
|
|
12
|
+
OPUS: 'opus',
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=SubagentGenerator.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentGenerator.types.js","sourceRoot":"","sources":["../../../src/services/SubagentGenerator.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACJ,CAAA"}
|
|
@@ -17,63 +17,9 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import type { Database as DatabaseType } from '../db/database-interface.js';
|
|
19
19
|
import { type SkillAnalysis } from './SkillAnalyzer.js';
|
|
20
|
-
import { type
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*/
|
|
24
|
-
export interface TransformationResult {
|
|
25
|
-
/** Whether transformation was applied */
|
|
26
|
-
transformed: boolean;
|
|
27
|
-
/** The optimized main SKILL.md content */
|
|
28
|
-
mainSkillContent: string;
|
|
29
|
-
/** Sub-skills (if decomposed) */
|
|
30
|
-
subSkills: Array<{
|
|
31
|
-
filename: string;
|
|
32
|
-
content: string;
|
|
33
|
-
}>;
|
|
34
|
-
/** Companion subagent (if generated) */
|
|
35
|
-
subagent?: SubagentDefinition;
|
|
36
|
-
/** CLAUDE.md integration snippet */
|
|
37
|
-
claudeMdSnippet?: string;
|
|
38
|
-
/** Transformation statistics */
|
|
39
|
-
stats: TransformationStats;
|
|
40
|
-
/** Analysis that informed the transformation */
|
|
41
|
-
analysis: SkillAnalysis;
|
|
42
|
-
/** Attribution footer added to content */
|
|
43
|
-
attribution: string;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Statistics about the transformation
|
|
47
|
-
*/
|
|
48
|
-
export interface TransformationStats {
|
|
49
|
-
/** Original content line count */
|
|
50
|
-
originalLines: number;
|
|
51
|
-
/** Optimized main skill line count */
|
|
52
|
-
optimizedLines: number;
|
|
53
|
-
/** Number of sub-skills extracted */
|
|
54
|
-
subSkillCount: number;
|
|
55
|
-
/** Whether Task() calls were parallelized */
|
|
56
|
-
tasksParallelized: boolean;
|
|
57
|
-
/** Whether subagent was generated */
|
|
58
|
-
subagentGenerated: boolean;
|
|
59
|
-
/** Estimated token reduction percentage */
|
|
60
|
-
tokenReductionPercent: number;
|
|
61
|
-
/** Transformation duration in ms */
|
|
62
|
-
transformDurationMs: number;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Configuration for TransformationService
|
|
66
|
-
*/
|
|
67
|
-
export interface TransformationServiceOptions {
|
|
68
|
-
/** Cache TTL in seconds (default: 3600 = 1 hour) */
|
|
69
|
-
cacheTtl?: number;
|
|
70
|
-
/** Enable caching (default: true) */
|
|
71
|
-
enableCache?: boolean;
|
|
72
|
-
/** Force re-transformation even if cached (default: false) */
|
|
73
|
-
forceTransform?: boolean;
|
|
74
|
-
/** Transformation version for cache invalidation */
|
|
75
|
-
version?: string;
|
|
76
|
-
}
|
|
20
|
+
import { type ClientId } from '../install/paths.js';
|
|
21
|
+
import type { TransformationResult, TransformationServiceOptions } from './TransformationService.types.js';
|
|
22
|
+
export type { TransformationResult, TransformationStats, TransformationServiceOptions, } from './TransformationService.types.js';
|
|
77
23
|
/**
|
|
78
24
|
* TransformationService orchestrates the skill optimization pipeline
|
|
79
25
|
*/
|
|
@@ -94,9 +40,13 @@ export declare class TransformationService {
|
|
|
94
40
|
* @param skillName - Human-readable skill name
|
|
95
41
|
* @param description - Skill description
|
|
96
42
|
* @param content - The full SKILL.md content
|
|
43
|
+
* @param client - SMI-6276: target client for the generated companion-agent
|
|
44
|
+
* frontmatter shape (default: canonical / `claude-code`, preserving prior
|
|
45
|
+
* behavior for every existing caller). See
|
|
46
|
+
* `SubagentGenerator.client-profiles.ts`.
|
|
97
47
|
* @returns Transformation result
|
|
98
48
|
*/
|
|
99
|
-
transform(skillId: string, skillName: string, description: string, content: string): Promise<TransformationResult>;
|
|
49
|
+
transform(skillId: string, skillName: string, description: string, content: string, client?: ClientId): Promise<TransformationResult>;
|
|
100
50
|
/**
|
|
101
51
|
* Transform without caching (for testing or one-off transforms)
|
|
102
52
|
*
|
|
@@ -106,9 +56,11 @@ export declare class TransformationService {
|
|
|
106
56
|
* @param skillName - Human-readable skill name
|
|
107
57
|
* @param description - Skill description
|
|
108
58
|
* @param content - The full SKILL.md content
|
|
59
|
+
* @param client - SMI-6276: target client for the generated companion-agent
|
|
60
|
+
* frontmatter shape (default: canonical / `claude-code`).
|
|
109
61
|
* @returns Transformation result
|
|
110
62
|
*/
|
|
111
|
-
transformWithoutCache(skillName: string, description: string, content: string): TransformationResult;
|
|
63
|
+
transformWithoutCache(skillName: string, description: string, content: string, client?: ClientId): TransformationResult;
|
|
112
64
|
/**
|
|
113
65
|
* Check if a skill would benefit from transformation without fully transforming
|
|
114
66
|
*
|
|
@@ -125,7 +77,10 @@ export declare class TransformationService {
|
|
|
125
77
|
*/
|
|
126
78
|
private cacheTransformation;
|
|
127
79
|
/**
|
|
128
|
-
* Build cache key for a skill
|
|
80
|
+
* Build cache key for a skill. Includes `client` (SMI-6276 pr-reviewer
|
|
81
|
+
* finding) -- without it, a cached transformation generated for one
|
|
82
|
+
* client's frontmatter shape gets silently served back for a different
|
|
83
|
+
* client, defeating the whole point of client-parameterized generation.
|
|
129
84
|
*/
|
|
130
85
|
private buildCacheKey;
|
|
131
86
|
/**
|
|
@@ -160,8 +115,10 @@ export declare class TransformationService {
|
|
|
160
115
|
* @param skillName - Human-readable skill name
|
|
161
116
|
* @param description - Skill description
|
|
162
117
|
* @param content - The full SKILL.md content
|
|
118
|
+
* @param client - SMI-6276: target client for the generated companion-agent
|
|
119
|
+
* frontmatter shape (default: canonical / `claude-code`).
|
|
163
120
|
* @returns Transformation result
|
|
164
121
|
*/
|
|
165
|
-
export declare function transformSkill(skillName: string, description: string, content: string): TransformationResult;
|
|
122
|
+
export declare function transformSkill(skillName: string, description: string, content: string, client?: ClientId): TransformationResult;
|
|
166
123
|
export default TransformationService;
|
|
167
124
|
//# sourceMappingURL=TransformationService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformationService.d.ts","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG3E,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"TransformationService.d.ts","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG3E,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAO1F,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,KAAK,EAEV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,kCAAkC,CAAA;AAEzC,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,kCAAkC,CAAA;AAsBzC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAAwC;IAEvD;;;;;OAKG;gBACS,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,4BAA4B;IAKrE;;;;;;;;;;;;OAYG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,QAA2B,GAClC,OAAO,CAAC,oBAAoB,CAAC;IAmEhC;;;;;;;;;;;;OAYG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,QAA2B,GAClC,oBAAoB;IAqCvB;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAIvC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,WAAW;IA8CnB;;OAEG;IACH,UAAU,IAAI,MAAM;IAKpB;;OAEG;IACH,aAAa,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAOpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,QAA2B,GAClC,oBAAoB,CAGtB;AAED,eAAe,qBAAqB,CAAA"}
|
|
@@ -19,7 +19,8 @@ import { createHash } from 'crypto';
|
|
|
19
19
|
import { CacheRepository } from '../repositories/CacheRepository.js';
|
|
20
20
|
import { analyzeSkill, quickTransformCheck } from './SkillAnalyzer.js';
|
|
21
21
|
import { decomposeSkill, parallelizeTaskCalls, } from './SkillDecomposer.js';
|
|
22
|
-
import { generateSubagent
|
|
22
|
+
import { generateSubagent } from './SubagentGenerator.js';
|
|
23
|
+
import { CANONICAL_CLIENT } from '../install/paths.js';
|
|
23
24
|
const DEFAULT_OPTIONS = {
|
|
24
25
|
cacheTtl: 3600, // 1 hour
|
|
25
26
|
enableCache: true,
|
|
@@ -58,9 +59,13 @@ export class TransformationService {
|
|
|
58
59
|
* @param skillName - Human-readable skill name
|
|
59
60
|
* @param description - Skill description
|
|
60
61
|
* @param content - The full SKILL.md content
|
|
62
|
+
* @param client - SMI-6276: target client for the generated companion-agent
|
|
63
|
+
* frontmatter shape (default: canonical / `claude-code`, preserving prior
|
|
64
|
+
* behavior for every existing caller). See
|
|
65
|
+
* `SubagentGenerator.client-profiles.ts`.
|
|
61
66
|
* @returns Transformation result
|
|
62
67
|
*/
|
|
63
|
-
async transform(skillId, skillName, description, content) {
|
|
68
|
+
async transform(skillId, skillName, description, content, client = CANONICAL_CLIENT) {
|
|
64
69
|
const startTime = Date.now();
|
|
65
70
|
// SMI-1791: Validate content length to prevent DoS
|
|
66
71
|
if (content.length > MAX_CONTENT_LENGTH) {
|
|
@@ -68,7 +73,7 @@ export class TransformationService {
|
|
|
68
73
|
}
|
|
69
74
|
// Check cache first (unless force transform)
|
|
70
75
|
if (!this.options.forceTransform && this.cache) {
|
|
71
|
-
const cached = this.getCachedTransformation(skillId, content);
|
|
76
|
+
const cached = this.getCachedTransformation(skillId, content, client);
|
|
72
77
|
if (cached) {
|
|
73
78
|
return cached;
|
|
74
79
|
}
|
|
@@ -79,7 +84,7 @@ export class TransformationService {
|
|
|
79
84
|
const result = this.createMinimalResult(content, startTime);
|
|
80
85
|
// Cache the result
|
|
81
86
|
if (this.cache) {
|
|
82
|
-
this.cacheTransformation(skillId, content, result);
|
|
87
|
+
this.cacheTransformation(skillId, content, result, client);
|
|
83
88
|
}
|
|
84
89
|
return result;
|
|
85
90
|
}
|
|
@@ -96,12 +101,12 @@ export class TransformationService {
|
|
|
96
101
|
// 2. Decompose if needed
|
|
97
102
|
const decomposition = decomposeSkill(transformedContent, analysis);
|
|
98
103
|
// 3. Generate subagent if beneficial
|
|
99
|
-
const subagentResult = generateSubagent(skillName, description, content, analysis);
|
|
104
|
+
const subagentResult = generateSubagent(skillName, description, content, analysis, client);
|
|
100
105
|
// Build result
|
|
101
106
|
const result = this.buildResult(decomposition, subagentResult, analysis, tasksParallelized, startTime);
|
|
102
107
|
// Cache the result
|
|
103
108
|
if (this.cache) {
|
|
104
|
-
this.cacheTransformation(skillId, content, result);
|
|
109
|
+
this.cacheTransformation(skillId, content, result, client);
|
|
105
110
|
}
|
|
106
111
|
return result;
|
|
107
112
|
}
|
|
@@ -114,9 +119,11 @@ export class TransformationService {
|
|
|
114
119
|
* @param skillName - Human-readable skill name
|
|
115
120
|
* @param description - Skill description
|
|
116
121
|
* @param content - The full SKILL.md content
|
|
122
|
+
* @param client - SMI-6276: target client for the generated companion-agent
|
|
123
|
+
* frontmatter shape (default: canonical / `claude-code`).
|
|
117
124
|
* @returns Transformation result
|
|
118
125
|
*/
|
|
119
|
-
transformWithoutCache(skillName, description, content) {
|
|
126
|
+
transformWithoutCache(skillName, description, content, client = CANONICAL_CLIENT) {
|
|
120
127
|
const startTime = Date.now();
|
|
121
128
|
// SMI-1791: Validate content length to prevent DoS
|
|
122
129
|
if (content.length > MAX_CONTENT_LENGTH) {
|
|
@@ -139,7 +146,7 @@ export class TransformationService {
|
|
|
139
146
|
// 2. Decompose if needed
|
|
140
147
|
const decomposition = decomposeSkill(transformedContent, analysis);
|
|
141
148
|
// 3. Generate subagent if beneficial
|
|
142
|
-
const subagentResult = generateSubagent(skillName, description, content, analysis);
|
|
149
|
+
const subagentResult = generateSubagent(skillName, description, content, analysis, client);
|
|
143
150
|
return this.buildResult(decomposition, subagentResult, analysis, tasksParallelized, startTime);
|
|
144
151
|
}
|
|
145
152
|
/**
|
|
@@ -154,11 +161,11 @@ export class TransformationService {
|
|
|
154
161
|
/**
|
|
155
162
|
* Get cached transformation if available and valid
|
|
156
163
|
*/
|
|
157
|
-
getCachedTransformation(skillId, content) {
|
|
164
|
+
getCachedTransformation(skillId, content, client) {
|
|
158
165
|
if (!this.cache)
|
|
159
166
|
return null;
|
|
160
167
|
try {
|
|
161
|
-
const cacheKey = this.buildCacheKey(skillId);
|
|
168
|
+
const cacheKey = this.buildCacheKey(skillId, client);
|
|
162
169
|
const cached = this.cache.get(cacheKey);
|
|
163
170
|
if (!cached)
|
|
164
171
|
return null;
|
|
@@ -183,11 +190,11 @@ export class TransformationService {
|
|
|
183
190
|
/**
|
|
184
191
|
* Cache a transformation result
|
|
185
192
|
*/
|
|
186
|
-
cacheTransformation(skillId, content, result) {
|
|
193
|
+
cacheTransformation(skillId, content, result, client) {
|
|
187
194
|
if (!this.cache)
|
|
188
195
|
return;
|
|
189
196
|
try {
|
|
190
|
-
const cacheKey = this.buildCacheKey(skillId);
|
|
197
|
+
const cacheKey = this.buildCacheKey(skillId, client);
|
|
191
198
|
const contentHash = this.hashContent(content);
|
|
192
199
|
const cacheEntry = {
|
|
193
200
|
result,
|
|
@@ -203,10 +210,13 @@ export class TransformationService {
|
|
|
203
210
|
}
|
|
204
211
|
}
|
|
205
212
|
/**
|
|
206
|
-
* Build cache key for a skill
|
|
213
|
+
* Build cache key for a skill. Includes `client` (SMI-6276 pr-reviewer
|
|
214
|
+
* finding) -- without it, a cached transformation generated for one
|
|
215
|
+
* client's frontmatter shape gets silently served back for a different
|
|
216
|
+
* client, defeating the whole point of client-parameterized generation.
|
|
207
217
|
*/
|
|
208
|
-
buildCacheKey(skillId) {
|
|
209
|
-
return `${CACHE_KEY_PREFIX}${skillId}`;
|
|
218
|
+
buildCacheKey(skillId, client) {
|
|
219
|
+
return `${CACHE_KEY_PREFIX}${skillId}:${client}`;
|
|
210
220
|
}
|
|
211
221
|
/**
|
|
212
222
|
* SMI-1790: Compute SHA-256 hash for content comparison
|
|
@@ -305,11 +315,13 @@ export class TransformationService {
|
|
|
305
315
|
* @param skillName - Human-readable skill name
|
|
306
316
|
* @param description - Skill description
|
|
307
317
|
* @param content - The full SKILL.md content
|
|
318
|
+
* @param client - SMI-6276: target client for the generated companion-agent
|
|
319
|
+
* frontmatter shape (default: canonical / `claude-code`).
|
|
308
320
|
* @returns Transformation result
|
|
309
321
|
*/
|
|
310
|
-
export function transformSkill(skillName, description, content) {
|
|
322
|
+
export function transformSkill(skillName, description, content, client = CANONICAL_CLIENT) {
|
|
311
323
|
const service = new TransformationService();
|
|
312
|
-
return service.transformWithoutCache(skillName, description, content);
|
|
324
|
+
return service.transformWithoutCache(skillName, description, content, client);
|
|
313
325
|
}
|
|
314
326
|
export default TransformationService;
|
|
315
327
|
//# sourceMappingURL=TransformationService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformationService.js","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAsB,MAAM,oBAAoB,CAAA;AAC1F,OAAO,EACL,cAAc,EACd,oBAAoB,GAErB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"TransformationService.js","sourceRoot":"","sources":["../../../src/services/TransformationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for `TransformationService.ts` — split out (SMI-6276)
|
|
3
|
+
* when the `client` parameter threaded through by Wave 6 Step 1 pushed the
|
|
4
|
+
* combined file past the 500-line standard. Re-exported verbatim from
|
|
5
|
+
* `TransformationService.ts` so its own public import path is unaffected.
|
|
6
|
+
*/
|
|
7
|
+
import type { SkillAnalysis } from './SkillAnalyzer.js';
|
|
8
|
+
import type { SubagentDefinition } from './SubagentGenerator.js';
|
|
9
|
+
/**
|
|
10
|
+
* Full transformation result for a skill
|
|
11
|
+
*/
|
|
12
|
+
export interface TransformationResult {
|
|
13
|
+
/** Whether transformation was applied */
|
|
14
|
+
transformed: boolean;
|
|
15
|
+
/** The optimized main SKILL.md content */
|
|
16
|
+
mainSkillContent: string;
|
|
17
|
+
/** Sub-skills (if decomposed) */
|
|
18
|
+
subSkills: Array<{
|
|
19
|
+
filename: string;
|
|
20
|
+
content: string;
|
|
21
|
+
}>;
|
|
22
|
+
/** Companion subagent (if generated) */
|
|
23
|
+
subagent?: SubagentDefinition;
|
|
24
|
+
/** CLAUDE.md integration snippet */
|
|
25
|
+
claudeMdSnippet?: string;
|
|
26
|
+
/** Transformation statistics */
|
|
27
|
+
stats: TransformationStats;
|
|
28
|
+
/** Analysis that informed the transformation */
|
|
29
|
+
analysis: SkillAnalysis;
|
|
30
|
+
/** Attribution footer added to content */
|
|
31
|
+
attribution: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Statistics about the transformation
|
|
35
|
+
*/
|
|
36
|
+
export interface TransformationStats {
|
|
37
|
+
/** Original content line count */
|
|
38
|
+
originalLines: number;
|
|
39
|
+
/** Optimized main skill line count */
|
|
40
|
+
optimizedLines: number;
|
|
41
|
+
/** Number of sub-skills extracted */
|
|
42
|
+
subSkillCount: number;
|
|
43
|
+
/** Whether Task() calls were parallelized */
|
|
44
|
+
tasksParallelized: boolean;
|
|
45
|
+
/** Whether subagent was generated */
|
|
46
|
+
subagentGenerated: boolean;
|
|
47
|
+
/** Estimated token reduction percentage */
|
|
48
|
+
tokenReductionPercent: number;
|
|
49
|
+
/** Transformation duration in ms */
|
|
50
|
+
transformDurationMs: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Cached transformation entry
|
|
54
|
+
*/
|
|
55
|
+
export interface CachedTransformation {
|
|
56
|
+
result: TransformationResult;
|
|
57
|
+
skillHash: string;
|
|
58
|
+
cachedAt: string;
|
|
59
|
+
version: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Configuration for TransformationService
|
|
63
|
+
*/
|
|
64
|
+
export interface TransformationServiceOptions {
|
|
65
|
+
/** Cache TTL in seconds (default: 3600 = 1 hour) */
|
|
66
|
+
cacheTtl?: number;
|
|
67
|
+
/** Enable caching (default: true) */
|
|
68
|
+
enableCache?: boolean;
|
|
69
|
+
/** Force re-transformation even if cached (default: false) */
|
|
70
|
+
forceTransform?: boolean;
|
|
71
|
+
/** Transformation version for cache invalidation */
|
|
72
|
+
version?: string;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=TransformationService.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransformationService.types.d.ts","sourceRoot":"","sources":["../../../src/services/TransformationService.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAA;IAEpB,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAA;IAExB,iCAAiC;IACjC,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC,CAAA;IAEF,wCAAwC;IACxC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAE7B,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC;IAChC,KAAK,EAAE,mBAAmB,CAAA;IAE1B,gDAAgD;IAChD,QAAQ,EAAE,aAAa,CAAA;IAEvB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAA;IAErB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAA;IAEtB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAA;IAErB,6CAA6C;IAC7C,iBAAiB,EAAE,OAAO,CAAA;IAE1B,qCAAqC;IACrC,iBAAiB,EAAE,OAAO,CAAA;IAE1B,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAA;IAE7B,oCAAoC;IACpC,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for `TransformationService.ts` — split out (SMI-6276)
|
|
3
|
+
* when the `client` parameter threaded through by Wave 6 Step 1 pushed the
|
|
4
|
+
* combined file past the 500-line standard. Re-exported verbatim from
|
|
5
|
+
* `TransformationService.ts` so its own public import path is unaffected.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=TransformationService.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransformationService.types.js","sourceRoot":"","sources":["../../../src/services/TransformationService.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentGenerator.client-profiles.test.d.ts","sourceRoot":"","sources":["../../../../src/services/__tests__/SubagentGenerator.client-profiles.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tests for SubagentGenerator.client-profiles (SMI-6276)
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from 'vitest';
|
|
5
|
+
import { CLIENT_IDS } from '../../install/paths.js';
|
|
6
|
+
import { SUBAGENT_CLIENT_PROFILES, getSubagentGenerationProfile, mapToolNames, } from '../SubagentGenerator.client-profiles.js';
|
|
7
|
+
describe('SubagentGenerator.client-profiles', () => {
|
|
8
|
+
describe('SUBAGENT_CLIENT_PROFILES', () => {
|
|
9
|
+
it('has an entry for every ClientId', () => {
|
|
10
|
+
for (const client of CLIENT_IDS) {
|
|
11
|
+
expect(SUBAGENT_CLIENT_PROFILES[client]).toBeDefined();
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
it('gives cursor the exact same profile object as claude-code (deliberate reuse)', () => {
|
|
15
|
+
expect(SUBAGENT_CLIENT_PROFILES.cursor).toBe(SUBAGENT_CLIENT_PROFILES['claude-code']);
|
|
16
|
+
});
|
|
17
|
+
it('claude-code accepts Claude-native tools and a Claude model enum', () => {
|
|
18
|
+
const profile = SUBAGENT_CLIENT_PROFILES['claude-code'];
|
|
19
|
+
expect(profile.toolsPolicy).toBe('claude-native');
|
|
20
|
+
expect(profile.modelPolicy).toBe('claude-enum');
|
|
21
|
+
expect(profile.includeSkillsField).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
it('antigravity uses a mapped tool array and omits the model field', () => {
|
|
24
|
+
const profile = SUBAGENT_CLIENT_PROFILES.antigravity;
|
|
25
|
+
expect(profile.toolsPolicy).toBe('mapped-array');
|
|
26
|
+
expect(profile.modelPolicy).toBe('omit');
|
|
27
|
+
expect(profile.includeSkillsField).toBe(false);
|
|
28
|
+
expect(profile.toolNameMap).toBeDefined();
|
|
29
|
+
});
|
|
30
|
+
it('opencode includes the mode: subagent line but omits tools/model', () => {
|
|
31
|
+
const profile = SUBAGENT_CLIENT_PROFILES.opencode;
|
|
32
|
+
expect(profile.toolsPolicy).toBe('omit');
|
|
33
|
+
expect(profile.modelPolicy).toBe('omit');
|
|
34
|
+
expect(profile.extraFrontmatterLines).toContain('mode: subagent');
|
|
35
|
+
});
|
|
36
|
+
it('every unverified-vocabulary client (copilot/windsurf/agents/hermes/grok) omits tools and model', () => {
|
|
37
|
+
for (const client of ['copilot', 'windsurf', 'agents', 'hermes', 'grok']) {
|
|
38
|
+
const profile = SUBAGENT_CLIENT_PROFILES[client];
|
|
39
|
+
expect(profile.toolsPolicy).toBe('omit');
|
|
40
|
+
expect(profile.modelPolicy).toBe('omit');
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('getSubagentGenerationProfile', () => {
|
|
45
|
+
it('defaults to the claude-code (canonical) profile when no client is given', () => {
|
|
46
|
+
expect(getSubagentGenerationProfile()).toBe(SUBAGENT_CLIENT_PROFILES['claude-code']);
|
|
47
|
+
});
|
|
48
|
+
it('resolves the antigravity profile by name', () => {
|
|
49
|
+
expect(getSubagentGenerationProfile('antigravity')).toBe(SUBAGENT_CLIENT_PROFILES.antigravity);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('mapToolNames', () => {
|
|
53
|
+
const antigravityProfile = SUBAGENT_CLIENT_PROFILES.antigravity;
|
|
54
|
+
it('maps confirmed Skillsmith tool names to AntiGravity-own identifiers', () => {
|
|
55
|
+
const mapped = mapToolNames(['Read', 'Bash', 'Grep'], antigravityProfile);
|
|
56
|
+
expect(mapped).toEqual(['view_file', 'run_command', 'grep_search']);
|
|
57
|
+
});
|
|
58
|
+
it('deduplicates Write and Edit onto the same AntiGravity tool', () => {
|
|
59
|
+
const mapped = mapToolNames(['Write', 'Edit'], antigravityProfile);
|
|
60
|
+
expect(mapped).toEqual(['replace_file_content']);
|
|
61
|
+
});
|
|
62
|
+
it('silently drops internal tool names with no confirmed AntiGravity mapping', () => {
|
|
63
|
+
const mapped = mapToolNames(['Glob', 'WebFetch', 'WebSearch'], antigravityProfile);
|
|
64
|
+
expect(mapped).toEqual([]);
|
|
65
|
+
});
|
|
66
|
+
it('returns an empty array for a profile with no toolNameMap', () => {
|
|
67
|
+
const mapped = mapToolNames(['Read', 'Bash'], SUBAGENT_CLIENT_PROFILES['claude-code']);
|
|
68
|
+
expect(mapped).toEqual([]);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=SubagentGenerator.client-profiles.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentGenerator.client-profiles.test.js","sourceRoot":"","sources":["../../../../src/services/__tests__/SubagentGenerator.client-profiles.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentGenerator.helpers.test.d.ts","sourceRoot":"","sources":["../../../../src/services/__tests__/SubagentGenerator.helpers.test.ts"],"names":[],"mappings":""}
|