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