vibe64 0.1.35 → 0.1.37
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 +1984 -1685
- package/bin/server.js +158 -111
- package/bin/upgrade-state.js +5754 -5522
- package/dist/assets/GithubBrowserTabs-BykoCFfz.js +1 -0
- package/dist/assets/{StudioErrorNotice-sQfmeR-z.js → StudioErrorNotice-CSrUw1QV.js} +1 -1
- package/dist/assets/{Vibe64AsyncModuleState-Dx7YKRPp.js → Vibe64AsyncModuleState-Do9EqX3S.js} +1 -1
- package/dist/assets/Vibe64AuthSettingsButton-CIwtchKm.js +5 -0
- package/dist/assets/Vibe64AuthSettingsButton-M44SSmZ9.css +1 -0
- package/dist/assets/{Vibe64DashboardBackButton-yE6cyYg2.js → Vibe64DashboardBackButton-BH_8j_VR.js} +1 -1
- package/dist/assets/Vibe64DashboardShell-DXVDJUAY.js +1 -0
- package/dist/assets/{Vibe64DashboardShell-MBkUHjs-.css → Vibe64DashboardShell-De2mbdpI.css} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-BONJdxBS.js → Vibe64DatabaseWorkspace-Ca8IHSRq.js} +3 -3
- package/dist/assets/{Vibe64DatabaseWorkspace-CR4pzzcf.css → Vibe64DatabaseWorkspace-DPDMxhAW.css} +1 -1
- package/dist/assets/Vibe64OutputControls-Co5YzwcK.css +1 -0
- package/dist/assets/Vibe64OutputControls-DngQNTTt.js +8 -0
- package/dist/assets/{Vibe64RepositoryWorkspace-CVHcT93M.css → Vibe64RepositoryWorkspace-Agyt4O-V.css} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-ByQlZbyO.js → Vibe64RepositoryWorkspace-BfsZozSJ.js} +2 -2
- package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +1 -0
- package/dist/assets/Vibe64SessionFiles-n87RqqY6.js +41 -0
- package/dist/assets/{Vibe64TemporaryAiFixAction-BGlcrq4d.js → Vibe64TemporaryAiFixAction-BiuIE9mC.js} +1 -1
- package/dist/assets/{Vibe64UiStoryboardView-Brlwdvqi.js → Vibe64UiStoryboardView-BhKRpL0N.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-zwlWlcZD.js → Vibe64UnavailableSessions-Ca5nC7KH.js} +1 -1
- package/dist/assets/{_sessionId_-CvOkQbVy.js → _sessionId_-B_TTRB4c.js} +1 -1
- package/dist/assets/{_sessionTool_-Dwod5ns9.js → _sessionTool_-1V-z6Pbp.js} +1 -1
- package/dist/assets/_slug_-Buxpw0T4.css +1 -0
- package/dist/assets/_slug_-DsqilUs_.js +24 -0
- package/dist/assets/{access-BVu5XYm2.js → access-tl4ht_d8.js} +1 -1
- package/dist/assets/app-CZu7oxUO.css +1 -0
- package/dist/assets/app-DT4_MliP.js +1 -0
- package/dist/assets/{assistantRouting-CwbwfkwB.js → assistantRouting-D4XpXcEf.js} +1 -1
- package/dist/assets/{changes-olY8cnFK.js → changes-DZWHZguL.js} +1 -1
- package/dist/assets/client-BWV84wi2.js +2 -0
- package/dist/assets/client-DGrP-2AJ.css +1 -0
- package/dist/assets/conversation-B90ERX9h.js +17 -0
- package/dist/assets/conversation-vxJGwmtW.css +1 -0
- package/dist/assets/{dashboard-BnXD-H4R.js → dashboard-iREwhGqv.js} +1 -1
- package/dist/assets/definitions-CNu5E87y.js +1 -0
- package/dist/assets/{env-DJhnLOH7.css → env-BzRtyO0w.css} +1 -1
- package/dist/assets/env-D5KpTEw7.js +1 -0
- package/dist/assets/health-BJvooRnJ.css +1 -0
- package/dist/assets/health-BhoO1d4h.js +1 -0
- package/dist/assets/{history-BxlpB-YH.js → history-DVURy45X.js} +1 -1
- package/dist/assets/{incoming-BOxRVlOM.js → incoming-DzADFGqp.js} +1 -1
- package/dist/assets/index-GBRpNZLy.js +138 -0
- package/dist/assets/index-irlMYzLh.css +1 -0
- package/dist/assets/{integrations-BFltGDVI.js → integrations-Dy5jIiJ5.js} +2 -2
- package/dist/assets/issues-lh7R775d.js +1 -0
- package/dist/assets/learning-_O1PEaam.js +1 -0
- package/dist/assets/mdi-CG9pWOSj.js +1 -0
- package/dist/assets/placement-BF-zIEhA.js +1 -0
- package/dist/assets/pull-requests-ByE-Dvk7.js +1 -0
- package/dist/assets/{repository-JWLVST3D.js → repository-BUfUAyS9.js} +1 -1
- package/dist/assets/roboto-latin-wght-normal-ccAYIvAh.woff2 +0 -0
- package/dist/assets/{session-C5Nj8Dlq.js → session-BdhKrcX4.js} +1 -1
- package/dist/assets/settings-CzhIcn9K.js +1 -0
- package/dist/assets/shared-DpMvYJO3.js +2 -0
- package/dist/assets/studioGateApi-DcCqiD9V.js +1 -0
- package/dist/assets/studioUrls-DmMMIScP.js +1 -0
- package/dist/assets/useArchivedVibe64Sessions-CLHJOyeW.js +1 -0
- package/dist/assets/useCommand-Bqxb-naz.js +1 -0
- package/dist/assets/useEndpointResource-DWoQ2keu.js +1 -0
- package/dist/assets/useRealtimeEvent-Bwapstla.js +1 -0
- package/dist/assets/{useUiFeedback-0FqKuZRP.js → useUiFeedback-BPBF_0bp.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-B4JgmxUf.js +1 -0
- package/dist/assets/useVibe64DatabaseTools-4o6S8eXq.js +1 -0
- package/dist/assets/useVibe64Learning-DyqXkpLw.js +1 -0
- package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +1 -0
- package/dist/assets/useVibe64SessionData-YhhE_5pC.js +1 -0
- package/dist/assets/useVibe64SessionSelection-CuZCzAcY.js +1 -0
- package/dist/assets/useVibe64SystemGraph-B4RmsC9Y.js +1 -0
- package/dist/assets/{useVibe64Terminal-BPnN25WH.js → useVibe64Terminal-Cg3idMcy.js} +1 -1
- package/dist/assets/vibe64AssistantHost-CP6oxv5b.js +1 -0
- package/dist/assets/{vibe64SessionFocus-kqPOPaOH.js → vibe64SessionFocus-Cz5Vq1re.js} +1 -1
- package/dist/assets/{vibe64SessionInfo-BHxtTrLX.js → vibe64SessionInfo-BuBUdL-e.js} +1 -1
- package/dist/assets/{vibe64SessionPanelModel-BMf64fv7.js → vibe64SessionPanelModel-DDorOuiL.js} +1 -1
- package/dist/assets/{vibe64SessionToolDefinitions-NfLd1HZI.js → vibe64SessionToolDefinitions-BJaJH5LR.js} +1 -1
- package/dist/index.html +21 -20
- package/docs/colleague-usage/account-profile-and-appearance.md +8 -2
- package/docs/colleague-usage/ai-accounts-and-routing.md +127 -16
- package/docs/colleague-usage/ai-onboarding.md +229 -0
- package/docs/colleague-usage/coding-agent-goal-pause.md +5 -5
- package/docs/colleague-usage/coding-agents.md +21 -0
- package/docs/colleague-usage/colleague-watches.md +4 -23
- package/docs/colleague-usage/colleague.md +10 -2
- package/docs/colleague-usage/connected-projects.md +10 -2
- package/docs/colleague-usage/conversation-context.md +2 -0
- package/docs/colleague-usage/dashboard-navigation.md +19 -27
- package/docs/colleague-usage/database.md +6 -11
- package/docs/colleague-usage/development-copies.md +2 -1
- package/docs/colleague-usage/development-env.md +6 -0
- package/docs/colleague-usage/github-work.md +9 -0
- package/docs/colleague-usage/health-checks.md +11 -5
- package/docs/colleague-usage/integrations.md +3 -1
- package/docs/colleague-usage/learning-code-questions.md +23 -51
- package/docs/colleague-usage/learning-course-catalogue.md +8 -6
- package/docs/colleague-usage/learning-environment.md +337 -0
- package/docs/colleague-usage/learning-history.md +70 -101
- package/docs/colleague-usage/learning-mode-ui.md +129 -214
- package/docs/colleague-usage/learning-practice-projects.md +178 -78
- package/docs/colleague-usage/learning-teacher-guide.md +48 -26
- package/docs/colleague-usage/learning-with-colleague.md +195 -216
- package/docs/colleague-usage/lesson-authoring.md +41 -24
- package/docs/colleague-usage/lesson-step-bar.md +99 -0
- package/docs/colleague-usage/managed-app-access.md +7 -0
- package/docs/colleague-usage/message-delivery-recovery.md +7 -6
- package/docs/colleague-usage/preview-browser-checks.md +9 -1
- package/docs/colleague-usage/preview-starting-application.md +0 -1
- package/docs/colleague-usage/preview.md +12 -1
- package/docs/colleague-usage/project-messages.md +2 -2
- package/docs/colleague-usage/project-setup.md +9 -2
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +61 -0
- package/docs/colleague-usage/sessions.md +25 -33
- package/docs/colleague-usage/teaching-content.md +14 -40
- package/docs/colleague-usage/temporary-chats.md +23 -2
- package/docs/colleague-usage/voice-chat.md +5 -10
- package/docs/colleague-usage/voice-face-and-speaking-voice.md +6 -8
- package/docs/colleague-usage/voice-recovery.md +3 -2
- package/docs/templates/learn-topic/README.md +6 -6
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +28 -7
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/notes.md +19 -0
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/check-understanding.md +3 -0
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/explain-idea.md +3 -0
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/try-it.md +3 -0
- package/docs/templates/learn-topic/training/outline.md +1 -1
- package/docs/training-content.md +319 -66
- package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/integrations.json +3 -2
- package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/patterns/ai-connections/PATTERN.md +4 -3
- package/node_modules/@jskit-ai/connectors-catalog/src/shared/ai-models.json +0 -1
- package/node_modules/@local/vibe64-accounts/package.json +1 -0
- package/node_modules/@local/vibe64-colleague/package.json +2 -1
- package/node_modules/@local/vibe64-core/package.json +3 -0
- package/node_modules/@local/vibe64-execution/package.json +1 -0
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +171 -174
- package/node_modules/@local/vibe64-execution/src/server/engines/stdioBridge.js +9 -9
- package/node_modules/@local/vibe64-execution/src/server/hostProfile.js +12 -0
- package/node_modules/@local/vibe64-genesis/README.md +10 -37
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +790 -779
- package/node_modules/@local/vibe64-genesis/package.json +1 -0
- package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +255 -0
- package/node_modules/@local/vibe64-genesis/src/server/index.js +473 -450
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +148 -148
- package/node_modules/@local/vibe64-project/package.json +2 -1
- package/node_modules/@local/vibe64-runtime/package.json +1 -2
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +526 -512
- package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +0 -1
- package/node_modules/@local/vibe64-source-editor/package.json +1 -0
- package/node_modules/@local/vibe64-terminals/package.json +2 -0
- package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +129 -131
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1508 -1456
- package/node_modules/@local/vibe64-training/package.json +16 -27
- package/package.json +7 -7
- package/server.bundle.mjs +41339 -41635
- package/dist/assets/GithubBrowserTabs-DO5PHon-.js +0 -1
- package/dist/assets/GithubMarkdown-BQ6MfCDJ.js +0 -3
- package/dist/assets/GithubMarkdown-U7-j-qNI.css +0 -1
- package/dist/assets/Vibe64DashboardShell-CuCVMhOc.js +0 -1
- package/dist/assets/Vibe64OutputControls-DAAmA09l.js +0 -8
- package/dist/assets/Vibe64OutputControls-DPBsyDZM.css +0 -1
- package/dist/assets/Vibe64SessionFiles-B0u9HKdF.js +0 -107
- package/dist/assets/Vibe64SessionFiles-NjOMVwPR.css +0 -1
- package/dist/assets/_slug_-B31c15cc.css +0 -1
- package/dist/assets/_slug_-Dy35qLo1.js +0 -1
- package/dist/assets/app-DRXCcv05.css +0 -1
- package/dist/assets/app-zt7HwQKT.js +0 -1
- package/dist/assets/client-BrV4QPwG.js +0 -2
- package/dist/assets/client-C1bwIlu6.css +0 -1
- package/dist/assets/definitions-DaOPIkyB.js +0 -1
- package/dist/assets/env-DN0vW4EI.js +0 -1
- package/dist/assets/health-7oIQODer.css +0 -1
- package/dist/assets/health-Z6m96GDr.js +0 -1
- package/dist/assets/index-BUq-MczL.js +0 -86
- package/dist/assets/index-DtmBqE3h.css +0 -1
- package/dist/assets/issues-1iS5zoed.js +0 -1
- package/dist/assets/layout-BkWVNT37.js +0 -1
- package/dist/assets/mdi-C54lQ0i_.js +0 -1
- package/dist/assets/placement-DLsU3pCW.js +0 -1
- package/dist/assets/pull-requests-BJOwNL4k.js +0 -1
- package/dist/assets/settings-c273Ikrm.js +0 -1
- package/dist/assets/shared-YZb7ocaK.js +0 -2
- package/dist/assets/studioGateApi-DhA9IJGZ.js +0 -1
- package/dist/assets/studioUrls-Dj8rXeXO.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-CVZx2Rtm.js +0 -1
- package/dist/assets/useCommand-DWuxfAV0.js +0 -1
- package/dist/assets/useEndpointResource-MWVNfmMa.js +0 -1
- package/dist/assets/useVibe64ConversationLog-8cKh1eDm.js +0 -1
- package/dist/assets/useVibe64DatabaseTools-BcRG1s3i.js +0 -1
- package/dist/assets/useVibe64LearningMode-Bl0dGdCh.js +0 -28
- package/dist/assets/useVibe64LearningMode-C3PcXdVg.css +0 -1
- package/dist/assets/useVibe64ProjectScope-DOEVkBqX.js +0 -1
- package/dist/assets/useVibe64SessionData-DFTyLzci.js +0 -1
- package/dist/assets/useVibe64SessionSelection-j9lsllx4.js +0 -1
- package/dist/assets/useVibe64SystemGraph-tNkIwSBQ.js +0 -1
- package/dist/assets/vibe64AssistantHost-DdE_-lZF.js +0 -1
- package/dist/assets/vibe64LessonDashboard-DlKYjisq.js +0 -1
- package/dist/assets/vibe64ProjectScope.local-DqT6e5un.js +0 -1
- package/docs/colleague-usage/learning-chat-retention.md +0 -74
- package/docs/colleague-usage/learning-diagrams-and-voice.md +0 -97
- package/docs/colleague-usage/learning-lesson-watch.md +0 -95
- package/docs/colleague-usage/learning-native-session.md +0 -206
- package/docs/colleague-usage/learning-practical-exercises.md +0 -71
- package/docs/colleague-usage/learning-practical-gestures.md +0 -48
- package/docs/colleague-usage/learning-session-creation.md +0 -95
- package/docs/colleague-usage/lesson-practical-assessment.md +0 -54
- package/docs/colleague-usage/preview-lesson-presentation.md +0 -56
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.md +0 -44
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
{ "engineId": "claude", "modelProviderId": "deepseek", "modelId": "deepseek-flash", "scores": { "senior": 4, "junior": 4, "helper": 4, "router": 4 } },
|
|
21
21
|
{ "engineId": "claude", "modelProviderId": "zai-coding-plan", "modelId": "glm-5.3", "scores": { "senior": 3, "junior": 3, "helper": 3, "router": 3 } },
|
|
22
22
|
{ "engineId": "claude", "modelProviderId": "zai", "modelId": "glm-5.3", "scores": { "senior": 3, "junior": 3, "helper": 3, "router": 3 } },
|
|
23
|
-
{ "engineId": "opencode", "modelProviderId": "opencode", "modelId": "big-pickle", "scores": { "senior": 1, "junior": 1, "helper": 1, "router": 1 } },
|
|
24
23
|
{ "engineId": "opencode", "modelProviderId": "deepseek", "modelId": "deepseek-flash", "scores": { "senior": 4, "junior": 4, "helper": 4, "router": 4 } },
|
|
25
24
|
{ "engineId": "opencode", "modelProviderId": "anthropic", "modelId": "claude-haiku-4-5", "scores": { "senior": 8, "junior": 8, "helper": 10, "router": 10 } },
|
|
26
25
|
{ "engineId": "opencode", "modelProviderId": "zai", "modelId": "glm-4.7-flash", "scores": { "senior": 3, "junior": 3, "helper": 3, "router": 3 } },
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"exports": {
|
|
7
7
|
"./server/registerRoutes": "./src/server/registerRoutes.js",
|
|
8
8
|
"./server/service": "./src/server/service.js",
|
|
9
|
+
"./server/agentSpecs": "./src/server/agentSpecs.js",
|
|
9
10
|
"./server/integrationAssistantContracts": "./src/server/integrationAssistantContracts.js",
|
|
10
11
|
"./server/integrationSetupInput": "./src/server/integrationSetupInput.js",
|
|
11
12
|
"./docs/application-integration-setup.md": "./docs/application-integration-setup.md",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"./server/conversationConfiguration": "./src/server/conversationConfiguration.js",
|
|
10
10
|
"./server/projectStackInspection": "./src/server/projectStackInspection.js",
|
|
11
11
|
"./server/actions": "./src/server/actions.js",
|
|
12
|
+
"./server/agentSpecs": "./src/server/agentSpecs.js",
|
|
12
13
|
"./server/codexGitCommand": "./src/server/codexGitCommand.js",
|
|
13
14
|
"./server/vibe64OutputTargets": "./src/server/vibe64OutputTargets.js",
|
|
14
15
|
"./server/launchPreviewProxy": "./src/server/launchPreviewProxy.js",
|
|
@@ -17,6 +18,7 @@
|
|
|
17
18
|
"./shared/launchPreviewProtocol": "./src/shared/launchPreviewProtocol.js",
|
|
18
19
|
"./shared/assistantWorkPlan": "./src/shared/assistantWorkPlan.js",
|
|
19
20
|
"./server/retainedConversationHelper": "./src/server/retainedConversationHelper.js",
|
|
21
|
+
"./server/practiceAgentGuidance": "./src/server/practiceAgentGuidance.js",
|
|
20
22
|
"./server/assistantClaudeCommandUpgrade": "./src/server/assistantClaudeCommandUpgrade.js",
|
|
21
23
|
"./server/assistantClaudeDeliveryUpgrade": "./src/server/assistantClaudeDeliveryUpgrade.js",
|
|
22
24
|
"./server/assistantPlanProgressUpgrade": "./src/server/assistantPlanProgressUpgrade.js"
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { createRequire as __vibe64CreateRequire } from 'node:module';const require=__vibe64CreateRequire(import.meta.url);
|
|
2
|
-
import{execFile as
|
|
3
|
-
in",customScheme:"",appLinkDomains:Object.freeze([])}),
|
|
4
|
-
versionName:"1.0.0"});var De=/^[a-z][a-z0-9_.-]*$/u,
|
|
2
|
+
import{execFile as En}from"node:child_process";import{fileURLToPath as On}from"node:url";import Sn from"node:path";var Nn=2*1024*1024,Rn=32*1024*1024,Mn=2*1024*1024;import{execFile as zt,spawn as Fn}from"node:child_process";import{promisify as Lt}from"node:util";var Vn=Lt(zt);var Hn=Object.freeze(["none","pending","committed","rolledBack","unknown"]);function O(t,{fallback:e=""}={}){return String(t||"").trim()||e}function B(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}var Jn=Object.freeze(["bundled","dev_server"]),Wn=Object.freeze(["capacitor"]),Yn=Object.freeze({callbackPath:"/auth/log\
|
|
3
|
+
in",customScheme:"",appLinkDomains:Object.freeze([])}),Xn=Object.freeze({packageName:"",minSdk:26,targetSdk:35,versionCode:1,
|
|
4
|
+
versionName:"1.0.0"});var De=/^[a-z][a-z0-9_.-]*$/u,Ft=/^[A-Za-z_$][A-Za-z0-9_$]*$/u;function ke(t,e){let n=String(t||"").trim().toLowerCase();
|
|
5
5
|
if(!De.test(n))throw new TypeError(`${e} must match ${De.toString()}.`);return n}function ce(t,e){if(t==null)return Object.
|
|
6
6
|
freeze({});if(!B(t))throw new TypeError(`${e} must be an object mapping local names to capability ids.`);let n={},r=new Set;
|
|
7
|
-
for(let[o,s]of Object.entries(t)){let i=String(o||"").trim();if(!
|
|
7
|
+
for(let[o,s]of Object.entries(t)){let i=String(o||"").trim();if(!Ft.test(i))throw new TypeError(`${e} local name "${i}" \
|
|
8
8
|
must be a JavaScript identifier.`);let a=ke(s,`${e}.${i}`);if(r.has(a))throw new TypeError(`${e} declares capability "${a}\
|
|
9
|
-
" more than once.`);r.add(a),n[i]=a}return Object.freeze(n)}function
|
|
9
|
+
" more than once.`);r.add(a),n[i]=a}return Object.freeze(n)}function Ut(t){let e=new Map;for(let[n,r]of Object.entries(t))
|
|
10
10
|
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)}\
|
|
11
11
|
and ${n}.`);e.set(o,n)}}function ue(t,e){if(t==null)return null;if(typeof t!="function")throw new TypeError(`${e} must \
|
|
12
12
|
be a function when provided.`);return t}function Y({id:t,requires:e={},optional:n={},provides:r={},setup:o,boot:s=null,shutdown:i=null}={}){
|
|
13
|
-
let a=ke(t,"Provider id"),c=ce(e,`${a}.requires`),u=ce(n,`${a}.optional`),l=ce(r,`${a}.provides`);
|
|
13
|
+
let a=ke(t,"Provider id"),c=ce(e,`${a}.requires`),u=ce(n,`${a}.optional`),l=ce(r,`${a}.provides`);Ut({requires:c,optional:u,
|
|
14
14
|
provides:l});let d=ue(o,`${a}.setup`);if(!d)throw new TypeError(`${a}.setup is required.`);return Object.freeze({id:a,requires:c,
|
|
15
15
|
optional:u,provides:l,setup:d,boot:ue(s,`${a}.boot`),shutdown:ue(i,`${a}.shutdown`)})}var ze="public";function Le(){let t=[],e=new Set,n=!1;function r({id:a,order:c=0,contribute:u}={}){if(n)throw new Error("Bootstrap regis\
|
|
16
16
|
tration is closed after the first payload is resolved.");let l=O(a);if(!l)throw new TypeError("Bootstrap contributor id \
|
|
@@ -20,20 +20,20 @@ isFinite(c)?Number(c):0,contribute:u})),i}async function o(a={}){n=!0;let c={},u
|
|
|
20
20
|
(l,d)=>l.entry.order-d.entry.order||l.index-d.index).map(({entry:l})=>l);for(let l of u){let d=await l.contribute(Object.
|
|
21
21
|
freeze({...B(a)?a:{},payload:Object.freeze({...c})}));c={...c,...B(d)?d:{}}}return Object.freeze(c)}function s(){return Object.
|
|
22
22
|
freeze({sealed:n,contributorIds:Object.freeze(t.map(a=>a.id).sort())})}let i=Object.freeze({register:r,resolve:o,diagnostics:s});
|
|
23
|
-
return i}var
|
|
23
|
+
return i}var Bt=Y({id:"runtime.bootstrap",requires:{http:"runtime.http"},provides:{bootstrap:"runtime.bootstrap"},setup({
|
|
24
24
|
http:t}){let e=Le();return t.router.register("GET","/api/bootstrap",{auth:ze,meta:{tags:["bootstrap"],summary:"Resolve a\
|
|
25
|
-
pp bootstrap payload"}},async(n,r)=>{r.code(200).send(await e.resolve({request:n,reply:r,query:n.query||{}}))}),{bootstrap:e}}});function
|
|
25
|
+
pp bootstrap payload"}},async(n,r)=>{r.code(200).send(await e.resolve({request:n,reply:r,query:n.query||{}}))}),{bootstrap:e}}});function Vt(t){if(!t||typeof t!="object"||Array.isArray(t))throw new TypeError("Event listener must be an object.");let e=String(
|
|
26
26
|
t.id||"").trim();if(!e)throw new TypeError("Event listener id is required.");if(typeof t.handle!="function")throw new TypeError(
|
|
27
27
|
`Event listener "${e}" requires handle().`);if(t.matches!=null&&typeof t.matches!="function")throw new TypeError(`Event \
|
|
28
28
|
listener "${e}" matches must be a function when provided.`);return Object.freeze({id:e,handle:t.handle,matches:typeof t.
|
|
29
|
-
matches=="function"?t.matches:null})}function
|
|
29
|
+
matches=="function"?t.matches:null})}function qt(t){if(!t||typeof t!="object"||Array.isArray(t))throw new TypeError("Pub\
|
|
30
30
|
lished event must be an object.");let e=String(t.type||"").trim();if(!e)throw new TypeError("Published event type is req\
|
|
31
|
-
uired.");return Object.freeze({...t,type:e})}function $e(){let t=[],e=new Set;function n(i){let a=
|
|
32
|
-
`Event listener "${a.id}" is duplicated.`);return e.add(a.id),t.push(a),s}async function r(i){let a=
|
|
31
|
+
uired.");return Object.freeze({...t,type:e})}function $e(){let t=[],e=new Set;function n(i){let a=Vt(i);if(e.has(a.id))throw new Error(
|
|
32
|
+
`Event listener "${a.id}" is duplicated.`);return e.add(a.id),t.push(a),s}async function r(i){let a=qt(i);for(let c of t)
|
|
33
33
|
c.matches&&c.matches(a)!==!0||await c.handle(a);return a}function o(){return Object.freeze({listenerIds:Object.freeze(t.
|
|
34
|
-
map(i=>i.id))})}let s=Object.freeze({register:n,publish:r,diagnostics:o});return s}var
|
|
34
|
+
map(i=>i.id))})}let s=Object.freeze({register:n,publish:r,diagnostics:o});return s}var Gt=Y({id:"runtime.events",provides:{
|
|
35
35
|
events:"runtime.events"},setup(){return{events:$e()}}});function y(t){if(t===null||typeof t!="object")return!1;let e=Object.getPrototypeOf(t);return e===Object.prototype||e===null||
|
|
36
|
-
|
|
36
|
+
Jt(e)}function Jt(t){return t!==null&&typeof t=="object"&&Object.getPrototypeOf(t)===null&&Reflect.ownKeys(t).length===0}function le(t){return t!==null&&typeof t=="object"&&y(t.structure)&&y(t.operations)&&typeof t.validateWith=="function"&&
|
|
37
37
|
typeof t.toJsonSchema=="function"&&typeof t.cleanup=="function"}function X(t,e){if(!Object.hasOwn(e,"items"))return null;
|
|
38
38
|
let{items:n}=e;if(le(n))return{kind:"schema",schema:n};if(!y(n)||typeof n.type!="string")throw new Error(`Array field "${t}\
|
|
39
39
|
" must define items as either a Schema instance or a field definition object.`);return{kind:"definition",definition:n}}function V(t,e){
|
|
@@ -46,33 +46,33 @@ if(r&&e.additionalProperties===!0)throw new Error(`Object field "${t}" cannot de
|
|
|
46
46
|
s: true.`);if(n){if(!le(e.schema))throw new Error(`Object field "${t}" must define schema as a Schema instance.`);return{
|
|
47
47
|
kind:"nested",schema:e.schema,allowAdditionalProperties:e.additionalProperties===!0}}return r?{kind:"map",valuesConfig:V(
|
|
48
48
|
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 de="^(?:0|-?[1-9]\\d*)$",Fe="\\d{4}",Ue="0[1-9]|1[0-2]",Be="0[1-9]|[12]\\d|3[01]",Ve="[01]\\d|2[0-3]",P="[0-5]\\d",Z=`\
|
|
49
|
-
(?:${Ve}):${P}`,qe=`(?:Z|[+-](?:${Ve}):${P})`,Ge=`(${Fe})-(${Ue})-(${Be})`,He=`${Fe}-(?:${Ue})-(?:${Be})`,Je=`^${He}$`,
|
|
50
|
-
`^${Ge}$`),
|
|
51
|
-
de),
|
|
52
|
-
2?
|
|
49
|
+
(?:${Ve}):${P}`,qe=`(?:Z|[+-](?:${Ve}):${P})`,Ge=`(${Fe})-(${Ue})-(${Be})`,He=`${Fe}-(?:${Ue})-(?:${Be})`,Je=`^${He}$`,Wt=new RegExp(
|
|
50
|
+
`^${Ge}$`),Yt=new RegExp(`^${Z}(?::${P}(?:\\.(\\d+))?)?$`),Xt=new RegExp(`^${Ge}T${Z}:${P}(?:\\.(\\d+))?${qe}$`),Kt=new RegExp(
|
|
51
|
+
de),Zt=[31,28,31,30,31,30,31,31,30,31,30,31];function Qt(t){return t%4===0&&(t%100!==0||t%400===0)}function er(t,e){return e===
|
|
52
|
+
2?Qt(t)?29:28:Zt[e-1]}function We(t,e,n){let r=Number(t),o=Number(e),s=Number(n);return o>=1&&o<=12&&s>=1&&s<=er(r,o)}function q(t,e){
|
|
53
53
|
let n=t.temporalPrecision;if(n!==void 0){if(!Number.isInteger(n)||n<0)throw new Error(`temporalPrecision for "${e}" must\
|
|
54
54
|
be a non-negative integer.`);return n}}function Ye(t,e){return t===void 0?!0:e===void 0||t.length<=e}function Xe(t){if(typeof t!=
|
|
55
|
-
"string")return!1;let e=
|
|
56
|
-
exec(t);return n!==null&&Ye(n[1],e)}function Ze(t,e){if(typeof t!="string")return!1;let n=
|
|
55
|
+
"string")return!1;let e=Wt.exec(t);return e!==null&&We(e[1],e[2],e[3])}function Ke(t,e){if(typeof t!="string")return!1;let n=Yt.
|
|
56
|
+
exec(t);return n!==null&&Ye(n[1],e)}function Ze(t,e){if(typeof t!="string")return!1;let n=Xt.exec(t);return n===null?!1:
|
|
57
57
|
We(n[1],n[2],n[3])&&Ye(n[4],e)}function Qe(t){return t===void 0?"(?:\\.\\d+)?":t===0?"":`(?:\\.\\d{1,${t}})?`}function et(t,e){
|
|
58
58
|
let n=q(t,e);return`^${Z}(?::${P}${Qe(n)})?$`}function tt(t,e){let n=q(t,e);return`^${He}T${Z}:${P}${Qe(n)}${qe}$`}function fe(t,e){
|
|
59
|
-
let n;if(typeof t=="number")n=t;else if(typeof t=="string"&&
|
|
60
|
-
n)||n<-e||n>e?null:n===0?0:n}var
|
|
61
|
-
has(t))throw new Error(`${e}() received unsafe path segment "${t}".`)}function
|
|
59
|
+
let n;if(typeof t=="number")n=t;else if(typeof t=="string"&&Kt.test(t))n=Number(t);else return null;return!Number.isSafeInteger(
|
|
60
|
+
n)||n<-e||n>e?null:n===0?0:n}var tr=new Set(["__proto__","prototype","constructor"]);function p(t,e,n){Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0})}function rr(t,e){if(tr.
|
|
61
|
+
has(t))throw new Error(`${e}() received unsafe path segment "${t}".`)}function nr(t){return typeof t!="string"?t:t.replace(
|
|
62
62
|
/\[(.+?)\]/g,".$1").replace(/^\.+/,"").replace(/\.+/g,".").replace(/\.$/,"")}function pe(t,e,{normalize:n=!1,allowEmpty:r=!1}={}){
|
|
63
|
-
let o=n?
|
|
63
|
+
let o=n?nr(t):t;if(typeof o!="string"||o.trim()===""){if(r&&o==="")return[];throw new Error(`${e}() expects a non-empty \
|
|
64
64
|
dotted path string.`)}let s=o.split(".");if(s.some(i=>i===""))throw new Error(`${e}() received an invalid path "${o}".`);
|
|
65
|
-
for(let i of s)
|
|
66
|
-
he=Symbol("json-rest-schema.exportContext"),
|
|
67
|
-
return{anyOf:[{type:"integer",minimum:-t,maximum:t},{type:"string",pattern:de}]}}function I(t,e){return{[S]:{[t]:e}}}var
|
|
65
|
+
for(let i of s)rr(i,e);return s}var or="http://json-schema.org/draft-07/schema#",S="x-json-rest-schema",me=["object","array","string","number","boolean"],
|
|
66
|
+
he=Symbol("json-rest-schema.exportContext"),sr=["true","1","yes","y","on"],ir=["false","0","no","n","off"];function rt(t){
|
|
67
|
+
return{anyOf:[{type:"integer",minimum:-t,maximum:t},{type:"string",pattern:de}]}}function I(t,e){return{[S]:{[t]:e}}}var ar={
|
|
68
68
|
none:()=>({type:me}),blob:()=>({type:me}),serialize:()=>({type:me}),object:()=>({type:"object"}),array:()=>({type:"array"}),
|
|
69
69
|
file:()=>({type:"string"}),string:()=>({type:"string"}),number:()=>({type:["number","string"]}),integer:()=>({type:["int\
|
|
70
70
|
eger","string"]}),epochMilliseconds:()=>rt(864e13),epochSeconds:()=>rt(864e10),dateTime:({definition:t,fieldName:e})=>({
|
|
71
71
|
type:"string",format:"date-time",pattern:tt(t,e)}),date:()=>({type:"string",format:"date",pattern:Je}),time:({definition:t,
|
|
72
72
|
fieldName:e})=>({type:"string",pattern:et(t,e)}),boolean:({definition:t})=>{if(t.strictBoolean===!0)return{type:"boolean"};
|
|
73
|
-
let e=new Set([...
|
|
73
|
+
let e=new Set([...sr,String(t.stringTrueWhen||"true").trim().toLowerCase()]),n=new Set([...ir,String(t.stringFalseWhen||
|
|
74
74
|
"false").trim().toLowerCase()]);return{anyOf:[{type:"boolean"},{type:"number",enum:[0,1]},{type:"string",enum:[...n,...e]}]}},
|
|
75
|
-
id:()=>({type:["integer","string"],minimum:1,pattern:"^[1-9][0-9]*$"})},
|
|
75
|
+
id:()=>({type:["integer","string"],minimum:1,pattern:"^[1-9][0-9]*$"})},cr={minLength:({definition:t,parameterValue:e})=>t.
|
|
76
76
|
type==="string"?{minLength:e}:null,maxLength:({definition:t,parameterValue:e})=>t.type==="string"?{maxLength:e}:null,min:({
|
|
77
77
|
definition:t,parameterValue:e})=>j(t)?{minimum:e}:null,max:({definition:t,parameterValue:e})=>j(t)?{maximum:e}:null,pattern:({
|
|
78
78
|
definition:t,parameterValue:e})=>t.type==="string"?{pattern:e instanceof RegExp?e.source:e}:null,enum:({parameterValue:t})=>({
|
|
@@ -82,68 +82,68 @@ I("transforms",{uppercase:!0}):null,lowercase:({parameterValue:t})=>t?I("transfo
|
|
|
82
82
|
"metadata",{precision:t}),scale:({parameterValue:t})=>I("metadata",{scale:t}),temporalPrecision:({parameterValue:t})=>I(
|
|
83
83
|
"metadata",{temporalPrecision:t}),strictBoolean:()=>null,required:()=>null,nullable:()=>null,nullOnEmpty:()=>null,defaultTo:()=>null};
|
|
84
84
|
function be(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.
|
|
85
|
-
isArray(r)&&!Array.isArray(o)){be(o,r);continue}t[n]=r}}function
|
|
85
|
+
isArray(r)&&!Array.isArray(o)){be(o,r);continue}t[n]=r}}function ur(t,e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(
|
|
86
86
|
"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\
|
|
87
|
-
ject"&&typeof e[n]=="object"&&!Array.isArray(t[n])&&!Array.isArray(e[n])){be(t[n],e[n]);continue}t[n]=e[n]}}function
|
|
88
|
-
let r=[...Array.isArray(t.anyOf)&&Object.keys(t).length===1?t.anyOf:[t],...e];return r.length===1?t:{anyOf:r}}function
|
|
87
|
+
ject"&&typeof e[n]=="object"&&!Array.isArray(t[n])&&!Array.isArray(e[n])){be(t[n],e[n]);continue}t[n]=e[n]}}function lr(t,e){
|
|
88
|
+
let r=[...Array.isArray(t.anyOf)&&Object.keys(t).length===1?t.anyOf:[t],...e];return r.length===1?t:{anyOf:r}}function dr(t,e){
|
|
89
89
|
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.
|
|
90
|
-
toJsonSchema=="function")return n.toJsonSchema;let r=
|
|
91
|
-
ed to JSON Schema without a toJsonSchema hook.`);return r}function
|
|
92
|
-
let r=t.validators[e];if(typeof r.toJsonSchema=="function")return r.toJsonSchema;let o=
|
|
90
|
+
toJsonSchema=="function")return n.toJsonSchema;let r=ar[e.type];if(!r)throw new Error(`Type '${e.type}' cannot be export\
|
|
91
|
+
ed to JSON Schema without a toJsonSchema hook.`);return r}function fr(t,e,n){if(!Object.hasOwn(t.validators,e))return null;
|
|
92
|
+
let r=t.validators[e];if(typeof r.toJsonSchema=="function")return r.toJsonSchema;let o=cr[e];if(o)return o;throw new Error(
|
|
93
93
|
`Validator '${e}' on field '${n}' cannot be exported to JSON Schema without a toJsonSchema hook.`)}function nt(t){if(t===
|
|
94
94
|
void 0)return"create";if(["create","replace","patch"].includes(t))return t;throw new Error(`Unsupported JSON Schema expo\
|
|
95
|
-
rt mode '${t}'. Expected 'create', 'replace', or 'patch'.`)}function
|
|
95
|
+
rt mode '${t}'. Expected 'create', 'replace', or 'patch'.`)}function pr(t,e={}){if(e.mode!==void 0&&e.operation!==void 0){
|
|
96
96
|
let n=nt(e.mode);if(n!==e.operation)throw new Error(`Conflicting JSON Schema export options: mode '${n}' does not match \
|
|
97
97
|
operation '${e.operation}'.`)}if(e.operation!==void 0){if(!Object.hasOwn(t.operations,e.operation))throw new Error(`Unkn\
|
|
98
|
-
own JSON Schema export operation '${e.operation}'.`);return e.operation}return nt(e.mode)}function
|
|
99
|
-
void 0&&e.operationDescriptor!==void 0)return{operationName:e.operationName,operation:e.operationDescriptor};let n=
|
|
100
|
-
e);return{operationName:n,operation:t.operations[n]}}function
|
|
98
|
+
own JSON Schema export operation '${e.operation}'.`);return e.operation}return nt(e.mode)}function mr(t,e={}){if(e.operationName!==
|
|
99
|
+
void 0&&e.operationDescriptor!==void 0)return{operationName:e.operationName,operation:e.operationDescriptor};let n=pr(t,
|
|
100
|
+
e);return{operationName:n,operation:t.operations[n]}}function hr(t={}){let e={...t};return Object.defineProperty(e,he,{value:{
|
|
101
101
|
definitions:{},nodes:[],nextDefinitionId:1,rootNode:null},enumerable:!1}),e}function ee(t={}){return t[he]?t[he]:{definitions:{},
|
|
102
|
-
nodes:[],nextDefinitionId:1,rootNode:null}}function
|
|
102
|
+
nodes:[],nextDefinitionId:1,rootNode:null}}function yr(t){return String(t).replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,
|
|
103
103
|
"")||"operation"}function ye(t){return y(t)&&Object.keys(t).length===1&&typeof t.$ref=="string"}function Q(t){return ye(
|
|
104
|
-
t)?{allOf:[t]}:t}function
|
|
105
|
-
o)||null}function
|
|
106
|
-
root:s=!1}={}){let i=ee(e),a=
|
|
107
|
-
operation:r,additionalProperties:o,status:"new",definitionName:s?null:
|
|
104
|
+
t)?{allOf:[t]}:t}function wr(t,e,n,r,o){return t.nodes.find(s=>s.schema===e&&s.operationName===n&&s.operation===r&&s.additionalProperties===
|
|
105
|
+
o)||null}function gr(t,e){let n=yr(e),r=`SchemaNode_${t.nextDefinitionId}_${n}`;return t.nextDefinitionId+=1,r}function ot(t,e,n,r,o,{
|
|
106
|
+
root:s=!1}={}){let i=ee(e),a=wr(i,t,n,r,o);if(a)return s&&(a.pointer="#",i.rootNode=a),a;let c={schema:t,operationName:n,
|
|
107
|
+
operation:r,additionalProperties:o,status:"new",definitionName:s?null:gr(i,n),pointer:s?"#":null};return s?i.rootNode=c:
|
|
108
108
|
c.pointer=`#/definitions/${c.definitionName}`,i.nodes.push(c),c}function st(t,e){if(t.status==="built")return{$ref:t.pointer};
|
|
109
109
|
if(t.status==="building")return{$ref:t.pointer};let n=ee(e);t.status="building",t.pointer!=="#"&&(n.definitions[t.definitionName]=
|
|
110
|
-
{});let r=
|
|
110
|
+
{});let r=br(t.schema,e,t.operationName,t.operation,t.additionalProperties);return t.status="built",t.pointer==="#"?r:(n.
|
|
111
111
|
definitions[t.definitionName]=r,{$ref:t.pointer})}function Ee(t,e,n,r,o=!1){let s=ee(e),i=ot(t,e,n,r,o);return s.rootNode===
|
|
112
|
-
i?{$ref:"#"}:st(i,e)}function G(t,{referenceBacked:e=!1}={}){return{schema:t,referenceBacked:e}}function
|
|
112
|
+
i?{$ref:"#"}:st(i,e)}function G(t,{referenceBacked:e=!1}={}){return{schema:t,referenceBacked:e}}function br(t,e,n,r,o=!1){
|
|
113
113
|
let s={},i=[];for(let[c,u]of Object.entries(t.structure))p(s,c,Oe(t,c,u,e,n,r)),r.enforceRequired&&u.required===!0&&i.push(
|
|
114
|
-
c);let a={type:"object",properties:s,additionalProperties:o};return i.length>0&&(a.required=i),a}function
|
|
114
|
+
c);let a={type:"object",properties:s,additionalProperties:o};return i.length>0&&(a.required=i),a}function Er(t,e,n,r,o,s){
|
|
115
115
|
let i=X(e,n);if(!i)return null;if(i.kind==="schema")return{...Q(Ee(i.schema,r,"replace",i.schema.operations.replace,!1)),
|
|
116
116
|
[S]:{castType:"object"}};let a=n.items.type==="object"&&Object.hasOwn(n.items,"schema")?"replace":o,c=a==="replace"?t.operations.
|
|
117
|
-
replace:s;return Oe(t,`${e}[]`,n.items,r,a,c)}function
|
|
117
|
+
replace:s;return Oe(t,`${e}[]`,n.items,r,a,c)}function Or(t,e,n,r,o,s){let i=V(e,n);if(!i)return null;if(i.kind==="schem\
|
|
118
118
|
a")return{...Q(Ee(i.schema,r,"replace",i.schema.operations.replace,!1)),[S]:{castType:"object"}};let a=i.definition.type===
|
|
119
119
|
"object"&&Object.hasOwn(i.definition,"schema")?"replace":o,c=a==="replace"?t.operations.replace:s;return Oe(t,`${e}.*`,i.
|
|
120
|
-
definition,r,a,c)}function
|
|
120
|
+
definition,r,a,c)}function Sr(t,e,n,r,o,s){if(n.type==="object"){let a=K(e,n);if(a.kind==="nested")return G(Ee(a.schema,
|
|
121
121
|
r,o,s,a.allowAdditionalProperties===!0),{referenceBacked:!0});if(a.kind==="opaque")return G({type:"object",additionalProperties:!0});
|
|
122
|
-
if(a.kind==="map")return G({type:"object",additionalProperties:
|
|
122
|
+
if(a.kind==="map")return G({type:"object",additionalProperties:Or(t,e,n,r,o,s)})}let i=dr(t,n)({schema:t,fieldName:e,definition:n,
|
|
123
123
|
operation:o,mode:o,options:r});if(!i||typeof i!="object"||Array.isArray(i))throw new Error(`Type '${n.type}' on field '${e}\
|
|
124
|
-
' returned an invalid JSON Schema fragment.`);if(n.type==="array"){let a=
|
|
124
|
+
' returned an invalid JSON Schema fragment.`);if(n.type==="array"){let a=Er(t,e,n,r,o,s);if(a)return G({...i,items:a},{referenceBacked:ye(
|
|
125
125
|
i)})}return G(i,{referenceBacked:ye(i)})}function Oe(t,e,n,r,o,s){let i={schema:t,fieldName:e,definition:n,operation:o,mode:o,
|
|
126
|
-
options:r},a=
|
|
127
|
-
n)){if(f==="type"||!Object.hasOwn(t.validators,f))continue;let m=
|
|
128
|
-
parameterValue:n[f],fieldSchema:{...c}});h&&
|
|
129
|
-
null"}),n.nullOnEmpty===!0&&l.push({const:""});let d=Q(
|
|
126
|
+
options:r},a=Sr(t,e,n,r,o,s),c=a.referenceBacked?Q(a.schema):{...a.schema},u={castType:n.type};for(let f of Object.keys(
|
|
127
|
+
n)){if(f==="type"||!Object.hasOwn(t.validators,f))continue;let m=fr(t,f,e);if(!m)continue;let h=m({...i,parameterName:f,
|
|
128
|
+
parameterValue:n[f],fieldSchema:{...c}});h&&ur(c,h)}c[S]&&(be(u,c[S]),delete c[S]);let l=[];n.nullable===!0&&l.push({type:"\
|
|
129
|
+
null"}),n.nullOnEmpty===!0&&l.push({const:""});let d=Q(lr(c,l));if(n.defaultTo!==void 0&&s.applyDefaults)if(typeof n.defaultTo!=
|
|
130
130
|
"function"){let f=t._normalizeDefault(n,n.defaultTo,{fieldPath:e,currentObject:{},containerKey:e,objectBeforeCast:{},options:{},
|
|
131
131
|
settings:t._buildOperationSettings(o,s,{})});if(Object.keys(f.errors).length>0){let m=Object.values(f.errors)[0];throw new Error(
|
|
132
132
|
`defaultTo for "${e}" is invalid (${m.code}).`)}d.default=f.value}else u.defaults={providedByFunction:!0};return d[S]=u,
|
|
133
|
-
d}function it(t,e={}){let n=
|
|
134
|
-
i=ee(n),a=ot(t,n,r,o,s,{root:!0}),c={$schema:
|
|
133
|
+
d}function it(t,e={}){let n=hr(e),{operationName:r,operation:o}=mr(t,n),s=n.additionalProperties===void 0?!1:n.additionalProperties,
|
|
134
|
+
i=ee(n),a=ot(t,n,r,o,s,{root:!0}),c={$schema:or,...st(a,n)};return Object.keys(i.definitions).length>0&&(c.definitions=i.
|
|
135
135
|
definitions),c}function at(t){return t!==null&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"}function _e(t){return t instanceof
|
|
136
|
-
R}function
|
|
136
|
+
R}function vr(){return{self:!1,children:{}}}function ct(t){return Object.keys(t.children).length>0}function A(t,e){return`${t}\
|
|
137
137
|
.${String(e)}`}function mt(t,e){return t===""?String(e):A(t,e)}function ut(t,e){if(t===e)return"";let n=`${e}.`;return t.
|
|
138
138
|
startsWith(n)?t.slice(n.length):null}function x(t,e){let n={};for(let r of Object.values(t)){let o=A(e,r.field);p(n,o,{...r,
|
|
139
139
|
field:o})}return n}function Ie(t){return pe(t,"validatePath")}function lt(t){let e={};for(let n of t){let r=Ie(n),o=e;for(let s=0;s<
|
|
140
|
-
r.length;s++){let i=r[s];Object.hasOwn(o,i)||p(o,i,
|
|
140
|
+
r.length;s++){let i=r[s];Object.hasOwn(o,i)||p(o,i,vr()),s===r.length-1&&(o[i].self=!0),o=o[i].children}}return e}function Ir(t,e){
|
|
141
141
|
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 te(t){return t===
|
|
142
142
|
null?!0:Array.isArray(t)||y(t)?Object.keys(t).length>0:t!==void 0}function dt(t){return[...t].sort((e,n)=>{let r=/^[0-9]+$/.
|
|
143
|
-
test(e),o=/^[0-9]+$/.test(n);return r&&o?Number(e)-Number(n):r?-1:o?1:e.localeCompare(n)})}function
|
|
144
|
-
test(t)}function
|
|
143
|
+
test(e),o=/^[0-9]+$/.test(n);return r&&o?Number(e)-Number(n):r?-1:o?1:e.localeCompare(n)})}function Ar(t){return/^[0-9]+$/.
|
|
144
|
+
test(t)}function _r(t,e=new WeakMap){if(e.has(t))return e.get(t);let n=Object.create(R.prototype);return e.set(t,n),n.structure=
|
|
145
145
|
null,n.types=t.types,n.validators=t.validators,n.operations=t.operations,n.structure=ne(re(t.structure,e)),n._installOperationMethods(),
|
|
146
|
-
Object.freeze(n)}function re(t,e=new WeakMap){if(t===null||typeof t!="object")return t;if(_e(t))return
|
|
146
|
+
Object.freeze(n)}function re(t,e=new WeakMap){if(t===null||typeof t!="object")return t;if(_e(t))return _r(t,e);if(t instanceof
|
|
147
147
|
Date)return new Date(t.getTime());if(t instanceof RegExp){let r=new RegExp(t.source,t.flags);return r.lastIndex=t.lastIndex,
|
|
148
148
|
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(re(o,e));return r}if(!y(t))
|
|
149
149
|
return t;let n={};e.set(t,n);for(let[r,o]of Object.entries(t))p(n,r,re(o,e));return n}function ne(t,e=new WeakSet){if(t===
|
|
@@ -152,25 +152,25 @@ ownKeys(t))ne(t[n],e);return Object.freeze(t)}function Se(t){return ne(re(t))}fu
|
|
|
152
152
|
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)
|
|
153
153
|
return s;let i=mt(n,r);return ht(t,s,o,i)}function ht(t,e,n,r){if(e?.type==="object"){let o=t._resolveObjectFieldMode(r,
|
|
154
154
|
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<
|
|
155
|
-
1)return null;let[s,...i]=n;if(!
|
|
155
|
+
1)return null;let[s,...i]=n;if(!Ar(s))return null;let a=A(r,s);return o.kind==="schema"?i.length<1?null:Ae(o.schema,i,a):
|
|
156
156
|
i.length<1?o.definition:ht(t,o.definition,i,a)}return null}function N(t,e){let n={...t};if(Array.isArray(t.skipFields)){
|
|
157
157
|
let r=t.skipFields.map(o=>ut(o,e)).filter(o=>o!==null&&o!=="");r.length>0?n.skipFields=r:delete n.skipFields}if(y(t.skipParams)){
|
|
158
158
|
let r={};for(let[o,s]of Object.entries(t.skipParams)){let i=ut(o,e);i===null||i===""||p(r,i,s)}Object.keys(r).length>0?n.
|
|
159
|
-
skipParams=r:delete n.skipParams}return n}var
|
|
159
|
+
skipParams=r:delete n.skipParams}return n}var Tr=Object.freeze({create:Object.freeze({targetFields:"schema",enforceRequired:!0,
|
|
160
160
|
applyDefaults:!0,outputFields:"validated",rejectExplicitUndefined:!0}),replace:Object.freeze({targetFields:"schema",enforceRequired:!0,
|
|
161
161
|
applyDefaults:!0,outputFields:"validated",rejectExplicitUndefined:!0}),patch:Object.freeze({targetFields:"input",enforceRequired:!1,
|
|
162
162
|
applyDefaults:!1,outputFields:"input",rejectExplicitUndefined:!0})});function ft(t,e,n,r){let o=e[n];if(!r.includes(o))throw new Error(
|
|
163
163
|
`Operation "${t}" must define ${n} as one of: ${r.join(", ")}.`)}function ve(t,e,n,r=!0){let o=e[n];if(!(o===void 0&&!r)&&
|
|
164
|
-
typeof o!="boolean")throw new Error(`Operation "${t}" must define ${n} as a boolean.`)}function
|
|
164
|
+
typeof o!="boolean")throw new Error(`Operation "${t}" must define ${n} as a boolean.`)}function Cr(t,e){if(typeof e!="ob\
|
|
165
165
|
ject"||e===null||Array.isArray(e))throw new Error(`Operation "${t}" must be an object.`);return ft(t,e,"targetFields",["\
|
|
166
166
|
schema","input"]),ve(t,e,"enforceRequired"),ve(t,e,"applyDefaults"),ft(t,e,"outputFields",["validated","input"]),ve(t,e,
|
|
167
167
|
"rejectExplicitUndefined",!1),Object.freeze({targetFields:e.targetFields,enforceRequired:e.enforceRequired,applyDefaults:e.
|
|
168
168
|
applyDefaults,outputFields:e.outputFields,rejectExplicitUndefined:e.rejectExplicitUndefined===void 0?!0:e.rejectExplicitUndefined})}
|
|
169
|
-
function
|
|
170
|
-
.");let e=Object.create(null);for(let[n,r]of Object.entries(
|
|
169
|
+
function jr(t={}){if(typeof t!="object"||t===null||Array.isArray(t))throw new Error("Schema operations must be an object\
|
|
170
|
+
.");let e=Object.create(null);for(let[n,r]of Object.entries(Tr))p(e,n,r);for(let[n,r]of Object.entries(t))p(e,n,Cr(n,r));
|
|
171
171
|
return Object.freeze(e)}function pt(t){let e=Object.create(null);for(let[n,r]of Object.entries(t))p(e,n,r);return Object.
|
|
172
|
-
freeze(e)}function
|
|
173
|
-
structure=e,this.types=pt(n),this.validators=pt(r),this.operations=
|
|
172
|
+
freeze(e)}function Pr(t){let e={...t};return delete e.operation,delete e.mode,e}var R=class{constructor(e,n,r,o={}){this.
|
|
173
|
+
structure=e,this.types=pt(n),this.validators=pt(r),this.operations=jr(o),this._installOperationMethods()}_typeError(e){return this.
|
|
174
174
|
_paramError(e,"TYPE_CAST_FAILED","Value could not be cast to the required type.")}_paramError(e,n,r,o={}){let s=new Error(
|
|
175
175
|
r);return s.errorObject={field:e,code:n,message:r,params:o},s}_paramToBeSkipped(e,n,r){return typeof n!="object"||n===null?
|
|
176
176
|
!1:!!(Array.isArray(n[r])&&n[r].includes(e))}_fieldToBeSkipped(e,n){return Array.isArray(n.skipFields)&&n.skipFields.includes(
|
|
@@ -185,7 +185,7 @@ rejectExplicitUndefined,defaultedFields:new Set,isFieldPresent:o=>Object.hasOwn(
|
|
|
185
185
|
n))throw new Error(`${e}() expects a plain object input.`)}_resolvePathValidationRequest(e={}){let n=e.operation??e.mode??
|
|
186
186
|
"patch";if(Object.hasOwn(e,"operation")&&Object.hasOwn(e,"mode")&&e.operation!==e.mode)throw new Error("Path validation \
|
|
187
187
|
options `operation` and `mode` must match when both are provided.");if(!Object.hasOwn(this.operations,n))throw new Error(
|
|
188
|
-
`Unknown operation "${n}".`);let r=this.operations[n];return{operationName:n,operation:r,validationOptions:
|
|
188
|
+
`Unknown operation "${n}".`);let r=this.operations[n];return{operationName:n,operation:r,validationOptions:Pr(e)}}_buildOperationResult(e,n,r){
|
|
189
189
|
let o={};for(let s of r.outputFieldNames){if(!Object.hasOwn(this.structure,s))continue;let i=r.isFieldPresent(s);(n[s]!==
|
|
190
190
|
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){
|
|
191
191
|
return K(e,n)}_resolveArrayItemsConfig(e,n){return X(e,n)}_resolveObjectValuesConfig(e,n){return V(e,n)}_buildArrayItemSettings(e,n){
|
|
@@ -262,12 +262,12 @@ h.children,b,N(i,m),{...a,operationName:"replace",operation:o.schema.operations.
|
|
|
262
262
|
p(c,f,U.validatedObject),this._mergeErrors(l,x(U.errors,m));continue}let v=this._buildArrayItemSettings(o.definition,a),
|
|
263
263
|
E=[b];if(g){let U=this._normalizeAndValidateValue(o.definition,b,m,E,0,u,i,v);Object.hasOwn(E,0)&&E[0]!==void 0?p(c,f,E[0]):
|
|
264
264
|
E[0]===null&&p(c,f,null),this._mergeErrors(l,U);continue}if(!C)continue;let se=this._castValue(o.definition,b,m,E,0,u,i,
|
|
265
|
-
v);if(Object.keys(se.errors).length>0){this._mergeErrors(l,se.errors);continue}if(!se.shouldContinue)continue;let
|
|
266
|
-
_validateSelectedDescendants(o.definition,h.children,m,E,0,i,v);te(E[0])&&p(c,f,E[0]),this._mergeErrors(l,
|
|
265
|
+
v);if(Object.keys(se.errors).length>0){this._mergeErrors(l,se.errors);continue}if(!se.shouldContinue)continue;let kt=this.
|
|
266
|
+
_validateSelectedDescendants(o.definition,h.children,m,E,0,i,v);te(E[0])&&p(c,f,E[0]),this._mergeErrors(l,kt)}return l}validateWith(e,n,r={}){
|
|
267
267
|
if(!Object.hasOwn(this.operations,e))throw new Error(`Unknown operation "${e}".`);let o=this.operations[e];return this._assertPlainObjectInput(
|
|
268
268
|
e,n),this._validateWithOperation(e,o,n,r)}validateAt(e,n,r={}){this._assertPlainObjectInput("validateAt",n);let o=Ie(e),
|
|
269
269
|
{operationName:s,operation:i,validationOptions:a}=this._resolvePathValidationRequest(r),c=this._validateSelectedTree(lt(
|
|
270
|
-
[e]),n,a,this._buildOperationSettings(s,i,n));return{validatedValue:
|
|
270
|
+
[e]),n,a,this._buildOperationSettings(s,i,n));return{validatedValue:Ir(c.validatedObject,o),errors:c.errors}}validatePaths(e,n,r={}){
|
|
271
271
|
if(this._assertPlainObjectInput("validatePaths",n),!Array.isArray(e)||e.length===0)throw new Error("validatePaths() expe\
|
|
272
272
|
cts a non-empty array of schema paths.");let{operationName:o,operation:s,validationOptions:i}=this._resolvePathValidationRequest(
|
|
273
273
|
r);return this._validateSelectedTree(lt(e),n,i,this._buildOperationSettings(o,s,n))}_installOperationMethods(){for(let e of Object.
|
|
@@ -276,9 +276,9 @@ thod.`);this[e]=(n,r={})=>this.validateWith(e,n,r)}}toJsonSchema(e={}){return it
|
|
|
276
276
|
this.structure)}getFieldDefinition(e){if(typeof e!="string"||e.trim()==="")throw new Error("Field path must be a non-emp\
|
|
277
277
|
ty string.");let n=Ae(this,Ie(e.trim()));return n===null?null:Se(n)}getFieldMessages(e){let n=this.getFieldDefinition(e);
|
|
278
278
|
return!n||typeof n.messages!="object"||n.messages===null?Object.freeze({}):Se(n.messages)}cleanup(e,n){let r={};for(let o of Object.
|
|
279
|
-
keys(e))Object.hasOwn(this.structure,o)&&this.structure[o][n]&&p(r,o,e[o]);return r}};var{parse:
|
|
280
|
-
{"":t},"",t)),c=!a;for(;a<s.length;)c=!0,i[a]=
|
|
281
|
-
d;let f=r.call(this,l,d);switch(typeof f){case yt:if(f===null)return f;case
|
|
279
|
+
keys(e))Object.hasOwn(this.structure,o)&&this.structure[o][n]&&p(r,o,e[o]);return r}};var{parse:Jo,stringify:xr}=JSON,{keys:Wo}=Object,Nr=String,Rr="string";var yt="object",Mr=(t,e)=>e;var wt=(t,e,n)=>{let r=Nr(e.push(n)-1);return t.set(n,r),r};var gt=(t,e,n)=>{let r=e&&typeof e===yt?(l,d)=>l===""||-1<e.indexOf(l)?d:void 0:e||Mr,o=new Map,s=[],i=[],a=+wt(o,s,r.call(
|
|
280
|
+
{"":t},"",t)),c=!a;for(;a<s.length;)c=!0,i[a]=xr(s[a++],u,n);return"["+i.join(",")+"]";function u(l,d){if(c)return c=!c,
|
|
281
|
+
d;let f=r.call(this,l,d);switch(typeof f){case yt:if(f===null)return f;case Rr:return o.get(f)||wt(o,s,f)}return f}};var kr=new Set(["true","1","yes","y","on"]),zr=new Set(["false","0","no","n","off"]);function Lr(t){return t!==null&&(typeof t==
|
|
282
282
|
"object"||typeof t=="function")&&typeof t.then=="function"}function bt(t){if(typeof t=="number")return Number.isFinite(t)?
|
|
283
283
|
t:null;if(typeof t=="bigint"){let e=Number(t);return Number.isSafeInteger(e)?e:null}if(typeof t=="string"){let e=t.trim();
|
|
284
284
|
if(e==="")return null;let n=Number(e);return Number.isFinite(n)?n:null}return null}function Te(t,e){if(Object.is(t,e))return!0;
|
|
@@ -286,7 +286,7 @@ if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(t in
|
|
|
286
286
|
source===e.source&&t.flags===e.flags;if(Array.isArray(t)||Array.isArray(e)){if(!Array.isArray(t)||!Array.isArray(e)||t.length!==
|
|
287
287
|
e.length)return!1;for(let o=0;o<t.length;o++)if(!Te(t[o],e[o]))return!1;return!0}if(t===null||e===null||typeof t!="objec\
|
|
288
288
|
t"||typeof e!="object"||Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;let n=Object.keys(t),r=Object.keys(
|
|
289
|
-
e);if(n.length!==r.length)return!1;for(let o of n)if(!Object.hasOwn(e,o)||!Te(t[o],e[o]))return!1;return!0}var
|
|
289
|
+
e);if(n.length!==r.length)return!1;for(let o of n)if(!Object.hasOwn(e,o)||!Te(t[o],e[o]))return!1;return!0}var $r={install(t){
|
|
290
290
|
let{addType:e,addValidator:n}=t;e("none",r=>r.value),e("file",r=>{let o=r.value;o==null&&r.throwTypeError();let s=typeof o;
|
|
291
291
|
if(s==="string"||s==="number"||s==="boolean"){let i=o.toString();return r.definition.noTrim?i:i.trim()}r.throwTypeError()}),
|
|
292
292
|
e("string",r=>{let o=r.value;if(o==null)return"";let s=typeof o;if(s==="string"||s==="number"||s==="boolean"){let i=o.toString();
|
|
@@ -301,7 +301,7 @@ r.value)}catch{try{return gt(r.value)}catch{r.throwTypeError()}}}),e("boolean",r
|
|
|
301
301
|
value;if(typeof r.value=="number"){if(r.value===1)return!0;if(r.value===0)return!1;r.throwTypeError()}if(typeof r.value==
|
|
302
302
|
"bigint"){if(r.value===1n)return!0;if(r.value===0n)return!1;r.throwTypeError()}if(typeof r.value=="string"){let o=String(
|
|
303
303
|
r.definition.stringFalseWhen||"false").trim().toLowerCase(),s=String(r.definition.stringTrueWhen||"true").trim().toLowerCase(),
|
|
304
|
-
i=r.value.trim().toLowerCase(),a=new Set([...
|
|
304
|
+
i=r.value.trim().toLowerCase(),a=new Set([...zr,o]),c=new Set([...kr,s]);if(a.has(i))return!1;if(c.has(i))return!0}r.throwTypeError()}),
|
|
305
305
|
e("id",r=>{if(typeof r.value=="number"){if(Number.isSafeInteger(r.value)&&r.value>0)return r.value;r.throwTypeError()}if(typeof r.
|
|
306
306
|
value=="bigint"){if(r.value>0n&&r.value<=BigInt(Number.MAX_SAFE_INTEGER))return Number(r.value);r.throwTypeError()}if(typeof r.
|
|
307
307
|
value=="string"){let o=r.value.trim();/^[1-9][0-9]*$/.test(o)||r.throwTypeError();let s=Number(o);return Number.isSafeInteger(
|
|
@@ -322,7 +322,7 @@ r.throwParamError("PATTERN","Value does not match the required pattern.",{patter
|
|
|
322
322
|
parameterValue){if(r.definition.type!=="boolean")throw new Error(`strictBoolean can only be used on boolean fields (${r.
|
|
323
323
|
fieldName}).`);typeof r.valueBeforeCast!="boolean"&&r.throwParamError("STRICT_BOOLEAN","Value must be a boolean.")}}),n(
|
|
324
324
|
"validator",r=>{if(typeof r.parameterValue!="function")throw new Error(`Validator for ${r.fieldName} must be a function.`);
|
|
325
|
-
let o=r.parameterValue(r.value,r.object,r);if(
|
|
325
|
+
let o=r.parameterValue(r.value,r.object,r);if(Lr(o))throw new Error(`Custom validator for "${r.fieldName}" must be synch\
|
|
326
326
|
ronous.`);typeof o=="string"&&r.throwParamError("CUSTOM_VALIDATOR_FAILED",o)}),n("uppercase",r=>{if(typeof r.value=="str\
|
|
327
327
|
ing")return r.value.toUpperCase()}),n("lowercase",r=>{if(typeof r.value=="string")return r.value.toLowerCase()}),n("leng\
|
|
328
328
|
th",r=>{if(typeof r.value=="string")return r.value.substr(0,r.parameterValue);Number.isInteger(Number(r.valueBeforeCast))&&
|
|
@@ -331,59 +331,59 @@ ed character range.",{max:r.parameterValue,actual:String(r.valueBeforeCast).leng
|
|
|
331
331
|
typeof r.value=="string"&&r.value===""&&r.throwParamError("NOT_EMPTY","Field cannot be empty.")}),n("required",()=>{}),n(
|
|
332
332
|
"unsigned",()=>{}),n("precision",()=>{}),n("scale",()=>{}),n("temporalPrecision",r=>{if(r.definition.type!=="time"&&r.definition.
|
|
333
333
|
type!=="dateTime")throw new Error(`temporalPrecision can only be used on time or dateTime fields (${r.fieldName}).`)}),n(
|
|
334
|
-
"nullable",()=>{}),n("nullOnEmpty",()=>{}),n("defaultTo",()=>{})}},Et
|
|
335
|
-
unction")throw new Error(`Type handler for '${e}' must be a function.`);p(t,e,n)}function
|
|
334
|
+
"nullable",()=>{}),n("nullOnEmpty",()=>{}),n("defaultTo",()=>{})}},Et=$r;var vt=new WeakMap,It=new WeakMap,At=Symbol.for("json-rest-schema.registry-metadata");function Fr(t,e,n){if(typeof n!="f\
|
|
335
|
+
unction")throw new Error(`Type handler for '${e}' must be a function.`);p(t,e,n)}function Ur(t,e,n){if(typeof n!="functi\
|
|
336
336
|
on")throw new Error(`Validator handler for '${e}' must be a function.`);p(t,e,n)}function oe(t={}){let e=Object.create(null);
|
|
337
|
-
for(let[n,r]of Object.entries(t))p(e,n,r);return e}function
|
|
337
|
+
for(let[n,r]of Object.entries(t))p(e,n,r);return e}function Br(t,e){if(typeof t.install!="function")throw new Error("Plu\
|
|
338
338
|
gin must have an install method.");t.install(e)}function Ot(t,e,n){vt.set(t,e),It.set(t,n),Object.defineProperty(t,At,{value:Object.
|
|
339
|
-
freeze({getTypes:()=>e,getValidators:()=>n}),enumerable:!1,configurable:!1,writable:!1})}function
|
|
339
|
+
freeze({getTypes:()=>e,getValidators:()=>n}),enumerable:!1,configurable:!1,writable:!1})}function Vr(t){if(!t||typeof t!=
|
|
340
340
|
"object"&&typeof t!="function")return null;let e=vt.get(t),n=It.get(t);if(e&&n)return{types:e,validators:n};let r=t[At];
|
|
341
341
|
return r&&typeof r.getTypes=="function"&&typeof r.getValidators=="function"?{types:r.getTypes(),validators:r.getValidators()}:
|
|
342
342
|
typeof t=="object"&&t.types&&typeof t.types=="object"&&t.validators&&typeof t.validators=="object"&&typeof t.create=="fu\
|
|
343
343
|
nction"&&typeof t.replace=="function"&&typeof t.patch=="function"&&typeof t.toJsonSchema=="function"?{types:t.types,validators:t.
|
|
344
|
-
validators}:null}function
|
|
345
|
-
for(let[r,o]of Object.entries(e)){if(Object.hasOwn(t,r)&&!
|
|
346
|
-
conflicting ${n} "${r}".`);p(t,r,o)}}function
|
|
347
|
-
e)};let o=Object.create(null),s=Object.create(null);for(let i of r){let a=
|
|
344
|
+
validators}:null}function qr(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function Gr(t,e){return t===e}function St(t,e,n){
|
|
345
|
+
for(let[r,o]of Object.entries(e)){if(Object.hasOwn(t,r)&&!Gr(t[r],o))throw new Error(`Cannot merge schema factories with\
|
|
346
|
+
conflicting ${n} "${r}".`);p(t,r,o)}}function Hr(t,e,n){let r=qr(n).filter(Boolean);if(r.length<1)return{types:oe(t),validators:oe(
|
|
347
|
+
e)};let o=Object.create(null),s=Object.create(null);for(let i of r){let a=Vr(i);if(!a)throw new Error("Factory sources m\
|
|
348
348
|
ust be schema instances or schema factories created by json-rest-schema.");St(o,a.types,"type"),St(s,a.validators,"valid\
|
|
349
349
|
ator")}return{types:o,validators:s}}function _t({types:t={},validators:e={},installCore:n=!0}={}){let r=oe(t),o=oe(e),s=(i,a={})=>{
|
|
350
|
-
let c=new R(i,r,o,a.operations);return Ot(c,r,o),c};return Ot(s,r,o),s.addType=(i,a)=>{
|
|
351
|
-
|
|
350
|
+
let c=new R(i,r,o,a.operations);return Ot(c,r,o),c};return Ot(s,r,o),s.addType=(i,a)=>{Fr(r,i,a)},s.addValidator=(i,a)=>{
|
|
351
|
+
Ur(o,i,a)},s.use=i=>{Br(i,{addType:s.addType,addValidator:s.addValidator})},s.createFactory=(...i)=>{let a=Hr(r,o,i);return _t(
|
|
352
352
|
{types:a.types,validators:a.validators,installCore:!1})},n&&s.use(Et),s}var _=_t({installCore:!0});function T(t,e=new WeakSet){if(!t||typeof t!="object"||e.has(t))return t;e.add(t);for(let n of Object.getOwnPropertyNames(
|
|
353
|
-
t))T(t[n],e);return Object.freeze(t)}var
|
|
353
|
+
t))T(t[n],e);return Object.freeze(t)}var ys=Object.freeze({REQUIRED:"required",TYPE_CAST_FAILED:"default",NOT_NULLABLE:"default",MIN_LENGTH:"minLength",MAX_LENGTH:"\
|
|
354
354
|
maxLength",MIN_VALUE:"min",MAX_VALUE:"max",PATTERN:"pattern",ENUM_VALUE:"enum",FIELD_NOT_ALLOWED:"additionalProperties",
|
|
355
|
-
CUSTOM_VALIDATOR_FAILED:"default"});var
|
|
356
|
-
mode:"patch"});var Ct=Object.freeze({type:"string",pattern:"^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$",minLength:5}),
|
|
357
|
-
{...Ct,nullable:!0});var jt="^[1-9][0-9]*$",Ce=T({type:"string",minLength:1,pattern:jt});var
|
|
358
|
-
."}}}),mode:"patch"});var Pt=20,
|
|
359
|
-
execute:"assistant_action_execute"}),Pe=Object.freeze({type:"object",additionalProperties:!0}),
|
|
355
|
+
CUSTOM_VALIDATOR_FAILED:"default"});var Wr=_({cursor:{type:"id",required:!1},limit:{type:"number",required:!1,min:1,unsigned:!0}}),Yr=Object.freeze({schema:Wr,
|
|
356
|
+
mode:"patch"});var Ct=Object.freeze({type:"string",pattern:"^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$",minLength:5}),Xr=Object.freeze(
|
|
357
|
+
{...Ct,nullable:!0});var jt="^[1-9][0-9]*$",Ce=T({type:"string",minLength:1,pattern:jt});var Zr=T({...Ce,nullable:!0});var Qr=T({schema:_({recordId:{...Ce,required:!0,messages:{pattern:"Record id must be a canonical positive integer string\
|
|
358
|
+
."}}}),mode:"patch"});var Pt=20,Ii=32*1024,Ai=48*1024,je=Object.freeze({search:"assistant_action_search",contract:"assistant_action_contract",
|
|
359
|
+
execute:"assistant_action_execute"}),Pe=Object.freeze({type:"object",additionalProperties:!0}),rn=Object.freeze({type:"o\
|
|
360
360
|
bject",additionalProperties:!1,properties:{query:{type:"string",maxLength:200,description:"Optional literal words or act\
|
|
361
361
|
ion-id fragments; every word must match. Use short resource or operation terms such as list. Omit query to browse all av\
|
|
362
362
|
ailable actions."},cursor:{type:"string",maxLength:1e3,description:"Opaque cursor returned by the previous search page."},
|
|
363
|
-
limit:{type:"integer",minimum:1,maximum:Pt,description:"Maximum compact matches to return."}}}),
|
|
363
|
+
limit:{type:"integer",minimum:1,maximum:Pt,description:"Maximum compact matches to return."}}}),nn=Object.freeze({type:"\
|
|
364
364
|
object",additionalProperties:!1,required:["items","nextCursor","total"],properties:{items:{type:"array",maxItems:Pt,items:{
|
|
365
365
|
type:"object",additionalProperties:!1,required:["actionId","version","kind","description"],properties:{actionId:{type:"s\
|
|
366
366
|
tring"},version:{type:"integer",minimum:1},kind:{type:"string"},description:{type:"string"}}}},nextCursor:{anyOf:[{type:"\
|
|
367
|
-
string"},{type:"null"}]},total:{type:"integer",minimum:0}}}),
|
|
368
|
-
"actionId"],properties:{actionId:{type:"string",minLength:1,maxLength:300},version:{type:"integer",minimum:1}}}),
|
|
367
|
+
string"},{type:"null"}]},total:{type:"integer",minimum:0}}}),on=Object.freeze({type:"object",additionalProperties:!1,required:[
|
|
368
|
+
"actionId"],properties:{actionId:{type:"string",minLength:1,maxLength:300},version:{type:"integer",minimum:1}}}),sn=Object.
|
|
369
369
|
freeze({type:"object",additionalProperties:!1,required:["actionId","version","kind","description","inputSchema","outputS\
|
|
370
370
|
chema"],properties:{actionId:{type:"string"},version:{type:"integer",minimum:1},kind:{type:"string"},description:{type:"\
|
|
371
|
-
string"},inputSchema:Pe,outputSchema:Pe}}),
|
|
372
|
-
"input"],properties:{actionId:{type:"string",minLength:1,maxLength:300},version:{type:"integer",minimum:1},input:Pe}}),
|
|
371
|
+
string"},inputSchema:Pe,outputSchema:Pe}}),an=Object.freeze({type:"object",additionalProperties:!1,required:["actionId",
|
|
372
|
+
"input"],properties:{actionId:{type:"string",minLength:1,maxLength:300},version:{type:"integer",minimum:1},input:Pe}}),cn=Object.
|
|
373
373
|
freeze({type:"object",additionalProperties:!1,required:["actionId","version","result"],properties:{actionId:{type:"strin\
|
|
374
|
-
g"},version:{type:"integer",minimum:1},result:{}}}),
|
|
374
|
+
g"},version:{type:"integer",minimum:1},result:{}}}),xt=Object.freeze([Object.freeze({name:je.search,description:"Discove\
|
|
375
375
|
r application actions available to the current user and surface, including list, search, and query operations for multip\
|
|
376
376
|
le records. Search before claiming a capability is unavailable. If terminology does not match, use broader terms or omit\
|
|
377
|
-
query to browse. Returns compact paged matches without schemas; follow nextCursor when more discovery is needed.",parameters:
|
|
378
|
-
outputSchema:
|
|
379
|
-
e action before executing it.",parameters:
|
|
380
|
-
vailable action after loading its exact contract in this turn. The action result is returned in result.",parameters:
|
|
377
|
+
query to browse. Returns compact paged matches without schemas; follow nextCursor when more discovery is needed.",parameters:rn,
|
|
378
|
+
outputSchema:nn}),Object.freeze({name:je.contract,description:"Load the exact input and output contract for one availabl\
|
|
379
|
+
e action before executing it.",parameters:on,outputSchema:sn}),Object.freeze({name:je.execute,description:"Execute one a\
|
|
380
|
+
vailable action after loading its exact contract in this turn. The action result is returned in result.",parameters:an,outputSchema:cn})]);var xe="This conversation has no authorization for that native tool.";import{mkdir as Ji,readFile as ln,rename as Wi,writeFile as Yi}from"node:fs/promises";import M from"node:path";var H=t=>String(
|
|
381
381
|
t??"").trim();function D(t,e={}){if(t?.modelProviderId&&e.model?.providerID!==t.modelProviderId)throw new Error("Assistants must use t\
|
|
382
382
|
he session's selected AI account.")}function k(t={},e={}){let n=t.model?.limit?.output,r=Number.isSafeInteger(n)&&n>0?n:
|
|
383
383
|
32e3;Number.isSafeInteger(e.maxOutputTokens)&&e.maxOutputTokens>r&&(e.maxOutputTokens=r)}async function z(t=""){if(!t)return[];
|
|
384
|
-
let e=JSON.parse(await
|
|
384
|
+
let e=JSON.parse(await ln(t,"utf8"));return Array.isArray(e?.sessions)?e.sessions:[]}function dn(t="",e=""){let n=M.relative(
|
|
385
385
|
t,e);return n===""||!n.startsWith("..")&&!M.isAbsolute(n)}function L(t,e=""){let n=M.resolve(H(e)||process.cwd());return t.
|
|
386
|
-
filter(r=>H(r?.workdir)&&
|
|
386
|
+
filter(r=>H(r?.workdir)&&dn(M.resolve(r.workdir),n)).sort((r,o)=>M.resolve(o.workdir).length-M.resolve(r.workdir).length)[0]||
|
|
387
387
|
null}async function $(t,e="",n=null){let r=new Set,o=H(e);for(;o&&!r.has(o)&&r.size<32;){let s=t.find(a=>H(a?.upstreamSessionId)===
|
|
388
388
|
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(
|
|
389
389
|
"The subagent's parent session could not be verified."),{code:"assistant_opencode_parent_unverified"});o=H(i.data?.parentID)}
|
|
@@ -398,10 +398,10 @@ if(e.get(a)!==u)throw new Error("Conversation context changed while reading inst
|
|
|
398
398
|
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(
|
|
399
399
|
0,i.system.length,l):i.system.includes(l)||i.system.push(l),n.set(i.system,l)}function o({event:s}={}){if(!["session.com\
|
|
400
400
|
pacted","session.deleted"].includes(s?.type))return;let i=String(s.properties?.sessionID||s.properties?.info?.id||"").trim();
|
|
401
|
-
i&&e.delete(i)}return Object.freeze({transformSystem:r,event:o,invalidate:s=>e.delete(s),close:()=>e.clear()})}import{isAbsolute as
|
|
402
|
-
|
|
403
|
-
"host.commandWrapper must name an absolute executable path.")}function
|
|
404
|
-
includes("\0"))throw new TypeError("The native shell tool requires valid command text.");return`${
|
|
401
|
+
i&&e.delete(i)}return Object.freeze({transformSystem:r,event:o,invalidate:s=>e.delete(s),close:()=>e.clear()})}import{isAbsolute as fn}from"node:path";var Qi=new URL("./../../../../@jskit-ai/assistant-core/src/server/conversation/commandWrapper.js",import.meta.url).href,
|
|
402
|
+
Nt=t=>`'${t.replaceAll("'",`'"'"'`)}'`;function pn(t){if(typeof t!="string"||!fn(t)||t.includes("\0"))throw new TypeError(
|
|
403
|
+
"host.commandWrapper must name an absolute executable path.")}function Rt(t,e){if(pn(t),typeof e!="string"||!e.trim()||e.
|
|
404
|
+
includes("\0"))throw new TypeError("The native shell tool requires valid command text.");return`${Nt(t)} ${Nt(e)}`}async function J({client:t,registryPath:e=process.env.JSKIT_OPENCODE_ENV_REGISTRY,resolveHostInstructions:n}={}){let r=JSON.
|
|
405
405
|
parse(process.env.JSKIT_OPENCODE_TOOL_SCHEMAS||"[]"),o=new Map(r.map(({function:u})=>[u.name,u])),s=()=>z(e);async function i(u){
|
|
406
406
|
let l=await $(await s(),u,t);if(!l)throw new Error("This native conversation has no instruction owner.");return l}let a=Ne(
|
|
407
407
|
{async resolveInstructions(u){let{conversation:l}=await i(u);return l?{identity:l.systemPrompt,placement:"replace",read:()=>l.
|
|
@@ -409,31 +409,29 @@ systemPrompt}:null}}),c=n?Ne({resolveInstructions:async u=>(await n(u))?.instruc
|
|
|
409
409
|
ystem.transform":c?async(u,l)=>(await n(u.sessionID||u.sessionId))?.conversation?a.transformSystem(u,l):c.transformSystem(
|
|
410
410
|
u,l):a.transformSystem,event:c?u=>{c.event(u),a.event(u)}:a.event,"chat.params":async(u,l)=>{let d=await i(u.sessionID);
|
|
411
411
|
D(d,u),k(u,l)},"tool.execute.before":async({tool:u,sessionID:l},d)=>{let{conversation:f}=await i(l);if(!(o.has(u)?f?.tools?.
|
|
412
|
-
schemas.some(({function:h})=>h.name===u):f?.nativeTools))throw new Error("
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
some(({function:C})=>C.name===u))throw new Error("This conversation has no authorization for that native tool.");let h=await fetch(
|
|
412
|
+
schemas.some(({function:h})=>h.name===u):f?.nativeTools))throw new Error(xe);u==="bash"&&f.commandWrapper&&(d.args.command=
|
|
413
|
+
Rt(f.commandWrapper,d.args.command))},"shell.env":async({sessionID:u,cwd:l},d)=>{let f=u?await i(u):L(await s(),l);f?.conversation?.
|
|
414
|
+
nativeTools&&Object.assign(d.env,f.env)},"tool.definition":({toolID:u},l)=>{let d=o.get(u);d&&(l.jsonSchema=d.parameters)},
|
|
415
|
+
tool:Object.fromEntries([...o].map(([u,l])=>[u,{description:l.description,args:l.parameters.properties,async execute(d,f){
|
|
416
|
+
if(!f.callID||!f.sessionID||!f.messageID)throw new Error("OpenCode did not supply an application tool identity.");let m=(await i(
|
|
417
|
+
f.sessionID)).conversation?.tools;if(!m?.schemas.some(({function:C})=>C.name===u))throw new Error(xe);let h=await fetch(
|
|
419
418
|
m.url,{method:"POST",signal:f.abort,headers:{authorization:`Bearer ${m.token}`,"content-type":"application/json"},body:JSON.
|
|
420
419
|
stringify({sessionId:f.sessionID,messageId:f.messageID,id:f.callID,name:u,input:d})}),g=await h.json();if(!h.ok)throw new Error(
|
|
421
|
-
g.error||"The application tool request failed.");return JSON.stringify(g)}}]))}}var
|
|
422
|
-
async function Me(){return z(w(process.env.VIBE64_OPENCODE_SESSION_ENV_REGISTRY))}async function
|
|
420
|
+
g.error||"The application tool request failed.");return JSON.stringify(g)}}]))}}var la=new URL("./../../../../@jskit-ai/assistant-core/src/server/conversation/openCodeProcess.js",import.meta.url).href;var ma=256*1024;var ha=2*1024*1024;var bn=xt.map(({name:t,description:e,parameters:n})=>({type:"function",function:{name:t,description:e,parameters:n}}));import{vibe64Driver as vn}from"@local/vibe64-genesis/server/promptContext";function w(t=""){return String(t??"").trim()}
|
|
421
|
+
async function Me(){return z(w(process.env.VIBE64_OPENCODE_SESSION_ENV_REGISTRY))}async function In(t=""){return L(await Me(),
|
|
423
422
|
t)}async function F(t="",e=null){try{return await $(await Me(),t,e)}catch(n){throw n.code==="assistant_opencode_parent_u\
|
|
424
423
|
nverified"?new Error("Vibe64 could not verify the subagent's parent session."):n}}function Re(t,e){return!!(e?.helperModelId&&
|
|
425
|
-
t===`vibe64-helper-${e.modelProviderId}`)}function W(t=""){return`'${String(t??"").replaceAll("'",`'"'"'`)}'`}function
|
|
424
|
+
t===`vibe64-helper-${e.modelProviderId}`)}function W(t=""){return`'${String(t??"").replaceAll("'",`'"'"'`)}'`}function An(){
|
|
426
425
|
return"printf '%s\\n' 'vibe64_agent_control_unavailable: Session command control is unavailable. Reconnect the assistant.\
|
|
427
|
-
' >&2; exit 126"}function
|
|
426
|
+
' >&2; exit 126"}function Mt(t="",e=null){let n=String(t),r=w(e?.env?.VIBE64_WRAPPER);if(!r)return n;let o=`${W(r)} '`;if(!n.
|
|
428
427
|
startsWith(o)||!n.endsWith("'"))return n;let s=n.slice(o.length,-1).replaceAll(`'"'"'`,"'");return`${W(r)} ${W(s)}`===n?
|
|
429
|
-
s:n}function
|
|
430
|
-
e?.env?.VIBE64_WRAPPER);if(!n)return
|
|
428
|
+
s:n}function Dt(t="",e=null){let n=String(t),r=Mt(n,e);for(;r!==n;)n=r,r=Mt(n,e);return n}function _n(t="",e=null){let n=w(
|
|
429
|
+
e?.env?.VIBE64_WRAPPER);if(!n)return An();let r=Dt(t,e);return[W(n),W(r)].join(" ")}var ka=async({client:t}={})=>{let e=await J(
|
|
431
430
|
{client:t,registryPath:w(process.env.VIBE64_OPENCODE_SESSION_ENV_REGISTRY),resolveHostInstructions:async n=>{let r=await F(
|
|
432
431
|
n,t);if(!r?.promptContext)return{conversation:r?.conversation,instructions:null};let{workdir:o,promptContext:s}=r;return s.
|
|
433
|
-
scope==="
|
|
434
|
-
s
|
|
435
|
-
|
|
436
|
-
host-context",import.meta.resolve("@local/vibe64-genesis/server/promptContext")));return new Promise((a,c)=>{let u=wn(i,
|
|
432
|
+
scope==="ephemeral"?{conversation:r.conversation,instructions:{identity:JSON.stringify(s),placement:"replace",read:()=>vn(
|
|
433
|
+
s)}}:{conversation:r.conversation,instructions:{placement:"append",read:()=>{let i=On(new URL("../../bin/vibe64-genesis-\
|
|
434
|
+
host-context",import.meta.resolve("@local/vibe64-genesis/server/promptContext")));return new Promise((a,c)=>{let u=En(i,
|
|
437
435
|
["--instructions"],{cwd:o,timeout:3e4,maxBuffer:262144,encoding:"utf8"},(l,d)=>{l?c(new Error("Project instructions coul\
|
|
438
436
|
d not be loaded. Retry the conversation.",{cause:l})):a(d)});u.stdin.on("error",()=>{}),u.stdin.end(JSON.stringify({workdir:o,
|
|
439
437
|
promptContext:s}))})}}}}});return{...e,"chat.message":async(n={},r={})=>{if(!w(n.agent).startsWith("vibe64-helper-"))return;
|
|
@@ -444,12 +442,12 @@ modelProviderId||n.model?.id!==o.helperModelId))throw new Error("This helper is
|
|
|
444
442
|
cted AI account.");k(n,r)},"experimental.chat.messages.transform":async(...n)=>{let r=n[1]||{},o=Array.isArray(r.messages)?
|
|
445
443
|
r.messages:[],s=await Me();r.messages=await Promise.all(o.map(async i=>{let a=s.find(l=>w(l?.upstreamSessionId)===w(i?.info?.
|
|
446
444
|
sessionID))||await F(i?.info?.sessionID,t);if(!a||!Array.isArray(i?.parts))return i;let c=!1,u=i.parts.map(l=>{if(l?.type!==
|
|
447
|
-
"tool"||!["bash","shell"].includes(w(l.tool).toLowerCase())||typeof l?.state?.input?.command!="string")return l;let d=
|
|
445
|
+
"tool"||!["bash","shell"].includes(w(l.tool).toLowerCase())||typeof l?.state?.input?.command!="string")return l;let d=Dt(
|
|
448
446
|
l.state.input.command,a);return d===l.state.input.command?l:(c=!0,{...l,state:{...l.state,input:{...l.state.input,command:d}}})});
|
|
449
|
-
return c?{...i,parts:u}:i}))},"shell.env":async(n={},r={})=>{let o=await
|
|
447
|
+
return c?{...i,parts:u}:i}))},"shell.env":async(n={},r={})=>{let o=await In(n.cwd);if(!o)return;if(o.conversation)return e["\
|
|
450
448
|
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.
|
|
451
449
|
isArray(r.env)?r.env:{};r.env=i,Object.assign(i,s);let a=Array.isArray(o.pathEntries)?o.pathEntries.map(w).filter(Boolean):
|
|
452
|
-
[];i.PATH=[...a,w(s.PATH),w(process.env.PATH)].filter(Boolean).join(
|
|
450
|
+
[];i.PATH=[...a,w(s.PATH),w(process.env.PATH)].filter(Boolean).join(Sn.delimiter)},"tool.execute.before":async(n={},r={})=>{
|
|
453
451
|
let o=await F(n.sessionID||n.sessionId,t);if(!o)throw new Error("Vibe64 could not verify this conversation's tool access\
|
|
454
452
|
. Reconnect the assistant.");if(o.conversation)return e["tool.execute.before"](n,r);if(o.promptContext?.scope==="ephemer\
|
|
455
453
|
al")throw new Error("Tools are unavailable in this host conversation. Use only the supplied context.");if(n.tool==="task"){
|
|
@@ -457,4 +455,4 @@ if(w(r.args?.subagent_type).startsWith("vibe64-helper-")&&!Re(r.args.subagent_ty
|
|
|
457
455
|
belonging to this session's selected AI account.");if(w(r.args?.task_id)){let i=await F(r.args.task_id,t);if(!o||i?.upstreamSessionId!==
|
|
458
456
|
o.upstreamSessionId)throw new Error("This helper conversation does not belong to the current session.")}}if(!["bash","sh\
|
|
459
457
|
ell"].includes(w(n.tool).toLowerCase()))return;let s=r.args&&typeof r.args=="object"&&!Array.isArray(r.args)?r.args:null;
|
|
460
|
-
!s||typeof s.command!="string"||(s.command=
|
|
458
|
+
!s||typeof s.command!="string"||(s.command=_n(s.command,o))}}};export{ka as Vibe64SessionEnvironment};
|