alchemylab 1.3.4 → 1.4.0

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.
package/dist/60.js CHANGED
@@ -1,14 +1,14 @@
1
1
  "use strict"
2
- exports.id=60,exports.ids=[60],exports.modules={9060(e,exports,t){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
3
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConfigManager=void 0,exports.createConfigManager=function(e){return new c(e)}
4
- const a=i(t(1943)),r=i(t(6928)),n=i(t(857)),o=t(4139),s=t(8824),l={lockOverride:{enabled:!0,passwordValidityMinutes:5}},d={remoteServerUrl:"https://api.alchemylabcode.com",nodePath:"node"}
5
- class c{constructor(e){this.logger=e.child({component:"config-manager"}),this.installationConfigDir=this.getInstallationConfigDir()}getInstallationConfigDir(){const e=__dirname||process.cwd(),t=n.default.homedir()
6
- return e.includes("node_modules")?r.default.join(t,".alchemy_lab","config"):r.default.join(t,".alchemy_lab","config-dev")}async ensureDirectory(e){try{await a.default.access(e)}catch(t){await a.default.mkdir(e,{recursive:!0}),this.logger.debug("Created directory",{dirPath:e})}}async readConfig(e,t){try{const i=await a.default.readFile(e,"utf8"),r=JSON.parse(i)
7
- return{...t,...r}}catch(i){return"ENOENT"===i.code||this.logger.warn("Error reading config file, using defaults",{filePath:e,error:(0,s.getErrorMessage)(i)}),t}}async writeConfig(e,t){await this.ensureDirectory(r.default.dirname(e)),await a.default.writeFile(e,JSON.stringify(t,null,2),"utf8"),this.logger.debug("Wrote config file",{filePath:e})}async getProjectConfig(e){const t=r.default.join(e,o.ALCHEMY_DIR_NAME,"config.json")
8
- return this.readConfig(t,l)}async updateProjectConfig(e,t){const i=r.default.join(e,o.ALCHEMY_DIR_NAME,"config.json"),a={...await this.getProjectConfig(e),...t}
9
- await this.writeConfig(i,a),this.logger.info("Updated project config",{projectPath:e,updates:t})}async getProjectMetadata(e){const t=r.default.join(e,o.ALCHEMY_DIR_NAME,"project.json")
10
- try{const e=await a.default.readFile(t,"utf8"),i=JSON.parse(e)
11
- return{id:i.id,name:i.name,createdAt:i.createdAt,status:i.status}}catch(e){return"ENOENT"===e.code||this.logger.warn("Error reading project metadata",{projectJsonPath:t,error:(0,s.getErrorMessage)(e)}),null}}async getInstallationConfig(){const e=r.default.join(this.installationConfigDir,"config.json")
12
- return this.readConfig(e,d)}async updateInstallationConfig(e){const t=r.default.join(this.installationConfigDir,"config.json"),i={...await this.getInstallationConfig(),...e}
13
- await this.writeConfig(t,i),this.logger.info("Updated installation config",{updates:e})}async getEffectiveConfig(e){const[t,i,a]=await Promise.all([this.getProjectConfig(e),this.getProjectMetadata(e),this.getInstallationConfig()])
14
- return{remoteServerUrl:a.remoteServerUrl||d.remoteServerUrl,nodePath:a.nodePath||d.nodePath,projectId:i?.id,projectName:i?.name,lockOverride:{enabled:t.lockOverride?.enabled??l.lockOverride.enabled,passwordValidityMinutes:t.lockOverride?.passwordValidityMinutes??l.lockOverride.passwordValidityMinutes}}}getInstallationConfigPath(){return this.installationConfigDir}}exports.ConfigManager=c}}
2
+ exports.id=60,exports.ids=[60],exports.modules={9060(t,exports,e){var a=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}}
3
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConfigManager=void 0,exports.createConfigManager=function(t){return new g(t)}
4
+ const i=a(e(1943)),n=a(e(6928)),r=a(e(857)),o=e(4139),s=e(8824),l={},c={remoteServerUrl:"https://api.alchemylabcode.com",nodePath:"node"}
5
+ class g{constructor(t){this.logger=t.child({component:"config-manager"}),this.installationConfigDir=this.getInstallationConfigDir()}getInstallationConfigDir(){const t=__dirname||process.cwd(),e=r.default.homedir()
6
+ return t.includes("node_modules")?n.default.join(e,".alchemy_lab","config"):n.default.join(e,".alchemy_lab","config-dev")}async ensureDirectory(t){try{await i.default.access(t)}catch(e){await i.default.mkdir(t,{recursive:!0}),this.logger.debug("Created directory",{dirPath:t})}}async readConfig(t,e){try{const a=await i.default.readFile(t,"utf8"),n=JSON.parse(a)
7
+ return{...e,...n}}catch(a){return"ENOENT"===a.code||this.logger.warn("Error reading config file, using defaults",{filePath:t,error:(0,s.getErrorMessage)(a)}),e}}async writeConfig(t,e){await this.ensureDirectory(n.default.dirname(t)),await i.default.writeFile(t,JSON.stringify(e,null,2),"utf8"),this.logger.debug("Wrote config file",{filePath:t})}async getProjectConfig(t){const e=n.default.join(t,o.ALCHEMY_DIR_NAME,"config.json")
8
+ return this.readConfig(e,l)}async updateProjectConfig(t,e){const a=n.default.join(t,o.ALCHEMY_DIR_NAME,"config.json"),i={...await this.getProjectConfig(t),...e}
9
+ await this.writeConfig(a,i),this.logger.info("Updated project config",{projectPath:t,updates:e})}async getProjectMetadata(t){const e=n.default.join(t,o.ALCHEMY_DIR_NAME,"project.json")
10
+ try{const t=await i.default.readFile(e,"utf8"),a=JSON.parse(t)
11
+ return{id:a.id,name:a.name,createdAt:a.createdAt,status:a.status}}catch(t){return"ENOENT"===t.code||this.logger.warn("Error reading project metadata",{projectJsonPath:e,error:(0,s.getErrorMessage)(t)}),null}}async getInstallationConfig(){const t=n.default.join(this.installationConfigDir,"config.json")
12
+ return this.readConfig(t,c)}async updateInstallationConfig(t){const e=n.default.join(this.installationConfigDir,"config.json"),a={...await this.getInstallationConfig(),...t}
13
+ await this.writeConfig(e,a),this.logger.info("Updated installation config",{updates:t})}async getEffectiveConfig(t){const[e,a,i]=await Promise.all([this.getProjectConfig(t),this.getProjectMetadata(t),this.getInstallationConfig()])
14
+ return{remoteServerUrl:i.remoteServerUrl||c.remoteServerUrl,nodePath:i.nodePath||c.nodePath,projectId:a?.id,projectName:a?.name}}getInstallationConfigPath(){return this.installationConfigDir}}exports.ConfigManager=g}}
package/dist/939.js CHANGED
@@ -1,14 +1,17 @@
1
1
  "use strict"
2
- exports.id=939,exports.ids=[939],exports.modules={9939(e,exports,s){function t(e){try{const s=o.default.readFileSync(e)
3
- return u.default.createHash("md5").update(s).digest("hex")}catch{return null}}var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
4
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.syncPlugins=async function(e,s,r,i){const l={synced:[],skipped:[],errors:[]},d=i||function(){const e=process.argv[1]
5
- let s=e
6
- try{s=o.default.realpathSync(e)}catch{}return n.default.dirname(s)}(),c=n.default.join(e,".opencode","plugin")
7
- try{await o.default.promises.mkdir(c,{recursive:!0})}catch(e){return r.error("Failed to create plugin directory",{destDir:c,error:e instanceof Error?e.message:"Unknown error"}),l}for(const e of a){const s=n.default.join(d,e.sourceName),a=n.default.join(c,e.destName)
8
- try{if(!o.default.existsSync(s)){r.warn("Plugin source not found: "+e.sourceName,{sourcePath:s}),l.errors.push(e.destName)
9
- continue}const i=await o.default.promises.readFile(s,"utf8").catch((()=>null))
10
- if(null===i){r.warn("Could not read plugin source: "+e.sourceName),l.errors.push(e.destName)
11
- continue}const d=e.destName.startsWith("lib/")?i:['import { createRequire as __createRequire } from "node:module";\nconst require = __createRequire(import.meta.url);\nconst __plugin = (function() {\n const module = { exports: {} };\n const exports = module.exports;\n (function() {',i," })();\n return module.exports.default || module.exports;\n})();\nexport default __plugin;"].join("\n"),m=u.default.createHash("md5").update(d).digest("hex"),p=t(a)
12
- if(null===p||m!==p){const s=n.default.dirname(a)
13
- s!==c&&await o.default.promises.mkdir(s,{recursive:!0}),await o.default.promises.writeFile(a,d,"utf8"),r.info("Synced plugin: "+e.destName,{reason:null===p?"not installed":"updated"}),l.synced.push(e.destName)}else l.skipped.push(e.destName)}catch(s){r.error("Failed to sync plugin: "+e.destName,{error:s instanceof Error?s.message:"Unknown error"}),l.errors.push(e.destName)}}return l}
14
- const o=r(s(9896)),n=r(s(6928)),u=r(s(6982)),a=[{sourceName:"plugins/hooks/plugin.js",destName:"event-hooks.js"},{sourceName:"plugins/hooks/lib/condition-evaluator.js",destName:"lib/condition-evaluator.js"},{sourceName:"plugins/hooks/lib/hook-utils.js",destName:"lib/hook-utils.js"},{sourceName:"plugins/hooks/lib/dedup-utils.js",destName:"lib/dedup-utils.js"},{sourceName:"plugins/inject-session.js",destName:"inject-session.js"},{sourceName:"plugins/system-logger.js",destName:"system-logger.js"}]}}
2
+ exports.id=939,exports.ids=[939],exports.modules={9939(e,exports,t){function r(e){return i.default.createHash("md5").update(e).digest("hex")}async function s(e){try{return r(await a.default.promises.readFile(e))}catch{return null}}var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
3
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.syncPluginsGlobal=async function(e,t,n){const i={synced:[],skipped:[],errors:[]},c=n||function(){const e=process.argv[1]
4
+ let t=e
5
+ try{t=a.default.realpathSync(e)}catch{}return o.default.dirname(t)}(),d=o.default.join((0,u.getGlobalConfigDir)(e),"plugin")
6
+ try{await a.default.promises.mkdir(d,{recursive:!0})}catch(e){return t.error("Failed to create global plugin directory",{destDir:d,error:e instanceof Error?e.message:"Unknown error"}),i}const p=o.default.join(d,"package.json"),f='{"type":"module"}\n'
7
+ try{await a.default.promises.readFile(p,"utf8").catch((()=>null))!==f&&await a.default.promises.writeFile(p,f,"utf8")}catch(e){t.warn("Failed to write global plugin package.json",{error:e instanceof Error?e.message:"Unknown error"})}for(const e of l){const n=o.default.join(c,e.sourceName),u=o.default.join(d,e.destName)
8
+ try{if(!a.default.existsSync(n)){t.warn("Plugin source not found: "+e.sourceName,{sourcePath:n}),i.errors.push(e.destName)
9
+ continue}const o=await a.default.promises.readFile(n,"utf8").catch((()=>null))
10
+ if(null===o){t.warn("Could not read plugin source: "+e.sourceName),i.errors.push(e.destName)
11
+ continue}const l=r(o),c=await s(u)
12
+ null===c||l!==c?(await a.default.promises.writeFile(u,o,"utf8"),t.info("Synced plugin: "+e.destName,{destDir:d,reason:null===c?"not installed":"updated"}),i.synced.push(e.destName)):i.skipped.push(e.destName)}catch(r){t.error("Failed to sync plugin: "+e.destName,{error:r instanceof Error?r.message:"Unknown error"}),i.errors.push(e.destName)}}return i.synced.length>0&&t.info("Synced global plugins",{destDir:d,synced:i.synced}),i},exports.cleanupLegacyProjectPlugins=async function(e,t){const r=o.default.join(e,".opencode","plugin"),s=[]
13
+ if(!a.default.existsSync(r))return{removed:s}
14
+ for(const e of c){const t=o.default.join(r,e)
15
+ if(a.default.existsSync(t))try{await a.default.promises.rm(t,{recursive:!0,force:!0}),s.push(e)}catch{}}s.length>0&&t.info("Removed legacy per-project plugin copies",{projectPluginDir:r,removed:s})
16
+ try{0===(await a.default.promises.readdir(r)).length&&await a.default.promises.rmdir(r)}catch{}return{removed:s}}
17
+ const a=n(t(9896)),o=n(t(6928)),i=n(t(6982)),u=t(5419),l=[{sourceName:"plugins/hooks/plugin.js",destName:"event-hooks.js"},{sourceName:"plugins/inject-session.js",destName:"inject-session.js"},{sourceName:"plugins/system-logger.js",destName:"system-logger.js"}],c=[...l.map((e=>e.destName)),"package.json","lib"]}}