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.
- package/README.md +47 -12
- package/dist/core.d.ts +4 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +4 -0
- package/dist/core.js.map +1 -0
- package/dist/pi.d.ts +34 -0
- package/dist/pi.d.ts.map +1 -0
- package/dist/pi.js +123 -0
- package/dist/pi.js.map +1 -0
- package/dist/schemas/health.d.ts +4 -4
- package/dist/schemas/observation.d.ts +2 -2
- package/dist/schemas/odd-state.d.ts +40 -40
- package/dist/schemas/project.d.ts +2 -2
- package/dist/schemas/session.d.ts +12 -12
- package/dist/sidebar/hooks/use-engram.d.ts +3 -82
- package/dist/sidebar/hooks/use-engram.d.ts.map +1 -1
- package/dist/sidebar/hooks/use-engram.js +21 -432
- package/dist/sidebar/hooks/use-engram.js.map +1 -1
- package/dist/viewer/core.d.ts +93 -0
- package/dist/viewer/core.d.ts.map +1 -0
- package/dist/viewer/core.js +455 -0
- package/dist/viewer/core.js.map +1 -0
- package/package.json +16 -2
package/README.md
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# Flema Engram para OpenCode
|
|
1
|
+
# Flema Engram para OpenCode y Pi
|
|
2
2
|
|
|
3
3
|
[](https://github.com/oniricosistemas/flema-engram/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/opencode-flema-engram-sidebar)
|
|
5
5
|
[](https://nodejs.org/)
|
|
6
6
|
[](https://github.com/oniricosistemas/flema-engram/blob/main/LICENSE)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
[Engram](https://github.com/Gentleman-Programming/engram) mientras trabajás dentro de OpenCode.
|
|
8
|
+
Una integración local y de solo lectura que mantiene visible el contexto reciente de
|
|
9
|
+
[Engram](https://github.com/Gentleman-Programming/engram) mientras trabajás dentro de OpenCode o Pi/Gentle Shell.
|
|
10
10
|
|
|
11
11
|
La canción **“Y aún yo te recuerdo”** inspiró artísticamente la idea central: que la
|
|
12
12
|
última memoria guardada siga presente en el contexto de desarrollo. Esta referencia
|
|
13
13
|
es un homenaje a esa inspiración; no implica afiliación, patrocinio ni titularidad
|
|
14
14
|
sobre la obra.
|
|
15
15
|
|
|
16
|
-
> **English summary:** Flema Engram is a local-first, read-only OpenCode
|
|
17
|
-
>
|
|
16
|
+
> **English summary:** Flema Engram is a local-first, read-only OpenCode and Pi
|
|
17
|
+
> integration that surfaces Engram health, project context, recent memories,
|
|
18
18
|
> blockers, and ODD task progress by default. An MCP stdio adapter is included only as an optional
|
|
19
19
|
> integration path.
|
|
20
20
|
|
|
@@ -36,7 +36,7 @@ Configuración mínima:
|
|
|
36
36
|
```json
|
|
37
37
|
{
|
|
38
38
|
"$schema": "https://opencode.ai/tui.json",
|
|
39
|
-
"plugin": ["opencode-flema-engram-sidebar@0.
|
|
39
|
+
"plugin": ["opencode-flema-engram-sidebar@0.3.0"]
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -96,18 +96,53 @@ Si vas a conectarte a una instancia remota de OpenCode mediante `opencode attach
|
|
|
96
96
|
El sidebar hace una carga inicial, vuelve a consultar cada 30 segundos de forma
|
|
97
97
|
predeterminada y permite refrescar manualmente con <kbd>Alt</kbd>+<kbd>R</kbd>.
|
|
98
98
|
|
|
99
|
+
## Viewer para Pi / Gentle Shell
|
|
100
|
+
|
|
101
|
+
El mismo paquete incluye una extensión Pi de solo lectura. Instalá una versión exacta
|
|
102
|
+
compatible con esta documentación:
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
pi install npm:opencode-flema-engram-sidebar@0.3.0
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
La extensión publica un status breve y un widget compacto debajo del editor. Refresca
|
|
109
|
+
al iniciar, reanudar o recargar una sesión, después de que `mem_save` (o el alias
|
|
110
|
+
`save_memory`) termina correctamente y mediante el comando:
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
/engram-refresh
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
No usa polling periódico y no agrega herramientas para escribir memorias. En modos
|
|
117
|
+
sin UI no consulta Engram ni intenta renderizar componentes terminales. En RPC usa
|
|
118
|
+
solamente status y widgets de líneas de texto, sin iniciar una segunda TUI.
|
|
119
|
+
|
|
120
|
+
La resolución del endpoint usa `ENGRAM_URL`, luego `ENGRAM_BASE_URL` y finalmente
|
|
121
|
+
`http://127.0.0.1:7437`. `ENGRAM_PROJECT` puede fijar el candidato de proyecto; de lo
|
|
122
|
+
contrario se valida el nombre del directorio actual contra Engram. Los fallos de
|
|
123
|
+
inicialización se contienen en un estado `Engram unavailable` sin mostrar URLs,
|
|
124
|
+
tokens ni diagnósticos con credenciales.
|
|
125
|
+
|
|
126
|
+
Para desarrollo local, después de compilar el paquete:
|
|
127
|
+
|
|
128
|
+
```sh
|
|
129
|
+
npm run build
|
|
130
|
+
pi --extension ./dist/pi.js
|
|
131
|
+
```
|
|
132
|
+
|
|
99
133
|
## Qué es — y qué no es
|
|
100
134
|
|
|
101
135
|
| Sí es | No es |
|
|
102
136
|
| --- | --- |
|
|
103
|
-
| Un plugin para
|
|
137
|
+
| Un plugin para `sidebar_content` de OpenCode y una extensión Pi | Una TUI independiente |
|
|
104
138
|
| Una vista local y de solo lectura sobre Engram | Un reemplazo de Engram |
|
|
105
139
|
| Project context, activity, and ODD task progress | A memory editor or manager |
|
|
106
140
|
| Un cliente del HTTP local de Engram | Un servicio cloud o de sincronización |
|
|
107
141
|
| Un paquete con un adaptador MCP stdio opcional | Un producto centrado en MCP |
|
|
108
142
|
|
|
109
|
-
|
|
110
|
-
avanzadas y puede ignorarse por completo al usar
|
|
143
|
+
Los viewers de OpenCode y Pi son las integraciones visuales principales. El comando
|
|
144
|
+
MCP existe para integraciones avanzadas y puede ignorarse por completo al usar cualquiera
|
|
145
|
+
de los viewers.
|
|
111
146
|
|
|
112
147
|
## Cómo funciona
|
|
113
148
|
|
|
@@ -148,7 +183,7 @@ Usá la forma `[plugin, options]` solamente cuando necesites opciones:
|
|
|
148
183
|
"$schema": "https://opencode.ai/tui.json",
|
|
149
184
|
"plugin": [
|
|
150
185
|
[
|
|
151
|
-
"opencode-flema-engram-sidebar@0.
|
|
186
|
+
"opencode-flema-engram-sidebar@0.3.0",
|
|
152
187
|
{
|
|
153
188
|
"enabled": true,
|
|
154
189
|
"project": "mi-proyecto",
|
|
@@ -303,7 +338,7 @@ Si Engram conoce `mi-proyecto`, el sidebar valida ese nombre y carga sus memoria
|
|
|
303
338
|
{
|
|
304
339
|
"$schema": "https://opencode.ai/tui.json",
|
|
305
340
|
"plugin": [
|
|
306
|
-
["opencode-flema-engram-sidebar@0.
|
|
341
|
+
["opencode-flema-engram-sidebar@0.3.0", { "project": "backend-api" }]
|
|
307
342
|
]
|
|
308
343
|
}
|
|
309
344
|
```
|
|
@@ -317,7 +352,7 @@ Engram. El valor debe coincidir; una configuración incorrecta queda como `unres
|
|
|
317
352
|
{
|
|
318
353
|
"$schema": "https://opencode.ai/tui.json",
|
|
319
354
|
"plugin": [
|
|
320
|
-
["opencode-flema-engram-sidebar@0.
|
|
355
|
+
["opencode-flema-engram-sidebar@0.3.0", { "pollInterval": 60000 }]
|
|
321
356
|
]
|
|
322
357
|
}
|
|
323
358
|
```
|
package/dist/core.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC"}
|
package/dist/core.js
ADDED
package/dist/core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,kBAAkB,GAInB,MAAM,6BAA6B,CAAC"}
|
package/dist/pi.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { EngramAdapter } from "./adapters/types.js";
|
|
2
|
+
import { type ProjectResolution } from "./utils/project-resolver.js";
|
|
3
|
+
export interface PiExtensionUi {
|
|
4
|
+
setStatus: (key: string, value: string | undefined) => void;
|
|
5
|
+
setWidget: (key: string, value: string[] | undefined, options?: {
|
|
6
|
+
placement?: "aboveEditor" | "belowEditor";
|
|
7
|
+
}) => void;
|
|
8
|
+
notify: (message: string, level?: "info" | "warning" | "error") => void;
|
|
9
|
+
}
|
|
10
|
+
export interface PiExtensionContext {
|
|
11
|
+
cwd: string;
|
|
12
|
+
hasUI: boolean;
|
|
13
|
+
ui: PiExtensionUi;
|
|
14
|
+
}
|
|
15
|
+
export interface PiToolResultEvent {
|
|
16
|
+
type: "tool_result";
|
|
17
|
+
toolName: string;
|
|
18
|
+
isError: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface PiExtensionApi {
|
|
21
|
+
on: (event: string, handler: (event: Record<string, unknown>, context: PiExtensionContext) => unknown) => () => void;
|
|
22
|
+
registerCommand: (name: string, command: {
|
|
23
|
+
description: string;
|
|
24
|
+
handler: (args: string, context: PiExtensionContext) => unknown;
|
|
25
|
+
}) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface PiEngramExtensionDependencies {
|
|
28
|
+
createAdapter?: () => EngramAdapter;
|
|
29
|
+
resolveProject?: (adapter: EngramAdapter, cwd: string) => Promise<ProjectResolution>;
|
|
30
|
+
}
|
|
31
|
+
export declare function createPiEngramExtension(dependencies?: PiEngramExtensionDependencies): (pi: PiExtensionApi) => void;
|
|
32
|
+
declare const _default: (pi: PiExtensionApi) => void;
|
|
33
|
+
export default _default;
|
|
34
|
+
//# sourceMappingURL=pi.d.ts.map
|
package/dist/pi.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../src/pi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAMrC,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC5D,SAAS,EAAE,CACT,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,aAAa,GAAG,aAAa,CAAA;KAAE,KACpD,IAAI,CAAC;IACV,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC;CACzE;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,aAAa,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,CACF,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,KAC9E,MAAM,IAAI,CAAC;IAChB,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC;KACjE,KACE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,6BAA6B;IAC5C,aAAa,CAAC,EAAE,MAAM,aAAa,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtF;AAQD,wBAAgB,uBAAuB,CACrC,YAAY,GAAE,6BAAkC,GAC/C,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAoF9B;6BApFO,cAAc,KAAK,IAAI;AA8H/B,wBAAyC"}
|
package/dist/pi.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { createConfiguredAdapter } from "./adapters/factory.js";
|
|
2
|
+
import { createEngramReadController, } from "./viewer/core.js";
|
|
3
|
+
import { resolveProject as resolveValidatedProject, } from "./utils/project-resolver.js";
|
|
4
|
+
const UI_KEY = "flema-engram";
|
|
5
|
+
const REFRESH_COMMAND = "engram-refresh";
|
|
6
|
+
const MEMORY_SAVE_TOOLS = new Set(["mem_save", "save_memory"]);
|
|
7
|
+
export function createPiEngramExtension(dependencies = {}) {
|
|
8
|
+
const createAdapter = dependencies.createAdapter ?? (() => createConfiguredAdapter());
|
|
9
|
+
const resolveProject = dependencies.resolveProject
|
|
10
|
+
?? ((adapter, cwd) => resolveValidatedProject(adapter, cwd));
|
|
11
|
+
return (pi) => {
|
|
12
|
+
let active;
|
|
13
|
+
let sessionToken;
|
|
14
|
+
const clearUi = (context) => {
|
|
15
|
+
if (!context.hasUI)
|
|
16
|
+
return;
|
|
17
|
+
context.ui.setStatus(UI_KEY, undefined);
|
|
18
|
+
context.ui.setWidget(UI_KEY, undefined);
|
|
19
|
+
};
|
|
20
|
+
const stopActive = () => {
|
|
21
|
+
if (!active)
|
|
22
|
+
return;
|
|
23
|
+
active.controller.dispose();
|
|
24
|
+
clearUi(active.context);
|
|
25
|
+
active = undefined;
|
|
26
|
+
};
|
|
27
|
+
const renderUnavailable = (context) => {
|
|
28
|
+
context.ui.setStatus(UI_KEY, "Engram unavailable");
|
|
29
|
+
context.ui.setWidget(UI_KEY, ["Engram unavailable"], { placement: "belowEditor" });
|
|
30
|
+
};
|
|
31
|
+
const refreshActive = async () => {
|
|
32
|
+
const current = active;
|
|
33
|
+
if (!current)
|
|
34
|
+
return undefined;
|
|
35
|
+
const outcome = await current.controller.refresh();
|
|
36
|
+
return active?.token === current.token ? outcome : undefined;
|
|
37
|
+
};
|
|
38
|
+
pi.on("session_start", async (_event, context) => {
|
|
39
|
+
stopActive();
|
|
40
|
+
const token = Symbol("pi-engram-session");
|
|
41
|
+
sessionToken = token;
|
|
42
|
+
if (!context.hasUI)
|
|
43
|
+
return;
|
|
44
|
+
try {
|
|
45
|
+
const adapter = createAdapter();
|
|
46
|
+
const controller = createEngramReadController(adapter, {
|
|
47
|
+
resolveProject: () => resolveProject(adapter, context.cwd),
|
|
48
|
+
onState: (state) => {
|
|
49
|
+
if (active?.token !== token)
|
|
50
|
+
return;
|
|
51
|
+
renderState(context, state);
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
active = { controller, context, token };
|
|
55
|
+
await refreshActive();
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
if (sessionToken !== token)
|
|
59
|
+
return;
|
|
60
|
+
stopActive();
|
|
61
|
+
renderUnavailable(context);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
pi.on("tool_result", async (event, _context) => {
|
|
65
|
+
if (!isPiToolResultEvent(event) || event.isError || !MEMORY_SAVE_TOOLS.has(event.toolName))
|
|
66
|
+
return;
|
|
67
|
+
await refreshActive();
|
|
68
|
+
});
|
|
69
|
+
pi.on("session_shutdown", (_event, _context) => {
|
|
70
|
+
sessionToken = undefined;
|
|
71
|
+
stopActive();
|
|
72
|
+
});
|
|
73
|
+
pi.registerCommand(REFRESH_COMMAND, {
|
|
74
|
+
description: "Refresh the Flema Engram status and widget",
|
|
75
|
+
handler: async (_args, context) => {
|
|
76
|
+
if (!active) {
|
|
77
|
+
context.ui.notify("Engram viewer is not active", "warning");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const outcome = await refreshActive();
|
|
81
|
+
if (outcome?.status === "success") {
|
|
82
|
+
context.ui.notify("Engram refreshed", "info");
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
context.ui.notify("Engram refresh incomplete", "warning");
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function isPiToolResultEvent(event) {
|
|
92
|
+
return typeof event.toolName === "string" && typeof event.isError === "boolean";
|
|
93
|
+
}
|
|
94
|
+
function renderState(context, state) {
|
|
95
|
+
const health = state.health.toUpperCase();
|
|
96
|
+
const project = state.projectName ?? "unresolved project";
|
|
97
|
+
const progress = aggregateOddProgress(state);
|
|
98
|
+
const blockerCount = state.blockers.length + progress.blocked;
|
|
99
|
+
const statusParts = [`Engram ${health}`, project];
|
|
100
|
+
if (progress.total > 0)
|
|
101
|
+
statusParts.push(`ODD ${progress.done}/${progress.total}`);
|
|
102
|
+
if (blockerCount > 0)
|
|
103
|
+
statusParts.push(`${blockerCount} blocked`);
|
|
104
|
+
context.ui.setStatus(UI_KEY, statusParts.join(" · "));
|
|
105
|
+
const lines = [`Engram · ${project} [${health}]`];
|
|
106
|
+
lines.push(progress.total > 0
|
|
107
|
+
? `ODD ${progress.done}/${progress.total} done · ${progress.inProgress} active · ${blockerCount} blocked`
|
|
108
|
+
: "ODD no tracked feature");
|
|
109
|
+
const latest = state.recentActivity[0];
|
|
110
|
+
if (latest)
|
|
111
|
+
lines.push(`Latest: ${latest.title}`);
|
|
112
|
+
context.ui.setWidget(UI_KEY, lines, { placement: "belowEditor" });
|
|
113
|
+
}
|
|
114
|
+
function aggregateOddProgress(state) {
|
|
115
|
+
return (state.odd?.features ?? []).reduce((total, feature) => ({
|
|
116
|
+
total: total.total + feature.progress.total,
|
|
117
|
+
done: total.done + feature.progress.done,
|
|
118
|
+
inProgress: total.inProgress + feature.progress.in_progress,
|
|
119
|
+
blocked: total.blocked + feature.progress.blocked,
|
|
120
|
+
}), { total: 0, done: 0, inProgress: 0, blocked: 0 });
|
|
121
|
+
}
|
|
122
|
+
export default createPiEngramExtension();
|
|
123
|
+
//# sourceMappingURL=pi.js.map
|
package/dist/pi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../src/pi.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas/health.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ export declare const localHealthResponseSchema: z.ZodObject<{
|
|
|
5
5
|
version: z.ZodString;
|
|
6
6
|
}, "strip", z.ZodTypeAny, {
|
|
7
7
|
status: string;
|
|
8
|
-
service: string;
|
|
9
8
|
version: string;
|
|
9
|
+
service: string;
|
|
10
10
|
}, {
|
|
11
11
|
status: string;
|
|
12
|
-
service: string;
|
|
13
12
|
version: string;
|
|
13
|
+
service: string;
|
|
14
14
|
}>;
|
|
15
15
|
export type LocalHealthResponse = z.infer<typeof localHealthResponseSchema>;
|
|
16
16
|
export declare const cloudHealthResponseSchema: z.ZodObject<{
|
|
@@ -19,12 +19,12 @@ export declare const cloudHealthResponseSchema: z.ZodObject<{
|
|
|
19
19
|
version: z.ZodOptional<z.ZodString>;
|
|
20
20
|
}, "strip", z.ZodTypeAny, {
|
|
21
21
|
status: string;
|
|
22
|
-
service?: string | undefined;
|
|
23
22
|
version?: string | undefined;
|
|
23
|
+
service?: string | undefined;
|
|
24
24
|
}, {
|
|
25
25
|
status: string;
|
|
26
|
-
service?: string | undefined;
|
|
27
26
|
version?: string | undefined;
|
|
27
|
+
service?: string | undefined;
|
|
28
28
|
}>;
|
|
29
29
|
export type CloudHealthResponse = z.infer<typeof cloudHealthResponseSchema>;
|
|
30
30
|
//# sourceMappingURL=health.d.ts.map
|
|
@@ -11,9 +11,9 @@ export declare const observationSchema: z.ZodObject<{
|
|
|
11
11
|
created_at: z.ZodEffects<z.ZodString, string, unknown>;
|
|
12
12
|
}, "strip", z.ZodTypeAny, {
|
|
13
13
|
project: string;
|
|
14
|
-
type: string;
|
|
15
14
|
id: number;
|
|
16
15
|
title: string;
|
|
16
|
+
type: string;
|
|
17
17
|
topic_key: string;
|
|
18
18
|
content: string;
|
|
19
19
|
scope: "project" | "personal";
|
|
@@ -21,9 +21,9 @@ export declare const observationSchema: z.ZodObject<{
|
|
|
21
21
|
created_at: string;
|
|
22
22
|
}, {
|
|
23
23
|
project: string;
|
|
24
|
-
type: string;
|
|
25
24
|
id: number;
|
|
26
25
|
title: string;
|
|
26
|
+
type: string;
|
|
27
27
|
content: string;
|
|
28
28
|
scope: "project" | "personal";
|
|
29
29
|
topic_key?: string | undefined;
|
|
@@ -5,13 +5,13 @@ export declare const oddTaskSchema: z.ZodObject<{
|
|
|
5
5
|
title: z.ZodString;
|
|
6
6
|
status: z.ZodEnum<["pending", "in_progress", "blocked", "done", "cancelled"]>;
|
|
7
7
|
}, "strip", z.ZodTypeAny, {
|
|
8
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
9
8
|
id: string;
|
|
10
9
|
title: string;
|
|
10
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
11
11
|
}, {
|
|
12
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
13
12
|
id: string;
|
|
14
13
|
title: string;
|
|
14
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
15
15
|
}>;
|
|
16
16
|
export declare const oddProvenanceSchema: z.ZodObject<{
|
|
17
17
|
observationId: z.ZodNumber;
|
|
@@ -38,13 +38,13 @@ export declare const oddFeatureSchema: z.ZodObject<{
|
|
|
38
38
|
title: z.ZodString;
|
|
39
39
|
status: z.ZodEnum<["pending", "in_progress", "blocked", "done", "cancelled"]>;
|
|
40
40
|
}, "strip", z.ZodTypeAny, {
|
|
41
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
42
41
|
id: string;
|
|
43
42
|
title: string;
|
|
43
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
44
44
|
}, {
|
|
45
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
46
45
|
id: string;
|
|
47
46
|
title: string;
|
|
47
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
48
48
|
}>, "many">;
|
|
49
49
|
progress: z.ZodObject<{
|
|
50
50
|
total: z.ZodNumber;
|
|
@@ -55,16 +55,16 @@ export declare const oddFeatureSchema: z.ZodObject<{
|
|
|
55
55
|
cancelled: z.ZodNumber;
|
|
56
56
|
}, "strip", z.ZodTypeAny, {
|
|
57
57
|
pending: number;
|
|
58
|
+
done: number;
|
|
58
59
|
in_progress: number;
|
|
59
60
|
blocked: number;
|
|
60
|
-
done: number;
|
|
61
61
|
cancelled: number;
|
|
62
62
|
total: number;
|
|
63
63
|
}, {
|
|
64
64
|
pending: number;
|
|
65
|
+
done: number;
|
|
65
66
|
in_progress: number;
|
|
66
67
|
blocked: number;
|
|
67
|
-
done: number;
|
|
68
68
|
cancelled: number;
|
|
69
69
|
total: number;
|
|
70
70
|
}>;
|
|
@@ -85,19 +85,19 @@ export declare const oddFeatureSchema: z.ZodObject<{
|
|
|
85
85
|
updatedAt: string;
|
|
86
86
|
}>;
|
|
87
87
|
}, "strip", z.ZodTypeAny, {
|
|
88
|
-
title: string;
|
|
89
|
-
version: 1;
|
|
90
|
-
featureId: string;
|
|
91
88
|
tasks: {
|
|
92
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
93
89
|
id: string;
|
|
94
90
|
title: string;
|
|
91
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
95
92
|
}[];
|
|
93
|
+
title: string;
|
|
94
|
+
version: 1;
|
|
95
|
+
featureId: string;
|
|
96
96
|
progress: {
|
|
97
97
|
pending: number;
|
|
98
|
+
done: number;
|
|
98
99
|
in_progress: number;
|
|
99
100
|
blocked: number;
|
|
100
|
-
done: number;
|
|
101
101
|
cancelled: number;
|
|
102
102
|
total: number;
|
|
103
103
|
};
|
|
@@ -108,19 +108,19 @@ export declare const oddFeatureSchema: z.ZodObject<{
|
|
|
108
108
|
updatedAt: string;
|
|
109
109
|
};
|
|
110
110
|
}, {
|
|
111
|
-
title: string;
|
|
112
|
-
version: 1;
|
|
113
|
-
featureId: string;
|
|
114
111
|
tasks: {
|
|
115
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
116
112
|
id: string;
|
|
117
113
|
title: string;
|
|
114
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
118
115
|
}[];
|
|
116
|
+
title: string;
|
|
117
|
+
version: 1;
|
|
118
|
+
featureId: string;
|
|
119
119
|
progress: {
|
|
120
120
|
pending: number;
|
|
121
|
+
done: number;
|
|
121
122
|
in_progress: number;
|
|
122
123
|
blocked: number;
|
|
123
|
-
done: number;
|
|
124
124
|
cancelled: number;
|
|
125
125
|
total: number;
|
|
126
126
|
};
|
|
@@ -183,13 +183,13 @@ export declare const oddStateSchema: z.ZodObject<{
|
|
|
183
183
|
title: z.ZodString;
|
|
184
184
|
status: z.ZodEnum<["pending", "in_progress", "blocked", "done", "cancelled"]>;
|
|
185
185
|
}, "strip", z.ZodTypeAny, {
|
|
186
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
187
186
|
id: string;
|
|
188
187
|
title: string;
|
|
188
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
189
189
|
}, {
|
|
190
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
191
190
|
id: string;
|
|
192
191
|
title: string;
|
|
192
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
193
193
|
}>, "many">;
|
|
194
194
|
progress: z.ZodObject<{
|
|
195
195
|
total: z.ZodNumber;
|
|
@@ -200,16 +200,16 @@ export declare const oddStateSchema: z.ZodObject<{
|
|
|
200
200
|
cancelled: z.ZodNumber;
|
|
201
201
|
}, "strip", z.ZodTypeAny, {
|
|
202
202
|
pending: number;
|
|
203
|
+
done: number;
|
|
203
204
|
in_progress: number;
|
|
204
205
|
blocked: number;
|
|
205
|
-
done: number;
|
|
206
206
|
cancelled: number;
|
|
207
207
|
total: number;
|
|
208
208
|
}, {
|
|
209
209
|
pending: number;
|
|
210
|
+
done: number;
|
|
210
211
|
in_progress: number;
|
|
211
212
|
blocked: number;
|
|
212
|
-
done: number;
|
|
213
213
|
cancelled: number;
|
|
214
214
|
total: number;
|
|
215
215
|
}>;
|
|
@@ -230,19 +230,19 @@ export declare const oddStateSchema: z.ZodObject<{
|
|
|
230
230
|
updatedAt: string;
|
|
231
231
|
}>;
|
|
232
232
|
}, "strip", z.ZodTypeAny, {
|
|
233
|
-
title: string;
|
|
234
|
-
version: 1;
|
|
235
|
-
featureId: string;
|
|
236
233
|
tasks: {
|
|
237
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
238
234
|
id: string;
|
|
239
235
|
title: string;
|
|
236
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
240
237
|
}[];
|
|
238
|
+
title: string;
|
|
239
|
+
version: 1;
|
|
240
|
+
featureId: string;
|
|
241
241
|
progress: {
|
|
242
242
|
pending: number;
|
|
243
|
+
done: number;
|
|
243
244
|
in_progress: number;
|
|
244
245
|
blocked: number;
|
|
245
|
-
done: number;
|
|
246
246
|
cancelled: number;
|
|
247
247
|
total: number;
|
|
248
248
|
};
|
|
@@ -253,19 +253,19 @@ export declare const oddStateSchema: z.ZodObject<{
|
|
|
253
253
|
updatedAt: string;
|
|
254
254
|
};
|
|
255
255
|
}, {
|
|
256
|
-
title: string;
|
|
257
|
-
version: 1;
|
|
258
|
-
featureId: string;
|
|
259
256
|
tasks: {
|
|
260
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
261
257
|
id: string;
|
|
262
258
|
title: string;
|
|
259
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
263
260
|
}[];
|
|
261
|
+
title: string;
|
|
262
|
+
version: 1;
|
|
263
|
+
featureId: string;
|
|
264
264
|
progress: {
|
|
265
265
|
pending: number;
|
|
266
|
+
done: number;
|
|
266
267
|
in_progress: number;
|
|
267
268
|
blocked: number;
|
|
268
|
-
done: number;
|
|
269
269
|
cancelled: number;
|
|
270
270
|
total: number;
|
|
271
271
|
};
|
|
@@ -320,19 +320,19 @@ export declare const oddStateSchema: z.ZodObject<{
|
|
|
320
320
|
}, "strip", z.ZodTypeAny, {
|
|
321
321
|
bounded: true;
|
|
322
322
|
features: {
|
|
323
|
-
title: string;
|
|
324
|
-
version: 1;
|
|
325
|
-
featureId: string;
|
|
326
323
|
tasks: {
|
|
327
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
328
324
|
id: string;
|
|
329
325
|
title: string;
|
|
326
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
330
327
|
}[];
|
|
328
|
+
title: string;
|
|
329
|
+
version: 1;
|
|
330
|
+
featureId: string;
|
|
331
331
|
progress: {
|
|
332
332
|
pending: number;
|
|
333
|
+
done: number;
|
|
333
334
|
in_progress: number;
|
|
334
335
|
blocked: number;
|
|
335
|
-
done: number;
|
|
336
336
|
cancelled: number;
|
|
337
337
|
total: number;
|
|
338
338
|
};
|
|
@@ -357,19 +357,19 @@ export declare const oddStateSchema: z.ZodObject<{
|
|
|
357
357
|
}, {
|
|
358
358
|
bounded: true;
|
|
359
359
|
features: {
|
|
360
|
-
title: string;
|
|
361
|
-
version: 1;
|
|
362
|
-
featureId: string;
|
|
363
360
|
tasks: {
|
|
364
|
-
status: "pending" | "in_progress" | "blocked" | "done" | "cancelled";
|
|
365
361
|
id: string;
|
|
366
362
|
title: string;
|
|
363
|
+
status: "pending" | "done" | "in_progress" | "blocked" | "cancelled";
|
|
367
364
|
}[];
|
|
365
|
+
title: string;
|
|
366
|
+
version: 1;
|
|
367
|
+
featureId: string;
|
|
368
368
|
progress: {
|
|
369
369
|
pending: number;
|
|
370
|
+
done: number;
|
|
370
371
|
in_progress: number;
|
|
371
372
|
blocked: number;
|
|
372
|
-
done: number;
|
|
373
373
|
cancelled: number;
|
|
374
374
|
total: number;
|
|
375
375
|
};
|
|
@@ -5,14 +5,14 @@ export declare const projectSchema: z.ZodObject<{
|
|
|
5
5
|
lastActiveAt: z.ZodString;
|
|
6
6
|
scopes: z.ZodArray<z.ZodEnum<["project", "personal"]>, "many">;
|
|
7
7
|
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
name: string;
|
|
8
9
|
observationCount: number;
|
|
9
10
|
lastActiveAt: string;
|
|
10
|
-
name: string;
|
|
11
11
|
scopes: ("project" | "personal")[];
|
|
12
12
|
}, {
|
|
13
|
+
name: string;
|
|
13
14
|
observationCount: number;
|
|
14
15
|
lastActiveAt: string;
|
|
15
|
-
name: string;
|
|
16
16
|
scopes: ("project" | "personal")[];
|
|
17
17
|
}>;
|
|
18
18
|
export type ProjectSchema = z.infer<typeof projectSchema>;
|