@vorionsys/contracts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aci/aci-string.d.ts +539 -0
- package/dist/aci/aci-string.d.ts.map +1 -0
- package/dist/aci/aci-string.js +563 -0
- package/dist/aci/aci-string.js.map +1 -0
- package/dist/aci/attestation.d.ts +648 -0
- package/dist/aci/attestation.d.ts.map +1 -0
- package/dist/aci/attestation.js +289 -0
- package/dist/aci/attestation.js.map +1 -0
- package/dist/aci/domains.d.ts +260 -0
- package/dist/aci/domains.d.ts.map +1 -0
- package/dist/aci/domains.js +322 -0
- package/dist/aci/domains.js.map +1 -0
- package/dist/aci/effective-permission.d.ts +371 -0
- package/dist/aci/effective-permission.d.ts.map +1 -0
- package/dist/aci/effective-permission.js +351 -0
- package/dist/aci/effective-permission.js.map +1 -0
- package/dist/aci/identity.d.ts +1100 -0
- package/dist/aci/identity.d.ts.map +1 -0
- package/dist/aci/identity.js +328 -0
- package/dist/aci/identity.js.map +1 -0
- package/dist/aci/index.d.ts +67 -0
- package/dist/aci/index.d.ts.map +1 -0
- package/dist/aci/index.js +157 -0
- package/dist/aci/index.js.map +1 -0
- package/dist/aci/jwt-claims.d.ts +756 -0
- package/dist/aci/jwt-claims.d.ts.map +1 -0
- package/dist/aci/jwt-claims.js +335 -0
- package/dist/aci/jwt-claims.js.map +1 -0
- package/dist/aci/levels.d.ts +279 -0
- package/dist/aci/levels.d.ts.map +1 -0
- package/dist/aci/levels.js +467 -0
- package/dist/aci/levels.js.map +1 -0
- package/dist/aci/mapping.d.ts +291 -0
- package/dist/aci/mapping.d.ts.map +1 -0
- package/dist/aci/mapping.js +427 -0
- package/dist/aci/mapping.js.map +1 -0
- package/dist/aci/skills.d.ts +314 -0
- package/dist/aci/skills.d.ts.map +1 -0
- package/dist/aci/skills.js +404 -0
- package/dist/aci/skills.js.map +1 -0
- package/dist/aci/tiers.d.ts +403 -0
- package/dist/aci/tiers.d.ts.map +1 -0
- package/dist/aci/tiers.js +659 -0
- package/dist/aci/tiers.js.map +1 -0
- package/dist/canonical/agent.d.ts +796 -0
- package/dist/canonical/agent.d.ts.map +1 -0
- package/dist/canonical/agent.js +527 -0
- package/dist/canonical/agent.js.map +1 -0
- package/dist/canonical/governance.d.ts +905 -0
- package/dist/canonical/governance.d.ts.map +1 -0
- package/dist/canonical/governance.js +454 -0
- package/dist/canonical/governance.js.map +1 -0
- package/dist/canonical/index.d.ts +17 -0
- package/dist/canonical/index.d.ts.map +1 -0
- package/dist/canonical/index.js +21 -0
- package/dist/canonical/index.js.map +1 -0
- package/dist/canonical/intent.d.ts +727 -0
- package/dist/canonical/intent.d.ts.map +1 -0
- package/dist/canonical/intent.js +203 -0
- package/dist/canonical/intent.js.map +1 -0
- package/dist/canonical/risk-level.d.ts +344 -0
- package/dist/canonical/risk-level.d.ts.map +1 -0
- package/dist/canonical/risk-level.js +472 -0
- package/dist/canonical/risk-level.js.map +1 -0
- package/dist/canonical/trust-band.d.ts +239 -0
- package/dist/canonical/trust-band.d.ts.map +1 -0
- package/dist/canonical/trust-band.js +298 -0
- package/dist/canonical/trust-band.js.map +1 -0
- package/dist/canonical/trust-score.d.ts +301 -0
- package/dist/canonical/trust-score.d.ts.map +1 -0
- package/dist/canonical/trust-score.js +390 -0
- package/dist/canonical/trust-score.js.map +1 -0
- package/dist/canonical/trust-signal.d.ts +617 -0
- package/dist/canonical/trust-signal.d.ts.map +1 -0
- package/dist/canonical/trust-signal.js +355 -0
- package/dist/canonical/trust-signal.js.map +1 -0
- package/dist/canonical/validation.d.ts +231 -0
- package/dist/canonical/validation.d.ts.map +1 -0
- package/dist/canonical/validation.js +558 -0
- package/dist/canonical/validation.js.map +1 -0
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +7 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/primitives.d.ts +56 -0
- package/dist/common/primitives.d.ts.map +1 -0
- package/dist/common/primitives.js +70 -0
- package/dist/common/primitives.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/v2/canary-probe.d.ts +201 -0
- package/dist/v2/canary-probe.d.ts.map +1 -0
- package/dist/v2/canary-probe.js +99 -0
- package/dist/v2/canary-probe.js.map +1 -0
- package/dist/v2/component.d.ts +132 -0
- package/dist/v2/component.d.ts.map +1 -0
- package/dist/v2/component.js +5 -0
- package/dist/v2/component.js.map +1 -0
- package/dist/v2/decision.d.ts +310 -0
- package/dist/v2/decision.d.ts.map +1 -0
- package/dist/v2/decision.js +21 -0
- package/dist/v2/decision.js.map +1 -0
- package/dist/v2/enums.d.ts +185 -0
- package/dist/v2/enums.d.ts.map +1 -0
- package/dist/v2/enums.js +203 -0
- package/dist/v2/enums.js.map +1 -0
- package/dist/v2/evidence.d.ts +368 -0
- package/dist/v2/evidence.d.ts.map +1 -0
- package/dist/v2/evidence.js +152 -0
- package/dist/v2/evidence.js.map +1 -0
- package/dist/v2/execution.d.ts +190 -0
- package/dist/v2/execution.d.ts.map +1 -0
- package/dist/v2/execution.js +5 -0
- package/dist/v2/execution.js.map +1 -0
- package/dist/v2/index.d.ts +19 -0
- package/dist/v2/index.d.ts.map +1 -0
- package/dist/v2/index.js +32 -0
- package/dist/v2/index.js.map +1 -0
- package/dist/v2/intent.d.ts +89 -0
- package/dist/v2/intent.d.ts.map +1 -0
- package/dist/v2/intent.js +5 -0
- package/dist/v2/intent.js.map +1 -0
- package/dist/v2/policy-bundle.d.ts +166 -0
- package/dist/v2/policy-bundle.d.ts.map +1 -0
- package/dist/v2/policy-bundle.js +20 -0
- package/dist/v2/policy-bundle.js.map +1 -0
- package/dist/v2/pre-action-gate.d.ts +185 -0
- package/dist/v2/pre-action-gate.d.ts.map +1 -0
- package/dist/v2/pre-action-gate.js +64 -0
- package/dist/v2/pre-action-gate.js.map +1 -0
- package/dist/v2/proof-event.d.ts +201 -0
- package/dist/v2/proof-event.d.ts.map +1 -0
- package/dist/v2/proof-event.js +5 -0
- package/dist/v2/proof-event.js.map +1 -0
- package/dist/v2/retention.d.ts +329 -0
- package/dist/v2/retention.d.ts.map +1 -0
- package/dist/v2/retention.js +162 -0
- package/dist/v2/retention.js.map +1 -0
- package/dist/v2/trust-delta.d.ts +119 -0
- package/dist/v2/trust-delta.d.ts.map +1 -0
- package/dist/v2/trust-delta.js +28 -0
- package/dist/v2/trust-delta.js.map +1 -0
- package/dist/v2/trust-profile.d.ts +337 -0
- package/dist/v2/trust-profile.d.ts.map +1 -0
- package/dist/v2/trust-profile.js +96 -0
- package/dist/v2/trust-profile.js.map +1 -0
- package/dist/validators/decision.d.ts +430 -0
- package/dist/validators/decision.d.ts.map +1 -0
- package/dist/validators/decision.js +61 -0
- package/dist/validators/decision.js.map +1 -0
- package/dist/validators/enums.d.ts +24 -0
- package/dist/validators/enums.d.ts.map +1 -0
- package/dist/validators/enums.js +24 -0
- package/dist/validators/enums.js.map +1 -0
- package/dist/validators/index.d.ts +30 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +42 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/intent.d.ts +229 -0
- package/dist/validators/intent.d.ts.map +1 -0
- package/dist/validators/intent.js +47 -0
- package/dist/validators/intent.js.map +1 -0
- package/dist/validators/proof-event.d.ts +981 -0
- package/dist/validators/proof-event.d.ts.map +1 -0
- package/dist/validators/proof-event.js +134 -0
- package/dist/validators/proof-event.js.map +1 -0
- package/dist/validators/trust-profile.d.ts +350 -0
- package/dist/validators/trust-profile.d.ts.map +1 -0
- package/dist/validators/trust-profile.js +65 -0
- package/dist/validators/trust-profile.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview ACI Skill Codes and Bitmask Operations
|
|
3
|
+
*
|
|
4
|
+
* Defines the skill codes used for fine-grained capability matching,
|
|
5
|
+
* with bitmask encoding for efficient queries and skill matching.
|
|
6
|
+
*
|
|
7
|
+
* Skills represent specific capabilities within domains. While domains
|
|
8
|
+
* define broad capability areas (A-I, S), skills provide granular
|
|
9
|
+
* specialization within those areas.
|
|
10
|
+
*
|
|
11
|
+
* @module @vorion/contracts/aci/skills
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
/**
|
|
15
|
+
* Array of all valid skill codes.
|
|
16
|
+
*/
|
|
17
|
+
export const SKILL_CODES = [
|
|
18
|
+
'TG', 'CW', 'CR', 'TD', 'TR', 'SM', // Content & Generation
|
|
19
|
+
'DA', 'RS', 'QA', // Analysis & Research
|
|
20
|
+
'CA', 'DV', 'RV', 'WS', 'FO', 'AI', // Development & Technical
|
|
21
|
+
'PL', 'CM', 'CS', 'AU', // Business & Operations
|
|
22
|
+
'SC', 'GV', // Security & Governance
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Zod schema for SkillCode validation.
|
|
26
|
+
*/
|
|
27
|
+
export const skillCodeSchema = z.enum([
|
|
28
|
+
'TG', 'CW', 'CR', 'TD', 'TR', 'SM',
|
|
29
|
+
'DA', 'RS', 'QA',
|
|
30
|
+
'CA', 'DV', 'RV', 'WS', 'FO', 'AI',
|
|
31
|
+
'PL', 'CM', 'CS', 'AU',
|
|
32
|
+
'SC', 'GV',
|
|
33
|
+
], {
|
|
34
|
+
errorMap: () => ({ message: `Invalid skill code. Must be one of: ${SKILL_CODES.join(', ')}` }),
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Skill definitions with their bitmask values.
|
|
38
|
+
*
|
|
39
|
+
* Each skill has a unique bitmask value (power of 2) for efficient
|
|
40
|
+
* storage and querying of skill combinations.
|
|
41
|
+
*
|
|
42
|
+
* Using 32-bit integers, we can support up to 32 skills (21 currently defined).
|
|
43
|
+
*/
|
|
44
|
+
export const SKILL_DEFINITIONS = {
|
|
45
|
+
// Content & Generation (bits 0-5)
|
|
46
|
+
TG: { code: 'TG', name: 'Text Generation', bit: 0x00001, description: 'General text creation and composition', category: 'content', legacyId: 'text_generation' },
|
|
47
|
+
CW: { code: 'CW', name: 'Content Writing', bit: 0x00002, description: 'Blog posts, articles, marketing copy', category: 'content', legacyId: 'content_writing' },
|
|
48
|
+
CR: { code: 'CR', name: 'Creative Writing', bit: 0x00004, description: 'Fiction, storytelling, creative content', category: 'content', legacyId: 'creative_writing' },
|
|
49
|
+
TD: { code: 'TD', name: 'Technical Documentation', bit: 0x00008, description: 'Docs, guides, specifications', category: 'content', legacyId: 'technical_documentation' },
|
|
50
|
+
TR: { code: 'TR', name: 'Translation', bit: 0x00010, description: 'Language translation services', category: 'content', legacyId: 'translation' },
|
|
51
|
+
SM: { code: 'SM', name: 'Summarization', bit: 0x00020, description: 'Content condensation and extraction', category: 'content', legacyId: 'summarization' },
|
|
52
|
+
// Analysis & Research (bits 6-8)
|
|
53
|
+
DA: { code: 'DA', name: 'Data Analysis', bit: 0x00040, description: 'Statistical analysis, data processing', category: 'analysis', legacyId: 'data_analysis' },
|
|
54
|
+
RS: { code: 'RS', name: 'Research', bit: 0x00080, description: 'Information gathering and synthesis', category: 'analysis' },
|
|
55
|
+
QA: { code: 'QA', name: 'Question Answering', bit: 0x00100, description: 'Q&A, knowledge retrieval', category: 'analysis', legacyId: 'question_answering' },
|
|
56
|
+
// Development & Technical (bits 9-14)
|
|
57
|
+
CA: { code: 'CA', name: 'Code Assistance', bit: 0x00200, description: 'Programming help, debugging', category: 'development', legacyId: 'code_assistance' },
|
|
58
|
+
DV: { code: 'DV', name: 'Development', bit: 0x00400, description: 'Software development tasks', category: 'development' },
|
|
59
|
+
RV: { code: 'RV', name: 'Review', bit: 0x00800, description: 'Code review, content review', category: 'development' },
|
|
60
|
+
WS: { code: 'WS', name: 'Web Search', bit: 0x01000, description: 'Internet search and retrieval', category: 'development', legacyId: 'web_search' },
|
|
61
|
+
FO: { code: 'FO', name: 'File Operations', bit: 0x02000, description: 'File manipulation, I/O', category: 'development', legacyId: 'file_operations' },
|
|
62
|
+
AI: { code: 'AI', name: 'API Integration', bit: 0x04000, description: 'External API interactions', category: 'development', legacyId: 'api_integration' },
|
|
63
|
+
// Business & Operations (bits 15-18)
|
|
64
|
+
PL: { code: 'PL', name: 'Planning', bit: 0x08000, description: 'Task planning, scheduling', category: 'business' },
|
|
65
|
+
CM: { code: 'CM', name: 'Communication', bit: 0x10000, description: 'Messaging, notifications', category: 'business' },
|
|
66
|
+
CS: { code: 'CS', name: 'Customer Support', bit: 0x20000, description: 'Customer service interactions', category: 'business', legacyId: 'customer_support' },
|
|
67
|
+
AU: { code: 'AU', name: 'Automation', bit: 0x40000, description: 'Workflow automation', category: 'business' },
|
|
68
|
+
// Security & Governance (bits 19-20)
|
|
69
|
+
SC: { code: 'SC', name: 'Security', bit: 0x80000, description: 'Security-related operations', category: 'security' },
|
|
70
|
+
GV: { code: 'GV', name: 'Governance', bit: 0x100000, description: 'Policy and compliance', category: 'security' },
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Human-readable skill names indexed by code.
|
|
74
|
+
*/
|
|
75
|
+
export const SKILL_NAMES = Object.fromEntries(Object.entries(SKILL_DEFINITIONS).map(([code, def]) => [code, def.name]));
|
|
76
|
+
/**
|
|
77
|
+
* Bitmask value representing all skills combined.
|
|
78
|
+
*/
|
|
79
|
+
export const ALL_SKILLS_BITMASK = Object.values(SKILL_DEFINITIONS).reduce((mask, skill) => mask | skill.bit, 0);
|
|
80
|
+
/**
|
|
81
|
+
* Skills grouped by category.
|
|
82
|
+
*/
|
|
83
|
+
export const SKILLS_BY_CATEGORY = {
|
|
84
|
+
content: ['TG', 'CW', 'CR', 'TD', 'TR', 'SM'],
|
|
85
|
+
analysis: ['DA', 'RS', 'QA'],
|
|
86
|
+
development: ['CA', 'DV', 'RV', 'WS', 'FO', 'AI'],
|
|
87
|
+
business: ['PL', 'CM', 'CS', 'AU'],
|
|
88
|
+
security: ['SC', 'GV'],
|
|
89
|
+
};
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// Legacy ID Mapping
|
|
92
|
+
// ============================================================================
|
|
93
|
+
/**
|
|
94
|
+
* Map legacy string identifiers to skill codes.
|
|
95
|
+
*/
|
|
96
|
+
export const LEGACY_ID_TO_SKILL = {
|
|
97
|
+
text_generation: 'TG',
|
|
98
|
+
content_writing: 'CW',
|
|
99
|
+
creative_writing: 'CR',
|
|
100
|
+
technical_documentation: 'TD',
|
|
101
|
+
translation: 'TR',
|
|
102
|
+
summarization: 'SM',
|
|
103
|
+
data_analysis: 'DA',
|
|
104
|
+
question_answering: 'QA',
|
|
105
|
+
code_assistance: 'CA',
|
|
106
|
+
web_search: 'WS',
|
|
107
|
+
file_operations: 'FO',
|
|
108
|
+
api_integration: 'AI',
|
|
109
|
+
customer_support: 'CS',
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Converts a legacy skill ID to a skill code.
|
|
113
|
+
*
|
|
114
|
+
* @param legacyId - Legacy string identifier
|
|
115
|
+
* @returns Skill code or undefined if not found
|
|
116
|
+
*/
|
|
117
|
+
export function legacyIdToSkillCode(legacyId) {
|
|
118
|
+
return LEGACY_ID_TO_SKILL[legacyId];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Converts an array of legacy skill IDs to skill codes.
|
|
122
|
+
*
|
|
123
|
+
* @param legacyIds - Array of legacy string identifiers
|
|
124
|
+
* @returns Array of skill codes (unrecognized IDs are filtered out)
|
|
125
|
+
*/
|
|
126
|
+
export function legacyIdsToSkillCodes(legacyIds) {
|
|
127
|
+
return legacyIds
|
|
128
|
+
.map((id) => LEGACY_ID_TO_SKILL[id])
|
|
129
|
+
.filter((code) => code !== undefined);
|
|
130
|
+
}
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// Bitmask Encoding/Decoding
|
|
133
|
+
// ============================================================================
|
|
134
|
+
/**
|
|
135
|
+
* Encodes an array of skill codes into a bitmask.
|
|
136
|
+
*
|
|
137
|
+
* @param skills - Array of skill codes to encode
|
|
138
|
+
* @returns Bitmask integer representing the skills
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* encodeSkills(['TG', 'CA']); // 0x201 (513)
|
|
143
|
+
* encodeSkills(['DA', 'RS']); // 0x0C0 (192)
|
|
144
|
+
* encodeSkills([]); // 0
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export function encodeSkills(skills) {
|
|
148
|
+
return skills.reduce((mask, code) => {
|
|
149
|
+
const skill = SKILL_DEFINITIONS[code];
|
|
150
|
+
return mask | skill.bit;
|
|
151
|
+
}, 0);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Decodes a bitmask into an array of skill codes.
|
|
155
|
+
*
|
|
156
|
+
* @param bitmask - Bitmask integer to decode
|
|
157
|
+
* @returns Array of skill codes present in the bitmask
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* decodeSkills(0x201); // ['TG', 'CA']
|
|
162
|
+
* decodeSkills(0x0C0); // ['DA', 'RS']
|
|
163
|
+
* decodeSkills(0); // []
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export function decodeSkills(bitmask) {
|
|
167
|
+
return SKILL_CODES.filter((code) => (bitmask & SKILL_DEFINITIONS[code].bit) !== 0);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Parses a skill string (e.g., "TG,CA,DA") into an array of codes.
|
|
171
|
+
*
|
|
172
|
+
* @param skillString - Comma-separated skill codes
|
|
173
|
+
* @returns Array of valid skill codes
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* parseSkillString('TG,CA,DA'); // ['TG', 'CA', 'DA']
|
|
178
|
+
* parseSkillString('TGCADA'); // ['TG', 'CA', 'DA']
|
|
179
|
+
* parseSkillString(''); // []
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
export function parseSkillString(skillString) {
|
|
183
|
+
if (!skillString)
|
|
184
|
+
return [];
|
|
185
|
+
// Try comma-separated first
|
|
186
|
+
if (skillString.includes(',')) {
|
|
187
|
+
return skillString
|
|
188
|
+
.split(',')
|
|
189
|
+
.map((s) => s.trim().toUpperCase())
|
|
190
|
+
.filter((s) => isSkillCode(s));
|
|
191
|
+
}
|
|
192
|
+
// Try parsing as concatenated two-letter codes
|
|
193
|
+
const codes = [];
|
|
194
|
+
for (let i = 0; i < skillString.length; i += 2) {
|
|
195
|
+
const code = skillString.slice(i, i + 2).toUpperCase();
|
|
196
|
+
if (isSkillCode(code)) {
|
|
197
|
+
codes.push(code);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return codes;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Formats an array of skill codes into a sorted string.
|
|
204
|
+
*
|
|
205
|
+
* @param skills - Array of skill codes
|
|
206
|
+
* @returns Sorted, deduplicated comma-separated string
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* ```typescript
|
|
210
|
+
* formatSkillString(['DA', 'TG', 'CA']); // 'CA,DA,TG'
|
|
211
|
+
* formatSkillString(['TG', 'TG']); // 'TG'
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
export function formatSkillString(skills) {
|
|
215
|
+
const unique = [...new Set(skills)];
|
|
216
|
+
return unique.sort().join(',');
|
|
217
|
+
}
|
|
218
|
+
// ============================================================================
|
|
219
|
+
// Skill Matching Operations
|
|
220
|
+
// ============================================================================
|
|
221
|
+
/**
|
|
222
|
+
* Checks if a skill bitmask contains all required skills.
|
|
223
|
+
*
|
|
224
|
+
* @param agentSkills - Agent's skill bitmask
|
|
225
|
+
* @param requiredSkills - Required skills bitmask
|
|
226
|
+
* @returns True if agent has all required skills
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* const agentMask = encodeSkills(['TG', 'CA', 'DA']);
|
|
231
|
+
* const required = encodeSkills(['TG', 'CA']);
|
|
232
|
+
* hasSkills(agentMask, required); // true
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
export function hasSkills(agentSkills, requiredSkills) {
|
|
236
|
+
return (agentSkills & requiredSkills) === requiredSkills;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Checks if an agent satisfies skill requirements.
|
|
240
|
+
*
|
|
241
|
+
* @param agentSkills - Agent's skill codes
|
|
242
|
+
* @param requiredSkills - Required skill codes
|
|
243
|
+
* @returns True if agent has all required skills
|
|
244
|
+
*/
|
|
245
|
+
export function satisfiesSkillRequirements(agentSkills, requiredSkills) {
|
|
246
|
+
const agentMask = encodeSkills(agentSkills);
|
|
247
|
+
const requiredMask = encodeSkills(requiredSkills);
|
|
248
|
+
return hasSkills(agentMask, requiredMask);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Returns the intersection of two skill sets.
|
|
252
|
+
*
|
|
253
|
+
* @param skills1 - First skill set
|
|
254
|
+
* @param skills2 - Second skill set
|
|
255
|
+
* @returns Skills present in both sets
|
|
256
|
+
*/
|
|
257
|
+
export function intersectSkills(skills1, skills2) {
|
|
258
|
+
const mask1 = encodeSkills(skills1);
|
|
259
|
+
const mask2 = encodeSkills(skills2);
|
|
260
|
+
return decodeSkills(mask1 & mask2);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Returns the union of two skill sets.
|
|
264
|
+
*
|
|
265
|
+
* @param skills1 - First skill set
|
|
266
|
+
* @param skills2 - Second skill set
|
|
267
|
+
* @returns All skills from both sets
|
|
268
|
+
*/
|
|
269
|
+
export function unionSkills(skills1, skills2) {
|
|
270
|
+
const mask1 = encodeSkills(skills1);
|
|
271
|
+
const mask2 = encodeSkills(skills2);
|
|
272
|
+
return decodeSkills(mask1 | mask2);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Returns skills in the first set but not in the second.
|
|
276
|
+
*
|
|
277
|
+
* @param skills1 - First skill set
|
|
278
|
+
* @param skills2 - Second skill set
|
|
279
|
+
* @returns Skills unique to the first set
|
|
280
|
+
*/
|
|
281
|
+
export function differenceSkills(skills1, skills2) {
|
|
282
|
+
const mask1 = encodeSkills(skills1);
|
|
283
|
+
const mask2 = encodeSkills(skills2);
|
|
284
|
+
return decodeSkills(mask1 & ~mask2);
|
|
285
|
+
}
|
|
286
|
+
// ============================================================================
|
|
287
|
+
// Skill Metadata Functions
|
|
288
|
+
// ============================================================================
|
|
289
|
+
/**
|
|
290
|
+
* Gets the complete definition for a skill code.
|
|
291
|
+
*
|
|
292
|
+
* @param code - Skill code
|
|
293
|
+
* @returns Skill definition or undefined if not found
|
|
294
|
+
*/
|
|
295
|
+
export function getSkillDefinition(code) {
|
|
296
|
+
return SKILL_DEFINITIONS[code];
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Gets the human-readable name for a skill code.
|
|
300
|
+
*
|
|
301
|
+
* @param code - Skill code
|
|
302
|
+
* @returns Skill name
|
|
303
|
+
*/
|
|
304
|
+
export function getSkillName(code) {
|
|
305
|
+
return SKILL_DEFINITIONS[code].name;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Gets the bitmask value for a skill code.
|
|
309
|
+
*
|
|
310
|
+
* @param code - Skill code
|
|
311
|
+
* @returns Bitmask value
|
|
312
|
+
*/
|
|
313
|
+
export function getSkillBit(code) {
|
|
314
|
+
return SKILL_DEFINITIONS[code].bit;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Gets the category for a skill code.
|
|
318
|
+
*
|
|
319
|
+
* @param code - Skill code
|
|
320
|
+
* @returns Skill category
|
|
321
|
+
*/
|
|
322
|
+
export function getSkillCategory(code) {
|
|
323
|
+
return SKILL_DEFINITIONS[code].category;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Gets all skills in a category.
|
|
327
|
+
*
|
|
328
|
+
* @param category - Skill category
|
|
329
|
+
* @returns Array of skill codes in that category
|
|
330
|
+
*/
|
|
331
|
+
export function getSkillsInCategory(category) {
|
|
332
|
+
return SKILLS_BY_CATEGORY[category];
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Counts the number of skills in a bitmask.
|
|
336
|
+
*
|
|
337
|
+
* @param bitmask - Skill bitmask
|
|
338
|
+
* @returns Number of skills
|
|
339
|
+
*/
|
|
340
|
+
export function countSkills(bitmask) {
|
|
341
|
+
let count = 0;
|
|
342
|
+
let mask = bitmask;
|
|
343
|
+
while (mask) {
|
|
344
|
+
count += mask & 1;
|
|
345
|
+
mask >>>= 1;
|
|
346
|
+
}
|
|
347
|
+
return count;
|
|
348
|
+
}
|
|
349
|
+
// ============================================================================
|
|
350
|
+
// Type Guards and Validation
|
|
351
|
+
// ============================================================================
|
|
352
|
+
/**
|
|
353
|
+
* Type guard to check if a value is a valid skill code.
|
|
354
|
+
*
|
|
355
|
+
* @param value - Value to check
|
|
356
|
+
* @returns True if value is a valid SkillCode
|
|
357
|
+
*/
|
|
358
|
+
export function isSkillCode(value) {
|
|
359
|
+
return typeof value === 'string' && SKILL_CODES.includes(value);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Type guard to check if an array contains only valid skill codes.
|
|
363
|
+
*
|
|
364
|
+
* @param values - Array to check
|
|
365
|
+
* @returns True if all values are valid SkillCodes
|
|
366
|
+
*/
|
|
367
|
+
export function isSkillCodeArray(values) {
|
|
368
|
+
return Array.isArray(values) && values.every(isSkillCode);
|
|
369
|
+
}
|
|
370
|
+
// ============================================================================
|
|
371
|
+
// Zod Schemas
|
|
372
|
+
// ============================================================================
|
|
373
|
+
/**
|
|
374
|
+
* Zod schema for SkillDefinition validation.
|
|
375
|
+
*/
|
|
376
|
+
export const skillDefinitionSchema = z.object({
|
|
377
|
+
code: skillCodeSchema,
|
|
378
|
+
name: z.string().min(1),
|
|
379
|
+
bit: z.number().int().positive(),
|
|
380
|
+
description: z.string().min(1),
|
|
381
|
+
category: z.enum(['content', 'analysis', 'development', 'business', 'security']),
|
|
382
|
+
legacyId: z.string().optional(),
|
|
383
|
+
});
|
|
384
|
+
/**
|
|
385
|
+
* Zod schema for skill code array validation.
|
|
386
|
+
*/
|
|
387
|
+
export const skillCodeArraySchema = z.array(skillCodeSchema);
|
|
388
|
+
/**
|
|
389
|
+
* Zod schema for skill bitmask validation (21 bits max).
|
|
390
|
+
*/
|
|
391
|
+
export const skillBitmaskSchema = z.number().int().min(0).max(ALL_SKILLS_BITMASK);
|
|
392
|
+
/**
|
|
393
|
+
* Zod schema for skill string validation (comma-separated codes).
|
|
394
|
+
*/
|
|
395
|
+
export const skillStringSchema = z
|
|
396
|
+
.string()
|
|
397
|
+
.refine((val) => {
|
|
398
|
+
if (!val)
|
|
399
|
+
return true;
|
|
400
|
+
const codes = parseSkillString(val);
|
|
401
|
+
return codes.length > 0;
|
|
402
|
+
}, { message: 'Invalid skill string format' })
|
|
403
|
+
.transform((val) => parseSkillString(val));
|
|
404
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/aci/skills.ts"],"names":[],"mappings":"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"}
|