pi-harness-runtime 1.1.147 → 1.1.148

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 (142) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/package.json +3 -2
  3. package/packages/a2a-adapter/package.json +1 -1
  4. package/packages/architecture-generator/package.json +1 -1
  5. package/packages/auth/package.json +1 -1
  6. package/packages/autonomous-refactor/package.json +1 -1
  7. package/packages/autonomous-runtime/package.json +1 -1
  8. package/packages/cache-strategy/package.json +1 -1
  9. package/packages/capability-registry/package.json +1 -1
  10. package/packages/checkpoint/package.json +1 -1
  11. package/packages/cli-plugin-sdk/package.json +1 -1
  12. package/packages/clipboard/package.json +1 -1
  13. package/packages/clipboard-plugin/package.json +1 -1
  14. package/packages/code-generation/package.json +1 -1
  15. package/packages/code-review/package.json +1 -1
  16. package/packages/codex-adapter/package.json +1 -1
  17. package/packages/codex-watcher/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/dist/src/extension.js +186 -0
  34. package/packages/file-copy-helper/package.json +1 -1
  35. package/packages/framework-detector/package.json +1 -1
  36. package/packages/framework-plugin-sdk/package.json +1 -1
  37. package/packages/frappe-plugin/package.json +1 -1
  38. package/packages/generic-web-plugin/package.json +1 -1
  39. package/packages/health-monitor/package.json +1 -1
  40. package/packages/intent-analyzer/package.json +1 -1
  41. package/packages/jev-judge/package.json +1 -1
  42. package/packages/knowledge-graph/package.json +1 -1
  43. package/packages/knowledge-retrieval/package.json +1 -1
  44. package/packages/laravel-plugin/package.json +1 -1
  45. package/packages/learning-engine/package.json +1 -1
  46. package/packages/mcp-adapter/package.json +1 -1
  47. package/packages/memory-engine/package.json +1 -1
  48. package/packages/milestone-manager/package.json +1 -1
  49. package/packages/model-registry/package.json +1 -1
  50. package/packages/nextjs-plugin/package.json +1 -1
  51. package/packages/notification/dist/adapters/email-adapter.d.ts +17 -0
  52. package/packages/notification/dist/adapters/email-adapter.d.ts.map +1 -0
  53. package/packages/notification/dist/adapters/email-adapter.js +89 -0
  54. package/packages/notification/dist/adapters/email-adapter.js.map +1 -0
  55. package/packages/notification/dist/adapters/line-adapter.d.ts +17 -0
  56. package/packages/notification/dist/adapters/line-adapter.d.ts.map +1 -0
  57. package/packages/notification/dist/adapters/line-adapter.js +99 -0
  58. package/packages/notification/dist/adapters/line-adapter.js.map +1 -0
  59. package/packages/notification/dist/adapters/ntfy-adapter.d.ts +17 -0
  60. package/packages/notification/dist/adapters/ntfy-adapter.d.ts.map +1 -0
  61. package/packages/notification/dist/adapters/ntfy-adapter.js +84 -0
  62. package/packages/notification/dist/adapters/ntfy-adapter.js.map +1 -0
  63. package/packages/notification/dist/adapters/telegram-adapter.d.ts +56 -0
  64. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -0
  65. package/packages/notification/dist/adapters/telegram-adapter.js +251 -0
  66. package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -0
  67. package/packages/notification/dist/adapters/webhook-adapter.d.ts +15 -0
  68. package/packages/notification/dist/adapters/webhook-adapter.d.ts.map +1 -0
  69. package/packages/notification/dist/adapters/webhook-adapter.js +64 -0
  70. package/packages/notification/dist/adapters/webhook-adapter.js.map +1 -0
  71. package/packages/notification/dist/base-adapter.d.ts +36 -0
  72. package/packages/notification/dist/base-adapter.d.ts.map +1 -0
  73. package/packages/notification/dist/base-adapter.js +39 -0
  74. package/packages/notification/dist/base-adapter.js.map +1 -0
  75. package/packages/notification/dist/index.d.ts +12 -0
  76. package/packages/notification/dist/index.d.ts.map +1 -0
  77. package/packages/notification/dist/index.js +12 -0
  78. package/packages/notification/dist/index.js.map +1 -0
  79. package/packages/notification/dist/notification-center.d.ts +89 -0
  80. package/packages/notification/dist/notification-center.d.ts.map +1 -0
  81. package/packages/notification/dist/notification-center.js +356 -0
  82. package/packages/notification/dist/notification-center.js.map +1 -0
  83. package/packages/notification/dist/notification-policy.d.ts +66 -0
  84. package/packages/notification/dist/notification-policy.d.ts.map +1 -0
  85. package/packages/notification/dist/notification-policy.js +153 -0
  86. package/packages/notification/dist/notification-policy.js.map +1 -0
  87. package/packages/notification/dist/telegram-webhook-handler.d.ts +86 -0
  88. package/packages/notification/dist/telegram-webhook-handler.d.ts.map +1 -0
  89. package/packages/notification/dist/telegram-webhook-handler.js +149 -0
  90. package/packages/notification/dist/telegram-webhook-handler.js.map +1 -0
  91. package/packages/notification/dist/types.d.ts +106 -0
  92. package/packages/notification/dist/types.d.ts.map +1 -0
  93. package/packages/notification/dist/types.js +7 -0
  94. package/packages/notification/dist/types.js.map +1 -0
  95. package/packages/notification/package.json +1 -1
  96. package/packages/observability/package.json +1 -1
  97. package/packages/okf-indexer/package.json +1 -1
  98. package/packages/paperclip-integration/package.json +1 -1
  99. package/packages/performance-optimizer/package.json +1 -1
  100. package/packages/privilege-broker/package.json +1 -1
  101. package/packages/project-analyzer/package.json +1 -1
  102. package/packages/project-bootstrap/package.json +1 -1
  103. package/packages/projection-engine/package.json +1 -1
  104. package/packages/prompt-compiler/package.json +1 -1
  105. package/packages/prompt-versioning/package.json +1 -1
  106. package/packages/provider-adapter-sdk/package.json +1 -1
  107. package/packages/provider-router/package.json +1 -1
  108. package/packages/provider-selector/package.json +1 -1
  109. package/packages/providers/package.json +1 -1
  110. package/packages/qdrant-skills/package.json +1 -1
  111. package/packages/quota-manager/package.json +1 -1
  112. package/packages/rate-limiter/package.json +1 -1
  113. package/packages/react-vite-plugin/package.json +1 -1
  114. package/packages/release-manager/package.json +1 -1
  115. package/packages/requirement-compiler/package.json +1 -1
  116. package/packages/runtime/package.json +1 -1
  117. package/packages/scheduler/package.json +1 -1
  118. package/packages/scheduler-adapter/package.json +1 -1
  119. package/packages/session/package.json +1 -1
  120. package/packages/session-api/package.json +1 -1
  121. package/packages/session-export/package.json +1 -1
  122. package/packages/shared-context/package.json +1 -1
  123. package/packages/skill-mcp-client/package.json +1 -1
  124. package/packages/skill-registry/package.json +1 -1
  125. package/packages/skills/package.json +1 -1
  126. package/packages/sprint-planner/package.json +1 -1
  127. package/packages/subscription-engine/package.json +1 -1
  128. package/packages/task-compiler/package.json +1 -1
  129. package/packages/tencentdb-memory/package.json +1 -1
  130. package/packages/tencentdb-sync/package.json +1 -1
  131. package/packages/test-data-generator/package.json +1 -1
  132. package/packages/test-generator/package.json +1 -1
  133. package/packages/todo-bd-sync/package.json +1 -1
  134. package/packages/token-estimation/package.json +1 -1
  135. package/packages/token-optimizer/package.json +1 -1
  136. package/packages/trajectory/package.json +1 -1
  137. package/packages/tui/package.json +1 -1
  138. package/packages/types/package.json +1 -1
  139. package/packages/workflow-events/package.json +1 -1
  140. package/packages/workspace-scanner/package.json +1 -1
  141. package/packages/worktree/package.json +1 -1
  142. package/packages/write-review/package.json +1 -1
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Telegram Webhook Handler — RFC-0022
3
+ *
4
+ * Handles incoming webhook updates from Telegram (callback queries, messages).
5
+ * This enables 2-way communication with inline keyboard buttons.
6
+ */
7
+ import type { TelegramAdapter } from "./adapters/telegram-adapter.js";
8
+ import type { TelegramCallbackHandler, TelegramCallbackQuery } from "./types.js";
9
+ /**
10
+ * Predefined action prefixes for callback data
11
+ */
12
+ export declare const CallbackActions: {
13
+ /** Approve/resume action */
14
+ readonly APPROVE: "approve";
15
+ /** Reject/cancel action */
16
+ readonly REJECT: "reject";
17
+ /** View details action */
18
+ readonly VIEW: "view";
19
+ /** Custom action prefix */
20
+ readonly CUSTOM: "custom";
21
+ };
22
+ /**
23
+ * Parsed callback data structure
24
+ */
25
+ export interface ParsedCallback {
26
+ action: string;
27
+ targetId: string;
28
+ payload?: Record<string, string>;
29
+ }
30
+ /**
31
+ * Parse callback data string into structured object
32
+ * Format: "action_targetId" or "action_targetId_key1=val1,key2=val2"
33
+ */
34
+ export declare function parseCallbackData(data: string): ParsedCallback;
35
+ /**
36
+ * Build callback data string from components
37
+ */
38
+ export declare function buildCallbackData(action: string, targetId: string, payload?: Record<string, string>): string;
39
+ /**
40
+ * Create a standard Yes/No callback handler
41
+ */
42
+ export declare function createYesNoHandler(options: {
43
+ /** Called when user clicks "Yes/Approve" */
44
+ onApprove?: (targetId: string, query: TelegramCallbackQuery) => Promise<void> | void;
45
+ /** Called when user clicks "No/Reject" */
46
+ onReject?: (targetId: string, query: TelegramCallbackQuery) => Promise<void> | void;
47
+ /** Custom handler for other callback actions */
48
+ onCustom?: (action: string, targetId: string, query: TelegramCallbackQuery) => Promise<void> | void;
49
+ /** Job manager reference for default resume/cancel behavior */
50
+ jobManager?: {
51
+ resume: (jobId: string) => Promise<void>;
52
+ cancel: (jobId: string) => Promise<void>;
53
+ };
54
+ }): TelegramCallbackHandler;
55
+ /**
56
+ * Telegram webhook route handler for Express/Fastify/etc.
57
+ */
58
+ export declare function createTelegramWebhookHandler(adapter: TelegramAdapter, secretToken?: string): (req: {
59
+ body: Record<string, unknown>;
60
+ headers: Record<string, string | undefined>;
61
+ }, res: {
62
+ sendStatus: (code: number) => void;
63
+ }) => Promise<void>;
64
+ /**
65
+ * Notification payload helper with inline keyboard support
66
+ */
67
+ export declare function createInteractivePayload(event: string, jobId: string, title: string, message: string, buttons: Array<{
68
+ text: string;
69
+ action: string;
70
+ targetId: string;
71
+ }>, details?: Record<string, unknown>): {
72
+ event: string;
73
+ jobId: string;
74
+ timestamp: string;
75
+ title: string;
76
+ message: string;
77
+ details?: Record<string, unknown>;
78
+ };
79
+ /**
80
+ * Update TelegramConfig to include action buttons from payload details
81
+ */
82
+ export declare function extractButtonsFromPayload(details: Record<string, unknown> | undefined): Array<{
83
+ text: string;
84
+ callbackData: string;
85
+ }> | undefined;
86
+ //# sourceMappingURL=telegram-webhook-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-webhook-handler.d.ts","sourceRoot":"","sources":["../src/telegram-webhook-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Telegram Webhook Handler — RFC-0022
3
+ *
4
+ * Handles incoming webhook updates from Telegram (callback queries, messages).
5
+ * This enables 2-way communication with inline keyboard buttons.
6
+ */
7
+ /**
8
+ * Predefined action prefixes for callback data
9
+ */
10
+ export const CallbackActions = {
11
+ /** Approve/resume action */
12
+ APPROVE: "approve",
13
+ /** Reject/cancel action */
14
+ REJECT: "reject",
15
+ /** View details action */
16
+ VIEW: "view",
17
+ /** Custom action prefix */
18
+ CUSTOM: "custom",
19
+ };
20
+ /**
21
+ * Parse callback data string into structured object
22
+ * Format: "action_targetId" or "action_targetId_key1=val1,key2=val2"
23
+ */
24
+ export function parseCallbackData(data) {
25
+ const parts = data.split("_");
26
+ const action = parts[0] || "";
27
+ const targetId = parts[1] || "";
28
+ let payload;
29
+ // Check for additional payload
30
+ const payloadPart = parts.slice(2).join("_");
31
+ if (payloadPart && payloadPart.includes("=")) {
32
+ payload = {};
33
+ for (const pair of payloadPart.split(",")) {
34
+ const [key, value] = pair.split("=");
35
+ if (key && value) {
36
+ payload[key] = value;
37
+ }
38
+ }
39
+ }
40
+ return { action, targetId, payload };
41
+ }
42
+ /**
43
+ * Build callback data string from components
44
+ */
45
+ export function buildCallbackData(action, targetId, payload) {
46
+ let data = `${action}_${targetId}`;
47
+ if (payload && Object.keys(payload).length > 0) {
48
+ const pairs = Object.entries(payload)
49
+ .map(([k, v]) => `${k}=${v}`)
50
+ .join(",");
51
+ data += `_${pairs}`;
52
+ }
53
+ return data;
54
+ }
55
+ /**
56
+ * Create a standard Yes/No callback handler
57
+ */
58
+ export function createYesNoHandler(options) {
59
+ return async (data, query) => {
60
+ const parsed = parseCallbackData(data);
61
+ const { action, targetId } = parsed;
62
+ console.log(`[TelegramWebhook] Callback: action=${action}, target=${targetId}, from=${query.from.username || query.from.first_name}`);
63
+ switch (action) {
64
+ case CallbackActions.APPROVE:
65
+ if (options.onApprove) {
66
+ await options.onApprove(targetId, query);
67
+ }
68
+ else if (options.jobManager) {
69
+ await options.jobManager.resume(targetId);
70
+ console.log(`[TelegramWebhook] Job resumed: ${targetId}`);
71
+ }
72
+ break;
73
+ case CallbackActions.REJECT:
74
+ if (options.onReject) {
75
+ await options.onReject(targetId, query);
76
+ }
77
+ else if (options.jobManager) {
78
+ await options.jobManager.cancel(targetId);
79
+ console.log(`[TelegramWebhook] Job cancelled: ${targetId}`);
80
+ }
81
+ break;
82
+ case CallbackActions.VIEW:
83
+ if (options.onCustom) {
84
+ await options.onCustom(action, targetId, query);
85
+ }
86
+ break;
87
+ default:
88
+ if (options.onCustom) {
89
+ await options.onCustom(action, targetId, query);
90
+ }
91
+ else {
92
+ console.warn(`[TelegramWebhook] Unknown action: ${action}`);
93
+ }
94
+ }
95
+ };
96
+ }
97
+ /**
98
+ * Telegram webhook route handler for Express/Fastify/etc.
99
+ */
100
+ export function createTelegramWebhookHandler(adapter, secretToken) {
101
+ return async (req, res) => {
102
+ // Verify secret token
103
+ if (secretToken) {
104
+ const receivedToken = req.headers["x-telegram-bot-api-secret-token"];
105
+ if (receivedToken !== secretToken) {
106
+ console.error("[TelegramWebhook] Unauthorized webhook request");
107
+ res.sendStatus(403);
108
+ return;
109
+ }
110
+ }
111
+ try {
112
+ await adapter.handleWebhookUpdate(req.body);
113
+ res.sendStatus(200);
114
+ }
115
+ catch (error) {
116
+ console.error("[TelegramWebhook] Error processing update:", error);
117
+ res.sendStatus(500);
118
+ }
119
+ };
120
+ }
121
+ /**
122
+ * Notification payload helper with inline keyboard support
123
+ */
124
+ export function createInteractivePayload(event, jobId, title, message, buttons, details) {
125
+ return {
126
+ event,
127
+ jobId,
128
+ timestamp: new Date().toISOString(),
129
+ title,
130
+ message,
131
+ details: {
132
+ ...details,
133
+ _callbackButtons: buttons.map((b) => ({
134
+ text: b.text,
135
+ callbackData: buildCallbackData(b.action, b.targetId),
136
+ })),
137
+ },
138
+ };
139
+ }
140
+ /**
141
+ * Update TelegramConfig to include action buttons from payload details
142
+ */
143
+ export function extractButtonsFromPayload(details) {
144
+ if (!details)
145
+ return undefined;
146
+ const cb = details._callbackButtons;
147
+ return cb?.length ? cb : undefined;
148
+ }
149
+ //# sourceMappingURL=telegram-webhook-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-webhook-handler.js","sourceRoot":"","sources":["../src/telegram-webhook-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Notification Center Types — RFC-0022
3
+ *
4
+ * Type definitions for notification events, channels, and payloads.
5
+ */
6
+ export type NotificationEvent = "JobStarted" | "TaskCompleted" | "TaskFailed" | "QuotaPaused" | "ResumeScheduled" | "ContextCompacted" | "OutputLimitContinued" | "E2EFailed" | "HumanReviewNeeded" | "ReadyForClient" | "JobCancelled" | "WaitingForUserInput" | "CodexSessionStarted" | "CodexPlanDetected" | "Error";
7
+ export interface NotificationPayload {
8
+ event: NotificationEvent;
9
+ jobId: string;
10
+ timestamp: string;
11
+ title: string;
12
+ message: string;
13
+ details?: Record<string, unknown>;
14
+ redacted?: string[];
15
+ }
16
+ export interface NotificationConfig {
17
+ channels: NotificationChannelConfig[];
18
+ enabled?: boolean;
19
+ redactPatterns?: RegExp[];
20
+ }
21
+ export interface NotificationChannelConfig {
22
+ id: string;
23
+ type: NotificationChannelType;
24
+ enabled: boolean;
25
+ config: TelegramConfig | NtfyConfig | EmailConfig | WebhookConfig | LineConfig;
26
+ }
27
+ export type NotificationChannelType = "telegram" | "ntfy" | "email" | "webhook" | "line";
28
+ export interface TelegramConfig {
29
+ botToken: string;
30
+ chatId: string;
31
+ parseMode?: "MarkdownV2" | "HTML" | "Markdown";
32
+ enableInlineKeyboard?: boolean;
33
+ actionButtons?: InlineKeyboardButton[];
34
+ }
35
+ /**
36
+ * Inline keyboard button for Telegram interactive messages
37
+ */
38
+ export interface InlineKeyboardButton {
39
+ /** Button text displayed to user */
40
+ text: string;
41
+ /** Callback data sent when button is clicked */
42
+ callbackData: string;
43
+ /** Optional URL to open when button is clicked (mutually exclusive with callbackData) */
44
+ url?: string;
45
+ }
46
+ /**
47
+ * Callback query received from Telegram inline keyboard
48
+ */
49
+ export interface TelegramCallbackQuery {
50
+ id: string;
51
+ from: {
52
+ id: number;
53
+ is_bot: boolean;
54
+ first_name: string;
55
+ username?: string;
56
+ };
57
+ chat_instance: string;
58
+ data: string;
59
+ message?: {
60
+ chat: {
61
+ id: number;
62
+ };
63
+ message_id: number;
64
+ };
65
+ }
66
+ /**
67
+ * Callback handler function type
68
+ */
69
+ export type TelegramCallbackHandler = (callbackData: string, query: TelegramCallbackQuery) => Promise<void> | void;
70
+ export interface NtfyConfig {
71
+ server: string;
72
+ topic: string;
73
+ authToken?: string;
74
+ }
75
+ export interface EmailConfig {
76
+ smtpHost: string;
77
+ smtpPort: number;
78
+ smtpUser: string;
79
+ smtpPassword: string;
80
+ from: string;
81
+ to: string[];
82
+ tls?: boolean;
83
+ }
84
+ export interface WebhookConfig {
85
+ url: string;
86
+ method?: "POST" | "PUT";
87
+ headers?: Record<string, string>;
88
+ authToken?: string;
89
+ }
90
+ export interface LineConfig {
91
+ channelAccessToken: string;
92
+ userId: string;
93
+ }
94
+ export interface NotificationResult {
95
+ success: boolean;
96
+ channel: string;
97
+ error?: string;
98
+ }
99
+ export interface NotificationContext {
100
+ jobId: string;
101
+ requirement: string;
102
+ taskId?: string;
103
+ taskTitle?: string;
104
+ error?: string;
105
+ }
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Notification Center Types — RFC-0022
3
+ *
4
+ * Type definitions for notification events, channels, and payloads.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/notification",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
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.147",
3
+ "version": "1.1.148",
4
4
  "description": "pi-harness-runtime — providers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/qdrant-skills",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "Qdrant vector search integration for Hermes-style skill system",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/quota-manager",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "pi-harness-runtime — quota-manager",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/rate-limiter",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "type": "module",
5
5
  "description": "Rate limiting with token bucket algorithm (RFC-0023)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/react-vite-plugin",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "React/Vite framework analysis — components, config, TypeScript setup",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/release-manager",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "type": "module",
5
5
  "description": "Release management for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/requirement-compiler",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "Compiles raw requirements into validated CompiledRequirement with ambiguity detection and risk tagging",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/runtime",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "pi-harness-runtime — runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/scheduler",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "pi-harness-runtime — scheduler",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/scheduler-adapter",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "Scheduler Adapter — cron, systemd, launchd, internal adapters for autonomous runtime (RFC-0101 §6)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/session",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "Session management 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/session-api",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/session-export",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/shared-context",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "pi-harness-runtime — shared-context",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/skill-mcp-client",
3
- "version": "1.1.147",
3
+ "version": "1.1.148",
4
4
  "description": "MCP client for Skills SaaS backend",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",