logancyang_obsidian-copilot/nodeModuleShim.mjs
Zero Liu c2ac27edef
feat(agent-mode): introduce Agent Mode feature
Squashed from 8 commits on zero/acp-test:
- feat(agent-mode): introduce Agent Mode feature (squashed)
- Fix eslint
- hide add context button
- chore: ban parent-relative imports and rewrite existing ones to @/ aliases
- wip(agent-mode): skills management + slash command revamp
- fix(agent-mode): initialize SkillManager before preload probes
- fix(build): align svgr jsxRuntime with tsconfig classic jsx
- fix(test): stub ItemView/WorkspaceLeaf in ChatSingleMessage obsidian mock
2026-05-20 19:05:41 -07:00

39 lines
1.3 KiB
JavaScript

// Plugin to provide a shim for node:module in browser/Electron renderer context
const nodeModuleShim = {
name: "node-module-shim",
setup(build) {
// Intercept node:module / module imports and provide a shim. Both prefixed
// and bare forms are matched — @anthropic-ai/claude-agent-sdk imports the
// bare form, while @langchain/community uses node:module.
build.onResolve({ filter: /^(node:)?module$/ }, (args) => {
return {
path: args.path,
namespace: "node-module-shim",
};
});
build.onLoad({ filter: /.*/, namespace: "node-module-shim" }, () => {
return {
contents: `
// Shim for node:module in Electron/Obsidian environment (CommonJS format)
module.exports = {
createRequire: function(filename) {
// In Electron renderer, we can use the global require
// Note: filename parameter is ignored (may be undefined from @langchain/community v1.0.0)
if (typeof require !== 'undefined') {
return require;
}
// Fallback: return a function that throws a helpful error
return function shimmedRequire(id) {
throw new Error('Dynamic require of "' + id + '" is not supported in this environment');
};
}
};
`,
loader: "js",
};
});
},
};
export default nodeModuleShim;