pi-harness-runtime 1.1.107 → 1.1.109
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/index.ts +10 -1
- package/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/dist/embedder.d.ts.map +1 -1
- package/packages/qdrant-skills/dist/embedder.js +22 -3
- package/packages/qdrant-skills/dist/embedder.js.map +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/qdrant-skills/src/embedder.ts +26 -5
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
package/index.ts
CHANGED
|
@@ -223,7 +223,16 @@ async function initQdrant(): Promise<void> {
|
|
|
223
223
|
const { getQdrantConfig } = await import("./packages/skills/src/loader.js");
|
|
224
224
|
const cfg = getQdrantConfig();
|
|
225
225
|
if (cfg) {
|
|
226
|
-
|
|
226
|
+
// Check if OpenAI embedding key is available
|
|
227
|
+
const { getOpenAIApiKey } = await import("./packages/qdrant-skills/src/embedder.js");
|
|
228
|
+
const embeddingKey = getOpenAIApiKey();
|
|
229
|
+
if (embeddingKey) {
|
|
230
|
+
console.error("[pi-harness] Qdrant vector search ready");
|
|
231
|
+
} else {
|
|
232
|
+
console.error("[pi-harness] Qdrant ready (no embedding key — skills won't be vector-indexed)");
|
|
233
|
+
const home = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
|
|
234
|
+
console.error('[pi-harness] For vector search: echo "{openai-api-key}" > ~/.pi-harness-runtime/keys/openai-api-key.txt');
|
|
235
|
+
}
|
|
227
236
|
} else {
|
|
228
237
|
const home = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
|
|
229
238
|
console.error("[pi-harness] Qdrant not configured. Set keys to enable vector skill search:");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/capability-registry",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.109",
|
|
4
4
|
"description": "Capability Registry for pi-harness-runtime — tracks model capabilities and enables capability-based routing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/provider-router",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.109",
|
|
4
4
|
"description": "Enhanced Provider Router for pi-harness-runtime — intelligent routing with capabilities, costs, and quotas",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/provider-router.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CA8C/C;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAgC1B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,CAWnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAAE,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC,CAuB1E"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Get OpenAI API key for embeddings
|
|
9
9
|
*/
|
|
10
10
|
export function getOpenAIApiKey() {
|
|
11
|
-
//
|
|
11
|
+
// 1. Env vars (same priority as Jev)
|
|
12
12
|
if (process.env.OPENAI_API_KEY) {
|
|
13
13
|
return process.env.OPENAI_API_KEY;
|
|
14
14
|
}
|
|
@@ -18,13 +18,32 @@ export function getOpenAIApiKey() {
|
|
|
18
18
|
if (process.env.OPENROUTER_API_KEY) {
|
|
19
19
|
return process.env.OPENROUTER_API_KEY;
|
|
20
20
|
}
|
|
21
|
-
//
|
|
21
|
+
// 2. Keys file
|
|
22
22
|
try {
|
|
23
23
|
const { existsSync, readFileSync } = require("node:fs");
|
|
24
24
|
const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
|
|
25
25
|
const keyPath = `${homedir}/.pi-harness-runtime/keys/openai-api-key.txt`;
|
|
26
26
|
if (existsSync(keyPath)) {
|
|
27
|
-
|
|
27
|
+
const val = readFileSync(keyPath, "utf-8").trim();
|
|
28
|
+
if (val.length > 5)
|
|
29
|
+
return val;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// ignore
|
|
34
|
+
}
|
|
35
|
+
// 3. pi.dev auth.json (OpenAI OAuth tokens stored by pi.dev login)
|
|
36
|
+
try {
|
|
37
|
+
const { existsSync, readFileSync } = require("node:fs");
|
|
38
|
+
const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
|
|
39
|
+
const authPath = `${homedir}/.pi/agent/auth.json`;
|
|
40
|
+
if (existsSync(authPath)) {
|
|
41
|
+
const auth = JSON.parse(readFileSync(authPath, "utf-8"));
|
|
42
|
+
// Try openai first (API key), then openai-codex (OAuth access token)
|
|
43
|
+
const entry = auth.openai ?? auth["openai-codex"];
|
|
44
|
+
if (entry) {
|
|
45
|
+
return entry.access ?? entry.key ?? null;
|
|
46
|
+
}
|
|
28
47
|
}
|
|
29
48
|
}
|
|
30
49
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B
|
|
1
|
+
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export interface EmbeddingResult {
|
|
|
19
19
|
* Get OpenAI API key for embeddings
|
|
20
20
|
*/
|
|
21
21
|
export function getOpenAIApiKey(): string | null {
|
|
22
|
-
//
|
|
22
|
+
// 1. Env vars (same priority as Jev)
|
|
23
23
|
if (process.env.OPENAI_API_KEY) {
|
|
24
24
|
return process.env.OPENAI_API_KEY;
|
|
25
25
|
}
|
|
@@ -29,19 +29,40 @@ export function getOpenAIApiKey(): string | null {
|
|
|
29
29
|
if (process.env.OPENROUTER_API_KEY) {
|
|
30
30
|
return process.env.OPENROUTER_API_KEY;
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
//
|
|
32
|
+
|
|
33
|
+
// 2. Keys file
|
|
34
34
|
try {
|
|
35
35
|
const { existsSync, readFileSync } = require("node:fs");
|
|
36
36
|
const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
|
|
37
37
|
const keyPath = `${homedir}/.pi-harness-runtime/keys/openai-api-key.txt`;
|
|
38
38
|
if (existsSync(keyPath)) {
|
|
39
|
-
|
|
39
|
+
const val = readFileSync(keyPath, "utf-8").trim();
|
|
40
|
+
if (val.length > 5) return val;
|
|
40
41
|
}
|
|
41
42
|
} catch {
|
|
42
43
|
// ignore
|
|
43
44
|
}
|
|
44
|
-
|
|
45
|
+
|
|
46
|
+
// 3. pi.dev auth.json (OpenAI OAuth tokens stored by pi.dev login)
|
|
47
|
+
try {
|
|
48
|
+
const { existsSync, readFileSync } = require("node:fs");
|
|
49
|
+
const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
|
|
50
|
+
const authPath = `${homedir}/.pi/agent/auth.json`;
|
|
51
|
+
if (existsSync(authPath)) {
|
|
52
|
+
const auth = JSON.parse(readFileSync(authPath, "utf-8")) as {
|
|
53
|
+
openai?: { type?: string; key?: string; access?: string };
|
|
54
|
+
"openai-codex"?: { type?: string; key?: string; access?: string };
|
|
55
|
+
};
|
|
56
|
+
// Try openai first (API key), then openai-codex (OAuth access token)
|
|
57
|
+
const entry = auth.openai ?? auth["openai-codex"];
|
|
58
|
+
if (entry) {
|
|
59
|
+
return entry.access ?? entry.key ?? null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
} catch {
|
|
63
|
+
// ignore
|
|
64
|
+
}
|
|
65
|
+
|
|
45
66
|
return null;
|
|
46
67
|
}
|
|
47
68
|
|