nterminal 1.2.54 → 1.2.56

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 (49) hide show
  1. package/README.md +4 -1
  2. package/bin/nterminal.js +4 -0
  3. package/dist/client/assets/MarkdownPreview-Bk02CJkU.js +1 -0
  4. package/dist/client/assets/{TranscriptMarkdownBody-DJbLRp61.js → TranscriptMarkdownBody-CDKYjgIZ.js} +1 -1
  5. package/dist/client/assets/index-BBVLYVi6.js +54 -0
  6. package/dist/client/assets/index-BIczcK4f.css +1 -0
  7. package/dist/client/assets/{index-Bj8e-m7A.js → index-fsgQPmdV.js} +1 -1
  8. package/dist/client/index.html +2 -2
  9. package/dist/scripts/distcall.js +436 -0
  10. package/dist/scripts/distcall.js.map +1 -0
  11. package/dist/server/agent/agentRoutes.js +124 -2
  12. package/dist/server/agent/agentRoutes.js.map +1 -1
  13. package/dist/server/distcall/envelope.d.ts +6 -0
  14. package/dist/server/distcall/envelope.js +56 -0
  15. package/dist/server/distcall/envelope.js.map +1 -0
  16. package/dist/server/distcall/executor.d.ts +23 -0
  17. package/dist/server/distcall/executor.js +316 -0
  18. package/dist/server/distcall/executor.js.map +1 -0
  19. package/dist/server/files/rootToken.d.ts +4 -2
  20. package/dist/server/files/rootToken.js +9 -4
  21. package/dist/server/files/rootToken.js.map +1 -1
  22. package/dist/server/http.d.ts +2 -1
  23. package/dist/server/http.js +2 -0
  24. package/dist/server/http.js.map +1 -1
  25. package/dist/server/routes/agentManagementRoutes.js +14 -2
  26. package/dist/server/routes/agentManagementRoutes.js.map +1 -1
  27. package/dist/server/routes/distributedCallRoutes.d.ts +9 -0
  28. package/dist/server/routes/distributedCallRoutes.js +305 -0
  29. package/dist/server/routes/distributedCallRoutes.js.map +1 -0
  30. package/dist/server/routes/fileRoutes.js +32 -3
  31. package/dist/server/routes/fileRoutes.js.map +1 -1
  32. package/dist/server/routes/terminalLayoutRoutes.js +12 -8
  33. package/dist/server/routes/terminalLayoutRoutes.js.map +1 -1
  34. package/dist/server/storage/fileStore.d.ts +8 -1
  35. package/dist/server/storage/fileStore.js +49 -2
  36. package/dist/server/storage/fileStore.js.map +1 -1
  37. package/dist/shared/layoutState.d.ts +3 -0
  38. package/dist/shared/layoutState.js +49 -0
  39. package/dist/shared/layoutState.js.map +1 -1
  40. package/dist/shared/protocol.d.ts +74 -2
  41. package/dist/shared/protocol.js.map +1 -1
  42. package/dist/shared/types.d.ts +2 -0
  43. package/docs/features.md +3 -2
  44. package/docs/operations.md +1 -1
  45. package/package.json +1 -1
  46. package/dist/client/assets/MarkdownPreview-DvW1iSJP.js +0 -1
  47. package/dist/client/assets/index-BEv9DwQ7.css +0 -1
  48. package/dist/client/assets/index-DaKyipYG.js +0 -54
  49. package/docs/assets/nterminal-workspace.png +0 -0
package/README.md CHANGED
@@ -53,9 +53,10 @@ Run onboarding as the account that should own NTerminal. Do not use `sudo ntermi
53
53
  - **Multi-server workspace**: manage the main server and all secondary servers from one browser UI, with separate tabs, panes, files, and layout state per server.
54
54
  - **Persistent real shells**: run real host PTYs with tabs and split panes, soft-detach terminals without killing them, and keep shells alive across NTerminal restarts when `tmux` is available.
55
55
  - **Codex / Claude friendly history**: scroll terminal output without driving TUI prompt history, load older tmux scrollback on demand, and open supported JSONL transcript history for Codex and Claude sessions.
56
- - **Secure personal access**: password plus TOTP, single active browser session, IP-bound sessions, trusted devices/networks, and origin checks around terminal/file mutation routes.
56
+ - **Secure personal access**: password plus TOTP, trusted devices/networks, IP-aware session checks, and origin checks around terminal/file mutation routes.
57
57
  - **Files and uploads**: browse the selected pane's cwd, view/edit text and Markdown, preview browser-supported files, and drag files or folders into the active terminal directory.
58
58
  - **Guided npm deployment**: install with npm, run `nterminal onboarding`, keep runtime state under `~/.nterminal`, and update servers from the UI.
59
+ - **Optional distributed calls**: fan out trusted HTTP tasks across enabled servers from the CLI, with per-worker pacing and encrypted main-to-worker task payloads.
59
60
 
60
61
  ## Feature Details
61
62
 
@@ -67,6 +68,7 @@ Run onboarding as the account that should own NTerminal. Do not use `sudo ntermi
67
68
  - High resource usage is highlighted directly in the server list.
68
69
  - Fleet updates check npm registry versions, update secondary servers first, and update the main server last.
69
70
  - Hourly update checks badge Settings and Updates when a newer package is available.
71
+ - Distributed calls can be enabled per server for programmatic batch work; private network targets stay blocked unless both Settings and the CLI run opt in.
70
72
 
71
73
  ### Terminal Workspace
72
74
 
@@ -124,6 +126,7 @@ nterminal onboarding
124
126
  nterminal status
125
127
  nterminal logs
126
128
  nterminal restart
129
+ nterminal distcall run requests.ndjson
127
130
  nterminal uninstall --force
128
131
  ```
129
132
 
package/bin/nterminal.js CHANGED
@@ -88,6 +88,7 @@ Commands:
88
88
  restart-after-update Restart after replacing the npm package.
89
89
  build Verify the bundled runtime exists.
90
90
  deploy Restart the installed package.
91
+ distcall run [file] Run distributed HTTP call tasks through enabled workers.
91
92
  clean --force Remove local runtime state.
92
93
  uninstall --force Stop and remove local runtime state before npm uninstall.
93
94
  logs [N] Show recent logs.
@@ -107,6 +108,9 @@ switch (command) {
107
108
  case 'generate:secrets':
108
109
  runScript('generate-secrets', args);
109
110
  break;
111
+ case 'distcall':
112
+ runScript('distcall', args);
113
+ break;
110
114
  case 'ctl':
111
115
  runCtl(args);
112
116
  break;
@@ -0,0 +1 @@
1
+ import{j as a}from"./index-BBVLYVi6.js";import{M as e,r as o}from"./index-fsgQPmdV.js";function s({content:r}){return a.jsx(e,{remarkPlugins:[o],children:r})}export{s as default};
@@ -1,3 +1,3 @@
1
- import{j as o,R as a}from"./index-DaKyipYG.js";import{M as u,r as f}from"./index-Bj8e-m7A.js";function k({text:r,searchQuery:t}){return o.jsx(u,{components:p(t),remarkPlugins:[f],children:j(r)})}function p(r){return{a({node:t,children:n,...e}){return o.jsx("a",{...e,target:"_blank",rel:"noreferrer",children:d(n,r)})},blockquote({node:t,children:n,...e}){return o.jsx("blockquote",{...e,children:d(n,r)})},code({node:t,children:n,...e}){return o.jsx("code",{...e,children:d(n,r)})},em({node:t,children:n,...e}){return o.jsx("em",{...e,children:d(n,r)})},h1({node:t,children:n,...e}){return o.jsx("h1",{...e,children:d(n,r)})},h2({node:t,children:n,...e}){return o.jsx("h2",{...e,children:d(n,r)})},h3({node:t,children:n,...e}){return o.jsx("h3",{...e,children:d(n,r)})},h4({node:t,children:n,...e}){return o.jsx("h4",{...e,children:d(n,r)})},h5({node:t,children:n,...e}){return o.jsx("h5",{...e,children:d(n,r)})},h6({node:t,children:n,...e}){return o.jsx("h6",{...e,children:d(n,r)})},li({node:t,children:n,...e}){return o.jsx("li",{...e,children:d(n,r)})},p({node:t,children:n,...e}){return o.jsx("p",{...e,children:d(n,r)})},pre({node:t,children:n,...e}){return o.jsx("pre",{...e,className:"transcript-markdown-code",children:n})},strong({node:t,children:n,...e}){return o.jsx("strong",{...e,children:d(n,r)})},td({node:t,children:n,...e}){return o.jsx("td",{...e,children:d(n,r)})},th({node:t,children:n,...e}){return o.jsx("th",{...e,children:d(n,r)})}}}function d(r,t){return a.Children.map(r,n=>typeof n=="string"?m(n,t):n)}function m(r,t){const n=t.trim();if(!n)return r||" ";const e=r.toLowerCase(),s=n.toLowerCase(),c=[];let l=0,i=e.indexOf(s);for(;i!==-1;){i>l&&c.push(r.slice(l,i));const h=i+n.length;c.push(o.jsx("mark",{className:"transcript-search-hit",children:r.slice(i,h)},`${i}-${h}`)),l=h,i=e.indexOf(s,l)}return l<r.length&&c.push(r.slice(l)),c.length>0?c:r||" "}function j(r){const t=r.split(`
1
+ import{j as o,R as a}from"./index-BBVLYVi6.js";import{M as u,r as f}from"./index-fsgQPmdV.js";function k({text:r,searchQuery:t}){return o.jsx(u,{components:p(t),remarkPlugins:[f],children:j(r)})}function p(r){return{a({node:t,children:n,...e}){return o.jsx("a",{...e,target:"_blank",rel:"noreferrer",children:d(n,r)})},blockquote({node:t,children:n,...e}){return o.jsx("blockquote",{...e,children:d(n,r)})},code({node:t,children:n,...e}){return o.jsx("code",{...e,children:d(n,r)})},em({node:t,children:n,...e}){return o.jsx("em",{...e,children:d(n,r)})},h1({node:t,children:n,...e}){return o.jsx("h1",{...e,children:d(n,r)})},h2({node:t,children:n,...e}){return o.jsx("h2",{...e,children:d(n,r)})},h3({node:t,children:n,...e}){return o.jsx("h3",{...e,children:d(n,r)})},h4({node:t,children:n,...e}){return o.jsx("h4",{...e,children:d(n,r)})},h5({node:t,children:n,...e}){return o.jsx("h5",{...e,children:d(n,r)})},h6({node:t,children:n,...e}){return o.jsx("h6",{...e,children:d(n,r)})},li({node:t,children:n,...e}){return o.jsx("li",{...e,children:d(n,r)})},p({node:t,children:n,...e}){return o.jsx("p",{...e,children:d(n,r)})},pre({node:t,children:n,...e}){return o.jsx("pre",{...e,className:"transcript-markdown-code",children:n})},strong({node:t,children:n,...e}){return o.jsx("strong",{...e,children:d(n,r)})},td({node:t,children:n,...e}){return o.jsx("td",{...e,children:d(n,r)})},th({node:t,children:n,...e}){return o.jsx("th",{...e,children:d(n,r)})}}}function d(r,t){return a.Children.map(r,n=>typeof n=="string"?m(n,t):n)}function m(r,t){const n=t.trim();if(!n)return r||" ";const e=r.toLowerCase(),s=n.toLowerCase(),c=[];let l=0,i=e.indexOf(s);for(;i!==-1;){i>l&&c.push(r.slice(l,i));const h=i+n.length;c.push(o.jsx("mark",{className:"transcript-search-hit",children:r.slice(i,h)},`${i}-${h}`)),l=h,i=e.indexOf(s,l)}return l<r.length&&c.push(r.slice(l)),c.length>0?c:r||" "}function j(r){const t=r.split(`
2
2
  `);let n=!1,e=null;return t.map((s,c)=>{const l=n,i=/^ {0,3}(```+|~~~+)/.exec(s);if(i){const h=i[1]?.startsWith("`")?"`":"~";n?e===h&&(n=!1,e=null):(n=!0,e=h)}return c===t.length-1||l||i||s.trim()===""||s.endsWith(" ")?s:`${s.replace(/[ \t]+$/,"")} `}).join(`
3
3
  `)}export{k as default};