pi-harness-runtime 1.1.201 → 1.1.202
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/harness-types.d.ts +87 -0
- package/packages/notification/dist/harness-types.d.ts.map +1 -0
- package/packages/notification/dist/harness-types.js +7 -0
- package/packages/notification/dist/harness-types.js.map +1 -0
- package/packages/notification/dist/harness-widget-manager.d.ts +79 -0
- package/packages/notification/dist/harness-widget-manager.d.ts.map +1 -0
- package/packages/notification/dist/harness-widget-manager.js +162 -0
- package/packages/notification/dist/harness-widget-manager.js.map +1 -0
- package/packages/notification/dist/harness-widget.d.ts +48 -0
- package/packages/notification/dist/harness-widget.d.ts.map +1 -0
- package/packages/notification/dist/harness-widget.js +145 -0
- package/packages/notification/dist/harness-widget.js.map +1 -0
- package/packages/notification/dist/index.d.ts +3 -0
- package/packages/notification/dist/index.d.ts.map +1 -1
- package/packages/notification/dist/index.js +3 -0
- package/packages/notification/dist/index.js.map +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/harness-types.ts +93 -0
- package/packages/notification/src/harness-widget-manager.ts +194 -0
- package/packages/notification/src/index.ts +11 -0
- 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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi-harness Startup Widget Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the Pi-harness startup widget with proper styling
|
|
5
|
+
* and overflow protection.
|
|
6
|
+
*/
|
|
7
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
8
|
+
import type { HarnessStatus } from "./harness-types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Harness Widget Manager
|
|
11
|
+
*/
|
|
12
|
+
export declare class HarnessWidget {
|
|
13
|
+
private ui;
|
|
14
|
+
private status;
|
|
15
|
+
private expanded;
|
|
16
|
+
private updateTimeout;
|
|
17
|
+
constructor(_pi: ExtensionAPI);
|
|
18
|
+
/**
|
|
19
|
+
* Initialize with UI context (called during setup)
|
|
20
|
+
*/
|
|
21
|
+
initWithUI(ui: ExtensionContext["ui"]): void;
|
|
22
|
+
/**
|
|
23
|
+
* Update harness status and refresh widget
|
|
24
|
+
*/
|
|
25
|
+
updateStatus(updates: Partial<HarnessStatus>): void;
|
|
26
|
+
/**
|
|
27
|
+
* Update specific component status
|
|
28
|
+
*/
|
|
29
|
+
updateComponent<K extends keyof HarnessStatus>(component: K, value: HarnessStatus[K]): void;
|
|
30
|
+
/**
|
|
31
|
+
* Render and display the widget
|
|
32
|
+
*/
|
|
33
|
+
render(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Initialize widget with version info
|
|
36
|
+
*/
|
|
37
|
+
initialize(version: string, tagline: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Set runtime status
|
|
40
|
+
*/
|
|
41
|
+
setRuntime(status: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Set Qdrant status
|
|
44
|
+
*/
|
|
45
|
+
setQdrant(status: string, details?: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Set Honcho status
|
|
48
|
+
*/
|
|
49
|
+
setHoncho(status: string, sessionId?: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Set Telegram status
|
|
52
|
+
*/
|
|
53
|
+
setTelegram(status: string, botName?: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Set skills count
|
|
56
|
+
*/
|
|
57
|
+
setSkills(count: number): void;
|
|
58
|
+
/**
|
|
59
|
+
* Set commands
|
|
60
|
+
*/
|
|
61
|
+
setCommands(commands: string[]): void;
|
|
62
|
+
/**
|
|
63
|
+
* Mark component as complete with icon
|
|
64
|
+
*/
|
|
65
|
+
markComplete(component: keyof HarnessStatus, value?: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Mark component as failed
|
|
68
|
+
*/
|
|
69
|
+
markFailed(component: keyof HarnessStatus, error: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Cleanup
|
|
72
|
+
*/
|
|
73
|
+
dispose(): void;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Create harness widget instance
|
|
77
|
+
*/
|
|
78
|
+
export declare function createHarnessWidget(_pi: ExtensionAPI): HarnessWidget;
|
|
79
|
+
//# sourceMappingURL=harness-widget-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-widget-manager.d.ts","sourceRoot":"","sources":["../src/harness-widget-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUxD;;GAEG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,EAAE,CAAuC;IACjD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,aAAa,CAA8C;IAEnE,YAAY,GAAG,EAAE,YAAY,EAM5B;IAED;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAG3C;IAED;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAelD;IAED;;OAEG;IACH,eAAe,CAAC,CAAC,SAAS,MAAM,aAAa,EAC5C,SAAS,EAAE,CAAC,EACZ,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACrB,IAAI,CAaN;IAED;;OAEG;IACH,MAAM,IAAI,IAAI,CAgBb;IAED;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIjD;IAED;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE/B;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAEhD;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAElD;IAED;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAElD;IAED;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE7B;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAEpC;IAED;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAGjE;IAED;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9D;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAUd;CACD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,aAAa,CAGpE"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi-harness Startup Widget Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the Pi-harness startup widget with proper styling
|
|
5
|
+
* and overflow protection.
|
|
6
|
+
*/
|
|
7
|
+
import { renderWidgetBody, createInitialStatus, } from "./harness-widget.js";
|
|
8
|
+
// Widget key constant
|
|
9
|
+
const HARNESS_WIDGET_KEY = "pi-harness-startup";
|
|
10
|
+
/**
|
|
11
|
+
* Harness Widget Manager
|
|
12
|
+
*/
|
|
13
|
+
export class HarnessWidget {
|
|
14
|
+
ui = null;
|
|
15
|
+
status;
|
|
16
|
+
expanded = false;
|
|
17
|
+
updateTimeout = null;
|
|
18
|
+
constructor(_pi) {
|
|
19
|
+
this.status = createInitialStatus();
|
|
20
|
+
// Get ui from ExtensionContext if available
|
|
21
|
+
// In extensions, pi.ui is available through ctx.ui in event handlers
|
|
22
|
+
// We store a reference during session_start
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize with UI context (called during setup)
|
|
26
|
+
*/
|
|
27
|
+
initWithUI(ui) {
|
|
28
|
+
this.ui = ui;
|
|
29
|
+
this.render();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Update harness status and refresh widget
|
|
33
|
+
*/
|
|
34
|
+
updateStatus(updates) {
|
|
35
|
+
// Merge updates
|
|
36
|
+
this.status = {
|
|
37
|
+
...this.status,
|
|
38
|
+
...updates,
|
|
39
|
+
};
|
|
40
|
+
// Debounce updates to avoid excessive re-renders
|
|
41
|
+
if (this.updateTimeout) {
|
|
42
|
+
clearTimeout(this.updateTimeout);
|
|
43
|
+
}
|
|
44
|
+
this.updateTimeout = setTimeout(() => {
|
|
45
|
+
this.render();
|
|
46
|
+
}, 100);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Update specific component status
|
|
50
|
+
*/
|
|
51
|
+
updateComponent(component, value) {
|
|
52
|
+
this.status = {
|
|
53
|
+
...this.status,
|
|
54
|
+
[component]: value,
|
|
55
|
+
};
|
|
56
|
+
if (this.updateTimeout) {
|
|
57
|
+
clearTimeout(this.updateTimeout);
|
|
58
|
+
}
|
|
59
|
+
this.updateTimeout = setTimeout(() => {
|
|
60
|
+
this.render();
|
|
61
|
+
}, 100);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Render and display the widget
|
|
65
|
+
*/
|
|
66
|
+
render() {
|
|
67
|
+
if (!this.ui)
|
|
68
|
+
return;
|
|
69
|
+
const body = renderWidgetBody(this.status);
|
|
70
|
+
// Build widget content with heading
|
|
71
|
+
const heading = `[Pi-harness]`;
|
|
72
|
+
const content = [heading, ...body];
|
|
73
|
+
// Use setWidget
|
|
74
|
+
try {
|
|
75
|
+
this.ui.setWidget(HARNESS_WIDGET_KEY, content);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
// Fallback: log to stderr if widget fails
|
|
79
|
+
console.error("[pi-harness] Widget render failed:", err);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Initialize widget with version info
|
|
84
|
+
*/
|
|
85
|
+
initialize(version, tagline) {
|
|
86
|
+
this.status.version = version;
|
|
87
|
+
this.status.tagline = tagline;
|
|
88
|
+
this.render();
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Set runtime status
|
|
92
|
+
*/
|
|
93
|
+
setRuntime(status) {
|
|
94
|
+
this.updateComponent("runtime", { status });
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Set Qdrant status
|
|
98
|
+
*/
|
|
99
|
+
setQdrant(status, details) {
|
|
100
|
+
this.updateComponent("qdrant", { status, details });
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Set Honcho status
|
|
104
|
+
*/
|
|
105
|
+
setHoncho(status, sessionId) {
|
|
106
|
+
this.updateComponent("honcho", { status, sessionId });
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Set Telegram status
|
|
110
|
+
*/
|
|
111
|
+
setTelegram(status, botName) {
|
|
112
|
+
this.updateComponent("telegram", { status, botName });
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Set skills count
|
|
116
|
+
*/
|
|
117
|
+
setSkills(count) {
|
|
118
|
+
this.updateComponent("skills", { count });
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Set commands
|
|
122
|
+
*/
|
|
123
|
+
setCommands(commands) {
|
|
124
|
+
this.updateComponent("commands", commands);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Mark component as complete with icon
|
|
128
|
+
*/
|
|
129
|
+
markComplete(component, value) {
|
|
130
|
+
const completeStatus = value ? `${value} ✓` : "ready ✓";
|
|
131
|
+
this.updateComponent(component, { status: completeStatus });
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Mark component as failed
|
|
135
|
+
*/
|
|
136
|
+
markFailed(component, error) {
|
|
137
|
+
this.updateComponent(component, { status: "failed", error });
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Cleanup
|
|
141
|
+
*/
|
|
142
|
+
dispose() {
|
|
143
|
+
if (this.updateTimeout) {
|
|
144
|
+
clearTimeout(this.updateTimeout);
|
|
145
|
+
}
|
|
146
|
+
// Remove widget
|
|
147
|
+
try {
|
|
148
|
+
this.ui?.setWidget(HARNESS_WIDGET_KEY, undefined);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// Ignore cleanup errors
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create harness widget instance
|
|
157
|
+
*/
|
|
158
|
+
export function createHarnessWidget(_pi) {
|
|
159
|
+
const widget = new HarnessWidget(_pi);
|
|
160
|
+
return widget;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=harness-widget-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-widget-manager.js","sourceRoot":"","sources":["../src/harness-widget-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi-harness Startup Widget
|
|
3
|
+
*
|
|
4
|
+
* Renders harness status as a widget with native Pi styling.
|
|
5
|
+
* Handles terminal width detection and overflow protection.
|
|
6
|
+
*/
|
|
7
|
+
import type { HarnessStatus } from "./harness-types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Widget configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface WidgetConfig {
|
|
12
|
+
/** Heading style (matching Pi's mdHeading) */
|
|
13
|
+
headingStyle?: string;
|
|
14
|
+
/** Body text style */
|
|
15
|
+
bodyStyle?: string;
|
|
16
|
+
/** Left indent for body lines */
|
|
17
|
+
indent?: string;
|
|
18
|
+
/** Max terminal width fallback */
|
|
19
|
+
defaultWidth?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get terminal width
|
|
23
|
+
*/
|
|
24
|
+
export declare function getTerminalWidth(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Truncate text to fit within max width
|
|
27
|
+
*/
|
|
28
|
+
export declare function truncate(text: string, maxWidth: number): string;
|
|
29
|
+
/**
|
|
30
|
+
* Truncate text in the middle (for paths/lists)
|
|
31
|
+
*/
|
|
32
|
+
export declare function truncateMiddle(text: string, maxWidth: number): string;
|
|
33
|
+
/**
|
|
34
|
+
* Render harness status as widget body (string array for setWidget)
|
|
35
|
+
*/
|
|
36
|
+
export declare function renderWidgetBody(status: HarnessStatus, config?: Partial<WidgetConfig>): string[];
|
|
37
|
+
/**
|
|
38
|
+
* Create initial pending status
|
|
39
|
+
*/
|
|
40
|
+
export declare function createInitialStatus(): HarnessStatus;
|
|
41
|
+
/**
|
|
42
|
+
* Format status with icons
|
|
43
|
+
*/
|
|
44
|
+
export declare function formatStatusWithIcon(status: string): {
|
|
45
|
+
status: string;
|
|
46
|
+
icon?: string;
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=harness-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-widget.d.ts","sourceRoot":"","sources":["../src/harness-widget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMrE;AAkCD;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,aAAa,EACrB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAChC,MAAM,EAAE,CA8CV;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAWnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAWnC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi-harness Startup Widget
|
|
3
|
+
*
|
|
4
|
+
* Renders harness status as a widget with native Pi styling.
|
|
5
|
+
* Handles terminal width detection and overflow protection.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Default config
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_CONFIG = {
|
|
11
|
+
headingStyle: "mdHeading",
|
|
12
|
+
bodyStyle: "dim",
|
|
13
|
+
indent: " ",
|
|
14
|
+
defaultWidth: 80,
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Get terminal width
|
|
18
|
+
*/
|
|
19
|
+
export function getTerminalWidth() {
|
|
20
|
+
// Try stdout columns
|
|
21
|
+
if (typeof process !== "undefined" && process.stdout) {
|
|
22
|
+
const cols = process.stdout.columns;
|
|
23
|
+
if (cols && cols > 0) {
|
|
24
|
+
return cols;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Fallback to default
|
|
28
|
+
return DEFAULT_CONFIG.defaultWidth;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Truncate text to fit within max width
|
|
32
|
+
*/
|
|
33
|
+
export function truncate(text, maxWidth) {
|
|
34
|
+
if (text.length <= maxWidth) {
|
|
35
|
+
return text;
|
|
36
|
+
}
|
|
37
|
+
// Leave room for "..." suffix
|
|
38
|
+
return text.substring(0, Math.max(0, maxWidth - 3)) + "...";
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Truncate text in the middle (for paths/lists)
|
|
42
|
+
*/
|
|
43
|
+
export function truncateMiddle(text, maxWidth) {
|
|
44
|
+
if (text.length <= maxWidth) {
|
|
45
|
+
return text;
|
|
46
|
+
}
|
|
47
|
+
const half = Math.floor((maxWidth - 3) / 2);
|
|
48
|
+
return text.substring(0, half) + "..." + text.substring(text.length - half);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Render a status line with optional icon
|
|
52
|
+
*/
|
|
53
|
+
function renderStatusLine(label, value, width, indent) {
|
|
54
|
+
const maxValueWidth = width - indent.length - label.length - 2; // ": " separator
|
|
55
|
+
const truncatedValue = truncate(value, maxValueWidth);
|
|
56
|
+
return `${indent}${label}: ${truncatedValue}`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Render version/tagline line
|
|
60
|
+
*/
|
|
61
|
+
function renderVersionLine(tagline, width, indent) {
|
|
62
|
+
const maxTagWidth = width - indent.length - 2;
|
|
63
|
+
return `${indent}${truncate(tagline, maxTagWidth)}`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Render commands line with truncation
|
|
67
|
+
*/
|
|
68
|
+
function renderCommandsLine(commands, width, indent) {
|
|
69
|
+
const prefix = `${indent}Commands: `;
|
|
70
|
+
const maxWidth = width - prefix.length;
|
|
71
|
+
const joined = commands.join(", ");
|
|
72
|
+
return prefix + truncate(joined, maxWidth);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Render harness status as widget body (string array for setWidget)
|
|
76
|
+
*/
|
|
77
|
+
export function renderWidgetBody(status, config = {}) {
|
|
78
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
79
|
+
const width = getTerminalWidth();
|
|
80
|
+
const indent = cfg.indent;
|
|
81
|
+
const lines = [];
|
|
82
|
+
// Version/tagline line
|
|
83
|
+
lines.push(renderVersionLine(status.tagline, width, indent));
|
|
84
|
+
// Runtime status
|
|
85
|
+
lines.push(renderStatusLine("Runtime", status.runtime.status, width, indent));
|
|
86
|
+
// Qdrant status
|
|
87
|
+
if (status.qdrant) {
|
|
88
|
+
lines.push(renderStatusLine("Qdrant", status.qdrant.status, width, indent));
|
|
89
|
+
}
|
|
90
|
+
// Honcho status
|
|
91
|
+
if (status.honcho) {
|
|
92
|
+
const honchoDetail = status.honcho.sessionId
|
|
93
|
+
? `${status.honcho.status} (${status.honcho.sessionId})`
|
|
94
|
+
: status.honcho.status;
|
|
95
|
+
lines.push(renderStatusLine("Honcho", honchoDetail, width, indent));
|
|
96
|
+
}
|
|
97
|
+
// Telegram status
|
|
98
|
+
if (status.telegram) {
|
|
99
|
+
const tgDetail = status.telegram.botName
|
|
100
|
+
? `${status.telegram.status}: @${status.telegram.botName}`
|
|
101
|
+
: status.telegram.status;
|
|
102
|
+
lines.push(renderStatusLine("Telegram", tgDetail, width, indent));
|
|
103
|
+
}
|
|
104
|
+
// Skills status
|
|
105
|
+
if (status.skills) {
|
|
106
|
+
const skillDetail = `${status.skills.count} discovered`;
|
|
107
|
+
lines.push(renderStatusLine("Skills", skillDetail, width, indent));
|
|
108
|
+
}
|
|
109
|
+
// Commands line (always last, most likely to overflow)
|
|
110
|
+
if (status.commands && status.commands.length > 0) {
|
|
111
|
+
lines.push(renderCommandsLine(status.commands, width, indent));
|
|
112
|
+
}
|
|
113
|
+
return lines;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create initial pending status
|
|
117
|
+
*/
|
|
118
|
+
export function createInitialStatus() {
|
|
119
|
+
return {
|
|
120
|
+
version: "v1.0.0",
|
|
121
|
+
tagline: "quota management, automation, memory, multi-agent",
|
|
122
|
+
runtime: { status: "initializing..." },
|
|
123
|
+
qdrant: { status: "configuring..." },
|
|
124
|
+
honcho: { status: "initializing..." },
|
|
125
|
+
telegram: { status: "connecting..." },
|
|
126
|
+
skills: { count: 0 },
|
|
127
|
+
commands: [],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Format status with icons
|
|
132
|
+
*/
|
|
133
|
+
export function formatStatusWithIcon(status) {
|
|
134
|
+
if (status.includes("✓") || status.includes("ready")) {
|
|
135
|
+
return { status, icon: "✓" };
|
|
136
|
+
}
|
|
137
|
+
if (status.includes("✗") || status.includes("error") || status.includes("failed")) {
|
|
138
|
+
return { status, icon: "✗" };
|
|
139
|
+
}
|
|
140
|
+
if (status.includes("...")) {
|
|
141
|
+
return { status, icon: "..." };
|
|
142
|
+
}
|
|
143
|
+
return { status };
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=harness-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-widget.js","sourceRoot":"","sources":["../src/harness-widget.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,4 +13,7 @@ export { TelegramAdapter } from "./adapters/telegram-adapter.js";
|
|
|
13
13
|
export { maskString, maskValue, maskObject, maskPayload, isSensitiveField, } from "./mask-secrets.js";
|
|
14
14
|
export { filterTelegramContent, getSafeNotificationLog, } from "./telegram-content-filter.js";
|
|
15
15
|
export { ConversationBridge, createConversationBridge, } from "./conversation-bridge.js";
|
|
16
|
+
export { HarnessWidget, createHarnessWidget } from "./harness-widget-manager.js";
|
|
17
|
+
export type { HarnessStatus, StatusDetail, HonchoStatus, TelegramStatus, SkillsStatus } from "./harness-types.js";
|
|
18
|
+
export { renderWidgetBody, createInitialStatus, getTerminalWidth, truncate, truncateMiddle, } from "./harness-widget-manager.js";
|
|
16
19
|
//# 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,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,0BAA0B,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,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACjF,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClH,OAAO,EACN,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,cAAc,GACd,MAAM,6BAA6B,CAAC"}
|
|
@@ -13,4 +13,7 @@ export { TelegramAdapter } from "./adapters/telegram-adapter.js";
|
|
|
13
13
|
export { maskString, maskValue, maskObject, maskPayload, isSensitiveField, } from "./mask-secrets.js";
|
|
14
14
|
export { filterTelegramContent, getSafeNotificationLog, } from "./telegram-content-filter.js";
|
|
15
15
|
export { ConversationBridge, createConversationBridge, } from "./conversation-bridge.js";
|
|
16
|
+
// Harness widget exports
|
|
17
|
+
export { HarnessWidget, createHarnessWidget } from "./harness-widget-manager.js";
|
|
18
|
+
export { renderWidgetBody, createInitialStatus, getTerminalWidth, truncate, truncateMiddle, } from "./harness-widget-manager.js";
|
|
16
19
|
//# 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,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,0BAA0B,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,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,0BAA0B,CAAC;AAElC,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEjF,OAAO,EACN,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,cAAc,GACd,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness Types
|
|
3
|
+
*
|
|
4
|
+
* Structured types for harness runtime status.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Overall harness status
|
|
9
|
+
*/
|
|
10
|
+
export interface HarnessStatus {
|
|
11
|
+
/** Version string */
|
|
12
|
+
version: string;
|
|
13
|
+
/** Tagline description */
|
|
14
|
+
tagline: string;
|
|
15
|
+
/** Runtime initialization status */
|
|
16
|
+
runtime: StatusDetail;
|
|
17
|
+
/** Qdrant vector database status */
|
|
18
|
+
qdrant?: StatusDetail;
|
|
19
|
+
/** Honcho integration status */
|
|
20
|
+
honcho?: HonchoStatus;
|
|
21
|
+
/** Telegram integration status */
|
|
22
|
+
telegram?: TelegramStatus;
|
|
23
|
+
/** Skills discovery status */
|
|
24
|
+
skills?: SkillsStatus;
|
|
25
|
+
/** Registered commands */
|
|
26
|
+
commands?: string[];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Basic status detail
|
|
31
|
+
*/
|
|
32
|
+
export interface StatusDetail {
|
|
33
|
+
/** Current status text */
|
|
34
|
+
status: string;
|
|
35
|
+
/** Optional details */
|
|
36
|
+
details?: string;
|
|
37
|
+
/** Error message if failed */
|
|
38
|
+
error?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Honcho-specific status
|
|
43
|
+
*/
|
|
44
|
+
export interface HonchoStatus extends StatusDetail {
|
|
45
|
+
/** Session ID if connected */
|
|
46
|
+
sessionId?: string;
|
|
47
|
+
/** Whether memory is configured */
|
|
48
|
+
memoryConfigured?: boolean;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Telegram-specific status
|
|
53
|
+
*/
|
|
54
|
+
export interface TelegramStatus extends StatusDetail {
|
|
55
|
+
/** Bot username */
|
|
56
|
+
botName?: string;
|
|
57
|
+
/** Whether outbound is verified */
|
|
58
|
+
outboundVerified?: boolean;
|
|
59
|
+
/** Whether inbound is connected */
|
|
60
|
+
inboundConnected?: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Skills status
|
|
65
|
+
*/
|
|
66
|
+
export interface SkillsStatus {
|
|
67
|
+
/** Number of skills discovered */
|
|
68
|
+
count: number;
|
|
69
|
+
/** Number of commands registered */
|
|
70
|
+
commandCount?: number;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Widget state for UI
|
|
75
|
+
*/
|
|
76
|
+
export interface WidgetState {
|
|
77
|
+
/** Whether widget is expanded */
|
|
78
|
+
expanded: boolean;
|
|
79
|
+
/** Current harness status */
|
|
80
|
+
status: HarnessStatus;
|
|
81
|
+
/** Last updated timestamp */
|
|
82
|
+
updatedAt: number;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Widget update event
|
|
87
|
+
*/
|
|
88
|
+
export interface WidgetUpdateEvent {
|
|
89
|
+
/** What changed */
|
|
90
|
+
change: "status" | "expansion" | "commands";
|
|
91
|
+
/** Updated status if applicable */
|
|
92
|
+
status?: Partial<HarnessStatus>;
|
|
93
|
+
}
|