pi-harness-runtime 1.1.153 → 1.1.154
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 +83 -3
- package/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/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/codex-watcher/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/dist/index.d.ts +14 -3
- package/packages/jev-judge/dist/index.d.ts.map +1 -1
- package/packages/jev-judge/dist/index.js +54 -12
- package/packages/jev-judge/dist/index.js.map +1 -1
- package/packages/jev-judge/dist/typesafe-provider.d.ts +66 -0
- package/packages/jev-judge/dist/typesafe-provider.d.ts.map +1 -0
- package/packages/jev-judge/dist/typesafe-provider.js +220 -0
- package/packages/jev-judge/dist/typesafe-provider.js.map +1 -0
- package/packages/jev-judge/package.json +1 -1
- package/packages/jev-judge/src/index.ts +58 -12
- package/packages/jev-judge/src/typesafe-provider.ts +335 -0
- 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/paperclip-integration/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/package.json +1 -1
- 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
|
@@ -78,6 +78,48 @@ import {
|
|
|
78
78
|
|
|
79
79
|
// --- Jev Auto-Continue: Agent autonomous decision-making --------------------
|
|
80
80
|
// Lazy import - only loads when packages/jev-judge exists and API key available
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Get tasks from bd (beads) for Jev decision context.
|
|
84
|
+
* Returns { completed, remaining } arrays of task descriptions.
|
|
85
|
+
*/
|
|
86
|
+
async function getTaskContext(): Promise<{
|
|
87
|
+
completed: string[];
|
|
88
|
+
remaining: string[];
|
|
89
|
+
total: number;
|
|
90
|
+
}> {
|
|
91
|
+
try {
|
|
92
|
+
const { execSync } = await import("node:child_process");
|
|
93
|
+
// Get open (pending + in_progress) tasks
|
|
94
|
+
const output = execSync("bd list --json 2>/dev/null", {
|
|
95
|
+
encoding: "utf8",
|
|
96
|
+
timeout: 5000,
|
|
97
|
+
});
|
|
98
|
+
const tasks = JSON.parse(output) as Array<{ title?: string; status?: string }>;
|
|
99
|
+
|
|
100
|
+
const completed: string[] = [];
|
|
101
|
+
const remaining: string[] = [];
|
|
102
|
+
|
|
103
|
+
for (const task of tasks ?? []) {
|
|
104
|
+
if (!task.title) continue;
|
|
105
|
+
if (task.status === "closed" || task.status === "done") {
|
|
106
|
+
completed.push(task.title);
|
|
107
|
+
} else {
|
|
108
|
+
remaining.push(task.title);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
completed,
|
|
114
|
+
remaining,
|
|
115
|
+
total: completed.length + remaining.length,
|
|
116
|
+
};
|
|
117
|
+
} catch {
|
|
118
|
+
// bd not available or error - return empty context
|
|
119
|
+
return { completed: [], remaining: [], total: 0 };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
81
123
|
async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
82
124
|
try {
|
|
83
125
|
// Check if Jev API key is available (env var or keys file)
|
|
@@ -113,6 +155,9 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
113
155
|
// Track waiting state
|
|
114
156
|
let waitingForUserSince: Date | null = null;
|
|
115
157
|
let lastUserMessage: Date | null = null;
|
|
158
|
+
let autoContinueTimer: NodeJS.Timeout | null = null;
|
|
159
|
+
let _inferenceInProgress = false; // Track for overlap prevention
|
|
160
|
+
let _sessionId = Date.now().toString(36); // Track session for cancellation
|
|
116
161
|
|
|
117
162
|
// Detect when agent asks for continuation
|
|
118
163
|
pi.on("message_end", async (event) => {
|
|
@@ -162,29 +207,64 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
162
207
|
const MIN_WAIT_MINUTES = 5; // Minimum wait before auto-continue
|
|
163
208
|
|
|
164
209
|
const checkAndAutoContinue = async () => {
|
|
210
|
+
// Prevent overlap if inference is already in progress
|
|
211
|
+
if (_inferenceInProgress) {
|
|
212
|
+
console.log("[auto-continue] Inference in progress, skipping this check");
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
|
|
165
216
|
if (!waitingForUserSince) return;
|
|
166
217
|
|
|
218
|
+
// Capture session ID at check time for post-inference validation
|
|
219
|
+
const checkSessionId = _sessionId;
|
|
220
|
+
|
|
167
221
|
const waitMinutes = (Date.now() - waitingForUserSince.getTime()) / 60000;
|
|
168
222
|
if (waitMinutes < MIN_WAIT_MINUTES) return;
|
|
169
223
|
|
|
170
224
|
console.log(`[auto-continue] Checking after ${waitMinutes.toFixed(0)} minutes wait...`);
|
|
171
225
|
|
|
172
226
|
try {
|
|
227
|
+
// Mark inference as in progress to prevent overlap
|
|
228
|
+
_inferenceInProgress = true;
|
|
229
|
+
|
|
173
230
|
const judge = new mod.AutoContinueJudge({
|
|
174
231
|
apiKey: resolvedApiKey,
|
|
175
232
|
proceedThreshold: 0.7,
|
|
176
233
|
maxWaitMinutes: 30,
|
|
177
234
|
});
|
|
178
235
|
|
|
236
|
+
// Get real task context from bd
|
|
237
|
+
const taskContext = await getTaskContext();
|
|
238
|
+
|
|
239
|
+
// Guard against empty task list
|
|
240
|
+
if (taskContext.total === 0) {
|
|
241
|
+
console.log("[auto-continue] No tasks to decide on — skipping");
|
|
242
|
+
_inferenceInProgress = false;
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
|
|
179
246
|
const taskState = mod.createTaskState(
|
|
180
|
-
|
|
181
|
-
|
|
247
|
+
taskContext.completed,
|
|
248
|
+
taskContext.remaining,
|
|
182
249
|
lastUserMessage || undefined,
|
|
183
250
|
new Date(Date.now() - waitMinutes * 60000),
|
|
184
251
|
);
|
|
185
252
|
|
|
186
253
|
const decision = await judge.decide(taskState);
|
|
187
254
|
|
|
255
|
+
// Check session validity and user response before applying
|
|
256
|
+
if (checkSessionId !== _sessionId) {
|
|
257
|
+
console.log("[auto-continue] Session changed during inference — cancelling");
|
|
258
|
+
_inferenceInProgress = false;
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
if (!waitingForUserSince) {
|
|
263
|
+
console.log("[auto-continue] User responded during inference — cancelling");
|
|
264
|
+
_inferenceInProgress = false;
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
|
|
188
268
|
console.log(
|
|
189
269
|
`[auto-continue] Decision: ${decision.action} (${(decision.probability * 100).toFixed(0)}% confidence)`,
|
|
190
270
|
);
|
|
@@ -214,7 +294,7 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
214
294
|
};
|
|
215
295
|
|
|
216
296
|
// Start periodic check
|
|
217
|
-
setInterval(checkAndAutoContinue, AUTO_CONTINUE_INTERVAL_MS);
|
|
297
|
+
autoContinueTimer = setInterval(checkAndAutoContinue, AUTO_CONTINUE_INTERVAL_MS);
|
|
218
298
|
|
|
219
299
|
console.error("[auto-continue] Jev Auto-Continue initialized");
|
|
220
300
|
} catch {
|
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.154",
|
|
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",
|
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
* Jev Judge - Main API
|
|
3
3
|
*
|
|
4
4
|
* Structured decision model for agent routing, E2E testing, and automated decisions.
|
|
5
|
-
* Uses TypeSafe Jev via
|
|
5
|
+
* Uses TypeSafe Jev via:
|
|
6
|
+
* - Primary: TypeSafe direct API (https://api.typesafe.ai/v1/systemone)
|
|
7
|
+
* - Fallback: OpenRouter API (https://openrouter.ai/api/v1)
|
|
6
8
|
*
|
|
7
9
|
* @example
|
|
8
10
|
* ```typescript
|
|
9
11
|
* import { JevJudge } from "@pi-harness/jev-judge";
|
|
10
12
|
*
|
|
11
|
-
*
|
|
13
|
+
* // Auto-detects TypeSafe vs OpenRouter based on API key and baseUrl
|
|
14
|
+
* const judge = new JevJudge({ apiKey: process.env.TYPESAFE_API_KEY! });
|
|
12
15
|
*
|
|
13
16
|
* // Ask multiple questions at once
|
|
14
17
|
* const result = await judge.evaluate(
|
|
@@ -49,10 +52,16 @@ export declare function hasJevApiKey(): boolean;
|
|
|
49
52
|
export declare function createJevJudge(config?: Partial<JevJudgeConfig>): JevJudge;
|
|
50
53
|
/**
|
|
51
54
|
* JevJudge - Main class for making structured decisions with Jev
|
|
55
|
+
*
|
|
56
|
+
* Supports two providers:
|
|
57
|
+
* - TypeSafe direct API (primary, recommended)
|
|
58
|
+
* - OpenRouter API (fallback for backwards compatibility)
|
|
52
59
|
*/
|
|
53
60
|
export declare class JevJudge {
|
|
54
|
-
private
|
|
61
|
+
private typesafeJudge?;
|
|
62
|
+
private openrouterClient?;
|
|
55
63
|
private config;
|
|
64
|
+
private provider;
|
|
56
65
|
constructor(config: JevJudgeConfig);
|
|
57
66
|
/**
|
|
58
67
|
* Evaluate state against questions
|
|
@@ -99,4 +108,6 @@ export { checkWrapUp, getTodoSummary } from "./wrap-up-judge.js";
|
|
|
99
108
|
export type { TodoItem, WrapUpResult } from "./wrap-up-judge.js";
|
|
100
109
|
export { EnvironmentJudge } from "./environment-judge.js";
|
|
101
110
|
export type { EnvironmentContext, EnvironmentDecision, SafetyCheck, EnvironmentConfig } from "./environment-judge.js";
|
|
111
|
+
export { TypeSafeJudge, detectProvider } from "./typesafe-provider.js";
|
|
112
|
+
export type { TypeSafeConfig } from "./typesafe-provider.js";
|
|
102
113
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|