@ucptools/validator 1.0.1 → 1.2.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/auth/config.d.ts +20 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +114 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +17 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +45 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +170 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/service.d.ts +80 -0
- package/dist/auth/service.d.ts.map +1 -0
- package/dist/auth/service.js +298 -0
- package/dist/auth/service.js.map +1 -0
- package/dist/cli/index.js +96 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mock-server.d.ts +20 -0
- package/dist/cli/mock-server.d.ts.map +1 -0
- package/dist/cli/mock-server.js +261 -0
- package/dist/cli/mock-server.js.map +1 -0
- package/dist/db/index.d.ts +8 -2
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +22 -5
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema.d.ts +3570 -128
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +377 -17
- package/dist/db/schema.js.map +1 -1
- package/dist/db/utils.d.ts +252 -0
- package/dist/db/utils.d.ts.map +1 -0
- package/dist/db/utils.js +295 -0
- package/dist/db/utils.js.map +1 -0
- package/dist/feed-analyzer/feed-analyzer.d.ts.map +1 -1
- package/dist/feed-analyzer/feed-analyzer.js +218 -4
- package/dist/feed-analyzer/feed-analyzer.js.map +1 -1
- package/dist/feed-analyzer/types.d.ts +82 -1
- package/dist/feed-analyzer/types.d.ts.map +1 -1
- package/dist/feed-analyzer/types.js +13 -0
- package/dist/feed-analyzer/types.js.map +1 -1
- package/dist/generator/profile-builder.d.ts.map +1 -1
- package/dist/generator/profile-builder.js +158 -115
- package/dist/generator/profile-builder.js.map +1 -1
- package/dist/lib/analytics.d.ts +349 -0
- package/dist/lib/analytics.d.ts.map +1 -0
- package/dist/lib/analytics.js +198 -0
- package/dist/lib/analytics.js.map +1 -0
- package/dist/security/security-scanner.d.ts.map +1 -1
- package/dist/security/security-scanner.js +130 -2
- package/dist/security/security-scanner.js.map +1 -1
- package/dist/security/types.d.ts +32 -0
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/types.js.map +1 -1
- package/dist/services/analytics.d.ts +114 -0
- package/dist/services/analytics.d.ts.map +1 -0
- package/dist/services/analytics.js +862 -0
- package/dist/services/analytics.js.map +1 -0
- package/dist/services/badge.d.ts +31 -0
- package/dist/services/badge.d.ts.map +1 -0
- package/dist/services/badge.js +152 -0
- package/dist/services/badge.js.map +1 -0
- package/dist/services/cron.d.ts +127 -0
- package/dist/services/cron.d.ts.map +1 -0
- package/dist/services/cron.js +693 -0
- package/dist/services/cron.js.map +1 -0
- package/dist/services/directory.d.ts +2 -0
- package/dist/services/directory.d.ts.map +1 -1
- package/dist/services/directory.js +45 -27
- package/dist/services/directory.js.map +1 -1
- package/dist/services/email.d.ts +127 -0
- package/dist/services/email.d.ts.map +1 -0
- package/dist/services/email.js +876 -0
- package/dist/services/email.js.map +1 -0
- package/dist/services/hosted-profiles.d.ts +77 -0
- package/dist/services/hosted-profiles.d.ts.map +1 -0
- package/dist/services/hosted-profiles.js +433 -0
- package/dist/services/hosted-profiles.js.map +1 -0
- package/dist/services/latency.d.ts +67 -0
- package/dist/services/latency.d.ts.map +1 -0
- package/dist/services/latency.js +274 -0
- package/dist/services/latency.js.map +1 -0
- package/dist/services/manifest-compliance.d.ts +64 -0
- package/dist/services/manifest-compliance.d.ts.map +1 -0
- package/dist/services/manifest-compliance.js +271 -0
- package/dist/services/manifest-compliance.js.map +1 -0
- package/dist/services/monitoring-diff.d.ts +31 -0
- package/dist/services/monitoring-diff.d.ts.map +1 -0
- package/dist/services/monitoring-diff.js +189 -0
- package/dist/services/monitoring-diff.js.map +1 -0
- package/dist/services/notifications.d.ts +46 -0
- package/dist/services/notifications.d.ts.map +1 -0
- package/dist/services/notifications.js +88 -0
- package/dist/services/notifications.js.map +1 -0
- package/dist/services/posthog.d.ts +43 -0
- package/dist/services/posthog.d.ts.map +1 -0
- package/dist/services/posthog.js +110 -0
- package/dist/services/posthog.js.map +1 -0
- package/dist/services/stripe.d.ts +93 -0
- package/dist/services/stripe.d.ts.map +1 -0
- package/dist/services/stripe.js +490 -0
- package/dist/services/stripe.js.map +1 -0
- package/dist/services/validation-history.d.ts +99 -0
- package/dist/services/validation-history.d.ts.map +1 -0
- package/dist/services/validation-history.js +344 -0
- package/dist/services/validation-history.js.map +1 -0
- package/dist/services/validation-logging.d.ts +103 -0
- package/dist/services/validation-logging.d.ts.map +1 -0
- package/dist/services/validation-logging.js +210 -0
- package/dist/services/validation-logging.js.map +1 -0
- package/dist/services/validation.d.ts +119 -0
- package/dist/services/validation.d.ts.map +1 -0
- package/dist/services/validation.js +1185 -0
- package/dist/services/validation.js.map +1 -0
- package/dist/simulator/agent-simulator.d.ts.map +1 -1
- package/dist/simulator/agent-simulator.js +229 -9
- package/dist/simulator/agent-simulator.js.map +1 -1
- package/dist/simulator/types.d.ts +26 -0
- package/dist/simulator/types.d.ts.map +1 -1
- package/dist/simulator/types.js.map +1 -1
- package/dist/types/acp-validation.d.ts +87 -0
- package/dist/types/acp-validation.d.ts.map +1 -0
- package/dist/types/acp-validation.js +40 -0
- package/dist/types/acp-validation.js.map +1 -0
- package/dist/types/analytics.d.ts +182 -0
- package/dist/types/analytics.d.ts.map +1 -0
- package/dist/types/analytics.js +7 -0
- package/dist/types/analytics.js.map +1 -0
- package/dist/types/generator.d.ts +4 -0
- package/dist/types/generator.d.ts.map +1 -1
- package/dist/types/ucp-profile.d.ts +32 -2
- package/dist/types/ucp-profile.d.ts.map +1 -1
- package/dist/types/ucp-profile.js +31 -1
- package/dist/types/ucp-profile.js.map +1 -1
- package/dist/types/validation.d.ts +14 -0
- package/dist/types/validation.d.ts.map +1 -1
- package/dist/types/validation.js +19 -0
- package/dist/types/validation.js.map +1 -1
- package/dist/validator/acp/index.d.ts +31 -0
- package/dist/validator/acp/index.d.ts.map +1 -0
- package/dist/validator/acp/index.js +574 -0
- package/dist/validator/acp/index.js.map +1 -0
- package/dist/validator/network-validator.d.ts.map +1 -1
- package/dist/validator/network-validator.js +23 -13
- package/dist/validator/network-validator.js.map +1 -1
- package/dist/validator/rules-validator.d.ts +8 -0
- package/dist/validator/rules-validator.d.ts.map +1 -1
- package/dist/validator/rules-validator.js +159 -43
- package/dist/validator/rules-validator.js.map +1 -1
- package/dist/validator/structural-validator.d.ts.map +1 -1
- package/dist/validator/structural-validator.js +283 -53
- package/dist/validator/structural-validator.js.map +1 -1
- package/dist/validator/utils.d.ts +62 -0
- package/dist/validator/utils.d.ts.map +1 -0
- package/dist/validator/utils.js +151 -0
- package/dist/validator/utils.js.map +1 -0
- package/package.json +45 -12
- package/.claude/settings.local.json +0 -60
- package/.vercel/README.txt +0 -11
- package/.vercel/project.json +0 -1
- package/publish-output.txt +0 -0
- package/tsconfig.json +0 -20
|
@@ -8,6 +8,7 @@ exports.validateNetwork = validateNetwork;
|
|
|
8
8
|
exports.validateRemoteProfile = validateRemoteProfile;
|
|
9
9
|
exports.clearSchemaCache = clearSchemaCache;
|
|
10
10
|
const validation_js_1 = require("../types/validation.js");
|
|
11
|
+
const utils_js_1 = require("./utils.js");
|
|
11
12
|
// Simple in-memory cache for schema fetches
|
|
12
13
|
const schemaCache = new Map();
|
|
13
14
|
const DEFAULT_CACHE_TTL_MS = 15 * 60 * 1000; // 15 minutes
|
|
@@ -22,11 +23,10 @@ async function validateNetwork(profile, options = {}) {
|
|
|
22
23
|
if (options.skipSchemaFetch) {
|
|
23
24
|
return issues;
|
|
24
25
|
}
|
|
25
|
-
const capabilities = profile.ucp.capabilities
|
|
26
|
+
const capabilities = (0, utils_js_1.normalizeCapabilities)(profile.ucp.capabilities);
|
|
26
27
|
// Validate each capability's schema
|
|
27
|
-
for (
|
|
28
|
-
const
|
|
29
|
-
const path = `$.ucp.capabilities[${i}]`;
|
|
28
|
+
for (const cap of capabilities) {
|
|
29
|
+
const path = `$.ucp.capabilities["${cap.name}"]`;
|
|
30
30
|
if (cap.schema) {
|
|
31
31
|
const schemaIssues = await validateCapabilitySchema(cap.schema, cap.name, cap.version, path, timeoutMs, cacheTtlMs);
|
|
32
32
|
issues.push(...schemaIssues);
|
|
@@ -86,19 +86,24 @@ async function validateCapabilitySchema(schemaUrl, expectedName, expectedVersion
|
|
|
86
86
|
// Fetch schema
|
|
87
87
|
const result = await fetchWithTimeout(schemaUrl, timeoutMs);
|
|
88
88
|
if (!result.success) {
|
|
89
|
+
const draft = (0, utils_js_1.isDraftCapability)(expectedName);
|
|
89
90
|
issues.push({
|
|
90
|
-
severity: 'warn',
|
|
91
|
-
code: validation_js_1.ValidationErrorCodes.SCHEMA_FETCH_FAILED,
|
|
91
|
+
severity: draft ? 'warn' : 'warn',
|
|
92
|
+
code: draft ? validation_js_1.ValidationErrorCodes.DRAFT_SCHEMA_DRIFT : validation_js_1.ValidationErrorCodes.SCHEMA_FETCH_FAILED,
|
|
92
93
|
path: `${basePath}.schema`,
|
|
93
|
-
message:
|
|
94
|
-
|
|
94
|
+
message: draft
|
|
95
|
+
? `Draft capability schema may not be available yet: ${schemaUrl}`
|
|
96
|
+
: `Failed to fetch schema from ${schemaUrl}`,
|
|
97
|
+
hint: draft
|
|
98
|
+
? 'Draft schemas may change or be temporarily unavailable'
|
|
99
|
+
: (result.error || 'Schema URL may be incorrect or temporarily unavailable'),
|
|
95
100
|
});
|
|
96
101
|
return issues;
|
|
97
102
|
}
|
|
98
103
|
if (!result.data) {
|
|
99
104
|
issues.push({
|
|
100
105
|
severity: 'warn',
|
|
101
|
-
code: validation_js_1.ValidationErrorCodes.SCHEMA_FETCH_FAILED,
|
|
106
|
+
code: (0, utils_js_1.isDraftCapability)(expectedName) ? validation_js_1.ValidationErrorCodes.DRAFT_SCHEMA_DRIFT : validation_js_1.ValidationErrorCodes.SCHEMA_FETCH_FAILED,
|
|
102
107
|
path: `${basePath}.schema`,
|
|
103
108
|
message: `Schema response is empty`,
|
|
104
109
|
});
|
|
@@ -143,14 +148,19 @@ function validateSelfDescribingSchema(schema, expectedName, expectedVersion, bas
|
|
|
143
148
|
});
|
|
144
149
|
}
|
|
145
150
|
}
|
|
146
|
-
// Check version if present
|
|
151
|
+
// Check version if present - more lenient for draft capabilities
|
|
147
152
|
if (schemaVersion && schemaVersion !== expectedVersion) {
|
|
153
|
+
const draft = (0, utils_js_1.isDraftCapability)(expectedName);
|
|
148
154
|
issues.push({
|
|
149
155
|
severity: 'info',
|
|
150
|
-
code: validation_js_1.ValidationErrorCodes.SCHEMA_VERSION_MISMATCH,
|
|
156
|
+
code: draft ? validation_js_1.ValidationErrorCodes.DRAFT_SCHEMA_DRIFT : validation_js_1.ValidationErrorCodes.SCHEMA_VERSION_MISMATCH,
|
|
151
157
|
path: `${basePath}.schema`,
|
|
152
|
-
message:
|
|
153
|
-
|
|
158
|
+
message: draft
|
|
159
|
+
? `Draft schema version "${schemaVersion}" differs from capability version "${expectedVersion}" (expected for draft specs)`
|
|
160
|
+
: `Schema version "${schemaVersion}" differs from capability version "${expectedVersion}"`,
|
|
161
|
+
hint: draft
|
|
162
|
+
? 'Draft schema versions may drift as the specification evolves'
|
|
163
|
+
: 'Ensure schema and capability versions are aligned',
|
|
154
164
|
});
|
|
155
165
|
}
|
|
156
166
|
return issues;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-validator.js","sourceRoot":"","sources":["../../src/validator/network-validator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"network-validator.js","sourceRoot":"","sources":["../../src/validator/network-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* UCP Rules Validator
|
|
3
3
|
* Validates UCP-specific business rules (no network calls)
|
|
4
|
+
*
|
|
5
|
+
* Updated per UCP Specification 2026-01-11:
|
|
6
|
+
* - Namespace-to-origin binding validation (security requirement)
|
|
7
|
+
* - Extension chain validation
|
|
8
|
+
* - Transport-specific field validation (schema, endpoint requirements)
|
|
9
|
+
* - HTTPS endpoint validation
|
|
10
|
+
*
|
|
11
|
+
* Note: signing_keys and payment.handlers are now validated in structural-validator.ts
|
|
4
12
|
*/
|
|
5
13
|
import type { UcpProfile } from '../types/ucp-profile.js';
|
|
6
14
|
import type { ValidationIssue } from '../types/validation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-validator.d.ts","sourceRoot":"","sources":["../../src/validator/rules-validator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rules-validator.d.ts","sourceRoot":"","sources":["../../src/validator/rules-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,eAAe,EAAE,CAsBpE"}
|
|
@@ -2,11 +2,20 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* UCP Rules Validator
|
|
4
4
|
* Validates UCP-specific business rules (no network calls)
|
|
5
|
+
*
|
|
6
|
+
* Updated per UCP Specification 2026-01-11:
|
|
7
|
+
* - Namespace-to-origin binding validation (security requirement)
|
|
8
|
+
* - Extension chain validation
|
|
9
|
+
* - Transport-specific field validation (schema, endpoint requirements)
|
|
10
|
+
* - HTTPS endpoint validation
|
|
11
|
+
*
|
|
12
|
+
* Note: signing_keys and payment.handlers are now validated in structural-validator.ts
|
|
5
13
|
*/
|
|
6
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
15
|
exports.validateRules = validateRules;
|
|
8
16
|
const validation_js_1 = require("../types/validation.js");
|
|
9
17
|
const ucp_profile_js_1 = require("../types/ucp-profile.js");
|
|
18
|
+
const utils_js_1 = require("./utils.js");
|
|
10
19
|
/**
|
|
11
20
|
* Validate UCP business rules
|
|
12
21
|
*/
|
|
@@ -16,10 +25,14 @@ function validateRules(profile) {
|
|
|
16
25
|
issues.push(...validateNamespaceOrigins(profile));
|
|
17
26
|
// Validate extension chains (no orphaned extends)
|
|
18
27
|
issues.push(...validateExtensions(profile));
|
|
19
|
-
// Validate endpoint rules
|
|
28
|
+
// Validate endpoint rules and transport-specific requirements
|
|
20
29
|
issues.push(...validateEndpoints(profile));
|
|
21
|
-
// Validate
|
|
22
|
-
issues.push(...
|
|
30
|
+
// Validate Cart/Catalog draft capability rules
|
|
31
|
+
issues.push(...validateCartCatalogRules(profile));
|
|
32
|
+
// Validate Identity Linking issuer endpoint rules
|
|
33
|
+
issues.push(...validateIdentityLinkingIssuer(profile));
|
|
34
|
+
// Note: signing_keys validation is now handled in structural validator
|
|
35
|
+
// (required for all profiles per UCP spec 2026-01-11, not just Order capability)
|
|
23
36
|
return issues;
|
|
24
37
|
}
|
|
25
38
|
/**
|
|
@@ -29,10 +42,10 @@ function validateRules(profile) {
|
|
|
29
42
|
*/
|
|
30
43
|
function validateNamespaceOrigins(profile) {
|
|
31
44
|
const issues = [];
|
|
32
|
-
const capabilities = profile.ucp.capabilities
|
|
45
|
+
const capabilities = (0, utils_js_1.normalizeCapabilities)(profile.ucp.capabilities);
|
|
33
46
|
for (let i = 0; i < capabilities.length; i++) {
|
|
34
47
|
const cap = capabilities[i];
|
|
35
|
-
const path = `$.ucp.capabilities[${
|
|
48
|
+
const path = `$.ucp.capabilities["${cap.name}"]`;
|
|
36
49
|
// Check dev.ucp.* namespace
|
|
37
50
|
if (cap.name.startsWith(ucp_profile_js_1.CAPABILITY_NAMESPACES.UCP_OFFICIAL)) {
|
|
38
51
|
// Spec must be from ucp.dev
|
|
@@ -90,18 +103,17 @@ function validateNamespaceOrigins(profile) {
|
|
|
90
103
|
*/
|
|
91
104
|
function validateExtensions(profile) {
|
|
92
105
|
const issues = [];
|
|
93
|
-
const capabilities = profile.ucp.capabilities
|
|
106
|
+
const capabilities = (0, utils_js_1.normalizeCapabilities)(profile.ucp.capabilities);
|
|
94
107
|
// Build set of capability names
|
|
95
108
|
const capabilityNames = new Set(capabilities.map(c => c.name));
|
|
96
|
-
for (
|
|
97
|
-
const cap = capabilities[i];
|
|
109
|
+
for (const cap of capabilities) {
|
|
98
110
|
if (cap.extends) {
|
|
99
111
|
// Check if parent capability exists in this profile
|
|
100
112
|
if (!capabilityNames.has(cap.extends)) {
|
|
101
113
|
issues.push({
|
|
102
114
|
severity: 'error',
|
|
103
115
|
code: validation_js_1.ValidationErrorCodes.ORPHANED_EXTENSION,
|
|
104
|
-
path: `$.ucp.capabilities[${
|
|
116
|
+
path: `$.ucp.capabilities["${cap.name}"].extends`,
|
|
105
117
|
message: `Extension "${cap.name}" references non-existent parent capability "${cap.extends}"`,
|
|
106
118
|
hint: `Add "${cap.extends}" to capabilities or remove the extends field`,
|
|
107
119
|
});
|
|
@@ -111,24 +123,150 @@ function validateExtensions(profile) {
|
|
|
111
123
|
return issues;
|
|
112
124
|
}
|
|
113
125
|
/**
|
|
114
|
-
* Validate endpoint rules (
|
|
126
|
+
* Validate endpoint rules and transport-specific requirements (per UCP spec 2026-01-11)
|
|
115
127
|
*/
|
|
116
128
|
function validateEndpoints(profile) {
|
|
117
129
|
const issues = [];
|
|
118
|
-
const
|
|
119
|
-
for (const
|
|
130
|
+
const normalizedServices = (0, utils_js_1.normalizeServices)(profile.ucp.services);
|
|
131
|
+
for (const { name: serviceName, service } of normalizedServices) {
|
|
120
132
|
const basePath = `$.ucp.services["${serviceName}"]`;
|
|
121
|
-
// Validate REST endpoint
|
|
122
|
-
if (service.rest
|
|
123
|
-
|
|
133
|
+
// Validate REST transport (requires schema and endpoint)
|
|
134
|
+
if (service.rest) {
|
|
135
|
+
if (!service.rest.schema) {
|
|
136
|
+
issues.push({
|
|
137
|
+
severity: 'error',
|
|
138
|
+
code: validation_js_1.ValidationErrorCodes.REST_MISSING_SCHEMA,
|
|
139
|
+
path: `${basePath}.rest.schema`,
|
|
140
|
+
message: `Service "${serviceName}" REST transport missing required "schema" field`,
|
|
141
|
+
hint: 'Add schema URL pointing to OpenAPI 3.x specification',
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (!service.rest.endpoint) {
|
|
145
|
+
issues.push({
|
|
146
|
+
severity: 'error',
|
|
147
|
+
code: validation_js_1.ValidationErrorCodes.REST_MISSING_ENDPOINT,
|
|
148
|
+
path: `${basePath}.rest.endpoint`,
|
|
149
|
+
message: `Service "${serviceName}" REST transport missing required "endpoint" field`,
|
|
150
|
+
hint: 'Add endpoint URL (base URL for REST API)',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
issues.push(...validateEndpoint(service.rest.endpoint, `${basePath}.rest.endpoint`));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Validate MCP transport (requires schema and endpoint)
|
|
158
|
+
if (service.mcp) {
|
|
159
|
+
if (!service.mcp.schema) {
|
|
160
|
+
issues.push({
|
|
161
|
+
severity: 'error',
|
|
162
|
+
code: validation_js_1.ValidationErrorCodes.MCP_MISSING_SCHEMA,
|
|
163
|
+
path: `${basePath}.mcp.schema`,
|
|
164
|
+
message: `Service "${serviceName}" MCP transport missing required "schema" field`,
|
|
165
|
+
hint: 'Add schema URL pointing to OpenRPC specification',
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if (!service.mcp.endpoint) {
|
|
169
|
+
issues.push({
|
|
170
|
+
severity: 'error',
|
|
171
|
+
code: validation_js_1.ValidationErrorCodes.MCP_MISSING_ENDPOINT,
|
|
172
|
+
path: `${basePath}.mcp.endpoint`,
|
|
173
|
+
message: `Service "${serviceName}" MCP transport missing required "endpoint" field`,
|
|
174
|
+
hint: 'Add endpoint URL (base URL for MCP server)',
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
issues.push(...validateEndpoint(service.mcp.endpoint, `${basePath}.mcp.endpoint`));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Validate A2A transport (requires agentCard with Agent Card URL)
|
|
182
|
+
if (service.a2a) {
|
|
183
|
+
if (!service.a2a.agentCard) {
|
|
184
|
+
issues.push({
|
|
185
|
+
severity: 'error',
|
|
186
|
+
code: validation_js_1.ValidationErrorCodes.A2A_MISSING_ENDPOINT,
|
|
187
|
+
path: `${basePath}.a2a.agentCard`,
|
|
188
|
+
message: `Service "${serviceName}" A2A transport missing required "agentCard" field`,
|
|
189
|
+
hint: 'Add agentCard URL pointing to Agent Card',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
issues.push(...validateEndpoint(service.a2a.agentCard, `${basePath}.a2a.agentCard`));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Validate EP (Embedded/Plugin) transport (requires schema)
|
|
197
|
+
if (service.embedded) {
|
|
198
|
+
if (!service.embedded.schema) {
|
|
199
|
+
issues.push({
|
|
200
|
+
severity: 'error',
|
|
201
|
+
code: validation_js_1.ValidationErrorCodes.EP_MISSING_SCHEMA,
|
|
202
|
+
path: `${basePath}.embedded.schema`,
|
|
203
|
+
message: `Service "${serviceName}" Embedded transport missing required "schema" field`,
|
|
204
|
+
hint: 'Add schema URL pointing to OpenRPC specification',
|
|
205
|
+
});
|
|
206
|
+
}
|
|
124
207
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
208
|
+
}
|
|
209
|
+
return issues;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Validate Cart and Catalog draft capability rules
|
|
213
|
+
* - Cart requires Checkout (discovery blocker - always error)
|
|
214
|
+
* - Draft spec URLs should use the draft path
|
|
215
|
+
*/
|
|
216
|
+
function validateCartCatalogRules(profile) {
|
|
217
|
+
const issues = [];
|
|
218
|
+
const capabilities = (0, utils_js_1.normalizeCapabilities)(profile.ucp.capabilities);
|
|
219
|
+
const capabilityNames = new Set(capabilities.map(c => c.name));
|
|
220
|
+
const hasCart = capabilityNames.has(ucp_profile_js_1.KNOWN_CAPABILITIES.CART);
|
|
221
|
+
const hasCheckout = capabilityNames.has(ucp_profile_js_1.KNOWN_CAPABILITIES.CHECKOUT);
|
|
222
|
+
// Cart without Checkout: functional but cart-to-checkout conversion won't work
|
|
223
|
+
if (hasCart && !hasCheckout) {
|
|
224
|
+
issues.push({
|
|
225
|
+
severity: 'warn',
|
|
226
|
+
code: validation_js_1.ValidationErrorCodes.CART_MISSING_CHECKOUT,
|
|
227
|
+
path: `$.ucp.capabilities["${ucp_profile_js_1.KNOWN_CAPABILITIES.CART}"]`,
|
|
228
|
+
message: 'Cart capability declared without Checkout - cart-to-checkout conversion will not be available',
|
|
229
|
+
hint: `Consider adding "${ucp_profile_js_1.KNOWN_CAPABILITIES.CHECKOUT}" to enable full purchase flow`,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// Validate draft capability spec URLs point to draft path
|
|
233
|
+
for (const cap of capabilities) {
|
|
234
|
+
if (!(0, utils_js_1.isDraftCapability)(cap.name))
|
|
235
|
+
continue;
|
|
236
|
+
const path = `$.ucp.capabilities["${cap.name}"]`;
|
|
237
|
+
if (cap.spec && !cap.spec.includes('/draft/')) {
|
|
238
|
+
issues.push({
|
|
239
|
+
severity: 'warn',
|
|
240
|
+
code: validation_js_1.ValidationErrorCodes.DRAFT_SCHEMA_DRIFT,
|
|
241
|
+
path: `${path}.spec`,
|
|
242
|
+
message: `Draft capability "${cap.name}" spec URL should reference draft specification`,
|
|
243
|
+
hint: `Use a URL under ${ucp_profile_js_1.UCP_DEFAULTS.DRAFT_SPEC_BASE}`,
|
|
244
|
+
});
|
|
128
245
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
246
|
+
}
|
|
247
|
+
return issues;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Validate Identity Linking issuer endpoint rules
|
|
251
|
+
* Identity Linking is a stable spec (dev.ucp.common.identity_linking).
|
|
252
|
+
* Checks that OAuth2 issuer URLs pass standard endpoint validation.
|
|
253
|
+
*/
|
|
254
|
+
function validateIdentityLinkingIssuer(profile) {
|
|
255
|
+
const issues = [];
|
|
256
|
+
const capabilities = (0, utils_js_1.normalizeCapabilities)(profile.ucp.capabilities);
|
|
257
|
+
const identityCap = capabilities.find(c => c.name === ucp_profile_js_1.KNOWN_CAPABILITIES.IDENTITY_LINKING);
|
|
258
|
+
if (!identityCap?.config) {
|
|
259
|
+
return issues;
|
|
260
|
+
}
|
|
261
|
+
const config = identityCap.config;
|
|
262
|
+
const mechanisms = config.supported_mechanisms;
|
|
263
|
+
if (!Array.isArray(mechanisms)) {
|
|
264
|
+
return issues;
|
|
265
|
+
}
|
|
266
|
+
for (let i = 0; i < mechanisms.length; i++) {
|
|
267
|
+
const mech = mechanisms[i];
|
|
268
|
+
if (mech?.type === 'oauth2' && typeof mech.issuer === 'string') {
|
|
269
|
+
issues.push(...validateEndpoint(mech.issuer, `$.ucp.capabilities["dev.ucp.common.identity_linking"].config.supported_mechanisms[${i}].issuer`));
|
|
132
270
|
}
|
|
133
271
|
}
|
|
134
272
|
return issues;
|
|
@@ -170,28 +308,6 @@ function validateEndpoint(endpoint, path) {
|
|
|
170
308
|
}
|
|
171
309
|
return issues;
|
|
172
310
|
}
|
|
173
|
-
/**
|
|
174
|
-
* Validate signing keys requirement for Order capability
|
|
175
|
-
*/
|
|
176
|
-
function validateSigningKeysRequirement(profile) {
|
|
177
|
-
const issues = [];
|
|
178
|
-
const capabilities = profile.ucp.capabilities || [];
|
|
179
|
-
// Check if Order capability is present
|
|
180
|
-
const hasOrderCapability = capabilities.some(c => c.name === ucp_profile_js_1.KNOWN_CAPABILITIES.ORDER);
|
|
181
|
-
if (hasOrderCapability) {
|
|
182
|
-
// Signing keys should be present for webhook signing
|
|
183
|
-
if (!profile.signing_keys || profile.signing_keys.length === 0) {
|
|
184
|
-
issues.push({
|
|
185
|
-
severity: 'error',
|
|
186
|
-
code: validation_js_1.ValidationErrorCodes.MISSING_SIGNING_KEYS,
|
|
187
|
-
path: '$.signing_keys',
|
|
188
|
-
message: `Order capability requires signing_keys for webhook verification`,
|
|
189
|
-
hint: `Add signing_keys array with at least one JWK public key`,
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return issues;
|
|
194
|
-
}
|
|
195
311
|
/**
|
|
196
312
|
* Check if URL is from ucp.dev origin
|
|
197
313
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-validator.js","sourceRoot":"","sources":["../../src/validator/rules-validator.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"rules-validator.js","sourceRoot":"","sources":["../../src/validator/rules-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural-validator.d.ts","sourceRoot":"","sources":["../../src/validator/structural-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"structural-validator.d.ts","sourceRoot":"","sources":["../../src/validator/structural-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS9D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CA4DrE"}
|