@lssm/lib.infra-ops-spec 2.0.1
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/README.md +61 -0
- package/dist/fixtures-deployment.d.ts +249 -0
- package/dist/fixtures-deployment.js +2 -0
- package/dist/fixtures-incident.d.ts +219 -0
- package/dist/fixtures-incident.js +2 -0
- package/dist/fixtures.d.ts +2 -0
- package/dist/fixtures.js +2 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +2 -0
- package/dist/infra-ops-spec.test.d.ts +1 -0
- package/dist/intent-architecture.d.ts +104 -0
- package/dist/intent-architecture.js +2 -0
- package/dist/intent-canonical.d.ts +4 -0
- package/dist/intent-canonical.js +2 -0
- package/dist/intent-comparison.d.ts +8 -0
- package/dist/intent-comparison.js +2 -0
- package/dist/intent-core.d.ts +98 -0
- package/dist/intent-core.js +2 -0
- package/dist/intent-decisions.d.ts +72 -0
- package/dist/intent-decisions.js +2 -0
- package/dist/intent-fixtures-decision.d.ts +4 -0
- package/dist/intent-fixtures-decision.js +2 -0
- package/dist/intent-fixtures.d.ts +3 -0
- package/dist/intent-fixtures.js +2 -0
- package/dist/intent-plans.d.ts +64 -0
- package/dist/intent-plans.js +2 -0
- package/dist/intent-types.d.ts +284 -0
- package/dist/intent-types.js +2 -0
- package/dist/intent-validation-bindings.d.ts +3 -0
- package/dist/intent-validation-bindings.js +2 -0
- package/dist/intent-validation-refs.d.ts +7 -0
- package/dist/intent-validation-refs.js +2 -0
- package/dist/intent-validation-rules.d.ts +3 -0
- package/dist/intent-validation-rules.js +2 -0
- package/dist/intent-validation-shared.d.ts +9 -0
- package/dist/intent-validation-shared.js +2 -0
- package/dist/intent-validation.d.ts +10 -0
- package/dist/intent-validation.js +2 -0
- package/dist/intent.test.d.ts +1 -0
- package/dist/node/fixtures-deployment.js +1 -0
- package/dist/node/fixtures-incident.js +1 -0
- package/dist/node/fixtures.js +1 -0
- package/dist/node/index.js +1 -0
- package/dist/node/intent-architecture.js +1 -0
- package/dist/node/intent-canonical.js +1 -0
- package/dist/node/intent-comparison.js +1 -0
- package/dist/node/intent-core.js +1 -0
- package/dist/node/intent-decisions.js +1 -0
- package/dist/node/intent-fixtures-decision.js +1 -0
- package/dist/node/intent-fixtures.js +1 -0
- package/dist/node/intent-plans.js +1 -0
- package/dist/node/intent-types.js +1 -0
- package/dist/node/intent-validation-bindings.js +1 -0
- package/dist/node/intent-validation-refs.js +1 -0
- package/dist/node/intent-validation-rules.js +1 -0
- package/dist/node/intent-validation-shared.js +1 -0
- package/dist/node/intent-validation.js +1 -0
- package/dist/node/types.js +1 -0
- package/dist/node/validation.js +1 -0
- package/dist/types.d.ts +748 -0
- package/dist/types.js +2 -0
- package/dist/validation.d.ts +13 -0
- package/dist/validation.js +2 -0
- package/package.json +421 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"].map((a)=>`binding-${a}`),i=`sha256:${"a".repeat(64)}`,t={candidates:[{id:"candidate-a",architectureId:"architecture-primary",bindingIds:e,satisfiedRequirementIds:["req-availability","req-portability"],hardViolationIds:[],scores:{cost:50,reliability:90,performance:85,scalability:90,portability:80,complexity:40,migrationRisk:30},assumptions:["Qualified capacity remains available."]},{id:"candidate-b",architectureId:"architecture-primary",bindingIds:e,satisfiedRequirementIds:["req-availability"],hardViolationIds:[],scores:{cost:60,reliability:80,performance:75,scalability:80,portability:70,complexity:50,migrationRisk:40},assumptions:["Manual scaling is acceptable."]},{id:"candidate-invalid",architectureId:"architecture-primary",bindingIds:e,satisfiedRequirementIds:["req-portability"],hardViolationIds:["req-availability"],scores:{cost:10,reliability:100,performance:100,scalability:100,portability:100,complexity:10,migrationRisk:10},assumptions:["Hard requirement is knowingly unmet."]}],comparisons:[{id:"comparison-primary",candidateIds:["candidate-a","candidate-b","candidate-invalid"],rejectedCandidateIds:["candidate-invalid"],paretoCandidateIds:["candidate-a"],selectedCandidateId:"candidate-a",rationale:"Candidate A dominates B after hard-violation rejection."}],adrs:[{id:"adr-primary",title:"Adopt portable regional service",status:"accepted",comparisonId:"comparison-primary",selectedCandidateId:"candidate-a",requirementIds:["req-availability","req-portability"],consequenceStatements:["Operate two regional failure domains."],decidedAt:"2026-08-03T00:00:00Z"}],infrastructurePlans:[{id:"plan-primary",adrId:"adr-primary",architectureId:"architecture-primary",candidateId:"candidate-a",steps:[{id:"step-bind",sequence:1,action:"Realize approved logical bindings.",bindingIds:e,prerequisiteStepIds:[],evidenceRefs:["evidence-plan-review"]}],rollbackPlanRef:"rollback:plan-primary",approvalRequirementIds:["approval-architecture-owner"]}],evolutionPlans:[],handoffPackets:[{id:"handoff-primary",infrastructurePlanId:"plan-primary",recipientRef:"workflow:infra-implementation",contractDigest:i,artifactRefs:["artifact:plan-primary"],requiredEvidenceRefs:["evidence:implementation-receipt"],issuedAt:"2026-08-03T01:00:00Z",expiresAt:"2026-08-10T01:00:00Z",containsCredentials:!1}],handoffReceipts:[{id:"receipt-primary",packetId:"handoff-primary",recipientRef:"workflow:infra-implementation",status:"accepted",receivedDigest:i,evidenceRefs:["evidence:receipt-primary"],receivedAt:"2026-08-03T01:05:00Z"}],unsatisfiableReports:[]};export{t as infrastructureIntentV2DecisionFixture};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"].map((e)=>`binding-${e}`),n=`sha256:${"a".repeat(64)}`,s={candidates:[{id:"candidate-a",architectureId:"architecture-primary",bindingIds:r,satisfiedRequirementIds:["req-availability","req-portability"],hardViolationIds:[],scores:{cost:50,reliability:90,performance:85,scalability:90,portability:80,complexity:40,migrationRisk:30},assumptions:["Qualified capacity remains available."]},{id:"candidate-b",architectureId:"architecture-primary",bindingIds:r,satisfiedRequirementIds:["req-availability"],hardViolationIds:[],scores:{cost:60,reliability:80,performance:75,scalability:80,portability:70,complexity:50,migrationRisk:40},assumptions:["Manual scaling is acceptable."]},{id:"candidate-invalid",architectureId:"architecture-primary",bindingIds:r,satisfiedRequirementIds:["req-portability"],hardViolationIds:["req-availability"],scores:{cost:10,reliability:100,performance:100,scalability:100,portability:100,complexity:10,migrationRisk:10},assumptions:["Hard requirement is knowingly unmet."]}],comparisons:[{id:"comparison-primary",candidateIds:["candidate-a","candidate-b","candidate-invalid"],rejectedCandidateIds:["candidate-invalid"],paretoCandidateIds:["candidate-a"],selectedCandidateId:"candidate-a",rationale:"Candidate A dominates B after hard-violation rejection."}],adrs:[{id:"adr-primary",title:"Adopt portable regional service",status:"accepted",comparisonId:"comparison-primary",selectedCandidateId:"candidate-a",requirementIds:["req-availability","req-portability"],consequenceStatements:["Operate two regional failure domains."],decidedAt:"2026-08-03T00:00:00Z"}],infrastructurePlans:[{id:"plan-primary",adrId:"adr-primary",architectureId:"architecture-primary",candidateId:"candidate-a",steps:[{id:"step-bind",sequence:1,action:"Realize approved logical bindings.",bindingIds:r,prerequisiteStepIds:[],evidenceRefs:["evidence-plan-review"]}],rollbackPlanRef:"rollback:plan-primary",approvalRequirementIds:["approval-architecture-owner"]}],evolutionPlans:[],handoffPackets:[{id:"handoff-primary",infrastructurePlanId:"plan-primary",recipientRef:"workflow:infra-implementation",contractDigest:n,artifactRefs:["artifact:plan-primary"],requiredEvidenceRefs:["evidence:implementation-receipt"],issuedAt:"2026-08-03T01:00:00Z",expiresAt:"2026-08-10T01:00:00Z",containsCredentials:!1}],handoffReceipts:[{id:"receipt-primary",packetId:"handoff-primary",recipientRef:"workflow:infra-implementation",status:"accepted",receivedDigest:n,evidenceRefs:["evidence:receipt-primary"],receivedAt:"2026-08-03T01:05:00Z"}],unsatisfiableReports:[]};var a=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"],t=a.map((e)=>`cap-${e}`),o=a.map((e)=>`binding-${e}`),l={id:"intent-customer-api-v2",version:"2.0.0",goals:[{id:"goal-resilience",statement:"Keep the customer API available through regional faults.",priority:"critical",requirementIds:["req-availability","req-portability"]}],requirements:[{id:"req-availability",goalId:"goal-resilience",category:"availability",description:"Monthly service availability",criticality:"hard",measure:"availability_percent",target:99.95,unit:"percent"},{id:"req-portability",goalId:"goal-resilience",category:"portability",description:"Retain replaceable infrastructure boundaries",criticality:"soft"}],workloadEnvelopes:[{id:"workload-primary",concurrentUsers:2000,requestsPerSecond:800,burstMultiplier:3,latencyP95Ms:250,availabilityPercent:99.95,dataVolumeGb:500,monthlyDataGrowthPercent:8,storageGb:750,monthlyEgressGb:2000,backgroundJobsPerHour:5000,rpoMinutes:5,rtoMinutes:30,regions:["eu-west","eu-central"],forecastMonths:24,annualTrafficGrowthPercent:40}],restrictions:[{id:"restriction-residency",requirementId:"req-availability",scopeIds:["architecture-primary"],kind:"residency",rule:"Customer data remains in approved EU regions.",severity:"hard",rationale:"Regulatory boundary"},{id:"restriction-cache",scopeIds:["architecture-primary"],kind:"technology",rule:"Cache may be temporarily omitted in preview.",severity:"soft",rationale:"Preview cost control"}],providerPolicies:[{id:"policy-neutral",allowedProviderClasses:["qualified-cloud"],deniedProviderClasses:["unqualified-cloud"],residencyRegions:["eu-west","eu-central"],portabilityMinimum:70,managedServicePosture:"prefer_managed",requiredCapabilities:["encryption-at-rest"],deniedCapabilities:["public-database"],nonWaivableRestrictionIds:["restriction-residency"]}],capabilities:a.map((e,i)=>({id:t[i],kind:e,purpose:`Provide ${e.replace("_"," ")} capability.`,requirementIds:["req-availability"],dependsOnCapabilityIds:i===0?[]:["cap-compute"]})),architectures:[{id:"architecture-primary",name:"Portable regional service",workloadEnvelopeId:"workload-primary",capabilityIds:t,restrictionIds:["restriction-residency","restriction-cache"]}],bindings:a.map((e,i)=>({id:o[i],architectureId:"architecture-primary",capabilityId:t[i],environmentId:"production-eu",targetClass:`managed-${e}`,providerClass:"qualified-cloud",region:"eu-west",evidenceRefs:[`evidence-${e}`]})),evolutionTriggers:[{id:"trigger-load",metric:"requests_per_second",operator:"gte",threshold:700,observationWindowMinutes:15,action:"replan"}],evolutionPolicies:[{id:"evolution-primary",architectureId:"architecture-primary",triggerIds:["trigger-load"],minimumReviewIntervalDays:30,allowedChangeKinds:["scale","rebind"],approvalRequirementIds:["approval-architecture-owner"]}],waivers:[{id:"waiver-preview",restrictionId:"restriction-cache",scope:{architectureIds:["architecture-primary"],environmentIds:["preview","development"]},reason:"Validate traffic assumptions before provisioning cache.",issuedAt:"2026-08-01T00:00:00Z",expiresAt:"2026-09-01T00:00:00Z",approvedByRef:"owner:platform"},{id:"waiver-development",restrictionId:"restriction-cache",scope:{architectureIds:["architecture-primary"],environmentIds:["development"]},reason:"Tightened child waiver for development only.",issuedAt:"2026-08-02T00:00:00Z",expiresAt:"2026-08-15T00:00:00Z",approvedByRef:"owner:platform",inheritedFromWaiverId:"waiver-preview"}],...s};export{l as infrastructureIntentV2Fixture};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as t}from"zod";var e=t.string().min(1),r=t.object({id:e,sequence:t.number().int().positive(),action:e,bindingIds:t.array(e),prerequisiteStepIds:t.array(e),evidenceRefs:t.array(e)}).strict(),i=t.object({id:e,adrId:e,architectureId:e,candidateId:e,steps:t.array(r).min(1),rollbackPlanRef:e,approvalRequirementIds:t.array(e)}).strict(),c=t.object({id:e,evolutionPolicyId:e,triggerId:e,fromAdrId:e,toAdrId:e,infrastructurePlanId:e,migrationRisk:t.enum(["low","medium","high","critical"]),continuityRequirementIds:t.array(e).min(1)}).strict(),n=t.object({id:e,infrastructurePlanId:e,recipientRef:e,contractDigest:t.string().regex(/^sha256:[a-f0-9]{64}$/),artifactRefs:t.array(e).min(1),requiredEvidenceRefs:t.array(e),issuedAt:t.string().datetime({offset:!0}),expiresAt:t.string().datetime({offset:!0}),containsCredentials:t.literal(!1)}).strict(),s=t.object({id:e,packetId:e,recipientRef:e,status:t.enum(["accepted","rejected","expired"]),receivedDigest:t.string().regex(/^sha256:[a-f0-9]{64}$/),evidenceRefs:t.array(e),receivedAt:t.string().datetime({offset:!0})}).strict();export{c as ArchitectureEvolutionPlanSchema,n as InfrastructureHandoffPacketSchema,s as InfrastructureHandoffReceiptSchema,i as InfrastructurePlanSchema};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as s}from"zod";import{z as t}from"zod";var e=t.string().min(1),w=t.enum(["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"]),l=t.object({id:e,kind:w,purpose:e,requirementIds:t.array(e),dependsOnCapabilityIds:t.array(e)}).strict(),u=t.object({id:e,name:e,workloadEnvelopeId:e,capabilityIds:t.array(e).min(1),restrictionIds:t.array(e)}).strict(),y=t.object({id:e,architectureId:e,capabilityId:e,environmentId:e,targetClass:e,providerClass:e.optional(),region:e,evidenceRefs:t.array(e)}).strict(),f=t.object({id:e,metric:e,operator:t.enum(["gt","gte","lt","lte","eq"]),threshold:t.number().finite(),observationWindowMinutes:t.number().int().positive(),action:t.enum(["review","replan","migrate"])}).strict(),h=t.object({id:e,architectureId:e,triggerIds:t.array(e).min(1),minimumReviewIntervalDays:t.number().int().nonnegative(),allowedChangeKinds:t.array(t.enum(["scale","rebind","replace","retire"])).min(1),approvalRequirementIds:t.array(e)}).strict(),S=t.object({id:e,restrictionId:e,scope:t.object({architectureIds:t.array(e).min(1),environmentIds:t.array(e).min(1)}).strict(),reason:e,issuedAt:t.string().datetime({offset:!0}),expiresAt:t.string().datetime({offset:!0}),approvedByRef:e,inheritedFromWaiverId:e.optional()}).strict();import{z as r}from"zod";var c=r.string().min(1),m=r.number().finite().nonnegative(),b=r.number().finite().positive(),p=r.number().finite().min(0).max(100),g=r.object({id:c,goalId:c,category:r.enum(["availability","capacity","cost","data","latency","operability","portability","recovery","security"]),description:c,criticality:r.enum(["hard","soft"]),measure:c.optional(),target:r.number().finite().optional(),unit:c.optional()}).strict(),I=r.object({id:c,statement:c,priority:r.enum(["low","medium","high","critical"]),requirementIds:r.array(c).min(1)}).strict(),v=r.object({id:c,concurrentUsers:m,requestsPerSecond:m,burstMultiplier:b,latencyP95Ms:b,availabilityPercent:p,dataVolumeGb:m,monthlyDataGrowthPercent:p,storageGb:m,monthlyEgressGb:m,backgroundJobsPerHour:m,rpoMinutes:m,rtoMinutes:m,regions:r.array(c).min(1),forecastMonths:r.number().int().positive(),annualTrafficGrowthPercent:p}).strict(),x=r.object({id:c,requirementId:c.optional(),scopeIds:r.array(c).min(1),kind:r.enum(["capability","compliance","cost","network","operability","residency","technology"]),rule:c,severity:r.enum(["hard","soft"]),rationale:c}).strict(),P=r.object({id:c,allowedProviderClasses:r.array(c),deniedProviderClasses:r.array(c),residencyRegions:r.array(c).min(1),portabilityMinimum:r.number().int().min(0).max(100),managedServicePosture:r.enum(["prefer_managed","allow_managed","self_managed_only"]),requiredCapabilities:r.array(c),deniedCapabilities:r.array(c),nonWaivableRestrictionIds:r.array(c)}).strict();import{z as o}from"zod";var a=o.string().min(1),d=o.number().finite().min(0).max(100),O=o.object({cost:d,reliability:d,performance:d,scalability:d,portability:d,complexity:d,migrationRisk:d}).strict(),R=o.object({id:a,architectureId:a,bindingIds:o.array(a).min(1),satisfiedRequirementIds:o.array(a),hardViolationIds:o.array(a),scores:O,assumptions:o.array(a)}).strict(),A=o.object({id:a,candidateIds:o.array(a).min(1),rejectedCandidateIds:o.array(a),paretoCandidateIds:o.array(a),selectedCandidateId:a.optional(),rationale:a}).strict(),C=o.object({id:a,title:a,status:o.enum(["proposed","accepted","superseded","rejected"]),comparisonId:a,selectedCandidateId:a,requirementIds:o.array(a).min(1),consequenceStatements:o.array(a).min(1),supersedesAdrId:a.optional(),decidedAt:o.string().datetime({offset:!0})}).strict(),j=o.object({id:a,requirementIds:o.array(a).min(1),candidateViolationIds:o.array(o.object({candidateId:a,violationIds:o.array(a).min(1)}).strict()).min(1),conflictExplanation:a,resolutionOptions:o.array(a).min(1),generatedAt:o.string().datetime({offset:!0})}).strict();import{z as n}from"zod";var i=n.string().min(1),W=n.object({id:i,sequence:n.number().int().positive(),action:i,bindingIds:n.array(i),prerequisiteStepIds:n.array(i),evidenceRefs:n.array(i)}).strict(),z=n.object({id:i,adrId:i,architectureId:i,candidateId:i,steps:n.array(W).min(1),rollbackPlanRef:i,approvalRequirementIds:n.array(i)}).strict(),q=n.object({id:i,evolutionPolicyId:i,triggerId:i,fromAdrId:i,toAdrId:i,infrastructurePlanId:i,migrationRisk:n.enum(["low","medium","high","critical"]),continuityRequirementIds:n.array(i).min(1)}).strict(),E=n.object({id:i,infrastructurePlanId:i,recipientRef:i,contractDigest:n.string().regex(/^sha256:[a-f0-9]{64}$/),artifactRefs:n.array(i).min(1),requiredEvidenceRefs:n.array(i),issuedAt:n.string().datetime({offset:!0}),expiresAt:n.string().datetime({offset:!0}),containsCredentials:n.literal(!1)}).strict(),k=n.object({id:i,packetId:i,recipientRef:i,status:n.enum(["accepted","rejected","expired"]),receivedDigest:n.string().regex(/^sha256:[a-f0-9]{64}$/),evidenceRefs:n.array(i),receivedAt:n.string().datetime({offset:!0})}).strict();var J=s.object({id:s.string().min(1),version:s.literal("2.0.0"),goals:s.array(I).min(1),requirements:s.array(g).min(1),workloadEnvelopes:s.array(v).min(1),restrictions:s.array(x),providerPolicies:s.array(P).min(1),capabilities:s.array(l).min(1),architectures:s.array(u).min(1),bindings:s.array(y),evolutionTriggers:s.array(f),evolutionPolicies:s.array(h),waivers:s.array(S),candidates:s.array(R).min(1),comparisons:s.array(A),adrs:s.array(C),infrastructurePlans:s.array(z),evolutionPlans:s.array(q),handoffPackets:s.array(E),handoffReceipts:s.array(k),unsatisfiableReports:s.array(j)}).strict();export{R as ArchitectureCandidateSchema,A as ArchitectureComparisonSchema,C as ArchitectureDecisionRecordSchema,q as ArchitectureEvolutionPlanSchema,O as ArchitectureScoreSchema,S as ConstraintWaiverSchema,h as EvolutionPolicySchema,f as EvolutionTriggerSchema,w as InfrastructureCapabilityKindSchema,E as InfrastructureHandoffPacketSchema,k as InfrastructureHandoffReceiptSchema,J as InfrastructureIntentV2Schema,z as InfrastructurePlanSchema,u as LogicalArchitectureSchema,l as LogicalCapabilitySchema,y as OperationalBindingSchema,I as OperationalGoalSchema,g as OperationalRequirementSchema,x as PlatformRestrictionSchema,P as ProviderPolicySchema,j as UnsatisfiableRequirementReportSchema,v as WorkloadEnvelopeSchema};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function u(i){return new Set(i.map(({id:e})=>e))}function f(i,e,t,n,s){for(let r of e)d(i,r,t,n,s)}function d(i,e,t,n,s){if(!i.has(e))s.push({code:"missing_reference",message:`${t} references missing ${n} ${e}.`})}function c(i,e){for(let[t,n]of Object.entries(i)){if(!Array.isArray(n))continue;let s=new Set;for(let r of n){if(!a(r))continue;if(s.has(r.id))e.push(o("duplicate_id",`${t} contains duplicate id ${r.id}.`));s.add(r.id)}}}function o(i,e){return{code:i,message:e}}function a(i){return typeof i==="object"&&i!==null&&"id"in i&&typeof i.id==="string"}function g(i,e){for(let t of i.bindings)for(let n of i.providerPolicies){if(t.providerClass&&(n.deniedProviderClasses.includes(t.providerClass)||n.allowedProviderClasses.length>0&&!n.allowedProviderClasses.includes(t.providerClass)))e.push(o("provider_denied",`${t.id} uses provider class denied by ${n.id}.`));if(!n.residencyRegions.includes(t.region))e.push(o("residency_denied",`${t.id} uses region outside ${n.id}.`))}}export{g as validateBindings};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function r(e){return new Set(e.map(({id:i})=>i))}function o(e,i,c,s,d){for(let a of i)n(e,a,c,s,d)}function n(e,i,c,s,d){if(!e.has(i))d.push({code:"missing_reference",message:`${c} references missing ${s} ${i}.`})}function k(e,i){for(let[c,s]of Object.entries(e)){if(!Array.isArray(s))continue;let d=new Set;for(let a of s){if(!R(a))continue;if(d.has(a.id))i.push(V("duplicate_id",`${c} contains duplicate id ${a.id}.`));d.add(a.id)}}}function V(e,i){return{code:e,message:i}}function R(e){return typeof e==="object"&&e!==null&&"id"in e&&typeof e.id==="string"}function A(e){let i=[],c=r(e.goals),s=r(e.requirements),d=r(e.workloadEnvelopes),a=r(e.restrictions),l=r(e.capabilities),u=r(e.architectures),p=r(e.bindings),g=r(e.evolutionTriggers),h=r(e.evolutionPolicies),f=r(e.candidates),q=r(e.comparisons),I=r(e.adrs),m=r(e.infrastructurePlans),y=r(e.handoffPackets),v=new Set([...s,...a]);for(let t of e.requirements)n(c,t.goalId,t.id,"goal",i);for(let t of e.restrictions)if(t.requirementId)n(s,t.requirementId,t.id,"requirement",i);for(let t of e.goals)o(s,t.requirementIds,t.id,"requirement",i);for(let t of e.capabilities)o(s,t.requirementIds,t.id,"requirement",i),o(l,t.dependsOnCapabilityIds,t.id,"capability",i);for(let t of e.architectures)n(d,t.workloadEnvelopeId,t.id,"workload envelope",i),o(l,t.capabilityIds,t.id,"capability",i),o(a,t.restrictionIds,t.id,"restriction",i);for(let t of e.bindings)n(u,t.architectureId,t.id,"architecture",i),n(l,t.capabilityId,t.id,"capability",i);for(let t of e.evolutionPolicies)n(u,t.architectureId,t.id,"architecture",i),o(g,t.triggerIds,t.id,"trigger",i);for(let t of e.waivers)n(a,t.restrictionId,t.id,"restriction",i),o(u,t.scope.architectureIds,t.id,"architecture",i);for(let t of e.candidates)n(u,t.architectureId,t.id,"architecture",i),o(p,t.bindingIds,t.id,"binding",i),o(s,t.satisfiedRequirementIds,t.id,"requirement",i),o(v,t.hardViolationIds,t.id,"hard violation target",i);for(let t of e.comparisons)o(f,t.candidateIds,t.id,"candidate",i);for(let t of e.adrs)n(q,t.comparisonId,t.id,"comparison",i),n(f,t.selectedCandidateId,t.id,"candidate",i),o(s,t.requirementIds,t.id,"requirement",i);for(let t of e.infrastructurePlans)n(I,t.adrId,t.id,"ADR",i),n(u,t.architectureId,t.id,"architecture",i),n(f,t.candidateId,t.id,"candidate",i);for(let t of e.evolutionPlans)n(h,t.evolutionPolicyId,t.id,"evolution policy",i),n(m,t.infrastructurePlanId,t.id,"infrastructure plan",i),n(g,t.triggerId,t.id,"trigger",i),n(I,t.fromAdrId,t.id,"ADR",i),n(I,t.toAdrId,t.id,"ADR",i);for(let t of e.handoffPackets)n(m,t.infrastructurePlanId,t.id,"infrastructure plan",i);for(let t of e.handoffReceipts)n(y,t.packetId,t.id,"handoff packet",i);for(let t of e.unsatisfiableReports)o(s,t.requirementIds,t.id,"requirement",i),o(f,t.candidateViolationIds.map(({candidateId:b})=>b),t.id,"candidate",i);return i}export{A as validateIntentReferences};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var c=["cost","complexity","migrationRisk"],f=["reliability","performance","scalability","portability"];function u(e){let t=[...e].sort((n,o)=>n.id.localeCompare(o.id)),s=t.filter((n)=>n.hardViolationIds.length),i=t.filter((n)=>!n.hardViolationIds.length),r=i.filter((n)=>!i.some((o)=>o.id!==n.id&&g(o,n)));return{eligibleCandidateIds:i.map(({id:n})=>n),rejectedCandidateIds:s.map(({id:n})=>n),paretoCandidateIds:r.map(({id:n})=>n)}}function g(e,t){let s=c.every((o)=>e.scores[o]<=t.scores[o]),i=f.every((o)=>e.scores[o]>=t.scores[o]),r=c.some((o)=>e.scores[o]<t.scores[o]),n=f.some((o)=>e.scores[o]>t.scores[o]);return s&&i&&(r||n)}function _(e){return new Set(e.map(({id:t})=>t))}function M(e,t,s,i,r){for(let n of t)h(e,n,s,i,r)}function h(e,t,s,i,r){if(!e.has(t))r.push({code:"missing_reference",message:`${s} references missing ${i} ${t}.`})}function l(e,t){for(let[s,i]of Object.entries(e)){if(!Array.isArray(i))continue;let r=new Set;for(let n of i){if(!y(n))continue;if(r.has(n.id))t.push(a("duplicate_id",`${s} contains duplicate id ${n.id}.`));r.add(n.id)}}}function a(e,t){return{code:e,message:t}}function y(e){return typeof e==="object"&&e!==null&&"id"in e&&typeof e.id==="string"}function p(e,t){for(let s of e.bindings)for(let i of e.providerPolicies){if(s.providerClass&&(i.deniedProviderClasses.includes(s.providerClass)||i.allowedProviderClasses.length>0&&!i.allowedProviderClasses.includes(s.providerClass)))t.push(a("provider_denied",`${s.id} uses provider class denied by ${i.id}.`));if(!i.residencyRegions.includes(s.region))t.push(a("residency_denied",`${s.id} uses region outside ${i.id}.`))}}function k(e){let t=[];return C(e,t),p(e,t),b(e,t),V(e,t),w(e,t),x(e,t),l(e,t),t}function C(e,t){for(let s of e.providerPolicies){I(s.allowedProviderClasses,s.deniedProviderClasses,s.id,"provider class",t),I(s.requiredCapabilities,s.deniedCapabilities,s.id,"capability",t);let i=new Set(e.restrictions.map(({id:r})=>r));for(let r of s.nonWaivableRestrictionIds)if(!i.has(r))t.push(a("missing_reference",`${s.id} references missing restriction ${r}.`))}}function b(e,t){let s=new Map(e.waivers.map((r)=>[r.id,r])),i=new Set(e.providerPolicies.flatMap(({nonWaivableRestrictionIds:r})=>r));for(let r of e.waivers){if(i.has(r.restrictionId))t.push(a("non_waivable",`${r.id} targets non-waivable restriction ${r.restrictionId}.`));if(Date.parse(r.expiresAt)<=Date.parse(r.issuedAt))t.push(a("invalid_expiry",`${r.id} must expire after issuance.`));if(!r.inheritedFromWaiverId)continue;let n=s.get(r.inheritedFromWaiverId);if(!n){t.push(a("missing_reference",`${r.id} references missing parent waiver.`));continue}if(n.restrictionId!==r.restrictionId)t.push(a("waiver_broadened",`${r.id} must inherit the same restriction.`));if(Date.parse(r.expiresAt)>Date.parse(n.expiresAt))t.push(a("waiver_broadened",`${r.id} may not outlive parent ${n.id}.`));if(!m(r.scope.architectureIds,n.scope.architectureIds)||!m(r.scope.environmentIds,n.scope.environmentIds))t.push(a("waiver_broadened",`${r.id} may only tighten parent ${n.id} scope.`))}}function V(e,t){let s=new Map(e.candidates.map((i)=>[i.id,i]));for(let i of e.comparisons){let r=i.candidateIds.flatMap((o)=>{let d=s.get(o);return d?[d]:[]}),n=u(r);if(!v(n.rejectedCandidateIds,i.rejectedCandidateIds))t.push(a("comparison_mismatch",`${i.id} hard-violation rejection is not deterministic.`));if(!v(n.paretoCandidateIds,i.paretoCandidateIds))t.push(a("comparison_mismatch",`${i.id} Pareto frontier is not deterministic.`));if(i.selectedCandidateId&&!n.paretoCandidateIds.includes(i.selectedCandidateId))t.push(a("invalid_selection",`${i.id} must select from its Pareto frontier.`))}}function w(e,t){let s=new Set(e.unsatisfiableReports.flatMap(({candidateViolationIds:n})=>n.map(({candidateId:o})=>o))),i=new Set(e.comparisons.flatMap(({candidateIds:n})=>n)),r=e.candidates.filter(({id:n})=>i.has(n)).every(({hardViolationIds:n})=>n.length>0);if(i.size>0&&r){for(let n of i)if(!s.has(n))t.push(a("unsatisfiable_report_required",`Hard-invalid candidate ${n} requires an unsatisfiable report.`))}}function x(e,t){let s=new Map(e.handoffPackets.map((i)=>[i.id,i]));for(let i of e.handoffPackets)if(Date.parse(i.expiresAt)<=Date.parse(i.issuedAt))t.push(a("invalid_expiry",`${i.id} must expire after issuance.`));for(let i of e.handoffReceipts){let r=s.get(i.packetId);if(r&&i.receivedDigest!==r.contractDigest)t.push(a("digest_mismatch",`${i.id} does not acknowledge packet digest.`))}}function I(e,t,s,i,r){for(let n of e)if(t.includes(n))r.push(a("policy_conflict",`${s} both allows/requires and denies ${i} ${n}.`))}function m(e,t){return e.every((s)=>t.includes(s))}function v(e,t){return e.length===t.length&&e.every((s,i)=>s===t[i])}export{k as validateIntentRules};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function u(n){return new Set(n.map(({id:t})=>t))}function f(n,t,s,i,e){for(let r of t)o(n,r,s,i,e)}function o(n,t,s,i,e){if(!n.has(t))e.push({code:"missing_reference",message:`${s} references missing ${i} ${t}.`})}function c(n,t){for(let[s,i]of Object.entries(n)){if(!Array.isArray(i))continue;let e=new Set;for(let r of i){if(!d(r))continue;if(e.has(r.id))t.push(a("duplicate_id",`${s} contains duplicate id ${r.id}.`));e.add(r.id)}}}function a(n,t){return{code:n,message:t}}function d(n){return typeof n==="object"&&n!==null&&"id"in n&&typeof n.id==="string"}export{u as ids,a as issue,o as requireRef,f as requireRefs,c as validateUniqueIds};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as y}from"zod";import{z as c}from"zod";var s=c.string().min(1),me=c.enum(["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"]),w=c.object({id:s,kind:me,purpose:s,requirementIds:c.array(s),dependsOnCapabilityIds:c.array(s)}).strict(),k=c.object({id:s,name:s,workloadEnvelopeId:s,capabilityIds:c.array(s).min(1),restrictionIds:c.array(s)}).strict(),_=c.object({id:s,architectureId:s,capabilityId:s,environmentId:s,targetClass:s,providerClass:s.optional(),region:s,evidenceRefs:c.array(s)}).strict(),j=c.object({id:s,metric:s,operator:c.enum(["gt","gte","lt","lte","eq"]),threshold:c.number().finite(),observationWindowMinutes:c.number().int().positive(),action:c.enum(["review","replan","migrate"])}).strict(),z=c.object({id:s,architectureId:s,triggerIds:c.array(s).min(1),minimumReviewIntervalDays:c.number().int().nonnegative(),allowedChangeKinds:c.array(c.enum(["scale","rebind","replace","retire"])).min(1),approvalRequirementIds:c.array(s)}).strict(),E=c.object({id:s,restrictionId:s,scope:c.object({architectureIds:c.array(s).min(1),environmentIds:c.array(s).min(1)}).strict(),reason:s,issuedAt:c.string().datetime({offset:!0}),expiresAt:c.string().datetime({offset:!0}),approvedByRef:s,inheritedFromWaiverId:s.optional()}).strict();import{z as d}from"zod";var I=d.string().min(1),x=d.number().finite().nonnegative(),M=d.number().finite().positive(),A=d.number().finite().min(0).max(100),D=d.object({id:I,goalId:I,category:d.enum(["availability","capacity","cost","data","latency","operability","portability","recovery","security"]),description:I,criticality:d.enum(["hard","soft"]),measure:I.optional(),target:d.number().finite().optional(),unit:I.optional()}).strict(),O=d.object({id:I,statement:I,priority:d.enum(["low","medium","high","critical"]),requirementIds:d.array(I).min(1)}).strict(),W=d.object({id:I,concurrentUsers:x,requestsPerSecond:x,burstMultiplier:M,latencyP95Ms:M,availabilityPercent:A,dataVolumeGb:x,monthlyDataGrowthPercent:A,storageGb:x,monthlyEgressGb:x,backgroundJobsPerHour:x,rpoMinutes:x,rtoMinutes:x,regions:d.array(I).min(1),forecastMonths:d.number().int().positive(),annualTrafficGrowthPercent:A}).strict(),H=d.object({id:I,requirementId:I.optional(),scopeIds:d.array(I).min(1),kind:d.enum(["capability","compliance","cost","network","operability","residency","technology"]),rule:I,severity:d.enum(["hard","soft"]),rationale:I}).strict(),G=d.object({id:I,allowedProviderClasses:d.array(I),deniedProviderClasses:d.array(I),residencyRegions:d.array(I).min(1),portabilityMinimum:d.number().int().min(0).max(100),managedServicePosture:d.enum(["prefer_managed","allow_managed","self_managed_only"]),requiredCapabilities:d.array(I),deniedCapabilities:d.array(I),nonWaivableRestrictionIds:d.array(I)}).strict();import{z as f}from"zod";var l=f.string().min(1),P=f.number().finite().min(0).max(100),Ie=f.object({cost:P,reliability:P,performance:P,scalability:P,portability:P,complexity:P,migrationRisk:P}).strict(),T=f.object({id:l,architectureId:l,bindingIds:f.array(l).min(1),satisfiedRequirementIds:f.array(l),hardViolationIds:f.array(l),scores:Ie,assumptions:f.array(l)}).strict(),L=f.object({id:l,candidateIds:f.array(l).min(1),rejectedCandidateIds:f.array(l),paretoCandidateIds:f.array(l),selectedCandidateId:l.optional(),rationale:l}).strict(),U=f.object({id:l,title:l,status:f.enum(["proposed","accepted","superseded","rejected"]),comparisonId:l,selectedCandidateId:l,requirementIds:f.array(l).min(1),consequenceStatements:f.array(l).min(1),supersedesAdrId:l.optional(),decidedAt:f.string().datetime({offset:!0})}).strict(),B=f.object({id:l,requirementIds:f.array(l).min(1),candidateViolationIds:f.array(f.object({candidateId:l,violationIds:f.array(l).min(1)}).strict()).min(1),conflictExplanation:l,resolutionOptions:f.array(l).min(1),generatedAt:f.string().datetime({offset:!0})}).strict();import{z as m}from"zod";var u=m.string().min(1),ye=m.object({id:u,sequence:m.number().int().positive(),action:u,bindingIds:m.array(u),prerequisiteStepIds:m.array(u),evidenceRefs:m.array(u)}).strict(),N=m.object({id:u,adrId:u,architectureId:u,candidateId:u,steps:m.array(ye).min(1),rollbackPlanRef:u,approvalRequirementIds:m.array(u)}).strict(),F=m.object({id:u,evolutionPolicyId:u,triggerId:u,fromAdrId:u,toAdrId:u,infrastructurePlanId:u,migrationRisk:m.enum(["low","medium","high","critical"]),continuityRequirementIds:m.array(u).min(1)}).strict(),K=m.object({id:u,infrastructurePlanId:u,recipientRef:u,contractDigest:m.string().regex(/^sha256:[a-f0-9]{64}$/),artifactRefs:m.array(u).min(1),requiredEvidenceRefs:m.array(u),issuedAt:m.string().datetime({offset:!0}),expiresAt:m.string().datetime({offset:!0}),containsCredentials:m.literal(!1)}).strict(),J=m.object({id:u,packetId:u,recipientRef:u,status:m.enum(["accepted","rejected","expired"]),receivedDigest:m.string().regex(/^sha256:[a-f0-9]{64}$/),evidenceRefs:m.array(u),receivedAt:m.string().datetime({offset:!0})}).strict();var Z=y.object({id:y.string().min(1),version:y.literal("2.0.0"),goals:y.array(O).min(1),requirements:y.array(D).min(1),workloadEnvelopes:y.array(W).min(1),restrictions:y.array(H),providerPolicies:y.array(G).min(1),capabilities:y.array(w).min(1),architectures:y.array(k).min(1),bindings:y.array(_),evolutionTriggers:y.array(j),evolutionPolicies:y.array(z),waivers:y.array(E),candidates:y.array(T).min(1),comparisons:y.array(L),adrs:y.array(U),infrastructurePlans:y.array(N),evolutionPlans:y.array(F),handoffPackets:y.array(K),handoffReceipts:y.array(J),unsatisfiableReports:y.array(B)}).strict();function v(t){return new Set(t.map(({id:e})=>e))}function b(t,e,o,r,a){for(let n of e)h(t,n,o,r,a)}function h(t,e,o,r,a){if(!t.has(e))a.push({code:"missing_reference",message:`${o} references missing ${r} ${e}.`})}function X(t,e){for(let[o,r]of Object.entries(t)){if(!Array.isArray(r))continue;let a=new Set;for(let n of r){if(!he(n))continue;if(a.has(n.id))e.push(g("duplicate_id",`${o} contains duplicate id ${n.id}.`));a.add(n.id)}}}function g(t,e){return{code:t,message:e}}function he(t){return typeof t==="object"&&t!==null&&"id"in t&&typeof t.id==="string"}function Q(t){let e=[],o=v(t.goals),r=v(t.requirements),a=v(t.workloadEnvelopes),n=v(t.restrictions),p=v(t.capabilities),S=v(t.architectures),ce=v(t.bindings),q=v(t.evolutionTriggers),de=v(t.evolutionPolicies),C=v(t.candidates),ue=v(t.comparisons),R=v(t.adrs),V=v(t.infrastructurePlans),le=v(t.handoffPackets),pe=new Set([...r,...n]);for(let i of t.requirements)h(o,i.goalId,i.id,"goal",e);for(let i of t.restrictions)if(i.requirementId)h(r,i.requirementId,i.id,"requirement",e);for(let i of t.goals)b(r,i.requirementIds,i.id,"requirement",e);for(let i of t.capabilities)b(r,i.requirementIds,i.id,"requirement",e),b(p,i.dependsOnCapabilityIds,i.id,"capability",e);for(let i of t.architectures)h(a,i.workloadEnvelopeId,i.id,"workload envelope",e),b(p,i.capabilityIds,i.id,"capability",e),b(n,i.restrictionIds,i.id,"restriction",e);for(let i of t.bindings)h(S,i.architectureId,i.id,"architecture",e),h(p,i.capabilityId,i.id,"capability",e);for(let i of t.evolutionPolicies)h(S,i.architectureId,i.id,"architecture",e),b(q,i.triggerIds,i.id,"trigger",e);for(let i of t.waivers)h(n,i.restrictionId,i.id,"restriction",e),b(S,i.scope.architectureIds,i.id,"architecture",e);for(let i of t.candidates)h(S,i.architectureId,i.id,"architecture",e),b(ce,i.bindingIds,i.id,"binding",e),b(r,i.satisfiedRequirementIds,i.id,"requirement",e),b(pe,i.hardViolationIds,i.id,"hard violation target",e);for(let i of t.comparisons)b(C,i.candidateIds,i.id,"candidate",e);for(let i of t.adrs)h(ue,i.comparisonId,i.id,"comparison",e),h(C,i.selectedCandidateId,i.id,"candidate",e),b(r,i.requirementIds,i.id,"requirement",e);for(let i of t.infrastructurePlans)h(R,i.adrId,i.id,"ADR",e),h(S,i.architectureId,i.id,"architecture",e),h(C,i.candidateId,i.id,"candidate",e);for(let i of t.evolutionPlans)h(de,i.evolutionPolicyId,i.id,"evolution policy",e),h(V,i.infrastructurePlanId,i.id,"infrastructure plan",e),h(q,i.triggerId,i.id,"trigger",e),h(R,i.fromAdrId,i.id,"ADR",e),h(R,i.toAdrId,i.id,"ADR",e);for(let i of t.handoffPackets)h(V,i.infrastructurePlanId,i.id,"infrastructure plan",e);for(let i of t.handoffReceipts)h(le,i.packetId,i.id,"handoff packet",e);for(let i of t.unsatisfiableReports)b(r,i.requirementIds,i.id,"requirement",e),b(C,i.candidateViolationIds.map(({candidateId:fe})=>fe),i.id,"candidate",e);return e}var Y=["cost","complexity","migrationRisk"],ee=["reliability","performance","scalability","portability"];function te(t){let e=[...t].sort((n,p)=>n.id.localeCompare(p.id)),o=e.filter((n)=>n.hardViolationIds.length),r=e.filter((n)=>!n.hardViolationIds.length),a=r.filter((n)=>!r.some((p)=>p.id!==n.id&&ge(p,n)));return{eligibleCandidateIds:r.map(({id:n})=>n),rejectedCandidateIds:o.map(({id:n})=>n),paretoCandidateIds:a.map(({id:n})=>n)}}function ge(t,e){let o=Y.every((p)=>t.scores[p]<=e.scores[p]),r=ee.every((p)=>t.scores[p]>=e.scores[p]),a=Y.some((p)=>t.scores[p]<e.scores[p]),n=ee.some((p)=>t.scores[p]>e.scores[p]);return o&&r&&(a||n)}function ie(t,e){for(let o of t.bindings)for(let r of t.providerPolicies){if(o.providerClass&&(r.deniedProviderClasses.includes(o.providerClass)||r.allowedProviderClasses.length>0&&!r.allowedProviderClasses.includes(o.providerClass)))e.push(g("provider_denied",`${o.id} uses provider class denied by ${r.id}.`));if(!r.residencyRegions.includes(o.region))e.push(g("residency_denied",`${o.id} uses region outside ${r.id}.`))}}function oe(t){let e=[];return ve(t,e),ie(t,e),be(t,e),Se(t,e),xe(t,e),Pe(t,e),X(t,e),e}function ve(t,e){for(let o of t.providerPolicies){re(o.allowedProviderClasses,o.deniedProviderClasses,o.id,"provider class",e),re(o.requiredCapabilities,o.deniedCapabilities,o.id,"capability",e);let r=new Set(t.restrictions.map(({id:a})=>a));for(let a of o.nonWaivableRestrictionIds)if(!r.has(a))e.push(g("missing_reference",`${o.id} references missing restriction ${a}.`))}}function be(t,e){let o=new Map(t.waivers.map((a)=>[a.id,a])),r=new Set(t.providerPolicies.flatMap(({nonWaivableRestrictionIds:a})=>a));for(let a of t.waivers){if(r.has(a.restrictionId))e.push(g("non_waivable",`${a.id} targets non-waivable restriction ${a.restrictionId}.`));if(Date.parse(a.expiresAt)<=Date.parse(a.issuedAt))e.push(g("invalid_expiry",`${a.id} must expire after issuance.`));if(!a.inheritedFromWaiverId)continue;let n=o.get(a.inheritedFromWaiverId);if(!n){e.push(g("missing_reference",`${a.id} references missing parent waiver.`));continue}if(n.restrictionId!==a.restrictionId)e.push(g("waiver_broadened",`${a.id} must inherit the same restriction.`));if(Date.parse(a.expiresAt)>Date.parse(n.expiresAt))e.push(g("waiver_broadened",`${a.id} may not outlive parent ${n.id}.`));if(!ne(a.scope.architectureIds,n.scope.architectureIds)||!ne(a.scope.environmentIds,n.scope.environmentIds))e.push(g("waiver_broadened",`${a.id} may only tighten parent ${n.id} scope.`))}}function Se(t,e){let o=new Map(t.candidates.map((r)=>[r.id,r]));for(let r of t.comparisons){let a=r.candidateIds.flatMap((p)=>{let S=o.get(p);return S?[S]:[]}),n=te(a);if(!ae(n.rejectedCandidateIds,r.rejectedCandidateIds))e.push(g("comparison_mismatch",`${r.id} hard-violation rejection is not deterministic.`));if(!ae(n.paretoCandidateIds,r.paretoCandidateIds))e.push(g("comparison_mismatch",`${r.id} Pareto frontier is not deterministic.`));if(r.selectedCandidateId&&!n.paretoCandidateIds.includes(r.selectedCandidateId))e.push(g("invalid_selection",`${r.id} must select from its Pareto frontier.`))}}function xe(t,e){let o=new Set(t.unsatisfiableReports.flatMap(({candidateViolationIds:n})=>n.map(({candidateId:p})=>p))),r=new Set(t.comparisons.flatMap(({candidateIds:n})=>n)),a=t.candidates.filter(({id:n})=>r.has(n)).every(({hardViolationIds:n})=>n.length>0);if(r.size>0&&a){for(let n of r)if(!o.has(n))e.push(g("unsatisfiable_report_required",`Hard-invalid candidate ${n} requires an unsatisfiable report.`))}}function Pe(t,e){let o=new Map(t.handoffPackets.map((r)=>[r.id,r]));for(let r of t.handoffPackets)if(Date.parse(r.expiresAt)<=Date.parse(r.issuedAt))e.push(g("invalid_expiry",`${r.id} must expire after issuance.`));for(let r of t.handoffReceipts){let a=o.get(r.packetId);if(a&&r.receivedDigest!==a.contractDigest)e.push(g("digest_mismatch",`${r.id} does not acknowledge packet digest.`))}}function re(t,e,o,r,a){for(let n of t)if(e.includes(n))a.push(g("policy_conflict",`${o} both allows/requires and denies ${r} ${n}.`))}function ne(t,e){return t.every((o)=>e.includes(o))}function ae(t,e){return t.length===e.length&&t.every((o,r)=>o===e[r])}var Ce=/(?:api[_-]?key|client[_-]?secret|private[_-]?key|password|bearer\s+|sk-[a-z0-9]|ghp_[a-z0-9])/i,Re=/(?:aws_access_key|service_account_json|azure_client_secret|provider[_-]?config|kubeconfig)/i;class se extends Error{issues;constructor(t){super("Infrastructure intent V2 is invalid");this.issues=t;this.name="InfrastructureIntentValidationError"}}function Ae(t){let e=Z.safeParse(t);if(!e.success)return e.error.issues.map((a)=>({code:"schema_invalid",message:a.message,path:a.path.join(".")}));let o=[...Q(e.data),...oe(e.data)],r=JSON.stringify(e.data);if(Ce.test(r))o.push({code:"secret_material",message:"Infrastructure intent must not contain credentials or secret values."});if(Re.test(r))o.push({code:"provider_config",message:"Infrastructure intent must not contain provider configuration material."});return o}function nt(t){let e=Ae(t);if(e.length>0)throw new se(e)}export{se as InfrastructureIntentValidationError,nt as assertInfrastructureIntentV2Valid,Ae as validateInfrastructureIntentV2};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as e}from"zod";var t=e.object({id:e.string().min(1),kind:e.string().min(1),version:e.string().min(1).optional()}),c=t.extend({kind:e.literal("progressive_delivery_rollout")}),n=t.extend({kind:e.literal("progressive_delivery_rollback")}),i=t.extend({kind:e.literal("observability_metric")}),p=t.extend({kind:e.literal("observability_trace")}),s=t.extend({kind:e.literal("observability_log")}),a=t.extend({kind:e.literal("job_schedule")}),o=t.extend({kind:e.literal("integration_capability")}),f=t.extend({kind:e.literal("companyos_policy_gate")}),r=t.extend({kind:e.literal("companyos_owner")}),m=t.extend({kind:e.literal("orchestration_workflow")}),l=t.extend({kind:e.literal("cost_budget")}),d=t.extend({kind:e.literal("metering_usage")}),y=e.object({id:e.string().min(1),name:e.string().min(1),tier:e.enum(["development","preview","staging","production"]),ownerRef:r}),S=e.object({id:e.string().min(1),type:e.enum(["web","api","worker","job","database","edge","custom"]),capabilityRefs:e.array(o).default([])}),g=e.object({id:e.string().min(1),name:e.string().min(1),runtimeTargetId:e.string().min(1),ownerRef:r}),R=e.object({id:e.string().min(1),serviceId:e.string().min(1),kind:e.enum(["health","readiness","liveness"]),metricRef:i}),h=e.object({id:e.string().min(1),serviceId:e.string().min(1),objective:e.string().min(1),threshold:e.string().min(1),metricRefs:e.array(i).min(1),ownerRef:r}),I=e.object({id:e.string().min(1),serviceId:e.string().min(1),metricRefs:e.array(i).min(1),traceRefs:e.array(p).default([]),logRefs:e.array(s).default([])}),x=e.object({id:e.string().min(1),sourceRef:e.string().min(1),action:e.string().min(1),actorRef:r,targetRef:e.string().min(1),outcome:e.enum(["planned","approved","succeeded","failed","mitigated"]),observedAt:e.string().min(1)}),b=e.object({id:e.string().min(1),policyGateRef:f,ownerRef:r,requiredFor:e.array(e.string().min(1)).min(1)}),v=e.object({id:e.string().min(1),jobScheduleRef:a,capabilityRefs:e.array(o).default([]),ownerRef:r}),u=e.object({id:e.string().min(1),serviceId:e.string().min(1),windowRef:e.string().min(1),rollbackRef:n,ownerRef:r,evidenceReceiptIds:e.array(e.string().min(1)).min(1)}),k=e.object({id:e.string().min(1),environmentId:e.string().min(1),serviceId:e.string().min(1),pipelineId:e.string().min(1),rolloutRef:c,rollbackRef:n,approvalRequirementId:e.string().min(1),healthCheckIds:e.array(e.string().min(1)).min(1),sloIds:e.array(e.string().min(1)).min(1),evidenceReceiptIds:e.array(e.string().min(1)).min(1),highRisk:e.boolean().default(!1)}),w=e.object({id:e.string().min(1),deploymentId:e.string().min(1),rollbackRef:n,priorEvidenceReceiptId:e.string().min(1)}),z=e.object({id:e.string().min(1),deploymentId:e.string().min(1),version:e.string().min(1),orchestrationRef:m}),O=e.object({id:e.string().min(1),serviceId:e.string().min(1),severity:e.enum(["low","medium","high","critical"]),monitorId:e.string().min(1),sloId:e.string().min(1)}),j=e.object({id:e.string().min(1),serviceId:e.string().min(1),ownerRef:r,scheduleRef:a}),C=e.object({id:e.string().min(1),incidentId:e.string().min(1),onCallId:e.string().min(1),ownerRef:r}),P=e.object({id:e.string().min(1),incidentId:e.string().min(1),ownerRef:r,evidenceReceiptIds:e.array(e.string().min(1)).min(1),followUpRefs:e.array(e.string().min(1)).min(1)}),_=e.object({id:e.string().min(1),alertId:e.string().min(1),environmentId:e.string().min(1),serviceId:e.string().min(1),severity:e.enum(["low","medium","high","critical"]),escalationId:e.string().min(1),mitigationOwnerRef:r,postmortemId:e.string().min(1),evidenceReceiptIds:e.array(e.string().min(1)).min(1)}),M=e.object({id:e.string().min(1),serviceId:e.string().min(1),expectedLoad:e.string().min(1),thresholds:e.array(e.string().min(1)).min(1),ownerRef:r,evidenceReceiptIds:e.array(e.string().min(1)).min(1)}),E=e.object({id:e.string().min(1),serviceId:e.string().min(1),budgetRef:l,usageRef:d,thresholds:e.array(e.string().min(1)).min(1),ownerRef:r}),D=e.object({id:e.string().min(1),purpose:e.string().min(1),ref:e.string().min(1),ownerRef:r}),T=e.object({id:e.string().min(1),serviceId:e.string().min(1),level:e.enum(["low","medium","high","critical"]),mitigationRef:e.string().min(1),ownerRef:r}),B=e.object({id:e.string().min(1),version:e.string().min(1),environments:e.array(y).min(1),runtimeTargets:e.array(S).min(1),services:e.array(g).min(1),pipelines:e.array(v).default([]),migrationWindows:e.array(u).default([]),deployments:e.array(k).default([]),releases:e.array(z).default([]),rollbacks:e.array(w).default([]),healthChecks:e.array(R).default([]),slos:e.array(h).default([]),monitors:e.array(I).default([]),alerts:e.array(O).default([]),onCall:e.array(j).default([]),escalations:e.array(C).default([]),incidents:e.array(_).default([]),postmortems:e.array(P).default([]),capacityPlans:e.array(M).default([]),costBudgets:e.array(E).default([]),secretRefs:e.array(D).default([]),operationalRisks:e.array(T).default([]),approvalRequirements:e.array(b).default([]),evidenceReceipts:e.array(x).default([])});export{r as CompanyOsOwnerRefSchema,f as CompanyOsPolicyGateRefSchema,l as CostBudgetRefSchema,O as InfraAlertSpecSchema,b as InfraApprovalRequirementSpecSchema,M as InfraCapacityPlanSpecSchema,E as InfraCostBudgetSpecSchema,k as InfraDeploymentSpecSchema,y as InfraEnvironmentRefSchema,C as InfraEscalationSpecSchema,x as InfraEvidenceReceiptSpecSchema,R as InfraHealthCheckSpecSchema,_ as InfraIncidentSpecSchema,u as InfraMigrationWindowSpecSchema,I as InfraMonitorSpecSchema,j as InfraOnCallSpecSchema,T as InfraOperationalRiskSpecSchema,B as InfraOpsSpecSchema,v as InfraPipelineSpecSchema,P as InfraPostmortemSpecSchema,z as InfraReleaseSpecSchema,w as InfraRollbackSpecSchema,S as InfraRuntimeTargetRefSchema,D as InfraSecretRefSpecSchema,g as InfraServiceRefSchema,h as InfraSloSpecSchema,o as IntegrationCapabilityRefSchema,a as JobScheduleRefSchema,d as MeteringUsageRefSchema,s as ObservabilityLogRefSchema,i as ObservabilityMetricRefSchema,p as ObservabilityTraceRefSchema,m as OrchestrationWorkflowRefSchema,n as ProgressiveDeliveryRollbackRefSchema,c as ProgressiveDeliveryRolloutRefSchema};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as e}from"zod";var f=e.object({id:e.string().min(1),kind:e.string().min(1),version:e.string().min(1).optional()}),h=f.extend({kind:e.literal("progressive_delivery_rollout")}),d=f.extend({kind:e.literal("progressive_delivery_rollback")}),m=f.extend({kind:e.literal("observability_metric")}),R=f.extend({kind:e.literal("observability_trace")}),u=f.extend({kind:e.literal("observability_log")}),y=f.extend({kind:e.literal("job_schedule")}),I=f.extend({kind:e.literal("integration_capability")}),v=f.extend({kind:e.literal("companyos_policy_gate")}),s=f.extend({kind:e.literal("companyos_owner")}),x=f.extend({kind:e.literal("orchestration_workflow")}),b=f.extend({kind:e.literal("cost_budget")}),O=f.extend({kind:e.literal("metering_usage")}),k=e.object({id:e.string().min(1),name:e.string().min(1),tier:e.enum(["development","preview","staging","production"]),ownerRef:s}),w=e.object({id:e.string().min(1),type:e.enum(["web","api","worker","job","database","edge","custom"]),capabilityRefs:e.array(I).default([])}),z=e.object({id:e.string().min(1),name:e.string().min(1),runtimeTargetId:e.string().min(1),ownerRef:s}),C=e.object({id:e.string().min(1),serviceId:e.string().min(1),kind:e.enum(["health","readiness","liveness"]),metricRef:m}),_=e.object({id:e.string().min(1),serviceId:e.string().min(1),objective:e.string().min(1),threshold:e.string().min(1),metricRefs:e.array(m).min(1),ownerRef:s}),j=e.object({id:e.string().min(1),serviceId:e.string().min(1),metricRefs:e.array(m).min(1),traceRefs:e.array(R).default([]),logRefs:e.array(u).default([])}),P=e.object({id:e.string().min(1),sourceRef:e.string().min(1),action:e.string().min(1),actorRef:s,targetRef:e.string().min(1),outcome:e.enum(["planned","approved","succeeded","failed","mitigated"]),observedAt:e.string().min(1)}),E=e.object({id:e.string().min(1),policyGateRef:v,ownerRef:s,requiredFor:e.array(e.string().min(1)).min(1)}),q=e.object({id:e.string().min(1),jobScheduleRef:y,capabilityRefs:e.array(I).default([]),ownerRef:s}),V=e.object({id:e.string().min(1),serviceId:e.string().min(1),windowRef:e.string().min(1),rollbackRef:d,ownerRef:s,evidenceReceiptIds:e.array(e.string().min(1)).min(1)}),D=e.object({id:e.string().min(1),environmentId:e.string().min(1),serviceId:e.string().min(1),pipelineId:e.string().min(1),rolloutRef:h,rollbackRef:d,approvalRequirementId:e.string().min(1),healthCheckIds:e.array(e.string().min(1)).min(1),sloIds:e.array(e.string().min(1)).min(1),evidenceReceiptIds:e.array(e.string().min(1)).min(1),highRisk:e.boolean().default(!1)}),M=e.object({id:e.string().min(1),deploymentId:e.string().min(1),rollbackRef:d,priorEvidenceReceiptId:e.string().min(1)}),T=e.object({id:e.string().min(1),deploymentId:e.string().min(1),version:e.string().min(1),orchestrationRef:x}),A=e.object({id:e.string().min(1),serviceId:e.string().min(1),severity:e.enum(["low","medium","high","critical"]),monitorId:e.string().min(1),sloId:e.string().min(1)}),W=e.object({id:e.string().min(1),serviceId:e.string().min(1),ownerRef:s,scheduleRef:y}),B=e.object({id:e.string().min(1),incidentId:e.string().min(1),onCallId:e.string().min(1),ownerRef:s}),L=e.object({id:e.string().min(1),incidentId:e.string().min(1),ownerRef:s,evidenceReceiptIds:e.array(e.string().min(1)).min(1),followUpRefs:e.array(e.string().min(1)).min(1)}),G=e.object({id:e.string().min(1),alertId:e.string().min(1),environmentId:e.string().min(1),serviceId:e.string().min(1),severity:e.enum(["low","medium","high","critical"]),escalationId:e.string().min(1),mitigationOwnerRef:s,postmortemId:e.string().min(1),evidenceReceiptIds:e.array(e.string().min(1)).min(1)}),J=e.object({id:e.string().min(1),serviceId:e.string().min(1),expectedLoad:e.string().min(1),thresholds:e.array(e.string().min(1)).min(1),ownerRef:s,evidenceReceiptIds:e.array(e.string().min(1)).min(1)}),N=e.object({id:e.string().min(1),serviceId:e.string().min(1),budgetRef:b,usageRef:O,thresholds:e.array(e.string().min(1)).min(1),ownerRef:s}),U=e.object({id:e.string().min(1),purpose:e.string().min(1),ref:e.string().min(1),ownerRef:s}),H=e.object({id:e.string().min(1),serviceId:e.string().min(1),level:e.enum(["low","medium","high","critical"]),mitigationRef:e.string().min(1),ownerRef:s}),S=e.object({id:e.string().min(1),version:e.string().min(1),environments:e.array(k).min(1),runtimeTargets:e.array(w).min(1),services:e.array(z).min(1),pipelines:e.array(q).default([]),migrationWindows:e.array(V).default([]),deployments:e.array(D).default([]),releases:e.array(T).default([]),rollbacks:e.array(M).default([]),healthChecks:e.array(C).default([]),slos:e.array(_).default([]),monitors:e.array(j).default([]),alerts:e.array(A).default([]),onCall:e.array(W).default([]),escalations:e.array(B).default([]),incidents:e.array(G).default([]),postmortems:e.array(L).default([]),capacityPlans:e.array(J).default([]),costBudgets:e.array(N).default([]),secretRefs:e.array(U).default([]),operationalRisks:e.array(H).default([]),approvalRequirements:e.array(E).default([]),evidenceReceipts:e.array(P).default([])});class g extends Error{issues;constructor(r,i){super(r);this.issues=i;this.name="InfraOpsValidationError"}}var F=/(api[_-]?key|secret[_-]?access|private[_-]?key|token=|password=|bearer\s+[a-z0-9]|sk-[a-z0-9])/i,K=/(aws_access_key|gcp_service_account|azure_client_secret|vercel_token|cloudflare_api_token|kubeconfig|providerConfig|provider_config)/i;function Q(r){let i=S.safeParse(r);if(!i.success)return i.error.issues.map((a)=>({level:"error",message:a.message,context:{path:a.path.join(".")}}));let t=[],n=new Set(r.evidenceReceipts.map((a)=>a.id)),p=new Set(r.deployments.map((a)=>a.id));return X(r,t),Y(r,n,t),Z(r,p,n,t),ee(r,n,t),re(r,n,t),te(r,n,t),ne(r,t),t}function se(r){let i=Q(r);if(i.filter((n)=>n.level==="error").length>0)throw new g(`Infra-ops spec ${r.id} is invalid`,i)}function X(r,i){let t=JSON.stringify(r);if(F.test(t))i.push({level:"error",message:"Infra-ops specs must not contain secret values or credentials."});if(K.test(t))i.push({level:"error",message:"Infra-ops specs must not contain provider config material."});for(let n of r.secretRefs)if(!n.ref.startsWith("secretref:"))i.push({level:"error",message:`Secret ref ${n.id} must use a redacted secretref: identifier.`})}function Y(r,i,t){let n=new Set(r.approvalRequirements.map((o)=>o.id)),p=new Set(r.healthChecks.map((o)=>o.id)),a=new Set(r.slos.map((o)=>o.id));for(let o of r.deployments){if(!n.has(o.approvalRequirementId))t.push(c(`Deployment ${o.id} requires approval.`));if(!o.healthCheckIds.some((l)=>p.has(l)))t.push(c(`Deployment ${o.id} requires health checks.`));if(!o.sloIds.some((l)=>a.has(l)))t.push(c(`Deployment ${o.id} requires SLO refs.`));if(o.highRisk&&!r.releases.some((l)=>l.deploymentId===o.id))t.push(c(`Deployment ${o.id} requires orchestration context.`));for(let l of o.evidenceReceiptIds)if(!i.has(l))t.push(c(`Deployment ${o.id} references missing evidence.`))}}function Z(r,i,t,n){for(let p of r.rollbacks){if(!i.has(p.deploymentId))n.push(c(`Rollback ${p.id} references missing deployment.`));if(!t.has(p.priorEvidenceReceiptId))n.push(c(`Rollback ${p.id} requires prior deployment evidence.`))}}function ee(r,i,t){for(let n of r.migrationWindows)for(let p of n.evidenceReceiptIds)if(!i.has(p))t.push(c(`Migration window ${n.id} references missing evidence.`))}function re(r,i,t){let n=new Set(r.escalations.map((a)=>a.id)),p=new Set(r.postmortems.map((a)=>a.id));for(let a of r.incidents){if(!n.has(a.escalationId))t.push(c(`Incident ${a.id} requires escalation.`));if(!p.has(a.postmortemId))t.push(c(`Incident ${a.id} requires postmortem evidence.`));for(let o of a.evidenceReceiptIds)if(!i.has(o))t.push(c(`Incident ${a.id} references missing evidence.`))}}function te(r,i,t){for(let n of r.costBudgets)if(n.thresholds.length===0)t.push(c(`Cost budget ${n.id} requires thresholds.`));for(let n of r.capacityPlans){if(n.thresholds.length===0||n.expectedLoad.length===0)t.push(c(`Capacity plan ${n.id} requires load thresholds.`));for(let p of n.evidenceReceiptIds)if(!i.has(p))t.push(c(`Capacity plan ${n.id} references missing evidence.`))}}function ne(r,i){for(let t of r.evidenceReceipts)if(!t.sourceRef||!t.action||!t.targetRef)i.push(c(`Evidence receipt ${t.id} is incomplete.`))}function c(r){return{level:"error",message:r}}export{g as InfraOpsValidationError,se as assertInfraOpsSpecValid,Q as validateInfraOpsSpec};
|