@makaio/framework 1.0.0-dev-1789138982585 → 1.0.0-dev-1789148673705
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +2 -2
- package/dist/{artifact-BPK_ywFP.mjs → artifact-0LaQv515.mjs} +1 -1
- package/dist/bus/index.mjs +1 -1
- package/dist/contracts/artifact/index.d.mts +1 -1
- package/dist/contracts/artifact/index.mjs +1 -1
- package/dist/contracts/capabilities/index.d.mts +1 -1
- package/dist/contracts/extension/index.d.mts +2 -2
- package/dist/contracts/index.d.mts +11 -11
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/worker/index.d.mts +1 -1
- package/dist/contracts/worker/index.mjs +1 -1
- package/dist/contracts/workflow/index.d.mts +1 -1
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{index-ohUp4w1P.d.mts → index-2YEh0vHQ.d.mts} +40 -40
- package/dist/{index-it0mr4vE.d.mts → index-Bk-hwMue.d.mts} +3 -3
- package/dist/{index-DhW9WHFS.d.mts → index-DC2C-u2k.d.mts} +1 -1
- package/dist/{index-BXPMLk9W.d.mts → index-DKI-qw1F.d.mts} +11 -11
- package/dist/{index-H2NL2OwF2.d.mts → index-EJFdPYs32.d.mts} +3 -3
- package/dist/{index-BGg5g9cK.d.mts → index-LFS-KagP.d.mts} +10 -3
- package/dist/{index-BUoIGZmF2.d.mts → index-Zf9Zayey2.d.mts} +43 -43
- package/dist/{namespace-TX9DlWiQ.d.mts → namespace-BD4lgMfP.d.mts} +1 -1
- package/dist/{namespace-CvCk6Y9i.d.mts → namespace-Bw7YLQHw.d.mts} +25 -25
- package/dist/package.json +1 -1
- package/dist/{schema-B098Jz9p.d.mts → schema-CbmZYwEl.d.mts} +1 -1
- package/dist/{schemas-BhOepTL5.d.mts → schemas-Dt1YwXLN.d.mts} +2 -2
- package/dist/services/git/namespace.d.mts +2 -2
- package/dist/services/git/schemas.d.mts +2 -2
- package/dist/services/index.d.mts +7 -7
- package/dist/services/session/index.d.mts +4 -4
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/settings/namespace.d.mts +2 -2
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/subagent-template/index.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/{types-HFQQoeAz.d.mts → types-BrD4l8JJ.d.mts} +11 -11
- package/dist/{view-builder-ADC1ng2t.d.mts → view-builder--qgYM35J.d.mts} +1 -1
- package/dist/{worker-CaRR3V7o.mjs → worker-DHZKWcLx.mjs} +1 -1
- package/dist/{workflow-BD7Pw5JY.mjs → workflow-D8uoSvcR.mjs} +1 -1
- package/dist/workflow-engine/index.d.mts +31 -31
- package/package.json +1 -1
package/dist/.makaio-build.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"fingerprint": "
|
|
4
|
-
"builtAt": "2026-09-
|
|
3
|
+
"fingerprint": "9d8488d8d308342914f285f44178da89f7a2cfbd7e36987271aafeea8802bc1e",
|
|
4
|
+
"builtAt": "2026-09-11T17:45:36.544Z",
|
|
5
5
|
"declarations": true,
|
|
6
6
|
"declarationBackend": "tsc"
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-DTipWd-i.mjs";import{o as t,s as n}from"./json-value-DM-EjTC1.mjs";import{C as r,a as i,b as a,c as o,d as s,i as c,l,n as u,p as d,r as ee,t as te,u as ne,w as f,x as re}from"./schemas-BhkprYU1.mjs";import{a as p,g as ie,l as m,p as ae,s as h,t as g}from"./kind-registration-CyMf-vey.mjs";import{t as oe}from"./zod-json-schema-DGWHUOK0.mjs";import{t as se}from"./ajv-Dz-0DD7m.mjs";import{t as ce}from"./2020-DvDj4r_K.mjs";import{t as le}from"./dist-DMIaE8sg.mjs";import{z as _}from"zod";import{createBusNamespace as ue}from"@makaio/framework/core";const de=_.strictObject({evidence:r}),v=_.strictObject({kind:_.literal(`text`),text:_.string()}),[fe,pe,me]=r.options,he=_.union([fe.pick({source:!0,location:!0}).extend({content:v}),pe.pick({source:!0,location:!0}).extend({content:v}),me.pick({source:!0,location:!0}).extend({content:v})]);function y(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function b(e){return e.replaceAll(`~`,`~0`).replaceAll(`/`,`~1`)}function ge(e,t){if(t===`#`)return{node:e,pointer:``};if(!t.startsWith(`#/`))return;let n;try{n=decodeURIComponent(t.slice(1))}catch{return}let r=e;for(let e of n.slice(1).split(`/`)){let t=e.replaceAll(`~1`,`/`).replaceAll(`~0`,`~`);if(Array.isArray(r)){if(!/^(0|[1-9]\d*)$/.test(t)||Number(t)>=r.length)return;r=r[Number(t)]}else{let e=y(r);if(!e||!Object.hasOwn(e,t))return;r=e[t]}}let i=typeof r==`boolean`?r:y(r);return i===void 0?void 0:{node:i,pointer:n}}function x(e,t){if(t===``)return!1;let n=e;for(let e of t.slice(1).split(`/`)){let t=e.replaceAll(`~1`,`/`).replaceAll(`~0`,`~`);if(n=Array.isArray(n)?n[Number(t)]:y(n)?.[t],typeof y(n)?.$id==`string`)return!0}return!1}function _e(e,t,n){if(e[`x-makaio-value-type`]!==`evidence/v1`)return;let i=r.safeParse(t);if(!i.success)throw Error(`Invalid schema-declared evidence at ${n}`);return{evidence:i.data,dataPath:n}}function ve(e,t,n,r){if(typeof t.$ref!=`string`)return!1;if(r)return!0;let i=ge(e,t.$ref);return i===void 0?!0:typeof i.node!=`boolean`&&S(e,i.node,n,x(e,i.pointer))}function S(e,t,n=new WeakSet,r=!1){let i=y(t);if(!i||n.has(i))return!1;n.add(i);let a=r||i!==e&&typeof i.$id==`string`;if(i[`x-makaio-value-type`]===`evidence/v1`||typeof i.$dynamicRef==`string`||ve(e,i,n,a)||[`additionalItems`,`additionalProperties`,`contains`,`else`,`if`,`items`,`then`,`unevaluatedItems`,`unevaluatedProperties`].some(t=>S(e,i[t],n,a))||[`allOf`,`anyOf`,`oneOf`,`prefixItems`].some(t=>Array.isArray(i[t])&&i[t].some(t=>S(e,t,n,a)))||Array.isArray(i.items)&&i.items.some(t=>S(e,t,n,a)))return!0;for(let t of[`dependentSchemas`,`dependencies`,`patternProperties`,`properties`]){let r=y(i[t]);if(r&&Object.values(r).some(t=>S(e,t,n,a)))return!0}return!1}var ye=class{dataSchema;matchesSchema;occurrences=new Map;visited=new WeakMap;constructor(e,t){this.dataSchema=e,this.matchesSchema=t}extract(e){return this.visit(this.dataSchema,e,`/data`),[...this.occurrences.values()]}visit(e,t,n,r=``){let i=this.visited.get(e)??new Set;if(i.has(n))return;if(i.add(n),this.visited.set(e,i),typeof e.$dynamicRef==`string`)throw Error(`Evidence discovery does not support active $dynamicRef at ${n}`);if(typeof e.$ref==`string`){if(x(this.dataSchema,r))throw Error(`Evidence discovery does not support local $ref inside nested $id resource at ${n}`);let i=ge(this.dataSchema,e.$ref);if(i===void 0)throw Error(`Cannot resolve local schema reference ${e.$ref} at ${n}`);if(typeof i.node!=`boolean`&&this.visit(i.node,t,n,i.pointer),this.dataSchema.$schema!==`https://json-schema.org/draft/2020-12/schema`)return}let a=_e(e,t,n);if(a){this.occurrences.set(n,a);return}this.visitCombiners(e,t,n,r),this.visitConditional(e,t,n,r),this.visitDependencies(e,t,n,r),this.assertSupportedApplicators(e,n,r),Array.isArray(t)?this.visitArray(e,t,n,r):typeof t==`object`&&t&&this.visitObject(e,t,n,r)}visitCombiners(e,t,n,r){for(let i of[`allOf`,`anyOf`,`oneOf`]){let a=e[i];if(Array.isArray(a))for(let[e,o]of a.entries()){let a=y(o),s=`${r}/${i}/${e}`;a&&(i===`allOf`||this.matchesSchema(this.dataSchema,s,t))&&this.visit(a,t,n,s)}}}visitConditional(e,t,n,r){let i=typeof e.if==`boolean`?e.if:y(e.if);if(i===void 0)return;let a=`${r}/if`,o=this.matchesSchema(this.dataSchema,a,t);o&&typeof i!=`boolean`&&this.visit(i,t,n,a);let s=o?`then`:`else`,c=y(e[s]);c&&this.visit(c,t,n,`${r}/${s}`)}visitDependencies(e,t,n,r){if(!(typeof t!=`object`||!t||Array.isArray(t)))for(let i of[`dependentSchemas`,`dependencies`]){let a=y(e[i]);if(a)for(let[e,o]of Object.entries(a)){let a=y(o);Object.hasOwn(t,e)&&a&&this.visit(a,t,n,`${r}/${i}/${b(e)}`)}}}assertSupportedApplicators(e,t,n){for(let r of[`unevaluatedProperties`,`unevaluatedItems`])if(S(this.dataSchema,e[r],void 0,x(this.dataSchema,n)))throw Error(`Evidence under unsupported ${r} applicator at ${t}`)}visitArray(e,t,n,r){let i=Array.isArray(e.prefixItems),a=i?e.prefixItems:Array.isArray(e.items)?e.items:[];a.forEach((e,a)=>{let o=y(e),s=i?`prefixItems`:`items`;o&&a<t.length&&this.visit(o,t[a],`${n}/${a}`,`${r}/${s}/${a}`)});let o=Array.isArray(e.items)?y(e.additionalItems):y(e.items);if(o){let i=Array.isArray(e.items)?`additionalItems`:`items`;t.slice(a.length).forEach((e,t)=>this.visit(o,e,`${n}/${a.length+t}`,`${r}/${i}`))}this.visitContains(e,t,n,r)}visitContains(e,t,n,r){let i=y(e.contains);if(!i)return;let a=`${r}/contains`;t.forEach((e,t)=>{this.matchesSchema(this.dataSchema,a,e)&&this.visit(i,e,`${n}/${t}`,a)})}visitObject(e,t,n,r){let i=y(e.properties),a=y(e.patternProperties);for(let[o,s]of Object.entries(t)){let t=b(o),c=i!==void 0&&Object.hasOwn(i,o),l=y(i?.[o]);l&&this.visit(l,s,`${n}/${t}`,`${r}/properties/${t}`);let u=this.visitPatterns(a,o,s,`${n}/${t}`,r),d=y(e.additionalProperties);!c&&!u&&d&&this.visit(d,s,`${n}/${t}`,`${r}/additionalProperties`)}}visitPatterns(e,t,n,r,i){let a=!1;for(let[o,s]of Object.entries(e??{})){if(!new RegExp(o,`u`).test(t))continue;a=!0;let e=y(s);e&&this.visit(e,n,r,`${i}/patternProperties/${b(o)}`)}return a}};function be(e,t,n){return new ye(e,n.matchesSchema).extract(t)}function xe(e){let{dataSchema:t,hooks:n,...r}=e,i={$schema:`https://json-schema.org/draft/2020-12/schema`,...oe(t)};ae(i);let a=p.parse({...r,dataSchema:i});if(a.kind!==e.kind)throw Error(`Artifact kind identifiers must not contain surrounding whitespace`);let o=_.fromJSONSchema(a.dataSchema),s=_.unknown().superRefine((e,t)=>{let n=o.safeParse(e);if(!n.success)for(let e of n.error.issues)t.addIssue({code:`custom`,path:e.path,message:e.message})}).pipe(t).superRefine((e,t)=>{try{ie(e,a.titlePath)}catch(e){t.addIssue({code:`custom`,path:a.titlePath.split(`.`),message:e instanceof Error?e.message:`Artifact title must be a nonblank string`})}});return{...structuredClone(a),kind:e.kind,schemaVersion:e.schemaVersion,dataSchema:s,...n?{hooks:n}:{},toRegistration:()=>structuredClone(a)}}var Se=e(se(),1),Ce=e(ce(),1),we=e(le(),1);function Te(e){let t={allErrors:!0,strict:!1,strictSchema:!0},n=e.dataSchema.$schema===`https://json-schema.org/draft/2020-12/schema`?new Ce.default(t):new Se.default(t);return(0,we.default)(n),n.addKeyword({keyword:re,schemaType:`string`,valid:!0}),n.compile(e.dataSchema)}function Ee(e){return e.replace(/~1/gu,`/`).replace(/~0/gu,`~`)}function De(e){let t=e.instancePath.split(`/`).slice(1).map(Ee),n=e.keyword===`required`?e.params.missingProperty:e.params.additionalProperty;return typeof n==`string`&&(e.keyword===`required`||e.keyword===`additionalProperties`)&&t.push(n),t.join(`.`)}function Oe(e){if(e.keyword!==`type`)return;let t=e.params.type;if(typeof t==`string`)return t;if(Array.isArray(t)&&t.every(e=>typeof e==`string`))return t.join(` | `)}const ke=t.array();function Ae(e){if(e.keyword!==`enum`)return;let t=ke.safeParse(e.params.allowedValues);return t.success?t.data:void 0}function je(e){return(e??[]).map(e=>{let t=Oe(e),n=Ae(e);return{path:De(e),reason:e.message??`violates ${e.keyword}`,...t===void 0?{}:{expectedType:t},...n===void 0?{}:{allowedValues:n}}})}function Me(e){return Te(e)}function Ne(e){let t=Te(e);return e=>t(e)?{valid:!0}:{valid:!1,issues:je(t.errors)}}function Pe(e){return{hooks:[...e.hooks]}}const Fe=[`inline`,`summary`,`link`,`omit`],C=_.string().min(1),w=_.object({kinds:_.array(_.string().min(1)).optional(),hint:C.optional(),depth:_.number().int().min(1).max(20).optional(),nested:_.lazy(()=>T).optional()}),T=_.record(_.string().min(1),w);function E(e){return JSON.stringify([e.kind,e.id,e.revision])}const D=_.enum([`not-selected`,`not-found`,`depth-exceeded`,`unsupported-ref-class`,`cycle-detected`]),O=_.object({target:l,sourceRef:f,relationType:_.string().min(1),hint:C,status:_.enum([`resolved`,`unresolved`]),reason:D.optional()}).superRefine((e,t)=>{e.status===`unresolved`&&e.reason===void 0&&t.addIssue({code:_.ZodIssueCode.custom,path:[`reason`],message:`reason is required for unresolved artifact context refs`}),e.status===`resolved`&&e.reason!==void 0&&t.addIssue({code:_.ZodIssueCode.custom,path:[`reason`],message:`reason must be omitted for resolved artifact context refs`}),e.status===`resolved`&&e.target.refClass!==`artifact`&&t.addIssue({code:_.ZodIssueCode.custom,path:[`target`],message:`resolved artifact context refs must target an artifact revision`})}),k=_.object({rootRef:f,refs:_.array(O),resolved:_.array(s)}).superRefine((e,t)=>{let n=new Set(e.resolved.map(E));n.has(E(e.rootRef))||t.addIssue({code:_.ZodIssueCode.custom,path:[`resolved`],message:`resolved artifact context wire payloads must include the root artifact revision`}),e.refs.forEach((e,r)=>{n.has(E(e.sourceRef))||t.addIssue({code:_.ZodIssueCode.custom,path:[`refs`,r,`sourceRef`],message:`artifact context ref sources must have a matching revision in resolved`}),!(e.status!==`resolved`||e.target.refClass!==`artifact`)&&(n.has(E(e.target))||t.addIssue({code:_.ZodIssueCode.custom,path:[`refs`,r,`target`],message:`resolved artifact context refs must have a matching revision in resolved`}))})});function Ie(e){let t=k.parse(e),n=new Map(t.resolved.map(e=>[A(e),e])),r=new Map;for(let e of t.refs){let t=A(e.sourceRef),n=r.get(t);n||(n=[],r.set(t,n)),n.push(e)}let i=n.get(A(t.rootRef));if(!i)throw Error(`Resolved artifact context is missing root artifact '${A(t.rootRef)}'`);let a=Le(t.rootRef,i,`inline`,r,n);return{root:a,flatten(){let e=[];return Be(a,e),e}}}function Le(e,t,n,r,i){return{status:`resolved`,ref:e,artifact:t,hint:n,children:ze(e,r,i,new Set([A(e)]))}}function Re(e,t,n,r,i,a,o){let s=A(e),c=new Set(o);return c.add(s),{status:`resolved`,ref:e,artifact:t,relation:n,hint:r,children:ze(e,i,a,c)}}function ze(e,t,n,r){return(t.get(A(e))??[]).map(e=>{if(e.status===`unresolved`)return{status:`unresolved`,target:e.target,relation:e.relationType,hint:e.hint,reason:e.reason};if(e.target.refClass!==`artifact`)throw Error(`Resolved artifact context refs must target an artifact revision`);let i=A(e.target),a=n.get(i);if(!a)throw Error(`Resolved artifact context is missing target artifact '${i}'`);return r.has(i)?{status:`unresolved`,target:e.target,relation:e.relationType,hint:e.hint,reason:`cycle-detected`}:Re(e.target,a,e.relationType,e.hint,t,n,r)})}function Be(e,t){if(e.status!==`unresolved`){t.push(e.artifact);for(let n of e.children)Be(n,t)}}function A(e){return JSON.stringify([e.kind,e.id,e.revision])}const j=[`$set`,`$unset`,`$push`,`$pull`],M=`[A-Za-z_$][A-Za-z0-9_$]*`,N=`[A-Za-z_$][A-Za-z0-9_$-]*`,Ve=`(?:0|[1-9][0-9]*)`,He=`(?:${`\\$\\[${M}\\]`}|${Ve}|${N})`,Ue=RegExp(`^${N}(?:\\.${He})*$`),We=RegExp(`^${M}(?:\\.${N})*$`),Ge=RegExp(`^${Ve}$`),Ke=RegExp(`^\\$\\[(${M})\\]$`),P=_.string().regex(Ue,`Expected a data-relative path of object properties, array positions, or $[filter] placeholders`);function qe(e){let t=Ke.exec(e);return t?.[1]===void 0?Ge.test(e)?{kind:`index`,index:Number(e)}:{kind:`property`,name:e}:{kind:`filter`,placeholder:t[1]}}function Je(e){return e.split(`.`).map(qe)}function Ye(e){return Je(e).flatMap(e=>e.kind===`filter`?[e.placeholder]:[])}const Xe=n(_.record(_.string().regex(We,`Expected a filter key of the form name or name.field.path`),t),{prototypeKey:`an array filter cannot compare a __proto__ key, which JSON transport drops`,nonPlainObject:`an array filter must be a plain object of comparison keys`,symbolKey:`an array filter cannot carry symbol-keyed comparisons`,nonEnumerableKey:`an array filter cannot carry non-enumerable comparison keys`,extraArrayKey:`an array filter must be a plain object, not an array`});function Ze(e){let t=new Set(Object.keys(e).map(e=>e.split(`.`)[0]));if(t.size!==1)return;let[n]=t;return n!==void 0&&n.length>0?n:void 0}function F(e,t){return n(_.record(P,t),{prototypeKey:`${e} cannot address __proto__, which JSON transport drops`,nonPlainObject:`${e} must be a plain object of path instructions`,symbolKey:`${e} cannot carry symbol-keyed instructions`,nonEnumerableKey:`${e} cannot carry non-enumerable instructions`,extraArrayKey:`${e} must be a plain object, not an array`})}const Qe=_.literal(!0),$e=_.strictObject({$set:F(`$set`,t).optional(),$unset:F(`$unset`,Qe).optional(),$push:F(`$push`,t).optional(),$pull:F(`$pull`,t).optional(),arrayFilters:_.array(Xe).optional()});function I(e){return j.flatMap(t=>Object.entries(e[t]??{}).map(([e,n])=>({operator:t,path:e,value:n})))}function et(e,t){let n=I(e),r=new Map;(e.arrayFilters??[]).forEach((e,n)=>{let i=Ze(e);if(i===void 0){t.addIssue({code:`custom`,path:[`arrayFilters`,n],message:`An array filter must bind exactly one placeholder name across all of its keys`});return}if(r.has(i)){t.addIssue({code:`custom`,path:[`arrayFilters`,n],message:`Array filter placeholder ${i} is already bound by another filter`});return}r.set(i,n)});let i=new Set;for(let{operator:e,path:a}of n)for(let n of Ye(a))i.add(n),r.has(n)||t.addIssue({code:`custom`,path:[e,a],message:`Path uses placeholder $[${n}] without a matching entry in arrayFilters`});for(let[e,n]of r)i.has(e)||t.addIssue({code:`custom`,path:[`arrayFilters`,n],message:`Array filter binds placeholder ${e}, which no path uses`})}const tt=$e.superRefine(et).superRefine((e,t)=>{I(e).length===0&&t.addIssue({code:`custom`,message:`Declare at least one of ${j.join(`, `)}`})}),nt=$e.superRefine(et),rt=_.strictObject({kind:f.shape.kind,id:f.shape.id}),it=_.strictObject({ref:rt,baseRevision:f.shape.revision,patch:nt,dryRun:_.boolean().optional(),schemaVersion:m.optional().describe(`Target schema version for the patched revision; defaults to the base revision's. Use it to migrate an artifact left at an older version by a kind bump.`),statusPath:d.optional(),representations:ne.strict().nullable().optional().describe(`Rendering hints (markdown, summary, plaintext) for the new revision. Omit to keep the previous revision's hints. An object replaces all of them, it does not merge: send every hint you want to keep. null clears them.`)}).superRefine((e,t)=>{e.schemaVersion===void 0&&I(e.patch).length===0&&t.addIssue({code:`custom`,path:[`patch`],message:`Declare at least one of ${j.join(`, `)}, or name a schemaVersion to migrate a payload that already fits`})}),at=[`ARTIFACT_NOT_FOUND`,`BASE_REVISION_CONFLICT`,`KIND_NOT_REGISTERED`,`SCHEMA_VERSION_MISMATCH`,`PATH_NOT_DECLARED`,`PATH_NOT_RESOLVABLE`,`TARGET_NOT_A_COLLECTION`,`UNSUPPORTED_TARGET`,`NO_MATCH`,`SCHEMA_VALIDATION_FAILED`,`NO_CHANGE`,`HOST_FAILED`],ot=_.strictObject({path:_.string(),reason:_.string().min(1),expectedType:_.string().min(1).optional(),allowedValues:_.array(t).optional()}),st=_.strictObject({code:_.enum(at),message:_.string().min(1),operator:_.enum(j).optional(),path:P.optional(),currentRevision:f.shape.revision.optional(),issues:_.array(ot).optional(),repair:_.string().min(1)}).superRefine((e,t)=>{e.code===`BASE_REVISION_CONFLICT`&&e.currentRevision===void 0&&t.addIssue({code:_.ZodIssueCode.custom,message:`A BASE_REVISION_CONFLICT must name the revision the artifact carries.`,path:[`currentRevision`]})}),ct=_.strictObject({operator:_.enum(j),path:P,matched:_.number().int().positive()}),lt=_.strictObject({from:m,to:m}).refine(e=>e.to>e.from,{path:[`to`],message:`A migration moves the artifact forward to a newer schema version`}),ut=_.strictObject({ok:_.literal(!0),base:f,operations:_.array(ct),migration:lt.optional()});function dt(e,t){e.operations.length===0&&e.migration===void 0&&t.addIssue({code:`custom`,path:[`operations`],message:`A success without a migration must report at least one applied instruction`})}const ft=ut.extend({dryRun:_.literal(!0)}).superRefine(dt),pt=ut.extend({dryRun:_.literal(!1),artifact:f}).superRefine(dt),mt=_.discriminatedUnion(`dryRun`,[ft,pt]),ht=_.strictObject({ok:_.literal(!1),error:st}),gt=_.union([mt,ht]),L=f.pick({kind:!0,id:!0}),R=_.number().int().positive(),z=R,B={knowledge:`valid`,commitment:`proposed`,interaction:`open`},V=_.discriminatedUnion(`category`,[_.strictObject({category:_.literal(`knowledge`),state:_.enum(g.knowledge),version:z}),_.strictObject({category:_.literal(`commitment`),state:_.enum(g.commitment),version:z}),_.strictObject({category:_.literal(`interaction`),state:_.enum(g.interaction),version:z})]).superRefine((e,t)=>{e.version===1&&e.state!==B[e.category]&&t.addIssue({code:`custom`,path:[`state`],message:`Lifecycle version 1 is reserved for the category initial state`})}),H=_.union([V,_.strictObject({category:_.literal(`record`)})]),U=_.string().trim().min(1),_t=_.strictObject({kind:U,ref:U}),W=_.discriminatedUnion(`kind`,[_.strictObject({kind:_.literal(`revision-assessment`),assessedRevision:f.shape.revision,source:_t.optional()}),_.strictObject({kind:_.literal(`handover`),source:_t})]),vt={artifact:L,expectedVersion:z,state:h,situation:W,reason:U.optional()},G=_.strictObject(vt),yt=_.strictObject({...vt,actor:te}),bt={valid:[`retired`],retired:[],proposed:[`decided`],decided:[`fulfilled`,`revoked`],fulfilled:[],revoked:[],open:[`resolved`,`closed-without-resolution`],resolved:[],"closed-without-resolution":[]};function K(e,t){return bt[e].includes(t)}const xt={artifact:L,lifecycle:V,actor:te,timestamp:_.number().int().nonnegative(),observedRevision:f.shape.revision},St=_.strictObject({...xt,operation:_.literal(`initialized`)}).superRefine((e,t)=>{(e.lifecycle.version!==1||e.lifecycle.state!==B[e.lifecycle.category])&&t.addIssue({code:`custom`,path:[`lifecycle`],message:`Initialization requires the category initial state and version 1`})}),q=_.strictObject({...xt,operation:_.literal(`transitioned`),previousState:h,situation:W,reason:G.shape.reason}).superRefine((e,t)=>{(!K(e.previousState,e.lifecycle.state)||e.lifecycle.version<=1)&&t.addIssue({code:`custom`,path:[`lifecycle`],message:`History requires a category-compatible transition after initialization`}),e.lifecycle.state===`retired`&&!e.reason&&t.addIssue({code:`custom`,path:[`reason`],message:`Retiring knowledge requires a reason`}),e.situation.kind===`revision-assessment`&&e.situation.assessedRevision!==e.observedRevision&&t.addIssue({code:`custom`,path:[`situation`],message:`An assessment cannot authorize a different observed content revision`})}),Ct=_.discriminatedUnion(`operation`,[St,q]),J=_.discriminatedUnion(`reason`,[_.strictObject({reason:_.literal(`lifecycle-version-conflict`),expectedVersion:z,current:V,requestedState:h}),_.strictObject({reason:_.literal(`content-basis-conflict`),assessedRevision:f.shape.revision,currentRevision:f.shape.revision}),_.strictObject({reason:_.literal(`invalid-transition`),current:H,requestedState:h}),_.strictObject({reason:_.literal(`precondition-failed`),current:V,requestedState:h})]),Y=`artifact-lifecycle-rejected`;var X=class extends Error{code=Y;data;constructor(e,t){super(e),this.name=`ArtifactLifecycleError`,this.data=J.parse(t)}};function wt(e){return e===`record`?{category:`record`}:V.parse({category:e,state:B[e],version:1})}function Tt(e){let t=H.parse(e.current),n=f.shape.revision.parse(e.currentRevision),r=yt.parse(e.command);if(t.category===`record`)throw new X(`Record artifacts do not have a lifecycle`,{reason:`invalid-transition`,current:t,requestedState:r.state});if(r.expectedVersion!==t.version)throw new X(`Artifact lifecycle changed since the supplied baseline`,{reason:`lifecycle-version-conflict`,expectedVersion:r.expectedVersion,current:t,requestedState:r.state});if(r.situation.kind===`revision-assessment`&&r.situation.assessedRevision!==n)throw new X(`Assessed content revision is no longer current`,{reason:`content-basis-conflict`,assessedRevision:r.situation.assessedRevision,currentRevision:n});if(!K(t.state,r.state))throw new X(`Artifact lifecycle transition is not allowed`,{reason:`invalid-transition`,current:t,requestedState:r.state});if(r.state===`retired`&&!r.reason)throw new X(`Retiring knowledge requires a reason`,{reason:`precondition-failed`,current:t,requestedState:r.state});return V.parse({...t,state:r.state,version:t.version+1})}const Et=_.strictObject({artifact:L}),Dt=_.strictObject({lifecycle:H}),Ot=_.strictObject({artifact:L,afterVersion:R.optional(),limit:_.number().int().min(1).max(100).default(50)}),kt=_.strictObject({entries:_.array(Ct).max(100),nextCursor:R.optional()}).superRefine(({entries:e,nextCursor:t},n)=>{let r=e[0],i;for(let[t,a]of e.entries()){let e=a.artifact.kind===r?.artifact.kind&&a.artifact.id===r?.artifact.id,o=i===void 0||a.lifecycle.version===i.lifecycle.version+1,s=i===void 0||a.operation===`transitioned`&&a.lifecycle.category===i.lifecycle.category&&a.previousState===i.lifecycle.state;if(!e||!o||!s){n.addIssue({code:`custom`,path:[`entries`,t],message:`History pages contain one artifact in contiguous ascending, state-linked order`});break}i=a}t!==void 0&&t!==i?.lifecycle.version&&n.addIssue({code:`custom`,path:[`nextCursor`],message:`nextCursor must equal the last returned lifecycle version`})}),Z=_.strictObject({entry:q}),At=Z,jt=_.strictObject({code:_.literal(Y),message:_.string().min(1),data:J});function Mt(e){return{code:e.code,message:e.message,data:e.data}}function Nt(e,t){switch(t.reason){case`content-basis-conflict`:return Ft(e,t);case`lifecycle-version-conflict`:return[...Q(e,t),...Pt(e,t)];case`invalid-transition`:case`precondition-failed`:return[...Q(e,t),...It(e,t)]}}function Q(e,t){return t.requestedState===e.state?[]:[{path:[`requestedState`],message:`Rejection requestedState must match the rejected transition`}]}function Pt(e,t){let n=[];return t.expectedVersion!==e.expectedVersion&&n.push({path:[`expectedVersion`],message:`Version conflict baseline must match the rejected transition`}),t.current.version===e.expectedVersion&&n.push({path:[`current`,`version`],message:`Version conflict requires a current version different from the supplied baseline`}),n}function Ft(e,t){let n=[];return(e.situation.kind!==`revision-assessment`||t.assessedRevision!==e.situation.assessedRevision)&&n.push({path:[`assessedRevision`],message:`Content conflict must identify the rejected revision assessment`}),t.currentRevision===t.assessedRevision&&n.push({path:[`currentRevision`],message:`Content conflict requires a current revision different from the assessed revision`}),n}function It(e,t){if(t.current.category===`record`)return[];let n=[];t.current.version!==e.expectedVersion&&n.push({path:[`current`,`version`],message:`A rejection after the version check must report the supplied baseline version`});let r=K(t.current.state,t.requestedState);return t.reason===`invalid-transition`&&r&&n.push({path:[`reason`],message:`invalid-transition requires a transition the lifecycle matrix disallows`}),t.reason===`precondition-failed`&&!r&&n.push({path:[`reason`],message:`precondition-failed requires a transition the lifecycle matrix allows`}),n}const Lt=_.strictObject({transition:G,error:jt}).superRefine(({transition:e,error:t},n)=>{for(let r of Nt(e,t.data))n.addIssue({code:`custom`,path:[`error`,`data`,...r.path],message:r.message})}),Rt={"lifecycle.get":{request:Et,response:Dt},"lifecycle.history":{request:Ot,response:kt},"lifecycle.transition":{request:G,response:Z},"lifecycle.committed":At,"lifecycle.rejected":Lt},zt={...Rt,"kind.register":{request:p,response:_.object({registered:_.boolean()})},"kind.list":{request:_.object({kind:_.string().min(1).optional()}),response:_.object({kinds:_.array(p)})},"relation-type.register":{request:a,response:_.object({registered:_.boolean()})},"relation-type.list":{request:_.object({type:_.string().min(1).optional()}),response:_.object({relationTypes:_.array(a)})},create:{request:s.omit({id:!0,revision:!0,timestamp:!0}).extend({id:f.shape.id.optional()}),response:_.object({artifact:s})},revise:{request:_.object({previous:f,statusPath:d.optional(),revision:s.omit({id:!0,revision:!0,timestamp:!0})}),response:_.object({artifact:s})},patch:{request:it,response:gt},resolve:{request:_.object({ref:f}),response:_.object({artifact:s.nullable()})},query:{request:i,response:_.object({artifacts:_.array(s)})},compare:{request:u,response:ee},"evidence.resolve":{request:de,response:he},resolveContext:{request:_.object({ref:f,selectors:T.optional(),maxDepth:_.number().int().min(1).max(20).default(5)}),response:_.object({context:k})},created:_.object({artifact:s}),revised:_.object({previous:f,artifact:s}),"relation.added":_.object({artifact:f,relation:o}),"observation.added":_.object({artifact:f,observation:c}),"status.changed":_.object({artifact:f,path:_.string().min(1),previous:_.unknown().optional(),current:_.unknown().optional()}),"kind.changed":_.object({kind:_.string().min(1),schemaVersion:m})},$=ue(`artifact`,zt),Bt=$.subjects;export{D as $,at as A,P as B,yt as C,Tt as D,R as E,st as F,rt as G,it as H,ht as I,Ye as J,Ze as K,ot as L,Xe as M,tt as N,wt as O,ft as P,O as Q,lt as R,V as S,q as T,gt as U,pt as V,mt as W,Je as X,qe as Y,Ie as Z,Ct as _,jt as a,Pe as at,J as b,Ot as c,xe as ct,Rt as d,he as dt,k as et,Z as f,X as g,H as h,At as i,T as it,j,K as k,kt as l,be as lt,Y as m,zt as n,w as nt,Et as o,Ne as ot,Mt as p,I as q,Bt as r,C as rt,Dt as s,Me as st,$ as t,Fe as tt,Lt as u,de as ut,L as v,G as w,W as x,St as y,ct as z};
|
|
1
|
+
import{o as e}from"./chunk-DTipWd-i.mjs";import{o as t,s as n}from"./json-value-DM-EjTC1.mjs";import{C as r,a as i,b as a,c as o,d as s,i as c,l,n as u,p as d,r as ee,t as te,u as ne,w as f,x as re}from"./schemas-BhkprYU1.mjs";import{a as p,g as ie,l as m,p as ae,s as h,t as g}from"./kind-registration-CyMf-vey.mjs";import{t as oe}from"./zod-json-schema-DGWHUOK0.mjs";import{t as se}from"./ajv-Dz-0DD7m.mjs";import{t as ce}from"./2020-DvDj4r_K.mjs";import{t as le}from"./dist-DMIaE8sg.mjs";import{z as _}from"zod";import{createBusNamespace as ue}from"@makaio/framework/core";const de=_.strictObject({evidence:r}),v=_.strictObject({kind:_.literal(`text`),text:_.string()}),[fe,pe,me]=r.options,he=_.union([fe.pick({source:!0,location:!0}).extend({content:v}),pe.pick({source:!0,location:!0}).extend({content:v}),me.pick({source:!0,location:!0}).extend({content:v})]);function y(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function b(e){return e.replaceAll(`~`,`~0`).replaceAll(`/`,`~1`)}function ge(e,t){if(t===`#`)return{node:e,pointer:``};if(!t.startsWith(`#/`))return;let n;try{n=decodeURIComponent(t.slice(1))}catch{return}let r=e;for(let e of n.slice(1).split(`/`)){let t=e.replaceAll(`~1`,`/`).replaceAll(`~0`,`~`);if(Array.isArray(r)){if(!/^(0|[1-9]\d*)$/.test(t)||Number(t)>=r.length)return;r=r[Number(t)]}else{let e=y(r);if(!e||!Object.hasOwn(e,t))return;r=e[t]}}let i=typeof r==`boolean`?r:y(r);return i===void 0?void 0:{node:i,pointer:n}}function x(e,t){if(t===``)return!1;let n=e;for(let e of t.slice(1).split(`/`)){let t=e.replaceAll(`~1`,`/`).replaceAll(`~0`,`~`);if(n=Array.isArray(n)?n[Number(t)]:y(n)?.[t],typeof y(n)?.$id==`string`)return!0}return!1}function _e(e,t,n){if(e[`x-makaio-value-type`]!==`evidence/v1`)return;let i=r.safeParse(t);if(!i.success)throw Error(`Invalid schema-declared evidence at ${n}`);return{evidence:i.data,dataPath:n}}function ve(e,t,n,r){if(typeof t.$ref!=`string`)return!1;if(r)return!0;let i=ge(e,t.$ref);return i===void 0?!0:typeof i.node!=`boolean`&&S(e,i.node,n,x(e,i.pointer))}function S(e,t,n=new WeakSet,r=!1){let i=y(t);if(!i||n.has(i))return!1;n.add(i);let a=r||i!==e&&typeof i.$id==`string`;if(i[`x-makaio-value-type`]===`evidence/v1`||typeof i.$dynamicRef==`string`||ve(e,i,n,a)||[`additionalItems`,`additionalProperties`,`contains`,`else`,`if`,`items`,`then`,`unevaluatedItems`,`unevaluatedProperties`].some(t=>S(e,i[t],n,a))||[`allOf`,`anyOf`,`oneOf`,`prefixItems`].some(t=>Array.isArray(i[t])&&i[t].some(t=>S(e,t,n,a)))||Array.isArray(i.items)&&i.items.some(t=>S(e,t,n,a)))return!0;for(let t of[`dependentSchemas`,`dependencies`,`patternProperties`,`properties`]){let r=y(i[t]);if(r&&Object.values(r).some(t=>S(e,t,n,a)))return!0}return!1}var ye=class{dataSchema;matchesSchema;occurrences=new Map;visited=new WeakMap;constructor(e,t){this.dataSchema=e,this.matchesSchema=t}extract(e){return this.visit(this.dataSchema,e,`/data`),[...this.occurrences.values()]}visit(e,t,n,r=``){let i=this.visited.get(e)??new Set;if(i.has(n))return;if(i.add(n),this.visited.set(e,i),typeof e.$dynamicRef==`string`)throw Error(`Evidence discovery does not support active $dynamicRef at ${n}`);if(typeof e.$ref==`string`){if(x(this.dataSchema,r))throw Error(`Evidence discovery does not support local $ref inside nested $id resource at ${n}`);let i=ge(this.dataSchema,e.$ref);if(i===void 0)throw Error(`Cannot resolve local schema reference ${e.$ref} at ${n}`);if(typeof i.node!=`boolean`&&this.visit(i.node,t,n,i.pointer),this.dataSchema.$schema!==`https://json-schema.org/draft/2020-12/schema`)return}let a=_e(e,t,n);if(a){this.occurrences.set(n,a);return}this.visitCombiners(e,t,n,r),this.visitConditional(e,t,n,r),this.visitDependencies(e,t,n,r),this.assertSupportedApplicators(e,n,r),Array.isArray(t)?this.visitArray(e,t,n,r):typeof t==`object`&&t&&this.visitObject(e,t,n,r)}visitCombiners(e,t,n,r){for(let i of[`allOf`,`anyOf`,`oneOf`]){let a=e[i];if(Array.isArray(a))for(let[e,o]of a.entries()){let a=y(o),s=`${r}/${i}/${e}`;a&&(i===`allOf`||this.matchesSchema(this.dataSchema,s,t))&&this.visit(a,t,n,s)}}}visitConditional(e,t,n,r){let i=typeof e.if==`boolean`?e.if:y(e.if);if(i===void 0)return;let a=`${r}/if`,o=this.matchesSchema(this.dataSchema,a,t);o&&typeof i!=`boolean`&&this.visit(i,t,n,a);let s=o?`then`:`else`,c=y(e[s]);c&&this.visit(c,t,n,`${r}/${s}`)}visitDependencies(e,t,n,r){if(!(typeof t!=`object`||!t||Array.isArray(t)))for(let i of[`dependentSchemas`,`dependencies`]){let a=y(e[i]);if(a)for(let[e,o]of Object.entries(a)){let a=y(o);Object.hasOwn(t,e)&&a&&this.visit(a,t,n,`${r}/${i}/${b(e)}`)}}}assertSupportedApplicators(e,t,n){for(let r of[`unevaluatedProperties`,`unevaluatedItems`])if(S(this.dataSchema,e[r],void 0,x(this.dataSchema,n)))throw Error(`Evidence under unsupported ${r} applicator at ${t}`)}visitArray(e,t,n,r){let i=Array.isArray(e.prefixItems),a=i?e.prefixItems:Array.isArray(e.items)?e.items:[];a.forEach((e,a)=>{let o=y(e),s=i?`prefixItems`:`items`;o&&a<t.length&&this.visit(o,t[a],`${n}/${a}`,`${r}/${s}/${a}`)});let o=Array.isArray(e.items)?y(e.additionalItems):y(e.items);if(o){let i=Array.isArray(e.items)?`additionalItems`:`items`;t.slice(a.length).forEach((e,t)=>this.visit(o,e,`${n}/${a.length+t}`,`${r}/${i}`))}this.visitContains(e,t,n,r)}visitContains(e,t,n,r){let i=y(e.contains);if(!i)return;let a=`${r}/contains`;t.forEach((e,t)=>{this.matchesSchema(this.dataSchema,a,e)&&this.visit(i,e,`${n}/${t}`,a)})}visitObject(e,t,n,r){let i=y(e.properties),a=y(e.patternProperties);for(let[o,s]of Object.entries(t)){let t=b(o),c=i!==void 0&&Object.hasOwn(i,o),l=y(i?.[o]);l&&this.visit(l,s,`${n}/${t}`,`${r}/properties/${t}`);let u=this.visitPatterns(a,o,s,`${n}/${t}`,r),d=y(e.additionalProperties);!c&&!u&&d&&this.visit(d,s,`${n}/${t}`,`${r}/additionalProperties`)}}visitPatterns(e,t,n,r,i){let a=!1;for(let[o,s]of Object.entries(e??{})){if(!new RegExp(o,`u`).test(t))continue;a=!0;let e=y(s);e&&this.visit(e,n,r,`${i}/patternProperties/${b(o)}`)}return a}};function be(e,t,n){return new ye(e,n.matchesSchema).extract(t)}function xe(e){let{dataSchema:t,hooks:n,...r}=e,i={$schema:`https://json-schema.org/draft/2020-12/schema`,...oe(t)};ae(i);let a=p.parse({...r,dataSchema:i});if(a.kind!==e.kind)throw Error(`Artifact kind identifiers must not contain surrounding whitespace`);let o=_.fromJSONSchema(a.dataSchema),s=_.unknown().superRefine((e,t)=>{let n=o.safeParse(e);if(!n.success)for(let e of n.error.issues)t.addIssue({code:`custom`,path:e.path,message:e.message})}).pipe(t).superRefine((e,t)=>{try{ie(e,a.titlePath)}catch(e){t.addIssue({code:`custom`,path:a.titlePath.split(`.`),message:e instanceof Error?e.message:`Artifact title must be a nonblank string`})}});return{...structuredClone(a),kind:e.kind,schemaVersion:e.schemaVersion,dataSchema:s,...n?{hooks:n}:{},toRegistration:()=>structuredClone(a)}}var Se=e(se(),1),Ce=e(ce(),1),we=e(le(),1);function Te(e){let t={allErrors:!0,strict:!1,strictSchema:!0},n=e.dataSchema.$schema===`https://json-schema.org/draft/2020-12/schema`?new Ce.default(t):new Se.default(t);return(0,we.default)(n),n.addKeyword({keyword:re,schemaType:`string`,valid:!0}),n.compile(e.dataSchema)}function Ee(e){return e.replace(/~1/gu,`/`).replace(/~0/gu,`~`)}function De(e){let t=e.instancePath.split(`/`).slice(1).map(Ee),n=e.keyword===`required`?e.params.missingProperty:e.params.additionalProperty;return typeof n==`string`&&(e.keyword===`required`||e.keyword===`additionalProperties`)&&t.push(n),t.join(`.`)}function Oe(e){if(e.keyword!==`type`)return;let t=e.params.type;if(typeof t==`string`)return t;if(Array.isArray(t)&&t.every(e=>typeof e==`string`))return t.join(` | `)}const ke=t.array();function Ae(e){if(e.keyword!==`enum`)return;let t=ke.safeParse(e.params.allowedValues);return t.success?t.data:void 0}function je(e){return(e??[]).map(e=>{let t=Oe(e),n=Ae(e);return{path:De(e),reason:e.message??`violates ${e.keyword}`,...t===void 0?{}:{expectedType:t},...n===void 0?{}:{allowedValues:n}}})}function Me(e){return Te(e)}function Ne(e){let t=Te(e);return e=>t(e)?{valid:!0}:{valid:!1,issues:je(t.errors)}}function Pe(e){return{hooks:[...e.hooks]}}const Fe=[`inline`,`summary`,`link`,`omit`],C=_.string().min(1),w=_.object({kinds:_.array(_.string().min(1)).optional(),hint:C.optional(),depth:_.number().int().min(1).max(20).optional(),nested:_.lazy(()=>T).optional()}),T=_.record(_.string().min(1),w);function E(e){return JSON.stringify([e.kind,e.id,e.revision])}const D=_.enum([`not-selected`,`not-found`,`depth-exceeded`,`unsupported-ref-class`,`cycle-detected`]),O=_.object({target:l,sourceRef:f,relationType:_.string().min(1),hint:C,status:_.enum([`resolved`,`unresolved`]),reason:D.optional()}).superRefine((e,t)=>{e.status===`unresolved`&&e.reason===void 0&&t.addIssue({code:_.ZodIssueCode.custom,path:[`reason`],message:`reason is required for unresolved artifact context refs`}),e.status===`resolved`&&e.reason!==void 0&&t.addIssue({code:_.ZodIssueCode.custom,path:[`reason`],message:`reason must be omitted for resolved artifact context refs`}),e.status===`resolved`&&e.target.refClass!==`artifact`&&t.addIssue({code:_.ZodIssueCode.custom,path:[`target`],message:`resolved artifact context refs must target an artifact revision`})}),k=_.object({rootRef:f,refs:_.array(O),resolved:_.array(s)}).superRefine((e,t)=>{let n=new Set(e.resolved.map(E));n.has(E(e.rootRef))||t.addIssue({code:_.ZodIssueCode.custom,path:[`resolved`],message:`resolved artifact context wire payloads must include the root artifact revision`}),e.refs.forEach((e,r)=>{n.has(E(e.sourceRef))||t.addIssue({code:_.ZodIssueCode.custom,path:[`refs`,r,`sourceRef`],message:`artifact context ref sources must have a matching revision in resolved`}),!(e.status!==`resolved`||e.target.refClass!==`artifact`)&&(n.has(E(e.target))||t.addIssue({code:_.ZodIssueCode.custom,path:[`refs`,r,`target`],message:`resolved artifact context refs must have a matching revision in resolved`}))})});function Ie(e){let t=k.parse(e),n=new Map(t.resolved.map(e=>[A(e),e])),r=new Map;for(let e of t.refs){let t=A(e.sourceRef),n=r.get(t);n||(n=[],r.set(t,n)),n.push(e)}let i=n.get(A(t.rootRef));if(!i)throw Error(`Resolved artifact context is missing root artifact '${A(t.rootRef)}'`);let a=Le(t.rootRef,i,`inline`,r,n);return{root:a,flatten(){let e=[];return Be(a,e),e}}}function Le(e,t,n,r,i){return{status:`resolved`,ref:e,artifact:t,hint:n,children:ze(e,r,i,new Set([A(e)]))}}function Re(e,t,n,r,i,a,o){let s=A(e),c=new Set(o);return c.add(s),{status:`resolved`,ref:e,artifact:t,relation:n,hint:r,children:ze(e,i,a,c)}}function ze(e,t,n,r){return(t.get(A(e))??[]).map(e=>{if(e.status===`unresolved`)return{status:`unresolved`,target:e.target,relation:e.relationType,hint:e.hint,reason:e.reason};if(e.target.refClass!==`artifact`)throw Error(`Resolved artifact context refs must target an artifact revision`);let i=A(e.target),a=n.get(i);if(!a)throw Error(`Resolved artifact context is missing target artifact '${i}'`);return r.has(i)?{status:`unresolved`,target:e.target,relation:e.relationType,hint:e.hint,reason:`cycle-detected`}:Re(e.target,a,e.relationType,e.hint,t,n,r)})}function Be(e,t){if(e.status!==`unresolved`){t.push(e.artifact);for(let n of e.children)Be(n,t)}}function A(e){return JSON.stringify([e.kind,e.id,e.revision])}const j=[`$set`,`$unset`,`$push`,`$pull`],M=`[A-Za-z_$][A-Za-z0-9_$]*`,N=`[A-Za-z_$][A-Za-z0-9_$-]*`,Ve=`(?:0|[1-9][0-9]*)`,He=`(?:${`\\$\\[${M}\\]`}|${Ve}|${N})`,Ue=RegExp(`^${N}(?:\\.${He})*$`),We=RegExp(`^${M}(?:\\.${N})*$`),Ge=RegExp(`^${Ve}$`),Ke=RegExp(`^\\$\\[(${M})\\]$`),P=_.string().regex(Ue,`Expected a data-relative path of object properties, array positions, or $[filter] placeholders`);function qe(e){let t=Ke.exec(e);return t?.[1]===void 0?Ge.test(e)?{kind:`index`,index:Number(e)}:{kind:`property`,name:e}:{kind:`filter`,placeholder:t[1]}}function Je(e){return e.split(`.`).map(qe)}function Ye(e){return Je(e).flatMap(e=>e.kind===`filter`?[e.placeholder]:[])}const Xe=n(_.record(_.string().regex(We,`Expected a filter key of the form name or name.field.path`),t),{prototypeKey:`an array filter cannot compare a __proto__ key, which JSON transport drops`,nonPlainObject:`an array filter must be a plain object of comparison keys`,symbolKey:`an array filter cannot carry symbol-keyed comparisons`,nonEnumerableKey:`an array filter cannot carry non-enumerable comparison keys`,extraArrayKey:`an array filter must be a plain object, not an array`});function Ze(e){let t=new Set(Object.keys(e).map(e=>e.split(`.`)[0]));if(t.size!==1)return;let[n]=t;return n!==void 0&&n.length>0?n:void 0}function F(e,t){return n(_.record(P,t),{prototypeKey:`${e} cannot address __proto__, which JSON transport drops`,nonPlainObject:`${e} must be a plain object of path instructions`,symbolKey:`${e} cannot carry symbol-keyed instructions`,nonEnumerableKey:`${e} cannot carry non-enumerable instructions`,extraArrayKey:`${e} must be a plain object, not an array`})}const Qe=_.literal(!0),$e=_.strictObject({$set:F(`$set`,t).optional(),$unset:F(`$unset`,Qe).optional(),$push:F(`$push`,t).optional(),$pull:F(`$pull`,t).optional(),arrayFilters:_.array(Xe).optional()});function I(e){return j.flatMap(t=>Object.entries(e[t]??{}).map(([e,n])=>({operator:t,path:e,value:n})))}function et(e,t){let n=I(e),r=new Map;(e.arrayFilters??[]).forEach((e,n)=>{let i=Ze(e);if(i===void 0){t.addIssue({code:`custom`,path:[`arrayFilters`,n],message:`An array filter must bind exactly one placeholder name across all of its keys`});return}if(r.has(i)){t.addIssue({code:`custom`,path:[`arrayFilters`,n],message:`Array filter placeholder ${i} is already bound by another filter`});return}r.set(i,n)});let i=new Set;for(let{operator:e,path:a}of n)for(let n of Ye(a))i.add(n),r.has(n)||t.addIssue({code:`custom`,path:[e,a],message:`Path uses placeholder $[${n}] without a matching entry in arrayFilters`});for(let[e,n]of r)i.has(e)||t.addIssue({code:`custom`,path:[`arrayFilters`,n],message:`Array filter binds placeholder ${e}, which no path uses`})}const tt=$e.superRefine(et).superRefine((e,t)=>{I(e).length===0&&t.addIssue({code:`custom`,message:`Declare at least one of ${j.join(`, `)}`})}),nt=$e.superRefine(et),rt=_.strictObject({kind:f.shape.kind,id:f.shape.id}),it=_.strictObject({ref:rt,baseRevision:f.shape.revision,patch:nt,dryRun:_.boolean().optional(),schemaVersion:m.optional().describe(`Target schema version for the patched revision; defaults to the base revision's. Use it to migrate an artifact left at an older version by a kind bump.`),statusPath:d.optional(),representations:ne.strict().nullable().optional().describe(`Rendering hints (markdown, summary, plaintext) for the new revision. Omit to keep the previous revision's hints. An object replaces all of them, it does not merge: send every hint you want to keep. null clears them.`)}).superRefine((e,t)=>{e.schemaVersion===void 0&&I(e.patch).length===0&&t.addIssue({code:`custom`,path:[`patch`],message:`Declare at least one of ${j.join(`, `)}, or name a schemaVersion to migrate a payload that already fits`})}),at=[`ARTIFACT_NOT_FOUND`,`BASE_REVISION_CONFLICT`,`KIND_NOT_REGISTERED`,`SCHEMA_VERSION_MISMATCH`,`PATH_NOT_DECLARED`,`PATH_NOT_RESOLVABLE`,`TARGET_NOT_A_COLLECTION`,`UNSUPPORTED_TARGET`,`NO_MATCH`,`SCHEMA_VALIDATION_FAILED`,`NO_CHANGE`,`STORE_REJECTED`,`HOST_FAILED`],ot=_.strictObject({path:_.string(),reason:_.string().min(1),expectedType:_.string().min(1).optional(),allowedValues:_.array(t).optional()}),st=_.strictObject({code:_.enum(at),message:_.string().min(1),operator:_.enum(j).optional(),path:P.optional(),currentRevision:f.shape.revision.optional(),issues:_.array(ot).optional(),repair:_.string().min(1)}).superRefine((e,t)=>{e.code===`BASE_REVISION_CONFLICT`&&e.currentRevision===void 0&&t.addIssue({code:_.ZodIssueCode.custom,message:`A BASE_REVISION_CONFLICT must name the revision the artifact carries.`,path:[`currentRevision`]})}),ct=_.strictObject({operator:_.enum(j),path:P,matched:_.number().int().positive()}),lt=_.strictObject({from:m,to:m}).refine(e=>e.to>e.from,{path:[`to`],message:`A migration moves the artifact forward to a newer schema version`}),ut=_.strictObject({ok:_.literal(!0),base:f,operations:_.array(ct),migration:lt.optional()});function dt(e,t){e.operations.length===0&&e.migration===void 0&&t.addIssue({code:`custom`,path:[`operations`],message:`A success without a migration must report at least one applied instruction`})}const ft=ut.extend({dryRun:_.literal(!0)}).superRefine(dt),pt=ut.extend({dryRun:_.literal(!1),artifact:f}).superRefine(dt),mt=_.discriminatedUnion(`dryRun`,[ft,pt]),ht=_.strictObject({ok:_.literal(!1),error:st}),gt=_.union([mt,ht]),L=f.pick({kind:!0,id:!0}),R=_.number().int().positive(),z=R,B={knowledge:`valid`,commitment:`proposed`,interaction:`open`},V=_.discriminatedUnion(`category`,[_.strictObject({category:_.literal(`knowledge`),state:_.enum(g.knowledge),version:z}),_.strictObject({category:_.literal(`commitment`),state:_.enum(g.commitment),version:z}),_.strictObject({category:_.literal(`interaction`),state:_.enum(g.interaction),version:z})]).superRefine((e,t)=>{e.version===1&&e.state!==B[e.category]&&t.addIssue({code:`custom`,path:[`state`],message:`Lifecycle version 1 is reserved for the category initial state`})}),H=_.union([V,_.strictObject({category:_.literal(`record`)})]),U=_.string().trim().min(1),_t=_.strictObject({kind:U,ref:U}),W=_.discriminatedUnion(`kind`,[_.strictObject({kind:_.literal(`revision-assessment`),assessedRevision:f.shape.revision,source:_t.optional()}),_.strictObject({kind:_.literal(`handover`),source:_t})]),vt={artifact:L,expectedVersion:z,state:h,situation:W,reason:U.optional()},G=_.strictObject(vt),yt=_.strictObject({...vt,actor:te}),bt={valid:[`retired`],retired:[],proposed:[`decided`],decided:[`fulfilled`,`revoked`],fulfilled:[],revoked:[],open:[`resolved`,`closed-without-resolution`],resolved:[],"closed-without-resolution":[]};function K(e,t){return bt[e].includes(t)}const xt={artifact:L,lifecycle:V,actor:te,timestamp:_.number().int().nonnegative(),observedRevision:f.shape.revision},St=_.strictObject({...xt,operation:_.literal(`initialized`)}).superRefine((e,t)=>{(e.lifecycle.version!==1||e.lifecycle.state!==B[e.lifecycle.category])&&t.addIssue({code:`custom`,path:[`lifecycle`],message:`Initialization requires the category initial state and version 1`})}),q=_.strictObject({...xt,operation:_.literal(`transitioned`),previousState:h,situation:W,reason:G.shape.reason}).superRefine((e,t)=>{(!K(e.previousState,e.lifecycle.state)||e.lifecycle.version<=1)&&t.addIssue({code:`custom`,path:[`lifecycle`],message:`History requires a category-compatible transition after initialization`}),e.lifecycle.state===`retired`&&!e.reason&&t.addIssue({code:`custom`,path:[`reason`],message:`Retiring knowledge requires a reason`}),e.situation.kind===`revision-assessment`&&e.situation.assessedRevision!==e.observedRevision&&t.addIssue({code:`custom`,path:[`situation`],message:`An assessment cannot authorize a different observed content revision`})}),Ct=_.discriminatedUnion(`operation`,[St,q]),J=_.discriminatedUnion(`reason`,[_.strictObject({reason:_.literal(`lifecycle-version-conflict`),expectedVersion:z,current:V,requestedState:h}),_.strictObject({reason:_.literal(`content-basis-conflict`),assessedRevision:f.shape.revision,currentRevision:f.shape.revision}),_.strictObject({reason:_.literal(`invalid-transition`),current:H,requestedState:h}),_.strictObject({reason:_.literal(`precondition-failed`),current:V,requestedState:h})]),Y=`artifact-lifecycle-rejected`;var X=class extends Error{code=Y;data;constructor(e,t){super(e),this.name=`ArtifactLifecycleError`,this.data=J.parse(t)}};function wt(e){return e===`record`?{category:`record`}:V.parse({category:e,state:B[e],version:1})}function Tt(e){let t=H.parse(e.current),n=f.shape.revision.parse(e.currentRevision),r=yt.parse(e.command);if(t.category===`record`)throw new X(`Record artifacts do not have a lifecycle`,{reason:`invalid-transition`,current:t,requestedState:r.state});if(r.expectedVersion!==t.version)throw new X(`Artifact lifecycle changed since the supplied baseline`,{reason:`lifecycle-version-conflict`,expectedVersion:r.expectedVersion,current:t,requestedState:r.state});if(r.situation.kind===`revision-assessment`&&r.situation.assessedRevision!==n)throw new X(`Assessed content revision is no longer current`,{reason:`content-basis-conflict`,assessedRevision:r.situation.assessedRevision,currentRevision:n});if(!K(t.state,r.state))throw new X(`Artifact lifecycle transition is not allowed`,{reason:`invalid-transition`,current:t,requestedState:r.state});if(r.state===`retired`&&!r.reason)throw new X(`Retiring knowledge requires a reason`,{reason:`precondition-failed`,current:t,requestedState:r.state});return V.parse({...t,state:r.state,version:t.version+1})}const Et=_.strictObject({artifact:L}),Dt=_.strictObject({lifecycle:H}),Ot=_.strictObject({artifact:L,afterVersion:R.optional(),limit:_.number().int().min(1).max(100).default(50)}),kt=_.strictObject({entries:_.array(Ct).max(100),nextCursor:R.optional()}).superRefine(({entries:e,nextCursor:t},n)=>{let r=e[0],i;for(let[t,a]of e.entries()){let e=a.artifact.kind===r?.artifact.kind&&a.artifact.id===r?.artifact.id,o=i===void 0||a.lifecycle.version===i.lifecycle.version+1,s=i===void 0||a.operation===`transitioned`&&a.lifecycle.category===i.lifecycle.category&&a.previousState===i.lifecycle.state;if(!e||!o||!s){n.addIssue({code:`custom`,path:[`entries`,t],message:`History pages contain one artifact in contiguous ascending, state-linked order`});break}i=a}t!==void 0&&t!==i?.lifecycle.version&&n.addIssue({code:`custom`,path:[`nextCursor`],message:`nextCursor must equal the last returned lifecycle version`})}),Z=_.strictObject({entry:q}),At=Z,jt=_.strictObject({code:_.literal(Y),message:_.string().min(1),data:J});function Mt(e){return{code:e.code,message:e.message,data:e.data}}function Nt(e,t){switch(t.reason){case`content-basis-conflict`:return Ft(e,t);case`lifecycle-version-conflict`:return[...Q(e,t),...Pt(e,t)];case`invalid-transition`:case`precondition-failed`:return[...Q(e,t),...It(e,t)]}}function Q(e,t){return t.requestedState===e.state?[]:[{path:[`requestedState`],message:`Rejection requestedState must match the rejected transition`}]}function Pt(e,t){let n=[];return t.expectedVersion!==e.expectedVersion&&n.push({path:[`expectedVersion`],message:`Version conflict baseline must match the rejected transition`}),t.current.version===e.expectedVersion&&n.push({path:[`current`,`version`],message:`Version conflict requires a current version different from the supplied baseline`}),n}function Ft(e,t){let n=[];return(e.situation.kind!==`revision-assessment`||t.assessedRevision!==e.situation.assessedRevision)&&n.push({path:[`assessedRevision`],message:`Content conflict must identify the rejected revision assessment`}),t.currentRevision===t.assessedRevision&&n.push({path:[`currentRevision`],message:`Content conflict requires a current revision different from the assessed revision`}),n}function It(e,t){if(t.current.category===`record`)return[];let n=[];t.current.version!==e.expectedVersion&&n.push({path:[`current`,`version`],message:`A rejection after the version check must report the supplied baseline version`});let r=K(t.current.state,t.requestedState);return t.reason===`invalid-transition`&&r&&n.push({path:[`reason`],message:`invalid-transition requires a transition the lifecycle matrix disallows`}),t.reason===`precondition-failed`&&!r&&n.push({path:[`reason`],message:`precondition-failed requires a transition the lifecycle matrix allows`}),n}const Lt=_.strictObject({transition:G,error:jt}).superRefine(({transition:e,error:t},n)=>{for(let r of Nt(e,t.data))n.addIssue({code:`custom`,path:[`error`,`data`,...r.path],message:r.message})}),Rt={"lifecycle.get":{request:Et,response:Dt},"lifecycle.history":{request:Ot,response:kt},"lifecycle.transition":{request:G,response:Z},"lifecycle.committed":At,"lifecycle.rejected":Lt},zt={...Rt,"kind.register":{request:p,response:_.object({registered:_.boolean()})},"kind.list":{request:_.object({kind:_.string().min(1).optional()}),response:_.object({kinds:_.array(p)})},"relation-type.register":{request:a,response:_.object({registered:_.boolean()})},"relation-type.list":{request:_.object({type:_.string().min(1).optional()}),response:_.object({relationTypes:_.array(a)})},create:{request:s.omit({id:!0,revision:!0,timestamp:!0}).extend({id:f.shape.id.optional()}),response:_.object({artifact:s})},revise:{request:_.object({previous:f,statusPath:d.optional(),revision:s.omit({id:!0,revision:!0,timestamp:!0})}),response:_.object({artifact:s})},patch:{request:it,response:gt},resolve:{request:_.object({ref:f}),response:_.object({artifact:s.nullable()})},query:{request:i,response:_.object({artifacts:_.array(s)})},compare:{request:u,response:ee},"evidence.resolve":{request:de,response:he},resolveContext:{request:_.object({ref:f,selectors:T.optional(),maxDepth:_.number().int().min(1).max(20).default(5)}),response:_.object({context:k})},created:_.object({artifact:s}),revised:_.object({previous:f,artifact:s}),"relation.added":_.object({artifact:f,relation:o}),"observation.added":_.object({artifact:f,observation:c}),"status.changed":_.object({artifact:f,path:_.string().min(1),previous:_.unknown().optional(),current:_.unknown().optional()}),"kind.changed":_.object({kind:_.string().min(1),schemaVersion:m})},$=ue(`artifact`,zt),Bt=$.subjects;export{D as $,at as A,P as B,yt as C,Tt as D,R as E,st as F,rt as G,it as H,ht as I,Ye as J,Ze as K,ot as L,Xe as M,tt as N,wt as O,ft as P,O as Q,lt as R,V as S,q as T,gt as U,pt as V,mt as W,Je as X,qe as Y,Ie as Z,Ct as _,jt as a,Pe as at,J as b,Ot as c,xe as ct,Rt as d,he as dt,k as et,Z as f,X as g,H as h,At as i,T as it,j,K as k,kt as l,be as lt,Y as m,zt as n,w as nt,Et as o,Ne as ot,Mt as p,I as q,Bt as r,C as rt,Dt as s,Me as st,$ as t,Fe as tt,Lt as u,de as ut,L as v,G as w,W as x,St as y,ct as z};
|