pi-harness-runtime 1.1.152 → 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.
Files changed (120) hide show
  1. package/harness/langchain/graph.ts +9 -9
  2. package/harness/langchain/{jev-logger.ts → planner-logger.ts} +25 -24
  3. package/harness/service-diagnostics.ts +217 -0
  4. package/index.ts +113 -9
  5. package/package.json +1 -1
  6. package/packages/a2a-adapter/package.json +1 -1
  7. package/packages/agent-policy/package.json +1 -1
  8. package/packages/architecture-generator/package.json +1 -1
  9. package/packages/auth/package.json +1 -1
  10. package/packages/autonomous-refactor/package.json +1 -1
  11. package/packages/autonomous-runtime/package.json +1 -1
  12. package/packages/cache-strategy/package.json +1 -1
  13. package/packages/capability-registry/package.json +1 -1
  14. package/packages/checkpoint/package.json +1 -1
  15. package/packages/cli-plugin-sdk/package.json +1 -1
  16. package/packages/clipboard/package.json +1 -1
  17. package/packages/clipboard-plugin/package.json +1 -1
  18. package/packages/code-generation/package.json +1 -1
  19. package/packages/code-review/package.json +1 -1
  20. package/packages/codex-adapter/package.json +1 -1
  21. package/packages/codex-watcher/package.json +1 -1
  22. package/packages/config-capture/package.json +1 -1
  23. package/packages/context-compiler/package.json +1 -1
  24. package/packages/context-discovery/package.json +1 -1
  25. package/packages/context-manager/package.json +1 -1
  26. package/packages/cookie-sanitizer/package.json +1 -1
  27. package/packages/cost-optimizer/package.json +1 -1
  28. package/packages/dependency-analyzer/package.json +1 -1
  29. package/packages/django-plugin/package.json +1 -1
  30. package/packages/doc-generator/package.json +1 -1
  31. package/packages/evaluation-engine/package.json +1 -1
  32. package/packages/evaluation-runner/package.json +1 -1
  33. package/packages/event-bus/package.json +1 -1
  34. package/packages/event-store/package.json +1 -1
  35. package/packages/experience-replay/package.json +1 -1
  36. package/packages/feedback-collector/package.json +1 -1
  37. package/packages/file-copy-helper/package.json +1 -1
  38. package/packages/framework-detector/package.json +1 -1
  39. package/packages/framework-plugin-sdk/package.json +1 -1
  40. package/packages/frappe-plugin/package.json +1 -1
  41. package/packages/generic-web-plugin/package.json +1 -1
  42. package/packages/health-monitor/package.json +1 -1
  43. package/packages/intent-analyzer/package.json +1 -1
  44. package/packages/jev-judge/dist/index.d.ts +14 -3
  45. package/packages/jev-judge/dist/index.d.ts.map +1 -1
  46. package/packages/jev-judge/dist/index.js +54 -12
  47. package/packages/jev-judge/dist/index.js.map +1 -1
  48. package/packages/jev-judge/dist/typesafe-provider.d.ts +66 -0
  49. package/packages/jev-judge/dist/typesafe-provider.d.ts.map +1 -0
  50. package/packages/jev-judge/dist/typesafe-provider.js +220 -0
  51. package/packages/jev-judge/dist/typesafe-provider.js.map +1 -0
  52. package/packages/jev-judge/package.json +1 -1
  53. package/packages/jev-judge/src/index.ts +58 -12
  54. package/packages/jev-judge/src/typesafe-provider.ts +335 -0
  55. package/packages/knowledge-graph/package.json +1 -1
  56. package/packages/knowledge-retrieval/package.json +1 -1
  57. package/packages/laravel-plugin/package.json +1 -1
  58. package/packages/learning-engine/package.json +1 -1
  59. package/packages/mcp-adapter/package.json +1 -1
  60. package/packages/memory-engine/package.json +1 -1
  61. package/packages/milestone-manager/package.json +1 -1
  62. package/packages/model-registry/package.json +1 -1
  63. package/packages/nextjs-plugin/package.json +1 -1
  64. package/packages/notification/package.json +1 -1
  65. package/packages/observability/package.json +1 -1
  66. package/packages/okf-indexer/package.json +1 -1
  67. package/packages/paperclip-integration/package.json +1 -1
  68. package/packages/performance-optimizer/package.json +1 -1
  69. package/packages/privilege-broker/package.json +1 -1
  70. package/packages/project-analyzer/package.json +1 -1
  71. package/packages/project-bootstrap/package.json +1 -1
  72. package/packages/projection-engine/package.json +1 -1
  73. package/packages/prompt-compiler/package.json +1 -1
  74. package/packages/prompt-versioning/package.json +1 -1
  75. package/packages/provider-adapter-sdk/package.json +1 -1
  76. package/packages/provider-router/package.json +1 -1
  77. package/packages/provider-selector/package.json +1 -1
  78. package/packages/providers/package.json +1 -1
  79. package/packages/qdrant-skills/dist/client.d.ts.map +1 -1
  80. package/packages/qdrant-skills/dist/client.js +4 -3
  81. package/packages/qdrant-skills/dist/client.js.map +1 -1
  82. package/packages/qdrant-skills/package.json +1 -1
  83. package/packages/qdrant-skills/src/client.ts +14 -17
  84. package/packages/quota-manager/package.json +1 -1
  85. package/packages/rate-limiter/package.json +1 -1
  86. package/packages/react-vite-plugin/package.json +1 -1
  87. package/packages/release-manager/package.json +1 -1
  88. package/packages/requirement-compiler/package.json +1 -1
  89. package/packages/runtime/package.json +1 -1
  90. package/packages/scheduler/package.json +1 -1
  91. package/packages/scheduler-adapter/package.json +1 -1
  92. package/packages/session/package.json +1 -1
  93. package/packages/session-api/package.json +1 -1
  94. package/packages/session-export/package.json +1 -1
  95. package/packages/shared-context/package.json +1 -1
  96. package/packages/skill-mcp-client/package.json +1 -1
  97. package/packages/skill-registry/package.json +1 -1
  98. package/packages/skills/dist/loader.d.ts +9 -2
  99. package/packages/skills/dist/loader.d.ts.map +1 -1
  100. package/packages/skills/dist/loader.js +24 -7
  101. package/packages/skills/dist/loader.js.map +1 -1
  102. package/packages/skills/package.json +1 -1
  103. package/packages/skills/src/loader.ts +27 -7
  104. package/packages/sprint-planner/package.json +1 -1
  105. package/packages/subscription-engine/package.json +1 -1
  106. package/packages/task-compiler/package.json +1 -1
  107. package/packages/tencentdb-memory/package.json +1 -1
  108. package/packages/tencentdb-sync/package.json +1 -1
  109. package/packages/test-data-generator/package.json +1 -1
  110. package/packages/test-generator/package.json +1 -1
  111. package/packages/todo-bd-sync/package.json +1 -1
  112. package/packages/token-estimation/package.json +1 -1
  113. package/packages/token-optimizer/package.json +1 -1
  114. package/packages/trajectory/package.json +1 -1
  115. package/packages/tui/package.json +1 -1
  116. package/packages/types/package.json +1 -1
  117. package/packages/workflow-events/package.json +1 -1
  118. package/packages/workspace-scanner/package.json +1 -1
  119. package/packages/worktree/package.json +1 -1
  120. package/packages/write-review/package.json +1 -1
@@ -0,0 +1,335 @@
1
+ /**
2
+ * TypeSafe Jev Provider - Direct API integration
3
+ *
4
+ * Uses TypeSafe's /v1/systemone endpoint directly.
5
+ * This is the recommended provider for Jev decisions.
6
+ *
7
+ * API: POST https://api.typesafe.ai/v1/systemone
8
+ * Auth: Bearer token (TYPESAFE_API_KEY)
9
+ */
10
+
11
+ import type {
12
+ JevQuestion,
13
+ JevQuestions,
14
+ JevResponse,
15
+ JevDecision,
16
+ JevEvaluationResult,
17
+ JevNoulResponse,
18
+ JevChoiceResponse,
19
+ JevScoreResponse,
20
+ } from "./types.js";
21
+
22
+ /**
23
+ * TypeSafe API request format
24
+ */
25
+ interface TypeSafeRequest {
26
+ questions: TypeSafeQuestion[];
27
+ state: string;
28
+ }
29
+
30
+ /**
31
+ * TypeSafe question format
32
+ */
33
+ interface TypeSafeQuestion {
34
+ id: string;
35
+ type: "noul" | "choice" | "score";
36
+ instructions: string;
37
+ options?: string[]; // For choice type
38
+ criteria?: string[]; // For choice type - ordered criteria
39
+ min?: number; // For score type
40
+ max?: number; // For score type
41
+ }
42
+
43
+ /**
44
+ * TypeSafe API response format
45
+ */
46
+ interface TypeSafeResponse {
47
+ answers: Record<string, TypeSafeAnswer>;
48
+ model?: string;
49
+ latency_ms?: number;
50
+ }
51
+
52
+ /**
53
+ * TypeSafe answer format
54
+ */
55
+ interface TypeSafeAnswer {
56
+ type: "noul" | "choice" | "score";
57
+ probability?: number; // For noul type (0-1)
58
+ choice?: string; // For choice type
59
+ score?: number; // For score type
60
+ confidence?: number; // 0-1 for all types
61
+ }
62
+
63
+ /**
64
+ * TypeSafe provider configuration
65
+ */
66
+ export interface TypeSafeConfig {
67
+ apiKey: string;
68
+ baseUrl?: string; // Defaults to https://api.typesafe.ai
69
+ timeoutMs?: number; // Defaults to 30000
70
+ }
71
+
72
+ /**
73
+ * Default configuration
74
+ */
75
+ const DEFAULT_CONFIG = {
76
+ baseUrl: "https://api.typesafe.ai",
77
+ timeoutMs: 30000,
78
+ };
79
+
80
+ /**
81
+ * TypeSafe Jev Judge - Direct TypeSafe API integration
82
+ *
83
+ * Uses TypeSafe's systemone API for structured decisions.
84
+ * More reliable than OpenRouter proxy and supports full feature set.
85
+ */
86
+ export class TypeSafeJudge {
87
+ private config: Required<TypeSafeConfig>;
88
+
89
+ constructor(config: TypeSafeConfig) {
90
+ this.config = {
91
+ ...DEFAULT_CONFIG,
92
+ ...config,
93
+ } as Required<TypeSafeConfig>;
94
+ }
95
+
96
+ /**
97
+ * Evaluate state against questions using TypeSafe API
98
+ */
99
+ async evaluate<T extends string>(
100
+ state: string | object,
101
+ questions: JevQuestions<T>
102
+ ): Promise<JevEvaluationResult<T>> {
103
+ const startTime = Date.now();
104
+
105
+ // Convert state to string if object
106
+ const stateStr = typeof state === "string" ? state : JSON.stringify(state);
107
+
108
+ // Build TypeSafe question format
109
+ const questionsArray = Object.entries(questions).map(([id, q]) => {
110
+ const questionObj = q as JevQuestion;
111
+ const question: TypeSafeQuestion = {
112
+ id,
113
+ type: questionObj.type,
114
+ instructions: questionObj.instructions,
115
+ };
116
+
117
+ if (questionObj.type === "choice") {
118
+ question.options = questionObj.options;
119
+ // For choice questions, criteria defines ordered preference levels
120
+ question.criteria = questionObj.options;
121
+ } else if (questionObj.type === "score") {
122
+ question.min = questionObj.min ?? 0;
123
+ question.max = questionObj.max ?? 100;
124
+ }
125
+
126
+ return question;
127
+ });
128
+
129
+ // Call TypeSafe API directly
130
+ const response = await fetch(`${this.config.baseUrl}/v1/systemone`, {
131
+ method: "POST",
132
+ headers: {
133
+ "Content-Type": "application/json",
134
+ Authorization: `Bearer ${this.config.apiKey}`,
135
+ },
136
+ body: JSON.stringify({
137
+ questions: questionsArray,
138
+ state: stateStr,
139
+ } satisfies TypeSafeRequest),
140
+ signal: AbortSignal.timeout(this.config.timeoutMs),
141
+ });
142
+
143
+ const latencyMs = Date.now() - startTime;
144
+
145
+ if (!response.ok) {
146
+ const errorText = await response.text().catch(() => "Unknown error");
147
+ throw new Error(`TypeSafe API error ${response.status}: ${errorText}`);
148
+ }
149
+
150
+ const data = await response.json() as TypeSafeResponse;
151
+
152
+ // Build decisions map
153
+ const decisions = {} as Record<T, JevDecision<T>>;
154
+
155
+ for (const [questionId, question] of Object.entries(questions)) {
156
+ const questionData = question as JevQuestion;
157
+ const answer = data.answers?.[questionId] as TypeSafeAnswer | undefined;
158
+
159
+ if (!answer) {
160
+ // Skip missing answers
161
+ continue;
162
+ }
163
+
164
+ const decision = this.buildDecision(
165
+ questionId,
166
+ questionData,
167
+ answer
168
+ );
169
+ (decisions as Record<string, JevDecision>)[questionId] = decision;
170
+ }
171
+
172
+ return {
173
+ decisions,
174
+ state: stateStr,
175
+ latencyMs,
176
+ model: data.model ?? "typesafe/systemone",
177
+ };
178
+ }
179
+
180
+ /**
181
+ * Quick noul (yes/no) evaluation
182
+ */
183
+ async noul(
184
+ state: string | object,
185
+ question: string
186
+ ): Promise<{ noul: number; confidence: "high" | "medium" | "low" }> {
187
+ const result = await this.evaluate(state, {
188
+ answer: { type: "noul", instructions: question },
189
+ });
190
+
191
+ const decision = result.decisions.answer as JevDecision<"answer">;
192
+ const noulResponse = decision.response as JevNoulResponse;
193
+ return {
194
+ noul: noulResponse.noul,
195
+ confidence: decision.confidence,
196
+ };
197
+ }
198
+
199
+ /**
200
+ * Quick choice evaluation
201
+ */
202
+ async choice<T extends string>(
203
+ state: string | object,
204
+ question: string,
205
+ options: T[]
206
+ ): Promise<{ choice: T; confidence: number }> {
207
+ const result = await this.evaluate(state, {
208
+ answer: { type: "choice", instructions: question, options },
209
+ });
210
+
211
+ const decision = result.decisions.answer as JevDecision<"answer">;
212
+ const choiceResponse = decision.response as JevChoiceResponse<T>;
213
+ return {
214
+ choice: choiceResponse.choice,
215
+ confidence: choiceResponse.confidence,
216
+ };
217
+ }
218
+
219
+ /**
220
+ * Quick score evaluation
221
+ */
222
+ async score(
223
+ state: string | object,
224
+ question: string,
225
+ min = 0,
226
+ max = 100
227
+ ): Promise<{ score: number; confidence: number }> {
228
+ const result = await this.evaluate(state, {
229
+ answer: { type: "score", instructions: question, min, max },
230
+ });
231
+
232
+ const decision = result.decisions.answer as JevDecision<"answer">;
233
+ const scoreResponse = decision.response as JevScoreResponse;
234
+ return {
235
+ score: scoreResponse.score,
236
+ confidence: scoreResponse.confidence,
237
+ };
238
+ }
239
+
240
+ /**
241
+ * Build JevDecision from TypeSafe answer
242
+ */
243
+ private buildDecision<T extends string>(
244
+ questionId: T,
245
+ question: JevQuestion,
246
+ answer: TypeSafeAnswer
247
+ ): JevDecision<T> {
248
+ let response: JevResponse;
249
+ let probability: number;
250
+
251
+ switch (answer.type) {
252
+ case "noul":
253
+ response = {
254
+ type: "noul",
255
+ noul: answer.probability ?? 0.5,
256
+ };
257
+ probability = answer.probability ?? 0.5;
258
+ break;
259
+
260
+ case "choice":
261
+ response = {
262
+ type: "choice",
263
+ choice: answer.choice ?? question.type === "choice" ? (question as { options: string[] }).options[0] : "",
264
+ confidence: answer.confidence ?? 0.5,
265
+ };
266
+ probability = answer.confidence ?? 0.5;
267
+ break;
268
+
269
+ case "score":
270
+ const min = question.type === "score" ? (question as { min?: number }).min ?? 0 : 0;
271
+ const max = question.type === "score" ? (question as { max?: number }).max ?? 100 : 100;
272
+ response = {
273
+ type: "score",
274
+ score: answer.score ?? (min + max) / 2,
275
+ confidence: answer.confidence ?? 0.5,
276
+ };
277
+ // Normalize score to 0-1
278
+ probability = ((answer.score ?? (min + max) / 2) - min) / (max - min);
279
+ break;
280
+
281
+ default:
282
+ // Fallback for unknown types
283
+ response = {
284
+ type: "noul",
285
+ noul: 0.5,
286
+ };
287
+ probability = 0.5;
288
+ }
289
+
290
+ const confidence = this.getConfidence(answer.confidence ?? probability);
291
+
292
+ return {
293
+ questionId,
294
+ question,
295
+ response,
296
+ probability,
297
+ confidence,
298
+ };
299
+ }
300
+
301
+ /**
302
+ * Determine confidence level from probability
303
+ */
304
+ private getConfidence(probability: number): "high" | "medium" | "low" {
305
+ // Confidence is based on distance from 0.5 (uncertain)
306
+ const distance = Math.abs(probability - 0.5);
307
+ if (distance > 0.35) return "high";
308
+ if (distance > 0.2) return "medium";
309
+ return "low";
310
+ }
311
+ }
312
+
313
+ /**
314
+ * Detect which provider to use based on API key or config
315
+ */
316
+ export function detectProvider(
317
+ apiKey: string,
318
+ baseUrl?: string
319
+ ): "typesafe" | "openrouter" {
320
+ // If baseUrl is explicitly set to TypeSafe, use TypeSafe
321
+ if (baseUrl?.includes("typesafe.ai")) {
322
+ return "typesafe";
323
+ }
324
+ // If using OpenRouter URL, use OpenRouter
325
+ if (baseUrl?.includes("openrouter")) {
326
+ return "openrouter";
327
+ }
328
+ // If key looks like TypeSafe (no specific pattern known), prefer TypeSafe
329
+ // TypeSafe keys are typically longer than OpenAI-compatible keys
330
+ if (apiKey.length > 50) {
331
+ return "typesafe";
332
+ }
333
+ // Default to OpenRouter for short keys (OpenAI-compatible)
334
+ return "openrouter";
335
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/knowledge-graph",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
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.152",
3
+ "version": "1.1.154",
4
4
  "description": "Knowledge retrieval via TencentDB-Agent-Memory MCP (RFC-0105)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/laravel-plugin",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Laravel framework analysis — artisan commands, Eloquent models, Blade",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/learning-engine",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Learning engine for extracting lessons from runtime execution (RFC-0058)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/mcp-adapter",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "type": "module",
5
5
  "description": "MCP server adapter for pi-harness — exposes harness capabilities as MCP tools/resources/prompts (RFC-0068)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/memory-engine",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Memory engine with OKF integration for durable knowledge management (RFC-0060)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/milestone-manager",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Track milestones and alerts when items are at risk",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/model-registry",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Model Registry for pi-harness-runtime — centralized model metadata with pricing",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/nextjs-plugin",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Next.js framework detection and analysis for pi-harness-runtime (RFC-0062)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/notification",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "pi-harness-runtime — notification",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/observability",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Comprehensive observability system with structured logging, tracing, metrics, and alerting",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/okf-indexer",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "OKF document indexer for SKILL.md files (RFC-0106)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/paperclip-integration",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Paperclip API integration: poll agent inbox, route tasks to pi.dev, Telegram alerts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/performance-optimizer",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Performance optimization analyzer for pi-harness runtime (RFC-0056)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/privilege-broker",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Privilege Broker — capability registry and command executor for autonomous runtime (RFC-0101 §7)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/project-analyzer",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Project analysis system for pi-harness-runtime - detects frameworks, rules, and project structure",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/project-bootstrap",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Project scaffolding from typed ProjectSpec",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/projection-engine",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/prompt-compiler",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Deterministic prompt compiler for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/prompt-versioning",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "type": "module",
5
5
  "description": "Version control for prompts with rollback support (RFC-0019)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/provider-adapter-sdk",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "SDK for building, testing, and registering AI provider adapters",
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.152",
3
+ "version": "1.1.154",
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/provider-selector",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Multi-Provider Selector — route requests by cost, quality, and latency (RFC-0012)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/providers",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "pi-harness-runtime — providers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAaD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAGrE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,UAAU,EAAE,EACpB,KAAK,GAAE,MAAiD,GACvD,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAiD,EACxD,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,YAAY,EAAE,CAAC,CA0BzB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyBzB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAaD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAGrE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,UAAU,EAAE,EACpB,KAAK,GAAE,MAAiD,GACvD,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAiD,EACxD,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,YAAY,EAAE,CAAC,CAwBzB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CAwBzB"}
@@ -78,9 +78,9 @@ export async function searchSkills(client, collectionName, query, model = "sente
78
78
  limit,
79
79
  with_payload: true,
80
80
  });
81
- // Parse response: { result: { points: [...] } }
81
+ // Parse response: SDK already unwraps HTTP response, QueryResponse has points directly
82
82
  const typedResults = results;
83
- const points = typedResults?.result?.points || [];
83
+ const points = typedResults?.points || [];
84
84
  return points.map((point) => ({
85
85
  id: point.id,
86
86
  name: point.payload?.name || `skill-${point.id}`,
@@ -97,8 +97,9 @@ export async function getAllSkills(client, collectionName) {
97
97
  limit: 100,
98
98
  with_payload: true,
99
99
  });
100
+ // Parse response: SDK already unwraps HTTP response, QueryResponse has points directly
100
101
  const typedResults = results;
101
- const points = typedResults?.result?.points || [];
102
+ const points = typedResults?.points || [];
102
103
  return points.map((point) => ({
103
104
  id: point.id,
104
105
  name: point.payload?.name || `skill-${point.id}`,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/qdrant-skills",
3
- "version": "1.1.152",
3
+ "version": "1.1.154",
4
4
  "description": "Qdrant vector search integration for Hermes-style skill system",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -127,18 +127,16 @@ export async function searchSkills(
127
127
  with_payload: true,
128
128
  } as Parameters<typeof client.query>[1]);
129
129
 
130
- // Parse response: { result: { points: [...] } }
130
+ // Parse response: SDK already unwraps HTTP response, QueryResponse has points directly
131
131
  const typedResults = results as {
132
- result?: {
133
- points?: Array<{
134
- id: number;
135
- score: number;
136
- payload?: Record<string, unknown>;
137
- }>;
138
- };
132
+ points?: Array<{
133
+ id: number;
134
+ score: number;
135
+ payload?: Record<string, unknown>;
136
+ }>;
139
137
  };
140
138
 
141
- const points = typedResults?.result?.points || [];
139
+ const points = typedResults?.points || [];
142
140
 
143
141
  return points.map((point) => ({
144
142
  id: point.id,
@@ -161,17 +159,16 @@ export async function getAllSkills(
161
159
  with_payload: true,
162
160
  } as Parameters<typeof client.query>[1]);
163
161
 
162
+ // Parse response: SDK already unwraps HTTP response, QueryResponse has points directly
164
163
  const typedResults = results as {
165
- result?: {
166
- points?: Array<{
167
- id: number;
168
- score: number;
169
- payload?: Record<string, unknown>;
170
- }>;
171
- };
164
+ points?: Array<{
165
+ id: number;
166
+ score: number;
167
+ payload?: Record<string, unknown>;
168
+ }>;
172
169
  };
173
170
 
174
- const points = typedResults?.result?.points || [];
171
+ const points = typedResults?.points || [];
175
172
 
176
173
  return points.map((point) => ({
177
174
  id: point.id,