opencode-flema-engram-sidebar 0.2.0 → 0.3.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.
@@ -1,337 +1,27 @@
1
1
  import { createSignal, onCleanup, onMount } from "solid-js";
2
- import { collectBlockers, groupByChange } from "../../utils/sdd-detector.js";
3
- import { deriveODDState } from "../../utils/odd-detector.js";
4
- import { EngramUnavailable } from "../../utils/errors.js";
5
- import { scheduleLongTimeout } from "../../utils/timeout.js";
2
+ import { createEngramReadController, } from "../../viewer/core.js";
3
+ export * from "../../viewer/core.js";
6
4
  const DEFAULT_POLL_INTERVAL = 30_000;
7
- const DEFAULT_STAGE_TIMEOUT_MS = 5_000;
8
- const SIDEBAR_OBSERVATION_LIMIT = 20;
9
- const OBSERVATION_FALLBACK_LIMIT = 100;
10
- const EMPTY_STATE = {
11
- workflowMode: "odd",
12
- odd: deriveODDState([]),
13
- observations: [],
14
- changes: [],
15
- blockers: [],
16
- recentActivity: [],
17
- health: "loading",
18
- loading: true,
19
- terminal: { status: "loading", stage: "mounted", health: "loading", observationCount: 0 },
20
- };
21
- function workflowChanges(mode, observations) {
22
- return mode === "legacy-sdd" ? groupByChange(observations) : [];
23
- }
24
- function messageOf(reason) {
25
- return reason instanceof Error ? reason.message : String(reason);
26
- }
27
- export function reduceSidebarRefresh(current, input) {
28
- const serviceAvailable = input.health?.local.available === true || input.health?.cloud?.available === true;
29
- const observationsAvailable = input.observations !== undefined;
30
- const criticalFailure = input.failures?.some((failure) => failure.stage === "project-resolution"
31
- || failure.stage === "health"
32
- || failure.stage === "observations"
33
- || failure.stage === "refresh") === true;
34
- const coreComplete = serviceAvailable && observationsAvailable && !criticalFailure;
35
- const partial = input.projects !== undefined || (observationsAvailable && projectNameFor(input) !== undefined);
36
- const health = coreComplete
37
- ? "ok"
38
- : partial || current.lastRefreshAt
39
- ? "stale"
40
- : input.health
41
- ? "error"
42
- : "offline";
43
- const projectName = input.resolution
44
- ? input.resolution.projectName
45
- : input.projectName ?? current.projectName;
46
- const sameProject = projectName !== undefined && projectName === current.projectName;
47
- const observations = input.observations !== undefined
48
- ? input.observations.filter((observation) => observation.project === projectName)
49
- : sameProject ? current.observations ?? [] : [];
50
- const activity = input.observations !== undefined
51
- ? observations
52
- : sameProject ? current.recentActivity : [];
53
- const failure = input.failures?.[0];
54
- const error = input.errors?.[0];
55
- const warning = input.warnings?.[0];
56
- const reduced = {
57
- projectName,
58
- resolution: input.resolution ?? current.resolution,
59
- project: projectForRefresh(current.project, input.projects, observationsAvailable ? observations : undefined, projectName),
60
- workflowMode: current.workflowMode ?? "odd",
61
- changes: workflowChanges(current.workflowMode, observations),
62
- observations,
63
- odd: input.observations === undefined && sameProject && current.odd
64
- ? current.odd
65
- : deriveODDState(observations),
66
- blockers: input.observations !== undefined
67
- ? collectBlockers(observations)
68
- : sameProject ? current.blockers : [],
69
- recentActivity: [...activity]
70
- .sort((a, b) => b.updated_at.localeCompare(a.updated_at) || b.id - a.id)
71
- .slice(0, 5),
72
- health,
73
- loading: false,
74
- lastRefreshAt: coreComplete ? input.now : current.lastRefreshAt,
75
- targets: input.targets ?? current.targets,
76
- error: failure
77
- ? describeFailure(failure, input)
78
- : error !== undefined
79
- ? messageOf(error)
80
- : warning
81
- ? warning
82
- : serviceAvailable
83
- ? coreComplete ? undefined : "Engram observations unavailable"
84
- : input.health ? "Engram health check failed" : "Engram is offline",
85
- };
86
- reduced.terminal = {
87
- status: outcomeFor(input).status,
88
- stage: "terminal",
89
- health: reduced.health,
90
- observationCount: observations.length,
91
- };
92
- return reduced;
93
- }
94
- export async function fetchSidebarRefresh(adapter, options = {}) {
95
- const stageTimeoutMs = options.stageTimeoutMs ?? DEFAULT_STAGE_TIMEOUT_MS;
96
- let resolution = options.resolution;
97
- const failures = [];
98
- const stages = [];
99
- const transition = (stage) => {
100
- stages.push(stage);
101
- options.onTransition?.(stage);
102
- };
103
- if (options.resolveProject) {
104
- transition({ stage: "project-resolution", status: "started", endpoint: defaultEndpoint("project-resolution") });
105
- try {
106
- resolution = await withStageTimeout(options.resolveProject(), "project resolution", stageTimeoutMs, defaultEndpoint("project-resolution"));
107
- if (resolution.validation === "offline") {
108
- const failure = {
109
- stage: "project-resolution",
110
- reason: new Error("Engram project validation was unavailable"),
111
- };
112
- failures.push(failure);
113
- transition({
114
- stage: "project-resolution",
115
- status: "failed",
116
- endpoint: defaultEndpoint("project-resolution"),
117
- message: messageOf(failure.reason),
118
- });
119
- }
120
- else {
121
- transition({ stage: "project-resolution", status: "success", endpoint: defaultEndpoint("project-resolution") });
122
- }
123
- }
124
- catch (reason) {
125
- const failure = failureFor("project-resolution", reason);
126
- failures.push(failure);
127
- transition({
128
- stage: "project-resolution",
129
- status: "failed",
130
- endpoint: failure.endpoint,
131
- message: messageOf(reason),
132
- });
133
- }
134
- }
135
- else {
136
- transition({
137
- stage: "project-resolution",
138
- status: resolution || options.projectName ? "success" : "skipped",
139
- endpoint: defaultEndpoint("project-resolution"),
140
- });
141
- }
142
- const projectName = resolution ? resolution.projectName : options.projectName;
143
- const healthRequest = trackRequest(Promise.resolve().then(() => adapter.health()), "health", stageTimeoutMs, transition);
144
- const projectsRequest = trackRequest(Promise.resolve().then(() => adapter.listProjects()), "projects", stageTimeoutMs, transition);
145
- const observationsRequest = fetchCanonicalObservations(adapter, projectName, stageTimeoutMs, transition);
146
- const [health, projects, canonicalObservations] = await Promise.allSettled([
147
- healthRequest,
148
- projectsRequest,
149
- observationsRequest,
150
- ]);
151
- if (health.status === "rejected")
152
- failures.push(failureFor("health", health.reason));
153
- if (projects.status === "rejected")
154
- failures.push(failureFor("projects", projects.reason));
155
- if (canonicalObservations.status === "rejected") {
156
- failures.push(failureFor("observations", canonicalObservations.reason));
157
- }
158
- return {
159
- health: health.status === "fulfilled" ? health.value : undefined,
160
- projects: projects.status === "fulfilled" ? projects.value : undefined,
161
- observations: canonicalObservations.status === "fulfilled"
162
- ? canonicalObservations.value.observations
163
- : undefined,
164
- projectName,
165
- resolution,
166
- targets: adapter.describeTargets?.(),
167
- errors: [health, projects, canonicalObservations]
168
- .filter((result) => result.status === "rejected")
169
- .map((result) => result.reason),
170
- failures: failures.length ? failures : undefined,
171
- warnings: canonicalObservations.status === "fulfilled" && canonicalObservations.value.warning
172
- ? [canonicalObservations.value.warning]
173
- : undefined,
174
- stages,
175
- now: options.now?.() ?? new Date(),
176
- };
177
- }
178
- function projectNameFor(input) {
179
- return input.resolution ? input.resolution.projectName : input.projectName;
180
- }
181
- async function fetchCanonicalObservations(adapter, projectName, timeoutMs, onTransition) {
182
- const endpoint = defaultEndpoint("observations");
183
- if (!projectName) {
184
- onTransition({ stage: "filtered-observations", status: "skipped", endpoint, count: 0 });
185
- onTransition({ stage: "fallback-observations", status: "skipped", endpoint, count: 0 });
186
- return { observations: [] };
187
- }
188
- const deadline = Date.now() + timeoutMs;
189
- const run = async (stage, request) => {
190
- onTransition({ stage, status: "started", endpoint });
191
- try {
192
- const observations = await withStageTimeout(Promise.resolve().then(request), stage === "filtered-observations" ? "filtered observations request" : "fallback observations request", Math.max(0, deadline - Date.now()), endpoint);
193
- onTransition({ stage, status: "success", endpoint, count: observations.length });
194
- return observations;
195
- }
196
- catch (reason) {
197
- onTransition({ stage, status: "failed", endpoint, message: messageOf(reason) });
198
- throw reason;
199
- }
200
- };
201
- const filtered = await run("filtered-observations", () => adapter.listObservations({
202
- project: projectName,
203
- limit: SIDEBAR_OBSERVATION_LIMIT,
204
- }));
205
- if (filtered.length > 0 && filtered.every((observation) => observation.project === projectName)) {
206
- onTransition({ stage: "fallback-observations", status: "skipped", endpoint });
207
- return { observations: filtered };
208
- }
209
- const unfiltered = await run("fallback-observations", () => adapter.listObservations({ limit: OBSERVATION_FALLBACK_LIMIT }));
210
- const observations = unfiltered
211
- .filter((observation) => observation.project === projectName)
212
- .slice(0, SIDEBAR_OBSERVATION_LIMIT);
213
- const reason = filtered.length === 0
214
- ? "Filtered observations returned no records"
215
- : "Filtered observations returned cross-project records";
216
- return {
217
- observations,
218
- warning: `${reason}; used bounded unfiltered fallback (limit ${OBSERVATION_FALLBACK_LIMIT}) with exact project matching for ${projectName}.`,
219
- };
220
- }
221
- function projectForRefresh(current, projects, observations, projectName) {
222
- if (!projectName)
223
- return undefined;
224
- const refreshed = projects?.find((project) => project.name === projectName);
225
- const previous = current?.name === projectName ? current : undefined;
226
- if (observations === undefined)
227
- return previous ?? refreshed;
228
- const base = refreshed ?? previous;
229
- if (!base && observations.length === 0)
230
- return undefined;
231
- const latestObservation = observations.reduce((latest, observation) => !latest || observation.updated_at > latest
232
- ? observation.updated_at
233
- : latest, undefined);
234
- const lastActiveAt = base?.lastActiveAt ?? latestObservation;
235
- if (!lastActiveAt)
236
- return undefined;
237
- return {
238
- name: projectName,
239
- observationCount: observations.length,
240
- lastActiveAt,
241
- scopes: base?.scopes ?? [...new Set(observations.map((observation) => observation.scope))].sort(),
242
- };
243
- }
244
5
  export function useEngram(adapter, options = {}) {
245
- const [state, setState] = createSignal({
246
- ...EMPTY_STATE,
6
+ let applyState;
7
+ const controller = createEngramReadController(adapter, {
247
8
  projectName: options.projectName,
248
9
  resolution: options.resolution,
249
- error: options.initialError,
10
+ initialError: options.initialError,
11
+ enabled: options.enabled,
12
+ resolveProject: options.resolveProject,
13
+ now: options.now,
14
+ stageTimeoutMs: options.stageTimeoutMs,
15
+ onState: (next) => applyState?.(next),
250
16
  });
251
- let generation = 0;
17
+ const [state, setState] = createSignal(controller.getState());
18
+ applyState = (next) => setState(next);
252
19
  let disposed = false;
253
20
  let initialRefreshStarted = false;
254
21
  let pollTimer;
255
- let initialResolutionPending = hasValidatedProjectName(options.resolution);
256
- const runRefresh = async () => {
257
- const currentGeneration = ++generation;
258
- const useInitialResolution = initialResolutionPending;
259
- initialResolutionPending = false;
260
- setState((current) => ({
261
- ...current,
262
- loading: true,
263
- terminal: {
264
- status: "loading",
265
- stage: "refresh",
266
- health: current.health,
267
- observationCount: current.terminal?.observationCount ?? current.project?.observationCount ?? 0,
268
- },
269
- }));
270
- try {
271
- const input = await fetchSidebarRefresh(adapter, {
272
- ...options,
273
- resolveProject: useInitialResolution ? undefined : options.resolveProject,
274
- onTransition: (transition) => {
275
- if (currentGeneration === generation) {
276
- setState((current) => ({
277
- ...current,
278
- terminal: {
279
- status: "loading",
280
- stage: transition.stage,
281
- health: current.health,
282
- observationCount: transition.stage.includes("observations") && transition.count !== undefined
283
- ? transition.count
284
- : current.terminal?.observationCount ?? 0,
285
- },
286
- }));
287
- }
288
- },
289
- });
290
- if (currentGeneration !== generation)
291
- return outcomeFor(input);
292
- input.stages?.push({ stage: "reducing", status: "started" });
293
- setState((current) => ({
294
- ...current,
295
- terminal: {
296
- status: "loading",
297
- stage: "reducing",
298
- health: current.health,
299
- observationCount: input.observations?.length ?? current.terminal?.observationCount ?? 0,
300
- },
301
- }));
302
- setState((current) => reduceSidebarRefresh(current, input));
303
- input.stages?.push({ stage: "reducing", status: "success" });
304
- const outcome = outcomeFor(input);
305
- const terminalTransition = { stage: "terminal", status: outcome.status, message: outcome.summary };
306
- outcome.stages.push(terminalTransition);
307
- return outcome;
308
- }
309
- catch (reason) {
310
- const failure = { stage: "refresh", reason };
311
- if (currentGeneration !== generation) {
312
- return outcomeFor({ failures: [failure], now: options.now?.() ?? new Date() });
313
- }
314
- const current = state();
315
- const input = {
316
- projectName: current.projectName ?? options.projectName,
317
- resolution: current.resolution ?? options.resolution,
318
- failures: [failure],
319
- now: options.now?.() ?? new Date(),
320
- };
321
- setState((current) => reduceSidebarRefresh(current, input));
322
- const outcome = outcomeFor(input);
323
- const terminalTransition = {
324
- stage: "terminal",
325
- status: "failed",
326
- message: outcome.summary,
327
- };
328
- outcome.stages.push(terminalTransition);
329
- return outcome;
330
- }
331
- };
332
22
  const refresh = () => {
333
23
  initialRefreshStarted = true;
334
- return runRefresh();
24
+ return controller.refresh();
335
25
  };
336
26
  const startInitialRefresh = () => {
337
27
  if (disposed || initialRefreshStarted)
@@ -341,13 +31,13 @@ export function useEngram(adapter, options = {}) {
341
31
  setState((current) => ({ ...current, loading: false }));
342
32
  return;
343
33
  }
344
- void runRefresh();
34
+ void controller.refresh();
345
35
  };
346
36
  onMount(() => {
347
37
  if (options.autoRefresh !== false)
348
38
  startInitialRefresh();
349
39
  if (options.enabled !== false && pollTimer === undefined) {
350
- pollTimer = setInterval(() => void runRefresh(), options.pollInterval ?? DEFAULT_POLL_INTERVAL);
40
+ pollTimer = setInterval(() => void controller.refresh(), options.pollInterval ?? DEFAULT_POLL_INTERVAL);
351
41
  }
352
42
  });
353
43
  // Direct hook consumers retain a guarded fallback. The OpenCode slot disables it
@@ -355,118 +45,17 @@ export function useEngram(adapter, options = {}) {
355
45
  if (options.autoRefresh !== false)
356
46
  queueMicrotask(startInitialRefresh);
357
47
  onCleanup(() => {
48
+ if (disposed)
49
+ return;
358
50
  disposed = true;
359
- generation += 1;
51
+ controller.dispose();
360
52
  if (pollTimer !== undefined)
361
53
  clearInterval(pollTimer);
362
54
  });
363
- const setWorkflowMode = (mode) => {
364
- if (disposed || state().workflowMode === mode)
365
- return;
366
- setState((current) => ({
367
- ...current,
368
- workflowMode: mode,
369
- changes: workflowChanges(mode, current.observations ?? []),
370
- }));
371
- };
372
- return { state, refresh, setWorkflowMode };
373
- }
374
- function failureFor(stage, reason) {
375
55
  return {
376
- stage,
377
- endpoint: reason instanceof EngramUnavailable ? reason.endpoint : defaultEndpoint(stage),
378
- reason,
56
+ state,
57
+ refresh,
58
+ setWorkflowMode: (mode) => controller.setWorkflowMode(mode),
379
59
  };
380
60
  }
381
- function defaultEndpoint(stage) {
382
- if (stage === "project-resolution")
383
- return "/observations/recent + /sessions/recent";
384
- if (stage === "health")
385
- return "/health";
386
- if (stage === "projects")
387
- return "/observations/recent + /sessions/recent";
388
- if (stage === "observations")
389
- return "/observations/recent";
390
- return undefined;
391
- }
392
- function hasValidatedProjectName(resolution) {
393
- return Boolean(resolution?.projectName
394
- && (resolution.validation === "exact" || resolution.validation === "case-insensitive"));
395
- }
396
- export function withStageTimeout(promise, stage, timeoutMs, endpoint) {
397
- return new Promise((resolve, reject) => {
398
- let cancelTimeout = () => undefined;
399
- promise.then((value) => {
400
- cancelTimeout();
401
- resolve(value);
402
- }, (reason) => {
403
- cancelTimeout();
404
- reject(reason);
405
- });
406
- const onTimeout = () => {
407
- reject(new EngramUnavailable(`${stage} timed out after ${timeoutMs}ms`, undefined, {
408
- kind: "timeout",
409
- endpoint,
410
- }));
411
- };
412
- if (timeoutMs === 0) {
413
- const timeoutId = setTimeout(onTimeout, 0);
414
- cancelTimeout = () => clearTimeout(timeoutId);
415
- }
416
- else {
417
- cancelTimeout = scheduleLongTimeout(onTimeout, timeoutMs);
418
- }
419
- });
420
- }
421
- async function trackRequest(promise, stage, timeoutMs, onTransition) {
422
- const endpoint = defaultEndpoint(stage);
423
- onTransition({ stage, status: "started", endpoint });
424
- try {
425
- const value = await withStageTimeout(promise, `${stage} request`, timeoutMs, endpoint);
426
- onTransition({
427
- stage,
428
- status: "success",
429
- endpoint,
430
- count: Array.isArray(value) ? value.length : undefined,
431
- });
432
- return value;
433
- }
434
- catch (reason) {
435
- onTransition({ stage, status: "failed", endpoint, message: messageOf(reason) });
436
- throw reason;
437
- }
438
- }
439
- export function outcomeFor(input) {
440
- const failures = input.failures ?? [];
441
- const warnings = input.warnings ?? [];
442
- const coreComplete = input.health?.local.available === true
443
- && input.observations !== undefined
444
- && !failures.some((failure) => failure.stage !== "projects");
445
- const hasUsableData = input.health !== undefined
446
- || input.projects !== undefined
447
- || input.observations !== undefined;
448
- const status = coreComplete && failures.length === 0 && warnings.length === 0
449
- ? "success"
450
- : hasUsableData
451
- ? "partial"
452
- : "failed";
453
- const firstFailure = failures[0];
454
- const summary = firstFailure
455
- ? `${firstFailure.endpoint ? `${firstFailure.stage} ${firstFailure.endpoint}` : firstFailure.stage}: ${messageOf(firstFailure.reason)}`
456
- : warnings[0]
457
- ?? (status === "success" ? "Refresh complete" : "required refresh data unavailable");
458
- return {
459
- status,
460
- summary,
461
- failures,
462
- warnings,
463
- stages: [...(input.stages ?? [])],
464
- };
465
- }
466
- function describeFailure(failure, input) {
467
- const location = failure.endpoint ? `${failure.stage} ${failure.endpoint}` : failure.stage;
468
- const projects = input.projects === undefined ? "unavailable" : String(input.projects.length);
469
- const observations = input.observations === undefined ? "unavailable" : String(input.observations.length);
470
- return `${location}: ${messageOf(failure.reason)} (projects=${projects}, observations=${observations})`;
471
- }
472
61
  //# sourceMappingURL=use-engram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-engram.js","sourceRoot":"","sources":["../../../src/sidebar/hooks/use-engram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-engram.js","sourceRoot":"","sources":["../../../src/sidebar/hooks/use-engram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAE3E,OAAO,EACL,0BAA0B,GAK3B,MAAM,sBAAsB,CAAC;AAE9B,cAAc,sBAAsB,CAAC;AAQrC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,MAAM,UAAU,SAAS,CACvB,OAAsB,EACtB,UAA4B,EAAE;IAE9B,IAAI,UAA2D,CAAC;IAChE,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,EAAE;QACrD,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;KACtC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAmB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChF,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAClC,IAAI,SAAqD,CAAC;IAE1D,MAAM,OAAO,GAAG,GAAmC,EAAE;QACnD,qBAAqB,GAAG,IAAI,CAAC;QAC7B,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAS,EAAE;QACrC,IAAI,QAAQ,IAAI,qBAAqB;YAAE,OAAO;QAC9C,qBAAqB,GAAG,IAAI,CAAC;QAC7B,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK;YAAE,mBAAmB,EAAE,CAAC;QACzD,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACzD,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iFAAiF;IACjF,yEAAyE;IACzE,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK;QAAE,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACvE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,SAAS,KAAK,SAAS;YAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,OAAO;QACP,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC;KAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,93 @@
1
+ import type { EngramAdapter, EngramTargets, HealthStatus, Observation, Project } from "../adapters/types.js";
2
+ import { type SDDChange } from "../utils/sdd-detector.js";
3
+ import type { ODDState } from "../schemas/odd-state.js";
4
+ import type { ProjectResolution } from "../utils/project-resolver.js";
5
+ export type SidebarHealth = "loading" | "ok" | "stale" | "error" | "offline";
6
+ export type SidebarWorkflowMode = "odd" | "legacy-sdd";
7
+ export interface SidebarViewModel {
8
+ workflowMode?: SidebarWorkflowMode;
9
+ projectName?: string;
10
+ project?: Project;
11
+ resolution?: ProjectResolution;
12
+ changes: SDDChange[];
13
+ odd?: ODDState;
14
+ observations?: Observation[];
15
+ blockers: Observation[];
16
+ recentActivity: Observation[];
17
+ health: SidebarHealth;
18
+ loading: boolean;
19
+ lastRefreshAt?: Date;
20
+ error?: string;
21
+ terminal?: SidebarTerminalState;
22
+ targets?: EngramTargets;
23
+ }
24
+ export interface SidebarTerminalState {
25
+ status: "loading" | SidebarRefreshOutcomeStatus;
26
+ stage: SidebarOperationStage | "mounted" | "refresh";
27
+ health: SidebarHealth;
28
+ observationCount: number;
29
+ }
30
+ export interface UseEngramOptions {
31
+ projectName?: string;
32
+ resolution?: ProjectResolution;
33
+ initialError?: string;
34
+ pollInterval?: number;
35
+ enabled?: boolean;
36
+ autoRefresh?: boolean;
37
+ resolveProject?: () => Promise<ProjectResolution>;
38
+ now?: () => Date;
39
+ stageTimeoutMs?: number;
40
+ }
41
+ export interface SidebarRefreshInput {
42
+ health?: HealthStatus;
43
+ projects?: Project[];
44
+ observations?: Observation[];
45
+ projectName?: string;
46
+ resolution?: ProjectResolution;
47
+ errors?: unknown[];
48
+ failures?: SidebarRefreshFailure[];
49
+ warnings?: string[];
50
+ stages?: SidebarStageTransition[];
51
+ targets?: EngramTargets;
52
+ now: Date;
53
+ }
54
+ export type SidebarRefreshStage = "project-resolution" | "health" | "projects" | "observations" | "refresh";
55
+ export interface SidebarRefreshFailure {
56
+ stage: SidebarRefreshStage;
57
+ endpoint?: string;
58
+ reason: unknown;
59
+ }
60
+ export type SidebarRefreshOutcomeStatus = "success" | "partial" | "failed";
61
+ export type SidebarTransitionStatus = "started" | SidebarRefreshOutcomeStatus | "skipped";
62
+ export type SidebarOperationStage = "project-resolution" | "health" | "projects" | "filtered-observations" | "fallback-observations" | "reducing" | "terminal";
63
+ export interface SidebarStageTransition {
64
+ stage: SidebarOperationStage;
65
+ status: SidebarTransitionStatus;
66
+ endpoint?: string;
67
+ count?: number;
68
+ message?: string;
69
+ }
70
+ export interface SidebarRefreshOutcome {
71
+ status: SidebarRefreshOutcomeStatus;
72
+ summary: string;
73
+ failures: SidebarRefreshFailure[];
74
+ warnings: string[];
75
+ stages: SidebarStageTransition[];
76
+ }
77
+ export declare function reduceSidebarRefresh(current: SidebarViewModel, input: SidebarRefreshInput): SidebarViewModel;
78
+ export declare function fetchSidebarRefresh(adapter: EngramAdapter, options?: Pick<UseEngramOptions, "projectName" | "resolution" | "resolveProject" | "now" | "stageTimeoutMs"> & {
79
+ onTransition?: (transition: SidebarStageTransition) => void;
80
+ }): Promise<SidebarRefreshInput>;
81
+ export interface EngramReadControllerOptions extends Pick<UseEngramOptions, "projectName" | "resolution" | "initialError" | "enabled" | "resolveProject" | "now" | "stageTimeoutMs"> {
82
+ onState?: (state: SidebarViewModel) => void;
83
+ }
84
+ export interface EngramReadController {
85
+ getState: () => SidebarViewModel;
86
+ refresh: () => Promise<SidebarRefreshOutcome>;
87
+ setWorkflowMode: (mode: SidebarWorkflowMode) => void;
88
+ dispose: () => void;
89
+ }
90
+ export declare function createEngramReadController(adapter: EngramAdapter, options?: EngramReadControllerOptions): EngramReadController;
91
+ export declare function withStageTimeout<T>(promise: Promise<T>, stage: string, timeoutMs: number, endpoint?: string): Promise<T>;
92
+ export declare function outcomeFor(input: SidebarRefreshInput): SidebarRefreshOutcome;
93
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/viewer/core.ts"],"names":[],"mappings":"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"}