vibe64 0.1.39 → 0.1.41
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 +1955 -1855
- package/bin/server.js +136 -112
- package/bin/upgrade-state.js +5514 -5343
- package/dist/assets/GithubBrowserTabs-YvIe2BdE.js +1 -0
- package/dist/assets/LocalDatabaseServer-BWAvRlUl.css +1 -0
- package/dist/assets/LocalDatabaseServer-CVsGChHh.js +2 -0
- package/dist/assets/StudioErrorNotice-C_jbvp9V.js +1 -0
- package/dist/assets/VAlert-gwuhYlYb.js +1 -0
- package/dist/assets/VAutocomplete-D7Vk5wq_.js +1 -0
- package/dist/assets/VAvatar-DvRBcmqv.js +1 -0
- package/dist/assets/VBtn-BhVEwXLX.js +1 -0
- package/dist/assets/VCard-C3Hx769y.js +1 -0
- package/dist/assets/VCheckbox-DyCGSN0H.js +1 -0
- package/dist/assets/VCheckboxBtn-DCyuVH7W.css +1 -0
- package/dist/assets/VCheckboxBtn-DYcQU2Pn.js +1 -0
- package/dist/assets/VChip-VVdtjfq-.js +1 -0
- package/dist/assets/VDialog-CQDhjRiV.js +1 -0
- package/dist/assets/VDivider-Dq25WsKu.js +1 -0
- package/dist/assets/VExpansionPanels-C1y-myl5.js +1 -0
- package/dist/assets/VMenu-CDcBLYWR.js +1 -0
- package/dist/assets/VOverlay-Cp4rFk6g.js +1 -0
- package/dist/assets/VRadioGroup-CAjNZwF7.js +1 -0
- package/dist/assets/VRow-BskP28jR.js +1 -0
- package/dist/assets/VSelect-D3oLvCcB.js +2 -0
- package/dist/assets/VSheet-DxYEFfnM.js +1 -0
- package/dist/assets/VSkeletonLoader-Cync3lZZ.js +1 -0
- package/dist/assets/VSpacer-CgWOWvBh.js +1 -0
- package/dist/assets/VSwitch-BxGuGypi.js +1 -0
- package/dist/assets/VTextField-C0b_0cSa.js +1 -0
- package/dist/assets/VTextField-F6unyhrS.css +1 -0
- package/dist/assets/VTextarea-B7sZd1JY.js +1 -0
- package/dist/assets/{Vibe64AsyncModuleState-Do9EqX3S.js → Vibe64AsyncModuleState-syuPcpGx.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
- package/dist/assets/Vibe64AuthSettingsButton-DLdfT68V.js +5 -0
- package/dist/assets/Vibe64CopyCommand-CYiZcy0d.js +1 -0
- package/dist/assets/Vibe64CopyCommand-ClbQLYZi.css +1 -0
- package/dist/assets/{Vibe64DashboardBackButton-BH_8j_VR.js → Vibe64DashboardBackButton-Go_MJuIK.js} +1 -1
- package/dist/assets/{Vibe64DashboardPageHeader-BXQR00HK.js → Vibe64DashboardPageHeader-BMrdRph6.js} +1 -1
- package/dist/assets/Vibe64DashboardPageHeader-CdlzsyKQ.css +1 -0
- package/dist/assets/Vibe64DashboardShell-DMPz6fIx.js +1 -0
- package/dist/assets/{Vibe64DatabaseWorkspace-CEml9BWn.js → Vibe64DatabaseWorkspace-BCEIOlSg.js} +3 -3
- package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
- package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
- package/dist/assets/Vibe64OutputControls-DMoqL0VD.js +8 -0
- package/dist/assets/{Vibe64RepositoryWorkspace-obZFXkoG.js → Vibe64RepositoryWorkspace-BdwRwbxp.js} +2 -2
- package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
- package/dist/assets/{Vibe64SessionFiles-CQzs6fee.js → Vibe64SessionFiles-ChJWUOqm.js} +4 -4
- package/dist/assets/Vibe64SessionFiles-DsPb8hOe.css +1 -0
- package/dist/assets/{Vibe64TemporaryAiFixAction-BiuIE9mC.js → Vibe64TemporaryAiFixAction-CIePbdW8.js} +1 -1
- package/dist/assets/{Vibe64UiStoryboardView-BhKRpL0N.js → Vibe64UiStoryboardView-Bp9STItF.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-Ca5nC7KH.js → Vibe64UnavailableSessions-JBgHzM-j.js} +1 -1
- package/dist/assets/{_sessionId_-CKkGH3Rx.js → _sessionId_-Bw0KfJeR.js} +1 -1
- package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
- package/dist/assets/_slug_-CAmuBm-M.css +1 -0
- package/dist/assets/_slug_-q9prK_gX.js +25 -0
- package/dist/assets/{access-WlhPvPgy.js → access-C05Nkq6r.js} +1 -1
- package/dist/assets/app-D1CGY9Xm.js +1 -0
- package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
- package/dist/assets/{changes-CHJjrZAc.js → changes-D17XpgGz.js} +1 -1
- package/dist/assets/client-BxGiylrJ.js +2 -0
- package/dist/assets/client-C8jwAMY9.css +1 -0
- package/dist/assets/{conversation-B90ERX9h.js → conversation-DZW4-Wck.js} +2 -2
- package/dist/assets/{conversation-vxJGwmtW.css → conversation-TK6EmDk4.css} +1 -1
- package/dist/assets/{createSimpleFunctional-CZTGuNuR.js → createSimpleFunctional-zlXZooQW.js} +1 -1
- package/dist/assets/{dashboard-CuutW8iv.js → dashboard-BXXgeQ0Q.js} +1 -1
- package/dist/assets/definitions-SNvFDEFS.js +1 -0
- package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
- package/dist/assets/env-B5V1EC4M.css +1 -0
- package/dist/assets/env-sXAQqKWk.js +1 -0
- package/dist/assets/health-92hh8xXh.css +1 -0
- package/dist/assets/health-Cr34pf2p.js +1 -0
- package/dist/assets/{history-1_NU8azF.js → history-N1iRZaab.js} +1 -1
- package/dist/assets/incoming-Bdqo8z25.css +1 -0
- package/dist/assets/incoming-CNwZa_yD.js +2 -0
- package/dist/assets/{index-irlMYzLh.css → index-B17d4wpZ.css} +1 -1
- package/dist/assets/index-Mxalhei8.js +138 -0
- package/dist/assets/{integrations-BMzWQQpa.js → integrations-BmwFvHgZ.js} +10 -10
- package/dist/assets/integrations-Co8WvCiD.css +1 -0
- package/dist/assets/issues-BbiG7dCV.js +1 -0
- package/dist/assets/layout-B2Ap07aa.js +1 -0
- package/dist/assets/{lazy-NHSwD9FS.js → lazy-BjyT2XvW.js} +1 -1
- package/dist/assets/{learning-Bdi3XRS7.js → learning-CUCuuoHM.js} +1 -1
- package/dist/assets/mdi-Bt90Ns76.js +1 -0
- package/dist/assets/placement-CQy46H3H.js +1 -0
- package/dist/assets/publish-4r_4K5IY.js +3 -0
- package/dist/assets/publish-BFTsAMCF.css +1 -0
- package/dist/assets/pull-requests-BjwokcU0.css +1 -0
- package/dist/assets/pull-requests-DY9jg3cE.js +1 -0
- package/dist/assets/{repository-BL_2bgzC.js → repository-DhXdoMP6.js} +1 -1
- package/dist/assets/ripple-EFNA8EBu.js +11 -0
- package/dist/assets/rolldown-runtime-DBalRfVu.js +1 -0
- package/dist/assets/{session-BdhKrcX4.js → session-BGpiZThC.js} +1 -1
- package/dist/assets/{settings-1rpuL7eR.js → settings-Cj4u-76p.js} +1 -1
- package/dist/assets/settings-D8x4KUqV.css +1 -0
- package/dist/assets/shared-DZETtWRH.js +2 -0
- package/dist/assets/studioGateApi-BXHVBVEc.js +1 -0
- package/dist/assets/studioUrls-DpSS-0z1.js +1 -0
- package/dist/assets/useArchivedVibe64Sessions-BXNg8oES.js +1 -0
- package/dist/assets/useCommand-nWFczmJy.js +1 -0
- package/dist/assets/useEndpointResource-Ds8EDBZ2.js +1 -0
- package/dist/assets/useRealtimeEvent-DrOiU8lJ.js +1 -0
- package/dist/assets/{useUiFeedback-BPBF_0bp.js → useUiFeedback-CMwE4MLs.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-C1xjhFtS.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-H6H-YJQX.js} +1 -1
- package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
- package/dist/assets/useVibe64SessionData-CnDOFFHb.js +1 -0
- package/dist/assets/{useVibe64SessionSelection-BzL1y_Vq.js → useVibe64SessionSelection-J87nJ9p5.js} +1 -1
- package/dist/assets/{useVibe64SystemGraph-B4RmsC9Y.js → useVibe64SystemGraph-DbSfrYF8.js} +1 -1
- package/dist/assets/{useVibe64Terminal-Cg3idMcy.js → useVibe64Terminal-I7Sf6xMW.js} +1 -1
- package/dist/assets/vibe64ProjectScope.local-B06ABkhI.js +1 -0
- package/dist/assets/vibe64SavedEnvValues-B_QE9aAj.js +1 -0
- package/dist/assets/vibe64SessionFocus-CA-sk8Ri.css +1 -0
- package/dist/assets/vibe64SessionFocus-DlN8NwcE.js +1 -0
- package/dist/assets/{vibe64SessionInfo-BuBUdL-e.js → vibe64SessionInfo-B0uItVOK.js} +1 -1
- package/dist/assets/{vibe64SessionToolDefinitions-BJaJH5LR.js → vibe64SessionToolDefinitions-Dsn8WYmO.js} +1 -1
- package/dist/index.html +56 -46
- package/docs/colleague-usage/account-profile-and-appearance.md +1 -1
- package/docs/colleague-usage/{ai-accounts-and-routing.md → ai-accounts.md} +41 -114
- package/docs/colleague-usage/ai-model-setups.md +159 -0
- package/docs/colleague-usage/ai-onboarding.md +97 -22
- package/docs/colleague-usage/ai-personal-use.md +41 -0
- package/docs/colleague-usage/auto-workflow.md +8 -3
- package/docs/colleague-usage/codex-context-recovery.md +2 -1
- package/docs/colleague-usage/coding-agent-goals.md +7 -4
- package/docs/colleague-usage/coding-agents.md +8 -5
- package/docs/colleague-usage/colleague-watches.md +15 -4
- package/docs/colleague-usage/colleague.md +21 -5
- package/docs/colleague-usage/connected-contributions.md +13 -13
- package/docs/colleague-usage/connected-projects.md +2 -2
- package/docs/colleague-usage/conversation-context.md +1 -1
- package/docs/colleague-usage/dashboard-navigation.md +5 -3
- package/docs/colleague-usage/development-env.md +21 -4
- package/docs/colleague-usage/file-interfaces.md +1 -1
- package/docs/colleague-usage/github-work.md +8 -8
- package/docs/colleague-usage/health-checks.md +52 -18
- package/docs/colleague-usage/incoming-changes.md +3 -3
- package/docs/colleague-usage/integrations.md +5 -3
- package/docs/colleague-usage/learning-course-catalogue.md +3 -3
- package/docs/colleague-usage/learning-environment.md +78 -56
- package/docs/colleague-usage/learning-mode-ui.md +31 -19
- package/docs/colleague-usage/learning-practice-projects.md +15 -4
- package/docs/colleague-usage/learning-teacher-guide.md +10 -4
- package/docs/colleague-usage/learning-with-colleague.md +12 -8
- package/docs/colleague-usage/lesson-authoring.md +13 -13
- package/docs/colleague-usage/lesson-step-bar.md +47 -33
- package/docs/colleague-usage/main-chat-approvals.md +150 -0
- package/docs/colleague-usage/preview-browser-checks.md +5 -1
- package/docs/colleague-usage/preview-starting-application.md +10 -1
- package/docs/colleague-usage/project-language-tools.md +16 -2
- package/docs/colleague-usage/project-settings.md +1 -1
- package/docs/colleague-usage/project-setup.md +17 -7
- package/docs/colleague-usage/publishing.md +187 -0
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +54 -6
- package/docs/colleague-usage/sessions.md +18 -10
- package/docs/colleague-usage/set-up-linux.md +254 -0
- package/docs/colleague-usage/set-up-macos.md +199 -0
- package/docs/colleague-usage/set-up-windows.md +76 -0
- package/docs/colleague-usage/starter-apps.md +23 -6
- package/docs/colleague-usage/teaching-content.md +2 -2
- package/docs/colleague-usage/team-ai-access.md +108 -0
- package/docs/colleague-usage/temporary-chats.md +9 -7
- package/docs/colleague-usage/workspace-preparation.md +50 -1
- package/docs/templates/learn-topic/README.md +3 -3
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +2 -1
- package/docs/training-content.md +37 -15
- 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-voice/package.json +1 -1
- package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/patterns/oauth-connection/PATTERN.md +25 -0
- package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
- package/node_modules/@jskit-ai/http-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/kernel/package.json +1 -1
- package/node_modules/@jskit-ai/realtime/package.json +1 -1
- 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/package.json +1 -1
- package/node_modules/@local/vibe64-accounts/package.json +2 -1
- package/node_modules/@local/vibe64-core/package.json +4 -1
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +82 -81
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +83 -82
- package/node_modules/@local/vibe64-genesis/package.json +1 -0
- package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +118 -68
- package/node_modules/@local/vibe64-genesis/src/server/index.js +536 -449
- package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +144 -145
- package/node_modules/@local/vibe64-packaging/package.json +26 -0
- package/node_modules/@local/vibe64-packaging/src/server/packers/capacitor/ShellIcons.java +112 -0
- package/node_modules/@local/vibe64-project/package.json +3 -1
- package/node_modules/@local/vibe64-publishing/package.json +12 -0
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +7 -7
- package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +25 -22
- package/node_modules/@local/vibe64-terminals/package.json +2 -1
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1341 -1300
- package/node_modules/@local/vibe64-training/package.json +2 -1
- package/package.json +19 -15
- package/server.bundle.mjs +43109 -41089
- package/dist/assets/GithubBrowserTabs-C2NO5l8g.js +0 -1
- package/dist/assets/StudioErrorNotice-CSrUw1QV.js +0 -1
- package/dist/assets/VAlert-P256xaE0.js +0 -1
- package/dist/assets/VAutocomplete-BDb95qJX.js +0 -1
- package/dist/assets/VAvatar-DPzqDH4r.js +0 -1
- package/dist/assets/VBtn-B2MBK2DL.js +0 -1
- package/dist/assets/VCard-mXy0k4aS.js +0 -1
- package/dist/assets/VCheckbox-C7A1ZW4D.js +0 -1
- package/dist/assets/VChip-CcI-Oo2J.js +0 -1
- package/dist/assets/VDialog-Bu3EfKb1.js +0 -1
- package/dist/assets/VDivider-BMEqUoAB.js +0 -1
- package/dist/assets/VExpansionPanels-Dgjrop0V.js +0 -1
- package/dist/assets/VMenu-C_x18lwb.js +0 -1
- package/dist/assets/VOverlay-CeMZurIN.js +0 -1
- package/dist/assets/VRadioGroup-CUu2-KIP.js +0 -1
- package/dist/assets/VRow-Cpw7OHQV.js +0 -1
- package/dist/assets/VSelect-DL3HaA5m.js +0 -2
- package/dist/assets/VSheet-DZWsu0kL.js +0 -1
- package/dist/assets/VSkeletonLoader-CttxM1tw.js +0 -1
- package/dist/assets/VSpacer-Dhmsvk4t.js +0 -1
- package/dist/assets/VSwitch-BRHeDJkH.js +0 -1
- package/dist/assets/VTextField-BR2eZeFT.js +0 -1
- package/dist/assets/VTextField-BiatYyd3.css +0 -1
- package/dist/assets/VTextarea-DbqamXJd.js +0 -1
- package/dist/assets/Vibe64AuthSettingsButton-fY4ZiIFF.js +0 -5
- package/dist/assets/Vibe64DashboardPageHeader-Gm1IvlHx.css +0 -1
- package/dist/assets/Vibe64DashboardShell-BSq7uXEW.js +0 -1
- package/dist/assets/Vibe64OutputControls-_zhGX9ne.js +0 -8
- package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +0 -1
- package/dist/assets/_slug_-BclonbST.js +0 -24
- package/dist/assets/_slug_-CZ1bxO9C.css +0 -1
- package/dist/assets/app-BNP_n_Tt.js +0 -1
- package/dist/assets/assistantRouting-D4XpXcEf.js +0 -3
- package/dist/assets/client-BWV84wi2.js +0 -2
- package/dist/assets/client-DGrP-2AJ.css +0 -1
- package/dist/assets/definitions-BrMvu6yV.js +0 -1
- package/dist/assets/env-BzRtyO0w.css +0 -1
- package/dist/assets/env-D3KQGvRe.js +0 -1
- package/dist/assets/health-BJvooRnJ.css +0 -1
- package/dist/assets/health-BhoO1d4h.js +0 -1
- package/dist/assets/incoming-DWDrmxyH.css +0 -1
- package/dist/assets/incoming-DzADFGqp.js +0 -2
- package/dist/assets/index-dNxr4Lg9.js +0 -138
- package/dist/assets/integrations-Cq1x-Di9.css +0 -1
- package/dist/assets/issues-Bywux4s7.js +0 -1
- package/dist/assets/mdi-CG9pWOSj.js +0 -1
- package/dist/assets/placement-BF-zIEhA.js +0 -1
- package/dist/assets/pull-requests-CdbhyFOv.css +0 -1
- package/dist/assets/pull-requests-ncmKT3sS.js +0 -1
- package/dist/assets/ripple-BVltMmyV.js +0 -11
- package/dist/assets/settings-BopLnpB0.css +0 -1
- package/dist/assets/shared-DpMvYJO3.js +0 -2
- package/dist/assets/studioGateApi-DcCqiD9V.js +0 -1
- package/dist/assets/studioUrls-DmMMIScP.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-_LB2XxEa.js +0 -1
- package/dist/assets/useCommand-Bqxb-naz.js +0 -1
- package/dist/assets/useEndpointResource-DWoQ2keu.js +0 -1
- package/dist/assets/useRealtimeEvent-Bwapstla.js +0 -1
- package/dist/assets/useVibe64ConversationLog-BqUI0S5n.js +0 -1
- package/dist/assets/useVibe64Learning-DyqXkpLw.js +0 -1
- package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +0 -1
- package/dist/assets/useVibe64SessionData-B686lToN.js +0 -1
- package/dist/assets/vibe64SessionFocus-CqZNTvYF.js +0 -1
- package/dist/assets/vibe64SessionFocus-OJ2toBd9.css +0 -1
|
@@ -17,8 +17,8 @@ opt/vibe64/runtime-packs/python/bin","/opt/vibe64/runtime-packs/ruby/bin","/opt/
|
|
|
17
17
|
4/runtime-packs/java/bin","/opt/vibe64/runtime-packs/kotlin/bin","/opt/vibe64/runtime-packs/csharp/bin","/opt/vibe64/run\
|
|
18
18
|
time-packs/rust/bin","/opt/vibe64/runtime-packs/mariadb/bin","/opt/vibe64/runtime-packs/postgresql/bin","/opt/vibe64/run\
|
|
19
19
|
time-packs/sqlite/bin","/opt/vibe64/runtime-packs/playwright/bin","/opt/vibe64/runtime-packs/guard-bin","/usr/local/sbin",
|
|
20
|
-
"/usr/local/bin","/usr/sbin","/usr/bin","/sbin","/bin"].join(":"),
|
|
21
|
-
64d_",
|
|
20
|
+
"/usr/local/bin","/usr/sbin","/usr/bin","/sbin","/bin"].join(":"),lt=/^[a-z][a-z0-9_-]{0,61}[a-z0-9]$/u,j="vibe64",re="v\
|
|
21
|
+
64d_",mt="/var/lib/vibe64",dt=new Set(["root"]),pt=/^[a-f0-9]{8}-[a-f0-9]{4}-[1-8][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/iu,
|
|
22
22
|
ft=new Set(["assistant","browser","control","job","preview","service","terminal"]),wt=new Set(["capture","detached","pty"]),
|
|
23
23
|
F=64*1024*1024,$e=1024*1024*1024*1024,yt=256*1024*1024,we=1024*1024*1024*1024,de=8,pe=8192,gt=15e3;import.meta.main&&ht().
|
|
24
24
|
catch(e=>{w.stderr.write(`${String(e?.message||e)}
|
|
@@ -29,8 +29,8 @@ Ht(e);return}if(t==="managed-service"){Kt(e);return}if(t==="managed-execution"){
|
|
|
29
29
|
if(t==="create-system-user"||t==="enable-system-user"){Wt(t,e,r);return}Se(r);let n=String(e.command||"").trim();if(!je.
|
|
30
30
|
has(n))throw new Error("Vibe64 exec helper rejected an unknown command.");let o=X(r);ne("uid",e.uid,o.uid),ne("gid",e.gid,
|
|
31
31
|
o.gid);let i=q();Ke(i,r),Ue(o.username,j);let s=Fe(e.cwd||"",i.username,{operation:t,targetUser:o}),a=be(e.env||{},o,i.username,
|
|
32
|
-
t),c=Array.isArray(e.args)?e.args.map(
|
|
33
|
-
w.umask(7);let p=Et(o,n,c,{cwd:s,env:a,...
|
|
32
|
+
t),c=Array.isArray(e.args)?e.args.map(m=>String(m)):[],l=e.inputBase64?Buffer.from(String(e.inputBase64),"base64"):void 0;
|
|
33
|
+
w.umask(7);let p=Et(o,n,c,{cwd:s,env:a,...l===void 0?{stdio:"inherit"}:{input:l,stdio:["pipe","inherit","inherit"]}});if(p.
|
|
34
34
|
error)throw p.error;w.exit(typeof p.status=="number"?p.status:1)}function Et(e,t,r,n){return I("/usr/sbin/runuser",["-u",
|
|
35
35
|
e.username,"--","/usr/bin/env","--",`PATH=${n.env.PATH}`,t,...r],{...n,env:{...n.env,PATH:ie}})}function St(e={},t=""){let r=q();
|
|
36
36
|
vt(t,r),ae(j);let n=String(e.action||"").trim();if(n.startsWith("workflow-")){let O=Ot(e,r);w.stdout.write(`${JSON.stringify(
|
|
@@ -39,11 +39,11 @@ O)}
|
|
|
39
39
|
i,o,r);return}if(n!=="start")throw new Error("Vibe64 exec helper rejected an unknown managed execution action.");let s=It(
|
|
40
40
|
e.mode),a=Tt(e.kind),c=String(e.lifecycle||"").trim();if(c!==(s==="capture"?"finite":s==="pty"?"interactive":"service"))
|
|
41
41
|
throw new Error("Vibe64 exec helper rejected a managed execution lifecycle mismatch.");let p=Re(e.controllerLeaseName,c),
|
|
42
|
-
|
|
42
|
+
m=Nt(e,r),d=String(e.commandOperation||"").trim(),f=Fe(e.cwd||"",r.username,{operation:d,targetUser:m}),g=String(e.command||
|
|
43
43
|
"").trim();if(!g||/[\r\n]/u.test(g))throw new Error("Vibe64 exec helper rejected an invalid managed execution command.");
|
|
44
|
-
if(
|
|
45
|
-
managed command.");let x=Array.isArray(e.args)?e.args.map(O=>String(O)):[],M=be(e.env||{},
|
|
46
|
-
if(s!=="capture"||
|
|
44
|
+
if(m.username!==r.username&&!je.has(u.basename(g)))throw new Error("Vibe64 exec helper rejected an unsupported real-user\
|
|
45
|
+
managed command.");let x=Array.isArray(e.args)?e.args.map(O=>String(O)):[],M=be(e.env||{},m,r.username,d),y="";if(e.releaseEnvironmentFile){
|
|
46
|
+
if(s!=="capture"||m.username!==r.username)throw new Error("Release environment requires finite owner execution.");y=ee(e.
|
|
47
47
|
releaseEnvironmentFile,r,"environmentFile");let O=fe(y),B=u.join(u.dirname(u.dirname(y)),"workspace");if(u.basename(y)!==
|
|
48
48
|
"environment"||u.basename(u.dirname(y))!=="service"||!O.isFile()||O.uid!==r.uid||(O.mode&63)!==0||te(y)!==y||te(f)!==f||
|
|
49
49
|
f!==B&&C(B,f).length===0)throw new Error("Release environment must belong to the selected private release.")}let D=U(e.memoryMaxBytes,
|
|
@@ -52,12 +52,12 @@ workTasksMax,de,pe,"work-slice task limit");if(D>H||V>v)throw new Error("Vibe64
|
|
|
52
52
|
above its work-slice limit.");let k=he(r);if(e.workflow){let O=Ce(e.workflow,r),B=P(O);if(B.activeState!=="active"||!B.controlGroup||
|
|
53
53
|
B.finishedAt)throw new Error("Vibe64 exec helper rejected an execution without its active workflow group.");if(D>B.memoryMaxBytes||
|
|
54
54
|
V>B.tasksMax)throw new Error("Vibe64 exec helper rejected an execution limit above its workflow limit.");k=O.unitName}else
|
|
55
|
-
Mt(r,{memoryMaxBytes:H,tasksMax:v});jt(r);let J=Ee(r,o),Z=u.join(J,"command.json");_e(J,{mode:448,recursive:!0}),xe(J,
|
|
56
|
-
uid,
|
|
55
|
+
Mt(r,{memoryMaxBytes:H,tasksMax:v});jt(r);let J=Ee(r,o),Z=u.join(J,"command.json");_e(J,{mode:448,recursive:!0}),xe(J,m.
|
|
56
|
+
uid,m.gid),oe(Z,`${JSON.stringify({args:x,command:g,controllerLeaseName:p,cwd:f,env:M,inputBase64:String(e.inputBase64||
|
|
57
57
|
""),inputPresent:e.inputPresent===!0,...y?{releaseEnvironment:!0}:{},executionId:o,schema:"vibe64.managed-execution.comm\
|
|
58
58
|
and",schemaVersion:1})}
|
|
59
|
-
`,{flag:"wx",mode:384}),Je(Z,384),xe(Z,
|
|
60
|
-
ype=exec",`--slice=${k}`,`--property=Description=Vibe64 ${a} execution`,`--property=User=${
|
|
59
|
+
`,{flag:"wx",mode:384}),Je(Z,384),xe(Z,m.uid,m.gid);let Xe=u.resolve(w.argv[1]),qe=["--quiet",`--unit=${i}`,"--service-t\
|
|
60
|
+
ype=exec",`--slice=${k}`,`--property=Description=Vibe64 ${a} execution`,`--property=User=${m.username}`,`--property=Grou\
|
|
61
61
|
p=${j}`,"--property=SupplementaryGroups=nix-users","--property=UMask=0007",`--property=WorkingDirectory=${f}`,...y?[`--p\
|
|
62
62
|
roperty=EnvironmentFile=${y}`]:[],"--property=KillMode=control-group","--property=ExitType=cgroup","--property=OOMPolicy\
|
|
63
63
|
=stop","--property=MemoryAccounting=yes","--property=IOAccounting=yes","--property=TasksAccounting=yes",`--property=Memo\
|
|
@@ -69,15 +69,15 @@ length!==1)throw new Error("Vibe64 exec helper rejected an unsafe managed execut
|
|
|
69
69
|
let t=u.resolve(String(e||"")),r=h(t,"utf8");G(t);let n=JSON.parse(r);if(n?.schema!=="vibe64.managed-execution.command"||
|
|
70
70
|
n?.schemaVersion!==1)throw new Error("Vibe64 managed execution runner rejected an invalid payload.");let o=String(n.command||
|
|
71
71
|
"").trim();if(!o||/[\r\n]/u.test(o))throw new Error("Vibe64 managed execution runner rejected an invalid command.");let i=Re(
|
|
72
|
-
n.controllerLeaseName,n.controllerLeaseName?"service":""),s=i?await xt(i):null;w.umask(7);let a=null,c=null,
|
|
73
|
-
|
|
72
|
+
n.controllerLeaseName,n.controllerLeaseName?"service":""),s=i?await xt(i):null;w.umask(7);let a=null,c=null,l=!1,p=()=>{
|
|
73
|
+
l=!0,a&&c===null&&(c=Me(a))};s?.once("close",p);let m=new Date().toISOString();try{a=Ye(o,Array.isArray(n.args)?n.args.map(
|
|
74
74
|
String):[],{cwd:String(n.cwd||"/"),detached:!!s,env:n.releaseEnvironment===!0?be({...w.env,...n.env},{username:n.env.USER,
|
|
75
75
|
home:n.env.HOME},n.env.USER):n.env&&typeof n.env=="object"&&!Array.isArray(n.env)?n.env:{},stdio:n.inputPresent===!0?["p\
|
|
76
76
|
ipe","inherit","inherit"]:"inherit"}),n.inputPresent===!0&&a.stdin.end(Buffer.from(String(n.inputBase64||""),"base64")),
|
|
77
|
-
|
|
78
|
-
a.once("close",(y,D)=>g({signal:D,status:y,exitObservedAt:M}))}),f=typeof
|
|
79
|
-
{...Dt(),executionId:W(n.executionId),startedAt:
|
|
80
|
-
execMainStatus:
|
|
77
|
+
l&&(c=Me(a));let d=await new Promise((g,x)=>{let M="";a.once("exit",()=>{M=new Date().toISOString()}),a.once("error",x),
|
|
78
|
+
a.once("close",(y,D)=>g({signal:D,status:y,exitObservedAt:M}))}),f=typeof d.status=="number"?d.status:1;Ct(u.dirname(t),
|
|
79
|
+
{...Dt(),executionId:W(n.executionId),startedAt:m,exitObservedAt:d.exitObservedAt,execMainCode:d.signal?"killed":"exited",
|
|
80
|
+
execMainStatus:d.signal||String(f),result:d.signal?"signal":f===0?"success":"exit-code",signal:String(d.signal||"")}),w.
|
|
81
81
|
exitCode=f}finally{c!==null&&clearTimeout(c),s?.off("close",p),s?.destroy()}}function Re(e="",t=""){let r=String(e||"");
|
|
82
82
|
if(t!=="service"){if(r)throw new Error("Vibe64 exec helper rejected a controller lease on a finite execution.");return""}
|
|
83
83
|
if(!/^\0vibe64-resource-controller-[a-z][a-z0-9-]{0,62}$/u.test(r))throw new Error("Vibe64 exec helper rejected an inval\
|
|
@@ -113,7 +113,7 @@ r.MemoryMax),tasksMax:E(r.TasksMax),...ge(n?u.join("/sys/fs/cgroup",n):"")};t.st
|
|
|
113
113
|
"string"&&/^[0-9]+$/u.test(e.trim())&&Number.isSafeInteger(Number(e))?Number(e):null}function ge(e=""){function t(a){if(!e)
|
|
114
114
|
return"";try{return h(u.join(e,a),"utf8")}catch(c){if(c.code==="ENOENT"||c.code==="ENODEV")return"";throw c}}function r(a){
|
|
115
115
|
return Object.fromEntries(t(a).trim().split(`
|
|
116
|
-
`).map(c=>{let[
|
|
116
|
+
`).map(c=>{let[l,p]=c.trim().split(/\s+/u);return[l,E(p)]}))}let n=r("memory.events"),o=r("memory.stat"),i=r("cgroup.eve\
|
|
117
117
|
nts"),s=t("memory.pressure");return{sampledAt:new Date().toISOString(),sampledMonotonicMs:Number(w.hrtime.bigint()/1000000n),
|
|
118
118
|
scopeEmpty:i.populated===0?!0:i.populated===1?!1:null,memoryCurrentBytes:E(t("memory.current")),memoryPeakBytes:E(t("mem\
|
|
119
119
|
ory.peak")),memorySwapCurrentBytes:E(t("memory.swap.current")),memoryAnonBytes:o.anon??null,memoryFileBytes:o.file??null,
|
|
@@ -137,35 +137,35 @@ empty",...o};At(r,{...o,finishedAt:new Date().toISOString()})}let i=A("systemctl
|
|
|
137
137
|
"inactive"||s.controlGroup||s.scopeEmpty!==!0)throw new Error(String(i.stderr||"Managed workflow group did not stop.").trim());
|
|
138
138
|
return{ok:!0,...s}}throw new Error("Vibe64 exec helper rejected an unknown workflow action.")}function ue(e,t,r,n){let o=Object.
|
|
139
139
|
fromEntries(S("systemctl",["show",e,"--no-pager","--property=ActiveState,ControlGroup,MemoryMax"]).split(`
|
|
140
|
-
`).map(c=>{let
|
|
140
|
+
`).map(c=>{let l=c.indexOf("=");return[c.slice(0,l),c.slice(l+1)]}));if(o.ActiveState!=="active"||o.ControlGroup!==t)throw new Error(
|
|
141
141
|
"Memory growth requires the same active, owned accounting group.");let i=E(h(u.join("/sys/fs/cgroup",t,"memory.max"),"ut\
|
|
142
142
|
f8")),s=E(o.MemoryMax);if(s===null||i!==Math.floor(s/r)*r)throw new Error("The effective memory limit could not be verif\
|
|
143
143
|
ied.");let a=h(u.join("/sys/fs/cgroup",t,"memory.high"),"utf8").trim();if(a!=="max"&&(E(a)===null||n>Number(a)))throw Object.
|
|
144
144
|
assign(new Error("Memory growth is blocked by the target's memory.high limit."),{limitingGroup:{controlGroup:t,limit:"me\
|
|
145
145
|
mory.high",maximumBytes:E(a),requestedBytes:n??null}});return{unitName:e,controlGroup:t,memoryMaxBytes:s,effectiveMemoryMaxBytes:i,
|
|
146
|
-
memoryHighBytes:a==="max"?null:E(a)}}function
|
|
146
|
+
memoryHighBytes:a==="max"?null:E(a)}}function le(e,t){let r=[];for(let n=u.posix.dirname(e);n!=="/";n=u.posix.dirname(n)){
|
|
147
147
|
let o={controlGroup:n};for(let[i,s]of[["memory.max","memoryMaxBytes"],["memory.high","memoryHighBytes"]]){let a=h(u.join(
|
|
148
148
|
"/sys/fs/cgroup",n,i),"utf8").trim(),c=a==="max"?null:E(a);if(a!=="max"&&(c===null||t>c))throw Object.assign(new Error(`\
|
|
149
149
|
Memory growth is blocked by an ancestor ${i} limit.`),{limitingGroup:{controlGroup:n,limit:i,maximumBytes:c,requestedBytes:t}});
|
|
150
|
-
o[s]=c}r.push(o)}return r}function _t(e,t,r){let n=e.action==="workflow-limits",o=!1,i=[],s=[],a=[],c=[],
|
|
150
|
+
o[s]=c}r.push(o)}return r}function _t(e,t,r){let n=e.action==="workflow-limits",o=!1,i=[],s=[],a=[],c=[],l=null;try{let p=P(
|
|
151
151
|
t);if(p.activeState!=="active"||!p.controlGroup||p.finishedAt)throw new Error("Memory growth requires an active workflow\
|
|
152
|
-
.");let
|
|
153
|
-
"Memory growth requires a bounded list of owned executions.");if(
|
|
152
|
+
.");let m=U(e.memoryMaxBytes,F,we,"workflow memory limit");if(!Array.isArray(e.executions)||e.executions.length>128)throw new Error(
|
|
153
|
+
"Memory growth requires a bounded list of owned executions.");if(l=E(S("getconf",["PAGESIZE"])),!l||l>F)throw new Error(
|
|
154
154
|
"The kernel memory limit granularity is unavailable.");a=[{unitName:t.unitName,controlGroup:p.controlGroup,memoryMaxBytes:Math.
|
|
155
|
-
floor(
|
|
156
|
-
unitName===f))throw new Error("Duplicate memory growth execution.");let g=U(
|
|
157
|
-
t");if(g>
|
|
158
|
-
controlGroup}/${f}`,memoryMaxBytes:Math.floor(g/
|
|
159
|
-
|
|
160
|
-
p.controlGroup)};for(let[
|
|
161
|
-
throw new Error("Memory growth cannot lower a live limit or apply to stale limits.");c=
|
|
162
|
-
for(let[
|
|
163
|
-
`MemoryMax=${f.memoryMaxBytes}`]));if(s=a.map(
|
|
164
|
-
memoryMaxBytes),!s.every((
|
|
165
|
-
match the requested limits.");return{ok:!0,id:t.id,changeState:o?"applied":"unchanged",pageSizeBytes:
|
|
166
|
-
ancestors:c}}catch(p){let
|
|
167
|
-
|
|
168
|
-
id,code:"workflow_memory_growth_failed",changeState:
|
|
155
|
+
floor(m/l)*l,expectedMemoryMaxBytes:e.expectedMemoryMaxBytes}];for(let d of e.executions){let f=De(d?.id,r);if(a.some(x=>x.
|
|
156
|
+
unitName===f))throw new Error("Duplicate memory growth execution.");let g=U(d.memoryMaxBytes,F,$e,"execution memory limi\
|
|
157
|
+
t");if(g>m)throw new Error("Execution memory growth exceeds its workflow allowance.");a.push({unitName:f,controlGroup:`${p.
|
|
158
|
+
controlGroup}/${f}`,memoryMaxBytes:Math.floor(g/l)*l,expectedMemoryMaxBytes:d.expectedMemoryMaxBytes})}if(i=a.map(d=>ue(
|
|
159
|
+
d.unitName,d.controlGroup,l,n?void 0:d.memoryMaxBytes)),n)return{ok:!0,id:t.id,pageSizeBytes:l,before:i,after:i,ancestors:le(
|
|
160
|
+
p.controlGroup)};for(let[d,f]of a.entries())if(f.expectedMemoryMaxBytes!==i[d].memoryMaxBytes||f.memoryMaxBytes<i[d].effectiveMemoryMaxBytes)
|
|
161
|
+
throw new Error("Memory growth cannot lower a live limit or apply to stale limits.");c=le(p.controlGroup,a[0].memoryMaxBytes);
|
|
162
|
+
for(let[d,f]of a.entries())i[d].memoryMaxBytes!==f.memoryMaxBytes&&(o=!0,S("systemctl",["set-property","--runtime",f.unitName,
|
|
163
|
+
`MemoryMax=${f.memoryMaxBytes}`]));if(s=a.map(d=>ue(d.unitName,d.controlGroup,l,d.memoryMaxBytes)),c=le(p.controlGroup,a[0].
|
|
164
|
+
memoryMaxBytes),!s.every((d,f)=>d.memoryMaxBytes===a[f].memoryMaxBytes))throw new Error("Memory growth readback did not \
|
|
165
|
+
match the requested limits.");return{ok:!0,id:t.id,changeState:o?"applied":"unchanged",pageSizeBytes:l,before:i,after:s,
|
|
166
|
+
ancestors:c}}catch(p){let m="unchanged";return o&&(s=a.map(d=>{try{return ue(d.unitName,d.controlGroup,l)}catch{return null}}),
|
|
167
|
+
m=s.some(d=>d===null)?"unknown":s.every((d,f)=>d.memoryMaxBytes===i[f].memoryMaxBytes)?"unchanged":"partial"),{ok:!1,id:t.
|
|
168
|
+
id,code:"workflow_memory_growth_failed",changeState:m,error:String(p?.message||p),limitingGroup:p?.limitingGroup??null,pageSizeBytes:l,
|
|
169
169
|
before:i,after:s,ancestors:c}}}function Nt(e={},t={}){let r=N(e.username||t.username),n=X(r);return ne("uid",e.uid,n.uid),
|
|
170
170
|
ne("gid",e.gid,n.gid),n.username!==t.username&&(Se(n.username),Ke(t,n.username)),Ue(n.username,j),n}function W(e=""){let t=String(
|
|
171
171
|
e||"").trim();if(!pt.test(t))throw new Error("Vibe64 exec helper rejected an invalid managed execution id.");return t.toLowerCase()}
|
|
@@ -201,51 +201,51 @@ pager","--timestamp=us+utc","--property=LoadState,ActiveState,SubState,Result,Ex
|
|
|
201
201
|
imestamp,ExecMainExitTimestamp,MainPID,ControlGroup,MemoryCurrent,MemoryPeak,MemorySwapCurrent,TasksCurrent,TasksMax,CPU\
|
|
202
202
|
UsageNSec,IOReadBytes,IOWriteBytes"]),s={};for(let M of String(i.stdout||"").split(/\r?\n/u)){let y=M.indexOf("=");y>0&&
|
|
203
203
|
(s[M.slice(0,y)]=M.slice(y+1))}s.LoadState==="not-found"&&(s={LoadState:"not-found"});let a=String(s.ControlGroup||"").trim(),
|
|
204
|
-
c=a?u.join("/sys/fs/cgroup",a.replace(/^\/+/,"")):"",
|
|
205
|
-
""),f=Number.isFinite(
|
|
206
|
-
g)&&g>0&&g<=Date.now()?new Date(g).toISOString():"";return{resourceCounters:
|
|
207
|
-
(
|
|
208
|
-
ExecMainCode||
|
|
209
|
-
f:"",ioReadBytes:R(s.IOReadBytes,
|
|
210
|
-
s.LoadState!=="not-found"?s.LoadState:
|
|
211
|
-
s.MemoryCurrent,
|
|
212
|
-
oomKillCount:R(
|
|
213
|
-
""),scopeEmpty:p,startedAt:s.ExecMainStartTimestamp||
|
|
214
|
-
s.TasksCurrent,
|
|
204
|
+
c=a?u.join("/sys/fs/cgroup",a.replace(/^\/+/,"")):"",l=ge(c),p=c&&T(c)?l.scopeEmpty:!0,m=t?o(r,t):{},d=Date.parse(m.exitObservedAt||
|
|
205
|
+
""),f=Number.isFinite(d)?"runner":"systemd",g=Number.isFinite(d)?d:Date.parse(s.ExecMainExitTimestamp||""),x=Number.isFinite(
|
|
206
|
+
g)&&g>0&&g<=Date.now()?new Date(g).toISOString():"";return{resourceCounters:m.resourceCounters||l,activeState:String(s.ActiveState||
|
|
207
|
+
(m.executionId?"inactive":"unknown")),controlGroup:a,cpuUsageNSec:R(s.CPUUsageNSec,m.cpuUsageNSec),execMainCode:String(s.
|
|
208
|
+
ExecMainCode||m.execMainCode||""),execMainStatus:String(s.ExecMainStatus||m.execMainStatus||""),exitObservedAt:x,exitTimeSource:x?
|
|
209
|
+
f:"",ioReadBytes:R(s.IOReadBytes,m.ioReadBytes),ioWriteBytes:R(s.IOWriteBytes,m.ioWriteBytes),loadState:String(s.LoadState&&
|
|
210
|
+
s.LoadState!=="not-found"?s.LoadState:m.executionId?"recorded":"not-found"),mainPid:String(s.MainPID||"0"),memoryCurrent:R(
|
|
211
|
+
s.MemoryCurrent,m.memoryCurrent),memoryPeak:R(s.MemoryPeak,m.memoryPeak),memorySwapCurrent:R(s.MemorySwapCurrent,m.memorySwapCurrent),
|
|
212
|
+
oomKillCount:R(m.oomKillCount),taskLimit:m.taskLimit||Be(c),result:String(s.Result||m.result||""),signal:String(m.signal||
|
|
213
|
+
""),scopeEmpty:p,startedAt:s.ExecMainStartTimestamp||m.startedAt||"",subState:String(s.SubState||"unknown"),tasksCurrent:R(
|
|
214
|
+
s.TasksCurrent,m.tasksCurrent),tasksPeak:R(m.tasksPeak),tasksMax:String(s.TasksMax||"0"),unitName:e}}function R(...e){return String(
|
|
215
215
|
e.reduce((t,r)=>{let n=Number(r);return Number.isFinite(n)&&n>t?n:t},0))}function Pt(e="",t="",r={}){let n=K(e,t,r),o=null,
|
|
216
216
|
i=n.taskLimit,s=Date.parse(n.startedAt),a=Date.parse(n.exitObservedAt);if((n.result==="oom-kill"||Number(n.oomKillCount)>
|
|
217
|
-
0)&&s>0&&a>=s){let c=Math.min(Date.now(),a+1e3),
|
|
217
|
+
0)&&s>0&&a>=s){let c=Math.min(Date.now(),a+1e3),l=I("journalctl",["-k","--boot=0","--no-pager","--output=json","--output\
|
|
218
218
|
-fields=__REALTIME_TIMESTAMP,__SEQNUM_ID,__SEQNUM,_BOOT_ID,_SOURCE_MONOTONIC_TIMESTAMP,MESSAGE","--lines=65","--case-sen\
|
|
219
219
|
sitive=yes",`--since=@${s/1e3}`,`--until=@${c/1e3}`,`--grep=^oom-kill:|^/[^,]*/${e.replaceAll(".","\\.")}(?:/[^,]*)?,tas\
|
|
220
|
-
k=`],{encoding:"utf8",timeout:2e3,maxBuffer:128*1024});!
|
|
221
|
-
username),startedAt:s,until:c}))}if(!i&&n.result&&n.result!=="success"&&s>0&&a>=s){let c=Math.min(Date.now(),a+1e3),
|
|
220
|
+
k=`],{encoding:"utf8",timeout:2e3,maxBuffer:128*1024});!l.error&&l.status===0&&(o=Vt(l.stdout,{unitName:e,workspace:$(r.
|
|
221
|
+
username),startedAt:s,until:c}))}if(!i&&n.result&&n.result!=="success"&&s>0&&a>=s){let c=Math.min(Date.now(),a+1e3),l=I(
|
|
222
222
|
"journalctl",["-k","--boot=0","--no-pager","--output=json","--output-fields=__REALTIME_TIMESTAMP,MESSAGE","--lines=65","\
|
|
223
223
|
--case-sensitive=yes",`--since=@${s/1e3}`,`--until=@${c/1e3}`,`--grep=^cgroup: fork rejected by pids controller in /.*${e.
|
|
224
|
-
replaceAll(".","\\.")}(?:/|$)`],{encoding:"utf8",timeout:2e3,maxBuffer:128*1024});!
|
|
224
|
+
replaceAll(".","\\.")}(?:/|$)`],{encoding:"utf8",timeout:2e3,maxBuffer:128*1024});!l.error&&l.status===0&&(i=Ut(l.stdout,
|
|
225
225
|
{unitName:e,workspace:$(r.username),startedAt:s,until:c}))}w.stdout.write(`${JSON.stringify({executionId:t,ok:!0,...n,oomBoundary:o,
|
|
226
226
|
taskLimit:i})}
|
|
227
227
|
`)}function Ut(e,{unitName:t,workspace:r,startedAt:n,until:o}){if(typeof e!="string"||Buffer.byteLength(e)>128*1024)return null;
|
|
228
228
|
let i=e.trim().split(/\r?\n/u);if(i.length>64)return null;for(let s of i){let a;try{a=JSON.parse(s)}catch{continue}let c=Number(
|
|
229
|
-
a?.__REALTIME_TIMESTAMP)/1e3;if(!Number.isFinite(c)||c<n||c>o)continue;let
|
|
230
|
-
exec(a.MESSAGE)?.[1];if(!
|
|
231
|
-
|
|
229
|
+
a?.__REALTIME_TIMESTAMP)/1e3;if(!Number.isFinite(c)||c<n||c>o)continue;let l=typeof a.MESSAGE=="string"&&/^cgroup: fork rejected by pids controller in (\/[a-zA-Z0-9_./-]{1,2048})$/u.
|
|
230
|
+
exec(a.MESSAGE)?.[1];if(!l)continue;let p=l.split("/"),m=p.indexOf(`vibe64-${r}-work.slice`);if(!(p[1]!=="vibe64.slice"||
|
|
231
|
+
m<2||p.indexOf(t)<=m||p.some((d,f)=>f>0&&(!d||d==="."||d===".."))))return{source:"kernel-journal",scope:"unknown",count:null,
|
|
232
232
|
recordedAt:new Date(c).toISOString()}}return null}function Vt(e,{unitName:t,workspace:r,startedAt:n,until:o}){if(typeof e!=
|
|
233
233
|
"string"||Buffer.byteLength(e)>128*1024)return null;let i=e.trim().split(/\r?\n/u);if(i.length>64)return null;let s=i.flatMap(
|
|
234
|
-
c=>{try{return[JSON.parse(c)]}catch{return[]}}),a=null;for(let c of s){let
|
|
235
|
-
isFinite(
|
|
234
|
+
c=>{try{return[JSON.parse(c)]}catch{return[]}}),a=null;for(let c of s){let l=Number(c?.__REALTIME_TIMESTAMP)/1e3;if(!Number.
|
|
235
|
+
isFinite(l)||l<n||l>o)continue;let p=c.MESSAGE;if(typeof p=="string"&&p.startsWith("oom-kill:")&&p.endsWith(",task_memcg\
|
|
236
236
|
=")){let v=s.find(k=>/^[a-f0-9]{32}$/u.test(c.__SEQNUM_ID||"")&&k?.__SEQNUM_ID===c.__SEQNUM_ID&&k?._BOOT_ID===c._BOOT_ID&&
|
|
237
237
|
/^[a-f0-9]{32}$/u.test(c._BOOT_ID||"")&&Number.isSafeInteger(Number(c.__SEQNUM))&&Number(k.__SEQNUM)===Number(c.__SEQNUM)+
|
|
238
238
|
1&&Number(k._SOURCE_MONOTONIC_TIMESTAMP)>=Number(c._SOURCE_MONOTONIC_TIMESTAMP)&&Number(k._SOURCE_MONOTONIC_TIMESTAMP)-Number(
|
|
239
239
|
c._SOURCE_MONOTONIC_TIMESTAMP)<=1e6&&/^\/[a-zA-Z0-9_./-]+,task=[^,]+,pid=\d+,uid=\d+$/u.test(k.MESSAGE||""));v&&(p+=v.MESSAGE)}
|
|
240
|
-
let
|
|
241
|
-
if(!
|
|
242
|
-
ce"||y<2||D<=y||M.some((v,k)=>k>0&&(v==="."||v===".."||!/^[a-zA-Z0-9_.-]+$/u.test(v))))continue;let V;if(
|
|
243
|
-
_NONE"&&g)V="host";else if(
|
|
240
|
+
let m=typeof p=="string"&&p.match(/^oom-kill:constraint=(CONSTRAINT_[A-Z_]+),.*?,(?:oom_memcg=(\/[^,]+)|(global_oom)),task_memcg=(\/[^,]+),task=/u);
|
|
241
|
+
if(!m)continue;let[,d,f,g,x]=m,M=x.split("/"),y=M.indexOf(`vibe64-${r}-work.slice`),D=M.indexOf(t);if(M[1]!=="vibe64.sli\
|
|
242
|
+
ce"||y<2||D<=y||M.some((v,k)=>k>0&&(v==="."||v===".."||!/^[a-zA-Z0-9_.-]+$/u.test(v))))continue;let V;if(d==="CONSTRAINT\
|
|
243
|
+
_NONE"&&g)V="host";else if(d==="CONSTRAINT_MEMCG"&&f&&(x===f||x.startsWith(`${f}/`))){let v=f.split("/").at(-1),k=M.slice(
|
|
244
244
|
0,D+1).join("/");V=f===k||f.startsWith(`${k}/`)?"execution":v===`vibe64-${r}-work.slice`?"workspace_work":v===`vibe64-${r}\
|
|
245
245
|
.slice`?"workspace":v==="vibe64.slice"?"platform":/-work-p[a-f0-9]{64}-s[a-f0-9]{64}-w[a-f0-9]{32}\.slice$/u.test(v)?"wo\
|
|
246
246
|
rkflow":/-work-p[a-f0-9]{64}-s[a-f0-9]{64}\.slice$/u.test(v)?"session":/-work-p[a-f0-9]{64}\.slice$/u.test(v)?"project":
|
|
247
|
-
"ancestor"}else return null;let H=f||"";if(a&&a.cgroup!==H)return null;(!a||
|
|
248
|
-
nel-journal",scope:V,cgroup:H,recordedAt:new Date(
|
|
247
|
+
"ancestor"}else return null;let H=f||"";if(a&&a.cgroup!==H)return null;(!a||l>Date.parse(a.recordedAt))&&(a={source:"ker\
|
|
248
|
+
nel-journal",scope:V,cgroup:H,recordedAt:new Date(l).toISOString()})}return a}function Gt(e="",t="",r={}){let n=K(e,t,r);
|
|
249
249
|
n.scopeEmpty||A("systemctl",["stop",e]);let o=Date.now()+gt,i=K(e,t,r),s=new Int32Array(new SharedArrayBuffer(4));for(;!i.
|
|
250
250
|
scopeEmpty&&Date.now()<o;)Atomics.wait(s,0,0,25),i=K(e,t,r);i.scopeEmpty||(A("systemctl",["kill","--kill-who=all","--sig\
|
|
251
251
|
nal=SIGKILL",e]),A("systemctl",["stop",e]),i=K(e,t,r)),i.scopeEmpty&&(Te(Ee(r,t),{force:!0,recursive:!0}),A("systemctl",
|
|
@@ -257,24 +257,24 @@ r,String(t.password||"")):X(r),rr(r,j)}function Ht(e={}){let t=q();ae(j);let r=S
|
|
|
257
257
|
if(r==="inspect"){zt(n);return}if(r==="remove"){Yt(n);return}if(r!=="install-start")throw new Error("Vibe64 exec helper \
|
|
258
258
|
rejected an unknown deployment service action.");let o=ee(e.workingDirectory,t,"workingDirectory"),i=ee(e.environmentFile,
|
|
259
259
|
t,"environmentFile"),s=ee(e.startScript,t,"startScript"),a=[...new Set((Array.isArray(e.requiredUnits)?e.requiredUnits:[]).
|
|
260
|
-
map(p=>ve(p,t)))],c=We(n),
|
|
261
|
-
Pe({activation:"restart",unit:
|
|
260
|
+
map(p=>ve(p,t)))],c=We(n),l=sr({environmentFile:i,owner:t,requiredUnits:a,startScript:s,unitName:n,workingDirectory:o});
|
|
261
|
+
Pe({activation:"restart",unit:l,unitName:n,unitPath:c})}function zt(e=""){ce(e);let t=S("systemctl",["show",e,"--no-page\
|
|
262
262
|
r","--property=ActiveState,SubState,Result,ExecMainCode,ExecMainStatus,NRestarts"]),r=A("journalctl",["--unit",e,"--no-p\
|
|
263
263
|
ager","--output=cat","--lines=80"]),n=String(r.stdout||r.stderr||"").trim();w.stdout.write(["Service state:",t,...n?["",
|
|
264
264
|
"Recent service output:",n]:[]].join(`
|
|
265
265
|
`)+`
|
|
266
266
|
`)}function Kt(e={}){let t=q();ae(j);let r=String(e.action||"").trim(),n=ve(e.unitName,t);if(r!=="install-start")throw new Error(
|
|
267
267
|
"Vibe64 exec helper rejected an unknown managed service action.");let o=Oe(e.workingDirectory,t,"workingDirectory"),i=Oe(
|
|
268
|
-
e.startScript,t,"startScript"),s=Le(e.processModel),a=s==="forking"?Ge(e.pidFile,t):"",c=ir(n,t),
|
|
269
|
-
processModel:s,startScript:i,unitName:n,workingDirectory:o});Ft({owner:t,pidFile:a,unitName:n}),Pe({activation:"start",unit:
|
|
268
|
+
e.startScript,t,"startScript"),s=Le(e.processModel),a=s==="forking"?Ge(e.pidFile,t):"",c=ir(n,t),l=ar({owner:t,pidFile:a,
|
|
269
|
+
processModel:s,startScript:i,unitName:n,workingDirectory:o});Ft({owner:t,pidFile:a,unitName:n}),Pe({activation:"start",unit:l,
|
|
270
270
|
unitName:n,unitPath:c})}function Ft({owner:e={},pidFile:t="",unitName:r=""}={}){if(!t||!T(t))return;let n=String(h(t,"ut\
|
|
271
271
|
f8")||"").trim();if(!/^[1-9][0-9]*$/u.test(n))throw new Error("Vibe64 managed service PID file is invalid.");let o=Number(
|
|
272
|
-
n);if(!Number.isSafeInteger(o)||o<=1)throw new Error("Vibe64 managed service PID is invalid.");if(!
|
|
272
|
+
n);if(!Number.isSafeInteger(o)||o<=1)throw new Error("Vibe64 managed service PID is invalid.");if(!me(o)){Q(t,n);return}
|
|
273
273
|
let i=Xt(o);if(i===null){Q(t,n);return}if(i!==e.uid)throw new Error("Vibe64 managed service PID belongs to another OS us\
|
|
274
274
|
er.");if(qt(o,r))return;try{w.kill(o,"SIGTERM")}catch(c){if(c?.code==="ESRCH"){Q(t,n);return}throw c}let s=Date.now()+3e4,
|
|
275
|
-
a=new Int32Array(new SharedArrayBuffer(4));for(;
|
|
275
|
+
a=new Int32Array(new SharedArrayBuffer(4));for(;me(o)&&Date.now()<s;)Atomics.wait(a,0,0,100);if(me(o))throw new Error("V\
|
|
276
276
|
ibe64 managed service process did not stop cleanly during ownership transfer.");Q(t,n)}function Q(e="",t=""){T(e)&&String(
|
|
277
|
-
h(e,"utf8")||"").trim()===t&&G(e)}function
|
|
277
|
+
h(e,"utf8")||"").trim()===t&&G(e)}function me(e=0){try{return w.kill(e,0),!0}catch(t){if(t?.code==="ESRCH")return!1;throw t}}
|
|
278
278
|
function Xt(e=0){let t="";try{t=h(`/proc/${e}/status`,"utf8")}catch(o){if(o?.code==="ENOENT")return null;throw o}let r=String(
|
|
279
279
|
t||"").match(/^Uid:\s+([0-9]+)/mu),n=Number(r?.[1]);if(!Number.isSafeInteger(n))throw new Error("Vibe64 managed service \
|
|
280
280
|
process UID is unavailable.");return n}function qt(e=0,t=""){let r=`/${t}`,n="";try{n=h(`/proc/${e}/cgroup`,"utf8")}catch(o){
|
|
@@ -293,7 +293,7 @@ push(Buffer.from(t.subarray(0,i)))}catch(i){if(i?.code==="EINTR")continue;if((i?
|
|
|
293
293
|
Date.now()<n){Atomics.wait(r,0,0,nt);continue}throw i?.code==="EAGAIN"||i?.code==="EWOULDBLOCK"?new Error("Vibe64 exec h\
|
|
294
294
|
elper timed out waiting for its payload."):i}return Buffer.concat(e,o).toString("utf8")}function N(e=""){let t=String(e||
|
|
295
295
|
"").trim();if(!t||/[/:\\\r\n]/u.test(t))throw new Error("Vibe64 exec helper rejected an unsafe username.");return t}function Qt(e=""){
|
|
296
|
-
if(!
|
|
296
|
+
if(!lt.test(e))throw new Error("Vibe64 exec helper rejected an unsupported username.")}function Se(e=""){if(Qt(e),e.startsWith(
|
|
297
297
|
re))throw new Error("Vibe64 daemon Unix accounts cannot be managed as app users.");if(dt.has(e))throw new Error("Privile\
|
|
298
298
|
ged Unix accounts cannot be managed as Vibe64 app users.")}function X(e=""){let t=I("getent",["passwd",e],{encoding:"utf\
|
|
299
299
|
8"});if(t.status!==0)throw new Error(`OS user was not found: ${e}`);let n=String(t.stdout||"").split(/\r?\n/u)[0].split(
|
|
@@ -352,21 +352,22 @@ return Y(t);if(r==="workspace-cache-command"){let i=u.join(n.home,".local/state/
|
|
|
352
352
|
s);if(n.username!==t||b(i)!==i||s!==e||a.length!==1||!/^[a-z][a-z0-9-]*-[A-Za-z0-9]{6}$/u.test(a[0]))throw new Error("Ca\
|
|
353
353
|
che maintenance requires an owned workspace scratch directory.");return s}let o=String(e||"").trim();if(!o)return"/";if(r===
|
|
354
354
|
"account-auth-terminal"||r==="account-status"||r==="github-api-command")return ur(o,n);if(r==="vibe64-command"&&n.username===
|
|
355
|
-
t){let i=b(o),s=u.join(n.home,".local","state","vibe64","projects");if(T(s)){let
|
|
356
|
-
sep}`))return i}let a=u.join(n.home,".local","state","vibe64","colleague");if(T(a)){let
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
355
|
+
t){let i=b(o),s=u.join(n.home,".local","state","vibe64","projects");if(T(s)){let l=b(s);if(i===l||i.startsWith(`${l}${u.
|
|
356
|
+
sep}`))return i}let a=u.join(n.home,".local","state","vibe64","colleague");if(T(a)){let l=C(b(a),i),p=l.at(-1)||"",m=l.length===
|
|
357
|
+
4&&l[1]==="learn"&&/^(lobby|[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$/u.test(l[2]);if((l.length===2||
|
|
358
|
+
m)&&/^[A-Za-z0-9_-]+$/u.test(l[0])&&/^colleague_[a-f0-9]{32}$/u.test(p))return i}let c=u.join(n.home,".local","state","v\
|
|
359
|
+
ibe64","training-sources");if(T(c)){let l=C(b(c),i);if(l.length===1&&/^(catalogue|topic)-[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/u.
|
|
360
|
+
test(l[0]))return i}}if(r==="codex-app-server"||r==="opencode-app-server"){let i=b(o),s=Number(n.uid),a=[se({username:t})];
|
|
361
|
+
Number.isSafeInteger(s)&&s>=0&&a.push(u.join("/run/user",String(s)));for(let c of a){let l=u.join(c,"vibe64","agent-prov\
|
|
362
|
+
iders");if(!T(l))continue;let p=b(l),m=C(p,i),d=m[0],f=r==="opencode-app-server"?d==="opencode":d==="codex-app-server"||
|
|
363
|
+
/^codex-app-server-[a-f0-9]{12}$/u.test(d),g=r==="codex-app-server"&&m.length===1,x=m.length===2&&m[1]==="workspace";if(f&&
|
|
363
364
|
(g||x))return i}}return cr(o,t)}function cr(e="",t=""){let r=String(e||"").trim();if(!r)throw new Error("Vibe64 exec hel\
|
|
364
365
|
per rejected an empty managed project path.");let n=b(r),o=b(u.join("/var/lib/vibe64",$(t),"projects"));if(n.startsWith(
|
|
365
366
|
`${o}${u.sep}`))return n;throw new Error("Vibe64 exec helper rejected a command path outside the owner project root.")}function ur(e="",t={}){
|
|
366
367
|
let r=String(e||"").trim(),n=String(t.home||"").trim();if(!r||!n)throw new Error("Vibe64 exec helper rejected an empty u\
|
|
367
368
|
ser command path.");let o=b(r),i=b(n);if(o===i||o.startsWith(`${i}${u.sep}`))return o;throw new Error("Vibe64 exec helpe\
|
|
368
369
|
r rejected a command path outside the target user home.")}function $(e=""){return e.startsWith(re)?e.slice(re.length):e}
|
|
369
|
-
function Y(e=""){return u.join(
|
|
370
|
+
function Y(e=""){return u.join(mt,$(N(e)),"tmp")}function be(e={},t={},r="",n=""){let o={PATH:ie,TERM:w.env.TERM||"xterm\
|
|
370
371
|
-256color"};for(let[i,s]of Object.entries(e))!ct.test(i)||ut.has(i)||i.startsWith("LD_")||i.startsWith("DYLD_")||(o[i]=String(
|
|
371
372
|
s));if(n==="opencode-app-server"){let i=u.join(se({username:r}),"vibe64","agent-providers","opencode");for(let s of["HOM\
|
|
372
373
|
E","XDG_CACHE_HOME","XDG_CONFIG_HOME","XDG_DATA_HOME","XDG_STATE_HOME"]){let a=String(e[s]||"").trim();if(!u.isAbsolute(
|
|
@@ -560,12 +560,12 @@ startTimeTicks,version:c}}return Object.freeze({normalize:N,isValid:F,normalizeI
|
|
|
560
560
|
isProcessAlive:x})}var Tt=(t,e,r,n={})=>Object.freeze({id:t,contextWindow:e,variants:Object.freeze(r),...n}),Ga=Object.freeze([Object.freeze(
|
|
561
561
|
{id:"deepseek",baseUrl:"https://api.deepseek.com/",claudeBaseUrl:"https://api.deepseek.com/anthropic",claudeAutoCompactWindow:786432,
|
|
562
562
|
webSearch:!1,models:Object.freeze([Tt("deepseek-flash",1048576,["low","high","max"],{images:!0,freeformPatch:!0,codexHistoryRouting:!0}),
|
|
563
|
-
Tt("deepseek-v4-pro",1048576,["low","high","max"],{freeformPatch:!0})])}),Object.freeze({id:"zai
|
|
564
|
-
|
|
565
|
-
freeze([Tt("glm-5.3",1048576,["low","high","max"],{freeformPatch:!0,codexHistoryRouting:!0})])}),
|
|
566
|
-
baseUrl:"https://api.z.ai/api/v1",claudeBaseUrl:"https://api.z.ai/api/anthropic",claudeAutoCompactWindow:1e6,
|
|
567
|
-
models:Object.freeze([Tt("glm-5.3",1048576,["low","high","max"],{freeformPatch:!0,codexHistoryRouting:!0})])})]);
|
|
568
|
-
return Ga.find(e=>e.id===t)||null}var lp=32*1024*1024,pp=Object.freeze({chatgpt:"https://chatgpt.com/backend-api/codex",apiKey:"https://api.openai.com/v1",
|
|
563
|
+
Tt("deepseek-v4-pro",1048576,["low","high","max"],{freeformPatch:!0,codexHistoryRouting:!0})])}),Object.freeze({id:"zai-\
|
|
564
|
+
coding-plan",baseUrl:"https://api.z.ai/api/v1",claudeBaseUrl:"https://api.z.ai/api/anthropic",claudeAutoCompactWindow:1e6,
|
|
565
|
+
webSearch:!1,models:Object.freeze([Tt("glm-5.3",1048576,["low","high","max"],{freeformPatch:!0,codexHistoryRouting:!0})])}),
|
|
566
|
+
Object.freeze({id:"zai",baseUrl:"https://api.z.ai/api/v1",claudeBaseUrl:"https://api.z.ai/api/anthropic",claudeAutoCompactWindow:1e6,
|
|
567
|
+
webSearch:!1,models:Object.freeze([Tt("glm-5.3",1048576,["low","high","max"],{freeformPatch:!0,codexHistoryRouting:!0})])})]);
|
|
568
|
+
function Ie(t){return Ga.find(e=>e.id===t)||null}var lp=32*1024*1024,pp=Object.freeze({chatgpt:"https://chatgpt.com/backend-api/codex",apiKey:"https://api.openai.com/v1",
|
|
569
569
|
deepseek:Ie("deepseek").baseUrl.replace(/\/$/u,""),"zai-coding-plan":Ie("zai-coding-plan").baseUrl,zai:Ie("zai").baseUrl});var vp=new URL("./../../../@jskit-ai/assistant-core/src/server/conversation/codexProcess.js",import.meta.url).href;var bp=Object.freeze({HELPER:"helper",INTERACTIVE:"interactive"}),_p=mr();var Ka=Object.freeze({UNIX:"unix"});var Ap=process.platform==="linux"?107:103,Cp=Object.freeze({MISSING:"missing",RESPONSIVE:"responsive",TIMEOUT:"timeout",
|
|
570
570
|
UNREACHABLE:"unreachable"}),Ep=Object.freeze({EXITED:"exited",INCOMPATIBLE:"incompatible",LIVE:"live",MISSING:"missing",
|
|
571
571
|
SUSPECT:"suspect"}),Ja=Object.freeze({RUNNING:"running",STOPPED:"stopped"}),Op=Object.freeze({ABSENT:"absent",AMBIGUOUS:"\
|
|
@@ -988,82 +988,83 @@ Possible answers:
|
|
|
988
988
|
start a duplicate or replacement server. If it is unavailable, report that blocker. Describe only rendered browser evide\
|
|
989
989
|
nce.","When adopting an authenticated app, or when its login blocks Preview inspection, inspect identity support/names w\
|
|
990
990
|
ith `vibe64-helper preview status`; prefer `vibe64-helper preview browser identity <configured-name>` to requesting pass\
|
|
991
|
-
words. If unconfigured, ask which existing accounts (email/login/user ID) represent admin
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
s
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
"The top Preview toolbar Stop and `vibe64-helper
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
and is not a browser-navigation URL.","Use the
|
|
1009
|
-
|
|
1010
|
-
another browser or changing its dependencies.","
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
checks
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
ript
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
database name. Never spoof safety checks by changing only the test runner's environment.","If no
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
reporting readiness, and make Playwright use the started target's URL
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
scope and key names, never their values, and claim
|
|
1052
|
-
|
|
1053
|
-
vibe64-helper env set <scope> <KEY> --secret`. Never
|
|
1054
|
-
from Env."]);function Zr(t=""){return String(t??"").
|
|
1055
|
-
throw new TypeError(`${e} must be an object.`);return t}
|
|
1056
|
-
has(s));if(o.length>0)throw new TypeError(`${r}
|
|
1057
|
-
"conversationKind","scope","session","hostGuidance"],"
|
|
1058
|
-
"string"||Buffer.byteLength(t.hostGuidance,"
|
|
1059
|
-
supplied by the host.");if(!$u.includes(t.conversationKind))
|
|
1060
|
-
|
|
1061
|
-
fromEntries(Gs.map(n=>{if(typeof e[n]!="boolean")throw new TypeError(
|
|
1062
|
-
return[n,e[n]]}));return{conversationKind:t.conversationKind,scope:"
|
|
1063
|
-
{},session:r}}function Bu(t){rt(t,["scope","stableContext"],"
|
|
1064
|
-
trim();if(!e||e.length>Uu)throw new TypeError("Vibe64
|
|
1065
|
-
ephemeral",stableContext:e}}function Hu(t){if(t.scope==="
|
|
1066
|
-
"
|
|
991
|
+
words. If unconfigured, ask which existing accounts (email/login/user ID) represent admin, other required roles and the \
|
|
992
|
+
default; reuse prior answers and wait for their choices before configuring access. Never infer admin rights from names o\
|
|
993
|
+
r the Vibe64 viewer.","A web app with login accounts has an application-owned adapter in the Outputs `#### Preview ident\
|
|
994
|
+
ity` block (`vibe64-helper spec outputs`, `vibe64-helper spec preview-identity-command`); when it is missing, set it up \
|
|
995
|
+
from the app framework's own pattern as part of the work instead of merely offering it. Save selectors the person gives \
|
|
996
|
+
or confirms (you may propose existing app accounts) with `vibe64-helper preview identities save` (`vibe64-helper spec pr\
|
|
997
|
+
eview-identities`), then verify each with `vibe64-helper preview browser identity <name>`; a saved selector alone proves\
|
|
998
|
+
no access. Use existing sessions/permissions, reject missing/disabled accounts, and disable the adapter without Vibe64\u2019\
|
|
999
|
+
s per-run enable flag and secret. Do not create users, change roles, reset passwords or weaken production auth for impor\
|
|
1000
|
+
t. If choices are deferred/declined, say access stays unconfigured and continue independent setup work without repeated \
|
|
1001
|
+
credential requests. Public/non-web apps need no adapter.","Use `vibe64-helper preview status`, `screenshot`, `logs`, an\
|
|
1002
|
+
d `browser eval` (Playwright code on stdin) for rendered inspection.","The top Preview toolbar Stop and `vibe64-helper p\
|
|
1003
|
+
review stop` stop this session's application and managed browser, not chat or source. Status reports the saved stopped c\
|
|
1004
|
+
hoice. A status read, screenshot, browser inspection, source edit or session reopening is not permission to restart it; \
|
|
1005
|
+
use `vibe64-helper preview ensure --wait` only for a deliberate Start. Scoped browser tests restore the prior stopped ch\
|
|
1006
|
+
oice.","For interactive navigation, use the proxy URL from `vibe64-helper preview inspect-url` or status `currentPage.ur\
|
|
1007
|
+
l` / `endpoints.browser.url`. Inside browser eval, use `await page.goto(new URL('/your-path', preview.url).href)`. The d\
|
|
1008
|
+
irect application endpoint under diagnostics bypasses Preview identity and is not a browser-navigation URL.","Use the ma\
|
|
1009
|
+
naged preview browser for interactive browsing and `vibe64-helper playwright` only for an existing configured project su\
|
|
1010
|
+
ite; report a platform or project-test blocker rather than installing another browser or changing its dependencies.","Fo\
|
|
1011
|
+
r browser evidence, batch related actions and assertions, return only needed values and inspect relevant locators or reg\
|
|
1012
|
+
ions; screenshot at meaningful checkpoints or failures, not after every click. Reuse the managed browser when isolation \
|
|
1013
|
+
permits, keep required viewport, identity and security checks, and use existing automated cases for repeat verification.",
|
|
1014
|
+
"For browser tests that write or reset data, inspect `vibe64-helper preview targets --json` and the project's `genesis/s\
|
|
1015
|
+
tack.md` Outputs. Run `vibe64-helper playwright --target <declared-test-target> test <suite arguments>` (or `npm-run <sc\
|
|
1016
|
+
ript>` in place of `test`). Vibe64 starts that web target, waits for readiness, uses its declared application identity, \
|
|
1017
|
+
and restores the previous Preview when the command finishes or is cancelled; report restoration failures.","A target nam\
|
|
1018
|
+
e is not proof of test isolation. Before running a destructive suite, the application must verify the server's actual te\
|
|
1019
|
+
st database and suppress real email, invoices, payments, and other external effects. Keep managed Env unchanged. The tes\
|
|
1020
|
+
t launcher and its preview-identity command must use the same database. Follow the application's declared test resources\
|
|
1021
|
+
and never invent a database name. Never spoof safety checks by changing only the test runner's environment.","If no sui\
|
|
1022
|
+
table test target exists, add one through the project's existing Outputs contract and application-owned test scripts wit\
|
|
1023
|
+
hin authorized scope; normal Preview stays the default. Validate the exact disposable database before resetting it, prep\
|
|
1024
|
+
are fixtures before reporting readiness, and make Playwright use PLAYWRIGHT_BASE_URL (the started target's URL) without \
|
|
1025
|
+
starting another server. If test resources or external-effect controls are missing, report that blocker. `vibe64-helper \
|
|
1026
|
+
preview ensure --target <id> --wait --json` deliberately selects an interactive target until changed. If browser startup\
|
|
1027
|
+
is slow, measure migrations, fixtures and server startup before retrying or extending deadlines.","Keep test output sma\
|
|
1028
|
+
ll: run relevant files/cases, save stdout/stderr to local artifacts and keep exit status. Report counts, duration, faile\
|
|
1029
|
+
d cases, actionable errors and artifact paths, reading only needed failure excerpts. Retain startup, resource and Previe\
|
|
1030
|
+
w-restoration errors even if tests pass, and trailing wrapper diagnostics separately from JSON. Do not rerun for output \
|
|
1031
|
+
or reread unchanged logs.","Batch related browser tests in one managed suite (one Preview switch and restore). Suites an\
|
|
1032
|
+
d live Preview actions are sequential: no browser actions, ensure/restart or target changes during a suite or restoratio\
|
|
1033
|
+
n. Wait on the original execution, including background runs, through cleanup/restoration (empty polls: yield_time_ms: 3\
|
|
1034
|
+
0000 where supported; shorter only for interactive input); read-only status/logs stay available. Before live inspection,\
|
|
1035
|
+
confirm `vibe64-helper playwright status` shows no active run and `vibe64-helper preview status` is ready on the restor\
|
|
1036
|
+
ed target. To stop, run `vibe64-helper playwright cancel <run-id>`, which waits for cleanup/restoration; retry if cleanu\
|
|
1037
|
+
p needs attention. Never kill test/Preview PIDs or change locks; launcher exit alone does not prove tests stopped. Reche\
|
|
1038
|
+
ck status before reporting a busy blocker.","If a managed command reports kernel task denials or a resource incident, re\
|
|
1039
|
+
port the blocker with its diagnostic and incident ID and ask the platform operator to inspect that evidence before retry\
|
|
1040
|
+
ing; never raise test timeouts or weaken assertions to work around a process/thread limit. A generic browser timeout wit\
|
|
1041
|
+
hout resource evidence does not establish a platform cause."]),C_=Object.freeze(["Each managed shell command receives cu\
|
|
1042
|
+
rrent development Env from Vibe64, including declared resource bindings; use them in ordinary commands. Do not build env\
|
|
1043
|
+
ironment injection or copy managed credentials into source. Resource provisioning and application migrations remain sepa\
|
|
1044
|
+
rate preparation steps.","Use `vibe64-helper env status [development|production|all]` to inspect configured key names wi\
|
|
1045
|
+
thout revealing values.","Pipe an available value to `vibe64-helper env set <development|production> <KEY> [--secret]`; \
|
|
1046
|
+
never put values in arguments, logs, or repository files. Use empty stdin only when the user requested an empty value.",
|
|
1047
|
+
"When the person refers to a saved key, account or accounts hub, run `vibe64-helper env saved` (names, descriptions and \
|
|
1048
|
+
fields, never values) and link the matching field to the variable the application reads with `vibe64-helper env link <de\
|
|
1049
|
+
velopment|production> <KEY> <saved-id> <field-id>` instead of asking for the value.","Keep development and production va\
|
|
1050
|
+
lues separate. Never invent credentials, copy a value between scopes without explicit direction, or edit Vibe64 runtime/\
|
|
1051
|
+
session storage.","After an Env mutation, report only the affected scope and key names, never their values, and claim su\
|
|
1052
|
+
ccess only when the command succeeded.","Store a secret the application needs generated (such as an application key) by \
|
|
1053
|
+
generating it with the framework's own generator and piping it to `vibe64-helper env set <scope> <KEY> --secret`. Never \
|
|
1054
|
+
write it into a generated `.env` file: Vibe64 regenerates that file from Env."]);function Zr(t=""){return String(t??"").
|
|
1055
|
+
trim()}function en(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new TypeError(`${e} must be an object.`);return t}
|
|
1056
|
+
function rt(t,e,r){let n=new Set(e),o=Object.keys(t).filter(s=>!n.has(s));if(o.length>0)throw new TypeError(`${r} contai\
|
|
1057
|
+
ns unsupported fields: ${o.join(", ")}.`)}function qu(t){if(rt(t,["conversationKind","scope","session","hostGuidance"],"\
|
|
1058
|
+
Vibe64 session context"),t.hostGuidance!==void 0&&(typeof t.hostGuidance!="string"||Buffer.byteLength(t.hostGuidance,"ut\
|
|
1059
|
+
f8")>1024))throw new TypeError("Vibe64 host guidance must be bounded text supplied by the host.");if(!$u.includes(t.conversationKind))
|
|
1060
|
+
throw new TypeError("Vibe64 session context has an unknown conversationKind.");let e=en(t.session,"Vibe64 session capabi\
|
|
1061
|
+
lities");rt(e,Gs,"Vibe64 session capabilities");let r=Object.fromEntries(Gs.map(n=>{if(typeof e[n]!="boolean")throw new TypeError(
|
|
1062
|
+
`Vibe64 session capability ${n} must be boolean.`);return[n,e[n]]}));return{conversationKind:t.conversationKind,scope:"s\
|
|
1063
|
+
ession",...t.hostGuidance?{hostGuidance:t.hostGuidance}:{},session:r}}function Bu(t){rt(t,["scope","stableContext"],"Vib\
|
|
1064
|
+
e64 ephemeral context");let e=String(t.stableContext||"").trim();if(!e||e.length>Uu)throw new TypeError("Vibe64 ephemera\
|
|
1065
|
+
l context requires bounded stableContext.");return{scope:"ephemeral",stableContext:e}}function Hu(t){if(t.scope==="sessi\
|
|
1066
|
+
on")return qu(t);if(t.scope==="ephemeral")return Bu(t);throw new TypeError("The Vibe64 driver supports session and ephem\
|
|
1067
|
+
eral scopes only.")}async function Ws(t={},{readRegistry:e=Fu,workdir:r=""}={}){let n=en(t,"Vibe64 host resolver request");if(rt(n,["data","\
|
|
1067
1068
|
providerSessionId","parentSessionIds","scope"],"Vibe64 host resolver request"),!["session","turn"].includes(n.scope))throw new TypeError(
|
|
1068
1069
|
"The Vibe64 host resolver scope must be session or turn.");if(n.scope==="turn")return null;let o=en(n.data,"Vibe64 host \
|
|
1069
1070
|
resolver data");rt(o,["registryPath"],"Vibe64 host resolver data");let s=Zr(o.registryPath);if(!Qr.isAbsolute(s))throw new TypeError(
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"exports": {
|
|
7
7
|
"./server": "./src/server/index.js",
|
|
8
8
|
"./server/agentSpecs": "./src/server/agentSpecs.js",
|
|
9
|
+
"./server/packaging": "./src/server/packaging.js",
|
|
9
10
|
"./server/promptContext": "./src/server/promptContext.js",
|
|
10
11
|
"./shared/connectedPackageTypes": "./src/shared/connectedPackageTypes.js"
|
|
11
12
|
}
|