fix: remove import.meta.url banner from CJS files run by Node.js

The MCP server (#!/usr/bin/env node) and context generator run under
Node.js, where import.meta.url throws SyntaxError in CJS mode. Only
the worker-service needs the banner since it runs under Bun.

CJS files under Node.js already have __dirname/__filename natively.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alex Newman
2026-03-28 18:32:43 -07:00
parent 80d1deedbe
commit 0321f4266d
4 changed files with 3 additions and 16 deletions

View File

@@ -1,5 +1,3 @@
var __filename = require("node:url").fileURLToPath(import.meta.url);
var __dirname = require("node:path").dirname(__filename);
"use strict";var Tt=Object.create;var U=Object.defineProperty;var gt=Object.getOwnPropertyDescriptor;var ft=Object.getOwnPropertyNames;var bt=Object.getPrototypeOf,St=Object.prototype.hasOwnProperty;var ht=(r,e)=>{for(var t in e)U(r,t,{get:e[t],enumerable:!0})},de=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ft(e))!St.call(r,n)&&n!==t&&U(r,n,{get:()=>e[n],enumerable:!(s=gt(e,n))||s.enumerable});return r};var y=(r,e,t)=>(t=r!=null?Tt(bt(r)):{},de(e||!r||!r.__esModule?U(t,"default",{value:r,enumerable:!0}):t,r)),Ot=r=>de(U({},"__esModule",{value:!0}),r);var Pt={};ht(Pt,{generateContext:()=>ae});module.exports=Ot(Pt);var _t=y(require("path"),1),ut=require("os"),lt=require("fs");var Te=require("bun:sqlite");var S=require("path"),K=require("os"),k=require("fs");var me=require("url");var A=require("fs"),v=require("path"),pe=require("os"),q=(o=>(o[o.DEBUG=0]="DEBUG",o[o.INFO=1]="INFO",o[o.WARN=2]="WARN",o[o.ERROR=3]="ERROR",o[o.SILENT=4]="SILENT",o))(q||{}),ce=(0,v.join)((0,pe.homedir)(),".claude-mem"),V=class{level=null;useColor;logFilePath=null;logFileInitialized=!1;constructor(){this.useColor=process.stdout.isTTY??!1}ensureLogFileInitialized(){if(!this.logFileInitialized){this.logFileInitialized=!0;try{let e=(0,v.join)(ce,"logs");(0,A.existsSync)(e)||(0,A.mkdirSync)(e,{recursive:!0});let t=new Date().toISOString().split("T")[0];this.logFilePath=(0,v.join)(e,`claude-mem-${t}.log`)}catch(e){console.error("[LOGGER] Failed to initialize log file:",e),this.logFilePath=null}}}getLevel(){if(this.level===null)try{let e=(0,v.join)(ce,"settings.json");if((0,A.existsSync)(e)){let t=(0,A.readFileSync)(e,"utf-8"),n=(JSON.parse(t).CLAUDE_MEM_LOG_LEVEL||"INFO").toUpperCase();this.level=q[n]??1}else this.level=1}catch{this.level=1}return this.level}correlationId(e,t){return`obs-${e}-${t}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message}
${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let t=Object.keys(e);return t.length===0?"{}":t.length<=3?JSON.stringify(e):`{${t.length} keys: ${t.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,t){if(!t)return e;let s=t;if(typeof t=="string")try{s=JSON.parse(t)}catch{s=t}if(e==="Bash"&&s.command)return`${e}(${s.command})`;if(s.file_path)return`${e}(${s.file_path})`;if(s.notebook_path)return`${e}(${s.notebook_path})`;if(e==="Glob"&&s.pattern)return`${e}(${s.pattern})`;if(e==="Grep"&&s.pattern)return`${e}(${s.pattern})`;if(s.url)return`${e}(${s.url})`;if(s.query)return`${e}(${s.query})`;if(e==="Task"){if(s.subagent_type)return`${e}(${s.subagent_type})`;if(s.description)return`${e}(${s.description})`}return e==="Skill"&&s.skill?`${e}(${s.skill})`:e==="LSP"&&s.operation?`${e}(${s.operation})`:e}formatTimestamp(e){let t=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0"),o=String(e.getHours()).padStart(2,"0"),i=String(e.getMinutes()).padStart(2,"0"),a=String(e.getSeconds()).padStart(2,"0"),d=String(e.getMilliseconds()).padStart(3,"0");return`${t}-${s}-${n} ${o}:${i}:${a}.${d}`}log(e,t,s,n,o){if(e<this.getLevel())return;this.ensureLogFileInitialized();let i=this.formatTimestamp(new Date),a=q[e].padEnd(5),d=t.padEnd(6),p="";n?.correlationId?p=`[${n.correlationId}] `:n?.sessionId&&(p=`[session-${n.sessionId}] `);let _="";o!=null&&(o instanceof Error?_=this.getLevel()===0?`
${o.message}

File diff suppressed because one or more lines are too long

View File

@@ -824,7 +824,7 @@ View Observations Live @ http://localhost:${i}`:void 0;return{hookSpecificOutput
`),s=!1;for(let o=i.length-1;o>=0;o--){let a=JSON.parse(i[o]);if(a.type===e&&(s=!0,a.message?.content)){let c="",u=a.message.content;if(typeof u=="string")c=u;else if(Array.isArray(u))c=u.filter(l=>l.type==="text").map(l=>l.text).join(`
`);else throw new Error(`Unknown message content format in transcript. Type: ${typeof u}`);return r&&(c=c.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/g,""),c=c.replace(/\n{3,}/g,`
`).trim()),c}}return""}var vv,O9=Pe(()=>{"use strict";vv=require("fs");oe()});var mge,O$,P$=Pe(()=>{"use strict";qr();oe();O9();gn();mge=Pf(_r.DEFAULT),O$={async execute(t){if(!await en())return{continue:!0,suppressOutput:!0,exitCode:st.SUCCESS};let{sessionId:r,transcriptPath:n}=t;if(!n)return y.debug("HOOK",`No transcriptPath in Stop hook input for session ${r} - skipping summary`),{continue:!0,suppressOutput:!0,exitCode:st.SUCCESS};let i="";try{i=R9(n,"assistant",!0)}catch(o){return y.warn("HOOK",`Failed to extract last assistant message: ${o instanceof Error?o.message:o}`),{continue:!0,suppressOutput:!0,exitCode:st.SUCCESS}}return y.dataIn("HOOK","Stop: Requesting summary",{hasLastAssistantMessage:!!i}),(await jt("/api/sessions/summarize",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contentSessionId:r,last_assistant_message:i}),timeoutMs:mge})).ok?(y.debug("HOOK","Summary request sent successfully"),{continue:!0,suppressOutput:!0}):{continue:!0,suppressOutput:!0}}}});var P9,C$,A$=Pe(()=>{"use strict";P9=require("path");qr();gn();C$={async execute(t){if(!await en())return{exitCode:st.SUCCESS};let r=Ur(),n=(0,P9.basename)(t.cwd??process.cwd());try{let i=await jt(`/api/context/inject?project=${encodeURIComponent(n)}&colors=true`);if(!i.ok)return{exitCode:st.SUCCESS};let s=await i.text();process.stderr.write(`
`).trim()),c}}return""}var vv,O9=Pe(()=>{"use strict";vv=require("fs");oe()});var mge,O$,P$=Pe(()=>{"use strict";qr();oe();O9();gn();mge=Pf(_r.DEFAULT),O$={async execute(t){if(!await en())return{continue:!0,suppressOutput:!0,exitCode:st.SUCCESS};let{sessionId:r,transcriptPath:n}=t;if(!n)return y.debug("HOOK",`No transcriptPath in Stop hook input for session ${r} - skipping summary`),{continue:!0,suppressOutput:!0,exitCode:st.SUCCESS};let i="";try{i=R9(n,"assistant",!0)}catch(o){return y.warn("HOOK",`Stop hook: failed to extract last assistant message for session ${r}: ${o instanceof Error?o.message:o}`),{continue:!0,suppressOutput:!0,exitCode:st.SUCCESS}}return y.dataIn("HOOK","Stop: Requesting summary",{hasLastAssistantMessage:!!i}),(await jt("/api/sessions/summarize",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contentSessionId:r,last_assistant_message:i}),timeoutMs:mge})).ok?(y.debug("HOOK","Summary request sent successfully"),{continue:!0,suppressOutput:!0}):{continue:!0,suppressOutput:!0}}}});var P9,C$,A$=Pe(()=>{"use strict";P9=require("path");qr();gn();C$={async execute(t){if(!await en())return{exitCode:st.SUCCESS};let r=Ur(),n=(0,P9.basename)(t.cwd??process.cwd());try{let i=await jt(`/api/context/inject?project=${encodeURIComponent(n)}&colors=true`);if(!i.ok)return{exitCode:st.SUCCESS};let s=await i.text();process.stderr.write(`
`+String.fromCodePoint(128221)+` Claude-Mem Context Loaded

View File

@@ -157,11 +157,7 @@ async function buildHooks() {
'__DEFAULT_PACKAGE_VERSION__': `"${version}"`
},
banner: {
js: [
'#!/usr/bin/env node',
'var __filename = require("node:url").fileURLToPath(import.meta.url);',
'var __dirname = require("node:path").dirname(__filename);'
].join('\n')
js: '#!/usr/bin/env node'
}
});
@@ -185,12 +181,7 @@ async function buildHooks() {
define: {
'__DEFAULT_PACKAGE_VERSION__': `"${version}"`
},
banner: {
js: [
'var __filename = require("node:url").fileURLToPath(import.meta.url);',
'var __dirname = require("node:path").dirname(__filename);'
].join('\n')
}
// No banner needed: CJS files under Node.js have __dirname/__filename natively
});
const contextGenStats = fs.statSync(`${hooksDir}/${CONTEXT_GENERATOR.name}.cjs`);