jeopi-cli 16.2.15 → 16.2.17
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/CHANGELOG.md +19 -1
- package/dist/cli.js +2512 -2511
- package/dist/types/extensibility/plugins/types.d.ts +2 -0
- package/package.json +12 -12
- package/src/extensibility/extensions/loader.ts +6 -2
- package/src/extensibility/plugins/installer.ts +2 -2
- package/src/extensibility/plugins/legacy-pi-bundled-keys.ts +3 -0
- package/src/extensibility/plugins/legacy-pi-bundled-registry.ts +11 -0
- package/src/extensibility/plugins/loader.ts +6 -5
- package/src/extensibility/plugins/manager.ts +8 -6
- package/src/extensibility/plugins/types.ts +2 -0
- package/src/system-prompt.test.ts +1 -1
|
@@ -47,6 +47,8 @@ export interface PluginPackageJson {
|
|
|
47
47
|
version: string;
|
|
48
48
|
description?: string;
|
|
49
49
|
jeopi?: PluginManifest;
|
|
50
|
+
/** Pre-rebrand manifest key, still honored for installed legacy plugins. */
|
|
51
|
+
omp?: PluginManifest;
|
|
50
52
|
pi?: PluginManifest;
|
|
51
53
|
}
|
|
52
54
|
export type PluginSettingType = "string" | "number" | "boolean" | "enum";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "jeopi-cli",
|
|
4
|
-
"version": "16.2.
|
|
4
|
+
"version": "16.2.17",
|
|
5
5
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://github.com/akillness/jeopi",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -56,17 +56,17 @@
|
|
|
56
56
|
"@agentclientprotocol/sdk": "0.25.0",
|
|
57
57
|
"@babel/parser": "^7.29.7",
|
|
58
58
|
"@mozilla/readability": "^0.6.0",
|
|
59
|
-
"jeopi-hashline": "16.2.
|
|
60
|
-
"jeopi-stats": "16.2.
|
|
61
|
-
"jeopi-agent-core": "16.2.
|
|
62
|
-
"jeopi-ai": "16.2.
|
|
63
|
-
"jeopi-catalog": "16.2.
|
|
64
|
-
"jeopi-mnemopi": "16.2.
|
|
65
|
-
"jeopi-natives": "16.2.
|
|
66
|
-
"jeopi-tui": "16.2.
|
|
67
|
-
"jeopi-utils": "16.2.
|
|
68
|
-
"jeopi-wire": "16.2.
|
|
69
|
-
"jeopi-snapcompact": "16.2.
|
|
59
|
+
"jeopi-hashline": "16.2.17",
|
|
60
|
+
"jeopi-stats": "16.2.17",
|
|
61
|
+
"jeopi-agent-core": "16.2.17",
|
|
62
|
+
"jeopi-ai": "16.2.17",
|
|
63
|
+
"jeopi-catalog": "16.2.17",
|
|
64
|
+
"jeopi-mnemopi": "16.2.17",
|
|
65
|
+
"jeopi-natives": "16.2.17",
|
|
66
|
+
"jeopi-tui": "16.2.17",
|
|
67
|
+
"jeopi-utils": "16.2.17",
|
|
68
|
+
"jeopi-wire": "16.2.17",
|
|
69
|
+
"jeopi-snapcompact": "16.2.17",
|
|
70
70
|
"@opentelemetry/api": "^1.9.1",
|
|
71
71
|
"@opentelemetry/context-async-hooks": "^2.7.1",
|
|
72
72
|
"@opentelemetry/exporter-trace-otlp-proto": "^0.218.0",
|
|
@@ -366,8 +366,12 @@ interface ExtensionManifest {
|
|
|
366
366
|
|
|
367
367
|
async function readExtensionManifest(packageJsonPath: string): Promise<ExtensionManifest | null> {
|
|
368
368
|
try {
|
|
369
|
-
const pkg = (await Bun.file(packageJsonPath).json()) as {
|
|
370
|
-
|
|
369
|
+
const pkg = (await Bun.file(packageJsonPath).json()) as {
|
|
370
|
+
jeopi?: ExtensionManifest;
|
|
371
|
+
omp?: ExtensionManifest;
|
|
372
|
+
pi?: ExtensionManifest;
|
|
373
|
+
};
|
|
374
|
+
const manifest = pkg.jeopi ?? pkg.omp ?? pkg.pi;
|
|
371
375
|
if (manifest && typeof manifest === "object") {
|
|
372
376
|
return manifest;
|
|
373
377
|
}
|
|
@@ -75,7 +75,7 @@ export async function installPlugin(packageName: string): Promise<InstalledPlugi
|
|
|
75
75
|
name: pkg.name,
|
|
76
76
|
version: pkg.version,
|
|
77
77
|
path: path.join(PLUGINS_DIR, "node_modules", actualName),
|
|
78
|
-
manifest: pkg.omp || pkg.pi || { version: pkg.version },
|
|
78
|
+
manifest: pkg.jeopi || pkg.omp || pkg.pi || { version: pkg.version },
|
|
79
79
|
enabledFeatures: null,
|
|
80
80
|
enabled: true,
|
|
81
81
|
};
|
|
@@ -120,7 +120,7 @@ export async function listPlugins(): Promise<InstalledPlugin[]> {
|
|
|
120
120
|
name,
|
|
121
121
|
version: pkg.version,
|
|
122
122
|
path: pluginPath,
|
|
123
|
-
manifest: pkg.omp || pkg.pi || { version: pkg.version },
|
|
123
|
+
manifest: pkg.jeopi || pkg.omp || pkg.pi || { version: pkg.version },
|
|
124
124
|
enabledFeatures: null,
|
|
125
125
|
enabled: true,
|
|
126
126
|
});
|
|
@@ -292,6 +292,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
292
292
|
"@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/types",
|
|
293
293
|
"@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/web",
|
|
294
294
|
"@oh-my-pi/pi-coding-agent/cli/commands/init-xdg",
|
|
295
|
+
"@oh-my-pi/pi-coding-agent/cli/commands/migrate-legacy",
|
|
295
296
|
"@oh-my-pi/pi-coding-agent/commands/acp",
|
|
296
297
|
"@oh-my-pi/pi-coding-agent/commands/agents",
|
|
297
298
|
"@oh-my-pi/pi-coding-agent/commands/auth-broker",
|
|
@@ -544,6 +545,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
544
545
|
"@oh-my-pi/pi-coding-agent/mcp/transports/http",
|
|
545
546
|
"@oh-my-pi/pi-coding-agent/mcp/transports/sse",
|
|
546
547
|
"@oh-my-pi/pi-coding-agent/mcp/transports/stdio",
|
|
548
|
+
"@oh-my-pi/pi-coding-agent/memories/okf",
|
|
547
549
|
"@oh-my-pi/pi-coding-agent/memories/storage",
|
|
548
550
|
"@oh-my-pi/pi-coding-agent/memory-backend/local-backend",
|
|
549
551
|
"@oh-my-pi/pi-coding-agent/memory-backend/off-backend",
|
|
@@ -772,6 +774,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
772
774
|
"@oh-my-pi/pi-coding-agent/stt/wav",
|
|
773
775
|
"@oh-my-pi/pi-coding-agent/task/agents",
|
|
774
776
|
"@oh-my-pi/pi-coding-agent/task/commands",
|
|
777
|
+
"@oh-my-pi/pi-coding-agent/task/critic-gate",
|
|
775
778
|
"@oh-my-pi/pi-coding-agent/task/discovery",
|
|
776
779
|
"@oh-my-pi/pi-coding-agent/task/executor",
|
|
777
780
|
"@oh-my-pi/pi-coding-agent/task/isolation-runner",
|
|
@@ -211,6 +211,7 @@ import * as bundledPiCodingAgentCliBenchCli from "jeopi-cli/cli/bench-cli";
|
|
|
211
211
|
import * as bundledPiCodingAgentCliClassifyInstallTarget from "jeopi-cli/cli/classify-install-target";
|
|
212
212
|
import * as bundledPiCodingAgentCliClaudeTraceCli from "jeopi-cli/cli/claude-trace-cli";
|
|
213
213
|
import * as bundledPiCodingAgentCliCommandsInitXdg from "jeopi-cli/cli/commands/init-xdg";
|
|
214
|
+
import * as bundledPiCodingAgentCliCommandsMigrateLegacy from "jeopi-cli/cli/commands/migrate-legacy";
|
|
214
215
|
import * as bundledPiCodingAgentCliCompletionGen from "jeopi-cli/cli/completion-gen";
|
|
215
216
|
import * as bundledPiCodingAgentCliConfigCli from "jeopi-cli/cli/config-cli";
|
|
216
217
|
import * as bundledPiCodingAgentCliDryBalanceCli from "jeopi-cli/cli/dry-balance-cli";
|
|
@@ -542,6 +543,7 @@ import * as bundledPiCodingAgentMcpTransportsSse from "jeopi-cli/mcp/transports/
|
|
|
542
543
|
import * as bundledPiCodingAgentMcpTransportsStdio from "jeopi-cli/mcp/transports/stdio";
|
|
543
544
|
import * as bundledPiCodingAgentMcpTypes from "jeopi-cli/mcp/types";
|
|
544
545
|
import * as bundledPiCodingAgentMemories from "jeopi-cli/memories";
|
|
546
|
+
import * as bundledPiCodingAgentMemoriesOkf from "jeopi-cli/memories/okf";
|
|
545
547
|
import * as bundledPiCodingAgentMemoriesStorage from "jeopi-cli/memories/storage";
|
|
546
548
|
import * as bundledPiCodingAgentMemoryBackend from "jeopi-cli/memory-backend";
|
|
547
549
|
import * as bundledPiCodingAgentMemoryBackendLocalBackend from "jeopi-cli/memory-backend/local-backend";
|
|
@@ -773,6 +775,7 @@ import * as bundledPiCodingAgentSttWav from "jeopi-cli/stt/wav";
|
|
|
773
775
|
import * as bundledPiCodingAgentTask from "jeopi-cli/task";
|
|
774
776
|
import * as bundledPiCodingAgentTaskAgents from "jeopi-cli/task/agents";
|
|
775
777
|
import * as bundledPiCodingAgentTaskCommands from "jeopi-cli/task/commands";
|
|
778
|
+
import * as bundledPiCodingAgentTaskCriticGate from "jeopi-cli/task/critic-gate";
|
|
776
779
|
import * as bundledPiCodingAgentTaskDiscovery from "jeopi-cli/task/discovery";
|
|
777
780
|
import * as bundledPiCodingAgentTaskExecutor from "jeopi-cli/task/executor";
|
|
778
781
|
import * as bundledPiCodingAgentTaskIsolationRunner from "jeopi-cli/task/isolation-runner";
|
|
@@ -1657,6 +1660,8 @@ export const BUNDLED_PI_REGISTRY: Readonly<Record<string, Readonly<Record<string
|
|
|
1657
1660
|
"@oh-my-pi/pi-coding-agent/cli/commands/init-xdg": bundledPiCodingAgentCliCommandsInitXdg as unknown as Readonly<
|
|
1658
1661
|
Record<string, unknown>
|
|
1659
1662
|
>,
|
|
1663
|
+
"@oh-my-pi/pi-coding-agent/cli/commands/migrate-legacy":
|
|
1664
|
+
bundledPiCodingAgentCliCommandsMigrateLegacy as unknown as Readonly<Record<string, unknown>>,
|
|
1660
1665
|
"@oh-my-pi/pi-coding-agent/commands/acp": bundledPiCodingAgentCommandsAcp as unknown as Readonly<
|
|
1661
1666
|
Record<string, unknown>
|
|
1662
1667
|
>,
|
|
@@ -2304,6 +2309,9 @@ export const BUNDLED_PI_REGISTRY: Readonly<Record<string, Readonly<Record<string
|
|
|
2304
2309
|
"@oh-my-pi/pi-coding-agent/mcp/transports/stdio": bundledPiCodingAgentMcpTransportsStdio as unknown as Readonly<
|
|
2305
2310
|
Record<string, unknown>
|
|
2306
2311
|
>,
|
|
2312
|
+
"@oh-my-pi/pi-coding-agent/memories/okf": bundledPiCodingAgentMemoriesOkf as unknown as Readonly<
|
|
2313
|
+
Record<string, unknown>
|
|
2314
|
+
>,
|
|
2307
2315
|
"@oh-my-pi/pi-coding-agent/memories/storage": bundledPiCodingAgentMemoriesStorage as unknown as Readonly<
|
|
2308
2316
|
Record<string, unknown>
|
|
2309
2317
|
>,
|
|
@@ -2834,6 +2842,9 @@ export const BUNDLED_PI_REGISTRY: Readonly<Record<string, Readonly<Record<string
|
|
|
2834
2842
|
"@oh-my-pi/pi-coding-agent/task/commands": bundledPiCodingAgentTaskCommands as unknown as Readonly<
|
|
2835
2843
|
Record<string, unknown>
|
|
2836
2844
|
>,
|
|
2845
|
+
"@oh-my-pi/pi-coding-agent/task/critic-gate": bundledPiCodingAgentTaskCriticGate as unknown as Readonly<
|
|
2846
|
+
Record<string, unknown>
|
|
2847
|
+
>,
|
|
2837
2848
|
"@oh-my-pi/pi-coding-agent/task/discovery": bundledPiCodingAgentTaskDiscovery as unknown as Readonly<
|
|
2838
2849
|
Record<string, unknown>
|
|
2839
2850
|
>,
|
|
@@ -117,9 +117,9 @@ async function collectPluginsAtRoot(
|
|
|
117
117
|
throw err;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
const manifest: PluginManifest | undefined = pluginPkg.jeopi || pluginPkg.pi;
|
|
120
|
+
const manifest: PluginManifest | undefined = pluginPkg.jeopi || pluginPkg.omp || pluginPkg.pi;
|
|
121
121
|
if (!manifest) {
|
|
122
|
-
// No jeopi/pi plugin manifest, skip
|
|
122
|
+
// No jeopi/omp/pi plugin manifest, skip
|
|
123
123
|
continue;
|
|
124
124
|
}
|
|
125
125
|
manifest.version = pluginPkg.version;
|
|
@@ -241,13 +241,14 @@ function readDeclaredManifestEntries(dir: string): DeclaredManifestEntries {
|
|
|
241
241
|
} catch {
|
|
242
242
|
return { declared: false, files: [] };
|
|
243
243
|
}
|
|
244
|
-
|
|
244
|
+
type ManifestExtensionEntries = { extensions?: unknown };
|
|
245
|
+
let pkg: { jeopi?: ManifestExtensionEntries; omp?: ManifestExtensionEntries; pi?: ManifestExtensionEntries };
|
|
245
246
|
try {
|
|
246
|
-
pkg = JSON.parse(raw) as
|
|
247
|
+
pkg = JSON.parse(raw) as typeof pkg;
|
|
247
248
|
} catch {
|
|
248
249
|
return { declared: false, files: [] };
|
|
249
250
|
}
|
|
250
|
-
const declared = (pkg.jeopi ?? pkg.pi)?.extensions;
|
|
251
|
+
const declared = (pkg.jeopi ?? pkg.omp ?? pkg.pi)?.extensions;
|
|
251
252
|
if (!Array.isArray(declared) || declared.length === 0) {
|
|
252
253
|
return { declared: false, files: [] };
|
|
253
254
|
}
|
|
@@ -526,7 +526,7 @@ export class PluginManager {
|
|
|
526
526
|
}
|
|
527
527
|
throw err;
|
|
528
528
|
}
|
|
529
|
-
const manifest: PluginManifest = pkg.jeopi || pkg.pi || { version: pkg.version };
|
|
529
|
+
const manifest: PluginManifest = pkg.jeopi || pkg.omp || pkg.pi || { version: pkg.version };
|
|
530
530
|
manifest.version = pkg.version;
|
|
531
531
|
|
|
532
532
|
// Resolve enabled features
|
|
@@ -652,7 +652,9 @@ export class PluginManager {
|
|
|
652
652
|
if (isEnoent(err)) continue;
|
|
653
653
|
throw err;
|
|
654
654
|
}
|
|
655
|
-
const manifest: PluginManifest = pluginPkg.jeopi ||
|
|
655
|
+
const manifest: PluginManifest = pluginPkg.jeopi ||
|
|
656
|
+
pluginPkg.omp ||
|
|
657
|
+
pluginPkg.pi || { version: pluginPkg.version };
|
|
656
658
|
manifest.version = pluginPkg.version;
|
|
657
659
|
|
|
658
660
|
const runtimeState = config.plugins[name] || {
|
|
@@ -717,7 +719,7 @@ export class PluginManager {
|
|
|
717
719
|
|
|
718
720
|
await fs.promises.symlink(absolutePath, linkPath);
|
|
719
721
|
|
|
720
|
-
const manifest: PluginManifest = pkg.jeopi || pkg.pi || { version: pkg.version };
|
|
722
|
+
const manifest: PluginManifest = pkg.jeopi || pkg.omp || pkg.pi || { version: pkg.version };
|
|
721
723
|
manifest.version = pkg.version;
|
|
722
724
|
|
|
723
725
|
// Add to runtime config
|
|
@@ -930,15 +932,15 @@ export class PluginManager {
|
|
|
930
932
|
}
|
|
931
933
|
throw err;
|
|
932
934
|
}
|
|
933
|
-
const hasManifest = !!(pluginPkg.jeopi || pluginPkg.pi);
|
|
934
|
-
const manifest: PluginManifest | undefined = pluginPkg.jeopi || pluginPkg.pi;
|
|
935
|
+
const hasManifest = !!(pluginPkg.jeopi || pluginPkg.omp || pluginPkg.pi);
|
|
936
|
+
const manifest: PluginManifest | undefined = pluginPkg.jeopi || pluginPkg.omp || pluginPkg.pi;
|
|
935
937
|
|
|
936
938
|
checks.push({
|
|
937
939
|
name: `plugin:${name}`,
|
|
938
940
|
status: hasManifest ? "ok" : "warning",
|
|
939
941
|
message: hasManifest
|
|
940
942
|
? `v${pluginPkg.version}${pluginPkg.description ? ` - ${pluginPkg.description}` : ""}`
|
|
941
|
-
: `v${pluginPkg.version} - No omp/pi manifest (not a jeopi plugin)`,
|
|
943
|
+
: `v${pluginPkg.version} - No jeopi/omp/pi manifest (not a jeopi plugin)`,
|
|
942
944
|
});
|
|
943
945
|
|
|
944
946
|
// Check tools path exists if specified
|
|
@@ -23,7 +23,7 @@ async function runProbeScenario(options: {
|
|
|
23
23
|
const cacheRoot = path.join(tempRoot, "cache");
|
|
24
24
|
const probeCountPath = path.join(tempRoot, "probe-count");
|
|
25
25
|
await fs.mkdir(binDir, { recursive: true });
|
|
26
|
-
await fs.mkdir(path.join(cacheRoot, "
|
|
26
|
+
await fs.mkdir(path.join(cacheRoot, "jeopi"), { recursive: true });
|
|
27
27
|
const lspciPath = path.join(binDir, "lspci");
|
|
28
28
|
await Bun.write(
|
|
29
29
|
lspciPath,
|