vibe64 0.1.47 → 0.1.49
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/bin/run.js +1734 -1687
- package/bin/server.js +75 -75
- package/bin/upgrade-state.js +4539 -4471
- package/dist/assets/GithubBrowserTabs-BwpiRS2u.js +1 -0
- package/dist/assets/{LocalDatabaseServer-6VzPWZxG.js → LocalDatabaseServer-u_Ky7bNS.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-TLwqAxDo.js → Vibe64AuthSettingsButton-BCwswT1G.js} +1 -1
- package/dist/assets/{Vibe64DashboardShell-B4dQ-oHD.js → Vibe64DashboardShell-CWlgrR2B.js} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-Bh5WIPOj.js → Vibe64DatabaseWorkspace-Dhs8_H0P.js} +1 -1
- package/dist/assets/Vibe64OutputControls-Dn548CZa.js +8 -0
- package/dist/assets/{Vibe64RepositoryWorkspace-idDg94lc.js → Vibe64RepositoryWorkspace-C-8S4JUF.js} +1 -1
- package/dist/assets/{Vibe64SessionFiles-Z9zxosyl.js → Vibe64SessionFiles-Cx6J7DDN.js} +2 -3
- package/dist/assets/{Vibe64UiStoryboardView-CrCDWMdR.js → Vibe64UiStoryboardView-DHyhJiWS.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-TqsxvGSf.js → Vibe64UnavailableSessions-Da4RxIhA.js} +1 -1
- package/dist/assets/{_sessionId_-7F1VGOou.js → _sessionId_-DCpgDPSI.js} +1 -1
- package/dist/assets/_slug_-BbEWp01a.js +25 -0
- package/dist/assets/{_slug_-B16mTWjj.css → _slug_-DerKOisL.css} +1 -1
- package/dist/assets/{access-Cx9RH95J.js → access-D4di2sCr.js} +1 -1
- package/dist/assets/{app-DPx4KKOa.js → app-Adr9Iz8p.js} +1 -1
- package/dist/assets/asyncModuleRecovery-DJsn5NrL.js +1 -0
- package/dist/assets/{changes-DYsuQLFW.js → changes-3Dd1O8Lu.js} +1 -1
- package/dist/assets/client-BAXHGUOC.js +1 -0
- package/dist/assets/{client-BYsDPxR3.js → client-CCZIu6yc.js} +1 -1
- package/dist/assets/{conversation-3ln-WnbL.css → conversation-CSDHdGDb.css} +1 -1
- package/dist/assets/conversation-DG9lp25w.js +8 -0
- package/dist/assets/conversation-ErAO1CmH.js +13 -0
- package/dist/assets/{dashboard-CWswAbYP.js → dashboard-0tCzDYCX.js} +1 -1
- package/dist/assets/english-definitions-DeiQ-jTT.js +1 -0
- package/dist/assets/env-DsyQ2MFX.js +1 -0
- package/dist/assets/{health-C0f6s-G1.js → health-DyTXU-nb.js} +1 -1
- package/dist/assets/{history-BQjETNB9.js → history-BXGAdPMI.js} +1 -1
- package/dist/assets/{incoming-COpY201m.js → incoming-yajkdGBY.js} +1 -1
- package/dist/assets/{index-MWACm8Pp.css → index-B-dukXUB.css} +1 -1
- package/dist/assets/index-CGz4Yow6.js +136 -0
- package/dist/assets/{integrations-BBkvNRHu.js → integrations-BMrXET36.js} +10 -2
- package/dist/assets/issues-kc1XBZCK.js +1 -0
- package/dist/assets/{learning-B8_wHoe1.js → learning-CIE5ghYv.js} +1 -1
- package/dist/assets/linkPath-Ch9eft18.js +1 -0
- package/dist/assets/{placement-DXvgK433.js → placement-BNmlke_j.js} +1 -1
- package/dist/assets/placement-DYM3JJ-F.js +1 -0
- package/dist/assets/publish-DTh6amqi.js +3 -0
- package/dist/assets/pull-requests-CbfGSSIh.js +1 -0
- package/dist/assets/{repository-BNPt7UWc.js → repository-BstMh-bG.js} +1 -1
- package/dist/assets/settings-Bf8C6dls.js +1 -0
- package/dist/assets/{studioGateApi-BVdclhPL.js → studioGateApi-mkX1eOTX.js} +1 -1
- package/dist/assets/{studioUrls-CGKCbM_d.js → studioUrls-B0-GdWh8.js} +1 -1
- package/dist/assets/useArchivedVibe64Sessions-DIOpfUxD.js +1 -0
- package/dist/assets/useCommand-CVuya6vG.js +1 -0
- package/dist/assets/useEndpointResource-7-YDfAxX.js +1 -0
- package/dist/assets/usePaths-Y6UuQxmI.js +1 -0
- package/dist/assets/{useUiFeedback-B51xtCAK.js → useUiFeedback-Bd3rao6E.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-ChJOU2SD.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-BE_yXZFn.js → useVibe64DatabaseTools-DKV-TeNJ.js} +1 -1
- package/dist/assets/{useVibe64ProjectScope-D7b8n1gx.js → useVibe64ProjectScope-DXjsKKhl.js} +1 -1
- package/dist/assets/useVibe64SessionData-BkIHUrP5.js +1 -0
- package/dist/assets/useVibe64SessionSelection-N8wX5oqo.js +1 -0
- package/dist/assets/{useVibe64SystemGraph-CDDcsye4.js → useVibe64SystemGraph-Db_eD-X8.js} +1 -1
- package/dist/assets/{useVibe64Terminal-Zr3Mig2L.js → useVibe64Terminal-B9EWJ9Ba.js} +2 -2
- package/dist/assets/vibe64ProjectScope.local-l5_-E6pq.js +1 -0
- package/dist/assets/vibe64RepositoryRealtime-CHT4-6VN.js +1 -0
- package/dist/assets/vibe64SessionFocus-CS6Ex53G.js +1 -0
- package/dist/assets/vibe64SessionFocus-CSm4YJQD.css +1 -0
- package/dist/assets/vibe64SessionRequestConfig-xIx-5jxQ.js +1 -0
- package/dist/index.html +26 -22
- package/docs/colleague-usage/ai-accounts.md +6 -2
- package/docs/colleague-usage/ai-balance-and-allowance.md +15 -2
- package/docs/colleague-usage/coding-agent-failures.md +2 -1
- package/docs/colleague-usage/coding-agent-goals.md +8 -3
- package/docs/colleague-usage/coding-agents.md +16 -0
- package/docs/colleague-usage/github-work.md +14 -0
- package/docs/colleague-usage/preview-browser-checks.md +5 -3
- package/docs/colleague-usage/project-setup.md +6 -3
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +3 -1
- package/docs/colleague-usage/sessions.md +35 -7
- package/docs/colleague-usage/starter-apps.md +3 -0
- package/docs/colleague-usage/temporary-chat-context.md +2 -1
- package/docs/colleague-usage/temporary-chats.md +17 -5
- package/node_modules/@jskit-ai/assistant-core/CHANGELOG.md +539 -0
- package/node_modules/@jskit-ai/assistant-core/locales/en.json +383 -0
- package/node_modules/@jskit-ai/assistant-core/package.json +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/CHANGELOG.md +138 -0
- package/node_modules/@jskit-ai/assistant-runtime/README.md +2 -1
- package/node_modules/@jskit-ai/assistant-runtime/locales/en.json +137 -0
- package/node_modules/@jskit-ai/assistant-runtime/package.json +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/assistantConfigRepository.js +223 -203
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/conversationsRepository.js +286 -266
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/messagesRepository.js +270 -250
- package/node_modules/@jskit-ai/assistant-voice/locales/en.json +182 -0
- package/node_modules/@jskit-ai/assistant-voice/package.json +3 -2
- package/node_modules/@jskit-ai/connector-google-calendar/CHANGELOG.md +83 -0
- package/node_modules/@jskit-ai/connector-google-calendar/locales/en.json +91 -0
- package/node_modules/@jskit-ai/connector-google-calendar/package.json +4 -3
- package/node_modules/@jskit-ai/connectors-catalog/CHANGELOG.md +1722 -0
- package/node_modules/@jskit-ai/connectors-catalog/README.md +11 -0
- package/node_modules/@jskit-ai/connectors-catalog/locales/en.json +3139 -0
- package/node_modules/@jskit-ai/connectors-catalog/package.json +5 -4
- package/node_modules/@jskit-ai/connectors-core/CHANGELOG.md +183 -0
- package/node_modules/@jskit-ai/connectors-core/locales/en.json +92 -0
- package/node_modules/@jskit-ai/connectors-core/package.json +3 -2
- package/node_modules/@jskit-ai/http-runtime/CHANGELOG.md +31 -0
- package/node_modules/@jskit-ai/http-runtime/locales/en.json +14 -0
- package/node_modules/@jskit-ai/http-runtime/package.json +3 -2
- package/node_modules/@jskit-ai/kernel/CHANGELOG.md +182 -0
- package/node_modules/@jskit-ai/kernel/locales/en.json +94 -0
- package/node_modules/@jskit-ai/kernel/package.json +6 -2
- package/node_modules/@jskit-ai/payments-core/CHANGELOG.md +128 -0
- package/node_modules/@jskit-ai/payments-core/locales/en.json +77 -0
- package/node_modules/@jskit-ai/payments-core/package.json +3 -2
- package/node_modules/@jskit-ai/realtime/CHANGELOG.md +20 -0
- package/node_modules/@jskit-ai/realtime/locales/en.json +14 -0
- package/node_modules/@jskit-ai/realtime/package.json +3 -2
- package/node_modules/@jskit-ai/resource-core/package.json +1 -1
- package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
- package/node_modules/@jskit-ai/uploads-runtime/CHANGELOG.md +35 -0
- package/node_modules/@jskit-ai/uploads-runtime/locales/en.json +15 -0
- package/node_modules/@jskit-ai/uploads-runtime/package.json +3 -2
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +49 -48
- package/node_modules/@local/vibe64-execution/src/server/gitTurnCheckpointCommand.js +1327 -0
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +430 -390
- package/node_modules/@local/vibe64-genesis/src/server/index.js +45 -45
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +119 -119
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +57 -57
- package/node_modules/@local/vibe64-sessions/package.json +2 -1
- package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +195 -175
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1385 -1362
- package/package.json +15 -15
- package/server.bundle.mjs +44206 -42825
- package/dist/assets/GithubBrowserTabs-D-Z3TlA8.js +0 -1
- package/dist/assets/Vibe64OutputControls-DtybwgL3.js +0 -8
- package/dist/assets/_slug_-Bq84T_Iv.js +0 -24
- package/dist/assets/conversation-Bn7wpATa.js +0 -2
- package/dist/assets/conversation-CNcCrV-R.js +0 -16
- package/dist/assets/definitions-CEbi4qae.js +0 -1
- package/dist/assets/env-X7EOFLtl.js +0 -1
- package/dist/assets/index-CBo1BEk6.js +0 -138
- package/dist/assets/issues-BiSiUd5o.js +0 -1
- package/dist/assets/placement-B5T1LR7m.js +0 -1
- package/dist/assets/publish-CeLZE2AG.js +0 -3
- package/dist/assets/pull-requests-pTdQOT7i.js +0 -1
- package/dist/assets/settings-lecRzZ-r.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-DHYRnyJD.js +0 -1
- package/dist/assets/useCommand-Epd2yHhQ.js +0 -1
- package/dist/assets/useEndpointResource-DBRQISI_.js +0 -1
- package/dist/assets/usePaths-DdAnjVDj.js +0 -1
- package/dist/assets/useVibe64ConversationLog-DboM3tYN.js +0 -1
- package/dist/assets/useVibe64SessionData-CreWtQAO.js +0 -1
- package/dist/assets/useVibe64SessionSelection-CDaX4uwY.js +0 -1
- package/dist/assets/vibe64ProjectScope.local-BxTBYuRg.js +0 -1
- package/dist/assets/vibe64RepositoryRealtime-C-J0I5jY.js +0 -1
- package/dist/assets/vibe64SessionFocus-DSW5Irm6.css +0 -1
- package/dist/assets/vibe64SessionFocus-DzqbVq60.js +0 -1
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { createRequire as __vibe64CreateRequire } from 'node:module';const require=__vibe64CreateRequire(import.meta.url);
|
|
2
|
-
import{execFile as
|
|
3
|
-
if(!ze.test(n))throw new TypeError(`${e} must match ${ze.toString()}.`);return n}function
|
|
4
|
-
freeze({});if(!
|
|
5
|
-
for(let[o,s]of Object.entries(t)){let i=String(o||"").trim();if(!
|
|
2
|
+
import{execFile as Sn}from"node:child_process";import{fileURLToPath as In}from"node:url";import _n from"node:path";var Pn=Object.freeze(["none","pending","committed","rolledBack","unknown"]);function v(t,{fallback:e=""}={}){return String(t||"").trim()||e}function b(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}function P(t){return String(t??"").trim()}var Fn=2*1024*1024,Un=32*1024*1024,Vn=2*1024*1024;import{execFile as $t,spawn as Gn}from"node:child_process";import{promisify as Ft}from"node:util";var Yn=Ft($t);var ze=/^[a-z][a-z0-9_.-]*$/u,Vt=/^[A-Za-z_$][A-Za-z0-9_$]*$/u;function Le(t,e){let n=String(t||"").trim().toLowerCase();
|
|
3
|
+
if(!ze.test(n))throw new TypeError(`${e} must match ${ze.toString()}.`);return n}function le(t,e){if(t==null)return Object.
|
|
4
|
+
freeze({});if(!b(t))throw new TypeError(`${e} must be an object mapping local names to capability ids.`);let n={},r=new Set;
|
|
5
|
+
for(let[o,s]of Object.entries(t)){let i=String(o||"").trim();if(!Vt.test(i))throw new TypeError(`${e} local name "${i}" \
|
|
6
6
|
must be a JavaScript identifier.`);let a=Le(s,`${e}.${i}`);if(r.has(a))throw new TypeError(`${e} declares capability "${a}\
|
|
7
|
-
" more than once.`);r.add(a),n[i]=a}return Object.freeze(n)}function
|
|
7
|
+
" more than once.`);r.add(a),n[i]=a}return Object.freeze(n)}function Bt(t){let e=new Map;for(let[n,r]of Object.entries(t))
|
|
8
8
|
for(let o of Object.keys(r)){if(e.has(o))throw new TypeError(`Provider local name "${o}" is declared by both ${e.get(o)}\
|
|
9
|
-
and ${n}.`);e.set(o,n)}}function
|
|
9
|
+
and ${n}.`);e.set(o,n)}}function ue(t,e){if(t==null)return null;if(typeof t!="function")throw new TypeError(`${e} must \
|
|
10
10
|
be a function when provided.`);return t}function X({id:t,requires:e={},optional:n={},provides:r={},setup:o,boot:s=null,shutdown:i=null}={}){
|
|
11
|
-
let a=Le(t,"Provider id"),c=
|
|
12
|
-
provides:
|
|
13
|
-
optional:
|
|
14
|
-
tration is closed after the first payload is resolved.");let
|
|
15
|
-
is required.");if(typeof
|
|
16
|
-
|
|
17
|
-
isFinite(c)?Number(c):0,contribute:
|
|
18
|
-
(
|
|
19
|
-
freeze({...
|
|
11
|
+
let a=Le(t,"Provider id"),c=le(e,`${a}.requires`),l=le(n,`${a}.optional`),u=le(r,`${a}.provides`);Bt({requires:c,optional:l,
|
|
12
|
+
provides:u});let d=ue(o,`${a}.setup`);if(!d)throw new TypeError(`${a}.setup is required.`);return Object.freeze({id:a,requires:c,
|
|
13
|
+
optional:l,provides:u,setup:d,boot:ue(s,`${a}.boot`),shutdown:ue(i,`${a}.shutdown`)})}var $e="public";function Fe(){let t=[],e=new Set,n=!1;function r({id:a,order:c=0,contribute:l}={}){if(n)throw new Error("Bootstrap regis\
|
|
14
|
+
tration is closed after the first payload is resolved.");let u=v(a);if(!u)throw new TypeError("Bootstrap contributor id \
|
|
15
|
+
is required.");if(typeof l!="function")throw new TypeError(`Bootstrap contributor "${u}" requires contribute().`);if(e.has(
|
|
16
|
+
u))throw new Error(`Bootstrap contributor "${u}" is duplicated.`);return e.add(u),t.push(Object.freeze({id:u,order:Number.
|
|
17
|
+
isFinite(c)?Number(c):0,contribute:l})),i}async function o(a={}){n=!0;let c={},l=t.map((u,d)=>({entry:u,index:d})).sort(
|
|
18
|
+
(u,d)=>u.entry.order-d.entry.order||u.index-d.index).map(({entry:u})=>u);for(let u of l){let d=await u.contribute(Object.
|
|
19
|
+
freeze({...b(a)?a:{},payload:Object.freeze({...c})}));c={...c,...b(d)?d:{}}}return Object.freeze(c)}function s(){return Object.
|
|
20
20
|
freeze({sealed:n,contributorIds:Object.freeze(t.map(a=>a.id).sort())})}let i=Object.freeze({register:r,resolve:o,diagnostics:s});
|
|
21
21
|
return i}var qt=X({id:"runtime.bootstrap",requires:{http:"runtime.http"},provides:{bootstrap:"runtime.bootstrap"},setup({
|
|
22
22
|
http:t}){let e=Fe();return t.router.register("GET","/api/bootstrap",{auth:$e,meta:{tags:["bootstrap"],summary:"Resolve a\
|
|
@@ -43,8 +43,8 @@ ues.`);if(o&&e.additionalProperties!==!0)throw new Error(`Object field "${t}" on
|
|
|
43
43
|
if(r&&e.additionalProperties===!0)throw new Error(`Object field "${t}" cannot define both values and additionalPropertie\
|
|
44
44
|
s: true.`);if(n){if(!de(e.schema))throw new Error(`Object field "${t}" must define schema as a Schema instance.`);return{
|
|
45
45
|
kind:"nested",schema:e.schema,allowAdditionalProperties:e.additionalProperties===!0}}return r?{kind:"map",valuesConfig:q(
|
|
46
|
-
t,e)}:e.additionalProperties===!0?{kind:"opaque"}:{kind:"plain"}}function j(t){return t?.type==="number"||t?.type==="integer"||t?.type==="epochMilliseconds"||t?.type==="epochSeconds"}var fe="^(?:0|-?[1-9]\\d*)$",
|
|
47
|
-
(?:${Ge}):${N}`,He=`(?:Z|[+-](?:${Ge}):${N})`,Je=`(${
|
|
46
|
+
t,e)}:e.additionalProperties===!0?{kind:"opaque"}:{kind:"plain"}}function j(t){return t?.type==="number"||t?.type==="integer"||t?.type==="epochMilliseconds"||t?.type==="epochSeconds"}var fe="^(?:0|-?[1-9]\\d*)$",Ve="\\d{4}",Be="0[1-9]|1[0-2]",qe="0[1-9]|[12]\\d|3[01]",Ge="[01]\\d|2[0-3]",N="[0-5]\\d",Q=`\
|
|
47
|
+
(?:${Ge}):${N}`,He=`(?:Z|[+-](?:${Ge}):${N})`,Je=`(${Ve})-(${Be})-(${qe})`,We=`${Ve}-(?:${Be})-(?:${qe})`,Ye=`^${We}$`,Xt=new RegExp(
|
|
48
48
|
`^${Je}$`),Kt=new RegExp(`^${Q}(?::${N}(?:\\.(\\d+))?)?$`),Zt=new RegExp(`^${Je}T${Q}:${N}(?:\\.(\\d+))?${He}$`),Qt=new RegExp(
|
|
49
49
|
fe),er=[31,28,31,30,31,30,31,31,30,31,30,31];function tr(t){return t%4===0&&(t%100!==0||t%400===0)}function rr(t,e){return e===
|
|
50
50
|
2?tr(t)?29:28:er[e-1]}function Xe(t,e,n){let r=Number(t),o=Number(e),s=Number(n);return o>=1&&o<=12&&s>=1&&s<=rr(r,o)}function G(t,e){
|
|
@@ -60,9 +60,9 @@ has(t))throw new Error(`${e}() received unsafe path segment "${t}".`)}function s
|
|
|
60
60
|
/\[(.+?)\]/g,".$1").replace(/^\.+/,"").replace(/\.+/g,".").replace(/\.$/,"")}function me(t,e,{normalize:n=!1,allowEmpty:r=!1}={}){
|
|
61
61
|
let o=n?sr(t):t;if(typeof o!="string"||o.trim()===""){if(r&&o==="")return[];throw new Error(`${e}() expects a non-empty \
|
|
62
62
|
dotted path string.`)}let s=o.split(".");if(s.some(i=>i===""))throw new Error(`${e}() received an invalid path "${o}".`);
|
|
63
|
-
for(let i of s)or(i,e);return s}var ir="http://json-schema.org/draft-07/schema#",
|
|
63
|
+
for(let i of s)or(i,e);return s}var ir="http://json-schema.org/draft-07/schema#",S="x-json-rest-schema",he=["object","array","string","number","boolean"],
|
|
64
64
|
ye=Symbol("json-rest-schema.exportContext"),ar=["true","1","yes","y","on"],cr=["false","0","no","n","off"];function ot(t){
|
|
65
|
-
return{anyOf:[{type:"integer",minimum:-t,maximum:t},{type:"string",pattern:fe}]}}function _(t,e){return{[
|
|
65
|
+
return{anyOf:[{type:"integer",minimum:-t,maximum:t},{type:"string",pattern:fe}]}}function _(t,e){return{[S]:{[t]:e}}}var lr={
|
|
66
66
|
none:()=>({type:he}),blob:()=>({type:he}),serialize:()=>({type:he}),object:()=>({type:"object"}),array:()=>({type:"array"}),
|
|
67
67
|
file:()=>({type:"string"}),string:()=>({type:"string"}),number:()=>({type:["number","string"]}),integer:()=>({type:["int\
|
|
68
68
|
eger","string"]}),epochMilliseconds:()=>ot(864e13),epochSeconds:()=>ot(864e10),dateTime:({definition:t,fieldName:e})=>({
|
|
@@ -70,7 +70,7 @@ type:"string",format:"date-time",pattern:nt(t,e)}),date:()=>({type:"string",form
|
|
|
70
70
|
fieldName:e})=>({type:"string",pattern:rt(t,e)}),boolean:({definition:t})=>{if(t.strictBoolean===!0)return{type:"boolean"};
|
|
71
71
|
let e=new Set([...ar,String(t.stringTrueWhen||"true").trim().toLowerCase()]),n=new Set([...cr,String(t.stringFalseWhen||
|
|
72
72
|
"false").trim().toLowerCase()]);return{anyOf:[{type:"boolean"},{type:"number",enum:[0,1]},{type:"string",enum:[...n,...e]}]}},
|
|
73
|
-
id:()=>({type:["integer","string"],minimum:1,pattern:"^[1-9][0-9]*$"})},
|
|
73
|
+
id:()=>({type:["integer","string"],minimum:1,pattern:"^[1-9][0-9]*$"})},ur={minLength:({definition:t,parameterValue:e})=>t.
|
|
74
74
|
type==="string"?{minLength:e}:null,maxLength:({definition:t,parameterValue:e})=>t.type==="string"?{maxLength:e}:null,min:({
|
|
75
75
|
definition:t,parameterValue:e})=>j(t)?{minimum:e}:null,max:({definition:t,parameterValue:e})=>j(t)?{maximum:e}:null,pattern:({
|
|
76
76
|
definition:t,parameterValue:e})=>t.type==="string"?{pattern:e instanceof RegExp?e.source:e}:null,enum:({parameterValue:t})=>({
|
|
@@ -81,13 +81,13 @@ _("transforms",{uppercase:!0}):null,lowercase:({parameterValue:t})=>t?_("transfo
|
|
|
81
81
|
"metadata",{temporalPrecision:t}),strictBoolean:()=>null,required:()=>null,nullable:()=>null,nullOnEmpty:()=>null,defaultTo:()=>null};
|
|
82
82
|
function Ee(t,e){for(let n of Object.keys(e)){let r=e[n],o=t[n];if(r&&o&&typeof r=="object"&&typeof o=="object"&&!Array.
|
|
83
83
|
isArray(r)&&!Array.isArray(o)){Ee(o,r);continue}t[n]=r}}function dr(t,e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(
|
|
84
|
-
"JSON Schema export hooks must return an object or null.");for(let n of Object.keys(e)){if(n===
|
|
84
|
+
"JSON Schema export hooks must return an object or null.");for(let n of Object.keys(e)){if(n===S&&t[n]&&typeof t[n]=="ob\
|
|
85
85
|
ject"&&typeof e[n]=="object"&&!Array.isArray(t[n])&&!Array.isArray(e[n])){Ee(t[n],e[n]);continue}t[n]=e[n]}}function fr(t,e){
|
|
86
86
|
let r=[...Array.isArray(t.anyOf)&&Object.keys(t).length===1?t.anyOf:[t],...e];return r.length===1?t:{anyOf:r}}function pr(t,e){
|
|
87
87
|
if(!Object.hasOwn(t.types,e.type))throw new Error(`No casting function for type: ${e.type}`);let n=t.types[e.type];if(typeof n.
|
|
88
|
-
toJsonSchema=="function")return n.toJsonSchema;let r=
|
|
88
|
+
toJsonSchema=="function")return n.toJsonSchema;let r=lr[e.type];if(!r)throw new Error(`Type '${e.type}' cannot be export\
|
|
89
89
|
ed to JSON Schema without a toJsonSchema hook.`);return r}function mr(t,e,n){if(!Object.hasOwn(t.validators,e))return null;
|
|
90
|
-
let r=t.validators[e];if(typeof r.toJsonSchema=="function")return r.toJsonSchema;let o=
|
|
90
|
+
let r=t.validators[e];if(typeof r.toJsonSchema=="function")return r.toJsonSchema;let o=ur[e];if(o)return o;throw new Error(
|
|
91
91
|
`Validator '${e}' on field '${n}' cannot be exported to JSON Schema without a toJsonSchema hook.`)}function st(t){if(t===
|
|
92
92
|
void 0)return"create";if(["create","replace","patch"].includes(t))return t;throw new Error(`Unsupported JSON Schema expo\
|
|
93
93
|
rt mode '${t}'. Expected 'create', 'replace', or 'patch'.`)}function hr(t,e={}){if(e.mode!==void 0&&e.operation!==void 0){
|
|
@@ -108,66 +108,66 @@ if(t.status==="building")return{$ref:t.pointer};let n=te(e);t.status="building",
|
|
|
108
108
|
{});let r=Or(t.schema,e,t.operationName,t.operation,t.additionalProperties);return t.status="built",t.pointer==="#"?r:(n.
|
|
109
109
|
definitions[t.definitionName]=r,{$ref:t.pointer})}function Oe(t,e,n,r,o=!1){let s=te(e),i=it(t,e,n,r,o);return s.rootNode===
|
|
110
110
|
i?{$ref:"#"}:at(i,e)}function H(t,{referenceBacked:e=!1}={}){return{schema:t,referenceBacked:e}}function Or(t,e,n,r,o=!1){
|
|
111
|
-
let s={},i=[];for(let[c,
|
|
112
|
-
c);let a={type:"object",properties:s,additionalProperties:o};return i.length>0&&(a.required=i),a}function
|
|
111
|
+
let s={},i=[];for(let[c,l]of Object.entries(t.structure))p(s,c,ve(t,c,l,e,n,r)),r.enforceRequired&&l.required===!0&&i.push(
|
|
112
|
+
c);let a={type:"object",properties:s,additionalProperties:o};return i.length>0&&(a.required=i),a}function vr(t,e,n,r,o,s){
|
|
113
113
|
let i=K(e,n);if(!i)return null;if(i.kind==="schema")return{...ee(Oe(i.schema,r,"replace",i.schema.operations.replace,!1)),
|
|
114
|
-
[
|
|
115
|
-
replace:s;return
|
|
116
|
-
a")return{...ee(Oe(i.schema,r,"replace",i.schema.operations.replace,!1)),[
|
|
117
|
-
"object"&&Object.hasOwn(i.definition,"schema")?"replace":o,c=a==="replace"?t.operations.replace:s;return
|
|
114
|
+
[S]:{castType:"object"}};let a=n.items.type==="object"&&Object.hasOwn(n.items,"schema")?"replace":o,c=a==="replace"?t.operations.
|
|
115
|
+
replace:s;return ve(t,`${e}[]`,n.items,r,a,c)}function Sr(t,e,n,r,o,s){let i=q(e,n);if(!i)return null;if(i.kind==="schem\
|
|
116
|
+
a")return{...ee(Oe(i.schema,r,"replace",i.schema.operations.replace,!1)),[S]:{castType:"object"}};let a=i.definition.type===
|
|
117
|
+
"object"&&Object.hasOwn(i.definition,"schema")?"replace":o,c=a==="replace"?t.operations.replace:s;return ve(t,`${e}.*`,i.
|
|
118
118
|
definition,r,a,c)}function Ir(t,e,n,r,o,s){if(n.type==="object"){let a=Z(e,n);if(a.kind==="nested")return H(Oe(a.schema,
|
|
119
119
|
r,o,s,a.allowAdditionalProperties===!0),{referenceBacked:!0});if(a.kind==="opaque")return H({type:"object",additionalProperties:!0});
|
|
120
|
-
if(a.kind==="map")return H({type:"object",additionalProperties:
|
|
120
|
+
if(a.kind==="map")return H({type:"object",additionalProperties:Sr(t,e,n,r,o,s)})}let i=pr(t,n)({schema:t,fieldName:e,definition:n,
|
|
121
121
|
operation:o,mode:o,options:r});if(!i||typeof i!="object"||Array.isArray(i))throw new Error(`Type '${n.type}' on field '${e}\
|
|
122
|
-
' returned an invalid JSON Schema fragment.`);if(n.type==="array"){let a=
|
|
123
|
-
i)})}return H(i,{referenceBacked:we(i)})}function
|
|
124
|
-
options:r},a=Ir(t,e,n,r,o,s),c=a.referenceBacked?ee(a.schema):{...a.schema},
|
|
122
|
+
' returned an invalid JSON Schema fragment.`);if(n.type==="array"){let a=vr(t,e,n,r,o,s);if(a)return H({...i,items:a},{referenceBacked:we(
|
|
123
|
+
i)})}return H(i,{referenceBacked:we(i)})}function ve(t,e,n,r,o,s){let i={schema:t,fieldName:e,definition:n,operation:o,mode:o,
|
|
124
|
+
options:r},a=Ir(t,e,n,r,o,s),c=a.referenceBacked?ee(a.schema):{...a.schema},l={castType:n.type};for(let f of Object.keys(
|
|
125
125
|
n)){if(f==="type"||!Object.hasOwn(t.validators,f))continue;let m=mr(t,f,e);if(!m)continue;let h=m({...i,parameterName:f,
|
|
126
|
-
parameterValue:n[f],fieldSchema:{...c}});h&&dr(c,h)}c[
|
|
127
|
-
null"}),n.nullOnEmpty===!0&&
|
|
126
|
+
parameterValue:n[f],fieldSchema:{...c}});h&&dr(c,h)}c[S]&&(Ee(l,c[S]),delete c[S]);let u=[];n.nullable===!0&&u.push({type:"\
|
|
127
|
+
null"}),n.nullOnEmpty===!0&&u.push({const:""});let d=ee(fr(c,u));if(n.defaultTo!==void 0&&s.applyDefaults)if(typeof n.defaultTo!=
|
|
128
128
|
"function"){let f=t._normalizeDefault(n,n.defaultTo,{fieldPath:e,currentObject:{},containerKey:e,objectBeforeCast:{},options:{},
|
|
129
129
|
settings:t._buildOperationSettings(o,s,{})});if(Object.keys(f.errors).length>0){let m=Object.values(f.errors)[0];throw new Error(
|
|
130
|
-
`defaultTo for "${e}" is invalid (${m.code}).`)}d.default=f.value}else
|
|
130
|
+
`defaultTo for "${e}" is invalid (${m.code}).`)}d.default=f.value}else l.defaults={providedByFunction:!0};return d[S]=l,
|
|
131
131
|
d}function ct(t,e={}){let n=wr(e),{operationName:r,operation:o}=yr(t,n),s=n.additionalProperties===void 0?!1:n.additionalProperties,
|
|
132
132
|
i=te(n),a=it(t,n,r,o,s,{root:!0}),c={$schema:ir,...at(a,n)};return Object.keys(i.definitions).length>0&&(c.definitions=i.
|
|
133
|
-
definitions),c}function
|
|
134
|
-
|
|
135
|
-
.${String(e)}`}function yt(t,e){return t===""?String(e):
|
|
136
|
-
startsWith(n)?t.slice(n.length):null}function R(t,e){let n={};for(let r of Object.values(t)){let o=
|
|
133
|
+
definitions),c}function lt(t){return t!==null&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"}function Te(t){return t instanceof
|
|
134
|
+
k}function _r(){return{self:!1,children:{}}}function ut(t){return Object.keys(t.children).length>0}function A(t,e){return`${t}\
|
|
135
|
+
.${String(e)}`}function yt(t,e){return t===""?String(e):A(t,e)}function dt(t,e){if(t===e)return"";let n=`${e}.`;return t.
|
|
136
|
+
startsWith(n)?t.slice(n.length):null}function R(t,e){let n={};for(let r of Object.values(t)){let o=A(e,r.field);p(n,o,{...r,
|
|
137
137
|
field:o})}return n}function _e(t){return me(t,"validatePath")}function ft(t){let e={};for(let n of t){let r=_e(n),o=e;for(let s=0;s<
|
|
138
|
-
r.length;s++){let i=r[s];Object.hasOwn(o,i)||p(o,i,_r()),s===r.length-1&&(o[i].self=!0),o=o[i].children}}return e}function
|
|
138
|
+
r.length;s++){let i=r[s];Object.hasOwn(o,i)||p(o,i,_r()),s===r.length-1&&(o[i].self=!0),o=o[i].children}}return e}function Ar(t,e){
|
|
139
139
|
let n=t;for(let r of e){if(n==null||typeof n!="object"||!Object.hasOwn(n,r))return;n=n[r]}return n}function re(t){return t===
|
|
140
140
|
null?!0:Array.isArray(t)||y(t)?Object.keys(t).length>0:t!==void 0}function pt(t){return[...t].sort((e,n)=>{let r=/^[0-9]+$/.
|
|
141
|
-
test(e),o=/^[0-9]+$/.test(n);return r&&o?Number(e)-Number(n):r?-1:o?1:e.localeCompare(n)})}function
|
|
142
|
-
test(t)}function Cr(t,e=new WeakMap){if(e.has(t))return e.get(t);let n=Object.create(
|
|
141
|
+
test(e),o=/^[0-9]+$/.test(n);return r&&o?Number(e)-Number(n):r?-1:o?1:e.localeCompare(n)})}function Tr(t){return/^[0-9]+$/.
|
|
142
|
+
test(t)}function Cr(t,e=new WeakMap){if(e.has(t))return e.get(t);let n=Object.create(k.prototype);return e.set(t,n),n.structure=
|
|
143
143
|
null,n.types=t.types,n.validators=t.validators,n.operations=t.operations,n.structure=oe(ne(t.structure,e)),n._installOperationMethods(),
|
|
144
|
-
Object.freeze(n)}function ne(t,e=new WeakMap){if(t===null||typeof t!="object")return t;if(
|
|
144
|
+
Object.freeze(n)}function ne(t,e=new WeakMap){if(t===null||typeof t!="object")return t;if(Te(t))return Cr(t,e);if(t instanceof
|
|
145
145
|
Date)return new Date(t.getTime());if(t instanceof RegExp){let r=new RegExp(t.source,t.flags);return r.lastIndex=t.lastIndex,
|
|
146
146
|
r}if(e.has(t))return e.get(t);if(Array.isArray(t)){let r=[];e.set(t,r);for(let o of t)r.push(ne(o,e));return r}if(!y(t))
|
|
147
147
|
return t;let n={};e.set(t,n);for(let[r,o]of Object.entries(t))p(n,r,ne(o,e));return n}function oe(t,e=new WeakSet){if(t===
|
|
148
|
-
null||typeof t!="object"||e.has(t)||
|
|
149
|
-
ownKeys(t))oe(t[n],e);return Object.freeze(t)}function
|
|
148
|
+
null||typeof t!="object"||e.has(t)||Te(t))return t;if(e.add(t),Array.isArray(t))for(let n of t)oe(n,e);else for(let n of Reflect.
|
|
149
|
+
ownKeys(t))oe(t[n],e);return Object.freeze(t)}function Se(t){return oe(ne(t))}function Ae(t,e,n=""){if(!Te(t)||!Array.isArray(
|
|
150
150
|
e)||e.length<1)return null;let[r,...o]=e;if(!Object.hasOwn(t.structure,r))return null;let s=t.structure[r];if(o.length<1)
|
|
151
151
|
return s;let i=yt(n,r);return wt(t,s,o,i)}function wt(t,e,n,r){if(e?.type==="object"){let o=t._resolveObjectFieldMode(r,
|
|
152
|
-
e);return o.kind!=="nested"?null:
|
|
153
|
-
1)return null;let[s,...i]=n;if(!
|
|
152
|
+
e);return o.kind!=="nested"?null:Ae(o.schema,n,r)}if(e?.type==="array"){let o=t._resolveArrayItemsConfig(r,e);if(!o||n.length<
|
|
153
|
+
1)return null;let[s,...i]=n;if(!Tr(s))return null;let a=A(r,s);return o.kind==="schema"?i.length<1?null:Ae(o.schema,i,a):
|
|
154
154
|
i.length<1?o.definition:wt(t,o.definition,i,a)}return null}function M(t,e){let n={...t};if(Array.isArray(t.skipFields)){
|
|
155
155
|
let r=t.skipFields.map(o=>dt(o,e)).filter(o=>o!==null&&o!=="");r.length>0?n.skipFields=r:delete n.skipFields}if(y(t.skipParams)){
|
|
156
156
|
let r={};for(let[o,s]of Object.entries(t.skipParams)){let i=dt(o,e);i===null||i===""||p(r,i,s)}Object.keys(r).length>0?n.
|
|
157
|
-
skipParams=r:delete n.skipParams}return n}var
|
|
157
|
+
skipParams=r:delete n.skipParams}return n}var xr=Object.freeze({create:Object.freeze({targetFields:"schema",enforceRequired:!0,
|
|
158
158
|
applyDefaults:!0,outputFields:"validated",rejectExplicitUndefined:!0}),replace:Object.freeze({targetFields:"schema",enforceRequired:!0,
|
|
159
159
|
applyDefaults:!0,outputFields:"validated",rejectExplicitUndefined:!0}),patch:Object.freeze({targetFields:"input",enforceRequired:!1,
|
|
160
160
|
applyDefaults:!1,outputFields:"input",rejectExplicitUndefined:!0})});function mt(t,e,n,r){let o=e[n];if(!r.includes(o))throw new Error(
|
|
161
161
|
`Operation "${t}" must define ${n} as one of: ${r.join(", ")}.`)}function Ie(t,e,n,r=!0){let o=e[n];if(!(o===void 0&&!r)&&
|
|
162
|
-
typeof o!="boolean")throw new Error(`Operation "${t}" must define ${n} as a boolean.`)}function
|
|
162
|
+
typeof o!="boolean")throw new Error(`Operation "${t}" must define ${n} as a boolean.`)}function Pr(t,e){if(typeof e!="ob\
|
|
163
163
|
ject"||e===null||Array.isArray(e))throw new Error(`Operation "${t}" must be an object.`);return mt(t,e,"targetFields",["\
|
|
164
164
|
schema","input"]),Ie(t,e,"enforceRequired"),Ie(t,e,"applyDefaults"),mt(t,e,"outputFields",["validated","input"]),Ie(t,e,
|
|
165
165
|
"rejectExplicitUndefined",!1),Object.freeze({targetFields:e.targetFields,enforceRequired:e.enforceRequired,applyDefaults:e.
|
|
166
166
|
applyDefaults,outputFields:e.outputFields,rejectExplicitUndefined:e.rejectExplicitUndefined===void 0?!0:e.rejectExplicitUndefined})}
|
|
167
167
|
function jr(t={}){if(typeof t!="object"||t===null||Array.isArray(t))throw new Error("Schema operations must be an object\
|
|
168
|
-
.");let e=Object.create(null);for(let[n,r]of Object.entries(
|
|
168
|
+
.");let e=Object.create(null);for(let[n,r]of Object.entries(xr))p(e,n,r);for(let[n,r]of Object.entries(t))p(e,n,Pr(n,r));
|
|
169
169
|
return Object.freeze(e)}function ht(t){let e=Object.create(null);for(let[n,r]of Object.entries(t))p(e,n,r);return Object.
|
|
170
|
-
freeze(e)}function Nr(t){let e={...t};return delete e.operation,delete e.mode,e}var
|
|
170
|
+
freeze(e)}function Nr(t){let e={...t};return delete e.operation,delete e.mode,e}var k=class{constructor(e,n,r,o={}){this.
|
|
171
171
|
structure=e,this.types=ht(n),this.validators=ht(r),this.operations=jr(o),this._installOperationMethods()}_typeError(e){return this.
|
|
172
172
|
_paramError(e,"TYPE_CAST_FAILED","Value could not be cast to the required type.")}_paramError(e,n,r,o={}){let s=new Error(
|
|
173
173
|
r);return s.errorObject={field:e,code:n,message:r,params:o},s}_paramToBeSkipped(e,n,r){return typeof n!="object"||n===null?
|
|
@@ -188,95 +188,95 @@ let o={};for(let s of r.outputFieldNames){if(!Object.hasOwn(this.structure,s))co
|
|
|
188
188
|
void 0||i&&e[s]===null||r.defaultedFields.has(s))&&(!i&&!r.defaultedFields.has(s)||p(o,s,n[s]))}return o}_resolveObjectFieldMode(e,n){
|
|
189
189
|
return Z(e,n)}_resolveArrayItemsConfig(e,n){return K(e,n)}_resolveObjectValuesConfig(e,n){return q(e,n)}_buildArrayItemSettings(e,n){
|
|
190
190
|
return e.type==="object"&&Object.hasOwn(e,"schema")?{...n,operationName:"replace",operation:this.operations.replace}:n}_castValue(e,n,r,o,s,i,a,c){
|
|
191
|
-
let
|
|
192
|
-
`No casting function for type: ${e.type}`);let d=this.types[e.type];if(n===null)return
|
|
191
|
+
let l=e.nullable===!0||a.nullable===!0,u=e.nullOnEmpty===!0||a.nullOnEmpty===!0;if(!Object.hasOwn(this.types,e.type))throw new Error(
|
|
192
|
+
`No casting function for type: ${e.type}`);let d=this.types[e.type];if(n===null)return l?(p(o,s,null),{errors:{},shouldContinue:!1}):
|
|
193
193
|
{errors:this._singleErrorMap({field:r,code:"NOT_NULLABLE",message:"Field cannot be null",params:{}}),shouldContinue:!1};
|
|
194
|
-
if(n===""&&
|
|
194
|
+
if(n===""&&u)return p(o,s,null),{errors:{},shouldContinue:!1};let f={schema:this,definition:e,value:n,fieldName:r,object:o,
|
|
195
195
|
objectBeforeCast:i,valueBeforeCast:n,options:a,mode:c.operationName,operation:c.operationName,fieldPresent:!0,computedOptions:{
|
|
196
|
-
nullable:u
|
|
197
|
-
r,m,h,g)}};try{let m=d(f);if(
|
|
196
|
+
nullable:l||u,nullOnEmpty:u},throwTypeError:()=>{throw this._typeError(r)},throwParamError:(m,h,g)=>{throw this._paramError(
|
|
197
|
+
r,m,h,g)}};try{let m=d(f);if(lt(m))throw new Error(`Type handler for "${e.type}" must be synchronous.`);m!==void 0&&(p(o,
|
|
198
198
|
s,m),f.value=m)}catch(m){if(m.errorObject)return{errors:this._singleErrorMap(m.errorObject),shouldContinue:!1};throw m}return{
|
|
199
199
|
errors:{},context:f,shouldContinue:!0}}_runFieldValidators(e,n,r,o,s,i){for(let a of Object.keys(e)){if(a==="type"||this.
|
|
200
200
|
_paramToBeSkipped(a,i.skipParams,n)||!Object.hasOwn(this.validators,a))continue;let c=this.validators[a];try{s.parameterName=
|
|
201
|
-
a,s.parameterValue=e[a];let
|
|
202
|
-
(p(r,o,
|
|
203
|
-
let
|
|
204
|
-
context:
|
|
205
|
-
e,r,o,s,
|
|
206
|
-
let
|
|
201
|
+
a,s.parameterValue=e[a];let l=c(s);if(lt(l))throw new Error(`Validator handler for "${a}" must be synchronous.`);l!==void 0&&
|
|
202
|
+
(p(r,o,l),s.value=l)}catch(l){if(l.errorObject)return this._singleErrorMap(l.errorObject);throw l}}return{}}_normalizeAndValidateValue(e,n,r,o,s,i,a,c){
|
|
203
|
+
let l=this._castValue(e,n,r,o,s,i,a,c);if(Object.keys(l.errors).length>0)return l.errors;if(!l.shouldContinue)return{};let{
|
|
204
|
+
context:u}=l,d=this._validateNestedValue(e,r,o,s,a,c);return Object.keys(d).length>0?d:(u.value=o[s],this._runFieldValidators(
|
|
205
|
+
e,r,o,s,u,a))}_normalizeDefault(e,n,{fieldPath:r,currentObject:o,containerKey:s,objectBeforeCast:i,options:a,settings:c}){
|
|
206
|
+
let l={...o};return p(l,s,n),{errors:this._normalizeAndValidateValue(e,n,r,l,s,i,a,c),value:l[s]}}_validateNestedValue(e,n,r,o,s,i){
|
|
207
207
|
if(e.type==="object"){let c=this._resolveObjectFieldMode(n,e);return c.kind==="nested"?this._validateNestedObjectSchema(
|
|
208
208
|
c,n,r,o,s,i):c.kind==="map"?this._validateObjectValues(n,r,o,c.valuesConfig,s,i):{}}if(e.type!=="array")return{};let a=this.
|
|
209
209
|
_resolveArrayItemsConfig(n,e);return a?this._validateArrayItems(n,r,o,a,s,i):{}}_validateNestedObjectSchema(e,n,r,o,s,i){
|
|
210
|
-
let a=r[o],c=e.allowAdditionalProperties?this._extractKnownObjectFields(a,e.schema):a,
|
|
210
|
+
let a=r[o],c=e.allowAdditionalProperties?this._extractKnownObjectFields(a,e.schema):a,l=e.schema._validateWithOperation(
|
|
211
211
|
i.operationName,i.operation,c,M(s,n));return p(r,o,e.allowAdditionalProperties?this._mergeKnownAndPassthroughObjectFields(
|
|
212
|
-
a,e.schema,
|
|
212
|
+
a,e.schema,l.validatedObject):l.validatedObject),R(l.errors,n)}_extractKnownObjectFields(e,n){let r={};for(let[o,s]of Object.
|
|
213
213
|
entries(e))Object.hasOwn(n.structure,o)&&p(r,o,s);return r}_mergeKnownAndPassthroughObjectFields(e,n,r){let o={};for(let s of Object.
|
|
214
214
|
keys(e)){if(!Object.hasOwn(n.structure,s)){p(o,s,e[s]);continue}Object.hasOwn(r,s)&&p(o,s,r[s])}for(let[s,i]of Object.entries(
|
|
215
|
-
r))Object.hasOwn(o,s)||p(o,s,i);return o}_validateObjectValues(e,n,r,o,s,i){let a=n[r],c={...a},
|
|
216
|
-
keys(a)){let d=
|
|
217
|
-
|
|
218
|
-
"replace",o.schema.operations.replace,f,M(s,d));p(c,
|
|
219
|
-
_normalizeAndValidateValue(o.definition,f,d,c,
|
|
220
|
-
return
|
|
221
|
-
if(this._fieldToBeSkipped(d,s))continue;if(!Object.hasOwn(a,
|
|
222
|
-
|
|
223
|
-
"replace",o.schema.operations.replace,c[
|
|
224
|
-
let f=this._normalizeAndValidateValue(o.definition,c[
|
|
225
|
-
|
|
226
|
-
e,o))return{};let a=s.isFieldPresent(e),c=n[e],
|
|
227
|
-
"required",o.skipParams,e)?this._singleErrorMap({field:e,code:"REQUIRED",message:"Field is required",params:{}}):a?
|
|
215
|
+
r))Object.hasOwn(o,s)||p(o,s,i);return o}_validateObjectValues(e,n,r,o,s,i){let a=n[r],c={...a},l={};p(n,r,c);for(let u of Object.
|
|
216
|
+
keys(a)){let d=A(e,u);if(this._fieldToBeSkipped(d,s))continue;let f=c[u];if(f===void 0){i.rejectExplicitUndefined?this._mergeErrors(
|
|
217
|
+
l,this._singleErrorMap(this._typeError(d).errorObject)):delete c[u];continue}if(o.kind==="schema"){let h=o.schema._validateWithOperation(
|
|
218
|
+
"replace",o.schema.operations.replace,f,M(s,d));p(c,u,h.validatedObject),this._mergeErrors(l,R(h.errors,d));continue}let m=this.
|
|
219
|
+
_normalizeAndValidateValue(o.definition,f,d,c,u,a,s,this._buildArrayItemSettings(o.definition,i));this._mergeErrors(l,m)}
|
|
220
|
+
return l}_validateArrayItems(e,n,r,o,s,i){let a=n[r],c=a.slice(),l={};p(n,r,c);for(let u=0;u<c.length;u++){let d=A(e,u);
|
|
221
|
+
if(this._fieldToBeSkipped(d,s))continue;if(!Object.hasOwn(a,u)||c[u]===void 0){i.rejectExplicitUndefined?this._mergeErrors(
|
|
222
|
+
l,this._singleErrorMap(this._typeError(d).errorObject)):delete c[u];continue}if(o.kind==="schema"){let m=o.schema._validateWithOperation(
|
|
223
|
+
"replace",o.schema.operations.replace,c[u],M(s,d));p(c,u,m.validatedObject),this._mergeErrors(l,R(m.errors,d));continue}
|
|
224
|
+
let f=this._normalizeAndValidateValue(o.definition,c[u],d,c,u,a,s,this._buildArrayItemSettings(o.definition,i));this._mergeErrors(
|
|
225
|
+
l,f)}return l}_validateField(e,n,r,o,s){if(!Object.hasOwn(this.structure,e))return{};let i=this.structure[e];if(this._fieldToBeSkipped(
|
|
226
|
+
e,o))return{};let a=s.isFieldPresent(e),c=n[e],l=c===void 0;return s.enforceRequired&&i.required&&(!a||l)&&!this._paramToBeSkipped(
|
|
227
|
+
"required",o.skipParams,e)?this._singleErrorMap({field:e,code:"REQUIRED",message:"Field is required",params:{}}):a?l?s.rejectExplicitUndefined?
|
|
228
228
|
this._singleErrorMap(this._typeError(e).errorObject):{}:this._normalizeAndValidateValue(i,c,e,r,e,n,o,s):{}}_validateWithOperation(e,n,r,o){
|
|
229
229
|
this._assertSupportedOptions(o);let s={},i={...r},a=this._buildOperationSettings(e,n,r);for(let c of Object.keys(r))Object.
|
|
230
230
|
hasOwn(this.structure,c)||p(s,c,{field:c,code:"FIELD_NOT_ALLOWED",message:"Field not allowed",params:{}});for(let c of a.
|
|
231
|
-
targetFieldNames){let
|
|
232
|
-
this.structure))if(!a.isFieldPresent(c)&&this.structure[c].defaultTo!==void 0){let
|
|
233
|
-
"function"?
|
|
231
|
+
targetFieldNames){let l=this._validateField(c,r,i,o,a);this._mergeErrors(s,l)}if(a.applyDefaults){for(let c of Object.keys(
|
|
232
|
+
this.structure))if(!a.isFieldPresent(c)&&this.structure[c].defaultTo!==void 0){let l=this.structure[c],u=typeof l.defaultTo==
|
|
233
|
+
"function"?l.defaultTo():l.defaultTo,d=this._normalizeDefault(l,u,{fieldPath:c,currentObject:i,containerKey:c,objectBeforeCast:r,
|
|
234
234
|
options:o,settings:a});if(this._mergeErrors(s,d.errors),Object.keys(d.errors).length>0)continue;p(i,c,d.value),a.defaultedFields.
|
|
235
235
|
add(c)}}return{validatedObject:this._buildOperationResult(r,i,a),errors:s}}_validateSelectedTree(e,n,r,o,s=""){let i={},
|
|
236
|
-
a={};for(let c of pt(Object.keys(e))){let
|
|
237
|
-
path "${
|
|
238
|
-
if(!Object.hasOwn(this.structure,e))return{};let c=this.structure[e],
|
|
239
|
-
return{};let d=Object.hasOwn(r,e),f=r[e],m={};if(!d){if(
|
|
236
|
+
a={};for(let c of pt(Object.keys(e))){let l=yt(s,c);if(!Object.hasOwn(this.structure,c))throw new Error(`Unknown schema \
|
|
237
|
+
path "${l}".`);let u=this._validateSelectedField(c,e[c],n,a,r,o,l);this._mergeErrors(i,u)}return{validatedObject:a,errors:i}}_validateSelectedField(e,n,r,o,s,i,a){
|
|
238
|
+
if(!Object.hasOwn(this.structure,e))return{};let c=this.structure[e],l=n.self===!0,u=ut(n);if(this._fieldToBeSkipped(a,s))
|
|
239
|
+
return{};let d=Object.hasOwn(r,e),f=r[e],m={};if(!d){if(l&&i.enforceRequired&&c.required&&!this._paramToBeSkipped("requi\
|
|
240
240
|
red",s.skipParams,a)&&this._mergeErrors(m,this._singleErrorMap({field:a,code:"REQUIRED",message:"Field is required",params:{}})),
|
|
241
|
-
|
|
242
|
-
c,
|
|
243
|
-
Object.keys(I.errors).length===0&&p(o,e,I.value)}return m}if(f===void 0)return
|
|
244
|
-
this._typeError(a).errorObject):{};let h={[e]:f};if(
|
|
245
|
-
hasOwn(h,e)&&h[e]!==void 0?p(o,e,h[e]):h[e]===null&&p(o,e,null),
|
|
246
|
-
if(Object.keys(g.errors).length>0)return g.errors;if(!g.shouldContinue)return{};let
|
|
247
|
-
c,n.children,a,h,e,s,i);return re(h[e])&&p(o,e,h[e]),
|
|
241
|
+
l&&i.applyDefaults&&c.defaultTo!==void 0){let E=typeof c.defaultTo=="function"?c.defaultTo():c.defaultTo,I=this._normalizeDefault(
|
|
242
|
+
c,E,{fieldPath:a,currentObject:o,containerKey:e,objectBeforeCast:r,options:s,settings:i});this._mergeErrors(m,I.errors),
|
|
243
|
+
Object.keys(I.errors).length===0&&p(o,e,I.value)}return m}if(f===void 0)return l&&i.rejectExplicitUndefined?this._singleErrorMap(
|
|
244
|
+
this._typeError(a).errorObject):{};let h={[e]:f};if(l){let E=this._normalizeAndValidateValue(c,f,a,h,e,r,s,i);return Object.
|
|
245
|
+
hasOwn(h,e)&&h[e]!==void 0?p(o,e,h[e]):h[e]===null&&p(o,e,null),E}if(!u)return{};let g=this._castValue(c,f,a,h,e,r,s,i);
|
|
246
|
+
if(Object.keys(g.errors).length>0)return g.errors;if(!g.shouldContinue)return{};let x=this._validateSelectedDescendants(
|
|
247
|
+
c,n.children,a,h,e,s,i);return re(h[e])&&p(o,e,h[e]),x}_validateSelectedDescendants(e,n,r,o,s,i,a){if(e.type==="object"){
|
|
248
248
|
let c=this._resolveObjectFieldMode(r,e);if(c.kind!=="nested")throw new Error(`Schema path "${r}" does not support nested\
|
|
249
|
-
field selection.`);let
|
|
250
|
-
return p(o,s,
|
|
249
|
+
field selection.`);let l=o[s];if(!y(l))return{};let u=c.schema._validateSelectedTree(n,l,M(i,r),{...a,defaultedFields:new Set});
|
|
250
|
+
return p(o,s,u.validatedObject),R(u.errors,r)}if(e.type==="array"){let c=this._resolveArrayItemsConfig(r,e);if(!c)throw new Error(
|
|
251
251
|
`Schema path "${r}" does not define array items for nested selection.`);return this._validateSelectedArrayItems(r,o,s,c,
|
|
252
252
|
n,i,a)}throw new Error(`Schema path "${r}" does not support nested field selection.`)}_validateSelectedArrayItems(e,n,r,o,s,i,a){
|
|
253
|
-
let c=[],
|
|
254
|
-
e,d)}" is invalid because array segments must use numeric indexes.`);let f=Number(d),m=
|
|
255
|
-
h);if(this._fieldToBeSkipped(m,i))continue;if(!Object.hasOwn(
|
|
256
|
-
errorObject);continue}let
|
|
257
|
-
if(o.kind==="schema"){if(g){let ae=o.schema._validateWithOperation("replace",o.schema.operations.replace,
|
|
258
|
-
validatedObject)&&p(c,f,ae.validatedObject),this._mergeErrors(
|
|
259
|
-
h.children,
|
|
260
|
-
p(c,f,
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
I);if(Object.keys(ie.errors).length>0){this._mergeErrors(
|
|
264
|
-
_validateSelectedDescendants(o.definition,h.children,m,
|
|
253
|
+
let c=[],l=n[r],u={};p(n,r,c);for(let d of pt(Object.keys(s))){if(!/^[0-9]+$/.test(d))throw new Error(`Schema path "${A(
|
|
254
|
+
e,d)}" is invalid because array segments must use numeric indexes.`);let f=Number(d),m=A(e,f),h=s[d],g=h.self===!0,x=ut(
|
|
255
|
+
h);if(this._fieldToBeSkipped(m,i))continue;if(!Object.hasOwn(l,f)){g&&a.rejectExplicitUndefined&&p(u,m,this._typeError(m).
|
|
256
|
+
errorObject);continue}let E=l[f];if(E===void 0){g&&a.rejectExplicitUndefined&&p(u,m,this._typeError(m).errorObject);continue}
|
|
257
|
+
if(o.kind==="schema"){if(g){let ae=o.schema._validateWithOperation("replace",o.schema.operations.replace,E,M(i,m));re(ae.
|
|
258
|
+
validatedObject)&&p(c,f,ae.validatedObject),this._mergeErrors(u,R(ae.errors,m));continue}if(!x)continue;let B=o.schema._validateSelectedTree(
|
|
259
|
+
h.children,E,M(i,m),{...a,operationName:"replace",operation:o.schema.operations.replace,defaultedFields:new Set});re(B.validatedObject)&&
|
|
260
|
+
p(c,f,B.validatedObject),this._mergeErrors(u,R(B.errors,m));continue}let I=this._buildArrayItemSettings(o.definition,a),
|
|
261
|
+
O=[E];if(g){let B=this._normalizeAndValidateValue(o.definition,E,m,O,0,l,i,I);Object.hasOwn(O,0)&&O[0]!==void 0?p(c,f,O[0]):
|
|
262
|
+
O[0]===null&&p(c,f,null),this._mergeErrors(u,B);continue}if(!x)continue;let ie=this._castValue(o.definition,E,m,O,0,l,i,
|
|
263
|
+
I);if(Object.keys(ie.errors).length>0){this._mergeErrors(u,ie.errors);continue}if(!ie.shouldContinue)continue;let Lt=this.
|
|
264
|
+
_validateSelectedDescendants(o.definition,h.children,m,O,0,i,I);re(O[0])&&p(c,f,O[0]),this._mergeErrors(u,Lt)}return u}validateWith(e,n,r={}){
|
|
265
265
|
if(!Object.hasOwn(this.operations,e))throw new Error(`Unknown operation "${e}".`);let o=this.operations[e];return this._assertPlainObjectInput(
|
|
266
266
|
e,n),this._validateWithOperation(e,o,n,r)}validateAt(e,n,r={}){this._assertPlainObjectInput("validateAt",n);let o=_e(e),
|
|
267
267
|
{operationName:s,operation:i,validationOptions:a}=this._resolvePathValidationRequest(r),c=this._validateSelectedTree(ft(
|
|
268
|
-
[e]),n,a,this._buildOperationSettings(s,i,n));return{validatedValue:
|
|
268
|
+
[e]),n,a,this._buildOperationSettings(s,i,n));return{validatedValue:Ar(c.validatedObject,o),errors:c.errors}}validatePaths(e,n,r={}){
|
|
269
269
|
if(this._assertPlainObjectInput("validatePaths",n),!Array.isArray(e)||e.length===0)throw new Error("validatePaths() expe\
|
|
270
270
|
cts a non-empty array of schema paths.");let{operationName:o,operation:s,validationOptions:i}=this._resolvePathValidationRequest(
|
|
271
271
|
r);return this._validateSelectedTree(ft(e),n,i,this._buildOperationSettings(o,s,n))}_installOperationMethods(){for(let e of Object.
|
|
272
272
|
keys(this.operations)){if(e in this)throw new Error(`Operation name "${e}" is reserved and cannot be used as a schema me\
|
|
273
|
-
thod.`);this[e]=(n,r={})=>this.validateWith(e,n,r)}}toJsonSchema(e={}){return ct(this,e)}getFieldDefinitions(){return
|
|
273
|
+
thod.`);this[e]=(n,r={})=>this.validateWith(e,n,r)}}toJsonSchema(e={}){return ct(this,e)}getFieldDefinitions(){return Se(
|
|
274
274
|
this.structure)}getFieldDefinition(e){if(typeof e!="string"||e.trim()==="")throw new Error("Field path must be a non-emp\
|
|
275
|
-
ty string.");let n=
|
|
276
|
-
return!n||typeof n.messages!="object"||n.messages===null?Object.freeze({}):
|
|
277
|
-
keys(e))Object.hasOwn(this.structure,o)&&this.structure[o][n]&&p(r,o,e[o]);return r}};var{parse:Ho,stringify:Rr}=JSON,{keys:Jo}=Object,Mr=String,
|
|
278
|
-
{"":t},"",t)),c=!a;for(;a<s.length;)c=!0,i[a]=Rr(s[a++],
|
|
279
|
-
d;let f=r.call(this,
|
|
275
|
+
ty string.");let n=Ae(this,_e(e.trim()));return n===null?null:Se(n)}getFieldMessages(e){let n=this.getFieldDefinition(e);
|
|
276
|
+
return!n||typeof n.messages!="object"||n.messages===null?Object.freeze({}):Se(n.messages)}cleanup(e,n){let r={};for(let o of Object.
|
|
277
|
+
keys(e))Object.hasOwn(this.structure,o)&&this.structure[o][n]&&p(r,o,e[o]);return r}};var{parse:Ho,stringify:Rr}=JSON,{keys:Jo}=Object,Mr=String,kr="string";var gt="object",Dr=(t,e)=>e;var bt=(t,e,n)=>{let r=Mr(e.push(n)-1);return t.set(n,r),r};var Et=(t,e,n)=>{let r=e&&typeof e===gt?(u,d)=>u===""||-1<e.indexOf(u)?d:void 0:e||Dr,o=new Map,s=[],i=[],a=+bt(o,s,r.call(
|
|
278
|
+
{"":t},"",t)),c=!a;for(;a<s.length;)c=!0,i[a]=Rr(s[a++],l,n);return"["+i.join(",")+"]";function l(u,d){if(c)return c=!c,
|
|
279
|
+
d;let f=r.call(this,u,d);switch(typeof f){case gt:if(f===null)return f;case kr:return o.get(f)||bt(o,s,f)}return f}};var Lr=new Set(["true","1","yes","y","on"]),$r=new Set(["false","0","no","n","off"]);function Fr(t){return t!==null&&(typeof t==
|
|
280
280
|
"object"||typeof t=="function")&&typeof t.then=="function"}function Ot(t){if(typeof t=="number")return Number.isFinite(t)?
|
|
281
281
|
t:null;if(typeof t=="bigint"){let e=Number(t);return Number.isSafeInteger(e)?e:null}if(typeof t=="string"){let e=t.trim();
|
|
282
282
|
if(e==="")return null;let n=Number(e);return Number.isFinite(n)?n:null}return null}function Ce(t,e){if(Object.is(t,e))return!0;
|
|
@@ -329,13 +329,13 @@ ed character range.",{max:r.parameterValue,actual:String(r.valueBeforeCast).leng
|
|
|
329
329
|
typeof r.value=="string"&&r.value===""&&r.throwParamError("NOT_EMPTY","Field cannot be empty.")}),n("required",()=>{}),n(
|
|
330
330
|
"unsigned",()=>{}),n("precision",()=>{}),n("scale",()=>{}),n("temporalPrecision",r=>{if(r.definition.type!=="time"&&r.definition.
|
|
331
331
|
type!=="dateTime")throw new Error(`temporalPrecision can only be used on time or dateTime fields (${r.fieldName}).`)}),n(
|
|
332
|
-
"nullable",()=>{}),n("nullOnEmpty",()=>{}),n("defaultTo",()=>{})}},
|
|
333
|
-
unction")throw new Error(`Type handler for '${e}' must be a function.`);p(t,e,n)}function
|
|
332
|
+
"nullable",()=>{}),n("nullOnEmpty",()=>{}),n("defaultTo",()=>{})}},vt=Ur;var _t=new WeakMap,At=new WeakMap,Tt=Symbol.for("json-rest-schema.registry-metadata");function Vr(t,e,n){if(typeof n!="f\
|
|
333
|
+
unction")throw new Error(`Type handler for '${e}' must be a function.`);p(t,e,n)}function Br(t,e,n){if(typeof n!="functi\
|
|
334
334
|
on")throw new Error(`Validator handler for '${e}' must be a function.`);p(t,e,n)}function se(t={}){let e=Object.create(null);
|
|
335
335
|
for(let[n,r]of Object.entries(t))p(e,n,r);return e}function qr(t,e){if(typeof t.install!="function")throw new Error("Plu\
|
|
336
|
-
gin must have an install method.");t.install(e)}function
|
|
336
|
+
gin must have an install method.");t.install(e)}function St(t,e,n){_t.set(t,e),At.set(t,n),Object.defineProperty(t,Tt,{value:Object.
|
|
337
337
|
freeze({getTypes:()=>e,getValidators:()=>n}),enumerable:!1,configurable:!1,writable:!1})}function Gr(t){if(!t||typeof t!=
|
|
338
|
-
"object"&&typeof t!="function")return null;let e=_t.get(t),n=
|
|
338
|
+
"object"&&typeof t!="function")return null;let e=_t.get(t),n=At.get(t);if(e&&n)return{types:e,validators:n};let r=t[Tt];
|
|
339
339
|
return r&&typeof r.getTypes=="function"&&typeof r.getValidators=="function"?{types:r.getTypes(),validators:r.getValidators()}:
|
|
340
340
|
typeof t=="object"&&t.types&&typeof t.types=="object"&&t.validators&&typeof t.validators=="object"&&typeof t.create=="fu\
|
|
341
341
|
nction"&&typeof t.replace=="function"&&typeof t.patch=="function"&&typeof t.toJsonSchema=="function"?{types:t.types,validators:t.
|
|
@@ -345,15 +345,35 @@ for(let[r,o]of Object.entries(e)){if(Object.hasOwn(t,r)&&!Jr(t[r],o))throw new E
|
|
|
345
345
|
e)};let o=Object.create(null),s=Object.create(null);for(let i of r){let a=Gr(i);if(!a)throw new Error("Factory sources m\
|
|
346
346
|
ust be schema instances or schema factories created by json-rest-schema.");It(o,a.types,"type"),It(s,a.validators,"valid\
|
|
347
347
|
ator")}return{types:o,validators:s}}function Ct({types:t={},validators:e={},installCore:n=!0}={}){let r=se(t),o=se(e),s=(i,a={})=>{
|
|
348
|
-
let c=new
|
|
349
|
-
|
|
350
|
-
{types:a.types,validators:a.validators,installCore:!1})},n&&s.use(
|
|
351
|
-
t))C(t[n],e);return Object.freeze(t)}var hs=Object.freeze({REQUIRED:"required",
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
348
|
+
let c=new k(i,r,o,a.operations);return St(c,r,o),c};return St(s,r,o),s.addType=(i,a)=>{Vr(r,i,a)},s.addValidator=(i,a)=>{
|
|
349
|
+
Br(o,i,a)},s.use=i=>{qr(i,{addType:s.addType,addValidator:s.addValidator})},s.createFactory=(...i)=>{let a=Wr(r,o,i);return Ct(
|
|
350
|
+
{types:a.types,validators:a.validators,installCore:!1})},n&&s.use(vt),s}var T=Ct({installCore:!0});function C(t,e=new WeakSet){if(!t||typeof t!="object"||e.has(t))return t;e.add(t);for(let n of Object.getOwnPropertyNames(
|
|
351
|
+
t))C(t[n],e);return Object.freeze(t)}var hs=Object.freeze({REQUIRED:{messageKey:"required",code:"kernel.validation.field.required"},TYPE_CAST_FAILED:{messageKey:"\
|
|
352
|
+
default",code:"kernel.validation.field.typeCastFailed"},NOT_NULLABLE:{messageKey:"default",code:"kernel.validation.field\
|
|
353
|
+
.notNullable"},MIN_LENGTH:{messageKey:"minLength",code:"kernel.validation.field.minLength"},MAX_LENGTH:{messageKey:"maxL\
|
|
354
|
+
ength",code:"kernel.validation.field.maxLength"},MIN_VALUE:{messageKey:"min",code:"kernel.validation.field.minValue"},MAX_VALUE:{
|
|
355
|
+
messageKey:"max",code:"kernel.validation.field.maxValue"},PATTERN:{messageKey:"pattern",code:"kernel.validation.field.pa\
|
|
356
|
+
ttern"},ENUM_VALUE:{messageKey:"enum",code:"kernel.validation.field.enumValue"},FIELD_NOT_ALLOWED:{messageKey:"additiona\
|
|
357
|
+
lProperties",code:"kernel.validation.field.notAllowed"},CUSTOM_VALIDATOR_FAILED:{messageKey:"validator",code:""},STRICT_BOOLEAN:{
|
|
358
|
+
messageKey:"default",code:"kernel.validation.field.strictBoolean"},RANGE_EXCEEDED:{messageKey:"default",code:"kernel.val\
|
|
359
|
+
idation.field.rangeExceeded"},NOT_EMPTY:{messageKey:"default",code:"kernel.validation.field.notEmpty"}}),ys=Object.freeze(
|
|
360
|
+
{code:"kernel.validation.invalid",message:"Invalid value."});var Kr=T({cursor:{type:"id",required:!1},limit:{type:"number",required:!1,min:1,unsigned:!0}}),Zr=Object.freeze({schema:Kr,
|
|
361
|
+
mode:"patch"});var Pt=Object.freeze({type:"string",pattern:"^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$",minLength:5}),Qr=Object.freeze(
|
|
362
|
+
{...Pt,nullable:!0});var Fs=new Map([{keyword:"required",code:"kernel.validation.required"},{keyword:"type",code:"kernel.validation.type"},{keyword:"\
|
|
363
|
+
minLength",code:"kernel.validation.minLength"},{keyword:"maxLength",code:"kernel.validation.maxLength"},{keyword:"minimu\
|
|
364
|
+
m",code:"kernel.validation.minimum"},{keyword:"maximum",code:"kernel.validation.maximum"},{keyword:"exclusiveMinimum",code:"\
|
|
365
|
+
kernel.validation.exclusiveMinimum"},{keyword:"exclusiveMaximum",code:"kernel.validation.exclusiveMaximum"},{keyword:"mu\
|
|
366
|
+
ltipleOf",code:"kernel.validation.multipleOf"},{keyword:"pattern",code:"kernel.validation.pattern"},{keyword:"format",code:"\
|
|
367
|
+
kernel.validation.format"},{keyword:"enum",code:"kernel.validation.enum"},{keyword:"const",code:"kernel.validation.const"},
|
|
368
|
+
{keyword:"minItems",code:"kernel.validation.minItems"},{keyword:"maxItems",code:"kernel.validation.maxItems"},{keyword:"\
|
|
369
|
+
additionalItems",code:"kernel.validation.additionalItems"},{keyword:"uniqueItems",code:"kernel.validation.uniqueItems"},
|
|
370
|
+
{keyword:"minProperties",code:"kernel.validation.minProperties"},{keyword:"maxProperties",code:"kernel.validation.maxPro\
|
|
371
|
+
perties"},{keyword:"additionalProperties",code:"kernel.validation.additionalProperties"},{keyword:"propertyNames",code:"\
|
|
372
|
+
kernel.validation.propertyNames"},{keyword:"oneOf",code:"kernel.validation.oneOf"},{keyword:"anyOf",code:"kernel.validat\
|
|
373
|
+
ion.anyOf"},{keyword:"not",code:"kernel.validation.not"},{keyword:"if",code:"kernel.validation.if"}].map(({keyword:t,code:e})=>[
|
|
374
|
+
t,e]));var jt="^[1-9][0-9]*$",xe=C({type:"string",minLength:1,pattern:jt}),tn=C({...xe,nullable:!0}),rn=C({schema:T({recordId:{
|
|
375
|
+
...xe,required:!0,messages:{pattern:{code:"kernel.validation.recordIdInvalid",message:"Record id must be a canonical pos\
|
|
376
|
+
itive integer string."}}}}),mode:"patch"});var Nt=20,Ai=32*1024,Ti=48*1024,Pe=Object.freeze({search:"assistant_action_search",contract:"assistant_action_contract",
|
|
357
377
|
execute:"assistant_action_execute"}),je=Object.freeze({type:"object",additionalProperties:!0}),sn=Object.freeze({type:"o\
|
|
358
378
|
bject",additionalProperties:!1,properties:{query:{type:"string",maxLength:200,description:"Optional literal words or act\
|
|
359
379
|
ion-id fragments; every word must match. Use short resource or operation terms such as list. Omit query to browse all av\
|
|
@@ -363,24 +383,24 @@ object",additionalProperties:!1,required:["items","nextCursor","total"],properti
|
|
|
363
383
|
type:"object",additionalProperties:!1,required:["actionId","version","kind","description"],properties:{actionId:{type:"s\
|
|
364
384
|
tring"},version:{type:"integer",minimum:1},kind:{type:"string"},description:{type:"string"}}}},nextCursor:{anyOf:[{type:"\
|
|
365
385
|
string"},{type:"null"}]},total:{type:"integer",minimum:0}}}),cn=Object.freeze({type:"object",additionalProperties:!1,required:[
|
|
366
|
-
"actionId"],properties:{actionId:{type:"string",minLength:1,maxLength:300},version:{type:"integer",minimum:1}}}),
|
|
386
|
+
"actionId"],properties:{actionId:{type:"string",minLength:1,maxLength:300},version:{type:"integer",minimum:1}}}),ln=Object.
|
|
367
387
|
freeze({type:"object",additionalProperties:!1,required:["actionId","version","kind","description","inputSchema","outputS\
|
|
368
388
|
chema"],properties:{actionId:{type:"string"},version:{type:"integer",minimum:1},kind:{type:"string"},description:{type:"\
|
|
369
|
-
string"},inputSchema:je,outputSchema:je}}),
|
|
389
|
+
string"},inputSchema:je,outputSchema:je}}),un=Object.freeze({type:"object",additionalProperties:!1,required:["actionId",
|
|
370
390
|
"input"],properties:{actionId:{type:"string",minLength:1,maxLength:300},version:{type:"integer",minimum:1},input:je}}),dn=Object.
|
|
371
391
|
freeze({type:"object",additionalProperties:!1,required:["actionId","version","result"],properties:{actionId:{type:"strin\
|
|
372
|
-
g"},version:{type:"integer",minimum:1},result:{}}}),Rt=Object.freeze([Object.freeze({name:
|
|
392
|
+
g"},version:{type:"integer",minimum:1},result:{}}}),Rt=Object.freeze([Object.freeze({name:Pe.search,description:"Discove\
|
|
373
393
|
r application actions available to the current user and surface, including list, search, and query operations for multip\
|
|
374
394
|
le records. Search before claiming a capability is unavailable. If terminology does not match, use broader terms or omit\
|
|
375
395
|
query to browse. Returns compact paged matches without schemas; follow nextCursor when more discovery is needed.",parameters:sn,
|
|
376
|
-
outputSchema:an}),Object.freeze({name:
|
|
377
|
-
e action before executing it.",parameters:cn,outputSchema:
|
|
378
|
-
vailable action after loading its exact contract in this turn. The action result is returned in result.",parameters:
|
|
396
|
+
outputSchema:an}),Object.freeze({name:Pe.contract,description:"Load the exact input and output contract for one availabl\
|
|
397
|
+
e action before executing it.",parameters:cn,outputSchema:ln}),Object.freeze({name:Pe.execute,description:"Execute one a\
|
|
398
|
+
vailable action after loading its exact contract in this turn. The action result is returned in result.",parameters:un,outputSchema:dn})]);var Ne="This conversation has no authorization for that native tool.";import{mkdir as ea,readFile as pn,rename as ta,writeFile as ra}from"node:fs/promises";import D from"node:path";var J=P;function z(t,e={}){if(t?.modelProviderId&&e.model?.providerID!==t.modelProviderId)throw new Error("Assistants must use t\
|
|
379
399
|
he session's selected AI account.")}function L(t={},e={}){let n=t.model?.limit?.output,r=Number.isSafeInteger(n)&&n>0?n:
|
|
380
400
|
32e3;Number.isSafeInteger(e.maxOutputTokens)&&e.maxOutputTokens>r&&(e.maxOutputTokens=r)}async function $(t=""){if(!t)return[];
|
|
381
|
-
let e=JSON.parse(await pn(t,"utf8"));return Array.isArray(e?.sessions)?e.sessions:[]}function mn(t="",e=""){let n=
|
|
382
|
-
t,e);return n===""||!n.startsWith("..")&&!
|
|
383
|
-
filter(r=>J(r?.workdir)&&mn(
|
|
401
|
+
let e=JSON.parse(await pn(t,"utf8"));return Array.isArray(e?.sessions)?e.sessions:[]}function mn(t="",e=""){let n=D.relative(
|
|
402
|
+
t,e);return n===""||!n.startsWith("..")&&!D.isAbsolute(n)}function F(t,e=""){let n=D.resolve(J(e)||process.cwd());return t.
|
|
403
|
+
filter(r=>J(r?.workdir)&&mn(D.resolve(r.workdir),n)).sort((r,o)=>D.resolve(o.workdir).length-D.resolve(r.workdir).length)[0]||
|
|
384
404
|
null}async function U(t,e="",n=null){let r=new Set,o=J(e);for(;o&&!r.has(o)&&r.size<32;){let s=t.find(a=>J(a?.upstreamSessionId)===
|
|
385
405
|
o);if(s)return s;if(!n)return null;r.add(o);let i=await n.session.get({path:{id:o}});if(i.error)throw Object.assign(new Error(
|
|
386
406
|
"The subagent's parent session could not be verified."),{code:"assistant_opencode_parent_unverified"});o=J(i.data?.parentID)}
|
|
@@ -388,68 +408,68 @@ return null}function Re({resolveInstructions:t}={}){if(typeof t!="function")thro
|
|
|
388
408
|
solver.");let e=new Map,n=new WeakMap;async function r(s={},i={}){let a=String(s.sessionID||s.sessionId||"").trim();if(!a)
|
|
389
409
|
return;let c=await t(a);if(!c)return;if(c.identity!==void 0&&(typeof c.identity!="string"||!c.identity)||typeof c.read!=
|
|
390
410
|
"function"||![void 0,"append","replace"].includes(c.placement))throw new TypeError("Conversation instructions require re\
|
|
391
|
-
ad() and an optional non-empty identity.");let
|
|
411
|
+
ad() and an optional non-empty identity.");let l=e.get(a);(c.identity===void 0||l?.identity!==c.identity)&&(l={identity:c.
|
|
392
412
|
identity,text:Promise.resolve().then(c.read).then(f=>{if(typeof f!="string"||!f.trim())throw new TypeError("Conversation\
|
|
393
|
-
instructions must contain text.");return f})},e.set(a,
|
|
394
|
-
if(e.get(a)!==
|
|
413
|
+
instructions must contain text.");return f})},e.set(a,l),l.text.catch(()=>{e.get(a)===l&&e.delete(a)}));let u=await l.text;
|
|
414
|
+
if(e.get(a)!==l)throw new Error("Conversation context changed while reading instructions. Retry before sending.");let d=n.
|
|
395
415
|
get(i.system);if(d!==void 0){let f=i.system.indexOf(d);f>=0&&i.system.splice(f,1)}c.placement==="replace"?i.system.splice(
|
|
396
|
-
0,i.system.length,
|
|
416
|
+
0,i.system.length,u):i.system.includes(u)||i.system.push(u),n.set(i.system,u)}function o({event:s}={}){if(!["session.com\
|
|
397
417
|
pacted","session.deleted"].includes(s?.type))return;let i=String(s.properties?.sessionID||s.properties?.info?.id||"").trim();
|
|
398
|
-
i&&e.delete(i)}return Object.freeze({transformSystem:r,event:o,invalidate:s=>e.delete(s),close:()=>e.clear()})}import{isAbsolute as hn}from"node:path";var
|
|
418
|
+
i&&e.delete(i)}return Object.freeze({transformSystem:r,event:o,invalidate:s=>e.delete(s),close:()=>e.clear()})}import{isAbsolute as hn}from"node:path";var ia=new URL("./../../../../@jskit-ai/assistant-core/src/server/conversation/commandWrapper.js",import.meta.url).href,
|
|
399
419
|
Mt=t=>`'${t.replaceAll("'",`'"'"'`)}'`;function yn(t){if(typeof t!="string"||!hn(t)||t.includes("\0"))throw new TypeError(
|
|
400
|
-
"host.commandWrapper must name an absolute executable path.")}function
|
|
420
|
+
"host.commandWrapper must name an absolute executable path.")}function kt(t,e){if(yn(t),typeof e!="string"||!e.trim()||e.
|
|
401
421
|
includes("\0"))throw new TypeError("The native shell tool requires valid command text.");return`${Mt(t)} ${Mt(e)}`}async function W({client:t,registryPath:e=process.env.JSKIT_OPENCODE_ENV_REGISTRY,resolveHostInstructions:n}={}){let r=JSON.
|
|
402
|
-
parse(process.env.JSKIT_OPENCODE_TOOL_SCHEMAS||"[]"),o=new Map(r.map(({function:
|
|
403
|
-
let
|
|
404
|
-
{async resolveInstructions(
|
|
405
|
-
systemPrompt}:null}}),c=n?Re({resolveInstructions:async
|
|
406
|
-
ystem.transform":c?async(u
|
|
407
|
-
u
|
|
408
|
-
z(d,
|
|
409
|
-
schemas.some(({function:h})=>h.name===
|
|
410
|
-
|
|
411
|
-
nativeTools&&Object.assign(d.env,f.env)},"tool.definition":({toolID:
|
|
412
|
-
tool:Object.fromEntries([...o].map(([u
|
|
422
|
+
parse(process.env.JSKIT_OPENCODE_TOOL_SCHEMAS||"[]"),o=new Map(r.map(({function:l})=>[l.name,l])),s=()=>$(e);async function i(l){
|
|
423
|
+
let u=await U(await s(),l,t);if(!u)throw new Error("This native conversation has no instruction owner.");return u}let a=Re(
|
|
424
|
+
{async resolveInstructions(l){let{conversation:u}=await i(l);return u?{identity:u.systemPrompt,placement:"replace",read:()=>u.
|
|
425
|
+
systemPrompt}:null}}),c=n?Re({resolveInstructions:async l=>(await n(l))?.instructions}):null;return{"experimental.chat.s\
|
|
426
|
+
ystem.transform":c?async(l,u)=>(await n(l.sessionID||l.sessionId))?.conversation?a.transformSystem(l,u):c.transformSystem(
|
|
427
|
+
l,u):a.transformSystem,event:c?l=>{c.event(l),a.event(l)}:a.event,"chat.params":async(l,u)=>{let d=await i(l.sessionID);
|
|
428
|
+
z(d,l),L(l,u)},"tool.execute.before":async({tool:l,sessionID:u},d)=>{let{conversation:f}=await i(u);if(!(o.has(l)?f?.tools?.
|
|
429
|
+
schemas.some(({function:h})=>h.name===l):f?.nativeTools))throw new Error(Ne);l==="bash"&&f.commandWrapper&&(d.args.command=
|
|
430
|
+
kt(f.commandWrapper,d.args.command))},"shell.env":async({sessionID:l,cwd:u},d)=>{let f=l?await i(l):F(await s(),u);f?.conversation?.
|
|
431
|
+
nativeTools&&Object.assign(d.env,f.env)},"tool.definition":({toolID:l},u)=>{let d=o.get(l);d&&(u.jsonSchema=d.parameters)},
|
|
432
|
+
tool:Object.fromEntries([...o].map(([l,u])=>[l,{description:u.description,args:u.parameters.properties,async execute(d,f){
|
|
413
433
|
if(!f.callID||!f.sessionID||!f.messageID)throw new Error("OpenCode did not supply an application tool identity.");let m=(await i(
|
|
414
|
-
f.sessionID)).conversation?.tools;if(!m?.schemas.some(({function:
|
|
434
|
+
f.sessionID)).conversation?.tools;if(!m?.schemas.some(({function:x})=>x.name===l))throw new Error(Ne);let h=await fetch(
|
|
415
435
|
m.url,{method:"POST",signal:f.abort,headers:{authorization:`Bearer ${m.token}`,"content-type":"application/json"},body:JSON.
|
|
416
|
-
stringify({sessionId:f.sessionID,messageId:f.messageID,id:f.callID,name:
|
|
417
|
-
g.error||"The application tool request failed.");return JSON.stringify(g)}}]))}}var
|
|
418
|
-
async function
|
|
419
|
-
t)}async function
|
|
436
|
+
stringify({sessionId:f.sessionID,messageId:f.messageID,id:f.callID,name:l,input:d})}),g=await h.json();if(!h.ok)throw new Error(
|
|
437
|
+
g.error||"The application tool request failed.");return JSON.stringify(g)}}]))}}var wa=new URL("./../../../../@jskit-ai/assistant-core/src/server/conversation/openCodeProcess.js",import.meta.url).href;var va=256*1024;var Sa=2*1024*1024;var vn=Rt.map(({name:t,description:e,parameters:n})=>({type:"function",function:{name:t,description:e,parameters:n}}));import{vibe64Driver as An}from"@local/vibe64-genesis/server/promptContext";function w(t=""){return String(t??"").trim()}
|
|
438
|
+
async function ke(){return $(w(process.env.VIBE64_OPENCODE_SESSION_ENV_REGISTRY))}async function Tn(t=""){return F(await ke(),
|
|
439
|
+
t)}async function V(t="",e=null){try{return await U(await ke(),t,e)}catch(n){throw n.code==="assistant_opencode_parent_u\
|
|
420
440
|
nverified"?new Error("Vibe64 could not verify the subagent's parent session."):n}}function Me(t,e){return!!(e?.helperModelId&&
|
|
421
441
|
t===`vibe64-helper-${e.modelProviderId}`)}function Y(t=""){return`'${String(t??"").replaceAll("'",`'"'"'`)}'`}function Cn(){
|
|
422
442
|
return"printf '%s\\n' 'vibe64_agent_control_unavailable: Session command control is unavailable. Reconnect the assistant.\
|
|
423
|
-
' >&2; exit 126"}function
|
|
443
|
+
' >&2; exit 126"}function Dt(t="",e=null){let n=String(t),r=w(e?.env?.VIBE64_WRAPPER);if(!r)return n;let o=`${Y(r)} '`;if(!n.
|
|
424
444
|
startsWith(o)||!n.endsWith("'"))return n;let s=n.slice(o.length,-1).replaceAll(`'"'"'`,"'");return`${Y(r)} ${Y(s)}`===n?
|
|
425
|
-
s:n}function zt(t="",e=null){let n=String(t),r=
|
|
426
|
-
e?.env?.VIBE64_WRAPPER);if(!n)return Cn();let r=zt(t,e);return[Y(n),Y(r)].join(" ")}var
|
|
427
|
-
{client:t,registryPath:w(process.env.VIBE64_OPENCODE_SESSION_ENV_REGISTRY),resolveHostInstructions:async n=>{let r=await
|
|
445
|
+
s:n}function zt(t="",e=null){let n=String(t),r=Dt(n,e);for(;r!==n;)n=r,r=Dt(n,e);return n}function xn(t="",e=null){let n=w(
|
|
446
|
+
e?.env?.VIBE64_WRAPPER);if(!n)return Cn();let r=zt(t,e);return[Y(n),Y(r)].join(" ")}var qa=async({client:t}={})=>{let e=await W(
|
|
447
|
+
{client:t,registryPath:w(process.env.VIBE64_OPENCODE_SESSION_ENV_REGISTRY),resolveHostInstructions:async n=>{let r=await V(
|
|
428
448
|
n,t);if(!r?.promptContext)return{conversation:r?.conversation,instructions:null};let{workdir:o,promptContext:s}=r;return s.
|
|
429
|
-
scope==="ephemeral"?{conversation:r.conversation,instructions:{identity:JSON.stringify(s),placement:"replace",read:()=>
|
|
449
|
+
scope==="ephemeral"?{conversation:r.conversation,instructions:{identity:JSON.stringify(s),placement:"replace",read:()=>An(
|
|
430
450
|
s)}}:{conversation:r.conversation,instructions:{placement:"append",read:()=>{let i=In(new URL("../../bin/vibe64-genesis-\
|
|
431
|
-
host-context",import.meta.resolve("@local/vibe64-genesis/server/promptContext")));return new Promise((a,c)=>{let
|
|
432
|
-
["--instructions"],{cwd:o,timeout:3e4,maxBuffer:262144,encoding:"utf8"},(
|
|
433
|
-
d not be loaded. Retry the conversation.",{cause:
|
|
451
|
+
host-context",import.meta.resolve("@local/vibe64-genesis/server/promptContext")));return new Promise((a,c)=>{let l=Sn(i,
|
|
452
|
+
["--instructions"],{cwd:o,timeout:3e4,maxBuffer:262144,encoding:"utf8"},(u,d)=>{u?c(new Error("Project instructions coul\
|
|
453
|
+
d not be loaded. Retry the conversation.",{cause:u})):a(d)});l.stdin.on("error",()=>{}),l.stdin.end(JSON.stringify({workdir:o,
|
|
434
454
|
promptContext:s}))})}}}}});return{...e,"chat.message":async(n={},r={})=>{if(!w(n.agent).startsWith("vibe64-helper-"))return;
|
|
435
|
-
let o=await
|
|
455
|
+
let o=await V(n.sessionID,t);if(!Me(n.agent,o))throw new Error("This helper is not available through the session's selec\
|
|
436
456
|
ted AI account.");r.message.model={providerID:o.modelProviderId,modelID:o.helperModelId}},"chat.params":async(n={},r={})=>{
|
|
437
|
-
let o=await
|
|
457
|
+
let o=await V(n.sessionID,t);if(z(o,n),w(n.agent).startsWith("vibe64-helper-")&&(!Me(n.agent,o)||n.model?.providerID!==o.
|
|
438
458
|
modelProviderId||n.model?.id!==o.helperModelId))throw new Error("This helper is not available through the session's sele\
|
|
439
459
|
cted AI account.");L(n,r)},"experimental.chat.messages.transform":async(...n)=>{let r=n[1]||{},o=Array.isArray(r.messages)?
|
|
440
|
-
r.messages:[],s=await
|
|
441
|
-
sessionID))||await
|
|
442
|
-
"tool"||!["bash","shell"].includes(w(
|
|
443
|
-
|
|
444
|
-
return c?{...i,parts:
|
|
460
|
+
r.messages:[],s=await ke();r.messages=await Promise.all(o.map(async i=>{let a=s.find(u=>w(u?.upstreamSessionId)===w(i?.info?.
|
|
461
|
+
sessionID))||await V(i?.info?.sessionID,t);if(!a||!Array.isArray(i?.parts))return i;let c=!1,l=i.parts.map(u=>{if(u?.type!==
|
|
462
|
+
"tool"||!["bash","shell"].includes(w(u.tool).toLowerCase())||typeof u?.state?.input?.command!="string")return u;let d=zt(
|
|
463
|
+
u.state.input.command,a);return d===u.state.input.command?u:(c=!0,{...u,state:{...u.state,input:{...u.state.input,command:d}}})});
|
|
464
|
+
return c?{...i,parts:l}:i}))},"shell.env":async(n={},r={})=>{let o=await Tn(n.cwd);if(!o)return;if(o.conversation)return e["\
|
|
445
465
|
shell.env"](n,r);let s=o.env&&typeof o.env=="object"&&!Array.isArray(o.env)?o.env:{},i=r.env&&typeof r.env=="object"&&!Array.
|
|
446
466
|
isArray(r.env)?r.env:{};r.env=i,Object.assign(i,s);let a=Array.isArray(o.pathEntries)?o.pathEntries.map(w).filter(Boolean):
|
|
447
467
|
[];i.PATH=[...a,w(s.PATH),w(process.env.PATH)].filter(Boolean).join(_n.delimiter)},"tool.execute.before":async(n={},r={})=>{
|
|
448
|
-
let o=await
|
|
468
|
+
let o=await V(n.sessionID||n.sessionId,t);if(!o)throw new Error("Vibe64 could not verify this conversation's tool access\
|
|
449
469
|
. Reconnect the assistant.");if(o.conversation)return e["tool.execute.before"](n,r);if(o.promptContext?.scope==="ephemer\
|
|
450
470
|
al")throw new Error("Tools are unavailable in this host conversation. Use only the supplied context.");if(n.tool==="task"){
|
|
451
471
|
if(w(r.args?.subagent_type).startsWith("vibe64-helper-")&&!Me(r.args.subagent_type,o))throw new Error("Choose the helper\
|
|
452
|
-
belonging to this session's selected AI account.");if(w(r.args?.task_id)){let i=await
|
|
472
|
+
belonging to this session's selected AI account.");if(w(r.args?.task_id)){let i=await V(r.args.task_id,t);if(!o||i?.upstreamSessionId!==
|
|
453
473
|
o.upstreamSessionId)throw new Error("This helper conversation does not belong to the current session.")}}if(!["bash","sh\
|
|
454
474
|
ell"].includes(w(n.tool).toLowerCase()))return;let s=r.args&&typeof r.args=="object"&&!Array.isArray(r.args)?r.args:null;
|
|
455
|
-
!s||typeof s.command!="string"||(s.command=
|
|
475
|
+
!s||typeof s.command!="string"||(s.command=xn(s.command,o))}}};export{qa as Vibe64SessionEnvironment};
|