vibe64 0.1.48 → 0.1.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/bin/run.js +1746 -1725
  2. package/bin/server.js +75 -75
  3. package/bin/upgrade-state.js +4275 -4254
  4. package/dist/assets/GithubBrowserTabs-BwpiRS2u.js +1 -0
  5. package/dist/assets/{LocalDatabaseServer-ih_gadbx.js → LocalDatabaseServer-u_Ky7bNS.js} +1 -1
  6. package/dist/assets/{Vibe64AuthSettingsButton-BZsCIA2Z.js → Vibe64AuthSettingsButton-BCwswT1G.js} +1 -1
  7. package/dist/assets/{Vibe64DashboardShell-DFE-2tFZ.js → Vibe64DashboardShell-CWlgrR2B.js} +1 -1
  8. package/dist/assets/{Vibe64DatabaseWorkspace-BdvxuFPT.js → Vibe64DatabaseWorkspace-Dhs8_H0P.js} +1 -1
  9. package/dist/assets/Vibe64OutputControls-Dn548CZa.js +8 -0
  10. package/dist/assets/{Vibe64RepositoryWorkspace-CVN2HKCB.js → Vibe64RepositoryWorkspace-C-8S4JUF.js} +1 -1
  11. package/dist/assets/{Vibe64SessionFiles-DKo5wd8-.js → Vibe64SessionFiles-Cx6J7DDN.js} +1 -1
  12. package/dist/assets/{Vibe64UiStoryboardView-BYqVdBAt.js → Vibe64UiStoryboardView-DHyhJiWS.js} +1 -1
  13. package/dist/assets/{Vibe64UnavailableSessions-CQjgoaS0.js → Vibe64UnavailableSessions-Da4RxIhA.js} +1 -1
  14. package/dist/assets/{_sessionId_-ByUkrRd7.js → _sessionId_-DCpgDPSI.js} +1 -1
  15. package/dist/assets/_slug_-BbEWp01a.js +25 -0
  16. package/dist/assets/{_slug_-B16mTWjj.css → _slug_-DerKOisL.css} +1 -1
  17. package/dist/assets/{access-CWZMu-ND.js → access-D4di2sCr.js} +1 -1
  18. package/dist/assets/{app-D_itm2S5.js → app-Adr9Iz8p.js} +1 -1
  19. package/dist/assets/{changes-BYuFfnEm.js → changes-3Dd1O8Lu.js} +1 -1
  20. package/dist/assets/{client-CP2EwnrY.js → client-BAXHGUOC.js} +1 -1
  21. package/dist/assets/{client-B88Jggew.js → client-CCZIu6yc.js} +1 -1
  22. package/dist/assets/{conversation-DL4AODd9.js → conversation-ErAO1CmH.js} +1 -1
  23. package/dist/assets/{dashboard-R4qgYv8O.js → dashboard-0tCzDYCX.js} +1 -1
  24. package/dist/assets/{english-definitions-CdIGswXU.js → english-definitions-DeiQ-jTT.js} +1 -1
  25. package/dist/assets/env-DsyQ2MFX.js +1 -0
  26. package/dist/assets/{health-Ut9eZrbK.js → health-DyTXU-nb.js} +1 -1
  27. package/dist/assets/{history-BrmvkGgi.js → history-BXGAdPMI.js} +1 -1
  28. package/dist/assets/{incoming-CicEs40v.js → incoming-yajkdGBY.js} +1 -1
  29. package/dist/assets/{index-DZgCwvFD.js → index-CGz4Yow6.js} +4 -4
  30. package/dist/assets/{integrations-QHeHC-C9.js → integrations-BMrXET36.js} +1 -1
  31. package/dist/assets/{issues-Ds7iAQFQ.js → issues-kc1XBZCK.js} +1 -1
  32. package/dist/assets/{learning-Dq0xbg3x.js → learning-CIE5ghYv.js} +1 -1
  33. package/dist/assets/publish-DTh6amqi.js +3 -0
  34. package/dist/assets/{pull-requests-DHLK83qZ.js → pull-requests-CbfGSSIh.js} +1 -1
  35. package/dist/assets/{repository-DWw1VFIQ.js → repository-BstMh-bG.js} +1 -1
  36. package/dist/assets/settings-Bf8C6dls.js +1 -0
  37. package/dist/assets/useArchivedVibe64Sessions-DIOpfUxD.js +1 -0
  38. package/dist/assets/{useCommand-DhwB5k1w.js → useCommand-CVuya6vG.js} +1 -1
  39. package/dist/assets/{useEndpointResource-tVvsJvd4.js → useEndpointResource-7-YDfAxX.js} +1 -1
  40. package/dist/assets/{useUiFeedback-DLUToc5y.js → useUiFeedback-Bd3rao6E.js} +1 -1
  41. package/dist/assets/useVibe64ConversationLog-ChJOU2SD.js +1 -0
  42. package/dist/assets/{useVibe64DatabaseTools-Cac_aZnv.js → useVibe64DatabaseTools-DKV-TeNJ.js} +1 -1
  43. package/dist/assets/useVibe64SessionData-BkIHUrP5.js +1 -0
  44. package/dist/assets/useVibe64SessionSelection-N8wX5oqo.js +1 -0
  45. package/dist/assets/{useVibe64SystemGraph-idV9zXa9.js → useVibe64SystemGraph-Db_eD-X8.js} +1 -1
  46. package/dist/assets/vibe64RepositoryRealtime-CHT4-6VN.js +1 -0
  47. package/dist/assets/vibe64SessionFocus-CS6Ex53G.js +1 -0
  48. package/dist/assets/vibe64SessionFocus-CSm4YJQD.css +1 -0
  49. package/dist/assets/vibe64SessionRequestConfig-xIx-5jxQ.js +1 -0
  50. package/dist/index.html +10 -9
  51. package/docs/colleague-usage/ai-accounts.md +6 -2
  52. package/docs/colleague-usage/ai-balance-and-allowance.md +15 -2
  53. package/docs/colleague-usage/coding-agent-failures.md +2 -1
  54. package/docs/colleague-usage/coding-agent-goals.md +8 -3
  55. package/docs/colleague-usage/coding-agents.md +16 -0
  56. package/docs/colleague-usage/github-work.md +14 -0
  57. package/docs/colleague-usage/project-setup.md +6 -3
  58. package/docs/colleague-usage/running-vibe64-on-your-computer.md +3 -1
  59. package/docs/colleague-usage/sessions.md +35 -7
  60. package/docs/colleague-usage/starter-apps.md +3 -0
  61. package/docs/colleague-usage/temporary-chat-context.md +2 -1
  62. package/docs/colleague-usage/temporary-chats.md +17 -5
  63. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  64. package/node_modules/@jskit-ai/assistant-runtime/README.md +2 -1
  65. package/node_modules/@jskit-ai/assistant-runtime/locales/en.json +2 -1
  66. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  67. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  68. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +34 -34
  69. package/node_modules/@local/vibe64-execution/src/server/gitTurnCheckpointCommand.js +1327 -0
  70. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +120 -120
  71. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +143 -143
  72. package/node_modules/@local/vibe64-sessions/package.json +2 -1
  73. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1385 -1362
  74. package/package.json +5 -5
  75. package/server.bundle.mjs +38576 -38459
  76. package/dist/assets/GithubBrowserTabs-_l6htLOV.js +0 -1
  77. package/dist/assets/Vibe64OutputControls-DsCbasR0.js +0 -8
  78. package/dist/assets/_slug_-hep_be7Z.js +0 -24
  79. package/dist/assets/env-DtkytCtq.js +0 -1
  80. package/dist/assets/publish-eErG67LW.js +0 -3
  81. package/dist/assets/settings-QkwnoNn3.js +0 -1
  82. package/dist/assets/useArchivedVibe64Sessions-Biy_4sxD.js +0 -1
  83. package/dist/assets/useVibe64ConversationLog-jM3KOvN7.js +0 -1
  84. package/dist/assets/useVibe64SessionData-FGnNvFfK.js +0 -1
  85. package/dist/assets/useVibe64SessionSelection-Bgsif-tm.js +0 -1
  86. package/dist/assets/vibe64RepositoryRealtime-C-J0I5jY.js +0 -1
  87. package/dist/assets/vibe64SessionFocus-CDIB5Gpr.js +0 -1
  88. package/dist/assets/vibe64SessionFocus-DSW5Irm6.css +0 -1
@@ -2,7 +2,7 @@
2
2
  import { createRequire as __vibe64CreateRequire } from 'node:module';const require=__vibe64CreateRequire(import.meta.url);
3
3
  import{spawn as Ye,spawnSync as I}from"node:child_process";import{chmodSync as Je,chownSync as xe,closeSync as Ze,existsSync as T,
4
4
  lstatSync as fe,mkdirSync as _e,openSync as Qe,readFileSync as h,readSync as et,realpathSync as te,renameSync as Ne,rmSync as Te,
5
- unlinkSync as G,writeFileSync as oe}from"node:fs";import u from"node:path";import{createConnection as tt}from"node:net";
5
+ unlinkSync as L,writeFileSync as oe}from"node:fs";import u from"node:path";import{createConnection as tt}from"node:net";
6
6
  import w from"node:process";var Ie=1024*1024,rt=64*1024,nt=10,ot=15e3,it="vibe64.exec-helper.payload",st=1,at=new Set(["\
7
7
  account-auth-terminal","account-status","codex-app-server","create-system-user","deployment-service","enable-system-user",
8
8
  "github-api-command","github-toolchain","github-workflow-command","health-status","managed-execution","managed-service",
@@ -23,7 +23,7 @@ ft=new Set(["assistant","browser","control","job","preview","service","terminal"
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)}
25
25
  `),w.exit(2)});async function ht(){if(w.argv[2]==="run-managed"){await bt(w.argv[3]||"");return}if(w.argv[2]!=="execute")
26
- throw new Error("Usage: vibe64-exec-helper execute [payload-json-file]");let e=Jt(w.argv[3]||"");Lt(e);let t=String(e.operation||
26
+ throw new Error("Usage: vibe64-exec-helper execute [payload-json-file]");let e=Jt(w.argv[3]||"");Gt(e);let t=String(e.operation||
27
27
  "").trim();if(!at.has(t))throw new Error("Vibe64 exec helper rejected an unknown operation.");if(t==="deployment-service"){
28
28
  Ht(e);return}if(t==="managed-service"){Kt(e);return}if(t==="managed-execution"){St(e,w.argv[3]||"");return}let r=N(e.username);
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.
@@ -35,7 +35,7 @@ error)throw p.error;w.exit(typeof p.status=="number"?p.status:1)}function Et(e,t
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(
37
37
  O)}
38
- `),O.ok!==!0&&(w.exitCode=1);return}let o=W(e.executionId),i=De(o,r);if(n==="inspect"){Pt(i,o,r);return}if(n==="stop"){Gt(
38
+ `),O.ok!==!0&&(w.exitCode=1);return}let o=W(e.executionId),i=De(o,r);if(n==="inspect"){Pt(i,o,r);return}if(n==="stop"){Lt(
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),
@@ -61,25 +61,25 @@ ype=exec",`--slice=${k}`,`--property=Description=Vibe64 ${a} execution`,`--prope
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\
64
- ryMax=${D}`,`--property=TasksMax=${V}`,"--property=TimeoutStopSec=10s",...s==="capture"?["--wait","--pipe"]:[],...s==="p\
65
- ty"?["--wait","--pty"]:[],Xe,"run-managed",Z],L=I("systemd-run",qe,{stdio:"inherit"});if((s!=="detached"||L.error||L.status!==
66
- 0)&&Te(J,{force:!0,recursive:!0}),L.error)throw L.error;w.exit(typeof L.status=="number"?L.status:1)}function vt(e="",t={}){
67
- let r=String(e||"").trim();if(!r)return;let n=u.resolve(r),o=u.join(Y(t.username),"managed-execution-payloads");if(C(o,n).
68
- length!==1)throw new Error("Vibe64 exec helper rejected an unsafe managed execution payload path.");G(n)}async function bt(e=""){
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
- n?.schemaVersion!==1)throw new Error("Vibe64 managed execution runner rejected an invalid payload.");let o=String(n.command||
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,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
- String):[],{cwd:String(n.cwd||"/"),detached:!!s,env:n.releaseEnvironment===!0?be({...w.env,...n.env},{username:n.env.USER,
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
- ipe","inherit","inherit"]:"inherit"}),n.inputPresent===!0&&a.stdin.end(Buffer.from(String(n.inputBase64||""),"base64")),
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
- exitCode=f}finally{c!==null&&clearTimeout(c),s?.off("close",p),s?.destroy()}}function Re(e="",t=""){let r=String(e||"");
82
- if(t!=="service"){if(r)throw new Error("Vibe64 exec helper rejected a controller lease on a finite execution.");return""}
64
+ ryMax=${D}`,`--property=TasksMax=${V}`,"--property=TimeoutStopSec=10s",...s==="capture"?["--property=LogLevelMax=notice",
65
+ "--wait","--pipe"]:[],...s==="pty"?["--wait","--pty"]:[],Xe,"run-managed",Z],G=I("systemd-run",qe,{stdio:"inherit"});if((s!==
66
+ "detached"||G.error||G.status!==0)&&Te(J,{force:!0,recursive:!0}),G.error)throw G.error;w.exit(typeof G.status=="number"?
67
+ G.status:1)}function vt(e="",t={}){let r=String(e||"").trim();if(!r)return;let n=u.resolve(r),o=u.join(Y(t.username),"ma\
68
+ naged-execution-payloads");if(C(o,n).length!==1)throw new Error("Vibe64 exec helper rejected an unsafe managed execution\
69
+ payload path.");L(n)}async function bt(e=""){let t=u.resolve(String(e||"")),r=h(t,"utf8");L(t);let n=JSON.parse(r);if(n?.
70
+ schema!=="vibe64.managed-execution.command"||n?.schemaVersion!==1)throw new Error("Vibe64 managed execution runner rejec\
71
+ ted an invalid payload.");let o=String(n.command||"").trim();if(!o||/[\r\n]/u.test(o))throw new Error("Vibe64 managed ex\
72
+ ecution runner rejected an invalid command.");let i=Re(n.controllerLeaseName,n.controllerLeaseName?"service":""),s=i?await xt(
73
+ i):null;w.umask(7);let a=null,c=null,l=!1,p=()=>{l=!0,a&&c===null&&(c=Me(a))};s?.once("close",p);let m=new Date().toISOString();
74
+ try{a=Ye(o,Array.isArray(n.args)?n.args.map(String):[],{cwd:String(n.cwd||"/"),detached:!!s,env:n.releaseEnvironment===!0?
75
+ be({...w.env,...n.env},{username:n.env.USER,home:n.env.HOME},n.env.USER):n.env&&typeof n.env=="object"&&!Array.isArray(n.
76
+ env)?n.env:{},stdio:n.inputPresent===!0?["pipe","inherit","inherit"]:"inherit"}),n.inputPresent===!0&&a.stdin.end(Buffer.
77
+ from(String(n.inputBase64||""),"base64")),l&&(c=Me(a));let d=await new Promise((g,x)=>{let M="";a.once("exit",()=>{M=new Date().
78
+ toISOString()}),a.once("error",x),a.once("close",(y,D)=>g({signal:D,status:y,exitObservedAt:M}))}),f=typeof d.status=="n\
79
+ umber"?d.status:1;Ct(u.dirname(t),{...Dt(),executionId:W(n.executionId),startedAt:m,exitObservedAt:d.exitObservedAt,execMainCode:d.
80
+ signal?"killed":"exited",execMainStatus:d.signal||String(f),result:d.signal?"signal":f===0?"success":"exit-code",signal:String(
81
+ d.signal||"")}),w.exitCode=f}finally{c!==null&&clearTimeout(c),s?.off("close",p),s?.destroy()}}function Re(e="",t=""){let r=String(
82
+ e||"");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\
84
84
  id managed service controller lease.");return r}function xt(e=""){return new Promise((t,r)=>{let n=tt({path:e}),o=setTimeout(
85
85
  ()=>{n.destroy(),r(new Error("Vibe64 managed service could not attach to its controller lease."))},3e3);o.unref?.(),n.once(
@@ -103,7 +103,7 @@ function At(e,t){let r=ye(e);for(let i of["/run/vibe64-workflows",u.dirname(r)])
103
103
  "EEXIST")throw a}let s=fe(i);if(!s.isDirectory()||s.isSymbolicLink()||s.uid!==0||(s.mode&63)!==0)throw new Error("Unsafe\
104
104
  managed workflow result directory.")}let n=`${r}.tmp-${w.pid}`,o=Qe(n,"wx",384);try{try{oe(o,`${JSON.stringify({...t,schema:"\
105
105
  vibe64.managed-workflow.result.v1"})}
106
- `)}finally{Ze(o)}Ne(n,r)}catch(i){try{G(n)}catch(s){if(s.code!=="ENOENT")throw new AggregateError([i,s],"Workflow receip\
106
+ `)}finally{Ze(o)}Ne(n,r)}catch(i){try{L(n)}catch(s){if(s.code!=="ENOENT")throw new AggregateError([i,s],"Workflow receip\
107
107
  t write and cleanup failed.")}throw i}}function P(e){let t=A("systemctl",["show",e.unitName,"--no-pager","--property=Loa\
108
108
  dState,ActiveState,ControlGroup,MemoryMax,TasksMax"]),r=Object.fromEntries(String(t.stdout||"").trim().split(`
109
109
  `).map(s=>{let a=s.indexOf("=");return[s.slice(0,a),s.slice(a+1)]})),n=String(r.ControlGroup||"");if(n&&(u.posix.basename(
@@ -123,7 +123,7 @@ exec(s)?.[1]),oomCount:n.oom??null,oomKillCount:n.oom_kill??null,limitHitCount:n
123
123
  t("pids.current")),peakScope:"workflow-lifetime"}}function Ot(e,t){let r=Ce(e.workflow,t),n=String(e.action||"");if(n===
124
124
  "workflow-inspect")return{ok:!0,...P(r)};if(n==="workflow-grow"||n==="workflow-limits")return _t(e,r,t);if(n==="workflow\
125
125
  -forget"){let o=P(r);if(o.scopeEmpty!==!0||o.activeState!=="inactive")throw new Error("Only a completed workflow receipt\
126
- can be acknowledged.");try{G(ye(r))}catch(i){if(i.code!=="ENOENT")throw i}return{ok:!0,id:r.id}}if(n==="workflow-create"){
126
+ can be acknowledged.");try{L(ye(r))}catch(i){if(i.code!=="ENOENT")throw i}return{ok:!0,id:r.id}}if(n==="workflow-create"){
127
127
  let o=U(e.memoryMaxBytes,F,we,"workflow memory limit"),i=U(e.tasksMax,de,pe,"workflow task limit"),s=E(S("systemctl",["s\
128
128
  how",he(t),"--property=MemoryMax","--value"]));if(s===null||o>s)throw new Error("Vibe64 exec helper rejected a workflow \
129
129
  above its proven work-slice memory limit.");let a=P(r);if(a.finishedAt)throw new Error("A completed workflow identity ca\
@@ -246,13 +246,13 @@ _NONE"&&g)V="host";else if(d==="CONSTRAINT_MEMCG"&&f&&(x===f||x.startsWith(`${f}
246
246
  .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\
247
247
  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":
248
248
  "ancestor"}else return null;let H=f||"";if(a&&a.cgroup!==H)return null;(!a||l>Date.parse(a.recordedAt))&&(a={source:"ker\
249
- 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
+ nel-journal",scope:V,cgroup:H,recordedAt:new Date(l).toISOString()})}return a}function Lt(e="",t="",r={}){let n=K(e,t,r);
250
250
  n.scopeEmpty||A("systemctl",["stop",e]);let o=Date.now()+gt,i=K(e,t,r),s=new Int32Array(new SharedArrayBuffer(4));for(;!i.
251
251
  scopeEmpty&&Date.now()<o;)Atomics.wait(s,0,0,25),i=K(e,t,r);i.scopeEmpty||(A("systemctl",["kill","--kill-who=all","--sig\
252
252
  nal=SIGKILL",e]),A("systemctl",["stop",e]),i=K(e,t,r)),i.scopeEmpty&&(Te(Ee(r,t),{force:!0,recursive:!0}),A("systemctl",
253
253
  ["reset-failed",e])),w.stdout.write(`${JSON.stringify({executionId:t,ok:i.scopeEmpty,scopeEmpty:i.scopeEmpty,stopped:n.scopeEmpty===
254
254
  !1,...i})}
255
- `),i.scopeEmpty||w.exit(1)}function Lt(e={}){if(e?.schema!==it||e?.schemaVersion!==st)throw new Error("Vibe64 exec helpe\
255
+ `),i.scopeEmpty||w.exit(1)}function Gt(e={}){if(e?.schema!==it||e?.schemaVersion!==st)throw new Error("Vibe64 exec helpe\
256
256
  r rejected a non-normalized execution payload.")}function Wt(e="",t={},r=""){Se(r),q(),ae(j),e==="create-system-user"?tr(
257
257
  r,String(t.password||"")):X(r),rr(r,j)}function Ht(e={}){let t=q();ae(j);let r=String(e.action||"").trim(),n=ce(e.unitName);
258
258
  if(r==="inspect"){zt(n);return}if(r==="remove"){Yt(n);return}if(r!=="install-start")throw new Error("Vibe64 exec helper \
@@ -266,7 +266,7 @@ ager","--output=cat","--lines=80"]),n=String(r.stdout||r.stderr||"").trim();w.st
266
266
  `)+`
267
267
  `)}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(
268
268
  "Vibe64 exec helper rejected an unknown managed service action.");let o=Oe(e.workingDirectory,t,"workingDirectory"),i=Oe(
269
- 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
+ e.startScript,t,"startScript"),s=Ge(e.processModel),a=s==="forking"?Le(e.pidFile,t):"",c=ir(n,t),l=ar({owner:t,pidFile:a,
270
270
  processModel:s,startScript:i,unitName:n,workingDirectory:o});Ft({owner:t,pidFile:a,unitName:n}),Pe({activation:"start",unit:l,
271
271
  unitName:n,unitPath:c})}function Ft({owner:e={},pidFile:t="",unitName:r=""}={}){if(!t||!T(t))return;let n=String(h(t,"ut\
272
272
  f8")||"").trim();if(!/^[1-9][0-9]*$/u.test(n))throw new Error("Vibe64 managed service PID file is invalid.");let o=Number(
@@ -275,16 +275,16 @@ let i=Xt(o);if(i===null){Q(t,n);return}if(i!==e.uid)throw new Error("Vibe64 mana
275
275
  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,
276
276
  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\
277
277
  ibe64 managed service process did not stop cleanly during ownership transfer.");Q(t,n)}function Q(e="",t=""){T(e)&&String(
278
- 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
+ h(e,"utf8")||"").trim()===t&&L(e)}function me(e=0){try{return w.kill(e,0),!0}catch(t){if(t?.code==="ESRCH")return!1;throw t}}
279
279
  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(
280
280
  t||"").match(/^Uid:\s+([0-9]+)/mu),n=Number(r?.[1]);if(!Number.isSafeInteger(n))throw new Error("Vibe64 managed service \
281
281
  process UID is unavailable.");return n}function qt(e=0,t=""){let r=`/${t}`,n="";try{n=h(`/proc/${e}/cgroup`,"utf8")}catch(o){
282
282
  if(o?.code==="ENOENT")return!1;throw o}return String(n||"").split(`
283
283
  `).some(o=>o.trim().endsWith(r))}function Pe({activation:e="start",unit:t="",unitName:r="",unitPath:n=""}={}){if(e!=="st\
284
284
  art"&&e!=="restart")throw new Error("Vibe64 exec helper rejected an unsupported systemd activation.");let o=`${n}.tmp-${w.
285
- pid}`;oe(o,t,{mode:420});try{S("mv",[o,n])}catch(i){try{G(o)}catch{}throw i}S("systemctl",["daemon-reload"]),S("systemct\
285
+ pid}`;oe(o,t,{mode:420});try{S("mv",[o,n])}catch(i){try{L(o)}catch{}throw i}S("systemctl",["daemon-reload"]),S("systemct\
286
286
  l",["enable",r]),A("systemctl",["reset-failed",r]);try{S("systemctl",[e,r])}catch(i){throw A("systemctl",["stop",r]),i}}
287
- function Yt(e=""){ce(e),A("systemctl",["stop",e]),A("systemctl",["disable",e]),A("systemctl",["reset-failed",e]);try{G(We(
287
+ function Yt(e=""){ce(e),A("systemctl",["stop",e]),A("systemctl",["disable",e]),A("systemctl",["reset-failed",e]);try{L(We(
288
288
  e))}catch(t){if(t?.code!=="ENOENT")throw t}S("systemctl",["daemon-reload"])}function Jt(e=""){let t=e?h(u.resolve(e),"ut\
289
289
  f8"):Zt();if(Buffer.byteLength(t,"utf8")>Ie)throw new Error("Vibe64 exec helper payload is too large.");let r=JSON.parse(
290
290
  t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Vibe64 exec helper payload must be a JSON object.");return r}
@@ -311,9 +311,9 @@ hpasswd",{encoding:"utf8",input:`${e}:${t}
311
311
  S("usermod",["-a","-G",t,e])}function S(e="",t=[]){let r=I(e,t,{encoding:"utf8"});if(r.status!==0)throw new Error(String(
312
312
  r.stderr||r.stdout||`${e} failed.`).trim());return String(r.stdout||"").trim()}function A(e="",t=[]){return I(e,t,{encoding:"\
313
313
  utf8"})}function ee(e="",t={},r="path"){let n=nr(e,t);if(!T(n))throw new Error(`Vibe64 deployment service ${r} does not \
314
- exist.`);return n}function Oe(e="",t={},r="path"){let n=Ge(e,t);if(!T(n))throw new Error(`Vibe64 managed service ${r} do\
314
+ exist.`);return n}function Oe(e="",t={},r="path"){let n=Le(e,t);if(!T(n))throw new Error(`Vibe64 managed service ${r} do\
315
315
  es not exist.`);return n}function Ve(e={}){let t=N(e.username),r=$(t);if(!r)throw new Error("Vibe64 exec helper could no\
316
- t resolve the managed service workspace.");return u.join("/var/lib/vibe64",r,"services")}function Ge(e="",t={}){let r=String(
316
+ t resolve the managed service workspace.");return u.join("/var/lib/vibe64",r,"services")}function Le(e="",t={}){let r=String(
317
317
  e||"").trim();if(!r)throw new Error("Vibe64 exec helper rejected an empty managed service path.");let n=b(r,{allowMissingLeaf:!0});
318
318
  if(C(b(Ve(t)),n).length>0)return n;throw new Error("Vibe64 exec helper rejected a managed service path outside the works\
319
319
  pace service root.")}function nr(e="",t={}){let r=String(e||"").trim();if(!r)throw new Error("Vibe64 exec helper rejecte\
@@ -328,7 +328,7 @@ release-")||!t.endsWith(".service")||!/^[A-Za-z0-9_.@:-]+$/u.test(t)||t.includes
328
328
  "Vibe64 exec helper rejected an unsafe deployment service unit name.");return t}function ve(e="",t={}){let r=String(e||"").
329
329
  trim(),n=u.basename(u.dirname(Ve(t)));if(!r.startsWith(`vibe64-managed-${n}-`)||!r.endsWith(".service")||!/^[A-Za-z0-9_.@:-]+$/u.
330
330
  test(r)||r.includes("/")||r.includes(".."))throw new Error("Vibe64 exec helper rejected an unsafe managed service unit n\
331
- ame.");return r}function Le(e=""){let t=String(e||"").trim();if(t!=="forking"&&t!=="simple")throw new Error("Vibe64 exec\
331
+ ame.");return r}function Ge(e=""){let t=String(e||"").trim();if(t!=="forking"&&t!=="simple")throw new Error("Vibe64 exec\
332
332
  helper rejected an unsupported managed service process model.");return t}function We(e=""){return u.join("/etc/systemd/\
333
333
  system",ce(e))}function ir(e="",t={}){return u.join("/etc/systemd/system",ve(e,t))}function He(e={}){return[`User=${_(e.
334
334
  username)}`,`Group=${j}`,"SupplementaryGroups=nix-users","UMask=0007"]}function ze(e={}){return[`Slice=vibe64-${$(N(e.username))}\
@@ -340,7 +340,7 @@ let s=Array.isArray(r)?r:[];return["[Unit]",`Description=Vibe64 release service
340
340
  `Environment=PATH=${_(ie)}`,`Environment=TMPDIR=${_(Y(t.username))}`,`ExecStart=${_(n)}`,"Restart=always","RestartSec=3",
341
341
  "KillSignal=SIGTERM","TimeoutStopSec=30","","[Install]","WantedBy=multi-user.target",""].join(`
342
342
  `)}function ar({owner:e={},pidFile:t="",processModel:r="simple",startScript:n="",unitName:o="",workingDirectory:i=""}={}){
343
- let s=Le(r);return["[Unit]",`Description=Vibe64 managed service ${o}`,"After=network-online.target","Wants=network-onlin\
343
+ let s=Ge(r);return["[Unit]",`Description=Vibe64 managed service ${o}`,"After=network-online.target","Wants=network-onlin\
344
344
  e.target","","[Service]",`Type=${s}`,...He(e),...ze(e),`WorkingDirectory=${_(i)}`,`Environment=PATH=${_(ie)}`,`Environme\
345
345
  nt=TMPDIR=${_(Y(e.username))}`,`ExecStart=${_(n)}`,...s==="forking"?[`PIDFile=${_(t)}`]:[],"Restart=on-failure","Restart\
346
346
  Sec=3","TimeoutStartSec=90","TimeoutStopSec=30","","[Install]","WantedBy=multi-user.target",""].join(`