pi-harness-runtime 1.1.146 → 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 (179) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +113 -0
  3. package/index.ts +136 -6
  4. package/package.json +4 -3
  5. package/packages/a2a-adapter/package.json +1 -1
  6. package/packages/architecture-generator/package.json +1 -1
  7. package/packages/auth/package.json +1 -1
  8. package/packages/autonomous-refactor/package.json +1 -1
  9. package/packages/autonomous-runtime/package.json +1 -1
  10. package/packages/cache-strategy/package.json +1 -1
  11. package/packages/capability-registry/package.json +1 -1
  12. package/packages/checkpoint/package.json +1 -1
  13. package/packages/cli-plugin-sdk/package.json +1 -1
  14. package/packages/clipboard/package.json +1 -1
  15. package/packages/clipboard-plugin/package.json +1 -1
  16. package/packages/code-generation/package.json +1 -1
  17. package/packages/code-review/package.json +1 -1
  18. package/packages/codex-adapter/package.json +1 -1
  19. package/packages/codex-watcher/package.json +1 -1
  20. package/packages/config-capture/package.json +1 -1
  21. package/packages/context-compiler/package.json +1 -1
  22. package/packages/context-discovery/package.json +1 -1
  23. package/packages/context-manager/package.json +1 -1
  24. package/packages/cookie-sanitizer/package.json +1 -1
  25. package/packages/cost-optimizer/package.json +1 -1
  26. package/packages/dependency-analyzer/package.json +1 -1
  27. package/packages/django-plugin/package.json +1 -1
  28. package/packages/doc-generator/package.json +1 -1
  29. package/packages/evaluation-engine/package.json +1 -1
  30. package/packages/evaluation-runner/package.json +1 -1
  31. package/packages/event-bus/package.json +1 -1
  32. package/packages/event-store/package.json +1 -1
  33. package/packages/experience-replay/package.json +1 -1
  34. package/packages/feedback-collector/package.json +1 -1
  35. package/packages/file-copy-helper/dist/src/extension.js +186 -0
  36. package/packages/file-copy-helper/package.json +1 -1
  37. package/packages/framework-detector/package.json +1 -1
  38. package/packages/framework-plugin-sdk/package.json +1 -1
  39. package/packages/frappe-plugin/package.json +1 -1
  40. package/packages/generic-web-plugin/package.json +1 -1
  41. package/packages/health-monitor/package.json +1 -1
  42. package/packages/intent-analyzer/package.json +1 -1
  43. package/packages/jev-judge/package.json +1 -1
  44. package/packages/knowledge-graph/package.json +1 -1
  45. package/packages/knowledge-retrieval/package.json +1 -1
  46. package/packages/laravel-plugin/package.json +1 -1
  47. package/packages/learning-engine/package.json +1 -1
  48. package/packages/mcp-adapter/package.json +1 -1
  49. package/packages/memory-engine/package.json +1 -1
  50. package/packages/milestone-manager/package.json +1 -1
  51. package/packages/model-registry/package.json +1 -1
  52. package/packages/nextjs-plugin/package.json +1 -1
  53. package/packages/notification/dist/adapters/telegram-adapter.d.ts +38 -1
  54. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
  55. package/packages/notification/dist/adapters/telegram-adapter.js +159 -5
  56. package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
  57. package/packages/notification/dist/index.d.ts +2 -0
  58. package/packages/notification/dist/index.d.ts.map +1 -1
  59. package/packages/notification/dist/index.js +2 -0
  60. package/packages/notification/dist/index.js.map +1 -1
  61. package/packages/notification/dist/notification-center.d.ts +40 -1
  62. package/packages/notification/dist/notification-center.d.ts.map +1 -1
  63. package/packages/notification/dist/notification-center.js +103 -1
  64. package/packages/notification/dist/notification-center.js.map +1 -1
  65. package/packages/notification/dist/notification-policy.d.ts +66 -0
  66. package/packages/notification/dist/notification-policy.d.ts.map +1 -0
  67. package/packages/notification/dist/notification-policy.js +153 -0
  68. package/packages/notification/dist/notification-policy.js.map +1 -0
  69. package/packages/notification/dist/src/adapters/email-adapter.d.ts +17 -0
  70. package/packages/notification/dist/src/adapters/email-adapter.d.ts.map +1 -0
  71. package/packages/notification/dist/src/adapters/email-adapter.js +89 -0
  72. package/packages/notification/dist/src/adapters/email-adapter.js.map +1 -0
  73. package/packages/notification/dist/src/adapters/line-adapter.d.ts +17 -0
  74. package/packages/notification/dist/src/adapters/line-adapter.d.ts.map +1 -0
  75. package/packages/notification/dist/src/adapters/line-adapter.js +99 -0
  76. package/packages/notification/dist/src/adapters/line-adapter.js.map +1 -0
  77. package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts +17 -0
  78. package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts.map +1 -0
  79. package/packages/notification/dist/src/adapters/ntfy-adapter.js +84 -0
  80. package/packages/notification/dist/src/adapters/ntfy-adapter.js.map +1 -0
  81. package/packages/notification/dist/src/adapters/telegram-adapter.d.ts +56 -0
  82. package/packages/notification/dist/src/adapters/telegram-adapter.d.ts.map +1 -0
  83. package/packages/notification/dist/src/adapters/telegram-adapter.js +251 -0
  84. package/packages/notification/dist/src/adapters/telegram-adapter.js.map +1 -0
  85. package/packages/notification/dist/src/adapters/webhook-adapter.d.ts +15 -0
  86. package/packages/notification/dist/src/adapters/webhook-adapter.d.ts.map +1 -0
  87. package/packages/notification/dist/src/adapters/webhook-adapter.js +64 -0
  88. package/packages/notification/dist/src/adapters/webhook-adapter.js.map +1 -0
  89. package/packages/notification/dist/src/base-adapter.d.ts +36 -0
  90. package/packages/notification/dist/src/base-adapter.d.ts.map +1 -0
  91. package/packages/notification/dist/src/base-adapter.js +39 -0
  92. package/packages/notification/dist/src/base-adapter.js.map +1 -0
  93. package/packages/notification/dist/src/index.d.ts +12 -0
  94. package/packages/notification/dist/src/index.d.ts.map +1 -0
  95. package/packages/notification/dist/src/index.js +12 -0
  96. package/packages/notification/dist/src/index.js.map +1 -0
  97. package/packages/notification/dist/src/notification-center.d.ts +89 -0
  98. package/packages/notification/dist/src/notification-center.d.ts.map +1 -0
  99. package/packages/notification/dist/src/notification-center.js +356 -0
  100. package/packages/notification/dist/src/notification-center.js.map +1 -0
  101. package/packages/notification/dist/src/notification-policy.d.ts +66 -0
  102. package/packages/notification/dist/src/notification-policy.d.ts.map +1 -0
  103. package/packages/notification/dist/src/notification-policy.js +153 -0
  104. package/packages/notification/dist/src/notification-policy.js.map +1 -0
  105. package/packages/notification/dist/src/telegram-webhook-handler.d.ts +86 -0
  106. package/packages/notification/dist/src/telegram-webhook-handler.d.ts.map +1 -0
  107. package/packages/notification/dist/src/telegram-webhook-handler.js +149 -0
  108. package/packages/notification/dist/src/telegram-webhook-handler.js.map +1 -0
  109. package/packages/notification/dist/src/types.d.ts +106 -0
  110. package/packages/notification/dist/src/types.d.ts.map +1 -0
  111. package/packages/notification/dist/src/types.js +7 -0
  112. package/packages/notification/dist/src/types.js.map +1 -0
  113. package/packages/notification/dist/telegram-webhook-handler.d.ts +86 -0
  114. package/packages/notification/dist/telegram-webhook-handler.d.ts.map +1 -0
  115. package/packages/notification/dist/telegram-webhook-handler.js +149 -0
  116. package/packages/notification/dist/telegram-webhook-handler.js.map +1 -0
  117. package/packages/notification/dist/types.d.ts +37 -0
  118. package/packages/notification/dist/types.d.ts.map +1 -1
  119. package/packages/notification/package.json +1 -1
  120. package/packages/notification/src/adapters/telegram-adapter.ts +187 -5
  121. package/packages/notification/src/index.ts +2 -0
  122. package/packages/notification/src/notification-center.ts +139 -0
  123. package/packages/notification/src/notification-policy.ts +203 -0
  124. package/packages/notification/src/telegram-webhook-handler.ts +211 -0
  125. package/packages/notification/src/types.ts +42 -0
  126. package/packages/observability/package.json +1 -1
  127. package/packages/okf-indexer/package.json +1 -1
  128. package/packages/paperclip-integration/dist/index.d.ts.map +1 -1
  129. package/packages/paperclip-integration/dist/index.js +30 -18
  130. package/packages/paperclip-integration/dist/index.js.map +1 -1
  131. package/packages/paperclip-integration/package.json +1 -1
  132. package/packages/paperclip-integration/src/index.ts +35 -20
  133. package/packages/performance-optimizer/package.json +1 -1
  134. package/packages/privilege-broker/package.json +1 -1
  135. package/packages/project-analyzer/package.json +1 -1
  136. package/packages/project-bootstrap/package.json +1 -1
  137. package/packages/projection-engine/package.json +1 -1
  138. package/packages/prompt-compiler/package.json +1 -1
  139. package/packages/prompt-versioning/package.json +1 -1
  140. package/packages/provider-adapter-sdk/package.json +1 -1
  141. package/packages/provider-router/package.json +1 -1
  142. package/packages/provider-selector/package.json +1 -1
  143. package/packages/providers/package.json +1 -1
  144. package/packages/qdrant-skills/package.json +1 -1
  145. package/packages/quota-manager/package.json +1 -1
  146. package/packages/rate-limiter/package.json +1 -1
  147. package/packages/react-vite-plugin/package.json +1 -1
  148. package/packages/release-manager/package.json +1 -1
  149. package/packages/requirement-compiler/package.json +1 -1
  150. package/packages/runtime/package.json +1 -1
  151. package/packages/scheduler/package.json +1 -1
  152. package/packages/scheduler-adapter/package.json +1 -1
  153. package/packages/session/package.json +1 -1
  154. package/packages/session-api/package.json +1 -1
  155. package/packages/session-export/package.json +1 -1
  156. package/packages/shared-context/package.json +1 -1
  157. package/packages/skill-mcp-client/package.json +1 -1
  158. package/packages/skill-registry/package.json +1 -1
  159. package/packages/skills/package.json +1 -1
  160. package/packages/sprint-planner/package.json +1 -1
  161. package/packages/subscription-engine/package.json +1 -1
  162. package/packages/task-compiler/package.json +1 -1
  163. package/packages/tencentdb-memory/package.json +1 -1
  164. package/packages/tencentdb-sync/package.json +1 -1
  165. package/packages/test-data-generator/package.json +1 -1
  166. package/packages/test-generator/package.json +1 -1
  167. package/packages/todo-bd-sync/package.json +1 -1
  168. package/packages/token-estimation/package.json +1 -1
  169. package/packages/token-optimizer/package.json +1 -1
  170. package/packages/trajectory/package.json +1 -1
  171. package/packages/tui/package.json +1 -1
  172. package/packages/types/package.json +1 -1
  173. package/packages/workflow-events/package.json +1 -1
  174. package/packages/workspace-scanner/package.json +1 -1
  175. package/packages/worktree/package.json +1 -1
  176. package/packages/write-review/package.json +1 -1
  177. package/scripts/telegram-callback-processor.ts +180 -0
  178. package/scripts/telegram-webhook-server.ts +387 -0
  179. package/scripts/test-telegram-approval.ts +64 -0
@@ -0,0 +1,186 @@
1
+ // src/extension.ts
2
+ import * as fs from "fs";
3
+ var DEBUG_LOG = "/tmp/file-copy-helper-debug.log";
4
+ function debugLog(label, data) {
5
+ const timestamp = new Date().toISOString();
6
+ const entry = `[${timestamp}] ${label}: ${JSON.stringify(data, null, 2)}
7
+ `;
8
+ fs.appendFileSync(DEBUG_LOG, entry);
9
+ }
10
+ var COPY_KEYWORDS = ["mimic", "replicate", "clone"];
11
+ var COPY_DEST_CONTEXT = ["to ", "into ", "/dest/", "/target/", "over to"];
12
+ var COPY_SOURCE_CONTEXT = ["from ", "source", "/source/", "orig"];
13
+ var IMPORT_ERROR_TRIGGERS = [
14
+ "cannot find module",
15
+ "cannot resolve module",
16
+ "module not found",
17
+ "missing import"
18
+ ];
19
+ var COPY_CONTEXT = [
20
+ "sudo cp",
21
+ " cp ",
22
+ " cp\t",
23
+ "\bcps+-r",
24
+ "\bmimic\b",
25
+ "\bclone\b",
26
+ "\breplicate\b",
27
+ "\bdeploy\b"
28
+ ];
29
+ var COPY_RULE = `
30
+ ## COPY FILES DIRECTLY (CRITICAL)
31
+
32
+ When asked to mimic, copy, clone, or replicate files:
33
+
34
+ 1. **DO NOT read the source files** - just copy them directly
35
+ 2. **Run \`sudo cp\` immediately** - no reading needed
36
+ 3. **If files have different owners**, use sudo
37
+
38
+ Examples:
39
+ \`\`\`bash
40
+ # Copy single file
41
+ sudo cp /source/file.ts /dest/file.ts
42
+
43
+ # Copy entire folder
44
+ sudo cp -r /source/folder/ /dest/folder/
45
+
46
+ # Copy matching pattern
47
+ sudo cp /source/*.tsx /dest/
48
+ \`\`\`
49
+
50
+ **STOP**: Do NOT use \`read\`, \`expand\`, or \`cat\` on source files. Just copy.
51
+
52
+ **Why**: Reading wastes time. The source files are complete - copying preserves everything exactly.
53
+ `;
54
+ var IMPORT_ERROR_RULE = `
55
+ ## IMPORT ERRORS? COPY THOSE FILES TOO!
56
+
57
+ When you see import/module errors after copying a file:
58
+
59
+ 1. **STOP fixing imports one by one**
60
+ 2. **STOP rolling back**
61
+ 3. **LIST all missing import files** for the user
62
+ 4. **Ask user which to copy**, then copy them via sudo cp
63
+
64
+ Example:
65
+ \`\`\`bash
66
+ # If error shows missing:
67
+ # - @repo/auth/server
68
+ # - @repo/design-system/components/ui/sidebar
69
+ # - ./components/notifications-provider
70
+
71
+ # Then copy these files the same way:
72
+ sudo cp /source/path/@repo/auth/server.ts /dest/path/@repo/auth/server.ts
73
+ sudo cp -r /source/path/@repo/design-system/components/ui/sidebar /dest/path/@repo/design-system/components/ui/sidebar
74
+ sudo cp /source/path/components/notifications-provider.tsx /dest/path/components/notifications-provider.tsx
75
+ \`\`\`
76
+
77
+ **NEVER fix imports one by one** - copy the missing files instead!
78
+ **NEVER roll back** - keep the copied file and copy its dependencies!
79
+ `;
80
+ function shouldInjectCopyRule(text) {
81
+ const lower = text.toLowerCase();
82
+ const hasIntent = COPY_KEYWORDS.some((keyword) => lower.includes(keyword));
83
+ if (!hasIntent) {
84
+ return {
85
+ triggered: false,
86
+ reason: `No intent keyword found. Keywords: ${COPY_KEYWORDS.join(", ")}`
87
+ };
88
+ }
89
+ const hasDest = COPY_DEST_CONTEXT.some((ctx) => lower.includes(ctx));
90
+ if (!hasDest) {
91
+ return {
92
+ triggered: false,
93
+ reason: `No destination context found. Dest contexts: ${COPY_DEST_CONTEXT.join(", ")}`
94
+ };
95
+ }
96
+ const hasSource = COPY_SOURCE_CONTEXT.some((ctx) => lower.includes(ctx));
97
+ if (!hasSource) {
98
+ return {
99
+ triggered: false,
100
+ reason: `No source context found. Source contexts: ${COPY_SOURCE_CONTEXT.join(", ")}`
101
+ };
102
+ }
103
+ return {
104
+ triggered: true,
105
+ reason: `All conditions met: hasIntent=${hasIntent}, hasDest=${hasDest}, hasSource=${hasSource}`
106
+ };
107
+ }
108
+ function shouldInjectImportErrorRule(text) {
109
+ const lower = text.toLowerCase();
110
+ const hasImportError = IMPORT_ERROR_TRIGGERS.some((t) => lower.includes(t));
111
+ if (!hasImportError) {
112
+ return { triggered: false, reason: "No import error triggers found" };
113
+ }
114
+ const hasCopyContext = COPY_CONTEXT.some((ctx) => lower.includes(ctx));
115
+ if (!hasCopyContext) {
116
+ return { triggered: false, reason: "No copy/deploy intent found" };
117
+ }
118
+ return { triggered: true, reason: "Has import error + copy intent" };
119
+ }
120
+ function registerFileCopyHelper(pi) {
121
+ fs.writeFileSync(DEBUG_LOG, `[${new Date().toISOString()}] === DEBUG SESSION STARTED ===
122
+ `);
123
+ pi.on("input", (event) => {
124
+ debugLog("INPUT_EVENT", {
125
+ source: event.source,
126
+ textLength: event.text?.length,
127
+ textPreview: event.text?.substring(0, 200),
128
+ fullText: event.text
129
+ });
130
+ if (event.source !== "interactive") {
131
+ debugLog("SKIP", "not interactive input - skipping");
132
+ return;
133
+ }
134
+ const text = event.text.trim();
135
+ debugLog("PROCESSING_TEXT", {
136
+ text,
137
+ length: text.length,
138
+ hasMinLength: text.length >= 10
139
+ });
140
+ if (!text || text.length < 10) {
141
+ debugLog("SKIP", "text too short (< 10 chars)");
142
+ return;
143
+ }
144
+ const copyCheck = shouldInjectCopyRule(text);
145
+ debugLog("COPY_RULE_CHECK", {
146
+ triggered: copyCheck.triggered,
147
+ reason: copyCheck.reason,
148
+ matchingKeywords: COPY_KEYWORDS.filter((k) => text.toLowerCase().includes(k)),
149
+ matchingDest: COPY_DEST_CONTEXT.filter((ctx) => text.toLowerCase().includes(ctx)),
150
+ matchingSource: COPY_SOURCE_CONTEXT.filter((ctx) => text.toLowerCase().includes(ctx))
151
+ });
152
+ if (copyCheck.triggered) {
153
+ debugLog("INJECT", { rule: "COPY_RULE", reason: copyCheck.reason });
154
+ return {
155
+ action: "transform",
156
+ text: text + COPY_RULE
157
+ };
158
+ }
159
+ const importCheck = shouldInjectImportErrorRule(text);
160
+ debugLog("IMPORT_ERROR_CHECK", {
161
+ triggered: importCheck.triggered,
162
+ reason: importCheck.reason,
163
+ hasImportError: IMPORT_ERROR_TRIGGERS.some((t) => text.toLowerCase().includes(t)),
164
+ hasCopyContext: COPY_CONTEXT.some((ctx) => text.toLowerCase().includes(ctx))
165
+ });
166
+ if (importCheck.triggered) {
167
+ debugLog("INJECT", {
168
+ rule: "IMPORT_ERROR_RULE",
169
+ reason: importCheck.reason
170
+ });
171
+ return {
172
+ action: "transform",
173
+ text: text + IMPORT_ERROR_RULE
174
+ };
175
+ }
176
+ debugLog("NO_INJECTION", "no rule matched - passing through");
177
+ return;
178
+ });
179
+ }
180
+ function fileCopyHelperExtension(pi) {
181
+ registerFileCopyHelper(pi);
182
+ }
183
+ export {
184
+ registerFileCopyHelper,
185
+ fileCopyHelperExtension as default
186
+ };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/file-copy-helper",
3
- "version": "1.1.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
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/jev-judge",
3
- "version": "1.1.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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.146",
3
+ "version": "1.1.148",
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",
@@ -3,16 +3,53 @@
3
3
  *
4
4
  * Sends notifications via Telegram Bot API.
5
5
  */
6
- import type { NotificationPayload, NotificationResult, TelegramConfig } from "../types.js";
6
+ import type { NotificationPayload, NotificationResult, TelegramCallbackHandler, TelegramConfig } from "../types.js";
7
7
  import { BaseChannelAdapter } from "../base-adapter.js";
8
8
  export declare class TelegramAdapter extends BaseChannelAdapter {
9
9
  readonly id = "telegram";
10
10
  readonly type = "telegram";
11
11
  private _botUsername;
12
+ private _callbackHandler;
13
+ private _webhookSecret;
12
14
  constructor(config: TelegramConfig);
15
+ /**
16
+ * Register a callback handler for inline keyboard button clicks
17
+ */
18
+ setCallbackHandler(handler: TelegramCallbackHandler): void;
19
+ /**
20
+ * Set webhook secret for verification
21
+ */
22
+ setWebhookSecret(secret: string): void;
13
23
  get botUsername(): string | undefined;
14
24
  initialize(): Promise<boolean>;
25
+ /**
26
+ * Send a message with optional inline keyboard buttons
27
+ */
15
28
  send(payload: NotificationPayload): Promise<NotificationResult>;
29
+ /**
30
+ * Build inline keyboard markup from button configuration
31
+ */
32
+ private buildInlineKeyboard;
33
+ /**
34
+ * Process incoming webhook update from Telegram
35
+ */
36
+ handleWebhookUpdate(update: Record<string, unknown>): Promise<void>;
37
+ /**
38
+ * Parse callback query from webhook update
39
+ */
40
+ private parseCallbackQuery;
41
+ /**
42
+ * Answer a callback query to remove loading state
43
+ */
44
+ private answerCallbackQuery;
45
+ /**
46
+ * Setup webhook for receiving updates
47
+ */
48
+ setupWebhook(webhookUrl: string): Promise<boolean>;
49
+ /**
50
+ * Get current webhook info
51
+ */
52
+ getWebhookInfo(): Promise<Record<string, unknown> | null>;
16
53
  private formatMessage;
17
54
  private getEmoji;
18
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,qBAAa,eAAgB,SAAQ,kBAAkB;IACvD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,YAAY,CAAqB;IAEzC,YAAY,MAAM,EAAE,cAAc,EAEjC;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAEM,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAenC;IAEK,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmCpE;IAED,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,QAAQ;CAiBhB"}
1
+ {"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAEX,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EAEvB,cAAc,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,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;IAE3C,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,CAenC;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2CpE;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;IAkBrB,OAAO,CAAC,QAAQ;CAiBhB"}
@@ -8,9 +8,23 @@ export class TelegramAdapter extends BaseChannelAdapter {
8
8
  id = "telegram";
9
9
  type = "telegram";
10
10
  _botUsername;
11
+ _callbackHandler;
12
+ _webhookSecret;
11
13
  constructor(config) {
12
14
  super({ id: "telegram", type: "telegram", enabled: true, config });
13
15
  }
16
+ /**
17
+ * Register a callback handler for inline keyboard button clicks
18
+ */
19
+ setCallbackHandler(handler) {
20
+ this._callbackHandler = handler;
21
+ }
22
+ /**
23
+ * Set webhook secret for verification
24
+ */
25
+ setWebhookSecret(secret) {
26
+ this._webhookSecret = secret;
27
+ }
14
28
  get botUsername() {
15
29
  return this._botUsername;
16
30
  }
@@ -30,18 +44,27 @@ export class TelegramAdapter extends BaseChannelAdapter {
30
44
  return false;
31
45
  }
32
46
  }
47
+ /**
48
+ * Send a message with optional inline keyboard buttons
49
+ */
33
50
  async send(payload) {
34
51
  try {
35
52
  const cfg = this.config.config;
36
53
  const message = this.formatMessage(payload);
54
+ // Build request body
55
+ const body = {
56
+ chat_id: cfg.chatId,
57
+ text: message,
58
+ parse_mode: cfg.parseMode ?? "MarkdownV2",
59
+ };
60
+ // Add inline keyboard if enabled and buttons are configured
61
+ if (cfg.enableInlineKeyboard && (cfg.actionButtons?.length ?? 0) > 0) {
62
+ body.reply_markup = this.buildInlineKeyboard(cfg.actionButtons);
63
+ }
37
64
  const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/sendMessage`, {
38
65
  method: "POST",
39
66
  headers: { "Content-Type": "application/json" },
40
- body: JSON.stringify({
41
- chat_id: cfg.chatId,
42
- text: message,
43
- parse_mode: cfg.parseMode ?? "MarkdownV2",
44
- }),
67
+ body: JSON.stringify(body),
45
68
  });
46
69
  if (!response.ok) {
47
70
  const error = await response.text();
@@ -61,6 +84,137 @@ export class TelegramAdapter extends BaseChannelAdapter {
61
84
  };
62
85
  }
63
86
  }
87
+ /**
88
+ * Build inline keyboard markup from button configuration
89
+ */
90
+ buildInlineKeyboard(buttons) {
91
+ // Group buttons into rows of up to 3 buttons each (Telegram limit)
92
+ const ROW_SIZE = 3;
93
+ const rows = [];
94
+ for (let i = 0; i < buttons.length; i += ROW_SIZE) {
95
+ const row = buttons.slice(i, i + ROW_SIZE).map((btn) => ({
96
+ text: btn.text,
97
+ ...(btn.url ? { url: btn.url } : { callback_data: btn.callbackData }),
98
+ }));
99
+ rows.push(row);
100
+ }
101
+ return { inline_keyboard: rows };
102
+ }
103
+ /**
104
+ * Process incoming webhook update from Telegram
105
+ */
106
+ async handleWebhookUpdate(update) {
107
+ // Verify secret token if set
108
+ if (this._webhookSecret) {
109
+ const secretToken = update.secret_token;
110
+ if (secretToken !== this._webhookSecret) {
111
+ console.error("[TelegramAdapter] Invalid webhook secret");
112
+ return;
113
+ }
114
+ }
115
+ // Handle callback query (button click)
116
+ const callbackQuery = update.callback_query;
117
+ if (callbackQuery && this._callbackHandler) {
118
+ const query = this.parseCallbackQuery(callbackQuery);
119
+ if (query) {
120
+ await this._callbackHandler(query.data, query);
121
+ await this.answerCallbackQuery(query.id);
122
+ }
123
+ }
124
+ // Handle regular messages (future: user can type commands)
125
+ const message = update.message;
126
+ if (message) {
127
+ console.log("[TelegramAdapter] Received message:", message.text);
128
+ }
129
+ }
130
+ /**
131
+ * Parse callback query from webhook update
132
+ */
133
+ parseCallbackQuery(raw) {
134
+ try {
135
+ const from = raw.from;
136
+ const message = raw.message;
137
+ const chat = message?.chat;
138
+ return {
139
+ id: String(raw.id),
140
+ from: {
141
+ id: Number(from?.id),
142
+ is_bot: Boolean(from?.is_bot),
143
+ first_name: String(from?.first_name ?? ""),
144
+ username: from?.username ? String(from.username) : undefined,
145
+ },
146
+ chat_instance: String(raw.chat_instance ?? ""),
147
+ data: String(raw.data ?? ""),
148
+ message: message
149
+ ? {
150
+ chat: { id: Number(chat?.id) },
151
+ message_id: Number(message?.message_id),
152
+ }
153
+ : undefined,
154
+ };
155
+ }
156
+ catch {
157
+ console.error("[TelegramAdapter] Failed to parse callback query");
158
+ return null;
159
+ }
160
+ }
161
+ /**
162
+ * Answer a callback query to remove loading state
163
+ */
164
+ async answerCallbackQuery(callbackQueryId) {
165
+ try {
166
+ const cfg = this.config.config;
167
+ await fetch(`https://api.telegram.org/bot${cfg.botToken}/answerCallbackQuery`, {
168
+ method: "POST",
169
+ headers: { "Content-Type": "application/json" },
170
+ body: JSON.stringify({ callback_query_id: callbackQueryId }),
171
+ });
172
+ }
173
+ catch (error) {
174
+ console.error("[TelegramAdapter] Failed to answer callback query:", error);
175
+ }
176
+ }
177
+ /**
178
+ * Setup webhook for receiving updates
179
+ */
180
+ async setupWebhook(webhookUrl) {
181
+ try {
182
+ const cfg = this.config.config;
183
+ const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/setWebhook`, {
184
+ method: "POST",
185
+ headers: { "Content-Type": "application/json" },
186
+ body: JSON.stringify({
187
+ url: webhookUrl,
188
+ secret_token: this._webhookSecret,
189
+ }),
190
+ });
191
+ if (!response.ok) {
192
+ console.error("[TelegramAdapter] Webhook setup failed:", await response.text());
193
+ return false;
194
+ }
195
+ console.log(`[TelegramAdapter] Webhook set to: ${webhookUrl}`);
196
+ return true;
197
+ }
198
+ catch (error) {
199
+ console.error("[TelegramAdapter] Webhook setup error:", error);
200
+ return false;
201
+ }
202
+ }
203
+ /**
204
+ * Get current webhook info
205
+ */
206
+ async getWebhookInfo() {
207
+ try {
208
+ const cfg = this.config.config;
209
+ const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/getWebhookInfo`);
210
+ if (!response.ok)
211
+ return null;
212
+ return (await response.json());
213
+ }
214
+ catch {
215
+ return null;
216
+ }
217
+ }
64
218
  formatMessage(payload) {
65
219
  const emoji = this.getEmoji(payload.event);
66
220
  const title = `${emoji} ${payload.title}`;
@@ -1 +1 @@
1
- {"version":3,"file":"telegram-adapter.js","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram-adapter.js","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,7 @@
6
6
  export * from "./notification-center.js";
7
7
  export * from "./base-adapter.js";
8
8
  export * from "./types.js";
9
+ export * from "./telegram-webhook-handler.js";
9
10
  export { LineAdapter } from "./adapters/line-adapter.js";
11
+ export { TelegramAdapter } from "./adapters/telegram-adapter.js";
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
@@ -6,5 +6,7 @@
6
6
  export * from "./notification-center.js";
7
7
  export * from "./base-adapter.js";
8
8
  export * from "./types.js";
9
+ export * from "./telegram-webhook-handler.js";
9
10
  export { LineAdapter } from "./adapters/line-adapter.js";
11
+ export { TelegramAdapter } from "./adapters/telegram-adapter.js";
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}