pi-harness-runtime 1.1.16 → 1.1.18
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 +26 -0
- package/README.md +76 -18
- package/harness/e2e/auto-test-loop.ts +750 -0
- package/harness/e2e/tools-detector.test.ts +156 -0
- package/harness/e2e/tools-detector.ts +798 -0
- package/harness/glm-quota-logger.ts +20 -23
- package/harness/index.ts +25 -0
- 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/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/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-registry/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/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
|
@@ -29,7 +29,11 @@ function ensureLogDir(): void {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
/** Format log entry */
|
|
32
|
-
function formatLog(
|
|
32
|
+
function formatLog(
|
|
33
|
+
level: LogLevel,
|
|
34
|
+
jobId: string | null,
|
|
35
|
+
message: string,
|
|
36
|
+
): string {
|
|
33
37
|
const timestamp = new Date().toISOString();
|
|
34
38
|
const job = jobId ? `[${jobId}]` : "[system]";
|
|
35
39
|
return `[${timestamp}] [${level}] ${job} ${message}`;
|
|
@@ -38,7 +42,11 @@ function formatLog(level: LogLevel, jobId: string | null, message: string): stri
|
|
|
38
42
|
/**
|
|
39
43
|
* Write a log entry to file
|
|
40
44
|
*/
|
|
41
|
-
function writeLog(
|
|
45
|
+
function writeLog(
|
|
46
|
+
level: LogLevel,
|
|
47
|
+
jobId: string | null,
|
|
48
|
+
message: string,
|
|
49
|
+
): void {
|
|
42
50
|
try {
|
|
43
51
|
ensureLogDir();
|
|
44
52
|
const entry = formatLog(level, jobId, message) + "\n";
|
|
@@ -70,7 +78,11 @@ export function logWarn(jobId: string | null, message: string): void {
|
|
|
70
78
|
/**
|
|
71
79
|
* Log error level event
|
|
72
80
|
*/
|
|
73
|
-
export function logError(
|
|
81
|
+
export function logError(
|
|
82
|
+
jobId: string | null,
|
|
83
|
+
message: string,
|
|
84
|
+
error?: unknown,
|
|
85
|
+
): void {
|
|
74
86
|
const errorMsg = error instanceof Error ? error.message : String(error ?? "");
|
|
75
87
|
const fullMessage = errorMsg ? `${message}: ${errorMsg}` : message;
|
|
76
88
|
console.error(`[GLMQuota] ${jobId ? `[${jobId}] ` : ""}${fullMessage}`);
|
|
@@ -87,10 +99,7 @@ export function logCountdownStarted(
|
|
|
87
99
|
): void {
|
|
88
100
|
const hours = Math.floor(totalSeconds / 3600);
|
|
89
101
|
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
90
|
-
logInfo(
|
|
91
|
-
jobId,
|
|
92
|
-
`Countdown started: ${hours}h ${minutes}m until ${resetAt}`,
|
|
93
|
-
);
|
|
102
|
+
logInfo(jobId, `Countdown started: ${hours}h ${minutes}m until ${resetAt}`);
|
|
94
103
|
}
|
|
95
104
|
|
|
96
105
|
/** Log countdown tick */
|
|
@@ -101,10 +110,7 @@ export function logCountdownTick(
|
|
|
101
110
|
const hours = Math.floor(remainingSeconds / 3600);
|
|
102
111
|
const minutes = Math.floor((remainingSeconds % 3600) / 60);
|
|
103
112
|
const secs = remainingSeconds % 60;
|
|
104
|
-
logInfo(
|
|
105
|
-
jobId,
|
|
106
|
-
`Countdown tick: ${hours}h ${minutes}m ${secs}s remaining`,
|
|
107
|
-
);
|
|
113
|
+
logInfo(jobId, `Countdown tick: ${hours}h ${minutes}m ${secs}s remaining`);
|
|
108
114
|
}
|
|
109
115
|
|
|
110
116
|
/** Log countdown completed */
|
|
@@ -123,19 +129,13 @@ export function logAutoResumeFailed(jobId: string, error: string): void {
|
|
|
123
129
|
}
|
|
124
130
|
|
|
125
131
|
/** Log notification sent */
|
|
126
|
-
export function logNotificationSent(
|
|
127
|
-
jobId: string,
|
|
128
|
-
beforeReset: number,
|
|
129
|
-
): void {
|
|
132
|
+
export function logNotificationSent(jobId: string, beforeReset: number): void {
|
|
130
133
|
const minutes = Math.floor(beforeReset / 60);
|
|
131
134
|
logInfo(jobId, `Notification sent: ${minutes} minutes before reset`);
|
|
132
135
|
}
|
|
133
136
|
|
|
134
137
|
/** Log notification failed */
|
|
135
|
-
export function logNotificationFailed(
|
|
136
|
-
jobId: string,
|
|
137
|
-
error: string,
|
|
138
|
-
): void {
|
|
138
|
+
export function logNotificationFailed(jobId: string, error: string): void {
|
|
139
139
|
logWarn(jobId, `Notification failed: ${error}`);
|
|
140
140
|
}
|
|
141
141
|
|
|
@@ -149,10 +149,7 @@ export function logMirrorUpdate(jobId: string, success: boolean): void {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
/** Log quota exhaustion detected */
|
|
152
|
-
export function logQuotaExhausted(
|
|
153
|
-
jobId: string,
|
|
154
|
-
resetAt: string,
|
|
155
|
-
): void {
|
|
152
|
+
export function logQuotaExhausted(jobId: string, resetAt: string): void {
|
|
156
153
|
logInfo(jobId, `GLM 5h quota exhausted, reset at ${resetAt}`);
|
|
157
154
|
}
|
|
158
155
|
|
package/harness/index.ts
CHANGED
|
@@ -261,3 +261,28 @@ export type {
|
|
|
261
261
|
KnowledgeQuery,
|
|
262
262
|
KnowledgeResult,
|
|
263
263
|
} from "../packages/memory-engine/src/types.js";
|
|
264
|
+
|
|
265
|
+
// --- E2E Testing (RFC-0101) -----------------------------------------------
|
|
266
|
+
export {
|
|
267
|
+
detectProjectType,
|
|
268
|
+
detectAvailableTools,
|
|
269
|
+
getRecommendedTools,
|
|
270
|
+
makeSmartDecision,
|
|
271
|
+
generateToolsPresentation,
|
|
272
|
+
getE2EToolsConfig,
|
|
273
|
+
} from "./e2e/tools-detector.js";
|
|
274
|
+
export type {
|
|
275
|
+
SmartDecision,
|
|
276
|
+
TestingTool,
|
|
277
|
+
E2EToolsConfig,
|
|
278
|
+
ProjectType,
|
|
279
|
+
NativeAppType,
|
|
280
|
+
} from "./e2e/tools-detector.js";
|
|
281
|
+
export {
|
|
282
|
+
runAutoTestLoop,
|
|
283
|
+
} from "./e2e/auto-test-loop.js";
|
|
284
|
+
export type {
|
|
285
|
+
E2ETestResult,
|
|
286
|
+
AutoTestConfig,
|
|
287
|
+
AutoTestResult,
|
|
288
|
+
} from "./e2e/auto-test-loop.js";
|
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.18",
|
|
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",
|