@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.
Files changed (64) hide show
  1. package/README.md +61 -0
  2. package/dist/fixtures-deployment.d.ts +249 -0
  3. package/dist/fixtures-deployment.js +2 -0
  4. package/dist/fixtures-incident.d.ts +219 -0
  5. package/dist/fixtures-incident.js +2 -0
  6. package/dist/fixtures.d.ts +2 -0
  7. package/dist/fixtures.js +2 -0
  8. package/dist/index.d.ts +8 -0
  9. package/dist/index.js +2 -0
  10. package/dist/infra-ops-spec.test.d.ts +1 -0
  11. package/dist/intent-architecture.d.ts +104 -0
  12. package/dist/intent-architecture.js +2 -0
  13. package/dist/intent-canonical.d.ts +4 -0
  14. package/dist/intent-canonical.js +2 -0
  15. package/dist/intent-comparison.d.ts +8 -0
  16. package/dist/intent-comparison.js +2 -0
  17. package/dist/intent-core.d.ts +98 -0
  18. package/dist/intent-core.js +2 -0
  19. package/dist/intent-decisions.d.ts +72 -0
  20. package/dist/intent-decisions.js +2 -0
  21. package/dist/intent-fixtures-decision.d.ts +4 -0
  22. package/dist/intent-fixtures-decision.js +2 -0
  23. package/dist/intent-fixtures.d.ts +3 -0
  24. package/dist/intent-fixtures.js +2 -0
  25. package/dist/intent-plans.d.ts +64 -0
  26. package/dist/intent-plans.js +2 -0
  27. package/dist/intent-types.d.ts +284 -0
  28. package/dist/intent-types.js +2 -0
  29. package/dist/intent-validation-bindings.d.ts +3 -0
  30. package/dist/intent-validation-bindings.js +2 -0
  31. package/dist/intent-validation-refs.d.ts +7 -0
  32. package/dist/intent-validation-refs.js +2 -0
  33. package/dist/intent-validation-rules.d.ts +3 -0
  34. package/dist/intent-validation-rules.js +2 -0
  35. package/dist/intent-validation-shared.d.ts +9 -0
  36. package/dist/intent-validation-shared.js +2 -0
  37. package/dist/intent-validation.d.ts +10 -0
  38. package/dist/intent-validation.js +2 -0
  39. package/dist/intent.test.d.ts +1 -0
  40. package/dist/node/fixtures-deployment.js +1 -0
  41. package/dist/node/fixtures-incident.js +1 -0
  42. package/dist/node/fixtures.js +1 -0
  43. package/dist/node/index.js +1 -0
  44. package/dist/node/intent-architecture.js +1 -0
  45. package/dist/node/intent-canonical.js +1 -0
  46. package/dist/node/intent-comparison.js +1 -0
  47. package/dist/node/intent-core.js +1 -0
  48. package/dist/node/intent-decisions.js +1 -0
  49. package/dist/node/intent-fixtures-decision.js +1 -0
  50. package/dist/node/intent-fixtures.js +1 -0
  51. package/dist/node/intent-plans.js +1 -0
  52. package/dist/node/intent-types.js +1 -0
  53. package/dist/node/intent-validation-bindings.js +1 -0
  54. package/dist/node/intent-validation-refs.js +1 -0
  55. package/dist/node/intent-validation-rules.js +1 -0
  56. package/dist/node/intent-validation-shared.js +1 -0
  57. package/dist/node/intent-validation.js +1 -0
  58. package/dist/node/types.js +1 -0
  59. package/dist/node/validation.js +1 -0
  60. package/dist/types.d.ts +748 -0
  61. package/dist/types.js +2 -0
  62. package/dist/validation.d.ts +13 -0
  63. package/dist/validation.js +2 -0
  64. package/package.json +421 -0
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ 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,13 @@
1
+ import { type InfraOpsSpec } from './types.js';
2
+ export type InfraOpsValidationLevel = 'error' | 'warning';
3
+ export interface InfraOpsValidationIssue {
4
+ level: InfraOpsValidationLevel;
5
+ message: string;
6
+ context?: Record<string, unknown>;
7
+ }
8
+ export declare class InfraOpsValidationError extends Error {
9
+ readonly issues: InfraOpsValidationIssue[];
10
+ constructor(message: string, issues: InfraOpsValidationIssue[]);
11
+ }
12
+ export declare function validateInfraOpsSpec(spec: InfraOpsSpec): InfraOpsValidationIssue[];
13
+ export declare function assertInfraOpsSpecValid(spec: InfraOpsSpec): void;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ 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};
package/package.json ADDED
@@ -0,0 +1,421 @@
1
+ {
2
+ "name": "@lssm/lib.infra-ops-spec",
3
+ "version": "2.0.1",
4
+ "description": "Provider-neutral infrastructure operations contracts and evidence for autonomous-company deployment and incident loops.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
14
+ "publish:pkg:canary": "bun publish:pkg --tag canary",
15
+ "build": "contractspec-bun-build build",
16
+ "build:bundle": "contractspec-bun-build transpile",
17
+ "build:types": "contractspec-bun-build types",
18
+ "dev": "contractspec-bun-build dev",
19
+ "clean": "rimraf dist .turbo",
20
+ "lint": "bun lint:fix",
21
+ "lint:fix": "node ../../../scripts/biome.cjs check --write .",
22
+ "lint:check": "node ../../../scripts/biome.cjs check .",
23
+ "test": "bun test",
24
+ "prebuild": "contractspec-bun-build prebuild",
25
+ "typecheck": "tsgo --noEmit"
26
+ },
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "bun": "./dist/index.js",
31
+ "node": "./dist/node/index.js",
32
+ "default": "./dist/index.js"
33
+ },
34
+ "./fixtures": {
35
+ "types": "./dist/fixtures.d.ts",
36
+ "bun": "./dist/fixtures.js",
37
+ "node": "./dist/node/fixtures.js",
38
+ "default": "./dist/fixtures.js"
39
+ },
40
+ "./fixtures-deployment": {
41
+ "types": "./dist/fixtures-deployment.d.ts",
42
+ "bun": "./dist/fixtures-deployment.js",
43
+ "node": "./dist/node/fixtures-deployment.js",
44
+ "default": "./dist/fixtures-deployment.js"
45
+ },
46
+ "./fixtures-incident": {
47
+ "types": "./dist/fixtures-incident.d.ts",
48
+ "bun": "./dist/fixtures-incident.js",
49
+ "node": "./dist/node/fixtures-incident.js",
50
+ "default": "./dist/fixtures-incident.js"
51
+ },
52
+ "./intent-architecture": {
53
+ "types": "./dist/intent-architecture.d.ts",
54
+ "bun": "./dist/intent-architecture.js",
55
+ "node": "./dist/node/intent-architecture.js",
56
+ "default": "./dist/intent-architecture.js"
57
+ },
58
+ "./intent-canonical": {
59
+ "types": "./dist/intent-canonical.d.ts",
60
+ "bun": "./dist/intent-canonical.js",
61
+ "node": "./dist/node/intent-canonical.js",
62
+ "default": "./dist/intent-canonical.js"
63
+ },
64
+ "./intent-comparison": {
65
+ "types": "./dist/intent-comparison.d.ts",
66
+ "bun": "./dist/intent-comparison.js",
67
+ "node": "./dist/node/intent-comparison.js",
68
+ "default": "./dist/intent-comparison.js"
69
+ },
70
+ "./intent-core": {
71
+ "types": "./dist/intent-core.d.ts",
72
+ "bun": "./dist/intent-core.js",
73
+ "node": "./dist/node/intent-core.js",
74
+ "default": "./dist/intent-core.js"
75
+ },
76
+ "./intent-decisions": {
77
+ "types": "./dist/intent-decisions.d.ts",
78
+ "bun": "./dist/intent-decisions.js",
79
+ "node": "./dist/node/intent-decisions.js",
80
+ "default": "./dist/intent-decisions.js"
81
+ },
82
+ "./intent-fixtures": {
83
+ "types": "./dist/intent-fixtures.d.ts",
84
+ "bun": "./dist/intent-fixtures.js",
85
+ "node": "./dist/node/intent-fixtures.js",
86
+ "default": "./dist/intent-fixtures.js"
87
+ },
88
+ "./intent-fixtures-decision": {
89
+ "types": "./dist/intent-fixtures-decision.d.ts",
90
+ "bun": "./dist/intent-fixtures-decision.js",
91
+ "node": "./dist/node/intent-fixtures-decision.js",
92
+ "default": "./dist/intent-fixtures-decision.js"
93
+ },
94
+ "./intent-plans": {
95
+ "types": "./dist/intent-plans.d.ts",
96
+ "bun": "./dist/intent-plans.js",
97
+ "node": "./dist/node/intent-plans.js",
98
+ "default": "./dist/intent-plans.js"
99
+ },
100
+ "./intent-types": {
101
+ "types": "./dist/intent-types.d.ts",
102
+ "bun": "./dist/intent-types.js",
103
+ "node": "./dist/node/intent-types.js",
104
+ "default": "./dist/intent-types.js"
105
+ },
106
+ "./intent-validation": {
107
+ "types": "./dist/intent-validation.d.ts",
108
+ "bun": "./dist/intent-validation.js",
109
+ "node": "./dist/node/intent-validation.js",
110
+ "default": "./dist/intent-validation.js"
111
+ },
112
+ "./intent-validation-bindings": {
113
+ "types": "./dist/intent-validation-bindings.d.ts",
114
+ "bun": "./dist/intent-validation-bindings.js",
115
+ "node": "./dist/node/intent-validation-bindings.js",
116
+ "default": "./dist/intent-validation-bindings.js"
117
+ },
118
+ "./intent-validation-refs": {
119
+ "types": "./dist/intent-validation-refs.d.ts",
120
+ "bun": "./dist/intent-validation-refs.js",
121
+ "node": "./dist/node/intent-validation-refs.js",
122
+ "default": "./dist/intent-validation-refs.js"
123
+ },
124
+ "./intent-validation-rules": {
125
+ "types": "./dist/intent-validation-rules.d.ts",
126
+ "bun": "./dist/intent-validation-rules.js",
127
+ "node": "./dist/node/intent-validation-rules.js",
128
+ "default": "./dist/intent-validation-rules.js"
129
+ },
130
+ "./intent-validation-shared": {
131
+ "types": "./dist/intent-validation-shared.d.ts",
132
+ "bun": "./dist/intent-validation-shared.js",
133
+ "node": "./dist/node/intent-validation-shared.js",
134
+ "default": "./dist/intent-validation-shared.js"
135
+ },
136
+ "./types": {
137
+ "types": "./dist/types.d.ts",
138
+ "bun": "./dist/types.js",
139
+ "node": "./dist/node/types.js",
140
+ "default": "./dist/types.js"
141
+ },
142
+ "./validation": {
143
+ "types": "./dist/validation.d.ts",
144
+ "bun": "./dist/validation.js",
145
+ "node": "./dist/node/validation.js",
146
+ "default": "./dist/validation.js"
147
+ }
148
+ },
149
+ "dependencies": {
150
+ "zod": "^4.5.4",
151
+ "@lssm/lib.contracts-spec": "^17.3.2"
152
+ },
153
+ "devDependencies": {
154
+ "@lssm-tech/tool.bun": "5.0.3",
155
+ "@lssm-tech/tool.typescript": "5.0.1",
156
+ "typescript": "^7.0.2"
157
+ },
158
+ "publishConfig": {
159
+ "access": "public",
160
+ "registry": "https://registry.npmjs.org",
161
+ "exports": {
162
+ ".": {
163
+ "types": "./dist/index.d.ts",
164
+ "bun": "./dist/index.js",
165
+ "node": "./dist/node/index.js",
166
+ "default": "./dist/index.js"
167
+ },
168
+ "./fixtures": {
169
+ "types": "./dist/fixtures.d.ts",
170
+ "bun": "./dist/fixtures.js",
171
+ "node": "./dist/node/fixtures.js",
172
+ "default": "./dist/fixtures.js"
173
+ },
174
+ "./fixtures-deployment": {
175
+ "types": "./dist/fixtures-deployment.d.ts",
176
+ "bun": "./dist/fixtures-deployment.js",
177
+ "node": "./dist/node/fixtures-deployment.js",
178
+ "default": "./dist/fixtures-deployment.js"
179
+ },
180
+ "./fixtures-incident": {
181
+ "types": "./dist/fixtures-incident.d.ts",
182
+ "bun": "./dist/fixtures-incident.js",
183
+ "node": "./dist/node/fixtures-incident.js",
184
+ "default": "./dist/fixtures-incident.js"
185
+ },
186
+ "./intent-architecture": {
187
+ "types": "./dist/intent-architecture.d.ts",
188
+ "bun": "./dist/intent-architecture.js",
189
+ "node": "./dist/node/intent-architecture.js",
190
+ "default": "./dist/intent-architecture.js"
191
+ },
192
+ "./intent-canonical": {
193
+ "types": "./dist/intent-canonical.d.ts",
194
+ "bun": "./dist/intent-canonical.js",
195
+ "node": "./dist/node/intent-canonical.js",
196
+ "default": "./dist/intent-canonical.js"
197
+ },
198
+ "./intent-comparison": {
199
+ "types": "./dist/intent-comparison.d.ts",
200
+ "bun": "./dist/intent-comparison.js",
201
+ "node": "./dist/node/intent-comparison.js",
202
+ "default": "./dist/intent-comparison.js"
203
+ },
204
+ "./intent-core": {
205
+ "types": "./dist/intent-core.d.ts",
206
+ "bun": "./dist/intent-core.js",
207
+ "node": "./dist/node/intent-core.js",
208
+ "default": "./dist/intent-core.js"
209
+ },
210
+ "./intent-decisions": {
211
+ "types": "./dist/intent-decisions.d.ts",
212
+ "bun": "./dist/intent-decisions.js",
213
+ "node": "./dist/node/intent-decisions.js",
214
+ "default": "./dist/intent-decisions.js"
215
+ },
216
+ "./intent-fixtures": {
217
+ "types": "./dist/intent-fixtures.d.ts",
218
+ "bun": "./dist/intent-fixtures.js",
219
+ "node": "./dist/node/intent-fixtures.js",
220
+ "default": "./dist/intent-fixtures.js"
221
+ },
222
+ "./intent-fixtures-decision": {
223
+ "types": "./dist/intent-fixtures-decision.d.ts",
224
+ "bun": "./dist/intent-fixtures-decision.js",
225
+ "node": "./dist/node/intent-fixtures-decision.js",
226
+ "default": "./dist/intent-fixtures-decision.js"
227
+ },
228
+ "./intent-plans": {
229
+ "types": "./dist/intent-plans.d.ts",
230
+ "bun": "./dist/intent-plans.js",
231
+ "node": "./dist/node/intent-plans.js",
232
+ "default": "./dist/intent-plans.js"
233
+ },
234
+ "./intent-types": {
235
+ "types": "./dist/intent-types.d.ts",
236
+ "bun": "./dist/intent-types.js",
237
+ "node": "./dist/node/intent-types.js",
238
+ "default": "./dist/intent-types.js"
239
+ },
240
+ "./intent-validation": {
241
+ "types": "./dist/intent-validation.d.ts",
242
+ "bun": "./dist/intent-validation.js",
243
+ "node": "./dist/node/intent-validation.js",
244
+ "default": "./dist/intent-validation.js"
245
+ },
246
+ "./intent-validation-bindings": {
247
+ "types": "./dist/intent-validation-bindings.d.ts",
248
+ "bun": "./dist/intent-validation-bindings.js",
249
+ "node": "./dist/node/intent-validation-bindings.js",
250
+ "default": "./dist/intent-validation-bindings.js"
251
+ },
252
+ "./intent-validation-refs": {
253
+ "types": "./dist/intent-validation-refs.d.ts",
254
+ "bun": "./dist/intent-validation-refs.js",
255
+ "node": "./dist/node/intent-validation-refs.js",
256
+ "default": "./dist/intent-validation-refs.js"
257
+ },
258
+ "./intent-validation-rules": {
259
+ "types": "./dist/intent-validation-rules.d.ts",
260
+ "bun": "./dist/intent-validation-rules.js",
261
+ "node": "./dist/node/intent-validation-rules.js",
262
+ "default": "./dist/intent-validation-rules.js"
263
+ },
264
+ "./intent-validation-shared": {
265
+ "types": "./dist/intent-validation-shared.d.ts",
266
+ "bun": "./dist/intent-validation-shared.js",
267
+ "node": "./dist/node/intent-validation-shared.js",
268
+ "default": "./dist/intent-validation-shared.js"
269
+ },
270
+ "./types": {
271
+ "types": "./dist/types.d.ts",
272
+ "bun": "./dist/types.js",
273
+ "node": "./dist/node/types.js",
274
+ "default": "./dist/types.js"
275
+ },
276
+ "./validation": {
277
+ "types": "./dist/validation.d.ts",
278
+ "bun": "./dist/validation.js",
279
+ "node": "./dist/node/validation.js",
280
+ "default": "./dist/validation.js"
281
+ }
282
+ }
283
+ },
284
+ "repository": {
285
+ "type": "git",
286
+ "url": "https://github.com/lssm-tech/contractspec.git",
287
+ "directory": "packages/libs/infra-ops-spec"
288
+ },
289
+ "homepage": "https://contractspec.io",
290
+ "contractspec": {
291
+ "catalog": {
292
+ "family": "contracts",
293
+ "kind": "library",
294
+ "status": "active",
295
+ "adoptionMode": "adoptable",
296
+ "stability": "experimental",
297
+ "platforms": [
298
+ "server"
299
+ ],
300
+ "runtimes": [
301
+ "node"
302
+ ],
303
+ "entrypoints": [
304
+ ".",
305
+ "./fixtures",
306
+ "./fixtures-deployment",
307
+ "./fixtures-incident",
308
+ "./intent-architecture",
309
+ "./intent-canonical",
310
+ "./intent-comparison",
311
+ "./intent-core",
312
+ "./intent-decisions",
313
+ "./intent-fixtures",
314
+ "./intent-fixtures-decision",
315
+ "./intent-plans",
316
+ "./intent-types",
317
+ "./intent-validation",
318
+ "./intent-validation-bindings",
319
+ "./intent-validation-refs",
320
+ "./intent-validation-rules",
321
+ "./intent-validation-shared",
322
+ "./types",
323
+ "./validation"
324
+ ],
325
+ "documentation": [
326
+ {
327
+ "title": "Lib Infra Ops Spec documentation",
328
+ "url": "https://www.npmjs.com/package/%40lssm%2Flib.infra-ops-spec",
329
+ "kind": "readme"
330
+ }
331
+ ],
332
+ "examples": [],
333
+ "replacements": [],
334
+ "capabilities": [
335
+ {
336
+ "id": "package.lssm.tech.lib.infra.ops.spec",
337
+ "title": "Lib Infra Ops Spec",
338
+ "description": "Provider-neutral infrastructure operations contracts and evidence for autonomous-company deployment and incident loops.",
339
+ "status": "active",
340
+ "useCases": [
341
+ "Adopt provider-neutral infrastructure operations contracts and evidence for autonomous-company deployment and incident loops"
342
+ ],
343
+ "aliases": [
344
+ "lib",
345
+ "infra",
346
+ "ops",
347
+ "spec"
348
+ ],
349
+ "pythonEquivalents": [],
350
+ "canonicalImports": [
351
+ {
352
+ "from": "@lssm/lib.infra-ops-spec",
353
+ "symbols": []
354
+ },
355
+ {
356
+ "from": "@lssm/lib.infra-ops-spec/fixtures",
357
+ "symbols": []
358
+ },
359
+ {
360
+ "from": "@lssm/lib.infra-ops-spec/fixtures-deployment",
361
+ "symbols": []
362
+ },
363
+ {
364
+ "from": "@lssm/lib.infra-ops-spec/fixtures-incident",
365
+ "symbols": []
366
+ },
367
+ {
368
+ "from": "@lssm/lib.infra-ops-spec/intent-architecture",
369
+ "symbols": []
370
+ },
371
+ {
372
+ "from": "@lssm/lib.infra-ops-spec/intent-canonical",
373
+ "symbols": []
374
+ },
375
+ {
376
+ "from": "@lssm/lib.infra-ops-spec/intent-comparison",
377
+ "symbols": []
378
+ },
379
+ {
380
+ "from": "@lssm/lib.infra-ops-spec/intent-core",
381
+ "symbols": []
382
+ },
383
+ {
384
+ "from": "@lssm/lib.infra-ops-spec/intent-decisions",
385
+ "symbols": []
386
+ },
387
+ {
388
+ "from": "@lssm/lib.infra-ops-spec/intent-fixtures",
389
+ "symbols": []
390
+ },
391
+ {
392
+ "from": "@lssm/lib.infra-ops-spec/intent-fixtures-decision",
393
+ "symbols": []
394
+ },
395
+ {
396
+ "from": "@lssm/lib.infra-ops-spec/intent-plans",
397
+ "symbols": []
398
+ }
399
+ ],
400
+ "constraints": {
401
+ "platforms": [
402
+ "server"
403
+ ],
404
+ "runtimes": [
405
+ "node"
406
+ ],
407
+ "avoidWhen": [
408
+ "The @lssm/lib.infra-ops-spec package constraints do not match the target runtime or platform."
409
+ ],
410
+ "requires": [
411
+ "TypeScript"
412
+ ]
413
+ },
414
+ "alternatives": [],
415
+ "relationships": [],
416
+ "resolutionPriority": 50
417
+ }
418
+ ]
419
+ }
420
+ }
421
+ }