@lssm/lib.evolution 0.0.0-canary-20251220030446 → 0.0.0-canary-20251221114240

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.
@@ -1,10 +1,10 @@
1
1
  import { EvolutionConfig, IntentPattern, OperationCoordinate, SpecSuggestion, SpecSuggestionProposal, SuggestionStatus } from "../types.js";
2
- import { ContractSpec, ResourceRefDescriptor } from "@lssm/lib.contracts";
2
+ import { OperationSpec, ResourceRefDescriptor } from "@lssm/lib.contracts";
3
3
  import { AnySchemaModel } from "@lssm/lib.schema";
4
4
  import { Logger } from "@lssm/lib.observability";
5
5
 
6
6
  //#region src/generator/spec-generator.d.ts
7
- type AnyContract = ContractSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>;
7
+ type AnyContract = OperationSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>;
8
8
  interface SpecGeneratorOptions {
9
9
  config?: EvolutionConfig;
10
10
  logger?: Logger;
@@ -23,7 +23,7 @@ interface GenerateSpecOptions {
23
23
  tags?: string[];
24
24
  createdBy?: string;
25
25
  }
26
- type SpecPatch = Partial<ContractSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>> & {
26
+ type SpecPatch = Partial<OperationSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>> & {
27
27
  meta?: Partial<AnyContract['meta']>;
28
28
  };
29
29
  declare class SpecGenerator {
@@ -1 +1 @@
1
- {"version":3,"file":"spec-generator.d.ts","names":[],"sources":["../../src/generator/spec-generator.ts"],"sourcesContent":[],"mappings":";;;;;;KAaK,WAAA,GAAc,aACjB,gBACA,iBAAiB;UAGF,oBAAA;EALZ,MAAA,CAAA,EAMM,eANK;EACd,MAAA,CAAA,EAMS,MANT;EACA,KAAA,CAAA,EAAA,GAAA,GAMc,IANd;EAAiB,OAAA,CAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,GAO6B,WAP7B,GAAA,SAAA;;AAFY,UAYd,mBAAA,CAZc;EAKd,OAAA,CAAA,EAAA,MAAA;EACN,SAAA,CAAA,EAAA,MAAA;EACA,UAAA,CAAA,EAQI,sBARJ,CAAA,YAAA,CAAA;EACK,IAAA,CAAA,EAQP,sBARO,CAAA,MAAA,CAAA;EACgC,IAAA,CAAA,EAQvC,WARuC;EAAW,IAAA,CAAA,EAAA,MAAA;EAG1C,QAAA,CAAA,EAOJ,MAPI,CAAA,MAAmB,EAAA,OAAA,CAAA;EAGrB,MAAA,CAAA,EAKJ,gBALI;EACN,IAAA,CAAA,EAAA,MAAA,EAAA;EACA,SAAA,CAAA,EAAA,MAAA;;AAGE,KAKC,SAAA,GAAY,OALb,CAMT,YANS,CAMI,cANJ,EAMoB,cANpB,GAMqC,qBANrC,CAAA,OAAA,CAAA,CAAA,CAAA,GAAA;EAAgB,IAAA,CAAA,EAOd,OAPc,CAON,WAPM,CAAA,MAAA,CAAA,CAAA;AAK3B,CAAA;AACe,cAGF,aAAA,CAHE;EAAgB,iBAAA,MAAA;EAAiB,iBAAA,MAAA;EAA9C,iBAAA,KAAA;EADsB,iBAAA,OAAA;EAEH,WAAA,CAAA,OAAA,CAAA,EAQE,oBARF;EAAR,kBAAA,CAAA,MAAA,EAgBD,aAhBC,EAAA,OAAA,CAAA,EAiBA,mBAjBA,CAAA,EAkBR,cAlBQ;EAAO,eAAA,CAAA,SAAA,EA2DL,mBA3DK,EAAA,KAAA,EA4DT,SA5DS,EAAA,MAAA,EA6DR,aA7DQ,EAAA,OAAA,CAAA,EA8DP,IA9DO,CA8DF,mBA9DE,EAAA,MAAA,CAAA,CAAA,EA8D+B,cA9D/B;EAEP,kBAAa,CAAA,UAAA,EA4EV,cA5EU,EAAA,MAAA,CAAA,EA6Ed,eA7Ec,CAAA,EAAA;IAMH,EAAA,EAAA,OAAA;IAQX,OAAA,EAAA,MAAA,EAAA;EACC,CAAA;EACR,QAAA,YAAA;EAyCU,QAAA,gBAAA;EACJ,QAAA,eAAA"}
1
+ {"version":3,"file":"spec-generator.d.ts","names":[],"sources":["../../src/generator/spec-generator.ts"],"sourcesContent":[],"mappings":";;;;;;KAaK,WAAA,GAAc,cACjB,gBACA,iBAAiB;UAGF,oBAAA;EALZ,MAAA,CAAA,EAMM,eANK;EACd,MAAA,CAAA,EAMS,MANT;EACA,KAAA,CAAA,EAAA,GAAA,GAMc,IANd;EAAiB,OAAA,CAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,GAO6B,WAP7B,GAAA,SAAA;;AAFa,UAYf,mBAAA,CAZe;EAKf,OAAA,CAAA,EAAA,MAAA;EACN,SAAA,CAAA,EAAA,MAAA;EACA,UAAA,CAAA,EAQI,sBARJ,CAAA,YAAA,CAAA;EACK,IAAA,CAAA,EAQP,sBARO,CAAA,MAAA,CAAA;EACgC,IAAA,CAAA,EAQvC,WARuC;EAAW,IAAA,CAAA,EAAA,MAAA;EAG1C,QAAA,CAAA,EAOJ,MAPI,CAAA,MAAmB,EAAA,OAAA,CAAA;EAGrB,MAAA,CAAA,EAKJ,gBALI;EACN,IAAA,CAAA,EAAA,MAAA,EAAA;EACA,SAAA,CAAA,EAAA,MAAA;;AAGE,KAKC,SAAA,GAAY,OALb,CAMT,aANS,CAMK,cANL,EAMqB,cANrB,GAMsC,qBANtC,CAAA,OAAA,CAAA,CAAA,CAAA,GAAA;EAAgB,IAAA,CAAA,EAOd,OAPc,CAON,WAPM,CAAA,MAAA,CAAA,CAAA;AAK3B,CAAA;AACgB,cAGH,aAAA,CAHG;EAAgB,iBAAA,MAAA;EAAiB,iBAAA,MAAA;EAA/C,iBAAA,KAAA;EADsB,iBAAA,OAAA;EAEH,WAAA,CAAA,OAAA,CAAA,EAQE,oBARF;EAAR,kBAAA,CAAA,MAAA,EAgBD,aAhBC,EAAA,OAAA,CAAA,EAiBA,mBAjBA,CAAA,EAkBR,cAlBQ;EAAO,eAAA,CAAA,SAAA,EA2DL,mBA3DK,EAAA,KAAA,EA4DT,SA5DS,EAAA,MAAA,EA6DR,aA7DQ,EAAA,OAAA,CAAA,EA8DP,IA9DO,CA8DF,mBA9DE,EAAA,MAAA,CAAA,CAAA,EA8D+B,cA9D/B;EAEP,kBAAa,CAAA,UAAA,EA4EV,cA5EU,EAAA,MAAA,CAAA,EA6Ed,eA7Ec,CAAA,EAAA;IAMH,EAAA,EAAA,OAAA;IAQX,OAAA,EAAA,MAAA,EAAA;EACC,CAAA;EACR,QAAA,YAAA;EAyCU,QAAA,gBAAA;EACJ,QAAA,eAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-generator.js","names":["reasons: string[]"],"sources":["../../src/generator/spec-generator.ts"],"sourcesContent":["import type { ContractSpec, ResourceRefDescriptor } from '@lssm/lib.contracts';\nimport type { AnySchemaModel } from '@lssm/lib.schema';\nimport { Logger } from '@lssm/lib.observability';\nimport { randomUUID } from 'node:crypto';\nimport {\n type EvolutionConfig,\n type IntentPattern,\n type OperationCoordinate,\n type SpecSuggestion,\n type SpecSuggestionProposal,\n type SuggestionStatus,\n} from '../types';\n\ntype AnyContract = ContractSpec<\n AnySchemaModel,\n AnySchemaModel | ResourceRefDescriptor<boolean>\n>;\n\nexport interface SpecGeneratorOptions {\n config?: EvolutionConfig;\n logger?: Logger;\n clock?: () => Date;\n getSpec?: (name: string, version?: number) => AnyContract | undefined;\n}\n\nexport interface GenerateSpecOptions {\n summary?: string;\n rationale?: string;\n changeType?: SpecSuggestionProposal['changeType'];\n kind?: SpecSuggestionProposal['kind'];\n spec?: AnyContract;\n diff?: string;\n metadata?: Record<string, unknown>;\n status?: SuggestionStatus;\n tags?: string[];\n createdBy?: string;\n}\n\nexport type SpecPatch = Partial<\n ContractSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>\n> & { meta?: Partial<AnyContract['meta']> };\n\nexport class SpecGenerator {\n private readonly config: EvolutionConfig;\n private readonly logger?: Logger;\n private readonly clock: () => Date;\n private readonly getSpec?: SpecGeneratorOptions['getSpec'];\n\n constructor(options: SpecGeneratorOptions = {}) {\n this.config = options.config ?? {};\n this.logger = options.logger;\n this.clock = options.clock ?? (() => new Date());\n this.getSpec = options.getSpec;\n }\n\n generateFromIntent(\n intent: IntentPattern,\n options: GenerateSpecOptions = {}\n ): SpecSuggestion {\n const now = this.clock();\n const summary =\n options.summary ??\n `${this.intentToVerb(intent.type)} ${intent.operation?.name ?? 'operation'}`;\n const rationale =\n options.rationale ??\n [\n intent.description,\n intent.metadata?.observedValue\n ? `Observed ${intent.metadata.observedValue}`\n : undefined,\n ]\n .filter(Boolean)\n .join(' — ');\n\n const suggestion: SpecSuggestion = {\n id: randomUUID(),\n intent,\n target: intent.operation,\n proposal: {\n summary,\n rationale,\n changeType: options.changeType ?? this.inferChangeType(intent),\n kind: options.kind,\n spec: options.spec,\n diff: options.diff,\n metadata: options.metadata,\n },\n confidence: intent.confidence.score,\n priority: this.intentToPriority(intent),\n createdAt: now,\n createdBy: options.createdBy ?? 'auto-evolution',\n status: options.status ?? 'pending',\n evidence: intent.evidence,\n tags: options.tags,\n };\n return suggestion;\n }\n\n generateVariant(\n operation: OperationCoordinate,\n patch: SpecPatch,\n intent: IntentPattern,\n options: Omit<GenerateSpecOptions, 'spec'> = {}\n ) {\n if (!this.getSpec) {\n throw new Error('SpecGenerator requires getSpec() to generate variants');\n }\n const base = this.getSpec(operation.name, operation.version);\n if (!base) {\n throw new Error(\n `Cannot generate variant; spec ${operation.name}.v${operation.version} not found`\n );\n }\n const merged = mergeContract(base, patch);\n return this.generateFromIntent(intent, { ...options, spec: merged });\n }\n\n validateSuggestion(\n suggestion: SpecSuggestion,\n config: EvolutionConfig = this.config\n ) {\n const reasons: string[] = [];\n if (\n config.minConfidence != null &&\n suggestion.confidence < config.minConfidence\n ) {\n reasons.push(\n `Confidence ${suggestion.confidence.toFixed(2)} below minimum ${config.minConfidence}`\n );\n }\n if (config.requireApproval && suggestion.status === 'approved') {\n reasons.push(\n 'Suggestion cannot be auto-approved when approval is required'\n );\n }\n if (suggestion.proposal.spec && !suggestion.proposal.spec.meta?.name) {\n reasons.push('Proposal spec must include meta.name');\n }\n if (!suggestion.proposal.summary) {\n reasons.push('Proposal summary is required');\n }\n const ok = reasons.length === 0;\n if (!ok) {\n this.logger?.warn('SpecGenerator.validateSuggestion.failed', {\n suggestionId: suggestion.id,\n reasons,\n });\n }\n return { ok, reasons };\n }\n\n private intentToVerb(intent: IntentPattern['type']) {\n switch (intent) {\n case 'error-spike':\n return 'Stabilize';\n case 'latency-regression':\n return 'Optimize';\n case 'missing-operation':\n return 'Introduce';\n case 'throughput-drop':\n return 'Rebalance';\n default:\n return 'Adjust';\n }\n }\n\n private intentToPriority(intent: IntentPattern) {\n const severity = intent.confidence.score;\n if (intent.type === 'error-spike' || severity >= 0.8) return 'high';\n if (severity >= 0.5) return 'medium';\n return 'low';\n }\n\n private inferChangeType(\n intent: IntentPattern\n ): SpecSuggestionProposal['changeType'] {\n switch (intent.type) {\n case 'missing-operation':\n return 'new-spec';\n case 'schema-mismatch':\n return 'schema-update';\n case 'error-spike':\n return 'policy-update';\n default:\n return 'revision';\n }\n }\n}\n\nfunction mergeContract(base: AnyContract, patch: SpecPatch): AnyContract {\n return {\n ...base,\n ...patch,\n meta: { ...base.meta, ...patch.meta },\n io: {\n ...base.io,\n ...patch.io,\n },\n policy: {\n ...base.policy,\n ...patch.policy,\n },\n telemetry: {\n ...base.telemetry,\n ...patch.telemetry,\n },\n sideEffects: {\n ...base.sideEffects,\n ...patch.sideEffects,\n },\n } as AnyContract;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"spec-generator.js","names":["reasons: string[]"],"sources":["../../src/generator/spec-generator.ts"],"sourcesContent":["import type { OperationSpec, ResourceRefDescriptor } from '@lssm/lib.contracts';\nimport type { AnySchemaModel } from '@lssm/lib.schema';\nimport { Logger } from '@lssm/lib.observability';\nimport { randomUUID } from 'node:crypto';\nimport {\n type EvolutionConfig,\n type IntentPattern,\n type OperationCoordinate,\n type SpecSuggestion,\n type SpecSuggestionProposal,\n type SuggestionStatus,\n} from '../types';\n\ntype AnyContract = OperationSpec<\n AnySchemaModel,\n AnySchemaModel | ResourceRefDescriptor<boolean>\n>;\n\nexport interface SpecGeneratorOptions {\n config?: EvolutionConfig;\n logger?: Logger;\n clock?: () => Date;\n getSpec?: (name: string, version?: number) => AnyContract | undefined;\n}\n\nexport interface GenerateSpecOptions {\n summary?: string;\n rationale?: string;\n changeType?: SpecSuggestionProposal['changeType'];\n kind?: SpecSuggestionProposal['kind'];\n spec?: AnyContract;\n diff?: string;\n metadata?: Record<string, unknown>;\n status?: SuggestionStatus;\n tags?: string[];\n createdBy?: string;\n}\n\nexport type SpecPatch = Partial<\n OperationSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>\n> & { meta?: Partial<AnyContract['meta']> };\n\nexport class SpecGenerator {\n private readonly config: EvolutionConfig;\n private readonly logger?: Logger;\n private readonly clock: () => Date;\n private readonly getSpec?: SpecGeneratorOptions['getSpec'];\n\n constructor(options: SpecGeneratorOptions = {}) {\n this.config = options.config ?? {};\n this.logger = options.logger;\n this.clock = options.clock ?? (() => new Date());\n this.getSpec = options.getSpec;\n }\n\n generateFromIntent(\n intent: IntentPattern,\n options: GenerateSpecOptions = {}\n ): SpecSuggestion {\n const now = this.clock();\n const summary =\n options.summary ??\n `${this.intentToVerb(intent.type)} ${intent.operation?.name ?? 'operation'}`;\n const rationale =\n options.rationale ??\n [\n intent.description,\n intent.metadata?.observedValue\n ? `Observed ${intent.metadata.observedValue}`\n : undefined,\n ]\n .filter(Boolean)\n .join(' — ');\n\n const suggestion: SpecSuggestion = {\n id: randomUUID(),\n intent,\n target: intent.operation,\n proposal: {\n summary,\n rationale,\n changeType: options.changeType ?? this.inferChangeType(intent),\n kind: options.kind,\n spec: options.spec,\n diff: options.diff,\n metadata: options.metadata,\n },\n confidence: intent.confidence.score,\n priority: this.intentToPriority(intent),\n createdAt: now,\n createdBy: options.createdBy ?? 'auto-evolution',\n status: options.status ?? 'pending',\n evidence: intent.evidence,\n tags: options.tags,\n };\n return suggestion;\n }\n\n generateVariant(\n operation: OperationCoordinate,\n patch: SpecPatch,\n intent: IntentPattern,\n options: Omit<GenerateSpecOptions, 'spec'> = {}\n ) {\n if (!this.getSpec) {\n throw new Error('SpecGenerator requires getSpec() to generate variants');\n }\n const base = this.getSpec(operation.name, operation.version);\n if (!base) {\n throw new Error(\n `Cannot generate variant; spec ${operation.name}.v${operation.version} not found`\n );\n }\n const merged = mergeContract(base, patch);\n return this.generateFromIntent(intent, { ...options, spec: merged });\n }\n\n validateSuggestion(\n suggestion: SpecSuggestion,\n config: EvolutionConfig = this.config\n ) {\n const reasons: string[] = [];\n if (\n config.minConfidence != null &&\n suggestion.confidence < config.minConfidence\n ) {\n reasons.push(\n `Confidence ${suggestion.confidence.toFixed(2)} below minimum ${config.minConfidence}`\n );\n }\n if (config.requireApproval && suggestion.status === 'approved') {\n reasons.push(\n 'Suggestion cannot be auto-approved when approval is required'\n );\n }\n if (suggestion.proposal.spec && !suggestion.proposal.spec.meta?.name) {\n reasons.push('Proposal spec must include meta.name');\n }\n if (!suggestion.proposal.summary) {\n reasons.push('Proposal summary is required');\n }\n const ok = reasons.length === 0;\n if (!ok) {\n this.logger?.warn('SpecGenerator.validateSuggestion.failed', {\n suggestionId: suggestion.id,\n reasons,\n });\n }\n return { ok, reasons };\n }\n\n private intentToVerb(intent: IntentPattern['type']) {\n switch (intent) {\n case 'error-spike':\n return 'Stabilize';\n case 'latency-regression':\n return 'Optimize';\n case 'missing-operation':\n return 'Introduce';\n case 'throughput-drop':\n return 'Rebalance';\n default:\n return 'Adjust';\n }\n }\n\n private intentToPriority(intent: IntentPattern) {\n const severity = intent.confidence.score;\n if (intent.type === 'error-spike' || severity >= 0.8) return 'high';\n if (severity >= 0.5) return 'medium';\n return 'low';\n }\n\n private inferChangeType(\n intent: IntentPattern\n ): SpecSuggestionProposal['changeType'] {\n switch (intent.type) {\n case 'missing-operation':\n return 'new-spec';\n case 'schema-mismatch':\n return 'schema-update';\n case 'error-spike':\n return 'policy-update';\n default:\n return 'revision';\n }\n }\n}\n\nfunction mergeContract(base: AnyContract, patch: SpecPatch): AnyContract {\n return {\n ...base,\n ...patch,\n meta: { ...base.meta, ...patch.meta },\n io: {\n ...base.io,\n ...patch.io,\n },\n policy: {\n ...base.policy,\n ...patch.policy,\n },\n telemetry: {\n ...base.telemetry,\n ...patch.telemetry,\n },\n sideEffects: {\n ...base.sideEffects,\n ...patch.sideEffects,\n },\n } as AnyContract;\n}\n"],"mappings":";;;;AA0CA,IAAa,gBAAb,MAA2B;CACzB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAEjB,YAAY,UAAgC,EAAE,EAAE;AAC9C,OAAK,SAAS,QAAQ,UAAU,EAAE;AAClC,OAAK,SAAS,QAAQ;AACtB,OAAK,QAAQ,QAAQ,gCAAgB,IAAI,MAAM;AAC/C,OAAK,UAAU,QAAQ;;CAGzB,mBACE,QACA,UAA+B,EAAE,EACjB;EAChB,MAAM,MAAM,KAAK,OAAO;EACxB,MAAM,UACJ,QAAQ,WACR,GAAG,KAAK,aAAa,OAAO,KAAK,CAAC,GAAG,OAAO,WAAW,QAAQ;EACjE,MAAM,YACJ,QAAQ,aACR,CACE,OAAO,aACP,OAAO,UAAU,gBACb,YAAY,OAAO,SAAS,kBAC5B,OACL,CACE,OAAO,QAAQ,CACf,KAAK,MAAM;AAuBhB,SArBmC;GACjC,IAAI,YAAY;GAChB;GACA,QAAQ,OAAO;GACf,UAAU;IACR;IACA;IACA,YAAY,QAAQ,cAAc,KAAK,gBAAgB,OAAO;IAC9D,MAAM,QAAQ;IACd,MAAM,QAAQ;IACd,MAAM,QAAQ;IACd,UAAU,QAAQ;IACnB;GACD,YAAY,OAAO,WAAW;GAC9B,UAAU,KAAK,iBAAiB,OAAO;GACvC,WAAW;GACX,WAAW,QAAQ,aAAa;GAChC,QAAQ,QAAQ,UAAU;GAC1B,UAAU,OAAO;GACjB,MAAM,QAAQ;GACf;;CAIH,gBACE,WACA,OACA,QACA,UAA6C,EAAE,EAC/C;AACA,MAAI,CAAC,KAAK,QACR,OAAM,IAAI,MAAM,wDAAwD;EAE1E,MAAM,OAAO,KAAK,QAAQ,UAAU,MAAM,UAAU,QAAQ;AAC5D,MAAI,CAAC,KACH,OAAM,IAAI,MACR,iCAAiC,UAAU,KAAK,IAAI,UAAU,QAAQ,YACvE;EAEH,MAAM,SAAS,cAAc,MAAM,MAAM;AACzC,SAAO,KAAK,mBAAmB,QAAQ;GAAE,GAAG;GAAS,MAAM;GAAQ,CAAC;;CAGtE,mBACE,YACA,SAA0B,KAAK,QAC/B;EACA,MAAMA,UAAoB,EAAE;AAC5B,MACE,OAAO,iBAAiB,QACxB,WAAW,aAAa,OAAO,cAE/B,SAAQ,KACN,cAAc,WAAW,WAAW,QAAQ,EAAE,CAAC,iBAAiB,OAAO,gBACxE;AAEH,MAAI,OAAO,mBAAmB,WAAW,WAAW,WAClD,SAAQ,KACN,+DACD;AAEH,MAAI,WAAW,SAAS,QAAQ,CAAC,WAAW,SAAS,KAAK,MAAM,KAC9D,SAAQ,KAAK,uCAAuC;AAEtD,MAAI,CAAC,WAAW,SAAS,QACvB,SAAQ,KAAK,+BAA+B;EAE9C,MAAM,KAAK,QAAQ,WAAW;AAC9B,MAAI,CAAC,GACH,MAAK,QAAQ,KAAK,2CAA2C;GAC3D,cAAc,WAAW;GACzB;GACD,CAAC;AAEJ,SAAO;GAAE;GAAI;GAAS;;CAGxB,AAAQ,aAAa,QAA+B;AAClD,UAAQ,QAAR;GACE,KAAK,cACH,QAAO;GACT,KAAK,qBACH,QAAO;GACT,KAAK,oBACH,QAAO;GACT,KAAK,kBACH,QAAO;GACT,QACE,QAAO;;;CAIb,AAAQ,iBAAiB,QAAuB;EAC9C,MAAM,WAAW,OAAO,WAAW;AACnC,MAAI,OAAO,SAAS,iBAAiB,YAAY,GAAK,QAAO;AAC7D,MAAI,YAAY,GAAK,QAAO;AAC5B,SAAO;;CAGT,AAAQ,gBACN,QACsC;AACtC,UAAQ,OAAO,MAAf;GACE,KAAK,oBACH,QAAO;GACT,KAAK,kBACH,QAAO;GACT,KAAK,cACH,QAAO;GACT,QACE,QAAO;;;;AAKf,SAAS,cAAc,MAAmB,OAA+B;AACvE,QAAO;EACL,GAAG;EACH,GAAG;EACH,MAAM;GAAE,GAAG,KAAK;GAAM,GAAG,MAAM;GAAM;EACrC,IAAI;GACF,GAAG,KAAK;GACR,GAAG,MAAM;GACV;EACD,QAAQ;GACN,GAAG,KAAK;GACR,GAAG,MAAM;GACV;EACD,WAAW;GACT,GAAG,KAAK;GACR,GAAG,MAAM;GACV;EACD,aAAa;GACX,GAAG,KAAK;GACR,GAAG,MAAM;GACV;EACF"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ContractSpec, OpKind, ResourceRefDescriptor } from "@lssm/lib.contracts";
1
+ import { OpKind, OperationSpec, ResourceRefDescriptor } from "@lssm/lib.contracts";
2
2
  import { AnySchemaModel } from "@lssm/lib.schema";
3
3
  import { LifecycleStage } from "@lssm/lib.lifecycle";
4
4
 
@@ -71,7 +71,7 @@ interface SpecSuggestionProposal {
71
71
  rationale: string;
72
72
  changeType: 'new-spec' | 'revision' | 'policy-update' | 'schema-update';
73
73
  kind?: OpKind;
74
- spec?: ContractSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>;
74
+ spec?: OperationSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>;
75
75
  diff?: string;
76
76
  metadata?: Record<string, unknown>;
77
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;KAQY,eAAA;KACA,gBAAA;AADA,UAGK,mBAAA,CAHU;EACf,IAAA,EAAA,MAAA;EAEK,OAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAAA,MAAA;;AAIJ,UAJI,qBAAA,CAIJ;EAOA,SAAA,EAVA,mBAUA;EAAM,UAAA,EAAA,MAAA;EAGF,OAAA,EAAA,OAAA;EACJ,SAAA,EAXA,IAWA;EAQC,gBAAA,CAAA,EAAA,MAAA;EACC,SAAA,CAAA,EAAA,MAAA;EACF,YAAA,CAAA,EAAA,MAAA;EACA,KAAA,CAAA,EAAA,MAAA;EAAM,OAAA,CAAA,EAAA,MAAA;EAGF,OAAA,CAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAxBJ,MAwBe,CAAA,MAAA,EAAA,OAAA,CAAA;;AAEhB,UAvBK,cAAA,CAuBL;EAGE,SAAA,EAzBD,mBAyBC;EAGF,UAAA,EAAA,MAAA;EAAkB,WAAA,EAAA,MAAA;EAGb,SAAA,EAAA,MAAA;EAMA,gBAAa,EAAA,MAAA;EAUhB,YAAA,EAAA,MAAA;EACA,YAAA,EAAA,MAAA;EACD,YAAA,EAAA,MAAA;EACD,UAAA,EA1CE,IA0CF;EAAkB,WAAA,EAzCf,IAyCe;EAGb,SAAA,EA3CJ,IA2CI;EAIR,SAAA,EA9CI,MA8CJ,CAAA,MAAA,EAAA,MAAA,CAAA;;AAGL,UA9Ca,kBAAA,CA8Cb;EAAiB,IAAA,EAAA,WAAA,GAAA,eAAA,GAAA,YAAA,GAAA,MAAA;EAFZ,WAAA,EAAA,MAAA;EAKI,IAAA,CAAA,EA9CJ,MA8CI,CAAA,MAAA,EAAA,OAAA,CAAA;;AAGI,UA9CA,WAAA,CA8Cc;EAErB,SAAA,EA/CG,mBA+CH;EACC,QAAA,EA/CC,eA+CD;EACC,MAAA,EAAA,SAAA,GAAA,YAAA,GAAA,YAAA,GAAA,QAAA,GAAA,QAAA;EAEC,WAAA,EAAA,MAAA;EAEH,UAAA,EAjDI,IAiDJ;EACE,SAAA,CAAA,EAAA,MAAA;EAMI,aAAA,CAAA,EAAA,MAAA;EACH,QAAA,EAtDD,kBAsDC,EAAA;;AAII,UAvDA,iBAAA,CAuDe;EAQf,KAAA,EAAA,MAAA;EAKA,UAAA,EAAA,MAAA;EACI,MAAA,CAAA,EAAA,MAAA;;AACU,UAhEd,aAAA,CAgEc;EAAR,EAAA,EAAA,MAAA;EAGX,IAAA,EAAA,oBAAA,GAAA,aAAA,GAAA,mBAAA,GAAA,gBAAA,GAAA,iBAAA,GAAA,iBAAA;EACoD,WAAA,EAAA,MAAA;EAC3D,SAAA,CAAA,EA3DS,mBA2DT;EACY,UAAA,EA3DH,iBA2DG;EAAgC,QAAA,CAAA,EA1DpC,MA0DoC,CAAA,MAAA,EAAA,OAAA,CAAA;EAAR,QAAA,EAzD7B,kBAyD6B,EAAA;;AAGxB,UAzDA,sBAAA,CA0DG;EAGH,OAAA,EAAA,MAAA;;;SAzDR;SACA,aACL,gBACA,iBAAiB;;aAGR;;UAGI,cAAA;;UAEP;WACC;YACC;;aAEC;;UAEH;YACE;;;;;;gBAMI;aACH;;;UAII,eAAA;;;;;;;UAQA,qBAAA;WACN;;;UAIM,wBAAA;qBACI,iBAAiB;uBACf,QAAQ;mCAGnB;;;gBACoD;MAC3D;iBACY,wBAAwB,QAAQ;;UAGhC,oBAAA;oBACG,iBAAiB;;UAGpB,gBAAA;aACJ;;;;;mBAKM"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;KAQY,eAAA;KACA,gBAAA;AADA,UAGK,mBAAA,CAHU;EACf,IAAA,EAAA,MAAA;EAEK,OAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAAA,MAAA;;AAIJ,UAJI,qBAAA,CAIJ;EAOA,SAAA,EAVA,mBAUA;EAAM,UAAA,EAAA,MAAA;EAGF,OAAA,EAAA,OAAA;EACJ,SAAA,EAXA,IAWA;EAQC,gBAAA,CAAA,EAAA,MAAA;EACC,SAAA,CAAA,EAAA,MAAA;EACF,YAAA,CAAA,EAAA,MAAA;EACA,KAAA,CAAA,EAAA,MAAA;EAAM,OAAA,CAAA,EAAA,MAAA;EAGF,OAAA,CAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAxBJ,MAwBe,CAAA,MAAA,EAAA,OAAA,CAAA;;AAEhB,UAvBK,cAAA,CAuBL;EAGE,SAAA,EAzBD,mBAyBC;EAGF,UAAA,EAAA,MAAA;EAAkB,WAAA,EAAA,MAAA;EAGb,SAAA,EAAA,MAAA;EAMA,gBAAa,EAAA,MAAA;EAUhB,YAAA,EAAA,MAAA;EACA,YAAA,EAAA,MAAA;EACD,YAAA,EAAA,MAAA;EACD,UAAA,EA1CE,IA0CF;EAAkB,WAAA,EAzCf,IAyCe;EAGb,SAAA,EA3CJ,IA2CI;EAIR,SAAA,EA9CI,MA8CJ,CAAA,MAAA,EAAA,MAAA,CAAA;;AAGL,UA9Ca,kBAAA,CA8Cb;EAAiB,IAAA,EAAA,WAAA,GAAA,eAAA,GAAA,YAAA,GAAA,MAAA;EAFZ,WAAA,EAAA,MAAA;EAKI,IAAA,CAAA,EA9CJ,MA8CI,CAAA,MAAA,EAAA,OAAA,CAAA;;AAGI,UA9CA,WAAA,CA8Cc;EAErB,SAAA,EA/CG,mBA+CH;EACC,QAAA,EA/CC,eA+CD;EACC,MAAA,EAAA,SAAA,GAAA,YAAA,GAAA,YAAA,GAAA,QAAA,GAAA,QAAA;EAEC,WAAA,EAAA,MAAA;EAEH,UAAA,EAjDI,IAiDJ;EACE,SAAA,CAAA,EAAA,MAAA;EAMI,aAAA,CAAA,EAAA,MAAA;EACH,QAAA,EAtDD,kBAsDC,EAAA;;AAII,UAvDA,iBAAA,CAuDe;EAQf,KAAA,EAAA,MAAA;EAKA,UAAA,EAAA,MAAA;EACI,MAAA,CAAA,EAAA,MAAA;;AACU,UAhEd,aAAA,CAgEc;EAAR,EAAA,EAAA,MAAA;EAGX,IAAA,EAAA,oBAAA,GAAA,aAAA,GAAA,mBAAA,GAAA,gBAAA,GAAA,iBAAA,GAAA,iBAAA;EACoD,WAAA,EAAA,MAAA;EAC3D,SAAA,CAAA,EA3DS,mBA2DT;EACY,UAAA,EA3DH,iBA2DG;EAAgC,QAAA,CAAA,EA1DpC,MA0DoC,CAAA,MAAA,EAAA,OAAA,CAAA;EAAR,QAAA,EAzD7B,kBAyD6B,EAAA;;AAGxB,UAzDA,sBAAA,CA0DG;EAGH,OAAA,EAAA,MAAA;;;SAzDR;SACA,cACL,gBACA,iBAAiB;;aAGR;;UAGI,cAAA;;UAEP;WACC;YACC;;aAEC;;UAEH;YACE;;;;;;gBAMI;aACH;;;UAII,eAAA;;;;;;;UAQA,qBAAA;WACN;;;UAIM,wBAAA;qBACI,iBAAiB;uBACf,QAAQ;mCAGnB;;;gBACoD;MAC3D;iBACY,wBAAwB,QAAQ;;UAGhC,oBAAA;oBACG,iBAAiB;;UAGpB,gBAAA;aACJ;;;;;mBAKM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/lib.evolution",
3
- "version": "0.0.0-canary-20251220030446",
3
+ "version": "0.0.0-canary-20251221114240",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -25,18 +25,18 @@
25
25
  "dependencies": {
26
26
  "ai": "beta",
27
27
  "zod": "^4.1.13",
28
- "@lssm/lib.ai-agent": "0.0.0-canary-20251220030446",
29
- "@lssm/lib.contracts": "0.0.0-canary-20251220030446",
30
- "@lssm/lib.lifecycle": "0.0.0-canary-20251220030446",
31
- "@lssm/lib.observability": "0.0.0-canary-20251220030446",
32
- "@lssm/lib.schema": "0.0.0-canary-20251220030446"
28
+ "@lssm/lib.ai-agent": "0.0.0-canary-20251221114240",
29
+ "@lssm/lib.contracts": "0.0.0-canary-20251221114240",
30
+ "@lssm/lib.lifecycle": "0.0.0-canary-20251221114240",
31
+ "@lssm/lib.observability": "0.0.0-canary-20251221114240",
32
+ "@lssm/lib.schema": "0.0.0-canary-20251221114240"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "@prisma/client": "7.2.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@lssm/tool.tsdown": "0.0.0-canary-20251220030446",
39
- "@lssm/tool.typescript": "0.0.0-canary-20251220030446",
38
+ "@lssm/tool.tsdown": "0.0.0-canary-20251221114240",
39
+ "@lssm/tool.typescript": "0.0.0-canary-20251221114240",
40
40
  "tsdown": "^0.18.1",
41
41
  "typescript": "^5.9.3"
42
42
  },