opencode-flema-engram-sidebar 0.1.0
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/LICENSE +21 -0
- package/README.md +472 -0
- package/dist/adapters/cloud.d.ts +18 -0
- package/dist/adapters/cloud.d.ts.map +1 -0
- package/dist/adapters/cloud.js +53 -0
- package/dist/adapters/cloud.js.map +1 -0
- package/dist/adapters/composite.d.ts +20 -0
- package/dist/adapters/composite.d.ts.map +1 -0
- package/dist/adapters/composite.js +83 -0
- package/dist/adapters/composite.js.map +1 -0
- package/dist/adapters/local.d.ts +15 -0
- package/dist/adapters/local.d.ts.map +1 -0
- package/dist/adapters/local.js +178 -0
- package/dist/adapters/local.js.map +1 -0
- package/dist/adapters/types.d.ts +68 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/errors.d.ts +5 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +22 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/resources/engram-change-artifacts.d.ts +11 -0
- package/dist/mcp/resources/engram-change-artifacts.d.ts.map +1 -0
- package/dist/mcp/resources/engram-change-artifacts.js +24 -0
- package/dist/mcp/resources/engram-change-artifacts.js.map +1 -0
- package/dist/mcp/resources/engram-change-state.d.ts +11 -0
- package/dist/mcp/resources/engram-change-state.d.ts.map +1 -0
- package/dist/mcp/resources/engram-change-state.js +27 -0
- package/dist/mcp/resources/engram-change-state.js.map +1 -0
- package/dist/mcp/resources/engram-changes.d.ts +9 -0
- package/dist/mcp/resources/engram-changes.d.ts.map +1 -0
- package/dist/mcp/resources/engram-changes.js +17 -0
- package/dist/mcp/resources/engram-changes.js.map +1 -0
- package/dist/mcp/resources/engram-health.d.ts +9 -0
- package/dist/mcp/resources/engram-health.d.ts.map +1 -0
- package/dist/mcp/resources/engram-health.js +13 -0
- package/dist/mcp/resources/engram-health.js.map +1 -0
- package/dist/mcp/resources/engram-observation.d.ts +11 -0
- package/dist/mcp/resources/engram-observation.d.ts.map +1 -0
- package/dist/mcp/resources/engram-observation.js +18 -0
- package/dist/mcp/resources/engram-observation.js.map +1 -0
- package/dist/mcp/resources/engram-project.d.ts +11 -0
- package/dist/mcp/resources/engram-project.d.ts.map +1 -0
- package/dist/mcp/resources/engram-project.js +47 -0
- package/dist/mcp/resources/engram-project.js.map +1 -0
- package/dist/mcp/resources/engram-projects.d.ts +9 -0
- package/dist/mcp/resources/engram-projects.d.ts.map +1 -0
- package/dist/mcp/resources/engram-projects.js +13 -0
- package/dist/mcp/resources/engram-projects.js.map +1 -0
- package/dist/mcp/resources/engram-session.d.ts +11 -0
- package/dist/mcp/resources/engram-session.d.ts.map +1 -0
- package/dist/mcp/resources/engram-session.js +18 -0
- package/dist/mcp/resources/engram-session.js.map +1 -0
- package/dist/mcp/server.d.ts +19 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +104 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/get-observation.d.ts +16 -0
- package/dist/mcp/tools/get-observation.d.ts.map +1 -0
- package/dist/mcp/tools/get-observation.js +21 -0
- package/dist/mcp/tools/get-observation.js.map +1 -0
- package/dist/mcp/tools/get-project-state.d.ts +16 -0
- package/dist/mcp/tools/get-project-state.d.ts.map +1 -0
- package/dist/mcp/tools/get-project-state.js +63 -0
- package/dist/mcp/tools/get-project-state.js.map +1 -0
- package/dist/mcp/tools/get-session.d.ts +16 -0
- package/dist/mcp/tools/get-session.d.ts.map +1 -0
- package/dist/mcp/tools/get-session.js +21 -0
- package/dist/mcp/tools/get-session.js.map +1 -0
- package/dist/mcp/tools/list-observations.d.ts +22 -0
- package/dist/mcp/tools/list-observations.d.ts.map +1 -0
- package/dist/mcp/tools/list-observations.js +23 -0
- package/dist/mcp/tools/list-observations.js.map +1 -0
- package/dist/mcp/tools/list-projects.d.ts +10 -0
- package/dist/mcp/tools/list-projects.d.ts.map +1 -0
- package/dist/mcp/tools/list-projects.js +14 -0
- package/dist/mcp/tools/list-projects.js.map +1 -0
- package/dist/mcp/tools/list-sessions.d.ts +19 -0
- package/dist/mcp/tools/list-sessions.d.ts.map +1 -0
- package/dist/mcp/tools/list-sessions.js +22 -0
- package/dist/mcp/tools/list-sessions.js.map +1 -0
- package/dist/mcp/tools/search-observations.d.ts +16 -0
- package/dist/mcp/tools/search-observations.d.ts.map +1 -0
- package/dist/mcp/tools/search-observations.js +16 -0
- package/dist/mcp/tools/search-observations.js.map +1 -0
- package/dist/schemas/health.d.ts +16 -0
- package/dist/schemas/health.d.ts.map +1 -0
- package/dist/schemas/health.js +7 -0
- package/dist/schemas/health.js.map +1 -0
- package/dist/schemas/observation.d.ts +34 -0
- package/dist/schemas/observation.d.ts.map +1 -0
- package/dist/schemas/observation.js +14 -0
- package/dist/schemas/observation.js.map +1 -0
- package/dist/schemas/project.d.ts +19 -0
- package/dist/schemas/project.d.ts.map +1 -0
- package/dist/schemas/project.js +8 -0
- package/dist/schemas/project.js.map +1 -0
- package/dist/schemas/session.d.ts +145 -0
- package/dist/schemas/session.d.ts.map +1 -0
- package/dist/schemas/session.js +24 -0
- package/dist/schemas/session.js.map +1 -0
- package/dist/schemas/timestamp.d.ts +3 -0
- package/dist/schemas/timestamp.d.ts.map +1 -0
- package/dist/schemas/timestamp.js +11 -0
- package/dist/schemas/timestamp.js.map +1 -0
- package/dist/sidebar/components/activity-feed.d.ts +13 -0
- package/dist/sidebar/components/activity-feed.d.ts.map +1 -0
- package/dist/sidebar/components/activity-feed.js +21 -0
- package/dist/sidebar/components/activity-feed.js.map +1 -0
- package/dist/sidebar/components/blockers.d.ts +17 -0
- package/dist/sidebar/components/blockers.d.ts.map +1 -0
- package/dist/sidebar/components/blockers.js +26 -0
- package/dist/sidebar/components/blockers.js.map +1 -0
- package/dist/sidebar/components/phase-progress.d.ts +13 -0
- package/dist/sidebar/components/phase-progress.d.ts.map +1 -0
- package/dist/sidebar/components/phase-progress.js +21 -0
- package/dist/sidebar/components/phase-progress.js.map +1 -0
- package/dist/sidebar/components/project-list.d.ts +16 -0
- package/dist/sidebar/components/project-list.d.ts.map +1 -0
- package/dist/sidebar/components/project-list.js +42 -0
- package/dist/sidebar/components/project-list.js.map +1 -0
- package/dist/sidebar/components/reactive-value.d.ts +4 -0
- package/dist/sidebar/components/reactive-value.d.ts.map +1 -0
- package/dist/sidebar/components/reactive-value.js +4 -0
- package/dist/sidebar/components/reactive-value.js.map +1 -0
- package/dist/sidebar/dashboard-launcher.d.ts +52 -0
- package/dist/sidebar/dashboard-launcher.d.ts.map +1 -0
- package/dist/sidebar/dashboard-launcher.js +125 -0
- package/dist/sidebar/dashboard-launcher.js.map +1 -0
- package/dist/sidebar/hooks/use-engram.d.ts +81 -0
- package/dist/sidebar/hooks/use-engram.d.ts.map +1 -0
- package/dist/sidebar/hooks/use-engram.js +423 -0
- package/dist/sidebar/hooks/use-engram.js.map +1 -0
- package/dist/sidebar/plugin.d.ts +85 -0
- package/dist/sidebar/plugin.d.ts.map +1 -0
- package/dist/sidebar/plugin.js +288 -0
- package/dist/sidebar/plugin.js.map +1 -0
- package/dist/stdio.d.ts +3 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +20 -0
- package/dist/stdio.js.map +1 -0
- package/dist/utils/errors.d.ts +19 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +27 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/format.d.ts +11 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +30 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/project-resolver.d.ts +21 -0
- package/dist/utils/project-resolver.d.ts.map +1 -0
- package/dist/utils/project-resolver.js +122 -0
- package/dist/utils/project-resolver.js.map +1 -0
- package/dist/utils/sdd-detector.d.ts +35 -0
- package/dist/utils/sdd-detector.d.ts.map +1 -0
- package/dist/utils/sdd-detector.js +115 -0
- package/dist/utils/sdd-detector.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-value.d.ts","sourceRoot":"","sources":["../../../src/sidebar/components/reactive-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE/C,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAE1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-value.js","sourceRoot":"","sources":["../../../src/sidebar/components/reactive-value.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAI,KAAuB;IACrD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAqB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DashboardLauncher
|
|
3
|
+
*
|
|
4
|
+
* Opens Task-Manager-Portable.html in the default browser.
|
|
5
|
+
* Handles missing file gracefully.
|
|
6
|
+
*/
|
|
7
|
+
export interface DashboardLauncherOptions {
|
|
8
|
+
/** Custom path to the HTML file */
|
|
9
|
+
htmlPath?: string;
|
|
10
|
+
/** Working directory (defaults to process.cwd()) */
|
|
11
|
+
cwd?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface LaunchResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
error?: string;
|
|
16
|
+
path?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Launches the dashboard in the default browser
|
|
20
|
+
*
|
|
21
|
+
* @param options - Configuration options
|
|
22
|
+
* @returns Launch result with success status and any error message
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Basic usage
|
|
27
|
+
* const result = await launchDashboard();
|
|
28
|
+
* if (result.success) {
|
|
29
|
+
* console.log(`Opened at ${result.path}`);
|
|
30
|
+
* } else {
|
|
31
|
+
* console.error(result.error);
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // Custom path
|
|
35
|
+
* const result = await launchDashboard({
|
|
36
|
+
* htmlPath: "/path/to/custom/dashboard.html"
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function launchDashboard(options?: DashboardLauncherOptions): Promise<LaunchResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Checks if the dashboard file exists without launching
|
|
43
|
+
*
|
|
44
|
+
* @param options - Configuration options
|
|
45
|
+
* @returns Object with exists flag and path if found
|
|
46
|
+
*/
|
|
47
|
+
export declare function checkDashboardExists(options?: DashboardLauncherOptions): {
|
|
48
|
+
exists: boolean;
|
|
49
|
+
path: string | null;
|
|
50
|
+
};
|
|
51
|
+
export default launchDashboard;
|
|
52
|
+
//# sourceMappingURL=dashboard-launcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-launcher.d.ts","sourceRoot":"","sources":["../../src/sidebar/dashboard-launcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,wBAAwB;IACvC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA6CD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,eAAe,CACnC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,YAAY,CAAC,CA0CvB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,wBAA6B,GACrC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAM1C;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DashboardLauncher
|
|
3
|
+
*
|
|
4
|
+
* Opens Task-Manager-Portable.html in the default browser.
|
|
5
|
+
* Handles missing file gracefully.
|
|
6
|
+
*/
|
|
7
|
+
import { execFile } from "node:child_process";
|
|
8
|
+
import { existsSync } from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { platform } from "node:os";
|
|
11
|
+
/**
|
|
12
|
+
* Gets the command and args to open a file in the default browser
|
|
13
|
+
*/
|
|
14
|
+
function getOpenCommand() {
|
|
15
|
+
switch (platform()) {
|
|
16
|
+
case "win32":
|
|
17
|
+
return { command: "cmd", args: ["/c", "start", ""] };
|
|
18
|
+
case "darwin":
|
|
19
|
+
return { command: "open", args: [] };
|
|
20
|
+
default:
|
|
21
|
+
return { command: "xdg-open", args: [] };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Finds the Task-Manager-Portable.html file
|
|
26
|
+
*/
|
|
27
|
+
function findDashboardPath(options = {}) {
|
|
28
|
+
const cwd = options.cwd ?? process.cwd();
|
|
29
|
+
// A configured relative path belongs to this workspace, not the process globally.
|
|
30
|
+
if (options.htmlPath) {
|
|
31
|
+
const pathApi = /^[A-Za-z]:[\\/]/.test(cwd) || cwd.includes("\\")
|
|
32
|
+
? path.win32
|
|
33
|
+
: path.posix;
|
|
34
|
+
const customPath = pathApi.isAbsolute(options.htmlPath)
|
|
35
|
+
? options.htmlPath
|
|
36
|
+
: pathApi.resolve(cwd, options.htmlPath);
|
|
37
|
+
if (existsSync(customPath)) {
|
|
38
|
+
return customPath;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const pathApi = /^[A-Za-z]:[\\/]/.test(cwd) || cwd.includes("\\")
|
|
43
|
+
? path.win32
|
|
44
|
+
: path.posix;
|
|
45
|
+
const conventionalPath = pathApi.join(cwd, "Task-Manager-Portable.html");
|
|
46
|
+
return existsSync(conventionalPath) ? conventionalPath : null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Launches the dashboard in the default browser
|
|
50
|
+
*
|
|
51
|
+
* @param options - Configuration options
|
|
52
|
+
* @returns Launch result with success status and any error message
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // Basic usage
|
|
57
|
+
* const result = await launchDashboard();
|
|
58
|
+
* if (result.success) {
|
|
59
|
+
* console.log(`Opened at ${result.path}`);
|
|
60
|
+
* } else {
|
|
61
|
+
* console.error(result.error);
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* // Custom path
|
|
65
|
+
* const result = await launchDashboard({
|
|
66
|
+
* htmlPath: "/path/to/custom/dashboard.html"
|
|
67
|
+
* });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export async function launchDashboard(options = {}) {
|
|
71
|
+
const dashboardPath = findDashboardPath(options);
|
|
72
|
+
if (!dashboardPath) {
|
|
73
|
+
return {
|
|
74
|
+
success: false,
|
|
75
|
+
error: options.htmlPath
|
|
76
|
+
? `Dashboard file not found at configured path: ${options.htmlPath}. Set dashboardPath to an existing Task-Manager-Portable.html file; it is not created automatically.`
|
|
77
|
+
: "Task-Manager-Portable.html not found. Place the external file in the project root or configure dashboardPath; it is not created automatically.",
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return new Promise((resolve) => {
|
|
81
|
+
const { command, args } = getOpenCommand();
|
|
82
|
+
const fullArgs = [...args, dashboardPath];
|
|
83
|
+
let child;
|
|
84
|
+
try {
|
|
85
|
+
child = execFile(command, fullArgs, {
|
|
86
|
+
cwd: options.cwd,
|
|
87
|
+
}, () => {
|
|
88
|
+
// Completion is intentionally ignored: the browser process is detached.
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
resolve({
|
|
93
|
+
success: false,
|
|
94
|
+
error: `Failed to open dashboard: ${error instanceof Error ? error.message : String(error)}`,
|
|
95
|
+
path: dashboardPath,
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
child.unref();
|
|
100
|
+
child.stdin?.destroy();
|
|
101
|
+
child.stdout?.destroy();
|
|
102
|
+
child.stderr?.destroy();
|
|
103
|
+
child.once("spawn", () => resolve({ success: true, path: dashboardPath }));
|
|
104
|
+
child.once("error", (error) => resolve({
|
|
105
|
+
success: false,
|
|
106
|
+
error: `Failed to open dashboard: ${error.message}`,
|
|
107
|
+
path: dashboardPath,
|
|
108
|
+
}));
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Checks if the dashboard file exists without launching
|
|
113
|
+
*
|
|
114
|
+
* @param options - Configuration options
|
|
115
|
+
* @returns Object with exists flag and path if found
|
|
116
|
+
*/
|
|
117
|
+
export function checkDashboardExists(options = {}) {
|
|
118
|
+
const path = findDashboardPath(options);
|
|
119
|
+
return {
|
|
120
|
+
exists: path !== null,
|
|
121
|
+
path,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
export default launchDashboard;
|
|
125
|
+
//# sourceMappingURL=dashboard-launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-launcher.js","sourceRoot":"","sources":["../../src/sidebar/dashboard-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type Accessor } from "solid-js";
|
|
2
|
+
import type { EngramAdapter, HealthStatus, Observation, Project } from "../../adapters/types.js";
|
|
3
|
+
import { type SDDChange } from "../../utils/sdd-detector.js";
|
|
4
|
+
import type { ProjectResolution } from "../../utils/project-resolver.js";
|
|
5
|
+
export type SidebarHealth = "loading" | "ok" | "stale" | "error" | "offline";
|
|
6
|
+
export interface SidebarViewModel {
|
|
7
|
+
projectName?: string;
|
|
8
|
+
project?: Project;
|
|
9
|
+
resolution?: ProjectResolution;
|
|
10
|
+
changes: SDDChange[];
|
|
11
|
+
blockers: Observation[];
|
|
12
|
+
recentActivity: Observation[];
|
|
13
|
+
health: SidebarHealth;
|
|
14
|
+
loading: boolean;
|
|
15
|
+
lastRefreshAt?: Date;
|
|
16
|
+
error?: string;
|
|
17
|
+
terminal?: SidebarTerminalState;
|
|
18
|
+
}
|
|
19
|
+
export interface SidebarTerminalState {
|
|
20
|
+
status: "loading" | SidebarRefreshOutcomeStatus;
|
|
21
|
+
stage: SidebarOperationStage | "mounted" | "refresh";
|
|
22
|
+
health: SidebarHealth;
|
|
23
|
+
observationCount: number;
|
|
24
|
+
}
|
|
25
|
+
export interface UseEngramOptions {
|
|
26
|
+
projectName?: string;
|
|
27
|
+
resolution?: ProjectResolution;
|
|
28
|
+
initialError?: string;
|
|
29
|
+
pollInterval?: number;
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
autoRefresh?: boolean;
|
|
32
|
+
resolveProject?: () => Promise<ProjectResolution>;
|
|
33
|
+
now?: () => Date;
|
|
34
|
+
stageTimeoutMs?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface UseEngramReturn {
|
|
37
|
+
state: Accessor<SidebarViewModel>;
|
|
38
|
+
refresh: () => Promise<SidebarRefreshOutcome>;
|
|
39
|
+
}
|
|
40
|
+
export interface SidebarRefreshInput {
|
|
41
|
+
health?: HealthStatus;
|
|
42
|
+
projects?: Project[];
|
|
43
|
+
observations?: Observation[];
|
|
44
|
+
projectName?: string;
|
|
45
|
+
resolution?: ProjectResolution;
|
|
46
|
+
errors?: unknown[];
|
|
47
|
+
failures?: SidebarRefreshFailure[];
|
|
48
|
+
warnings?: string[];
|
|
49
|
+
stages?: SidebarStageTransition[];
|
|
50
|
+
now: Date;
|
|
51
|
+
}
|
|
52
|
+
export type SidebarRefreshStage = "project-resolution" | "health" | "projects" | "observations" | "refresh";
|
|
53
|
+
export interface SidebarRefreshFailure {
|
|
54
|
+
stage: SidebarRefreshStage;
|
|
55
|
+
endpoint?: string;
|
|
56
|
+
reason: unknown;
|
|
57
|
+
}
|
|
58
|
+
export type SidebarRefreshOutcomeStatus = "success" | "partial" | "failed";
|
|
59
|
+
export type SidebarTransitionStatus = "started" | SidebarRefreshOutcomeStatus | "skipped";
|
|
60
|
+
export type SidebarOperationStage = "project-resolution" | "health" | "projects" | "filtered-observations" | "fallback-observations" | "reducing" | "terminal";
|
|
61
|
+
export interface SidebarStageTransition {
|
|
62
|
+
stage: SidebarOperationStage;
|
|
63
|
+
status: SidebarTransitionStatus;
|
|
64
|
+
endpoint?: string;
|
|
65
|
+
count?: number;
|
|
66
|
+
message?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface SidebarRefreshOutcome {
|
|
69
|
+
status: SidebarRefreshOutcomeStatus;
|
|
70
|
+
summary: string;
|
|
71
|
+
failures: SidebarRefreshFailure[];
|
|
72
|
+
warnings: string[];
|
|
73
|
+
stages: SidebarStageTransition[];
|
|
74
|
+
}
|
|
75
|
+
export declare function reduceSidebarRefresh(current: SidebarViewModel, input: SidebarRefreshInput): SidebarViewModel;
|
|
76
|
+
export declare function fetchSidebarRefresh(adapter: EngramAdapter, options?: Pick<UseEngramOptions, "projectName" | "resolution" | "resolveProject" | "now" | "stageTimeoutMs"> & {
|
|
77
|
+
onTransition?: (transition: SidebarStageTransition) => void;
|
|
78
|
+
}): Promise<SidebarRefreshInput>;
|
|
79
|
+
export declare function useEngram(adapter: EngramAdapter, options?: UseEngramOptions): UseEngramReturn;
|
|
80
|
+
export declare function outcomeFor(input: SidebarRefreshInput): SidebarRefreshOutcome;
|
|
81
|
+
//# sourceMappingURL=use-engram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-engram.d.ts","sourceRoot":"","sources":["../../../src/sidebar/hooks/use-engram.ts"],"names":[],"mappings":"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"}
|