@vorionsys/agentanchor-sdk 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/car/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,372 @@
1
+ /**
2
+ * @fileoverview CAR (Categorical Agentic Registry) parsing and validation
3
+ * @module @vorionsys/agentanchor-sdk/car
4
+ */
5
+ import { z } from 'zod';
6
+ import { CapabilityLevel } from '../types.js';
7
+ // ============================================================================
8
+ // Constants
9
+ // ============================================================================
10
+ /**
11
+ * Valid domain codes
12
+ */
13
+ export const DOMAIN_CODES = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'S'];
14
+ /**
15
+ * Domain code descriptions
16
+ */
17
+ export const DOMAIN_NAMES = {
18
+ A: 'Administration',
19
+ B: 'Business',
20
+ C: 'Communications',
21
+ D: 'Data',
22
+ E: 'External',
23
+ F: 'Finance',
24
+ G: 'Governance',
25
+ H: 'Hospitality',
26
+ I: 'Infrastructure',
27
+ S: 'Security',
28
+ };
29
+ /**
30
+ * Domain bitmask values
31
+ */
32
+ export const DOMAIN_BITS = {
33
+ A: 0x001,
34
+ B: 0x002,
35
+ C: 0x004,
36
+ D: 0x008,
37
+ E: 0x010,
38
+ F: 0x020,
39
+ G: 0x040,
40
+ H: 0x080,
41
+ I: 0x100,
42
+ S: 0x200,
43
+ };
44
+ /**
45
+ * CAR regex pattern
46
+ *
47
+ * Format: {registry}.{org}.{class}:{domains}-L{level}@{version}[#extensions]
48
+ *
49
+ * Examples:
50
+ * - a3i.vorion.banquet-advisor:FHC-L3@1.2.0
51
+ * - a3i.acme.support-agent:CD-L2@1.0.0#policy=strict
52
+ */
53
+ export const CAR_REGEX = /^([a-z0-9]+)\.([a-z0-9-]+)\.([a-z0-9-]+):([A-Z]+)-L([0-7])@(\d+\.\d+\.\d+)(?:#(.+))?$/;
54
+ /**
55
+ * Semver regex pattern
56
+ */
57
+ export const SEMVER_REGEX = /^\d+\.\d+\.\d+$/;
58
+ // ============================================================================
59
+ // Parsing Functions
60
+ // ============================================================================
61
+ /**
62
+ * Parse a CAR ID string into components
63
+ *
64
+ * @param carId - CAR ID string to parse
65
+ * @returns Parsed CAR ID components
66
+ * @throws Error if CAR ID is invalid
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const parsed = parseCAR('a3i.vorion.banquet-advisor:FHC-L3@1.2.0');
71
+ * console.log(parsed.domains); // ['F', 'H', 'C']
72
+ * console.log(parsed.level); // 3
73
+ * ```
74
+ */
75
+ export function parseCAR(carId) {
76
+ const result = tryParseCAR(carId);
77
+ if (!result) {
78
+ throw new Error(`Invalid CAR ID format: ${carId}`);
79
+ }
80
+ return result;
81
+ }
82
+ /**
83
+ * Try to parse a CAR ID string, returning undefined if invalid
84
+ *
85
+ * @param carId - CAR ID string to parse
86
+ * @returns Parsed CAR ID or undefined
87
+ */
88
+ export function tryParseCAR(carId) {
89
+ if (typeof carId !== 'string' || !carId) {
90
+ return undefined;
91
+ }
92
+ const match = CAR_REGEX.exec(carId);
93
+ if (!match) {
94
+ return undefined;
95
+ }
96
+ const [, registry, organization, agentClass, domainsStr, levelStr, version, extensions] = match;
97
+ // Parse domains
98
+ const domains = parseDomainString(domainsStr);
99
+ if (!domains) {
100
+ return undefined;
101
+ }
102
+ // Parse level
103
+ const level = parseInt(levelStr, 10);
104
+ if (level < 0 || level > 7) {
105
+ return undefined;
106
+ }
107
+ // Calculate domain bitmask
108
+ const domainsBitmask = encodeDomains(domains);
109
+ // Parse extensions if present
110
+ let parsedExtensions;
111
+ if (extensions) {
112
+ parsedExtensions = {};
113
+ for (const pair of extensions.split(',')) {
114
+ const [key, value] = pair.split('=');
115
+ if (key && value !== undefined) {
116
+ parsedExtensions[key] = value;
117
+ }
118
+ }
119
+ }
120
+ return {
121
+ registry,
122
+ organization,
123
+ agentClass,
124
+ domains,
125
+ domainsBitmask,
126
+ level,
127
+ version,
128
+ extensions,
129
+ parsedExtensions,
130
+ raw: carId,
131
+ };
132
+ }
133
+ /**
134
+ * Parse a domain string into array of domain codes
135
+ *
136
+ * @param domainString - Domain string (e.g., 'FHC')
137
+ * @returns Array of domain codes or undefined if invalid
138
+ */
139
+ export function parseDomainString(domainString) {
140
+ if (!domainString || typeof domainString !== 'string') {
141
+ return undefined;
142
+ }
143
+ const domains = [];
144
+ for (const char of domainString) {
145
+ if (!isDomainCode(char)) {
146
+ return undefined;
147
+ }
148
+ domains.push(char);
149
+ }
150
+ return domains;
151
+ }
152
+ // ============================================================================
153
+ // Validation Functions
154
+ // ============================================================================
155
+ /**
156
+ * Validate a CAR ID string
157
+ *
158
+ * @param carId - CAR ID string to validate
159
+ * @returns Validation result with errors and warnings
160
+ */
161
+ export function validateCAR(carId) {
162
+ const errors = [];
163
+ const warnings = [];
164
+ // Check type
165
+ if (typeof carId !== 'string') {
166
+ errors.push({
167
+ code: 'INVALID_TYPE',
168
+ message: 'CAR ID must be a string',
169
+ });
170
+ return { valid: false, errors, warnings };
171
+ }
172
+ // Check empty
173
+ if (!carId.trim()) {
174
+ errors.push({
175
+ code: 'EMPTY_CAR',
176
+ message: 'CAR ID cannot be empty',
177
+ });
178
+ return { valid: false, errors, warnings };
179
+ }
180
+ // Check format
181
+ if (!CAR_REGEX.test(carId)) {
182
+ errors.push({
183
+ code: 'INVALID_FORMAT',
184
+ message: 'CAR ID does not match expected format: {registry}.{org}.{class}:{domains}-L{level}@{version}',
185
+ });
186
+ return { valid: false, errors, warnings };
187
+ }
188
+ // Try to parse
189
+ const parsed = tryParseCAR(carId);
190
+ if (!parsed) {
191
+ errors.push({
192
+ code: 'PARSE_ERROR',
193
+ message: 'Failed to parse CAR ID components',
194
+ });
195
+ return { valid: false, errors, warnings };
196
+ }
197
+ // Validate registry
198
+ const knownRegistries = ['a3i', 'eu-ai', 'self'];
199
+ if (!knownRegistries.includes(parsed.registry)) {
200
+ warnings.push({
201
+ code: 'UNKNOWN_REGISTRY',
202
+ message: `Registry '${parsed.registry}' is not a known registry`,
203
+ });
204
+ }
205
+ // Validate organization format
206
+ if (parsed.organization.startsWith('-') || parsed.organization.endsWith('-')) {
207
+ errors.push({
208
+ code: 'INVALID_ORGANIZATION',
209
+ message: 'Organization cannot start or end with hyphen',
210
+ });
211
+ }
212
+ // Validate version
213
+ if (!SEMVER_REGEX.test(parsed.version)) {
214
+ errors.push({
215
+ code: 'INVALID_VERSION',
216
+ message: 'Version must be valid semver (MAJOR.MINOR.PATCH)',
217
+ });
218
+ }
219
+ // Check for duplicate domains
220
+ const uniqueDomains = new Set(parsed.domains);
221
+ if (uniqueDomains.size !== parsed.domains.length) {
222
+ warnings.push({
223
+ code: 'DUPLICATE_DOMAINS',
224
+ message: 'Domain string contains duplicate domain codes',
225
+ });
226
+ }
227
+ return {
228
+ valid: errors.length === 0,
229
+ errors,
230
+ warnings,
231
+ parsed: errors.length === 0 ? parsed : undefined,
232
+ };
233
+ }
234
+ /**
235
+ * Check if a CAR ID string is valid
236
+ *
237
+ * @param carId - CAR ID string to check
238
+ * @returns Whether the CAR ID is valid
239
+ */
240
+ export function isValidCAR(carId) {
241
+ return validateCAR(carId).valid;
242
+ }
243
+ // ============================================================================
244
+ // Generation Functions
245
+ // ============================================================================
246
+ /**
247
+ * Generate a CAR ID string from components
248
+ *
249
+ * @param options - CAR ID components
250
+ * @returns Generated CAR ID string
251
+ *
252
+ * @example
253
+ * ```typescript
254
+ * const carId = generateCAR({
255
+ * registry: 'a3i',
256
+ * organization: 'vorion',
257
+ * agentClass: 'banquet-advisor',
258
+ * domains: ['F', 'H', 'C'],
259
+ * level: CapabilityLevel.L3_EXECUTE,
260
+ * version: '1.2.0',
261
+ * });
262
+ * // Result: 'a3i.vorion.banquet-advisor:FHC-L3@1.2.0'
263
+ * ```
264
+ */
265
+ export function generateCAR(options) {
266
+ const { registry, organization, agentClass, domains, level, version, extensions, } = options;
267
+ // Sort and dedupe domains for consistency
268
+ const sortedDomains = [...new Set(domains)].sort();
269
+ const domainString = sortedDomains.join('');
270
+ let carId = `${registry}.${organization}.${agentClass}:${domainString}-L${level}@${version}`;
271
+ // Add extensions if present
272
+ if (extensions && Object.keys(extensions).length > 0) {
273
+ const extString = Object.entries(extensions)
274
+ .map(([k, v]) => `${k}=${v}`)
275
+ .join(',');
276
+ carId += `#${extString}`;
277
+ }
278
+ return carId;
279
+ }
280
+ // ============================================================================
281
+ // Domain Utilities
282
+ // ============================================================================
283
+ /**
284
+ * Check if a string is a valid domain code
285
+ */
286
+ export function isDomainCode(code) {
287
+ return DOMAIN_CODES.includes(code);
288
+ }
289
+ /**
290
+ * Encode domain codes to bitmask
291
+ *
292
+ * @param domains - Array of domain codes
293
+ * @returns Bitmask representation
294
+ */
295
+ export function encodeDomains(domains) {
296
+ return domains.reduce((mask, code) => mask | DOMAIN_BITS[code], 0);
297
+ }
298
+ /**
299
+ * Decode bitmask to domain codes
300
+ *
301
+ * @param bitmask - Domain bitmask
302
+ * @returns Array of domain codes
303
+ */
304
+ export function decodeDomains(bitmask) {
305
+ return DOMAIN_CODES.filter(code => (bitmask & DOMAIN_BITS[code]) !== 0);
306
+ }
307
+ /**
308
+ * Check if domains satisfy required domains
309
+ *
310
+ * @param agentDomains - Agent's domains
311
+ * @param requiredDomains - Required domains
312
+ * @returns Whether agent has all required domains
313
+ */
314
+ export function satisfiesDomainRequirements(agentDomains, requiredDomains) {
315
+ const agentMask = encodeDomains(agentDomains);
316
+ const requiredMask = encodeDomains(requiredDomains);
317
+ return (agentMask & requiredMask) === requiredMask;
318
+ }
319
+ /**
320
+ * Get domain name from code
321
+ */
322
+ export function getDomainName(code) {
323
+ return DOMAIN_NAMES[code];
324
+ }
325
+ // ============================================================================
326
+ // Level Utilities
327
+ // ============================================================================
328
+ /**
329
+ * Level names
330
+ */
331
+ export const LEVEL_NAMES = {
332
+ [CapabilityLevel.L0_OBSERVE]: 'Observe',
333
+ [CapabilityLevel.L1_ADVISE]: 'Advise',
334
+ [CapabilityLevel.L2_DRAFT]: 'Draft',
335
+ [CapabilityLevel.L3_EXECUTE]: 'Execute',
336
+ [CapabilityLevel.L4_STANDARD]: 'Standard',
337
+ [CapabilityLevel.L5_TRUSTED]: 'Trusted',
338
+ [CapabilityLevel.L6_CERTIFIED]: 'Certified',
339
+ [CapabilityLevel.L7_AUTONOMOUS]: 'Autonomous',
340
+ };
341
+ /**
342
+ * Check if agent level meets required level
343
+ *
344
+ * @param agentLevel - Agent's capability level
345
+ * @param requiredLevel - Required level
346
+ * @returns Whether agent meets requirement
347
+ */
348
+ export function meetsLevelRequirement(agentLevel, requiredLevel) {
349
+ return agentLevel >= requiredLevel;
350
+ }
351
+ /**
352
+ * Get level name from enum value
353
+ */
354
+ export function getLevelName(level) {
355
+ return LEVEL_NAMES[level] ?? 'Unknown';
356
+ }
357
+ // ============================================================================
358
+ // Zod Schemas
359
+ // ============================================================================
360
+ export const domainCodeSchema = z.enum(DOMAIN_CODES);
361
+ export const capabilityLevelSchema = z.nativeEnum(CapabilityLevel);
362
+ export const carIdStringSchema = z.string().regex(CAR_REGEX, 'Invalid CAR ID format');
363
+ export const generateCAROptionsSchema = z.object({
364
+ registry: z.string().min(1),
365
+ organization: z.string().min(2).max(63).regex(/^[a-z0-9-]+$/),
366
+ agentClass: z.string().min(2).max(63).regex(/^[a-z0-9-]+$/),
367
+ domains: z.array(domainCodeSchema).min(1),
368
+ level: capabilityLevelSchema,
369
+ version: z.string().regex(SEMVER_REGEX),
370
+ extensions: z.record(z.string()).optional(),
371
+ });
372
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/car/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * @fileoverview Agent Anchor SDK Client
3
+ * @module @vorionsys/agentanchor-sdk
4
+ */
5
+ import { type AgentAnchorConfig, type RegisterAgentOptions, type Agent, type TrustScore, type SubmitAttestationOptions, type Attestation, type StateTransitionRequest, type StateTransitionResult, type AgentQueryFilter, type PaginatedResult, type A2AInvokeOptions, type A2AInvokeResult, type A2ADiscoverOptions, type A2AEndpoint, type A2AChainInfo, type A2APingResult } from './types.js';
6
+ import { type CARValidationResult } from './car/index.js';
7
+ /**
8
+ * Agent Anchor SDK Client
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { AgentAnchor } from '@vorionsys/agentanchor-sdk';
13
+ *
14
+ * const anchor = new AgentAnchor({ apiKey: 'your-api-key' });
15
+ *
16
+ * // Register an agent
17
+ * const agent = await anchor.registerAgent({
18
+ * organization: 'acme',
19
+ * agentClass: 'invoice-bot',
20
+ * domains: ['A', 'B', 'F'],
21
+ * level: 3,
22
+ * version: '1.0.0',
23
+ * });
24
+ *
25
+ * // Get trust score
26
+ * const score = await anchor.getTrustScore(agent.car);
27
+ * console.log(`Trust: ${score.score} (${score.tier})`);
28
+ * ```
29
+ */
30
+ export declare class AgentAnchor {
31
+ private readonly config;
32
+ constructor(config: AgentAnchorConfig);
33
+ /**
34
+ * Register a new agent with Agent Anchor
35
+ *
36
+ * @param options - Registration options
37
+ * @returns The registered agent with assigned CAR ID
38
+ */
39
+ registerAgent(options: RegisterAgentOptions): Promise<Agent>;
40
+ /**
41
+ * Get agent details by CAR ID
42
+ *
43
+ * @param car - CAR ID string
44
+ * @returns Agent details including current trust score
45
+ */
46
+ getAgent(car: string): Promise<Agent>;
47
+ /**
48
+ * Update agent metadata
49
+ *
50
+ * @param car - CAR ID string
51
+ * @param updates - Fields to update
52
+ * @returns Updated agent
53
+ */
54
+ updateAgent(car: string, updates: Partial<Pick<Agent, 'metadata' | 'description'>>): Promise<Agent>;
55
+ /**
56
+ * Deregister an agent
57
+ *
58
+ * @param car - CAR ID string
59
+ * @param reason - Reason for deregistration
60
+ */
61
+ deregisterAgent(car: string, reason: string): Promise<void>;
62
+ /**
63
+ * Query agents with filters
64
+ *
65
+ * @param filter - Query filters
66
+ * @returns Paginated list of agents
67
+ */
68
+ queryAgents(filter?: AgentQueryFilter): Promise<PaginatedResult<Agent>>;
69
+ /**
70
+ * Get current trust score for an agent
71
+ *
72
+ * @param car - CAR ID string
73
+ * @param forceRefresh - Bypass cache and recalculate
74
+ * @returns Trust score with factor breakdown
75
+ */
76
+ getTrustScore(car: string, forceRefresh?: boolean): Promise<TrustScore>;
77
+ /**
78
+ * Submit an attestation for an agent
79
+ *
80
+ * @param options - Attestation details
81
+ * @returns The created attestation record
82
+ */
83
+ submitAttestation(options: SubmitAttestationOptions): Promise<Attestation>;
84
+ /**
85
+ * Get attestations for an agent
86
+ *
87
+ * @param car - CAR ID string
88
+ * @param limit - Maximum number to return (default 50)
89
+ * @returns List of attestations
90
+ */
91
+ getAttestations(car: string, limit?: number): Promise<Attestation[]>;
92
+ /**
93
+ * Trigger a lifecycle state transition
94
+ *
95
+ * @param request - Transition request
96
+ * @returns Transition result
97
+ */
98
+ transitionState(request: StateTransitionRequest): Promise<StateTransitionResult>;
99
+ /**
100
+ * Validate a CAR ID string
101
+ *
102
+ * @param car - CAR ID string to validate
103
+ * @returns Validation result with parsed components
104
+ */
105
+ validateCAR(car: string): CARValidationResult;
106
+ /**
107
+ * Parse a CAR ID string (throws on invalid)
108
+ *
109
+ * @param car - CAR ID string to parse
110
+ * @returns Parsed CAR ID components
111
+ */
112
+ parseCAR(car: string): import("./car/index.js").ParsedCAR;
113
+ /**
114
+ * Check if a CAR ID is registered with Agent Anchor
115
+ *
116
+ * @param car - CAR ID string to check
117
+ * @returns Whether the CAR ID is registered
118
+ */
119
+ isRegistered(car: string): Promise<boolean>;
120
+ /**
121
+ * Invoke an action on another agent
122
+ *
123
+ * @param callerCarId - Your agent's CAR ID (the caller)
124
+ * @param options - Invoke options
125
+ * @returns Invoke result with response data and metrics
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const result = await anchor.a2aInvoke('a3i.acme.invoice-bot:ABF-L3@1.0.0', {
130
+ * targetCarId: 'a3i.acme.payment-processor:AF-L4@2.0.0',
131
+ * action: 'processPayment',
132
+ * params: { invoiceId: '12345', amount: 100 },
133
+ * });
134
+ *
135
+ * if (result.success) {
136
+ * console.log('Payment processed:', result.result);
137
+ * }
138
+ * ```
139
+ */
140
+ a2aInvoke(callerCarId: string, options: A2AInvokeOptions): Promise<A2AInvokeResult>;
141
+ /**
142
+ * Discover available agents for A2A communication
143
+ *
144
+ * @param options - Discovery filters
145
+ * @returns List of available endpoints
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * // Find agents that can process payments
150
+ * const endpoints = await anchor.a2aDiscover({
151
+ * capabilities: ['payments'],
152
+ * minTier: 4,
153
+ * });
154
+ * ```
155
+ */
156
+ a2aDiscover(options?: A2ADiscoverOptions): Promise<A2AEndpoint[]>;
157
+ /**
158
+ * Ping another agent to check availability
159
+ *
160
+ * @param targetCarId - Target agent CAR ID
161
+ * @returns Ping result with availability status
162
+ */
163
+ a2aPing(targetCarId: string): Promise<A2APingResult>;
164
+ /**
165
+ * Get chain-of-trust information for an A2A request
166
+ *
167
+ * @param requestId - A2A request ID
168
+ * @returns Chain information and validation
169
+ */
170
+ a2aGetChain(requestId: string): Promise<A2AChainInfo>;
171
+ /**
172
+ * Register this agent as an A2A endpoint
173
+ *
174
+ * @param endpoint - Endpoint configuration
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * await anchor.a2aRegisterEndpoint({
179
+ * car: 'a3i.acme.my-agent:ABF-L3@1.0.0',
180
+ * url: 'https://my-agent.example.com/a2a',
181
+ * capabilities: ['data-processing'],
182
+ * actions: [{
183
+ * name: 'processData',
184
+ * description: 'Process incoming data',
185
+ * minTier: 3,
186
+ * streaming: false,
187
+ * }],
188
+ * });
189
+ * ```
190
+ */
191
+ a2aRegisterEndpoint(endpoint: {
192
+ car: string;
193
+ url: string;
194
+ capabilities?: string[];
195
+ actions?: Array<{
196
+ name: string;
197
+ description: string;
198
+ minTier?: number;
199
+ streaming?: boolean;
200
+ }>;
201
+ trustRequirements?: {
202
+ minTier?: number;
203
+ requiredCapabilities?: string[];
204
+ };
205
+ }): Promise<void>;
206
+ /**
207
+ * Unregister this agent from A2A
208
+ *
209
+ * @param car - Agent CAR ID to unregister
210
+ */
211
+ a2aUnregisterEndpoint(car: string): Promise<void>;
212
+ /**
213
+ * Make an authenticated API request
214
+ */
215
+ private request;
216
+ /**
217
+ * Create SDK error from API response
218
+ */
219
+ private createErrorFromResponse;
220
+ /**
221
+ * Map HTTP status to SDK error code
222
+ */
223
+ private mapStatusToErrorCode;
224
+ /**
225
+ * Validate CAR ID or throw
226
+ */
227
+ private validateCAROrThrow;
228
+ /**
229
+ * Sleep for specified milliseconds
230
+ */
231
+ private sleep;
232
+ }
233
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}