vibe64 0.1.39 → 0.1.40
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 +1942 -1846
- package/bin/server.js +136 -112
- package/bin/upgrade-state.js +5023 -4860
- package/dist/assets/GithubBrowserTabs-BoDkGFtY.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-CmiidAs5.js +5 -0
- package/dist/assets/{Vibe64AuthSettingsButton-M44SSmZ9.css → Vibe64AuthSettingsButton-D2lltUhi.css} +1 -1
- 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-MCzEQCWu.js +1 -0
- package/dist/assets/{Vibe64DatabaseWorkspace-CEml9BWn.js → Vibe64DatabaseWorkspace-DM9V017v.js} +3 -3
- package/dist/assets/{Vibe64DatabaseWorkspace-DPDMxhAW.css → Vibe64DatabaseWorkspace-DePBDUMy.css} +1 -1
- package/dist/assets/Vibe64OutputControls-CU9H0Dur.js +8 -0
- package/dist/assets/{Vibe64OutputControls-Co5YzwcK.css → Vibe64OutputControls-CeBzZPUT.css} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-Agyt4O-V.css → Vibe64RepositoryWorkspace-Bw9W691N.css} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-obZFXkoG.js → Vibe64RepositoryWorkspace-DaAChLA8.js} +2 -2
- package/dist/assets/{Vibe64SessionFiles-CQzs6fee.js → Vibe64SessionFiles-CM2EzXBf.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_-DVHd6D5V.js} +1 -1
- package/dist/assets/{_sessionTool_-1V-z6Pbp.js → _sessionTool_-BV1AwpUx.js} +1 -1
- package/dist/assets/_slug_-DsfaE8Vh.js +25 -0
- package/dist/assets/_slug_-_qfQqdHb.css +1 -0
- package/dist/assets/{access-WlhPvPgy.js → access-BbzSuMt5.js} +1 -1
- package/dist/assets/app-BNh2oZg-.js +1 -0
- package/dist/assets/assistantRouting-DeE8jvtE.js +3 -0
- package/dist/assets/{changes-CHJjrZAc.js → changes-D8Koqrqg.js} +1 -1
- package/dist/assets/client-CybfBKCn.js +2 -0
- package/dist/assets/client-D6UGamrv.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-DLrmf5ed.js} +1 -1
- package/dist/assets/definitions-DgyQJgn-.js +1 -0
- package/dist/assets/dialog-transition-D2vqGksQ.js +1 -0
- package/dist/assets/env-B5V1EC4M.css +1 -0
- package/dist/assets/env-rVQwLtYr.js +1 -0
- package/dist/assets/health-92hh8xXh.css +1 -0
- package/dist/assets/health-B6r9LLrd.js +1 -0
- package/dist/assets/{history-1_NU8azF.js → history-C6xLWUxL.js} +1 -1
- package/dist/assets/incoming-Bdqo8z25.css +1 -0
- package/dist/assets/incoming-CNwZa_yD.js +2 -0
- package/dist/assets/index-B9P6KjvH.js +138 -0
- package/dist/assets/{index-irlMYzLh.css → index-BC29JK2e.css} +1 -1
- package/dist/assets/{integrations-BMzWQQpa.js → integrations-CcrqPXxj.js} +10 -10
- package/dist/assets/integrations-Co8WvCiD.css +1 -0
- package/dist/assets/issues-DEjIlMdl.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-BP1xvd8w.js} +1 -1
- package/dist/assets/mdi-Bt90Ns76.js +1 -0
- package/dist/assets/placement-CQy46H3H.js +1 -0
- package/dist/assets/publish-CPWnztCc.css +1 -0
- package/dist/assets/publish-CVXolnAG.js +3 -0
- package/dist/assets/pull-requests-BjwokcU0.css +1 -0
- package/dist/assets/pull-requests-DdgzLzY_.js +1 -0
- package/dist/assets/{repository-BL_2bgzC.js → repository-5S0LzRq3.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-BKP_eQ3F.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-D8DWpcSy.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-D-Vkq0sK.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-4o6S8eXq.js → useVibe64DatabaseTools-Dpm53ruL.js} +1 -1
- package/dist/assets/useVibe64ProjectScope-B5ogg6jd.js +1 -0
- package/dist/assets/useVibe64SessionData-CGJXj3r7.js +1 -0
- package/dist/assets/{useVibe64SessionSelection-BzL1y_Vq.js → useVibe64SessionSelection-BEqKR412.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-tv2wz7_H.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 +94 -21
- 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 +55 -47
- package/docs/colleague-usage/learning-mode-ui.md +13 -10
- package/docs/colleague-usage/learning-practice-projects.md +13 -2
- package/docs/colleague-usage/learning-teacher-guide.md +9 -4
- package/docs/colleague-usage/learning-with-colleague.md +9 -5
- package/docs/colleague-usage/lesson-authoring.md +12 -12
- package/docs/colleague-usage/lesson-step-bar.md +22 -22
- package/docs/colleague-usage/main-chat-approvals.md +150 -0
- package/docs/colleague-usage/preview-browser-checks.md +5 -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 +185 -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 +21 -4
- 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 +73 -69
- 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 +501 -415
- package/node_modules/@local/vibe64-genesis/src/server/packaging.js +105 -0
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +143 -139
- 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 +1340 -1300
- package/node_modules/@local/vibe64-training/package.json +2 -1
- package/package.json +19 -15
- package/server.bundle.mjs +42890 -40887
- 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
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { createRequire as __vibe64CreateRequire } from 'node:module';const require=__vibe64CreateRequire(import.meta.url);
|
|
2
|
+
import{createHash as B}from"node:crypto";import N from"node:path";var $=class extends Error{constructor(n,s,t=void 0){super(
|
|
3
|
+
s),this.name="Vibe64StackOperationError",this.code=n,t!==void 0&&(this.details=t)}},x=Object.freeze({VIBE64_WORKSPACE_SETUP_INVALID:"\
|
|
4
|
+
workspace-setup",VIBE64_OUTPUTS_INVALID:"outputs",VIBE64_DEPLOYMENT_INVALID:"deployment",VIBE64_PACKAGING_INVALID:"packa\
|
|
5
|
+
ging",VIBE64_RESOURCE_ESTIMATES_INVALID:"resource-estimates",VIBE64_CONNECTED_DEVELOPMENT_INVALID:"connected-development",
|
|
6
|
+
VIBE64_PROJECT_SERVICES_INVALID:"project-services",VIBE64_INTEGRATION_SETUP_INVALID:"integration-setup",VIBE64_ARCHITECTURE_INSPECTION_INVALID:"\
|
|
7
|
+
architecture-inspection",VIBE64_ARCHITECTURE_LAYOUT_INVALID:"architecture-layout"}),U=/ Exact grammar: vibe64-helper spec [a-z-]+\.$/u;
|
|
8
|
+
function H(e,n){let s=x[e],t=String(n).replace(U,"");return s?`${t} Exact grammar: vibe64-helper spec ${s}.`:t}function R(e,n,s){
|
|
9
|
+
return`Unknown ${e}: ${n}. Use one of: ${s.join("; ")}.`}function l(e,n,s,t,i={}){throw new $(e,H(e,s),{path:n,...t===void 0?
|
|
10
|
+
{}:{line:t},...i})}function I(e,n,s,t,i){return(typeof e!="string"||!e.trim()||/[\0\r\n]/u.test(e))&&l(n,s,`${t} must be\
|
|
11
|
+
one non-empty line.`,i),e.trim()}function K(e){let n=[...String(e||"").matchAll(/`([^`\r\n]+)`/gu)];return n.length===0||
|
|
12
|
+
n.map(s=>s[0]).join(" ")!==e?null:n.map(s=>s[1])}function k(e,n,s,t,i,{count:o,maximum:r=64}={}){let c=K(e);if(!c||c.length>
|
|
13
|
+
r||o!==void 0&&c.length!==o||c.some(a=>a.length>4096||/[\0\r\n]/u.test(a))){let a=o===void 0?"separate non-empty":`exact\
|
|
14
|
+
ly ${o}`;l(n,s,`${t} must contain ${a} backticked ${o===1?"value":"values"}.`,i)}return c}function W(e=""){return typeof e==
|
|
15
|
+
"string"&&!!e&&!/[\s\0{}]/u.test(e)&&!N.isAbsolute(e)&&!e.split(/[\\/]/u).includes("..")}function P(e,n,s,t,i){let o=k(e,
|
|
16
|
+
n,s,t,i);return W(o[0])||l(n,s,`${t} must begin with a safe executable.`,i),o}function q(e=""){return typeof e=="string"&&
|
|
17
|
+
!!e&&!/[\0\r\n\\]/u.test(e)&&!N.posix.isAbsolute(e)&&N.posix.normalize(e)===e&&!e.split("/").some(n=>!n||n==="..")}function _(e,n,s,t,i,{
|
|
18
|
+
allowRoot:o=!0}={}){return(!q(e)||!o&&e===".")&&l(n,s,`${t} must be a canonical project-relative path.`,i),e}function C(e,n,s,t,i){
|
|
19
|
+
let o=k(e,n,s,t,i);return o.some(r=>!/^[a-z0-9]+(?:-[a-z0-9]+)*$/u.test(r))&&l(n,s,`${t} must use lowercase technology i\
|
|
20
|
+
ds separated into backticked values.`,i),new Set(o).size!==o.length&&l(n,s,`${t} contains a duplicate technology id.`,i),
|
|
21
|
+
o}function S(e){return Array.isArray(e)?e.map(S):e&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(n=>[n,
|
|
22
|
+
S(e[n])])):e}function T(e){let n=`${JSON.stringify(S(e),null,2)}
|
|
23
|
+
`;return`sha256:${B("sha256").update(n).digest("hex")}`}function w(e={},n={},s="operation"){if(e.stackHash!==n.stackHash)
|
|
24
|
+
throw new $("VIBE64_STACK_CHANGED",`The Stack changed while Vibe64 inspected its ${s}. Retry the operation.`)}function V(e=[]){let n=e.map(s=>s.trim()).filter(Boolean);return n.length===1&&n[0]==="- Nothing."}var L="vibe64.packaging.v1",$e="Packaging",he=Object.freeze(["genesis",".genesis",".agents",".claude",".codex",".opencod\
|
|
25
|
+
e"]),p="VIBE64_PACKAGING_INVALID",Y=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u,Z=/^[A-Z_][A-Z0-9_]*$/u,X=/^[a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)+$/u,
|
|
26
|
+
J=/^[a-z][a-z0-9+.-]*$/u,Q=/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/u,ee=/\{[^{}\s]*\}/u,ne=/^### Package `([^`\r\n]+)`:[ \t]+(.+)$/u,
|
|
27
|
+
te=/^- (Prepare|Build) `([^`\r\n]+)`:[ \t]+(.+)$/u,se=/^- Environment `([^`\r\n]+)`:[ \t]+(.+)$/u,ie=/^- Permission `([^`\r\n]+)`:[ \t]+(.+)$/u,
|
|
28
|
+
oe=/^- Content: package `([^`\r\n]+)`$/u,D=50,y=500,re=/(?:^|_)(?:TOKEN|SECRET|PASSWORD|PASSPHRASE|PRIVATE_KEY|API_KEY|CREDENTIALS?)(?:_|$)/u,
|
|
29
|
+
G=Object.freeze({npm:Object.freeze({entries:["workdir","runtimes","prepare","build","environment","versionFrom"],required:[
|
|
30
|
+
"versionFrom"],versionSources:["package.json","external"]}),"python-dist":Object.freeze({entries:["workdir","runtimes","\
|
|
31
|
+
prepare","build","environment","output","versionFrom"],required:["build","output","versionFrom"],versionSources:["pyproj\
|
|
32
|
+
ect.toml","external"]}),"web-bundle":Object.freeze({entries:["workdir","runtimes","prepare","build","environment","outpu\
|
|
33
|
+
t"],required:["build","output"],versionSources:[]}),capacitor:Object.freeze({entries:["workdir","content","platforms","a\
|
|
34
|
+
pplicationId","name","icon","versionFrom","deepLinkSchemeFrom","appLinkDomainsFrom","permission"],required:["content","p\
|
|
35
|
+
latforms","applicationId","name","icon","versionFrom"],versionSources:["package.json","external"]})}),h=Object.freeze(Object.
|
|
36
|
+
keys(G)),g=Object.freeze(["android"]),b=Object.freeze(["package.json","pyproject.toml","external"]),d=e=>e.map(n=>`\`${n}\
|
|
37
|
+
\``).join(" | "),f=Object.freeze([["- Packer: ","packer",`- Packer: ${d(h)}`],["- Workdir: ","workdir","- Workdir: `path\
|
|
38
|
+
`"],["- Runtimes: ","runtimes","- Runtimes: `runtime`..."],["- Output: ","output","- Output: `path`"],["- Version from: ",
|
|
39
|
+
"versionFrom",`- Version from: ${d(b)}`],["- Platforms: ","platforms",`- Platforms: ${d(g)}...`],["- Id: ","applicationI\
|
|
40
|
+
d","- Id: `reverse.dns.id`"],["- Name: ","name","- Name: `Display name`"],["- Icon: ","icon","- Icon: `path/to/icon-1024\
|
|
41
|
+
.png`"],["- Deep link scheme from: ","deepLinkSchemeFrom","- Deep link scheme from: `ENV_NAME`"],["- App link domains fr\
|
|
42
|
+
om: ","appLinkDomainsFrom","- App link domains from: `ENV_NAME`"]]),z="### Package `id`: Label",ce=Object.freeze([f[0][2],
|
|
43
|
+
f[1][2],f[2][2],"- Prepare|Build `label`: `command` `argument`...","- Environment `NAME`: `value`",f[3][2],f[4][2],"- Co\
|
|
44
|
+
ntent: package `web-bundle-id`",...f.slice(5).map(([,,e])=>e),"- Permission `id`: User-facing reason."]),A=Object.freeze(
|
|
45
|
+
{packer:"Packer",workdir:"Workdir",runtimes:"Runtimes",prepare:"Prepare",build:"Build",environment:"Environment",output:"\
|
|
46
|
+
Output",versionFrom:"Version from",content:"Content",platforms:"Platforms",applicationId:"Id",name:"Name",icon:"Icon",deepLinkSchemeFrom:"\
|
|
47
|
+
Deep link scheme from",appLinkDomainsFrom:"App link domains from",permission:"Permission"});function u(e,n,s){l(p,e,n,s)}
|
|
48
|
+
function O(e,n,s,t){let i=I(e,p,n,s,t);return Y.test(i)||u(n,`${s} must use lowercase letters, digits, and single hyphen\
|
|
49
|
+
s.`,t),i}function ae(e,n,s,t,i){return k(e.slice(n.length),p,s,t,i,{count:1})[0]}function v(e,n,s,t){return e.some(i=>ee.
|
|
50
|
+
test(i))&&u(n,`${s} takes no placeholders in ${L}.`,t),e}function M(e,n,s,t){return Z.test(e)||u(n,`${s} must be an uppe\
|
|
51
|
+
rcase environment variable name.`,t),e}function F(e,n,s,t,i){e.seen.has(n)&&u(t,`Package ${e.id} has a duplicate ${A[n]}\
|
|
52
|
+
entry.`,i),e.seen.add(n),e.fields[n]=s,e.lines[n]=i}function ue(e,n,s,t,i){let o=`Packaging ${A[e]}`;if(e==="runtimes")
|
|
53
|
+
return C(n.slice(s.length),p,t,o,i);if(e==="platforms"){let c=k(n.slice(s.length),p,t,o,i);return c.some(a=>!g.includes(
|
|
54
|
+
a))&&u(t,`${o} must be ${d(g)}.`,i),new Set(c).size!==c.length&&u(t,`${o} contains a duplicate platform.`,i),c}let r=v([
|
|
55
|
+
ae(n,s,t,o,i)],t,o,i)[0];if(e==="packer")return h.includes(r)||u(t,`Unknown packer \`${r}\`. ${L} packers are ${d(h)}.`,
|
|
56
|
+
i),r;if(["workdir","output"].includes(e))return _(r,p,t,o,i,{allowRoot:e==="workdir"});if(e==="icon"){let c=_(r,p,t,o,i,
|
|
57
|
+
{allowRoot:!1});return c.toLowerCase().endsWith(".png")||u(t,`${o} must be a 1024x1024 PNG file.`,i),c}return e==="versi\
|
|
58
|
+
onFrom"?(b.includes(r)||u(t,`${o} must be ${d(b)}.`,i),r):e==="applicationId"?((!X.test(r)||r.length>150)&&u(t,`${o} mus\
|
|
59
|
+
t be a reverse-DNS id such as \`com.example.notes\` (letters, digits and underscores; each part starts with a letter).`,
|
|
60
|
+
i),r):e==="name"?((r.trim()!==r||r.length>D)&&u(t,`${o} must be at most ${D} characters without surrounding spaces.`,i),
|
|
61
|
+
r):M(r,t,o,i)}function me(e,n,s){return{id:O(e[1],n,"Package id",s),label:I(e[2],p,n,"Package label",s),fields:{},lines:{},
|
|
62
|
+
prepare:[],build:[],environment:[],permissions:[],seen:new Set,line:s}}function pe(e,n,s,t){/^- Plugins?\b/u.test(n)&&u(
|
|
63
|
+
s,"Packaging takes no Plugin list: the generated shell installs the native plugins of the Content package at its lockfil\
|
|
64
|
+
e versions.",t);for(let[a,m]of f)if(n.startsWith(a)){F(e,m,ue(m,n,a,s,t),s,t);return}let i=n.match(oe);if(i){F(e,"conten\
|
|
65
|
+
t",O(i[1],s,"Packaging Content package",t),s,t);return}let o=n.match(te);if(o){let a=o[1].toLowerCase(),m=`Packaging ${o[1]}\
|
|
66
|
+
command`;e[a].push({label:I(o[2],p,s,`Packaging ${o[1]} label`,t),argv:v(P(o[3],p,s,m,t),s,m,t)}),e.lines[a]??=t;return}
|
|
67
|
+
let r=n.match(se);if(r){let a=M(r[1],s,"Packaging Environment name",t);re.test(a)&&u(s,`Packaging Environment ${a} looks\
|
|
68
|
+
like a credential. Packaging holds only non-secret build facts.`,t),e.environment.some(E=>E.name===a)&&u(s,`Package ${e.
|
|
69
|
+
id} has a duplicate Environment ${a}.`,t);let m=v(k(r[2],p,s,"Packaging Environment value",t,{count:1}),s,"Packaging Env\
|
|
70
|
+
ironment value",t)[0];e.environment.push({name:a,value:m}),e.lines.environment??=t;return}let c=n.match(ie);if(c){let a=O(
|
|
71
|
+
c[1],s,"Packaging Permission id",t),m=I(c[2],p,s,"Packaging Permission reason",t);(m.includes("`")||m.length>y)&&u(s,`Pa\
|
|
72
|
+
ckaging Permission reason is plain user-facing text of at most ${y} characters.`,t),e.permissions.some(E=>E.id===a)&&u(s,
|
|
73
|
+
`Package ${e.id} has a duplicate Permission ${a}.`,t),e.permissions.push({id:a,reason:m}),e.lines.permission??=t;return}
|
|
74
|
+
u(s,R("Packaging entry",n,ce),t)}function le(e,n){let s=e.fields.packer;s||u(n,`Package ${e.id} needs a Packer entry: ${d(
|
|
75
|
+
h)}.`,e.line);let t=G[s],i=new Set([...Object.keys(e.fields).filter(r=>r!=="packer"),...["prepare","build","environment"].
|
|
76
|
+
filter(r=>e[r].length),...e.permissions.length?["permission"]:[]]);for(let r of i)t.entries.includes(r)||u(n,`The ${s} p\
|
|
77
|
+
acker takes no ${A[r]} entry.`,e.lines[r]);for(let r of t.required)i.has(r)||u(n,`Package ${e.id} (${s}) needs ${/^[AEIOU]/u.
|
|
78
|
+
test(A[r])?"an":"a"} ${A[r]} entry.`,e.line);e.fields.versionFrom&&!t.versionSources.includes(e.fields.versionFrom)&&u(n,
|
|
79
|
+
`The ${s} packer reads its version from ${d(t.versionSources)}.`,e.lines.versionFrom);let o={id:e.id,label:e.label,packer:s,
|
|
80
|
+
workdir:e.fields.workdir||".",runtimeRequirements:e.fields.runtimes||[],prepare:e.prepare,build:e.build,environment:e.environment,
|
|
81
|
+
output:e.fields.output||null,versionFrom:e.fields.versionFrom||null};return s!=="capacitor"?o:{...o,content:e.fields.content,
|
|
82
|
+
platforms:e.fields.platforms,application:{id:e.fields.applicationId,name:e.fields.name,icon:e.fields.icon},deepLinkSchemeFrom:e.
|
|
83
|
+
fields.deepLinkSchemeFrom||null,appLinkDomainsFrom:e.fields.appLinkDomainsFrom||null,permissions:e.permissions}}function de(e,{
|
|
84
|
+
path:n="genesis/stack.md#Packaging"}={}){if(Array.isArray(e)||u(n,"Packaging must be supplied as exact Stack section lin\
|
|
85
|
+
es."),V(e))return{version:1,packages:[]};let s=[],t=null;for(let c=0;c<e.length;c+=1){let a=e[c].trim();if(!a)continue;let m=c+
|
|
86
|
+
1,E=a.match(ne);if(E){t=me(E,n,m),s.push(t);continue}a.startsWith("#")&&u(n,`Unknown Packaging heading: ${a}. Use ${z}.`,
|
|
87
|
+
m),t||u(n,`Packaging entries belong under ${z}.`,m),pe(t,a,n,m)}s.length===0&&u(n,"## Packaging needs at least one Packa\
|
|
88
|
+
ge or exactly `- Nothing.`.");let i=s.map(c=>le(c,n)),o=new Map;for(let c of i)o.has(c.id)&&u(n,`Packaging contains a du\
|
|
89
|
+
plicate package id ${c.id}.`),o.set(c.id,c);let r=new Set;for(let c of i.filter(({packer:a})=>a==="capacitor")){let a=o.
|
|
90
|
+
get(c.content);(!a||a.packer!=="web-bundle")&&u(n,`Package ${c.id} Content must name a web-bundle package declared in Pa\
|
|
91
|
+
ckaging.`),r.has(c.application.id)&&u(n,`Packaging declares application id ${c.application.id} twice.`),r.add(c.application.
|
|
92
|
+
id)}return{version:1,packages:i}}function j(e,n,s,t){let i=(Array.isArray(e)?e:[]).find(o=>o?.name===n);return(!i||typeof i.
|
|
93
|
+
value!="string"||!i.value.trim())&&u(s,`${t} names ${n}, which ## Environment defaults does not declare with a value.`),
|
|
94
|
+
i.value.trim()}function fe(e,n=[],{path:s="genesis/stack.md#Packaging"}={}){return{...e,packages:e.packages.map(t=>{if(t.
|
|
95
|
+
packer!=="capacitor")return t;let i={...t,deepLinkScheme:null,appLinkDomains:[]};if(t.deepLinkSchemeFrom){let o=j(n,t.deepLinkSchemeFrom,
|
|
96
|
+
s,`Package ${t.id} Deep link scheme from`);(!J.test(o)||["http","https","file","content","javascript"].includes(o))&&u(s,
|
|
97
|
+
`${t.deepLinkSchemeFrom} must be a custom lowercase URL scheme such as \`notes\`.`),i.deepLinkScheme=o}if(t.appLinkDomainsFrom){
|
|
98
|
+
let o=j(n,t.appLinkDomainsFrom,s,`Package ${t.id} App link domains from`).split(/[\s,]+/u).filter(Boolean);o.some(r=>!Q.
|
|
99
|
+
test(r))&&u(s,`${t.appLinkDomainsFrom} must list lowercase domain names separated by commas or spaces.`),i.appLinkDomains=
|
|
100
|
+
[...new Set(o)]}return i})}}function Ne({environment:e={},section:n={}}={}){w(n,e,"Packaging section");let s=[...n.diagnostics||
|
|
101
|
+
[]],t={version:1,packages:[]};n.status==="ready"&&(t=fe(de(n.lines),e.environmentDefaults));let i=s.length>0?"blocked":t.
|
|
102
|
+
packages.length>0?"ready":"unconfigured";return{contract:L,status:i,stackHash:n.stackHash,packagingHash:i==="ready"?T(t):
|
|
103
|
+
"",source:n.source||null,version:t.version,packages:t.packages,diagnostics:s}}export{ce as PACKAGING_ENTRY_FORMS,z as PACKAGING_HEADING_FORM,L as VIBE64_PACKAGING_CONTRACT,h as VIBE64_PACKAGING_PACKERS,
|
|
104
|
+
g as VIBE64_PACKAGING_PLATFORMS,$e as VIBE64_PACKAGING_SECTION,he as VIBE64_PACKAGING_SOURCE_EXCLUSIONS,de as parseVibe64PackagingLines,
|
|
105
|
+
fe as resolveVibe64PackagingEnvironment,Ne as vibe64PackagingInspection};
|
|
@@ -20,150 +20,154 @@ ce.","When adopting an authenticated app, or when its login blocks Preview inspe
|
|
|
20
20
|
th `vibe64-helper preview status`; prefer `vibe64-helper preview browser identity <configured-name>` to requesting passw\
|
|
21
21
|
ords. If unconfigured, ask which existing accounts (email/login/user ID) represent admin and other required roles, and t\
|
|
22
22
|
he default. Reuse prior answers; wait for their choices before configuring access. Never infer admin rights from names o\
|
|
23
|
-
r the Vibe64 viewer.","
|
|
24
|
-
-helper spec outputs` and `vibe64-helper spec preview-identity-command`)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
vibe64-helper playwright
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"Vibe64
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
23
|
+
r the Vibe64 viewer.","A web app with login accounts has an application-owned adapter declared in the Outputs `#### Prev\
|
|
24
|
+
iew identity` block (`vibe64-helper spec outputs` and `vibe64-helper spec preview-identity-command`); when it is missing\
|
|
25
|
+
, set it up from the app framework's own pattern as part of the work instead of merely offering it. Save the named selec\
|
|
26
|
+
tors the person gives or confirms with `vibe64-helper preview identities save` (`vibe64-helper spec preview-identities`)\
|
|
27
|
+
; you may propose them from existing app accounts, then verify each with `vibe64-helper preview browser identity <name>`\
|
|
28
|
+
. Use existing sessions/permissions, reject missing/disabled accounts, and disable the adapter without Vibe64\u2019s per-run \
|
|
29
|
+
enable flag and secret. Do not create users, change roles, reset passwords or weaken production auth for import. Verify \
|
|
30
|
+
the selected account\u2019s actual Preview access; a saved selector is insufficient. If account choices are deferred/declined\
|
|
31
|
+
, explain access remains unconfigured and continue independent setup work without repeated credential requests. Public/n\
|
|
32
|
+
on-web apps need no adapter.","Use `vibe64-helper preview status`, `screenshot`, `logs`, and `browser eval` (Playwright \
|
|
33
|
+
code on stdin) for rendered inspection.","The top Preview toolbar Stop and `vibe64-helper preview stop` stop this sessio\
|
|
34
|
+
n's application and managed browser, not chat or source. Status reports the saved stopped choice. A status read, screens\
|
|
35
|
+
hot, browser inspection, source edit or session reopening is not permission to restart it; use `vibe64-helper preview en\
|
|
36
|
+
sure --wait` only for a deliberate Start. Scoped browser tests restore the prior stopped choice.","For interactive navig\
|
|
37
|
+
ation, use the proxy URL from `vibe64-helper preview inspect-url` or status `currentPage.url` / `endpoints.browser.url`.\
|
|
38
|
+
Inside browser eval, use `await page.goto(new URL('/your-path', preview.url).href)`. The direct application endpoint un\
|
|
39
|
+
der diagnostics bypasses Preview identity and is not a browser-navigation URL.","Use the managed preview browser for int\
|
|
40
|
+
eractive browsing and `vibe64-helper playwright` only for an existing configured project suite; report a platform or pro\
|
|
41
|
+
ject-test blocker rather than installing another browser or changing its dependencies.","For browser evidence, batch rel\
|
|
42
|
+
ated actions and assertions, return only needed values and inspect relevant locators or regions; screenshot at meaningfu\
|
|
43
|
+
l visual checkpoints or failures, not after every click. Reuse the managed browser when test isolation permits. Preserve\
|
|
44
|
+
required viewport, identity and security checks; use existing automated cases for repeat verification.","For browser te\
|
|
45
|
+
sts that write or reset data, inspect `vibe64-helper preview targets --json` and the project's `genesis/stack.md` Output\
|
|
46
|
+
s. Run `vibe64-helper playwright --target <declared-test-target> test <suite arguments>` or `vibe64-helper playwright --\
|
|
47
|
+
target <declared-test-target> npm-run <script>`. Vibe64 starts that web target, waits for readiness, uses its declared a\
|
|
48
|
+
pplication identity, and restores the previous Preview when the command finishes or is cancelled; report restoration fai\
|
|
49
|
+
lures.","A target name is not proof of test isolation. Before running a destructive suite, the application must verify t\
|
|
50
|
+
he server's actual test database and suppress real email, invoices, payments, and other external effects. Keep managed E\
|
|
51
|
+
nv unchanged. The test launcher and its preview-identity command must use the same database. Follow the application's de\
|
|
52
|
+
clared test resources and never invent a database name. Never spoof safety checks by changing only the test runner's env\
|
|
53
|
+
ironment.","If no suitable test target exists, add one through the project's existing Outputs contract and application-o\
|
|
54
|
+
wned test scripts within authorized scope, keeping normal Preview as default. Validate the exact disposable database bef\
|
|
55
|
+
ore resetting it, prepare fixtures before reporting readiness, and make Playwright use the started target's URL, which V\
|
|
56
|
+
ibe64 supplies as PLAYWRIGHT_BASE_URL, without starting another server. If the required test resources or external-effec\
|
|
57
|
+
t controls are missing, report that specific blocker. Use `vibe64-helper preview ensure --target <id> --wait --json` onl\
|
|
58
|
+
y to deliberately select an interactive target; it stays selected until changed. If browser startup is slow, measure mig\
|
|
59
|
+
rations, fixtures and server startup before retrying or extending deadlines.","Keep test output small: run relevant file\
|
|
60
|
+
s/cases, save stdout/stderr to local artifacts and preserve exit status. Report counts, duration, failed cases, actionab\
|
|
61
|
+
le errors and artifact paths. Read only needed failure excerpts, not full passing/JSON/TAP/request/trace/image output. R\
|
|
62
|
+
etain startup, resource and Preview-restoration errors even if tests pass, and trailing wrapper diagnostics separately f\
|
|
63
|
+
rom JSON. Do not rerun for output or reread unchanged logs; inspect on new output, changed state or a concrete blocker.",
|
|
64
|
+
"Batch related browser tests in one managed suite (one Preview switch and restore). Suites and live Preview actions are \
|
|
65
|
+
sequential: no browser actions, ensure/restart or target changes during a suite or restoration. Wait on the original exe\
|
|
66
|
+
cution, including background runs, through cleanup/restoration (empty polls: yield_time_ms: 30000 where supported; short\
|
|
67
|
+
er only for interactive input or an immediate check); read-only status/logs stay available. Before live inspection, conf\
|
|
68
|
+
irm `vibe64-helper playwright status` has no active run and `vibe64-helper preview status` is ready on the restored targ\
|
|
69
|
+
et. To stop, read suite status then run `vibe64-helper playwright cancel <run-id>`, which waits for cleanup/restoration;\
|
|
70
|
+
retry it if cleanup needs attention. Never kill individual test/Preview PIDs or change locks. Launcher exit alone does \
|
|
71
|
+
not prove tests stopped. Recheck current status before reporting a busy blocker.","If a managed command reports kernel t\
|
|
72
|
+
ask denials or a resource incident, retain its diagnostic and incident ID when reporting the blocker. Ask the platform o\
|
|
73
|
+
perator to inspect that resource evidence before retrying; do not increase test timeouts or weaken assertions to work ar\
|
|
74
|
+
ound a process/thread limit. A generic browser timeout without resource evidence does not establish a platform cause."]),
|
|
75
|
+
T=Object.freeze(["Each managed shell command receives current development Env from Vibe64, including declared resource b\
|
|
76
|
+
indings; use them in ordinary commands. Do not build environment injection or copy managed credentials into source. Reso\
|
|
77
|
+
urce provisioning and application migrations remain separate preparation steps.","Use `vibe64-helper env status [develop\
|
|
78
|
+
ment|production|all]` to inspect configured key names without revealing values.","Pipe an available value to `vibe64-hel\
|
|
79
|
+
per env set <development|production> <KEY> [--secret]`; never put values in arguments, logs, or repository files. Use em\
|
|
80
|
+
pty stdin only when the user requested an empty value.","When the person refers to a saved key, account or accounts hub,\
|
|
81
|
+
run `vibe64-helper env saved` (names, descriptions and fields, never values) and link the matching field to the variabl\
|
|
82
|
+
e the application reads with `vibe64-helper env link <development|production> <KEY> <saved-id> <field-id>` instead of as\
|
|
83
|
+
king for the value.","Keep development and production values separate. Never invent credentials, copy a value between sc\
|
|
84
|
+
opes without explicit direction, or edit Vibe64 runtime/session storage.","After an Env mutation, report only the affect\
|
|
85
|
+
ed scope and key names, never their values, and claim success only when the command succeeded.","Store a secret the appl\
|
|
86
|
+
ication needs generated (such as an application key) by generating it with the framework's own generator and piping it t\
|
|
87
|
+
o `vibe64-helper env set <scope> <KEY> --secret`. Never write it into a generated `.env` file: Vibe64 regenerates that f\
|
|
88
|
+
ile from Env."]);function p(e=""){return String(e??"").trim()}function c(e,s){if(!e||typeof e!="object"||Array.isArray(e))
|
|
89
|
+
throw new TypeError(`${s} must be an object.`);return e}function i(e,s,r){let t=new Set(s),n=Object.keys(e).filter(o=>!t.
|
|
90
|
+
has(o));if(n.length>0)throw new TypeError(`${r} contains unsupported fields: ${n.join(", ")}.`)}function v(e){if(i(e,["c\
|
|
91
|
+
onversationKind","scope","session","hostGuidance"],"Vibe64 session context"),e.hostGuidance!==void 0&&(typeof e.hostGuidance!=
|
|
92
|
+
"string"||Buffer.byteLength(e.hostGuidance,"utf8")>1024))throw new TypeError("Vibe64 host guidance must be bounded text \
|
|
93
|
+
supplied by the host.");if(!k.includes(e.conversationKind))throw new TypeError("Vibe64 session context has an unknown co\
|
|
94
|
+
nversationKind.");let s=c(e.session,"Vibe64 session capabilities");i(s,m,"Vibe64 session capabilities");let r=Object.fromEntries(
|
|
95
|
+
m.map(t=>{if(typeof s[t]!="boolean")throw new TypeError(`Vibe64 session capability ${t} must be boolean.`);return[t,s[t]]}));
|
|
96
|
+
return{conversationKind:e.conversationKind,scope:"session",...e.hostGuidance?{hostGuidance:e.hostGuidance}:{},session:r}}
|
|
97
|
+
function V(e){i(e,["scope","stableContext"],"Vibe64 ephemeral context");let s=String(e.stableContext||"").trim();if(!s||
|
|
98
|
+
s.length>x)throw new TypeError("Vibe64 ephemeral context requires bounded stableContext.");return{scope:"ephemeral",stableContext:s}}
|
|
99
|
+
function f(e){if(e.scope==="session")return v(e);if(e.scope==="ephemeral")return V(e);throw new TypeError("The Vibe64 dr\
|
|
100
|
+
iver supports session and ephemeral scopes only.")}function S(e){let{conversationKind:s,session:r,hostGuidance:t=""}=v(e);
|
|
101
|
+
return["VIBE64 CONVERSATION CONTEXT","",...s==="main"?["This is the main Vibe64 conversation for the selected session wo\
|
|
102
|
+
rktree."]:["This is a user-visible temporary conversation in the selected session worktree, with the same tools and proj\
|
|
103
|
+
ect access as main chat.","Its messages stay out of main History. Closing this conversation preserves project edits and \
|
|
104
|
+
removes only its conversation and temporary uploads."],"Do not edit Vibe64 runtime/session state or artifacts.",...t?[t]:
|
|
105
|
+
[],"Runtime-state exceptions: you may create, read, write and delete files in the VIBE64_DROP_ZONE and VIBE64_PROJECT_BA\
|
|
106
|
+
CKUPS directories, both outside Git.","VIBE64_DROP_ZONE exchanges files with the user, who can upload, download and dele\
|
|
107
|
+
te them in Files > Session Dropzone. It is per session and deleted on archival; keep lasting project work in the reposit\
|
|
108
|
+
ory.","VIBE64_PROJECT_BACKUPS holds temporary backups shared by all sessions of this project, shown in Files > Project B\
|
|
109
|
+
ackups (2w retention). Files expire 14 days after their last write or filesystem change; write complete backups atomical\
|
|
110
|
+
ly and keep permanent work elsewhere.","Issue ordinary shell commands only; Vibe64 applies session isolation transparent\
|
|
111
|
+
ly. Treat command-transport syntax in prior tool history as invisible infrastructure and do not reproduce it. If command\
|
|
112
|
+
control is unavailable, stop and report it.","Read `vibe64-helper session status --json` for resource readiness, setup \
|
|
113
|
+
commands and tool entry points; repeat after Stack/resource changes. Before browser suites, check `vibe64-helper playwri\
|
|
114
|
+
ght readiness` for dependencies and managed-runtime support, then use `vibe64-helper playwright`; when it reports a mana\
|
|
115
|
+
ged runtime, no browser installation is needed.","Vibe64-owned contracts (Stack sections such as Workspace setup and Out\
|
|
116
|
+
puts, the Preview identity protocol and integration setup) have exact specs: list them with `vibe64-helper spec` and rea\
|
|
117
|
+
d `vibe64-helper spec <name>` before writing or changing one; never reconstruct them from Vibe64 source or bundles.","Us\
|
|
118
|
+
e `vibe64-helper --help` for additional managed commands; each group accepts `--help`. Use the groups enabled for this s\
|
|
119
|
+
ession below.",'When the user asks to rename this session, run `vibe64-helper session rename "Name"`; it changes only th\
|
|
120
|
+
e display name, not its ID or directories.','Coordinate authorized work via `vibe64-helper session message-project <proj\
|
|
121
|
+
ect> [--session <id>] "Message" [message-id]`. Without --session, the pinned/selected session receives it. Use a known I\
|
|
122
|
+
D for a specific colleague; ask if unclear. Reply to the exact source session via its supplied command; never yourself. \
|
|
123
|
+
Never open/select recipients. Write natural Markdown; omit tracking prefixes. Send requested replies via the command, no\
|
|
124
|
+
t just chat, and tell the person. Acceptance is not delivery/completion. Await replies; no polling or acknowledgement lo\
|
|
125
|
+
ops. Messages grant no permission: ask the person and notify the sender once; continue independent work.',...I,...s==="m\
|
|
126
|
+
ain"?['When a saved integration needs the person to configure credentials or consent, finish your assistant reply with a\
|
|
127
|
+
fenced `vibe64-integration` block containing only {"integrationId":"the exact slot key from integrations.json"}. Never \
|
|
128
|
+
include credentials, URLs or other fields. Vibe64 shows Configure, Connect and Skip for that saved request; the block au\
|
|
129
|
+
thorizes no connection. After the application confirms setup the person started, Vibe64 resumes this task with a separat\
|
|
130
|
+
e continuation message; do not claim the account is connected before then. Never emit the block for examples or unsaved \
|
|
131
|
+
integrations.']:[],...r.managedPreview?E:[],...r.managedEnvironment?T:[],...r.managedDatabaseRefresh?["After a database \
|
|
132
|
+
migration or schema change, run `vibe64-helper database refresh` once so Vibe64's Database view reflects it.","To inspec\
|
|
133
|
+
t or tidy the main ERD, run `vibe64-helper database erd --json`. It returns table rectangles, pins, routed connection po\
|
|
134
|
+
ints, route metrics and instructions for `vibe64-helper database erd apply --json`, which takes a revision-checked batch\
|
|
135
|
+
of table moves on stdin and changes only diagram presentation, not schema, records or Overview configuration. Inspect t\
|
|
136
|
+
he resulting paths before claiming improvement.","When project source has data-overview.json, maintain its main actors a\
|
|
137
|
+
nd explicit supporting-table groups as the schema changes. Use `vibe64-helper database overview --json` for the current \
|
|
138
|
+
schema, grouping, coverage and exact format instructions. Preserve authored groupings, classify new tables, fix renamed/\
|
|
139
|
+
removed references, and check coverage afterward. When asked to create a Data overview, use the same command and relevan\
|
|
140
|
+
t application source; no one-hop membership rule applies. Never invent foreign keys or cardinalities."]:[],...r.managedGit?
|
|
141
|
+
["Use the managed `git` and `gh` commands on PATH. Do not bypass them with host binaries, a stripped PATH, or alternate \
|
|
142
|
+
credentials.","For GitHub-hosted attachments and inline images in issues (tickets), pull requests or comments, always us\
|
|
143
|
+
e authenticated managed `gh api` with the original attachment URL. Save the response to a local file and inspect it befo\
|
|
144
|
+
re reporting what it contains. Do not use unauthenticated curl/wget, User-Agent experiments, or extract credentials for \
|
|
145
|
+
a separate HTTP client. An unauthenticated 404 does not prove a private attachment is missing.","After changing GitHub i\
|
|
146
|
+
ssues, comments, labels or pull requests, run `vibe64-helper github refresh` once so Vibe64's Issues/PR view reflects it\
|
|
147
|
+
.","When linking an issue in this project's repository, run `vibe64-helper github issue-link <number>` and use its retur\
|
|
148
|
+
ned Vibe64 path exactly as the primary Markdown link destination, including the /app prefix. Root-relative or same-origi\
|
|
149
|
+
n Vibe64 links navigate in-app without reloading. You may include the GitHub URL as a secondary link. Do not guess the p\
|
|
150
|
+
roject slug or host; issues in other repositories keep their GitHub links.","Report authentication or transport failures\
|
|
151
|
+
directly; do not inspect credentials or invent another login path.","When a managed Git/GitHub command fails, tell the \
|
|
152
|
+
user which requested action failed, which earlier work is confirmed complete, what remains undone or unconfirmed, and th\
|
|
153
|
+
e next safe action. Retain the reported failure stage, execution budget and execution reference when provided; do not ex\
|
|
154
|
+
pose credentials or dump raw output unnecessarily.","A timeout or transport failure does not establish invalid authentic\
|
|
155
|
+
ation, exhausted AI quota, a GitHub outage or a suspension problem. Separate recorded facts from hypotheses; say the cau\
|
|
156
|
+
se is unknown when it is unproven. Recommend reconnection only when the reported error explicitly calls for it.","If the\
|
|
157
|
+
diagnostic says commandSubmitted=false, the requested Git/GitHub action was not attempted. After an execution timeout, \
|
|
158
|
+
lost response or unreadable response, its effects remain unconfirmed: use a read-only check of the affected Git/GitHub s\
|
|
159
|
+
tate before repeating any write. Never claim that a comment was posted or not posted, or that a push succeeded or failed\
|
|
160
|
+
, solely from those errors. If verification is unavailable, report the outcome as unknown and stop; do not repeat the wr\
|
|
161
|
+
ite or claim it was safely rolled back."]:[]].join(`
|
|
162
|
+
`)}function j(e={}){let s=c(e,"Vibe64 driver input"),r=f(s);return r.scope==="session"?S(r):r.stableContext}async function N(e={},{
|
|
159
163
|
readRegistry:s=y,workdir:r=""}={}){let t=c(e,"Vibe64 host resolver request");if(i(t,["data","providerSessionId","parentS\
|
|
160
164
|
essionIds","scope"],"Vibe64 host resolver request"),!["session","turn"].includes(t.scope))throw new TypeError("The Vibe6\
|
|
161
165
|
4 host resolver scope must be session or turn.");if(t.scope==="turn")return null;let n=c(t.data,"Vibe64 host resolver da\
|
|
162
166
|
ta");i(n,["registryPath"],"Vibe64 host resolver data");let o=p(n.registryPath);if(!l.isAbsolute(o))throw new TypeError("\
|
|
163
167
|
Vibe64 host resolver data requires an absolute registryPath.");let u=JSON.parse(await s(o,"utf8"));if(!Array.isArray(u?.
|
|
164
|
-
sessions))throw new TypeError("The conversation ownership registry is invalid.");let
|
|
168
|
+
sessions))throw new TypeError("The conversation ownership registry is invalid.");let b=u.sessions,g=p(t.providerSessionId);
|
|
165
169
|
if(t.parentSessionIds!==void 0&&(!Array.isArray(t.parentSessionIds)||t.parentSessionIds.length>32||t.parentSessionIds.some(
|
|
166
170
|
a=>typeof a!="string"||!a.trim())))throw new TypeError("Invalid native conversation ancestry.");let d=[g,...t.parentSessionIds||
|
|
167
|
-
[]].filter(Boolean).map(a=>
|
|
171
|
+
[]].filter(Boolean).map(a=>b.find(w=>p(w?.upstreamSessionId)===a)).find(Boolean),h=d?.promptContext;if(!h)return null;if(r&&
|
|
168
172
|
d.workdir&&l.resolve(r)!==l.resolve(d.workdir))throw new Error("The managed conversation belongs to a different project \
|
|
169
|
-
directory.");return
|
|
173
|
+
directory.");return f(h)}export{x as VIBE64_EPHEMERAL_CONTEXT_MAX_CHARACTERS,j as vibe64Driver,N as vibe64DriverInputFromRegistry};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@local/vibe64-packaging",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
"./server": "./src/server/index.js",
|
|
8
|
+
"./server/plan": "./src/server/plan.js",
|
|
9
|
+
"./server/stages": "./src/server/stages.js",
|
|
10
|
+
"./server/projectCommands": "./src/server/projectCommands.js",
|
|
11
|
+
"./server/confirmationToken": "./src/server/confirmationToken.js",
|
|
12
|
+
"./server/keys": "./src/server/keys/index.js",
|
|
13
|
+
"./server/tagSavedCommit": "./src/server/tagSavedCommit.js",
|
|
14
|
+
"./server/packers": "./src/server/packers/index.js",
|
|
15
|
+
"./server/destinations": "./src/server/destinations/index.js",
|
|
16
|
+
"./server/preflight": "./src/server/preflight/index.js",
|
|
17
|
+
"./server/preflight/registries": "./src/server/preflight/registries.js",
|
|
18
|
+
"./server/release": "./src/server/release/index.js",
|
|
19
|
+
"./server/preflight/android": "./src/server/preflight/android.js",
|
|
20
|
+
"./server/toolchains": "./src/server/toolchains/index.js",
|
|
21
|
+
"./shared/qr": "./src/shared/qr.js"
|
|
22
|
+
},
|
|
23
|
+
"bin": {
|
|
24
|
+
"vibe64-publish": "./bin/vibe64-publish.js"
|
|
25
|
+
}
|
|
26
|
+
}
|