@oh-my-pi/cli 0.8.3 → 0.9.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/README.md +2 -1
- package/dist/cli.js +251 -81
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/enable.d.ts.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/loader.d.ts +15 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/manifest.d.ts +4 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/symlinks.d.ts +8 -2
- package/dist/symlinks.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/banner.png
|
|
2
|
+
<img src="https://raw.githubusercontent.com/can1357/oh-my-pi/main/assets/banner.png" alt="Oh My Pi" >
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
| Plugin | Description |
|
|
22
22
|
| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
23
23
|
| **[@oh-my-pi/subagents](https://npmjs.com/package/@oh-my-pi/subagents)** | Task delegation with specialized sub-agents (task, planner, explore, reviewer) |
|
|
24
|
+
| **[@oh-my-pi/lsp](https://npmjs.com/package/@oh-my-pi/lsp)** | Language Server Protocol for code intelligence, diagnostics, and refactoring |
|
|
24
25
|
| **[@oh-my-pi/anthropic-websearch](https://npmjs.com/package/@oh-my-pi/anthropic-websearch)** | Claude web search using Anthropic's built-in web_search tool |
|
|
25
26
|
| **[@oh-my-pi/exa](https://npmjs.com/package/@oh-my-pi/exa)** | Exa AI-powered web search, company/people lookup, and websets |
|
|
26
27
|
| **[@oh-my-pi/perplexity](https://npmjs.com/package/@oh-my-pi/perplexity)** | Perplexity AI search with Sonar models (fast and pro) |
|
package/dist/cli.js
CHANGED
|
@@ -233,6 +233,12 @@ function getPackageJsonPath(global = true) {
|
|
|
233
233
|
function getPluginsJsonPath() {
|
|
234
234
|
return join(getProjectPiDir(), "plugins.json");
|
|
235
235
|
}
|
|
236
|
+
function getAgentDir(global = true) {
|
|
237
|
+
if (global) {
|
|
238
|
+
return join(PI_CONFIG_DIR, "agent");
|
|
239
|
+
}
|
|
240
|
+
return join(getProjectPiDir(), "agent");
|
|
241
|
+
}
|
|
236
242
|
function resolveScope(options) {
|
|
237
243
|
if (options.global) {
|
|
238
244
|
return true;
|
|
@@ -3670,13 +3676,13 @@ __export(exports_lockfile, {
|
|
|
3670
3676
|
createLockFile: () => createLockFile,
|
|
3671
3677
|
LOCKFILE_VERSION: () => LOCKFILE_VERSION
|
|
3672
3678
|
});
|
|
3673
|
-
import { existsSync as
|
|
3679
|
+
import { existsSync as existsSync7 } from "fs";
|
|
3674
3680
|
import { open, readFile as readFile3, rename, unlink } from "fs/promises";
|
|
3675
|
-
import { dirname as dirname4, join as
|
|
3681
|
+
import { dirname as dirname4, join as join7 } from "path";
|
|
3676
3682
|
async function loadLockFile(global2 = true) {
|
|
3677
3683
|
const path = global2 ? GLOBAL_LOCK_FILE : PROJECT_PLUGINS_LOCK;
|
|
3678
3684
|
try {
|
|
3679
|
-
if (!
|
|
3685
|
+
if (!existsSync7(path))
|
|
3680
3686
|
return null;
|
|
3681
3687
|
const data = await readFile3(path, "utf-8");
|
|
3682
3688
|
const parsed = JSON.parse(data);
|
|
@@ -3733,7 +3739,7 @@ async function releaseLockfileLock(lockfilePath) {
|
|
|
3733
3739
|
}
|
|
3734
3740
|
async function saveLockFile(lockFile, global2 = true) {
|
|
3735
3741
|
const path = global2 ? GLOBAL_LOCK_FILE : PROJECT_PLUGINS_LOCK;
|
|
3736
|
-
const tempPath =
|
|
3742
|
+
const tempPath = join7(dirname4(path), `.omp-lockfile-${process.pid}-${Date.now()}.tmp`);
|
|
3737
3743
|
const handle = await open(tempPath, "w");
|
|
3738
3744
|
let handleClosed = false;
|
|
3739
3745
|
try {
|
|
@@ -3762,7 +3768,7 @@ async function validateOrRegenerateLockFile(global2 = true) {
|
|
|
3762
3768
|
return existing;
|
|
3763
3769
|
}
|
|
3764
3770
|
const path = global2 ? GLOBAL_LOCK_FILE : PROJECT_PLUGINS_LOCK;
|
|
3765
|
-
if (
|
|
3771
|
+
if (existsSync7(path)) {
|
|
3766
3772
|
console.log(source_default.yellow(`Regenerating corrupted lock file: ${path}`));
|
|
3767
3773
|
}
|
|
3768
3774
|
return createLockFile();
|
|
@@ -6565,9 +6571,9 @@ Provide instructions for the agent here.
|
|
|
6565
6571
|
}
|
|
6566
6572
|
|
|
6567
6573
|
// src/commands/doctor.ts
|
|
6568
|
-
import { existsSync as
|
|
6574
|
+
import { existsSync as existsSync6 } from "fs";
|
|
6569
6575
|
import { readFile as readFile2 } from "fs/promises";
|
|
6570
|
-
import { isAbsolute as isAbsolute3, join as
|
|
6576
|
+
import { isAbsolute as isAbsolute3, join as join6, relative as relative3, resolve as resolve5 } from "path";
|
|
6571
6577
|
import { createInterface } from "readline";
|
|
6572
6578
|
|
|
6573
6579
|
// src/conflicts.ts
|
|
@@ -6687,14 +6693,162 @@ function formatConflicts(conflicts) {
|
|
|
6687
6693
|
});
|
|
6688
6694
|
}
|
|
6689
6695
|
|
|
6696
|
+
// src/loader.ts
|
|
6697
|
+
import { existsSync as existsSync4, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
6698
|
+
import { join as join4 } from "path";
|
|
6699
|
+
init_paths();
|
|
6700
|
+
async function getPluginInfo(global) {
|
|
6701
|
+
const pkgJsonPath = getPackageJsonPath(global);
|
|
6702
|
+
if (!existsSync4(pkgJsonPath))
|
|
6703
|
+
return new Map;
|
|
6704
|
+
const pkgJson = JSON.parse(readFileSync(pkgJsonPath, "utf-8"));
|
|
6705
|
+
const deps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };
|
|
6706
|
+
const plugins = new Map;
|
|
6707
|
+
for (const pluginName of Object.keys(deps)) {
|
|
6708
|
+
const pluginPkgJson = await readPluginPackageJson(pluginName, global);
|
|
6709
|
+
if (!pluginPkgJson?.omp)
|
|
6710
|
+
continue;
|
|
6711
|
+
const info = {};
|
|
6712
|
+
if (pluginPkgJson.omp.tools) {
|
|
6713
|
+
info.tools = `${pluginName}/${pluginPkgJson.omp.tools}`;
|
|
6714
|
+
}
|
|
6715
|
+
if (pluginPkgJson.omp.runtime) {
|
|
6716
|
+
info.runtime = `${pluginName}/${pluginPkgJson.omp.runtime}`;
|
|
6717
|
+
}
|
|
6718
|
+
if (info.tools || info.runtime) {
|
|
6719
|
+
plugins.set(pluginName, info);
|
|
6720
|
+
}
|
|
6721
|
+
}
|
|
6722
|
+
return plugins;
|
|
6723
|
+
}
|
|
6724
|
+
async function writeLoader(global = true) {
|
|
6725
|
+
const agentDir = getAgentDir(global);
|
|
6726
|
+
const ompDir = join4(agentDir, "tools", "omp");
|
|
6727
|
+
mkdirSync(ompDir, { recursive: true });
|
|
6728
|
+
const plugins = await getPluginInfo(global);
|
|
6729
|
+
const toolPaths = [...plugins.values()].filter((p) => p.tools).map((p) => `"${p.tools}"`);
|
|
6730
|
+
const runtimeRedirects = [];
|
|
6731
|
+
for (const [name, info] of plugins) {
|
|
6732
|
+
if (info.runtime) {
|
|
6733
|
+
const storeName = name.replace(/\//g, "__");
|
|
6734
|
+
runtimeRedirects.push(` ["${info.runtime}", "${storeName}.json"]`);
|
|
6735
|
+
}
|
|
6736
|
+
}
|
|
6737
|
+
const source = `/**
|
|
6738
|
+
* OMP Tool Loader
|
|
6739
|
+
*
|
|
6740
|
+
* Auto-generated by omp. Do not edit.
|
|
6741
|
+
*/
|
|
6742
|
+
|
|
6743
|
+
import * as fs from "node:fs";
|
|
6744
|
+
import * as path from "node:path";
|
|
6745
|
+
import { fileURLToPath } from "node:url";
|
|
6746
|
+
import type { CustomToolFactory, CustomAgentTool } from "@mariozechner/pi-coding-agent";
|
|
6747
|
+
|
|
6748
|
+
// ============================================================================
|
|
6749
|
+
// Tool registry (regenerated on plugin install/uninstall)
|
|
6750
|
+
// ============================================================================
|
|
6751
|
+
|
|
6752
|
+
const toolPaths = [
|
|
6753
|
+
${toolPaths.map((p) => ` ${p}`).join(`,
|
|
6754
|
+
`)}
|
|
6755
|
+
];
|
|
6756
|
+
|
|
6757
|
+
// Runtime config: [moduleSpecifier, storeFilename]
|
|
6758
|
+
const runtimeConfigs: [string, string][] = [
|
|
6759
|
+
${runtimeRedirects.join(`,
|
|
6760
|
+
`)}
|
|
6761
|
+
];
|
|
6762
|
+
|
|
6763
|
+
// ============================================================================
|
|
6764
|
+
// Bootstrap: Patch module resolution and load runtime configs from store
|
|
6765
|
+
// ============================================================================
|
|
6766
|
+
|
|
6767
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
6768
|
+
const piDir = path.resolve(__dirname, "../../.."); // ~/.pi
|
|
6769
|
+
const pluginNodeModules = path.join(piDir, "plugins/node_modules");
|
|
6770
|
+
const storeDir = path.join(piDir, "plugins/store");
|
|
6771
|
+
|
|
6772
|
+
// Ensure store directory exists
|
|
6773
|
+
fs.mkdirSync(storeDir, { recursive: true });
|
|
6774
|
+
|
|
6775
|
+
if (fs.existsSync(pluginNodeModules)) {
|
|
6776
|
+
try {
|
|
6777
|
+
const Module = await import("node:module");
|
|
6778
|
+
const ModuleClass = (Module as any).default?.Module || (Module as any).Module;
|
|
6779
|
+
|
|
6780
|
+
// Patch _nodeModulePaths to include plugins/node_modules
|
|
6781
|
+
if (ModuleClass?._nodeModulePaths) {
|
|
6782
|
+
const original = ModuleClass._nodeModulePaths;
|
|
6783
|
+
ModuleClass._nodeModulePaths = (from: string) => {
|
|
6784
|
+
const paths = original(from);
|
|
6785
|
+
if (!paths.includes(pluginNodeModules)) {
|
|
6786
|
+
paths.push(pluginNodeModules);
|
|
6787
|
+
}
|
|
6788
|
+
return paths;
|
|
6789
|
+
};
|
|
6790
|
+
}
|
|
6791
|
+
} catch (e) {
|
|
6792
|
+
console.error("omp-loader: Failed to patch module resolution:", e);
|
|
6793
|
+
}
|
|
6794
|
+
}
|
|
6795
|
+
|
|
6796
|
+
// Load runtime configs: import module, read store, assign to module cache
|
|
6797
|
+
for (const [moduleSpec, storeFile] of runtimeConfigs) {
|
|
6798
|
+
try {
|
|
6799
|
+
const runtime = await import(moduleSpec);
|
|
6800
|
+
const storePath = path.join(storeDir, storeFile);
|
|
6801
|
+
|
|
6802
|
+
if (fs.existsSync(storePath)) {
|
|
6803
|
+
const storeData = JSON.parse(fs.readFileSync(storePath, "utf-8"));
|
|
6804
|
+
Object.assign(runtime.default, storeData);
|
|
6805
|
+
}
|
|
6806
|
+
} catch {
|
|
6807
|
+
// Module not found or store read failed - skip
|
|
6808
|
+
}
|
|
6809
|
+
}
|
|
6810
|
+
|
|
6811
|
+
// ============================================================================
|
|
6812
|
+
// Tool loader factory
|
|
6813
|
+
// ============================================================================
|
|
6814
|
+
|
|
6815
|
+
const factory: CustomToolFactory = async (pi) => {
|
|
6816
|
+
const allTools: CustomAgentTool[] = [];
|
|
6817
|
+
|
|
6818
|
+
for (const toolPath of toolPaths) {
|
|
6819
|
+
try {
|
|
6820
|
+
const module = await import(toolPath);
|
|
6821
|
+
const pluginFactory = module.default as CustomToolFactory;
|
|
6822
|
+
|
|
6823
|
+
if (typeof pluginFactory !== "function") {
|
|
6824
|
+
console.error(\`omp-loader: \${toolPath} does not export a factory function\`);
|
|
6825
|
+
continue;
|
|
6826
|
+
}
|
|
6827
|
+
|
|
6828
|
+
const result = await pluginFactory(pi);
|
|
6829
|
+
const resultTools = Array.isArray(result) ? result : [result];
|
|
6830
|
+
allTools.push(...resultTools);
|
|
6831
|
+
} catch (e) {
|
|
6832
|
+
console.error(\`omp-loader: Failed to load \${toolPath}:\`, e);
|
|
6833
|
+
}
|
|
6834
|
+
}
|
|
6835
|
+
|
|
6836
|
+
return allTools;
|
|
6837
|
+
};
|
|
6838
|
+
|
|
6839
|
+
export default factory;
|
|
6840
|
+
`;
|
|
6841
|
+
writeFileSync(join4(ompDir, "index.ts"), source, "utf-8");
|
|
6842
|
+
}
|
|
6843
|
+
|
|
6690
6844
|
// src/commands/doctor.ts
|
|
6691
6845
|
init_paths();
|
|
6692
6846
|
|
|
6693
6847
|
// src/symlinks.ts
|
|
6694
|
-
import { existsSync as
|
|
6848
|
+
import { existsSync as existsSync5, lstatSync, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
6695
6849
|
import { copyFile, lstat, mkdir as mkdir3, readlink, rm as rm2, symlink } from "fs/promises";
|
|
6696
6850
|
import { platform } from "os";
|
|
6697
|
-
import { dirname as dirname3, isAbsolute as isAbsolute2, join as
|
|
6851
|
+
import { dirname as dirname3, isAbsolute as isAbsolute2, join as join5, relative as relative2, resolve as resolve4 } from "path";
|
|
6698
6852
|
init_output();
|
|
6699
6853
|
init_paths();
|
|
6700
6854
|
init_source();
|
|
@@ -6754,9 +6908,9 @@ async function createPluginSymlinks(pluginName, pkgJson, global = true, verbose
|
|
|
6754
6908
|
continue;
|
|
6755
6909
|
}
|
|
6756
6910
|
try {
|
|
6757
|
-
const src =
|
|
6758
|
-
const dest =
|
|
6759
|
-
if (!
|
|
6911
|
+
const src = join5(sourceDir, entry.src);
|
|
6912
|
+
const dest = join5(baseDir, entry.dest);
|
|
6913
|
+
if (!existsSync5(src)) {
|
|
6760
6914
|
result.errors.push(`Source not found: ${entry.src}`);
|
|
6761
6915
|
if (verbose) {
|
|
6762
6916
|
log(source_default.yellow(` \u26A0 Source not found: ${entry.src}`));
|
|
@@ -6765,7 +6919,7 @@ async function createPluginSymlinks(pluginName, pkgJson, global = true, verbose
|
|
|
6765
6919
|
}
|
|
6766
6920
|
await mkdir3(dirname3(dest), { recursive: true });
|
|
6767
6921
|
if (entry.copy) {
|
|
6768
|
-
if (!
|
|
6922
|
+
if (!existsSync5(dest)) {
|
|
6769
6923
|
await copyFile(src, dest);
|
|
6770
6924
|
result.created.push(entry.dest);
|
|
6771
6925
|
if (verbose) {
|
|
@@ -6823,7 +6977,7 @@ async function createPluginSymlinks(pluginName, pkgJson, global = true, verbose
|
|
|
6823
6977
|
}
|
|
6824
6978
|
} catch (err) {
|
|
6825
6979
|
const error = err;
|
|
6826
|
-
const msg = `Failed to install ${entry.dest}: ${formatPermissionError2(error,
|
|
6980
|
+
const msg = `Failed to install ${entry.dest}: ${formatPermissionError2(error, join5(baseDir, entry.dest))}`;
|
|
6827
6981
|
result.errors.push(msg);
|
|
6828
6982
|
if (verbose) {
|
|
6829
6983
|
log(source_default.red(` \u2717 ${msg}`));
|
|
@@ -6833,10 +6987,9 @@ async function createPluginSymlinks(pluginName, pkgJson, global = true, verbose
|
|
|
6833
6987
|
}
|
|
6834
6988
|
}
|
|
6835
6989
|
}
|
|
6836
|
-
if (enabledFeatures !== undefined) {
|
|
6837
|
-
const
|
|
6838
|
-
if (
|
|
6839
|
-
const runtimePath = join4(baseDir, runtimeEntry.dest);
|
|
6990
|
+
if (enabledFeatures !== undefined && pkgJson.omp?.runtime) {
|
|
6991
|
+
const runtimePath = getRuntimeConfigPath(pkgJson, global);
|
|
6992
|
+
if (runtimePath) {
|
|
6840
6993
|
await writeRuntimeConfig(runtimePath, { features: enabledFeatures }, verbose);
|
|
6841
6994
|
}
|
|
6842
6995
|
}
|
|
@@ -6844,7 +6997,7 @@ async function createPluginSymlinks(pluginName, pkgJson, global = true, verbose
|
|
|
6844
6997
|
}
|
|
6845
6998
|
function readRuntimeConfig(runtimePath) {
|
|
6846
6999
|
try {
|
|
6847
|
-
const content =
|
|
7000
|
+
const content = readFileSync2(runtimePath, "utf-8");
|
|
6848
7001
|
return JSON.parse(content);
|
|
6849
7002
|
} catch (err) {
|
|
6850
7003
|
const error = err;
|
|
@@ -6856,12 +7009,16 @@ function readRuntimeConfig(runtimePath) {
|
|
|
6856
7009
|
}
|
|
6857
7010
|
async function writeRuntimeConfig(runtimePath, config, verbose = false) {
|
|
6858
7011
|
try {
|
|
7012
|
+
const storeDir = dirname3(runtimePath);
|
|
7013
|
+
if (!existsSync5(storeDir)) {
|
|
7014
|
+
await mkdir3(storeDir, { recursive: true });
|
|
7015
|
+
}
|
|
6859
7016
|
const existing = readRuntimeConfig(runtimePath);
|
|
6860
7017
|
const merged = {
|
|
6861
7018
|
features: config.features ?? existing.features ?? [],
|
|
6862
7019
|
options: { ...existing.options, ...config.options }
|
|
6863
7020
|
};
|
|
6864
|
-
|
|
7021
|
+
writeFileSync2(runtimePath, `${JSON.stringify(merged, null, 2)}
|
|
6865
7022
|
`);
|
|
6866
7023
|
if (verbose) {
|
|
6867
7024
|
log(source_default.dim(` Updated: ${runtimePath}`));
|
|
@@ -6874,12 +7031,16 @@ async function writeRuntimeConfig(runtimePath, config, verbose = false) {
|
|
|
6874
7031
|
}
|
|
6875
7032
|
}
|
|
6876
7033
|
}
|
|
7034
|
+
function getStoreDir(global = true) {
|
|
7035
|
+
const pluginsDir = global ? PLUGINS_DIR : getProjectPiDir();
|
|
7036
|
+
return join5(pluginsDir, "store");
|
|
7037
|
+
}
|
|
6877
7038
|
function getRuntimeConfigPath(pkgJson, global = true) {
|
|
6878
|
-
|
|
6879
|
-
const runtimeEntry = entries.find((e) => e.copy && e.dest.endsWith("runtime.json"));
|
|
6880
|
-
if (!runtimeEntry)
|
|
7039
|
+
if (!pkgJson.omp?.runtime)
|
|
6881
7040
|
return null;
|
|
6882
|
-
|
|
7041
|
+
const storeDir = getStoreDir(global);
|
|
7042
|
+
const storeName = pkgJson.name.replace(/\//g, "__");
|
|
7043
|
+
return join5(storeDir, `${storeName}.json`);
|
|
6883
7044
|
}
|
|
6884
7045
|
async function removePluginSymlinks(_pluginName, pkgJson, global = true, verbose = true) {
|
|
6885
7046
|
const result = {
|
|
@@ -6901,9 +7062,9 @@ async function removePluginSymlinks(_pluginName, pkgJson, global = true, verbose
|
|
|
6901
7062
|
}
|
|
6902
7063
|
continue;
|
|
6903
7064
|
}
|
|
6904
|
-
const dest =
|
|
7065
|
+
const dest = join5(baseDir, entry.dest);
|
|
6905
7066
|
try {
|
|
6906
|
-
if (
|
|
7067
|
+
if (existsSync5(dest)) {
|
|
6907
7068
|
const stats = lstatSync(dest);
|
|
6908
7069
|
if (entry.copy) {
|
|
6909
7070
|
await rm2(dest, { force: true });
|
|
@@ -6957,9 +7118,9 @@ async function checkPluginSymlinks(pluginName, pkgJson, global = true) {
|
|
|
6957
7118
|
result.broken.push(entry.dest);
|
|
6958
7119
|
continue;
|
|
6959
7120
|
}
|
|
6960
|
-
const src =
|
|
6961
|
-
const dest =
|
|
6962
|
-
if (!
|
|
7121
|
+
const src = join5(sourceDir, entry.src);
|
|
7122
|
+
const dest = join5(baseDir, entry.dest);
|
|
7123
|
+
if (!existsSync5(dest)) {
|
|
6963
7124
|
result.missing.push(entry.dest);
|
|
6964
7125
|
continue;
|
|
6965
7126
|
}
|
|
@@ -6975,7 +7136,7 @@ async function checkPluginSymlinks(pluginName, pkgJson, global = true) {
|
|
|
6975
7136
|
}
|
|
6976
7137
|
if (stats.isSymbolicLink()) {
|
|
6977
7138
|
const target = await readlink(dest);
|
|
6978
|
-
if (
|
|
7139
|
+
if (existsSync5(src) && resolve4(target) === resolve4(src)) {
|
|
6979
7140
|
result.valid.push(entry.dest);
|
|
6980
7141
|
} else {
|
|
6981
7142
|
result.broken.push(entry.dest);
|
|
@@ -7076,7 +7237,7 @@ async function runDoctor(options = {}) {
|
|
|
7076
7237
|
console.log(source_default.blue(`Running health checks...
|
|
7077
7238
|
`));
|
|
7078
7239
|
const pluginsDir = isGlobal ? PLUGINS_DIR : ".pi";
|
|
7079
|
-
if (!
|
|
7240
|
+
if (!existsSync6(pluginsDir)) {
|
|
7080
7241
|
results.push({
|
|
7081
7242
|
check: "Plugins directory",
|
|
7082
7243
|
status: "warning",
|
|
@@ -7091,7 +7252,7 @@ async function runDoctor(options = {}) {
|
|
|
7091
7252
|
});
|
|
7092
7253
|
}
|
|
7093
7254
|
const packageJsonPath = isGlobal ? GLOBAL_PACKAGE_JSON : getPluginsJsonPath();
|
|
7094
|
-
if (!
|
|
7255
|
+
if (!existsSync6(packageJsonPath)) {
|
|
7095
7256
|
results.push({
|
|
7096
7257
|
check: "Package manifest",
|
|
7097
7258
|
status: "warning",
|
|
@@ -7106,7 +7267,7 @@ async function runDoctor(options = {}) {
|
|
|
7106
7267
|
});
|
|
7107
7268
|
}
|
|
7108
7269
|
const nodeModules = getNodeModulesDir(isGlobal);
|
|
7109
|
-
if (!
|
|
7270
|
+
if (!existsSync6(nodeModules)) {
|
|
7110
7271
|
results.push({
|
|
7111
7272
|
check: "Node modules",
|
|
7112
7273
|
status: "warning",
|
|
@@ -7237,7 +7398,7 @@ async function runDoctor(options = {}) {
|
|
|
7237
7398
|
}
|
|
7238
7399
|
const schemaErrors = [];
|
|
7239
7400
|
for (const name of Object.keys(pluginsJson.plugins)) {
|
|
7240
|
-
const pkgPath =
|
|
7401
|
+
const pkgPath = join6(nodeModules, name, "package.json");
|
|
7241
7402
|
try {
|
|
7242
7403
|
const raw = await readFile2(pkgPath, "utf-8");
|
|
7243
7404
|
let parsed;
|
|
@@ -7483,6 +7644,7 @@ Conflicts cannot be auto-fixed. Please resolve manually:`));
|
|
|
7483
7644
|
console.log(source_default.dim(` - ${conflict}`));
|
|
7484
7645
|
}
|
|
7485
7646
|
}
|
|
7647
|
+
await writeLoader(isGlobal);
|
|
7486
7648
|
if (fixedAnything) {
|
|
7487
7649
|
console.log(source_default.green(`
|
|
7488
7650
|
\u2713 Fixes applied. Run 'omp doctor' again to verify.`));
|
|
@@ -7544,6 +7706,7 @@ async function enablePlugin(name, options = {}) {
|
|
|
7544
7706
|
}
|
|
7545
7707
|
throw saveErr;
|
|
7546
7708
|
}
|
|
7709
|
+
await writeLoader(isGlobal);
|
|
7547
7710
|
if (options.json) {
|
|
7548
7711
|
console.log(JSON.stringify({ name, enabled: true }, null, 2));
|
|
7549
7712
|
} else {
|
|
@@ -9493,9 +9656,9 @@ async function initProject(options = {}) {
|
|
|
9493
9656
|
|
|
9494
9657
|
// src/commands/install.ts
|
|
9495
9658
|
import { execFileSync as execFileSync2 } from "child_process";
|
|
9496
|
-
import { existsSync as
|
|
9659
|
+
import { existsSync as existsSync8 } from "fs";
|
|
9497
9660
|
import { cp, mkdir as mkdir5, readFile as readFile4, rm as rm3 } from "fs/promises";
|
|
9498
|
-
import { basename, join as
|
|
9661
|
+
import { basename, join as join8, resolve as resolve7 } from "path";
|
|
9499
9662
|
import { createInterface as createInterface3 } from "readline";
|
|
9500
9663
|
init_lockfile();
|
|
9501
9664
|
init_npm();
|
|
@@ -9945,14 +10108,14 @@ Installing ${pkgSpec}...`));
|
|
|
9945
10108
|
dryRunOps.push({
|
|
9946
10109
|
type: "copy",
|
|
9947
10110
|
description: `Copy ${entry.src} to ${entry.dest}`,
|
|
9948
|
-
path:
|
|
10111
|
+
path: join8(baseDir, entry.dest),
|
|
9949
10112
|
target: entry.src
|
|
9950
10113
|
});
|
|
9951
10114
|
} else {
|
|
9952
10115
|
dryRunOps.push({
|
|
9953
10116
|
type: "symlink",
|
|
9954
10117
|
description: `Symlink ${entry.dest} \u2192 ${entry.src}`,
|
|
9955
|
-
path:
|
|
10118
|
+
path: join8(baseDir, entry.dest),
|
|
9956
10119
|
target: entry.src
|
|
9957
10120
|
});
|
|
9958
10121
|
}
|
|
@@ -9964,7 +10127,7 @@ Installing ${pkgSpec}...`));
|
|
|
9964
10127
|
dryRunOps.push({
|
|
9965
10128
|
type: "symlink",
|
|
9966
10129
|
description: `Symlink from ${depName}: ${entry.dest} \u2192 ${entry.src}`,
|
|
9967
|
-
path:
|
|
10130
|
+
path: join8(baseDir, entry.dest),
|
|
9968
10131
|
target: `${depName}/${entry.src}`
|
|
9969
10132
|
});
|
|
9970
10133
|
}
|
|
@@ -10192,7 +10355,7 @@ Installing ${pkgSpec}...`));
|
|
|
10192
10355
|
const baseDir = isGlobal ? PI_CONFIG_DIR : getProjectPiDir();
|
|
10193
10356
|
for (const dest of createdSymlinks) {
|
|
10194
10357
|
try {
|
|
10195
|
-
await rm3(
|
|
10358
|
+
await rm3(join8(baseDir, dest), { force: true, recursive: true });
|
|
10196
10359
|
} catch {}
|
|
10197
10360
|
}
|
|
10198
10361
|
}
|
|
@@ -10215,6 +10378,9 @@ Installing ${pkgSpec}...`));
|
|
|
10215
10378
|
}
|
|
10216
10379
|
const successful = results.filter((r) => r.success);
|
|
10217
10380
|
const failed = results.filter((r) => !r.success);
|
|
10381
|
+
if (!options.dryRun && successful.length > 0) {
|
|
10382
|
+
await writeLoader(isGlobal);
|
|
10383
|
+
}
|
|
10218
10384
|
log();
|
|
10219
10385
|
if (options.dryRun) {
|
|
10220
10386
|
log(source_default.cyan(`\u2713 Dry-run complete: ${successful.length} plugin(s) would be installed`));
|
|
@@ -10236,10 +10402,10 @@ Installing ${pkgSpec}...`));
|
|
|
10236
10402
|
}
|
|
10237
10403
|
async function installLocalPlugin(localPath, isGlobal, options) {
|
|
10238
10404
|
if (localPath.startsWith("~")) {
|
|
10239
|
-
localPath =
|
|
10405
|
+
localPath = join8(process.env.HOME || "", localPath.slice(1));
|
|
10240
10406
|
}
|
|
10241
10407
|
localPath = resolve7(localPath);
|
|
10242
|
-
if (!
|
|
10408
|
+
if (!existsSync8(localPath)) {
|
|
10243
10409
|
log(source_default.red(`Error: Path does not exist: ${localPath}`));
|
|
10244
10410
|
process.exitCode = 1;
|
|
10245
10411
|
return {
|
|
@@ -10252,13 +10418,13 @@ async function installLocalPlugin(localPath, isGlobal, options) {
|
|
|
10252
10418
|
const _prefix = isGlobal ? PLUGINS_DIR : getProjectPiDir();
|
|
10253
10419
|
const nodeModules = getNodeModulesDir(isGlobal);
|
|
10254
10420
|
try {
|
|
10255
|
-
const localPkgJsonPath =
|
|
10421
|
+
const localPkgJsonPath = join8(localPath, "package.json");
|
|
10256
10422
|
let pkgJson;
|
|
10257
|
-
if (
|
|
10423
|
+
if (existsSync8(localPkgJsonPath)) {
|
|
10258
10424
|
pkgJson = JSON.parse(await readFile4(localPkgJsonPath, "utf-8"));
|
|
10259
10425
|
} else {
|
|
10260
|
-
const ompJsonPath =
|
|
10261
|
-
if (
|
|
10426
|
+
const ompJsonPath = join8(localPath, "omp.json");
|
|
10427
|
+
if (existsSync8(ompJsonPath)) {
|
|
10262
10428
|
const ompJson = JSON.parse(await readFile4(ompJsonPath, "utf-8"));
|
|
10263
10429
|
pkgJson = {
|
|
10264
10430
|
name: ompJson.name || basename(localPath),
|
|
@@ -10278,7 +10444,7 @@ async function installLocalPlugin(localPath, isGlobal, options) {
|
|
|
10278
10444
|
}
|
|
10279
10445
|
}
|
|
10280
10446
|
const pluginName = pkgJson.name;
|
|
10281
|
-
const pluginDir =
|
|
10447
|
+
const pluginDir = join8(nodeModules, pluginName);
|
|
10282
10448
|
const intraDupes = detectIntraPluginDuplicates(pkgJson);
|
|
10283
10449
|
if (intraDupes.length > 0) {
|
|
10284
10450
|
log(source_default.red(`
|
|
@@ -10309,14 +10475,14 @@ Error: Plugin has duplicate destinations:`));
|
|
|
10309
10475
|
dryRunOps.push({
|
|
10310
10476
|
type: "copy",
|
|
10311
10477
|
description: `Copy ${entry.src} to ${entry.dest}`,
|
|
10312
|
-
path:
|
|
10478
|
+
path: join8(baseDir, entry.dest),
|
|
10313
10479
|
target: entry.src
|
|
10314
10480
|
});
|
|
10315
10481
|
} else {
|
|
10316
10482
|
dryRunOps.push({
|
|
10317
10483
|
type: "symlink",
|
|
10318
10484
|
description: `Symlink ${entry.dest} \u2192 ${entry.src}`,
|
|
10319
|
-
path:
|
|
10485
|
+
path: join8(baseDir, entry.dest),
|
|
10320
10486
|
target: entry.src
|
|
10321
10487
|
});
|
|
10322
10488
|
}
|
|
@@ -10337,7 +10503,7 @@ Error: Plugin has duplicate destinations:`));
|
|
|
10337
10503
|
log(source_default.blue(`
|
|
10338
10504
|
Installing ${pluginName} from ${localPath}...`));
|
|
10339
10505
|
await mkdir5(nodeModules, { recursive: true });
|
|
10340
|
-
if (
|
|
10506
|
+
if (existsSync8(pluginDir)) {
|
|
10341
10507
|
await rm3(pluginDir, { recursive: true, force: true });
|
|
10342
10508
|
}
|
|
10343
10509
|
await cp(localPath, pluginDir, { recursive: true });
|
|
@@ -10371,7 +10537,7 @@ Installing ${pluginName} from ${localPath}...`));
|
|
|
10371
10537
|
const baseDir = isGlobal ? PI_CONFIG_DIR : getProjectPiDir();
|
|
10372
10538
|
for (const entry of pkgJson.omp.install) {
|
|
10373
10539
|
try {
|
|
10374
|
-
await rm3(
|
|
10540
|
+
await rm3(join8(baseDir, entry.dest), { force: true, recursive: true });
|
|
10375
10541
|
} catch {}
|
|
10376
10542
|
}
|
|
10377
10543
|
}
|
|
@@ -10393,9 +10559,9 @@ Installing ${pluginName} from ${localPath}...`));
|
|
|
10393
10559
|
}
|
|
10394
10560
|
|
|
10395
10561
|
// src/commands/link.ts
|
|
10396
|
-
import { existsSync as
|
|
10562
|
+
import { existsSync as existsSync9, lstatSync as lstatSync2 } from "fs";
|
|
10397
10563
|
import { mkdir as mkdir6, readFile as readFile5, rm as rm4, symlink as symlink2, writeFile as writeFile4 } from "fs/promises";
|
|
10398
|
-
import { basename as basename2, dirname as dirname5, join as
|
|
10564
|
+
import { basename as basename2, dirname as dirname5, join as join9, resolve as resolve8 } from "path";
|
|
10399
10565
|
import { createInterface as createInterface4 } from "readline";
|
|
10400
10566
|
init_paths();
|
|
10401
10567
|
init_source();
|
|
@@ -10416,18 +10582,18 @@ async function linkPlugin(localPath, options = {}) {
|
|
|
10416
10582
|
const isGlobal = resolveScope(options);
|
|
10417
10583
|
const nodeModules = getNodeModulesDir(isGlobal);
|
|
10418
10584
|
if (localPath.startsWith("~")) {
|
|
10419
|
-
localPath =
|
|
10585
|
+
localPath = join9(process.env.HOME || "", localPath.slice(1));
|
|
10420
10586
|
}
|
|
10421
10587
|
localPath = resolve8(localPath);
|
|
10422
|
-
if (!
|
|
10588
|
+
if (!existsSync9(localPath)) {
|
|
10423
10589
|
console.log(source_default.red(`Error: Path does not exist: ${localPath}`));
|
|
10424
10590
|
process.exitCode = 1;
|
|
10425
10591
|
return;
|
|
10426
10592
|
}
|
|
10427
10593
|
let pkgJson;
|
|
10428
|
-
const localPkgJsonPath =
|
|
10429
|
-
const localOmpJsonPath =
|
|
10430
|
-
if (
|
|
10594
|
+
const localPkgJsonPath = join9(localPath, "package.json");
|
|
10595
|
+
const localOmpJsonPath = join9(localPath, "omp.json");
|
|
10596
|
+
if (existsSync9(localPkgJsonPath)) {
|
|
10431
10597
|
try {
|
|
10432
10598
|
pkgJson = JSON.parse(await readFile5(localPkgJsonPath, "utf-8"));
|
|
10433
10599
|
} catch (err) {
|
|
@@ -10435,7 +10601,7 @@ async function linkPlugin(localPath, options = {}) {
|
|
|
10435
10601
|
process.exitCode = 1;
|
|
10436
10602
|
return;
|
|
10437
10603
|
}
|
|
10438
|
-
} else if (
|
|
10604
|
+
} else if (existsSync9(localOmpJsonPath)) {
|
|
10439
10605
|
let ompJson;
|
|
10440
10606
|
try {
|
|
10441
10607
|
ompJson = JSON.parse(await readFile5(localOmpJsonPath, "utf-8"));
|
|
@@ -10480,7 +10646,7 @@ async function linkPlugin(localPath, options = {}) {
|
|
|
10480
10646
|
process.exitCode = 1;
|
|
10481
10647
|
return;
|
|
10482
10648
|
}
|
|
10483
|
-
const pluginDir =
|
|
10649
|
+
const pluginDir = join9(nodeModules, pluginName);
|
|
10484
10650
|
const pluginsJson = await loadPluginsJson(isGlobal);
|
|
10485
10651
|
if (pluginsJson.plugins[pluginName]) {
|
|
10486
10652
|
const existingSpec = pluginsJson.plugins[pluginName];
|
|
@@ -10502,7 +10668,7 @@ async function linkPlugin(localPath, options = {}) {
|
|
|
10502
10668
|
try {
|
|
10503
10669
|
console.log(source_default.blue(`Linking ${localPath}...`));
|
|
10504
10670
|
await mkdir6(dirname5(pluginDir), { recursive: true });
|
|
10505
|
-
if (
|
|
10671
|
+
if (existsSync9(pluginDir)) {
|
|
10506
10672
|
const stat = lstatSync2(pluginDir);
|
|
10507
10673
|
const isSymlink = stat.isSymbolicLink();
|
|
10508
10674
|
if (!isSymlink) {
|
|
@@ -10546,6 +10712,7 @@ Delete this and proceed with linking? [y/N] `), (ans) => {
|
|
|
10546
10712
|
if (pkgJson.omp?.install?.length) {
|
|
10547
10713
|
await createPluginSymlinks(pluginName, pkgJson, isGlobal);
|
|
10548
10714
|
}
|
|
10715
|
+
await writeLoader(isGlobal);
|
|
10549
10716
|
console.log(source_default.green(`
|
|
10550
10717
|
\u2713 Linked "${pluginName}"${pkgJson.version ? ` v${pkgJson.version}` : ""} (development mode)`));
|
|
10551
10718
|
console.log(source_default.dim(" Changes to the source will be reflected immediately"));
|
|
@@ -10854,9 +11021,9 @@ Search failed: ${error2.message}`));
|
|
|
10854
11021
|
}
|
|
10855
11022
|
|
|
10856
11023
|
// src/commands/uninstall.ts
|
|
10857
|
-
import { existsSync as
|
|
11024
|
+
import { existsSync as existsSync10 } from "fs";
|
|
10858
11025
|
import { rm as rm5 } from "fs/promises";
|
|
10859
|
-
import { join as
|
|
11026
|
+
import { join as join10 } from "path";
|
|
10860
11027
|
import { createInterface as createInterface5 } from "readline";
|
|
10861
11028
|
init_npm();
|
|
10862
11029
|
init_paths();
|
|
@@ -10874,8 +11041,8 @@ async function uninstallPlugin(name, options = {}) {
|
|
|
10874
11041
|
}
|
|
10875
11042
|
const pkgJsonPreview = await readPluginPackageJson(name, isGlobal);
|
|
10876
11043
|
const itemsToDelete = [];
|
|
10877
|
-
const pluginDir =
|
|
10878
|
-
if (
|
|
11044
|
+
const pluginDir = join10(nodeModules, name);
|
|
11045
|
+
if (existsSync10(pluginDir)) {
|
|
10879
11046
|
itemsToDelete.push(pluginDir);
|
|
10880
11047
|
}
|
|
10881
11048
|
if (pkgJsonPreview?.omp?.install) {
|
|
@@ -10883,8 +11050,8 @@ async function uninstallPlugin(name, options = {}) {
|
|
|
10883
11050
|
for (const entry of pkgJsonPreview.omp.install) {
|
|
10884
11051
|
const dest = typeof entry === "string" ? entry : entry.dest;
|
|
10885
11052
|
if (dest) {
|
|
10886
|
-
const destPath =
|
|
10887
|
-
if (
|
|
11053
|
+
const destPath = join10(baseDir, dest);
|
|
11054
|
+
if (existsSync10(destPath)) {
|
|
10888
11055
|
itemsToDelete.push(destPath);
|
|
10889
11056
|
}
|
|
10890
11057
|
}
|
|
@@ -11016,8 +11183,8 @@ The following files are not symlinks and were not removed:`));
|
|
|
11016
11183
|
try {
|
|
11017
11184
|
await npmUninstall([name], prefix);
|
|
11018
11185
|
} catch (_err) {
|
|
11019
|
-
const pluginDir2 =
|
|
11020
|
-
if (
|
|
11186
|
+
const pluginDir2 = join10(nodeModules, name);
|
|
11187
|
+
if (existsSync10(pluginDir2)) {
|
|
11021
11188
|
await rm5(pluginDir2, { recursive: true, force: true });
|
|
11022
11189
|
}
|
|
11023
11190
|
}
|
|
@@ -11041,7 +11208,7 @@ The following files are not symlinks and were not removed:`));
|
|
|
11041
11208
|
|
|
11042
11209
|
// src/commands/update.ts
|
|
11043
11210
|
import { rm as rm6 } from "fs/promises";
|
|
11044
|
-
import { join as
|
|
11211
|
+
import { join as join11 } from "path";
|
|
11045
11212
|
init_npm();
|
|
11046
11213
|
init_output();
|
|
11047
11214
|
init_paths();
|
|
@@ -11103,7 +11270,7 @@ async function updatePlugin(name, options = {}) {
|
|
|
11103
11270
|
dryRunOps.push({
|
|
11104
11271
|
type: "symlink-remove",
|
|
11105
11272
|
description: `Remove symlink: ${entry.dest}`,
|
|
11106
|
-
path:
|
|
11273
|
+
path: join11(baseDir, entry.dest)
|
|
11107
11274
|
});
|
|
11108
11275
|
}
|
|
11109
11276
|
}
|
|
@@ -11120,7 +11287,7 @@ async function updatePlugin(name, options = {}) {
|
|
|
11120
11287
|
dryRunOps.push({
|
|
11121
11288
|
type: "symlink-create",
|
|
11122
11289
|
description: `Create symlink: ${entry.dest} \u2192 ${entry.src}`,
|
|
11123
|
-
path:
|
|
11290
|
+
path: join11(baseDir, entry.dest)
|
|
11124
11291
|
});
|
|
11125
11292
|
}
|
|
11126
11293
|
}
|
|
@@ -11188,7 +11355,7 @@ async function updatePlugin(name, options = {}) {
|
|
|
11188
11355
|
const newDests = new Set(newEntries.map((e) => e.dest));
|
|
11189
11356
|
for (const oldEntry of oldEntries) {
|
|
11190
11357
|
if (!newDests.has(oldEntry.dest)) {
|
|
11191
|
-
const dest =
|
|
11358
|
+
const dest = join11(baseDir, oldEntry.dest);
|
|
11192
11359
|
try {
|
|
11193
11360
|
await rm6(dest, { force: true });
|
|
11194
11361
|
log(source_default.dim(` Removed orphaned: ${oldEntry.dest}`));
|
|
@@ -11211,6 +11378,9 @@ async function updatePlugin(name, options = {}) {
|
|
|
11211
11378
|
}
|
|
11212
11379
|
}
|
|
11213
11380
|
const updated = results.filter((r) => r.from !== r.to);
|
|
11381
|
+
if (results.length > 0) {
|
|
11382
|
+
await writeLoader(isGlobal);
|
|
11383
|
+
}
|
|
11214
11384
|
log();
|
|
11215
11385
|
log(source_default.dim(`Updated: ${updated.length}, Already latest: ${results.length - updated.length}`));
|
|
11216
11386
|
if (options.json) {
|
|
@@ -11248,9 +11418,9 @@ async function updatePlugin(name, options = {}) {
|
|
|
11248
11418
|
}
|
|
11249
11419
|
|
|
11250
11420
|
// src/commands/why.ts
|
|
11251
|
-
import { existsSync as
|
|
11421
|
+
import { existsSync as existsSync11, lstatSync as lstatSync3 } from "fs";
|
|
11252
11422
|
import { readlink as readlink2 } from "fs/promises";
|
|
11253
|
-
import { isAbsolute as isAbsolute4, join as
|
|
11423
|
+
import { isAbsolute as isAbsolute4, join as join12, relative as relative4, resolve as resolve9 } from "path";
|
|
11254
11424
|
init_paths();
|
|
11255
11425
|
init_source();
|
|
11256
11426
|
function isPathWithinBase3(basePath, targetPath) {
|
|
@@ -11289,14 +11459,14 @@ async function whyFile(filePath, options = {}) {
|
|
|
11289
11459
|
if (!relativePath.startsWith("agent/")) {
|
|
11290
11460
|
const withAgent = `agent/${relativePath}`;
|
|
11291
11461
|
if (isPathWithinBase3(baseDir, withAgent)) {
|
|
11292
|
-
const fullWithAgent =
|
|
11293
|
-
if (
|
|
11462
|
+
const fullWithAgent = join12(baseDir, withAgent);
|
|
11463
|
+
if (existsSync11(fullWithAgent)) {
|
|
11294
11464
|
relativePath = withAgent;
|
|
11295
11465
|
}
|
|
11296
11466
|
}
|
|
11297
11467
|
}
|
|
11298
|
-
const fullPath =
|
|
11299
|
-
if (!
|
|
11468
|
+
const fullPath = join12(baseDir, relativePath);
|
|
11469
|
+
if (!existsSync11(fullPath)) {
|
|
11300
11470
|
console.log(source_default.yellow(`File not found: ${fullPath}`));
|
|
11301
11471
|
process.exitCode = 1;
|
|
11302
11472
|
return;
|
|
@@ -11336,7 +11506,7 @@ async function whyFile(filePath, options = {}) {
|
|
|
11336
11506
|
console.log(source_default.dim(" It may have been manually created or the symlink was replaced."));
|
|
11337
11507
|
console.log(source_default.dim(` Expected to be installed by: ${result.plugin}`));
|
|
11338
11508
|
} else {
|
|
11339
|
-
const expectedSrc =
|
|
11509
|
+
const expectedSrc = join12(getPluginSourceDir(result.plugin, isGlobal), result.entry.src);
|
|
11340
11510
|
const resolvedTarget = resolve9(fullPath, "..", target);
|
|
11341
11511
|
if (resolvedTarget !== expectedSrc) {
|
|
11342
11512
|
console.log(source_default.yellow("\u26A0 Symlink target does not match expected source"));
|
|
@@ -11397,7 +11567,7 @@ var {
|
|
|
11397
11567
|
} = import__.default;
|
|
11398
11568
|
|
|
11399
11569
|
// src/cli.ts
|
|
11400
|
-
program.name("omp").description("Oh My Pi - Plugin manager for pi configuration").version("0.
|
|
11570
|
+
program.name("omp").description("Oh My Pi - Plugin manager for pi configuration").version("0.9.0");
|
|
11401
11571
|
program.command("install [packages...]").alias("i").description("Install plugin(s). No args = install from plugins.json").addHelpText("after", `
|
|
11402
11572
|
Examples:
|
|
11403
11573
|
$ omp install @oh-my-pi/subagents # Install from npm (all features)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAkGD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsf1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enable.d.ts","sourceRoot":"","sources":["../../src/commands/enable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enable.d.ts","sourceRoot":"","sources":["../../src/commands/enable.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ElG;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEnG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAQA,OAAO,EAKN,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAGtB,MAAM,eAAe,CAAC;AAQvB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,2BAA2B;IAC3B,WAAW,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAwC5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,cAAc,EAAE,YAAY,GAAG,SAAS,EACxC,WAAW,EAAE,OAAO,GAClB;IAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,CAwExE;AAuFD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AA6ID;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAirBpG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsL5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiR5F"}
|
package/dist/loader.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OMP Tool Loader Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates ~/.pi/agent/tools/omp/index.ts with hardcoded tool paths.
|
|
5
|
+
* No symlinks needed - tools are imported directly from node_modules.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Write the OMP loader with hardcoded tool paths and runtime redirects
|
|
9
|
+
*/
|
|
10
|
+
export declare function writeLoader(global?: boolean): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Check if the OMP loader exists
|
|
13
|
+
*/
|
|
14
|
+
export declare function loaderExists(global?: boolean): boolean;
|
|
15
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4CH;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2H9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,UAAO,GAAG,OAAO,CAGnD"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -40,6 +40,10 @@ export interface OmpFeature {
|
|
|
40
40
|
export interface OmpField {
|
|
41
41
|
/** Top-level install entries (always installed, not feature-gated) */
|
|
42
42
|
install?: OmpInstallEntry[];
|
|
43
|
+
/** Path to tools factory (relative to package root, e.g. "tools" or "tools/index.ts") */
|
|
44
|
+
tools?: string;
|
|
45
|
+
/** Path to runtime config JSON (relative to package root, e.g. "tools/runtime.json") */
|
|
46
|
+
runtime?: string;
|
|
43
47
|
/** Top-level runtime variables (always available) */
|
|
44
48
|
variables?: Record<string, OmpVariable>;
|
|
45
49
|
/** Named features with their own install entries and variables */
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/symlinks.d.ts
CHANGED
|
@@ -37,13 +37,19 @@ export declare function createPluginSymlinks(pluginName: string, pkgJson: Plugin
|
|
|
37
37
|
*/
|
|
38
38
|
export declare function readRuntimeConfig(runtimePath: string): PluginRuntimeConfig;
|
|
39
39
|
/**
|
|
40
|
-
* Write runtime
|
|
40
|
+
* Write runtime config to the store location
|
|
41
41
|
*/
|
|
42
42
|
export declare function writeRuntimeConfig(runtimePath: string, config: PluginRuntimeConfig, verbose?: boolean): Promise<void>;
|
|
43
43
|
/**
|
|
44
|
-
* Get the path to a plugin's runtime
|
|
44
|
+
* Get the path to a plugin's runtime config in the store
|
|
45
|
+
* Uses the omp.runtime field from package.json
|
|
46
|
+
* Store path: ~/.pi/plugins/store/@scope__name.json
|
|
45
47
|
*/
|
|
46
48
|
export declare function getRuntimeConfigPath(pkgJson: PluginPackageJson, global?: boolean): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* Get the default runtime config path in node_modules (for copying defaults)
|
|
51
|
+
*/
|
|
52
|
+
export declare function getDefaultRuntimeConfigPath(pkgJson: PluginPackageJson, global?: boolean): string | null;
|
|
47
53
|
/**
|
|
48
54
|
* Remove symlinks and copied files for a plugin's omp.install entries
|
|
49
55
|
*/
|
package/dist/symlinks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symlinks.d.ts","sourceRoot":"","sources":["../src/symlinks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAMzG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,EAAE,CAE/E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAEnH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,EAAE,CAIjF;AAuCD,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,UAAO,EACb,OAAO,UAAO,EACd,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"symlinks.d.ts","sourceRoot":"","sources":["../src/symlinks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAMzG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,EAAE,CAE/E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAEnH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,EAAE,CAIjF;AAuCD,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,UAAO,EACb,OAAO,UAAO,EACd,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,aAAa,CAAC,CA4IxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAa1E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,UAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAyBf;AAUD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAO,GAAG,MAAM,GAAG,IAAI,CAM7F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAO,GAAG,MAAM,GAAG,IAAI,CAMpG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,UAAO,EACb,OAAO,UAAO,GACZ,OAAO,CAAC,oBAAoB,CAAC,CAsE/B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,UAAO,GACX,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4DnE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC9C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAChD,MAAM,UAAO,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC,CAsB5D"}
|