pi-harness-runtime 1.1.250 → 1.1.254

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 (124) hide show
  1. package/index.ts +96 -48
  2. package/package.json +1 -1
  3. package/packages/a2a-adapter/package.json +1 -1
  4. package/packages/agent-policy/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/codex-watcher/dist/src/index.d.ts +1 -0
  19. package/packages/codex-watcher/dist/src/index.d.ts.map +1 -1
  20. package/packages/codex-watcher/dist/src/index.js +41 -17
  21. package/packages/codex-watcher/dist/src/index.js.map +1 -1
  22. package/packages/codex-watcher/dist/src/session.js +23 -29
  23. package/packages/codex-watcher/dist/src/session.js.map +1 -1
  24. package/packages/codex-watcher/package.json +1 -1
  25. package/packages/codex-watcher/src/index.ts +45 -19
  26. package/packages/codex-watcher/src/session.ts +20 -33
  27. package/packages/config-capture/package.json +1 -1
  28. package/packages/context-compiler/package.json +1 -1
  29. package/packages/context-discovery/package.json +1 -1
  30. package/packages/context-manager/package.json +1 -1
  31. package/packages/cookie-sanitizer/package.json +1 -1
  32. package/packages/cost-optimizer/package.json +1 -1
  33. package/packages/dependency-analyzer/package.json +1 -1
  34. package/packages/django-plugin/package.json +1 -1
  35. package/packages/doc-generator/package.json +1 -1
  36. package/packages/e2e-tester/package.json +1 -1
  37. package/packages/evaluation-engine/package.json +1 -1
  38. package/packages/evaluation-runner/package.json +1 -1
  39. package/packages/event-bus/package.json +1 -1
  40. package/packages/event-store/package.json +1 -1
  41. package/packages/experience-replay/package.json +1 -1
  42. package/packages/feedback-collector/package.json +1 -1
  43. package/packages/file-copy-helper/package.json +1 -1
  44. package/packages/framework-detector/package.json +1 -1
  45. package/packages/framework-plugin-sdk/package.json +1 -1
  46. package/packages/frappe-plugin/package.json +1 -1
  47. package/packages/generic-web-plugin/package.json +1 -1
  48. package/packages/health-monitor/package.json +1 -1
  49. package/packages/intent-analyzer/package.json +1 -1
  50. package/packages/jev-judge/package.json +1 -1
  51. package/packages/knowledge-graph/package.json +1 -1
  52. package/packages/knowledge-retrieval/package.json +1 -1
  53. package/packages/laravel-plugin/package.json +1 -1
  54. package/packages/learning-engine/package.json +1 -1
  55. package/packages/mcp-adapter/package.json +1 -1
  56. package/packages/memory-engine/package.json +1 -1
  57. package/packages/milestone-manager/package.json +1 -1
  58. package/packages/model-registry/package.json +1 -1
  59. package/packages/nextjs-plugin/package.json +1 -1
  60. package/packages/notification/dist/adapters/telegram-adapter.d.ts +10 -0
  61. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
  62. package/packages/notification/dist/adapters/telegram-adapter.js +18 -1
  63. package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
  64. package/packages/notification/dist/index.d.ts +1 -1
  65. package/packages/notification/dist/index.d.ts.map +1 -1
  66. package/packages/notification/dist/index.js +1 -1
  67. package/packages/notification/dist/index.js.map +1 -1
  68. package/packages/notification/dist/notification-center.d.ts +4 -0
  69. package/packages/notification/dist/notification-center.d.ts.map +1 -1
  70. package/packages/notification/dist/notification-center.js +10 -0
  71. package/packages/notification/dist/notification-center.js.map +1 -1
  72. package/packages/notification/package.json +1 -1
  73. package/packages/notification/src/adapters/telegram-adapter.ts +29 -2
  74. package/packages/notification/src/index.ts +1 -1
  75. package/packages/notification/src/notification-center.ts +11 -0
  76. package/packages/observability/package.json +1 -1
  77. package/packages/okf-indexer/package.json +1 -1
  78. package/packages/paperclip-integration/package.json +1 -1
  79. package/packages/performance-optimizer/package.json +1 -1
  80. package/packages/privilege-broker/package.json +1 -1
  81. package/packages/project-analyzer/package.json +1 -1
  82. package/packages/project-bootstrap/package.json +1 -1
  83. package/packages/projection-engine/package.json +1 -1
  84. package/packages/prompt-compiler/package.json +1 -1
  85. package/packages/prompt-versioning/package.json +1 -1
  86. package/packages/provider-adapter-sdk/package.json +1 -1
  87. package/packages/provider-router/package.json +1 -1
  88. package/packages/provider-selector/package.json +1 -1
  89. package/packages/providers/package.json +1 -1
  90. package/packages/qdrant-skills/package.json +1 -1
  91. package/packages/quota-manager/package.json +1 -1
  92. package/packages/rate-limiter/package.json +1 -1
  93. package/packages/react-vite-plugin/package.json +1 -1
  94. package/packages/release-manager/package.json +1 -1
  95. package/packages/requirement-compiler/package.json +1 -1
  96. package/packages/runtime/package.json +1 -1
  97. package/packages/scheduler/package.json +1 -1
  98. package/packages/scheduler-adapter/package.json +1 -1
  99. package/packages/session/package.json +1 -1
  100. package/packages/session-api/package.json +1 -1
  101. package/packages/session-export/package.json +1 -1
  102. package/packages/shared-context/package.json +1 -1
  103. package/packages/skill-mcp-client/package.json +1 -1
  104. package/packages/skill-registry/package.json +1 -1
  105. package/packages/skills/package.json +1 -1
  106. package/packages/sprint-planner/package.json +1 -1
  107. package/packages/subscription-engine/package.json +1 -1
  108. package/packages/task-compiler/package.json +1 -1
  109. package/packages/telegram/package.json +1 -1
  110. package/packages/tencentdb-memory/package.json +1 -1
  111. package/packages/tencentdb-sync/package.json +1 -1
  112. package/packages/test-data-generator/package.json +1 -1
  113. package/packages/test-generator/package.json +1 -1
  114. package/packages/todo-bd-sync/package.json +1 -1
  115. package/packages/token-estimation/package.json +1 -1
  116. package/packages/token-optimizer/package.json +1 -1
  117. package/packages/trajectory/package.json +1 -1
  118. package/packages/tui/package.json +1 -1
  119. package/packages/types/package.json +1 -1
  120. package/packages/webmcp-tester/package.json +1 -1
  121. package/packages/workflow-events/package.json +1 -1
  122. package/packages/workspace-scanner/package.json +1 -1
  123. package/packages/worktree/package.json +1 -1
  124. package/packages/write-review/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/codex-watcher",
3
- "version": "1.1.250",
3
+ "version": "1.1.254",
4
4
  "description": "Watches Codex CLI sessions and emits visible messages for PING-PONG monitoring",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -18,7 +18,7 @@
18
18
  * // later: handle.stop();
19
19
  */
20
20
 
21
- import { existsSync, openSync, readFileSync, statSync } from "node:fs";
21
+ import { existsSync, openSync, readFileSync, readSync, fstatSync, closeSync } from "node:fs";
22
22
  import { homedir } from "node:os";
23
23
  import { join } from "node:path";
24
24
  import { classifyMessage, parseNewMessages } from "./parser.js";
@@ -75,6 +75,7 @@ export async function getVisibleMessages(
75
75
  * 1. Polls session_index.jsonl to detect active session changes
76
76
  * 2. Tracks file position so it only reads new lines (no re-read of full file)
77
77
  * 3. Calls onMessages with incremental messages each poll cycle
78
+ * 4. Preserves incomplete JSON lines until a complete newline-delimited record arrives
78
79
  */
79
80
  export function startWatcher(options: WatcherOptions = {}): WatcherHandle {
80
81
  const {
@@ -89,6 +90,8 @@ export function startWatcher(options: WatcherOptions = {}): WatcherHandle {
89
90
  let currentFd: ReturnType<typeof openSync> | null = null;
90
91
  let currentPath: string | null = null;
91
92
  let currentOrdinal = 0;
93
+ let currentBytePos = 0; // Track byte position we're at in the file
94
+ let pendingText = ""; // Preserve incomplete lines across reads
92
95
  let pollCount = 0;
93
96
  const maxIdlePolls = options.maxIdlePolls ?? Infinity;
94
97
 
@@ -99,11 +102,11 @@ export function startWatcher(options: WatcherOptions = {}): WatcherHandle {
99
102
  stopped = true;
100
103
  if (currentFd !== null) {
101
104
  try {
102
- const { closeSync } = require("node:fs") as typeof import("node:fs");
103
105
  closeSync(currentFd);
104
106
  } catch {
105
107
  // ignore
106
108
  }
109
+ currentFd = null;
107
110
  }
108
111
  }
109
112
 
@@ -122,43 +125,65 @@ export function startWatcher(options: WatcherOptions = {}): WatcherHandle {
122
125
  function openRollout(path: string) {
123
126
  if (currentFd !== null && currentPath !== path) {
124
127
  try {
125
- const { closeSync } = require("node:fs") as typeof import("node:fs");
126
128
  closeSync(currentFd);
127
129
  } catch {
128
130
  // ignore
129
131
  }
132
+ currentFd = null;
130
133
  }
131
134
 
132
- // stat to get current size
133
- const stat = statSync(path);
135
+ // Open the file for reading
134
136
  currentFd = openSync(path, "r");
135
137
  currentPath = path;
136
138
  currentOrdinal = 0;
137
- return { fd: currentFd, size: stat.size };
139
+ currentBytePos = 0;
140
+ pendingText = ""; // Reset pending text for new file
141
+ return currentFd;
138
142
  }
139
143
 
144
+ /**
145
+ * Read new lines from the file, preserving incomplete records.
146
+ * Returns complete lines only; incomplete trailing data is kept for next read.
147
+ */
140
148
  function readNewLines(
141
149
  fd: number,
142
- knownSize: number,
143
150
  ): {
144
151
  lines: string[];
145
- newSize: number;
152
+ newBytePos: number;
146
153
  } {
147
- const { readSync, fstatSync } =
148
- require("node:fs") as typeof import("node:fs");
149
154
  const stat = fstatSync(fd);
150
- const newSize = stat.size;
155
+ const fileSize = stat.size;
151
156
 
152
- if (newSize <= knownSize) {
153
- return { lines: [], newSize: knownSize };
157
+ // Read from our tracked position to current end of file
158
+ const bytesToRead = fileSize - currentBytePos;
159
+ if (bytesToRead <= 0) {
160
+ return { lines: [], newBytePos: currentBytePos };
154
161
  }
155
162
 
156
- const buf = Buffer.alloc(newSize - knownSize);
157
- const bytesRead = readSync(fd, buf, 0, buf.length, knownSize);
163
+ const buf = Buffer.alloc(bytesToRead);
164
+ const bytesRead = readSync(fd, buf, 0, buf.length, currentBytePos);
158
165
  const text = buf.subarray(0, bytesRead).toString("utf8");
159
- const lines = text.split("\n").filter((l) => l.trim());
160
166
 
161
- return { lines, newSize };
167
+ // Prepend any pending text from previous incomplete read
168
+ const fullText = pendingText + text;
169
+
170
+ // Split by newline, keeping track of whether we ended with a complete line
171
+ const lines = fullText.split("\n");
172
+
173
+ // If text doesn't end with newline, last element is incomplete - save it
174
+ if (!text.endsWith("\n")) {
175
+ pendingText = lines.pop() ?? "";
176
+ } else {
177
+ pendingText = "";
178
+ }
179
+
180
+ // Filter out empty lines
181
+ const completeLines = lines.filter((l) => l.trim());
182
+
183
+ // Update our tracked position by bytes actually read
184
+ const newBytePos = currentBytePos + bytesRead;
185
+
186
+ return { lines: completeLines, newBytePos };
162
187
  }
163
188
 
164
189
  async function poll() {
@@ -198,8 +223,9 @@ export function startWatcher(options: WatcherOptions = {}): WatcherHandle {
198
223
  return;
199
224
  }
200
225
 
201
- const stat = statSync(session.rolloutPath);
202
- const { lines } = readNewLines(currentFd, stat.size);
226
+ // Read new lines from our tracked byte position
227
+ const { lines, newBytePos } = readNewLines(currentFd!);
228
+ currentBytePos = newBytePos; // Update tracked position
203
229
 
204
230
  if (lines.length > 0) {
205
231
  pollCount = 0;
@@ -2,7 +2,7 @@
2
2
  * Session discovery — reads ~/.codex/session_index.jsonl to find active sessions.
3
3
  */
4
4
 
5
- import { existsSync, readFileSync } from "node:fs";
5
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
6
6
  import { homedir } from "node:os";
7
7
  import { join } from "node:path";
8
8
  import type { CodexSession } from "./types.js";
@@ -69,51 +69,38 @@ function findRolloutPath(sessionId: string, codexDir?: string): string {
69
69
  // The rollout path follows: sessions/YYYY/MM/DD/rollout-YYYY-MM-DDTHH-MM-SS-<sessionId>.jsonl
70
70
  // We need to find the file whose name ends with <sessionId>.jsonl
71
71
  // Since there can be multiple sessions per day, iterate all files.
72
- try {
73
- const { readdirSync } = require("node:fs") as typeof import("node:fs");
74
- for (const dirPath of walkDirs(sessionsDir)) {
75
- for (const file of readdirSync(dirPath)) {
76
- if (file.endsWith(`${sessionId}.jsonl`)) {
77
- return join(dirPath, file);
78
- }
79
- }
80
- }
81
- } catch {
82
- // walkSync may not be available on all Node versions; fall back to find
83
- }
84
- return findRolloutPathFallback(sessionId, sessionsDir);
85
- }
86
-
87
- function findRolloutPathFallback(
88
- sessionId: string,
89
- sessionsDir: string,
90
- ): string {
91
72
  const found = walkForSession(sessionsDir, sessionId);
92
- return found ?? join(sessionsDir, "unknown", `${sessionId}.jsonl`);
73
+ if (found) return found;
74
+ return join(sessionsDir, "unknown", `${sessionId}.jsonl`);
93
75
  }
94
76
 
95
77
  /** Recursively walk all subdirectories, yielding each directory path. */
96
78
  function* walkDirs(dir: string): Generator<string> {
97
- const { readdirSync, statSync } =
98
- require("node:fs") as typeof import("node:fs");
99
- for (const entry of readdirSync(dir)) {
100
- const full = join(dir, entry);
101
- const stat = statSync(full);
102
- if (stat.isDirectory()) {
103
- yield full;
104
- yield* walkDirs(full);
79
+ try {
80
+ for (const entry of readdirSync(dir)) {
81
+ const full = join(dir, entry);
82
+ const stat = statSync(full);
83
+ if (stat.isDirectory()) {
84
+ yield full;
85
+ yield* walkDirs(full);
86
+ }
105
87
  }
88
+ } catch {
89
+ // Directory may not exist or be readable
106
90
  }
107
91
  }
108
92
 
109
93
  /** Find the rollout file for a given session ID by walking directories. */
110
94
  function walkForSession(sessionsDir: string, sessionId: string): string | null {
111
- const { readdirSync } = require("node:fs") as typeof import("node:fs");
112
95
  for (const dirPath of walkDirs(sessionsDir)) {
113
- for (const file of readdirSync(dirPath)) {
114
- if (file.startsWith("rollout-") && file.endsWith(`${sessionId}.jsonl`)) {
115
- return join(dirPath, file);
96
+ try {
97
+ for (const file of readdirSync(dirPath)) {
98
+ if (file.startsWith("rollout-") && file.endsWith(`${sessionId}.jsonl`)) {
99
+ return join(dirPath, file);
100
+ }
116
101
  }
102
+ } catch {
103
+ // Skip unreadable directories
117
104
  }
118
105
  }
119
106
  return null;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/config-capture",
3
- "version": "1.1.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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/e2e-tester",
3
- "version": "1.1.250",
3
+ "version": "1.1.254",
4
4
  "description": "WebMCP-powered E2E testing for pi-harness - natural language test scenarios",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/jev-judge",
3
- "version": "1.1.250",
3
+ "version": "1.1.254",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/knowledge-graph",
3
- "version": "1.1.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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.250",
3
+ "version": "1.1.254",
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",
@@ -4,12 +4,17 @@
4
4
  * Sends notifications via Telegram Bot API.
5
5
  */
6
6
  import type { NotificationPayload, NotificationResult, TelegramCallbackHandler, TelegramConfig } from "../types.js";
7
+ /**
8
+ * Telegram update object from getUpdates
9
+ */
10
+ type TelegramMessageHandler = (text: string, chatId: string) => Promise<void>;
7
11
  import { BaseChannelAdapter } from "../base-adapter.js";
8
12
  export declare class TelegramAdapter extends BaseChannelAdapter {
9
13
  readonly id = "telegram";
10
14
  readonly type = "telegram";
11
15
  private _botUsername;
12
16
  private _callbackHandler;
17
+ private _messageHandler;
13
18
  private _webhookSecret;
14
19
  private _pollInterval;
15
20
  private _lastUpdateId;
@@ -20,6 +25,10 @@ export declare class TelegramAdapter extends BaseChannelAdapter {
20
25
  * Register a callback handler for inline keyboard button clicks
21
26
  */
22
27
  setCallbackHandler(handler: TelegramCallbackHandler): void;
28
+ /**
29
+ * Register a message handler for inbound Telegram messages
30
+ */
31
+ setMessageHandler(handler: TelegramMessageHandler): void;
23
32
  /**
24
33
  * Set webhook secret for verification
25
34
  */
@@ -82,4 +91,5 @@ export declare class TelegramAdapter extends BaseChannelAdapter {
82
91
  private formatMessage;
83
92
  private getStatusLabel;
84
93
  }
94
+ export {};
85
95
  //# sourceMappingURL=telegram-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAEX,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EAEvB,cAAc,EACd,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,qBAAa,eAAgB,SAAQ,kBAAkB;IACvD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAM;IAExB,YAAY,MAAM,EAAE,cAAc,EAEjC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAEzD;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAErC;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAEM,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CA8BnC;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAWnB;IAED;;OAEG;IACH,WAAW,IAAI,IAAI,CAMlB;IAED;;OAEG;YACW,IAAI;IAiDlB;;OAEG;YACW,aAAa;IAgC3B;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAkBvD;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqEpE;IAED;;;OAGG;IACG,YAAY,CACjB,OAAO,EAAE,mBAAmB,EAC5B,WAAW,SAA8B,GACvC,OAAO,CAAC,kBAAkB,CAAC,CA+D7B;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBxE;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+B1B;;OAEG;YACW,mBAAmB;IAgBjC;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BvD;IAED;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAY9D;IAED,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,cAAc;CAmBtB"}
1
+ {"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAEX,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EAEvB,cAAc,EACd,MAAM,aAAa,CAAC;AAErB;;GAEG;AAEH,KAAK,sBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAY9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,qBAAa,eAAgB,SAAQ,kBAAkB;IACvD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAM;IAExB,YAAY,MAAM,EAAE,cAAc,EAEjC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAEzD;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAEvD;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAErC;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAEM,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CA8BnC;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAWnB;IAED;;OAEG;IACH,WAAW,IAAI,IAAI,CAMlB;IAED;;OAEG;YACW,IAAI;IAiDlB;;OAEG;YACW,aAAa;IA2C3B;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAkBvD;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqEpE;IAED;;;OAGG;IACG,YAAY,CACjB,OAAO,EAAE,mBAAmB,EAC5B,WAAW,SAA8B,GACvC,OAAO,CAAC,kBAAkB,CAAC,CA+D7B;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBxE;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+B1B;;OAEG;YACW,mBAAmB;IAgBjC;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BvD;IAED;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAY9D;IAED,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,cAAc;CAmBtB"}
@@ -15,6 +15,7 @@ export class TelegramAdapter extends BaseChannelAdapter {
15
15
  type = "telegram";
16
16
  _botUsername;
17
17
  _callbackHandler;
18
+ _messageHandler;
18
19
  _webhookSecret;
19
20
  _pollInterval;
20
21
  _lastUpdateId = -1;
@@ -29,6 +30,12 @@ export class TelegramAdapter extends BaseChannelAdapter {
29
30
  setCallbackHandler(handler) {
30
31
  this._callbackHandler = handler;
31
32
  }
33
+ /**
34
+ * Register a message handler for inbound Telegram messages
35
+ */
36
+ setMessageHandler(handler) {
37
+ this._messageHandler = handler;
38
+ }
32
39
  /**
33
40
  * Set webhook secret for verification
34
41
  */
@@ -99,7 +106,7 @@ export class TelegramAdapter extends BaseChannelAdapter {
99
106
  offset: this._lastUpdateId + 1,
100
107
  limit: this._pollLimit,
101
108
  timeout: Math.floor(this._pollTimeoutMs / 1000),
102
- allowed_updates: ["callback_query"],
109
+ allowed_updates: ["callback_query", "message"], // Poll for both callbacks AND messages
103
110
  };
104
111
  const response = await fetch(`https://api.telegram.org/bot${token}/getUpdates`, {
105
112
  method: "POST",
@@ -154,6 +161,16 @@ export class TelegramAdapter extends BaseChannelAdapter {
154
161
  await this._callbackHandler(query.data, query);
155
162
  }
156
163
  }
164
+ // Handle regular message
165
+ if (update.message && this._messageHandler) {
166
+ const msg = update.message;
167
+ // Only forward text messages from non-bot users
168
+ if (msg.text && (!msg.from || !msg.from.is_bot)) {
169
+ const chatId = msg.chat?.id?.toString() || "";
170
+ logInfo("[TelegramAdapter]", `Inbound message: "${msg.text.slice(0, 50)}..." from chat ${chatId}`);
171
+ await this._messageHandler(msg.text, chatId);
172
+ }
173
+ }
157
174
  }
158
175
  /**
159
176
  * Verify outbound delivery with a fixed startup greeting. No user content is sent.