pi-harness-runtime 1.1.83 → 1.1.85

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.
Files changed (99) hide show
  1. package/harness/e2e/chatgpt-quota-scraper.ts +56 -7
  2. package/index.ts +14 -3
  3. package/package.json +1 -1
  4. package/packages/a2a-adapter/package.json +1 -1
  5. package/packages/architecture-generator/package.json +1 -1
  6. package/packages/auth/package.json +1 -1
  7. package/packages/autonomous-refactor/package.json +1 -1
  8. package/packages/autonomous-runtime/package.json +1 -1
  9. package/packages/cache-strategy/package.json +1 -1
  10. package/packages/capability-registry/package.json +1 -1
  11. package/packages/checkpoint/package.json +1 -1
  12. package/packages/cli-plugin-sdk/package.json +1 -1
  13. package/packages/clipboard/package.json +1 -1
  14. package/packages/clipboard-plugin/package.json +1 -1
  15. package/packages/code-generation/package.json +1 -1
  16. package/packages/code-review/package.json +1 -1
  17. package/packages/codex-adapter/package.json +1 -1
  18. package/packages/config-capture/package.json +1 -1
  19. package/packages/context-compiler/package.json +1 -1
  20. package/packages/context-discovery/package.json +1 -1
  21. package/packages/context-manager/package.json +1 -1
  22. package/packages/cookie-sanitizer/package.json +1 -1
  23. package/packages/cost-optimizer/package.json +1 -1
  24. package/packages/dependency-analyzer/package.json +1 -1
  25. package/packages/django-plugin/package.json +1 -1
  26. package/packages/doc-generator/package.json +1 -1
  27. package/packages/evaluation-engine/package.json +1 -1
  28. package/packages/evaluation-runner/package.json +1 -1
  29. package/packages/event-bus/package.json +1 -1
  30. package/packages/event-store/package.json +1 -1
  31. package/packages/experience-replay/package.json +1 -1
  32. package/packages/feedback-collector/package.json +1 -1
  33. package/packages/file-copy-helper/package.json +1 -1
  34. package/packages/framework-detector/package.json +1 -1
  35. package/packages/framework-plugin-sdk/package.json +1 -1
  36. package/packages/frappe-plugin/package.json +1 -1
  37. package/packages/generic-web-plugin/package.json +1 -1
  38. package/packages/health-monitor/package.json +1 -1
  39. package/packages/intent-analyzer/package.json +1 -1
  40. package/packages/jev-judge/dist/index.d.ts +2 -2
  41. package/packages/jev-judge/dist/index.d.ts.map +1 -1
  42. package/packages/jev-judge/dist/index.js +24 -4
  43. package/packages/jev-judge/dist/index.js.map +1 -1
  44. package/packages/jev-judge/package.json +1 -1
  45. package/packages/jev-judge/src/index.ts +25 -5
  46. package/packages/knowledge-graph/package.json +1 -1
  47. package/packages/knowledge-retrieval/package.json +1 -1
  48. package/packages/laravel-plugin/package.json +1 -1
  49. package/packages/learning-engine/package.json +1 -1
  50. package/packages/mcp-adapter/package.json +1 -1
  51. package/packages/memory-engine/package.json +1 -1
  52. package/packages/milestone-manager/package.json +1 -1
  53. package/packages/model-registry/package.json +1 -1
  54. package/packages/nextjs-plugin/package.json +1 -1
  55. package/packages/notification/package.json +1 -1
  56. package/packages/observability/package.json +1 -1
  57. package/packages/okf-indexer/package.json +1 -1
  58. package/packages/performance-optimizer/package.json +1 -1
  59. package/packages/privilege-broker/package.json +1 -1
  60. package/packages/project-analyzer/package.json +1 -1
  61. package/packages/project-bootstrap/package.json +1 -1
  62. package/packages/projection-engine/package.json +1 -1
  63. package/packages/prompt-compiler/package.json +1 -1
  64. package/packages/prompt-versioning/package.json +1 -1
  65. package/packages/provider-adapter-sdk/package.json +1 -1
  66. package/packages/provider-router/package.json +1 -1
  67. package/packages/provider-selector/package.json +1 -1
  68. package/packages/providers/package.json +1 -1
  69. package/packages/quota-manager/package.json +1 -1
  70. package/packages/rate-limiter/package.json +1 -1
  71. package/packages/react-vite-plugin/package.json +1 -1
  72. package/packages/release-manager/package.json +1 -1
  73. package/packages/requirement-compiler/package.json +1 -1
  74. package/packages/runtime/package.json +1 -1
  75. package/packages/scheduler/package.json +1 -1
  76. package/packages/scheduler-adapter/package.json +1 -1
  77. package/packages/session/package.json +1 -1
  78. package/packages/session-api/package.json +1 -1
  79. package/packages/session-export/package.json +1 -1
  80. package/packages/shared-context/package.json +1 -1
  81. package/packages/skill-mcp-client/package.json +1 -1
  82. package/packages/skill-registry/package.json +1 -1
  83. package/packages/sprint-planner/package.json +1 -1
  84. package/packages/subscription-engine/package.json +1 -1
  85. package/packages/task-compiler/package.json +1 -1
  86. package/packages/tencentdb-memory/package.json +1 -1
  87. package/packages/tencentdb-sync/package.json +1 -1
  88. package/packages/test-data-generator/package.json +1 -1
  89. package/packages/test-generator/package.json +1 -1
  90. package/packages/todo-bd-sync/package.json +1 -1
  91. package/packages/token-estimation/package.json +1 -1
  92. package/packages/token-optimizer/package.json +1 -1
  93. package/packages/trajectory/package.json +1 -1
  94. package/packages/tui/package.json +1 -1
  95. package/packages/types/package.json +1 -1
  96. package/packages/workflow-events/package.json +1 -1
  97. package/packages/workspace-scanner/package.json +1 -1
  98. package/packages/worktree/package.json +1 -1
  99. package/packages/write-review/package.json +1 -1
@@ -29,6 +29,12 @@ import { homedir } from "node:os";
29
29
 
30
30
  export interface ChatGPTQuotaData {
31
31
  provider: "openai" | "openai-codex";
32
+ /** 5h used percentage (0-100) */
33
+ h5UsedPct: number;
34
+ /** When the 5h window resets (e.g., "4h 30m") */
35
+ h5ResetsAt: string;
36
+ /** Epoch ms when the 5h window resets */
37
+ h5ResetsAtEpoch?: number;
32
38
  /** Weekly used percentage (0-100) */
33
39
  weeklyUsedPct: number;
34
40
  /** When the weekly window resets (e.g., "5d 16h") */
@@ -394,6 +400,12 @@ export class ChatGPTQuotaScraper {
394
400
  reset_after_seconds?: number;
395
401
  reset_at?: number;
396
402
  };
403
+ secondary_window?: {
404
+ used_percent?: number;
405
+ limit_window_seconds?: number;
406
+ reset_after_seconds?: number;
407
+ reset_at?: number;
408
+ };
397
409
  };
398
410
  credits?: {
399
411
  has_credits?: boolean;
@@ -402,23 +414,60 @@ export class ChatGPTQuotaScraper {
402
414
  plan_type?: string;
403
415
  };
404
416
 
417
+ // primary_window = 5h, secondary_window = weekly
405
418
  const primaryWindow = data?.rate_limit?.primary_window;
406
- const weeklyUsedPct = primaryWindow?.used_percent ?? 0;
407
- const resetAfterSeconds = primaryWindow?.reset_after_seconds ?? 0;
408
- const resetAtEpoch = primaryWindow?.reset_at;
419
+ const secondaryWindow = data?.rate_limit?.secondary_window;
420
+
421
+ // Determine which is 5h (smaller window) and which is weekly
422
+ const FIVE_HOURS_SEC = 5 * 60 * 60; // 18000 seconds
423
+ let h5UsedPct = 0;
424
+ let h5ResetAfter = 0;
425
+ let h5ResetAt: number | undefined;
426
+ let weeklyUsedPct = 0;
427
+ let weeklyResetAfter = 0;
428
+ let weeklyResetAt: number | undefined;
429
+
430
+ // Classify windows by duration
431
+ if (primaryWindow) {
432
+ const duration = primaryWindow.limit_window_seconds ?? 0;
433
+ if (duration <= FIVE_HOURS_SEC) {
434
+ h5UsedPct = primaryWindow.used_percent ?? 0;
435
+ h5ResetAfter = primaryWindow.reset_after_seconds ?? 0;
436
+ h5ResetAt = primaryWindow.reset_at;
437
+ } else {
438
+ weeklyUsedPct = primaryWindow.used_percent ?? 0;
439
+ weeklyResetAfter = primaryWindow.reset_after_seconds ?? 0;
440
+ weeklyResetAt = primaryWindow.reset_at;
441
+ }
442
+ }
443
+ if (secondaryWindow) {
444
+ const duration = secondaryWindow.limit_window_seconds ?? 0;
445
+ if (duration <= FIVE_HOURS_SEC) {
446
+ h5UsedPct = secondaryWindow.used_percent ?? 0;
447
+ h5ResetAfter = secondaryWindow.reset_after_seconds ?? 0;
448
+ h5ResetAt = secondaryWindow.reset_at;
449
+ } else {
450
+ weeklyUsedPct = secondaryWindow.used_percent ?? 0;
451
+ weeklyResetAfter = secondaryWindow.reset_after_seconds ?? 0;
452
+ weeklyResetAt = secondaryWindow.reset_at;
453
+ }
454
+ }
409
455
 
410
456
  if (!this.config.quiet) {
411
457
  console.log(
412
- `[DEBUG ChatGPTQuotaScraper] Weekly usage: ${weeklyUsedPct}%, resets in ${formatRemainsSeconds(resetAfterSeconds)}`,
458
+ `[DEBUG ChatGPTQuotaScraper] 5h: ${h5UsedPct}%, Weekly: ${weeklyUsedPct}%`,
413
459
  );
414
460
  }
415
461
 
416
462
  return {
417
463
  provider: "openai",
464
+ h5UsedPct,
465
+ h5ResetsAt: formatRemainsSeconds(h5ResetAfter),
466
+ h5ResetsAtEpoch: h5ResetAt ? h5ResetAt * 1000 : undefined,
418
467
  weeklyUsedPct,
419
- weeklyResetsAt: formatRemainsSeconds(resetAfterSeconds),
420
- weeklyResetsAtEpoch: resetAtEpoch ? resetAtEpoch * 1000 : undefined,
421
- resetAfterSeconds,
468
+ weeklyResetsAt: formatRemainsSeconds(weeklyResetAfter),
469
+ weeklyResetsAtEpoch: weeklyResetAt ? weeklyResetAt * 1000 : undefined,
470
+ resetAfterSeconds: weeklyResetAfter,
422
471
  creditBalance: data.credits?.has_credits ? data.credits.balance : undefined,
423
472
  planType: data.plan_type,
424
473
  apiEndpoint: USAGE_API,
package/index.ts CHANGED
@@ -74,9 +74,20 @@ import { scheduleAutoResume, cancelAutoResume } from "./harness/index.js";
74
74
  // Lazy import - only loads when packages/jev-judge exists and API key available
75
75
  async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
76
76
  try {
77
- // Check if TYPESAFE_API_KEY is available
78
- if (!process.env.TYPESAFE_API_KEY && !process.env.OPENROUTER_API_KEY) {
79
- console.log("[auto-continue] No Jev API key found, skipping");
77
+ // Check if Jev API key is available (env var or keys file)
78
+ const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
79
+ const keysDir = `${homedir}/.pi-harness-runtime/keys`;
80
+ const { readFileSync, existsSync } = await import("fs");
81
+ const hasEnvKey =
82
+ process.env.TYPESAFE_API_KEY || process.env.OPENROUTER_API_KEY;
83
+ const hasFileKey =
84
+ existsSync(`${keysDir}/jev-api-key.txt`) &&
85
+ readFileSync(`${keysDir}/jev-api-key.txt`, "utf8").trim().length > 10;
86
+
87
+ if (!hasEnvKey && !hasFileKey) {
88
+ console.log(
89
+ "[auto-continue] No Jev API key found. Set TYPESAFE_API_KEY env or create ~/.pi-harness-runtime/keys/jev-api-key.txt"
90
+ );
80
91
  return;
81
92
  }
82
93
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-harness-runtime",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "[BETA] Codex-style /usage status + autonomous coding harness for pi. Not production ready — expect breaking changes.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/a2a-adapter",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "Google Agent-to-Agent (A2A) protocol adapter for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/architecture-generator",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Generate ADR and Mermaid diagrams from project analysis",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/auth",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "pi-harness-runtime — auth",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/autonomous-refactor",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "Autonomous refactoring engine",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/autonomous-runtime",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Autonomous Operations Runtime — task inbox, lease management, and worker lifecycle (RFC-0101)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/cache-strategy",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "Smart caching with TTL and invalidation strategies (RFC-0022)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/capability-registry",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
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/checkpoint",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Enhanced checkpoint system with incremental snapshots, diff-based storage, and recovery strategies",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/cli-plugin-sdk",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "CLI Plugin SDK for pi-harness — install, list, remove, update, invoke plugins",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/clipboard",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/clipboard-plugin",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/code-generation",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Code generation pipeline for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/code-review",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Automated code review engine for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/codex-adapter",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "OpenAI Codex provider adapter for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/config-capture",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Auto-capture API-fetched configuration values to AGENTS.md",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/context-compiler",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Bounded context selection engine for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/context-discovery",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/context-manager",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Context Window Manager — prevents model context overflow via compaction and resume prompts (RFC-0010)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cookie-sanitizer",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "pi-harness-runtime — cookie sanitizer (provider-quota cookie file normaliser)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cost-optimizer",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Cost Optimizer for pi-harness-runtime — budget tracking, forecasting, and model selection optimization",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/dependency-analyzer",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/django-plugin",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Django framework analysis — models, management commands, settings",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/doc-generator",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Auto-Doc Generator — generate documentation from source code (RFC-0014)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/evaluation-engine",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Evaluation engine for pi-harness runtime (RFC-0057)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/evaluation-runner",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "Framework-agnostic evaluation framework for AI outputs (RFC-0020)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/event-bus",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/event-store",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/experience-replay",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Experience replay for debugging and reproducibility (RFC-0059)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/feedback-collector",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "Collect and aggregate human/automated feedback (RFC-0021)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/file-copy-helper",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Injects cp/sudo cp rule when user asks to mimic/copy files",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/framework-detector",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Framework detection system for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/framework-plugin-sdk",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Framework plugin SDK for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/frappe-plugin",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Frappe/ERPNext framework analysis — DocTypes, hooks, bench sites, site config",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/generic-web-plugin",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Generic web framework analysis — REST/GraphQL endpoints, OpenAPI, auth",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/health-monitor",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "description": "Health monitoring and auto-healing",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/intent-analyzer",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -35,8 +35,8 @@ export declare const ENV_KEYS: {
35
35
  readonly OPENROUTER_API_KEY: "OPENROUTER_API_KEY";
36
36
  };
37
37
  /**
38
- * Get API key from environment
39
- * Priority: TYPESAFE_API_KEY > OPENROUTER_API_KEY
38
+ * Get API key from environment or keys file
39
+ * Priority: TYPESAFE_API_KEY env > OPENROUTER_API_KEY env > keys file
40
40
  */
41
41
  export declare function getApiKeyFromEnv(): string | undefined;
42
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,cAAc,EAEd,YAAY,EAGZ,mBAAmB,EAInB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,eAAO,MAAM,QAAQ;aACnB,gBAAgB,EAAE,kBAAkB;aACpC,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAKrD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,QAAQ,CAQzE;AAYD;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAA2B;IAEzC,YAAY,MAAM,EAAE,cAAc,EAWjC;IAED;;;;;;OAMG;IACG,QAAQ,CAAC,CAAC,SAAS,MAAM,EAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CA6FjC;IAED;;OAEG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;KAAE,CAAC,CAUlE;IAED;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,EAAE,GACX,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAU5C;IAED;;OAEG;IACH,iBAAiB,CACf,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAqC,GAC/C,iBAAiB,CASnB;IAED;;OAEG;IACG,aAAa,CAAC,CAAC,SAAS,MAAM,EAClC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC3B,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAkBnC;IAOD,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,aAAa;CAStB;AAGD,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,cAAc,EAEd,YAAY,EAGZ,mBAAmB,EAInB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,eAAO,MAAM,QAAQ;aACnB,gBAAgB,EAAE,kBAAkB;aACpC,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAyBrD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,QAAQ,CAQzE;AAYD;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAA2B;IAEzC,YAAY,MAAM,EAAE,cAAc,EAWjC;IAED;;;;;;OAMG;IACG,QAAQ,CAAC,CAAC,SAAS,MAAM,EAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CA6FjC;IAED;;OAEG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;KAAE,CAAC,CAUlE;IAED;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,EAAE,GACX,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAU5C;IAED;;OAEG;IACH,iBAAiB,CACf,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAqC,GAC/C,iBAAiB,CASnB;IAED;;OAEG;IACG,aAAa,CAAC,CAAC,SAAS,MAAM,EAClC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC3B,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAkBnC;IAOD,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,aAAa;CAStB;AAGD,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -37,12 +37,32 @@ export const ENV_KEYS = {
37
37
  OPENROUTER_API_KEY: "OPENROUTER_API_KEY",
38
38
  };
39
39
  /**
40
- * Get API key from environment
41
- * Priority: TYPESAFE_API_KEY > OPENROUTER_API_KEY
40
+ * Get API key from environment or keys file
41
+ * Priority: TYPESAFE_API_KEY env > OPENROUTER_API_KEY env > keys file
42
42
  */
43
43
  export function getApiKeyFromEnv() {
44
- return (process.env[ENV_KEYS.TYPESAFE_API_KEY] ||
45
- process.env[ENV_KEYS.OPENROUTER_API_KEY]);
44
+ // First check environment variables
45
+ const envKey = process.env[ENV_KEYS.TYPESAFE_API_KEY] ||
46
+ process.env[ENV_KEYS.OPENROUTER_API_KEY];
47
+ if (envKey)
48
+ return envKey;
49
+ // Fall back to keys file (e.g., ~/.pi-harness-runtime/keys/jev-api-key.txt)
50
+ const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
51
+ const keysDir = `${homedir}/.pi-harness-runtime/keys`;
52
+ const keyFile = `${keysDir}/jev-api-key.txt`;
53
+ try {
54
+ const { readFileSync, existsSync } = require("fs");
55
+ if (existsSync(keyFile)) {
56
+ const key = readFileSync(keyFile, "utf8").trim();
57
+ if (key && key.length > 10) {
58
+ return key;
59
+ }
60
+ }
61
+ }
62
+ catch {
63
+ // Ignore file read errors
64
+ }
65
+ return undefined;
46
66
  }
47
67
  /**
48
68
  * Check if Jev API key is available
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/jev-judge",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Jev Judge - Structured decision model for agent routing, E2E testing, and automated decisions",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -53,14 +53,34 @@ export const ENV_KEYS = {
53
53
  } as const;
54
54
 
55
55
  /**
56
- * Get API key from environment
57
- * Priority: TYPESAFE_API_KEY > OPENROUTER_API_KEY
56
+ * Get API key from environment or keys file
57
+ * Priority: TYPESAFE_API_KEY env > OPENROUTER_API_KEY env > keys file
58
58
  */
59
59
  export function getApiKeyFromEnv(): string | undefined {
60
- return (
60
+ // First check environment variables
61
+ const envKey =
61
62
  process.env[ENV_KEYS.TYPESAFE_API_KEY] ||
62
- process.env[ENV_KEYS.OPENROUTER_API_KEY]
63
- );
63
+ process.env[ENV_KEYS.OPENROUTER_API_KEY];
64
+ if (envKey) return envKey;
65
+
66
+ // Fall back to keys file (e.g., ~/.pi-harness-runtime/keys/jev-api-key.txt)
67
+ const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
68
+ const keysDir = `${homedir}/.pi-harness-runtime/keys`;
69
+ const keyFile = `${keysDir}/jev-api-key.txt`;
70
+
71
+ try {
72
+ const { readFileSync, existsSync } = require("fs");
73
+ if (existsSync(keyFile)) {
74
+ const key = readFileSync(keyFile, "utf8").trim();
75
+ if (key && key.length > 10) {
76
+ return key;
77
+ }
78
+ }
79
+ } catch {
80
+ // Ignore file read errors
81
+ }
82
+
83
+ return undefined;
64
84
  }
65
85
 
66
86
  /**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/knowledge-graph",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Knowledge Graph extraction and provenance linking for SKILL.md files",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/knowledge-retrieval",
3
- "version": "1.1.83",
3
+ "version": "1.1.85",
4
4
  "description": "Knowledge retrieval via TencentDB-Agent-Memory MCP (RFC-0105)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",