pi-harness-runtime 1.1.189 → 1.1.190
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/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/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/e2e-tester/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/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/notification-center.d.ts +34 -0
- package/packages/notification/dist/notification-center.d.ts.map +1 -1
- package/packages/notification/dist/notification-center.js +60 -4
- package/packages/notification/dist/notification-center.js.map +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/notification-center.ts +88 -6
- 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/telegram/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/webmcp-tester/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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/capability-registry",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.190",
|
|
4
4
|
"description": "Capability Registry for pi-harness-runtime — tracks model capabilities and enables capability-based routing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -10,9 +10,43 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { NotificationEvent, NotificationConfig, NotificationChannelConfig, NotificationResult, NotificationContext, TelegramCallbackHandler } from "./types.js";
|
|
12
12
|
import { TelegramAdapter } from "./adapters/telegram-adapter.js";
|
|
13
|
+
/**
|
|
14
|
+
* Pending approval request
|
|
15
|
+
*/
|
|
16
|
+
export interface PendingApproval {
|
|
17
|
+
jobId: string;
|
|
18
|
+
event: string;
|
|
19
|
+
context: NotificationContext;
|
|
20
|
+
createdAt: Date;
|
|
21
|
+
resolved: boolean;
|
|
22
|
+
result?: "approved" | "rejected";
|
|
23
|
+
}
|
|
13
24
|
export declare class NotificationCenter {
|
|
14
25
|
private adapters;
|
|
15
26
|
private redactPatterns;
|
|
27
|
+
/** Pending approval requests keyed by jobId */
|
|
28
|
+
private pendingApprovals;
|
|
29
|
+
/**
|
|
30
|
+
* Track a new pending approval request
|
|
31
|
+
*/
|
|
32
|
+
trackPendingApproval(jobId: string, event: NotificationEvent, context: NotificationContext): void;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve a pending approval request
|
|
35
|
+
* @returns true if the request was found and resolved, false otherwise
|
|
36
|
+
*/
|
|
37
|
+
resolvePendingApproval(jobId: string, result: "approved" | "rejected"): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Get a pending approval request
|
|
40
|
+
*/
|
|
41
|
+
getPendingApproval(jobId: string): PendingApproval | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Check if a pending approval exists and is unresolved
|
|
44
|
+
*/
|
|
45
|
+
isPendingApproval(jobId: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Clear resolved pending approvals older than maxAgeMs
|
|
48
|
+
*/
|
|
49
|
+
cleanupResolvedApprovals(maxAgeMs?: number): void;
|
|
16
50
|
constructor(config?: NotificationConfig);
|
|
17
51
|
/**
|
|
18
52
|
* Register a new adapter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../src/notification-center.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAEX,iBAAiB,EAEjB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../src/notification-center.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAEX,iBAAiB,EAEjB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAOjE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CACjC;AAED,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,cAAc,CAAW;IACjC,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB,CAA2C;IAEnE;;OAEG;IACH,oBAAoB,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC1B,IAAI,CAQN;IAED;;;OAGG;IACH,sBAAsB,CACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,UAAU,GAAG,UAAU,GAC7B,OAAO,CAQT;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE7D;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGxC;IAED;;OAEG;IACH,wBAAwB,CAAC,QAAQ,SAAQ,GAAG,IAAI,CAU/C;IAED,YAAY,MAAM,CAAC,EAAE,kBAAkB,EAWtC;IAED;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAa1D;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBhC;IAED;;;OAGG;IACH,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAMzD;IAED;;OAEG;IACG,MAAM,CACX,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0B/B;IAED;;OAEG;IACG,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAY7B;IAED;;OAEG;IACH,WAAW,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAEvB;IAED;;OAEG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAM3C;IAED;;OAEG;IACH,kBAAkB,IAAI,eAAe,GAAG,SAAS,CAMhD;IAED;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAKjE;IAED;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAK7C;IAED;;OAEG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM/D;IAED;;OAEG;IACG,kBAAkB,CACvB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE;QACT,2BAA2B;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,yCAAyC;QACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GACC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAiC/B;IAED;;;;OAIG;IACG,kBAAkB,CACvB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE;QACT,6BAA6B;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,wCAAwC;QACxC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,sCAAsC;QACtC,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,GACC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAmC/B;IAED;;OAEG;IACG,iBAAiB,CACtB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAChF,OAAO,CAAC,EAAE;QACT,yCAAyC;QACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GACC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0B/B;IAID,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,eAAe;IA2EvB,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,wBAAwB;CAWhC"}
|
|
@@ -17,6 +17,58 @@ import { WebhookAdapter } from "./adapters/webhook-adapter.js";
|
|
|
17
17
|
export class NotificationCenter {
|
|
18
18
|
adapters = new Map();
|
|
19
19
|
redactPatterns;
|
|
20
|
+
/** Pending approval requests keyed by jobId */
|
|
21
|
+
pendingApprovals = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Track a new pending approval request
|
|
24
|
+
*/
|
|
25
|
+
trackPendingApproval(jobId, event, context) {
|
|
26
|
+
this.pendingApprovals.set(jobId, {
|
|
27
|
+
jobId,
|
|
28
|
+
event,
|
|
29
|
+
context,
|
|
30
|
+
createdAt: new Date(),
|
|
31
|
+
resolved: false,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve a pending approval request
|
|
36
|
+
* @returns true if the request was found and resolved, false otherwise
|
|
37
|
+
*/
|
|
38
|
+
resolvePendingApproval(jobId, result) {
|
|
39
|
+
const pending = this.pendingApprovals.get(jobId);
|
|
40
|
+
if (!pending || pending.resolved) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
pending.resolved = true;
|
|
44
|
+
pending.result = result;
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get a pending approval request
|
|
49
|
+
*/
|
|
50
|
+
getPendingApproval(jobId) {
|
|
51
|
+
return this.pendingApprovals.get(jobId);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a pending approval exists and is unresolved
|
|
55
|
+
*/
|
|
56
|
+
isPendingApproval(jobId) {
|
|
57
|
+
const pending = this.pendingApprovals.get(jobId);
|
|
58
|
+
return !!pending && !pending.resolved;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Clear resolved pending approvals older than maxAgeMs
|
|
62
|
+
*/
|
|
63
|
+
cleanupResolvedApprovals(maxAgeMs = 60000) {
|
|
64
|
+
const now = Date.now();
|
|
65
|
+
for (const [jobId, pending] of this.pendingApprovals.entries()) {
|
|
66
|
+
if (pending.resolved &&
|
|
67
|
+
now - pending.createdAt.getTime() > maxAgeMs) {
|
|
68
|
+
this.pendingApprovals.delete(jobId);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
20
72
|
constructor(config) {
|
|
21
73
|
this.redactPatterns =
|
|
22
74
|
config?.redactPatterns ?? this.getDefaultRedactPatterns();
|
|
@@ -85,17 +137,19 @@ export class NotificationCenter {
|
|
|
85
137
|
// Redact sensitive data
|
|
86
138
|
const redactedPayload = this.redact(payload);
|
|
87
139
|
const result = await adapter.send(redactedPayload);
|
|
88
|
-
|
|
140
|
+
return { success: true, channel: id, result };
|
|
89
141
|
}
|
|
90
142
|
catch (error) {
|
|
91
143
|
// Never crash the runtime due to notification failure
|
|
92
|
-
|
|
144
|
+
return {
|
|
93
145
|
success: false,
|
|
94
146
|
channel: id,
|
|
95
147
|
error: String(error),
|
|
96
|
-
}
|
|
148
|
+
};
|
|
97
149
|
}
|
|
98
|
-
}))
|
|
150
|
+
})).then((adapterResults) => {
|
|
151
|
+
results.push(...adapterResults);
|
|
152
|
+
});
|
|
99
153
|
return results;
|
|
100
154
|
}
|
|
101
155
|
/**
|
|
@@ -185,6 +239,8 @@ export class NotificationCenter {
|
|
|
185
239
|
{ text: `\u2705 ${approveLabel}`, callbackData: buildCallbackData(CallbackActions.APPROVE, context.jobId) },
|
|
186
240
|
{ text: `\u274C ${rejectLabel}`, callbackData: buildCallbackData(CallbackActions.REJECT, context.jobId) },
|
|
187
241
|
];
|
|
242
|
+
// Track this pending approval so callback can resolve it
|
|
243
|
+
this.trackPendingApproval(context.jobId, event, context);
|
|
188
244
|
// Send to each channel with buttons (Telegram only)
|
|
189
245
|
const results = [];
|
|
190
246
|
for (const [id, adapter] of this.adapters.entries()) {
|