nterminal 1.3.2 → 1.3.3

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 (61) hide show
  1. package/README.md +4 -2
  2. package/bin/nterminal.js +5 -0
  3. package/dist/client/assets/MarkdownPreview-CWK2qIZp.js +1 -0
  4. package/dist/client/assets/{TranscriptMarkdownBody-Cu7KK3bx.js → TranscriptMarkdownBody-Ddi-rw6X.js} +1 -1
  5. package/dist/client/assets/index-CcAQThtj.js +56 -0
  6. package/dist/client/assets/{index-CosXAR2f.js → index-DDCpqDNb.js} +1 -1
  7. package/dist/client/assets/{index-lQ2cyEWO.css → index-DTTX24tu.css} +1 -1
  8. package/dist/client/index.html +2 -2
  9. package/dist/scripts/onboarding.js +9 -0
  10. package/dist/scripts/onboarding.js.map +1 -1
  11. package/dist/server/agent/agentProxy.d.ts +1 -0
  12. package/dist/server/agent/agentProxy.js +3 -1
  13. package/dist/server/agent/agentProxy.js.map +1 -1
  14. package/dist/server/agent/agentRoutes.js +16 -2
  15. package/dist/server/agent/agentRoutes.js.map +1 -1
  16. package/dist/server/index.js +2 -0
  17. package/dist/server/index.js.map +1 -1
  18. package/dist/server/routes/agentManagementRoutes.js +13 -2
  19. package/dist/server/routes/agentManagementRoutes.js.map +1 -1
  20. package/dist/server/routes/terminalRoutes.js +19 -2
  21. package/dist/server/routes/terminalRoutes.js.map +1 -1
  22. package/dist/server/routes/transcriptQuery.d.ts +14 -0
  23. package/dist/server/routes/transcriptQuery.js +57 -0
  24. package/dist/server/routes/transcriptQuery.js.map +1 -0
  25. package/dist/server/terminal/PtyAdapter.d.ts +12 -0
  26. package/dist/server/terminal/PtyAdapter.js.map +1 -1
  27. package/dist/server/terminal/TerminalManager.d.ts +6 -7
  28. package/dist/server/terminal/TerminalManager.js +57 -11
  29. package/dist/server/terminal/TerminalManager.js.map +1 -1
  30. package/dist/server/terminal/TmuxPtyAdapter.d.ts +15 -1
  31. package/dist/server/terminal/TmuxPtyAdapter.js +284 -13
  32. package/dist/server/terminal/TmuxPtyAdapter.js.map +1 -1
  33. package/dist/server/terminal/codexTranscriptSource.d.ts +18 -1
  34. package/dist/server/terminal/codexTranscriptSource.js +263 -68
  35. package/dist/server/terminal/codexTranscriptSource.js.map +1 -1
  36. package/dist/server/terminal/sqliteReader.d.ts +21 -0
  37. package/dist/server/terminal/sqliteReader.js +158 -0
  38. package/dist/server/terminal/sqliteReader.js.map +1 -0
  39. package/dist/server/terminal/subagentSources.js +3 -2
  40. package/dist/server/terminal/subagentSources.js.map +1 -1
  41. package/dist/server/terminal/transcriptHistory.d.ts +34 -0
  42. package/dist/server/terminal/transcriptHistory.js +81 -36
  43. package/dist/server/terminal/transcriptHistory.js.map +1 -1
  44. package/dist/server/terminal/transcriptStore.d.ts +64 -0
  45. package/dist/server/terminal/transcriptStore.js +779 -0
  46. package/dist/server/terminal/transcriptStore.js.map +1 -0
  47. package/dist/shared/nodeVersion.d.ts +3 -0
  48. package/dist/shared/nodeVersion.js +12 -0
  49. package/dist/shared/nodeVersion.js.map +1 -0
  50. package/dist/shared/protocol.d.ts +33 -0
  51. package/dist/shared/protocol.js.map +1 -1
  52. package/dist/shared/transcriptSearch.d.ts +2 -0
  53. package/dist/shared/transcriptSearch.js +12 -0
  54. package/dist/shared/transcriptSearch.js.map +1 -0
  55. package/dist/src/shared/nodeVersion.js +12 -0
  56. package/dist/src/shared/nodeVersion.js.map +1 -0
  57. package/docs/terminal-history.md +22 -4
  58. package/package.json +2 -2
  59. package/scripts/nterminalctl +8 -4
  60. package/dist/client/assets/MarkdownPreview-CzA5ZyZ3.js +0 -1
  61. package/dist/client/assets/index-wiyTLXQg.js +0 -56
package/README.md CHANGED
@@ -79,7 +79,9 @@ Run onboarding as the account that should own NTerminal. Do not use `sudo ntermi
79
79
  ### Transcript History
80
80
 
81
81
  - Supported Codex/Claude panes can continue into JSONL transcript history from `~/.codex/sessions` or `~/.claude/projects`.
82
- - The history viewer supports search, Markdown rendering, optional tool output, and scroll-to-load older transcript entries.
82
+ - The history viewer supports full-history search, Markdown rendering, optional tool output, and scroll-to-load older transcript entries. Search scans older records progressively and can jump to results that have not been loaded in the viewer.
83
+ - When live session evidence is ambiguous, choose a transcript from the available candidates instead of silently attaching the wrong conversation.
84
+ - A private, bounded disk cache reuses rendered conversation records across history views and searches. New output updates the tail without rebuilding the older cached records.
83
85
  - Transcript history is attached only when NTerminal can identify the backing session unambiguously.
84
86
 
85
87
  ### Files, Uploads, And Clipboard
@@ -107,7 +109,7 @@ Run onboarding as the account that should own NTerminal. Do not use `sudo ntermi
107
109
 
108
110
  ## Requirements
109
111
 
110
- - Node.js 22 or newer.
112
+ - Node.js 22.13.0 or newer.
111
113
  - Linux or macOS.
112
114
  - Native build tools required by `node-pty`.
113
115
  - Optional `tmux` for PTY persistence across Node restarts.
package/bin/nterminal.js CHANGED
@@ -46,6 +46,11 @@ function scriptEntrypoint(name) {
46
46
  }
47
47
 
48
48
  function runScript(name, runArgs) {
49
+ const [major, minor] = process.versions.node.split('.').map(Number);
50
+ if (major < 22 || (major === 22 && minor < 13)) {
51
+ console.error('error: Node.js >=22.13.0 is required; update Node.js before running onboarding.');
52
+ process.exit(1);
53
+ }
49
54
  const entrypoint = scriptEntrypoint(name);
50
55
  if (!entrypoint) {
51
56
  console.error(`error: ${name} entrypoint not found; reinstall nterminal`);
@@ -0,0 +1 @@
1
+ import{j as a}from"./index-CcAQThtj.js";import{M as e,r as o}from"./index-DDCpqDNb.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-wiyTLXQg.js";import{M as u,r as f}from"./index-CosXAR2f.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-CcAQThtj.js";import{M as u,r as f}from"./index-DDCpqDNb.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};