arkgate 4.8.4 → 4.8.6

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 (70) hide show
  1. package/CHANGELOG.md +69 -2
  2. package/README.md +20 -11
  3. package/bin/lib/agent-homes.mjs +41 -6
  4. package/bin/lib/analysis-engine.mjs +8 -8
  5. package/bin/lib/ark-order-invariants.mjs +199 -13
  6. package/bin/lib/ark-order-sensors.mjs +4 -0
  7. package/bin/lib/ark-order-types.mjs +3 -0
  8. package/bin/lib/check-args.mjs +2 -0
  9. package/bin/lib/diagnostic-catalog.mjs +7 -3
  10. package/bin/lib/first-run-help.mjs +4 -4
  11. package/bin/lib/remediation.mjs +20 -5
  12. package/bin/lib/skill-catalog-apply.mjs +18 -1
  13. package/bin/lib/skill-install.mjs +4 -3
  14. package/bin/lib/upgrade-whats-new.mjs +1 -1
  15. package/dist/{diagnosticCatalog-DgTs0abp.d.ts → diagnosticCatalog-D_DI7qrZ.d.ts} +1 -1
  16. package/dist/eslint/index.cjs +5 -5
  17. package/dist/eslint/index.js +5 -5
  18. package/dist/index.cjs +17 -17
  19. package/dist/index.d.ts +5 -3
  20. package/dist/index.js +13 -13
  21. package/dist/nestjs/index.cjs +5 -5
  22. package/dist/nestjs/index.d.ts +1 -1
  23. package/dist/nestjs/index.js +5 -5
  24. package/dist/order/index.cjs +1 -1
  25. package/dist/order/index.d.ts +69 -9
  26. package/dist/order/index.js +1 -1
  27. package/dist/runtime/index.cjs +15 -15
  28. package/dist/runtime/index.d.ts +27 -4
  29. package/dist/runtime/index.js +15 -15
  30. package/dist/{types-D95drJ3_.d.ts → types-DrqsOiTY.d.ts} +21 -6
  31. package/docs/README.md +6 -4
  32. package/docs/agent-guide.md +6 -4
  33. package/docs/ai-gates.md +18 -4
  34. package/docs/arkorder.md +228 -0
  35. package/docs/configuration.md +14 -5
  36. package/docs/develop.md +10 -4
  37. package/docs/diagnostics.md +41 -4
  38. package/docs/enthusiast/how-to-agent-gates.md +1 -1
  39. package/docs/package-surface.md +14 -9
  40. package/docs/product-voice.md +3 -3
  41. package/docs/use.md +1 -1
  42. package/package.json +2 -1
  43. package/server.json +2 -2
  44. package/templates/agent-skills/README.md +1 -1
  45. package/templates/agent-skills/ark-adopt/SKILL.md +4 -4
  46. package/templates/agent-skills/ark-architect/SKILL.md +1 -1
  47. package/templates/agent-skills/ark-autopilot/SKILL.md +4 -4
  48. package/templates/agent-skills/ark-contract/SKILL.md +1 -1
  49. package/templates/agent-skills/ark-coverage/SKILL.md +3 -2
  50. package/templates/agent-skills/ark-explain/SKILL.md +3 -2
  51. package/templates/agent-skills/ark-explore/SKILL.md +3 -2
  52. package/templates/agent-skills/ark-fix/SKILL.md +1 -1
  53. package/templates/agent-skills/ark-loop/SKILL.md +1 -1
  54. package/templates/agent-skills/ark-place/SKILL.md +8 -8
  55. package/templates/agent-skills/ark-runtime/SKILL.md +3 -0
  56. package/templates/agent-skills/ark-think/SKILL.md +2 -2
  57. package/templates/agent-skills/ark-upgrade/SKILL.md +3 -3
  58. package/templates/skills/ark-adopt.md +4 -4
  59. package/templates/skills/ark-architect.md +1 -1
  60. package/templates/skills/ark-autopilot.md +4 -4
  61. package/templates/skills/ark-contract.md +1 -1
  62. package/templates/skills/ark-coverage.md +3 -2
  63. package/templates/skills/ark-explain.md +3 -2
  64. package/templates/skills/ark-explore.md +3 -2
  65. package/templates/skills/ark-fix.md +1 -1
  66. package/templates/skills/ark-loop.md +1 -1
  67. package/templates/skills/ark-place.md +8 -8
  68. package/templates/skills/ark-runtime.md +3 -0
  69. package/templates/skills/ark-think.md +2 -2
  70. package/templates/skills/ark-upgrade.md +3 -3
@@ -1 +1 @@
1
- var k=Object.defineProperty;var i=(e,r)=>k(e,"name",{value:r,configurable:!0});var a=class extends Error{static{i(this,"ArkOrderError")}code;constructor(r,t){super(t),this.name="ArkOrderError",this.code=r}};var p=7;function u(e){let r=2166136261;for(let t=0;t<e.length;t+=1)r^=e.charCodeAt(t),r=Math.imul(r,16777619);return`fnv1a-${(r>>>0).toString(16).padStart(8,"0")}`}i(u,"deterministicHash");function m(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(m).join(",")}]`;let r=e;return`{${Object.keys(r).sort().map(t=>`${JSON.stringify(t)}:${m(r[t])}`).join(",")}}`}i(m,"stableSerialize");var x=["update","patch","set","mutate"];function g(e){return x.includes(e)}i(g,"isForbiddenPlaneMethod");function w(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}i(w,"isPrimitive");function f(e,r){let t=Object.keys(e);if(t.length===0&&r==="\u03BE")throw new a("ARKORDER_EMPTY_XI","\u03BE must name at least one slow mode");let s={};for(let n of t.sort()){let o=e[n];if(!w(o))throw new a("ARKORDER_NESTED_XI",`${r} key ${JSON.stringify(n)} is not a slow primitive (nested values are microstate)`);s[n]=o}return Object.freeze(s)}i(f,"freezeRecord");function S(e,r){let t=Object.keys(e).length;if(t===0)throw new a("ARKORDER_EMPTY_XI","\u03BE must name at least one slow mode");if(t>r)throw new a("ARKORDER_TOO_MANY_PARAMS",`\u03BE has ${t} keys; maxXiKeys is ${r} (Haken: few slow modes)`)}i(S,"assertXiKeyCap");function P(e,r){if(!r)return;let t=r.properties??{},s=r.additionalProperties!==!1;for(let n of Object.keys(e)){let o=t[n];if(!o){if(!s)throw new a("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(n)} is not in xiSchema.properties`);continue}if(o.enum&&!o.enum.some(d=>d===e[n]))throw new a("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(n)} value is not in enum`);if(o.type==="null"&&e[n]!==null)throw new a("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(n)} must be null`);if(o.type&&o.type!=="null"&&typeof e[n]!==o.type)throw new a("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(n)} must be ${o.type}`)}}i(P,"assertXiSchema");function A(e,r){return u(m({xi:e,sigma:r}))}i(A,"hashReleasePayload");function y(e){S(e.xi,e.maxXiKeys);let r=f(e.xi,"\u03BE");P(r,e.xiSchema);let t=f(e.sigma??{},"\u03C3");return Object.freeze({version:e.version,hash:A(r,t),xi:r,sigma:t,releasedAt:e.now})}i(y,"createFrozenRelease");function E(e,r,t=[]){let s=r.kind;for(let n of t)if(n.escalateKinds?.includes(s))return{kind:"escalate",event:r,reason:`pack ${n.id} slaves kind ${JSON.stringify(s)} to a pattern change`};return e.allowedKinds.includes(s)?{kind:"absorb",event:r}:{kind:"escalate",event:r,reason:`kind ${JSON.stringify(s)} is not allowed by h(\u03BE); field cannot rewrite the pattern`}}i(E,"classifyIngest");function b(e,r){let t=new Set(e.allowedKinds),s=new Set(r.allowedKinds),n=new Set;for(let o of t)s.has(o)||n.add(o);for(let o of s)t.has(o)||n.add(o);for(let o of r.invalidated)n.add(o);return{blastRadius:[...n].sort(),invalidations:[...r.invalidated].sort()}}i(b,"blastRadiusOf");function O(e){let r={...e.current.xi};for(let[l,c]of Object.entries(e.delta)){if(c===void 0){delete r[l];continue}r[l]=c}let t=y({xi:r,sigma:{...e.current.sigma},version:e.current.version+1,now:e.now,maxXiKeys:e.maxXiKeys,xiSchema:e.xiSchema});if(t.hash===e.current.hash)throw new a("ARKORDER_EMPTY_BLAST","delta does not change \u03BE; that is not a pattern change");let s=e.projector(e.current,e.current.sigma),n=e.projector(t,t.sigma),{blastRadius:o,invalidations:d}=b(s,n);if(o.length===0)throw new a("ARKORDER_EMPTY_BLAST","pattern change has empty blast radius; that key is not an order parameter");return{nextXi:t.xi,blastRadius:o,invalidations:d}}i(O,"proposePatternChange");function X(e){if(typeof e?.projector!="function")throw new a("ARKORDER_SCHEMA","createOrderPlane requires a consumer projector h(\u03BE)");let r=typeof e.maxXiKeys=="number"&&e.maxXiKeys>0?e.maxXiKeys:7,t=e.packs??[],s=e.clocks??{now(){return 0}},n=null,o=0;function d(){if(!n)throw new a("ARKORDER_NO_RELEASE","no pattern is frozen; call release(\u03BE) first");return n}i(d,"requireCurrent");let l={release(c,R){return o+=1,n=y({xi:c,sigma:R,version:o,now:s.now(),maxXiKeys:r,xiSchema:e.xiSchema}),n},project(){let c=d();return e.projector(c,c.sigma)},ingest(c){let R=d(),h=e.projector(R,R.sigma);return E(h,c,t)},proposeRelease(c){return O({current:d(),delta:c,projector:e.projector,maxXiKeys:r,xiSchema:e.xiSchema,now:s.now()})},current(){return n}};for(let c of["update","patch","set","mutate"])Object.defineProperty(l,c,{enumerable:!1,configurable:!1,get(){throw new a("ARKORDER_FORBIDDEN_METHOD",`${c}() is not a Haken operation; freeze a pattern with release() or proposeRelease()`)}});return Object.freeze(l)}i(X,"createOrderPlane");export{a as ArkOrderError,p as DEFAULT_MAX_XI_KEYS,X as createOrderPlane};
1
+ var H=Object.defineProperty;var n=(e,r)=>H(e,"name",{value:r,configurable:!0});var i=class extends Error{static{n(this,"ArkOrderError")}code;constructor(r,t){super(t),this.name="ArkOrderError",this.code=r}};var E=7;var S=["lte","lt","gte","gt"];function u(e){let r=2166136261;for(let t=0;t<e.length;t+=1)r^=e.charCodeAt(t),r=Math.imul(r,16777619);return`fnv1a-${(r>>>0).toString(16).padStart(8,"0")}`}n(u,"deterministicHash");function R(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(R).join(",")}]`;let r=e;return`{${Object.keys(r).sort().map(t=>`${JSON.stringify(t)}:${R(r[t])}`).join(",")}}`}n(R,"stableSerialize");function L(e){return e.kind==="absorb"?"send":e.kind==="escalate_up"&&e.target==="human"?"raises":"none"}n(L,"ingestTravelAction");var F=["update","patch","set","mutate"];function b(e){return F.includes(e)}n(b,"isForbiddenPlaneMethod");function B(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}n(B,"isPrimitive");function m(e,r){let t=Object.keys(e);if(t.length===0&&r==="\u03BE")throw new i("ARKORDER_EMPTY_XI","\u03BE must name at least one slow mode");let s={};for(let a of t.sort()){let o=e[a];if(!B(o))throw new i("ARKORDER_NESTED_XI",`${r} key ${JSON.stringify(a)} is not a slow primitive (nested values are microstate)`);s[a]=o}return Object.freeze(s)}n(m,"freezeRecord");function $(e,r){let t=Object.keys(e).length;if(t===0)throw new i("ARKORDER_EMPTY_XI","\u03BE must name at least one slow mode");if(t>r)throw new i("ARKORDER_TOO_MANY_PARAMS",`\u03BE has ${t} keys; maxXiKeys is ${r} (Haken: few slow modes)`)}n($,"assertXiKeyCap");function Y(e,r){if(!r)return;let t=r.properties??{},s=r.additionalProperties!==!1;for(let a of Object.keys(e)){let o=t[a];if(!o){if(!s)throw new i("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(a)} is not in xiSchema.properties`);continue}if(o.enum&&!o.enum.some(l=>l===e[a]))throw new i("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(a)} value is not in enum`);if(o.type==="null"&&e[a]!==null)throw new i("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(a)} must be null`);if(o.type&&o.type!=="null"&&typeof e[a]!==o.type)throw new i("ARKORDER_SCHEMA",`\u03BE key ${JSON.stringify(a)} must be ${o.type}`)}}n(Y,"assertXiSchema");function I(e,r){if(typeof r=="string"&&Object.prototype.hasOwnProperty.call(e,"catalogReleaseId"))return r}n(I,"catalogDigestFor");function P(e,r,t){let s=I(e,t);return s!==void 0?u(R({xi:e,sigma:r,catalogDigest:s})):u(R({xi:e,sigma:r}))}n(P,"hashReleasePayload");function U(e,r){let t=I(e,r);return t!==void 0?u(R({xi:e,catalogDigest:t})):u(R({xi:e}))}n(U,"hashXiIdentity");function D(e){return u(R({sigma:e}))}n(D,"hashSigmaIdentity");function T(e,r){return R(e)===R(r)}n(T,"xiRecordsEqual");function X(e,r){if(e&&!T(e.xi,r))throw new i("ARKORDER_UNVALVED_RELEASE","\u03BE is frozen; change the pattern with proposeRelease then apply(ProposeResult)")}n(X,"assertUnvalvedRelease");function x(e){$(e.xi,e.maxXiKeys);let r=m(e.xi,"\u03BE");J(r),Y(r,e.xiSchema);let t=m(e.sigma??{},"\u03C3");return Object.freeze({version:e.version,hash:P(r,t,e.catalogDigest),xiHash:U(r,e.catalogDigest),sigmaHash:D(t),xi:r,sigma:t,releasedAt:e.now})}n(x,"createFrozenRelease");function K(e){let r=m(e.sigma,"\u03C3");return Object.freeze({version:e.current.version,hash:P(e.current.xi,r,e.catalogDigest),xiHash:e.current.xiHash,sigmaHash:D(r),xi:e.current.xi,sigma:r,releasedAt:e.now})}n(K,"refreshSigmaRecord");var z=/^(ttl|freshUntil|fresh_until|maxAge|max_age)$/i;function J(e){for(let r of Object.keys(e))if(z.test(r))throw new i("ARKORDER_XI_TTL",`\u03BE key ${JSON.stringify(r)} is a freshness field; TTL belongs on \u03C3, never on \u03BE`)}n(J,"assertXiHasNoTtl");function A(e,r){if(!r||r.cannotObserve.length===0)return;let t=new Set(r.cannotObserve);for(let s of e.allowedKinds)if(t.has(s))throw new i("ARKORDER_INFORMATION_BUDGET",`projection allows ${JSON.stringify(s)}; informationBudget.cannotObserve forbids it`)}n(A,"assertInformationBudget");function C(e){if(e.maxAgeMs===void 0)return;let r=e.sigma.freshUntil;if(typeof r=="number"){if(e.now>r)throw new i("ARKORDER_STALE_SIGMA","\u03C3 freshUntil has elapsed; \u03BE does not TTL");return}let t=typeof e.sigma.releasedAt=="number"?e.sigma.releasedAt:e.releasedAt;if(typeof t=="number"&&e.now-t>e.maxAgeMs)throw new i("ARKORDER_STALE_SIGMA","\u03C3 is older than sigmaMaxAgeMs; \u03BE does not TTL")}n(C,"assertSigmaFresh");function O(e){return u(R({kind:e.kind,payload:e.payload??null}))}n(O,"fieldEventIdentity");function G(e,r){return{event:e,xiHash:r,eventId:O(e)}}n(G,"bindResidual");var V=new Set(S);function q(e){return typeof e=="string"&&V.has(e)}n(q,"isCapacityOp");function _(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}n(_,"numericLeaf");function W(e,r,t){return r==="lte"?e<=t:r==="lt"?e<t:r==="gte"?e>=t:e>t}n(W,"compareCapacity");function f(e){return typeof e=="function"?!0:e===null||typeof e!="object"?!1:Array.isArray(e)?e.some(f):Object.values(e).some(f)}n(f,"packHasFunction");function Q(e,r,t){let s=t.capacity??[];for(let a of s){if(f(a)||!q(a.op))return"pack";if(a.kind!==e.kind)continue;let o=e.payload&&typeof e.payload=="object"&&!Array.isArray(e.payload)?_(e.payload[a.payloadKey]):void 0,l=_(r[a.sigmaKey]);if(o===void 0||l===void 0)return"pack";if(!W(o,a.op,l))return"capacity"}return"ok"}n(Q,"evaluateCapacity");function j(e,r,t=[],s="",a=Object.freeze({})){let o=r.kind,l=G(r,s);for(let d of t){if(f(d.capacity)||f(d.escalateKinds))return{...l,kind:"hold",reasonCode:"pack",reason:`pack ${d.id} is not data-only; user predicates are forbidden`};if(d.escalateKinds?.includes(o)){let p=d.escalateTarget??"human";return{...l,kind:"escalate_up",reasonCode:"pack",reason:`pack ${d.id} slaves kind ${JSON.stringify(o)} to a pattern change`,target:p}}}if(!e.allowedKinds.includes(o))return{...l,kind:"escalate_up",reasonCode:"not-in-pattern",reason:`kind ${JSON.stringify(o)} is not allowed by h(\u03BE); field cannot rewrite the pattern`,target:"human"};for(let d of t){let p=Q(r,a,d);if(p!=="ok")return{...l,kind:"hold",reasonCode:p,reason:p==="capacity"?`pack ${d.id} capacity ${JSON.stringify(r.kind)} does not hold`:`pack ${d.id} capacity is not numeric data`}}return{...l,kind:"absorb"}}n(j,"classifyIngest");function v(e,r){let t=new Set(e.allowedKinds),s=new Set(r.allowedKinds),a=new Set;for(let o of t)s.has(o)||a.add(o);for(let o of s)t.has(o)||a.add(o);for(let o of r.invalidated)a.add(o);return{blastRadius:[...a].sort(),invalidations:[...r.invalidated].sort()}}n(v,"blastRadiusOf");function M(e){let r={...e.current.xi};for(let[d,p]of Object.entries(e.delta)){if(p===void 0){delete r[d];continue}r[d]=p}let t=x({xi:r,sigma:{...e.current.sigma},version:e.current.version+1,now:e.now,maxXiKeys:e.maxXiKeys,xiSchema:e.xiSchema,catalogDigest:e.catalogDigest});if(t.hash===e.current.hash)throw new i("ARKORDER_EMPTY_BLAST","delta does not change \u03BE; that is not a pattern change");let s=e.projector(e.current,e.current.sigma),a=e.projector(t,t.sigma),{blastRadius:o,invalidations:l}=v(s,a);if(o.length===0)throw new i("ARKORDER_EMPTY_BLAST","pattern change has empty blast radius; that key is not an order parameter");return{nextXi:t.xi,blastRadius:o,invalidations:l}}n(M,"proposePatternChange");function N(e){let r=x({xi:{...e.proposal.nextXi},sigma:{...e.current.sigma},version:e.current.version+1,now:e.now,maxXiKeys:e.maxXiKeys,xiSchema:e.xiSchema,catalogDigest:e.catalogDigest});if(T(r.xi,e.current.xi))throw new i("ARKORDER_EMPTY_BLAST","delta does not change \u03BE; that is not a pattern change");let t=e.projector(e.current,e.current.sigma),s=e.projector(r,r.sigma),{blastRadius:a}=v(t,s);if(a.length===0)throw new i("ARKORDER_EMPTY_BLAST","pattern change has empty blast radius; that key is not an order parameter");return r}n(N,"applyProposedRelease");function Z(e){if(typeof e?.projector!="function")throw new i("ARKORDER_SCHEMA","createOrderPlane requires a consumer projector h(\u03BE)");let r=typeof e.maxXiKeys=="number"&&e.maxXiKeys>0?e.maxXiKeys:7,t=e.packs??[],s=e.clocks??{now(){return 0}},a=e.store,o=a?.load()??null,l=o?.version??0,d=e.catalogDigest;function p(c){return o=c,l=c.version,a?.save(c),c}n(p,"persist");function y(){if(!o)throw new i("ARKORDER_NO_RELEASE","no pattern is frozen; call release(\u03BE) first");return o}n(y,"requireCurrent");let k={release(c,g){return o&&X(o,m(c,"\u03BE")),p(x({xi:c,sigma:g,version:l+1,now:s.now(),maxXiKeys:r,xiSchema:e.xiSchema,catalogDigest:d}))},project(){let c=y(),g=e.projector(c,c.sigma);return A(g,e.informationBudget),g},ingest(c){let g=y();try{C({sigma:g.sigma,now:s.now(),maxAgeMs:e.sigmaMaxAgeMs,releasedAt:g.releasedAt})}catch(h){if(h instanceof i&&h.code==="ARKORDER_STALE_SIGMA")return{kind:"hold",event:c,xiHash:g.xiHash,eventId:O(c),reasonCode:"stale-sigma",reason:h.message};throw h}let w=e.projector(g,g.sigma);return A(w,e.informationBudget),j(w,c,t,g.xiHash,g.sigma)},proposeRelease(c){return M({current:y(),delta:c,projector:e.projector,maxXiKeys:r,xiSchema:e.xiSchema,now:s.now(),catalogDigest:d})},apply(c){return p(N({current:y(),proposal:c,projector:e.projector,maxXiKeys:r,xiSchema:e.xiSchema,now:s.now(),catalogDigest:d}))},refreshSigma(c){return p(K({current:y(),sigma:c,now:s.now(),catalogDigest:d}))},current(){return o}};for(let c of["update","patch","set","mutate"])Object.defineProperty(k,c,{enumerable:!1,configurable:!1,get(){throw new i("ARKORDER_FORBIDDEN_METHOD",`${c}() is not a Haken operation; freeze a pattern with release() or proposeRelease()`)}});return Object.freeze(k)}n(Z,"createOrderPlane");function ee(e){let r=e??null;return{load(){return r},save(t){r=t}}}n(ee,"createMemoryReleaseStore");export{i as ArkOrderError,S as CAPACITY_OPS,E as DEFAULT_MAX_XI_KEYS,ee as createMemoryReleaseStore,Z as createOrderPlane,L as ingestTravelAction};