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.
- package/CHANGELOG.md +2 -0
- package/package.json +3 -2
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/dist/src/extension.js +186 -0
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/dist/adapters/email-adapter.d.ts +17 -0
- package/packages/notification/dist/adapters/email-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/email-adapter.js +89 -0
- package/packages/notification/dist/adapters/email-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/line-adapter.d.ts +17 -0
- package/packages/notification/dist/adapters/line-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/line-adapter.js +99 -0
- package/packages/notification/dist/adapters/line-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts +17 -0
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/ntfy-adapter.js +84 -0
- package/packages/notification/dist/adapters/ntfy-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/telegram-adapter.d.ts +56 -0
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/telegram-adapter.js +251 -0
- package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/webhook-adapter.d.ts +15 -0
- package/packages/notification/dist/adapters/webhook-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/webhook-adapter.js +64 -0
- package/packages/notification/dist/adapters/webhook-adapter.js.map +1 -0
- package/packages/notification/dist/base-adapter.d.ts +36 -0
- package/packages/notification/dist/base-adapter.d.ts.map +1 -0
- package/packages/notification/dist/base-adapter.js +39 -0
- package/packages/notification/dist/base-adapter.js.map +1 -0
- package/packages/notification/dist/index.d.ts +12 -0
- package/packages/notification/dist/index.d.ts.map +1 -0
- package/packages/notification/dist/index.js +12 -0
- package/packages/notification/dist/index.js.map +1 -0
- package/packages/notification/dist/notification-center.d.ts +89 -0
- package/packages/notification/dist/notification-center.d.ts.map +1 -0
- package/packages/notification/dist/notification-center.js +356 -0
- package/packages/notification/dist/notification-center.js.map +1 -0
- package/packages/notification/dist/notification-policy.d.ts +66 -0
- package/packages/notification/dist/notification-policy.d.ts.map +1 -0
- package/packages/notification/dist/notification-policy.js +153 -0
- package/packages/notification/dist/notification-policy.js.map +1 -0
- package/packages/notification/dist/telegram-webhook-handler.d.ts +86 -0
- package/packages/notification/dist/telegram-webhook-handler.d.ts.map +1 -0
- package/packages/notification/dist/telegram-webhook-handler.js +149 -0
- package/packages/notification/dist/telegram-webhook-handler.js.map +1 -0
- package/packages/notification/dist/types.d.ts +106 -0
- package/packages/notification/dist/types.d.ts.map +1 -0
- package/packages/notification/dist/types.js +7 -0
- package/packages/notification/dist/types.js.map +1 -0
- package/packages/notification/package.json +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
|
@@ -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":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,4BAA4B;IAC5B,OAAO,EAAE,SAAS;IAClB,2BAA2B;IAC3B,MAAM,EAAE,QAAQ;IAChB,0BAA0B;IAC1B,IAAI,EAAE,MAAM;IACZ,2BAA2B;IAC3B,MAAM,EAAE,QAAQ;CACP,CAAC;AAWX;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,OAA2C,CAAC;IAEhD,+BAA+B;IAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAChC,MAAc,EACd,QAAgB,EAChB,OAAgC;IAEhC,IAAI,IAAI,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;IACnC,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAYlC;IACA,OAAO,KAAK,EAAE,IAAY,EAAE,KAA4B,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAEpC,OAAO,CAAC,GAAG,CACV,sCAAsC,MAAM,YAAY,QAAQ,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CACxH,CAAC;QAEF,QAAQ,MAAM,EAAE,CAAC;YAChB,KAAK,eAAe,CAAC,OAAO;gBAC3B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACvB,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC1C,CAAC;qBAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,MAAM;YAEP,KAAK,eAAe,CAAC,MAAM;gBAC1B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM;YAEP,KAAK,eAAe,CAAC,IAAI;gBACxB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM;YAEP;gBACC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;gBAC7D,CAAC;QACH,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC3C,OAAwB,EACxB,WAAoB;IAEpB,OAAO,KAAK,EAAE,GAAmF,EAAE,GAA2C,EAAE,EAAE;QACjJ,sBAAsB;QACtB,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAuB,CAAC;YAC3F,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAChE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACR,CAAC;QACF,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACvC,KAAa,EACb,KAAa,EACb,KAAa,EACb,OAAe,EACf,OAAkE,EAClE,OAAiC;IASjC,OAAO;QACN,KAAK;QACL,KAAK;QACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,OAAO;QACP,OAAO,EAAE;YACR,GAAG,OAAO;YACV,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;aACrD,CAAC,CAAC;SACH;KACD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACxC,OAA4C;IAE5C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,EAAE,GAAG,OAAO,CAAC,gBAEP,CAAC;IAEb,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACpC,CAAC"}
|
|
@@ -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 @@
|
|
|
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/provider-router",
|
|
3
|
-
"version": "1.1.
|
|
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",
|