saeeol 1.4.0 → 1.4.1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "name": "saeeol",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -0,0 +1,93 @@
1
+ /**
2
+ * groups/ltm.ts — LTM (Long-Term Memory) HTTP API group
3
+ *
4
+ * 외부 앱(chowriter 등)이 saeeol LTM에 기억을 저장/검색하는 엔드포인트.
5
+ */
6
+
7
+ import { Schema } from "effect"
8
+ import { HttpApi, HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
9
+ import { Authorization } from "../middleware/authorization"
10
+ import { InstanceContextMiddleware } from "../middleware/instance-context"
11
+ import { WorkspaceRoutingMiddleware } from "../middleware/workspace-routing"
12
+ import { described } from "./metadata"
13
+
14
+ const root = "/ltm"
15
+
16
+ // Request schemas
17
+ const IngestPayload = Schema.Struct({
18
+ type: Schema.Literal("episodic", "semantic", "procedural"),
19
+ content: Schema.String,
20
+ summary: Schema.String,
21
+ projectID: Schema.optional(Schema.String),
22
+ sessionID: Schema.optional(Schema.String),
23
+ tags: Schema.optional(Schema.mutable(Schema.Array(Schema.String))),
24
+ })
25
+
26
+ const SearchPayload = Schema.Struct({
27
+ query: Schema.String,
28
+ topK: Schema.optional(Schema.Number),
29
+ minScore: Schema.optional(Schema.Number),
30
+ type: Schema.optional(Schema.Literal("episodic", "semantic", "procedural")),
31
+ projectID: Schema.optional(Schema.String),
32
+ })
33
+
34
+ const DeletePayload = Schema.Struct({
35
+ ids: Schema.mutable(Schema.Array(Schema.String)),
36
+ })
37
+
38
+ // Response schemas
39
+ const MemoryEntry = Schema.Struct({
40
+ id: Schema.String,
41
+ type: Schema.String,
42
+ summary: Schema.String,
43
+ content: Schema.String,
44
+ score: Schema.optional(Schema.Number),
45
+ metadata: Schema.Struct({
46
+ source: Schema.String,
47
+ timestamp: Schema.Number,
48
+ projectID: Schema.optional(Schema.String),
49
+ tags: Schema.mutable(Schema.Array(Schema.String)),
50
+ }),
51
+ })
52
+
53
+ const IngestResponse = Schema.Struct({
54
+ id: Schema.String,
55
+ success: Schema.Boolean,
56
+ })
57
+
58
+ const SearchResponse = Schema.Struct({
59
+ memories: Schema.mutable(Schema.Array(MemoryEntry)),
60
+ count: Schema.Number,
61
+ })
62
+
63
+ const DeleteResponse = Schema.Struct({
64
+ removed: Schema.Number,
65
+ })
66
+
67
+ export const LTMHttpApi = HttpApi.make("ltm")
68
+ .add(
69
+ HttpApiGroup.make(root, "ltm")
70
+ .add(
71
+ HttpApiEndpoint.post("ingest", `${root}/ingest`)
72
+ .setPayload(IngestPayload)
73
+ .addSuccess(IngestResponse)
74
+ .annotateMerge(OpenApi.annotations({ identifier: "ltm.ingest", summary: "Store a memory in LTM" })),
75
+ )
76
+ .add(
77
+ HttpApiEndpoint.post("search", `${root}/search`)
78
+ .setPayload(SearchPayload)
79
+ .addSuccess(SearchResponse)
80
+ .annotateMerge(OpenApi.annotations({ identifier: "ltm.search", summary: "Search LTM memories by query" })),
81
+ )
82
+ .add(
83
+ HttpApiEndpoint.post("delete", `${root}/delete`)
84
+ .setPayload(DeletePayload)
85
+ .addSuccess(DeleteResponse)
86
+ .annotateMerge(OpenApi.annotations({ identifier: "ltm.delete", summary: "Delete LTM memories by ID" })),
87
+ )
88
+ .add(
89
+ HttpApiEndpoint.get("status", `${root}/status`)
90
+ .addSuccess(Schema.Struct({ enabled: Schema.Boolean, memoryCount: Schema.Number }))
91
+ .annotateMerge(OpenApi.annotations({ identifier: "ltm.status", summary: "Get LTM status" })),
92
+ ),
93
+ )
@@ -0,0 +1,118 @@
1
+ /**
2
+ * handlers/ltm.ts — LTM HTTP API handlers
3
+ *
4
+ * 외부 앱이 saeeol LTM에 기억을 저장/검색/삭제.
5
+ * 임베딩은 로컬 서버가 처리, 클라이언트는 텍스트만 보냄.
6
+ */
7
+
8
+ import { Effect } from "effect"
9
+ import * as Log from "@saeeol/core/util/log"
10
+ import * as HttpApiBuilder from "effect/unstable/httpapi"
11
+ import * as LTM from "@/ltm"
12
+ import * as Embedder from "@/provider/local/embedder"
13
+ import { LTMHttpApi } from "../groups/ltm"
14
+
15
+ const log = Log.create({ service: "server/handlers/ltm" })
16
+
17
+ export const ltmHandlers = HttpApiBuilder.group(LTMHttpApi, "ltm", (handlers) =>
18
+ Effect.gen(function* () {
19
+ const config = LTM.Config.DEFAULT_LTM_CONFIG
20
+
21
+ return handlers
22
+ .handle("ingest", ({ payload }) =>
23
+ Effect.gen(function* () {
24
+ if (!config.enabled) {
25
+ yield* log.info("LTM ingest skipped — disabled")
26
+ return HttpApiBuilder.fail({ status: 400 as const, body: { message: "LTM is disabled" } })
27
+ }
28
+
29
+ const embedderStatus = Embedder.status()
30
+ if (!embedderStatus || embedderStatus.status !== "running") {
31
+ yield* log.info("LTM ingest skipped — embedder not running")
32
+ return HttpApiBuilder.fail({ status: 503 as const, body: { message: "Embedding server not running" } })
33
+ }
34
+
35
+ const vector = yield* Effect.tryPromise(() => Embedder.embedOne(payload.summary))
36
+ const id = `${payload.type[0]}:${payload.projectID ?? "global"}:${Date.now()}`
37
+ const memory: LTM.Memory = {
38
+ id,
39
+ type: payload.type,
40
+ content: payload.content.slice(0, 2000),
41
+ summary: payload.summary,
42
+ vector,
43
+ metadata: {
44
+ source: `external:${payload.projectID ?? "unknown"}`,
45
+ timestamp: Date.now(),
46
+ projectID: payload.projectID,
47
+ sessionID: payload.sessionID,
48
+ tags: payload.tags ?? [],
49
+ },
50
+ }
51
+
52
+ yield* Effect.tryPromise(() => LTM.Store.upsert(memory))
53
+ yield* log.info("LTM ingest", { id, type: payload.type })
54
+
55
+ return { id, success: true }
56
+ }),
57
+ )
58
+ .handle("search", ({ payload }) =>
59
+ Effect.gen(function* () {
60
+ if (!config.enabled) {
61
+ return { memories: [], count: 0 }
62
+ }
63
+
64
+ const embedderStatus = Embedder.status()
65
+ if (!embedderStatus || embedderStatus.status !== "running") {
66
+ return { memories: [], count: 0 }
67
+ }
68
+
69
+ const vector = yield* Effect.tryPromise(() => Embedder.embedOne(payload.query))
70
+ const memories = yield* Effect.tryPromise(() =>
71
+ LTM.Store.search(vector, {
72
+ topK: payload.topK ?? config.retrieval.topK,
73
+ minScore: payload.minScore ?? config.retrieval.minScore,
74
+ type: payload.type,
75
+ }),
76
+ )
77
+
78
+ // projectID 필터 (store 레벨에서 안 되면 여기서)
79
+ const filtered = payload.projectID
80
+ ? memories.filter((m) => m.metadata.projectID === payload.projectID)
81
+ : memories
82
+
83
+ // vector는 응답에서 제거 (용량 절약)
84
+ const lean = filtered.map((m) => ({
85
+ id: m.id,
86
+ type: m.type,
87
+ summary: m.summary,
88
+ content: m.content,
89
+ score: m.score,
90
+ metadata: {
91
+ source: m.metadata.source,
92
+ timestamp: m.metadata.timestamp,
93
+ projectID: m.metadata.projectID,
94
+ tags: m.metadata.tags,
95
+ },
96
+ }))
97
+
98
+ return { memories: lean, count: lean.length }
99
+ }),
100
+ )
101
+ .handle("delete", ({ payload }) =>
102
+ Effect.gen(function* () {
103
+ yield* Effect.tryPromise(() => LTM.Store.remove(payload.ids))
104
+ return { removed: payload.ids.length }
105
+ }),
106
+ )
107
+ .handle("status", () =>
108
+ Effect.gen(function* () {
109
+ const embedder = Embedder.status()
110
+ const count = yield* Effect.tryPromise(() => LTM.Store.count())
111
+ return {
112
+ enabled: config.enabled && embedder?.status === "running",
113
+ memoryCount: count,
114
+ }
115
+ }),
116
+ )
117
+ }),
118
+ )
@@ -27,7 +27,9 @@ import { EventRoutes } from "./event"
27
27
  import { SyncRoutes } from "./sync"
28
28
  import { InstanceMiddleware } from "./middleware"
29
29
  import { jsonRequest } from "./trace"
30
- import { register as registerSaeeolRoutes } from "@/saeeol/server/instance"
30
+ import { register as registerSaeeolRoutes } from "@/saeeol/server/instance"
31
+ import * as LTM from "@/ltm"
32
+ import * as Embedder from "@/provider/local/embedder"
31
33
 
32
34
  export const InstanceRoutes = (upgrade: UpgradeWebSocket): Hono => {
33
35
  const app = new Hono()
@@ -47,6 +49,99 @@ export const InstanceRoutes = (upgrade: UpgradeWebSocket): Hono => {
47
49
  .route("/", EventRoutes())
48
50
  .route("/mcp", McpRoutes())
49
51
  .route("/tui", TuiRoutes())
52
+ // ── LTM (Long-Term Memory) ──
53
+ .post(
54
+ "/ltm/ingest",
55
+ describeRoute({
56
+ summary: "Store a memory in LTM",
57
+ operationId: "ltm.ingest",
58
+ responses: { 200: { description: "Memory stored" } },
59
+ }),
60
+ async (c) => {
61
+ const body = await c.req.json<{ type: "episodic" | "semantic" | "procedural"; content: string; summary: string; projectID?: string; sessionID?: string; tags?: string[] }>()
62
+ const embedderStatus = Embedder.status()
63
+ if (!embedderStatus || embedderStatus.status !== "running") {
64
+ return c.json({ error: "Embedding server not running" }, 503)
65
+ }
66
+ const vector = await Embedder.embedOne(body.summary)
67
+ const id = `${body.type[0]}:${body.projectID ?? "global"}:${Date.now()}`
68
+ const memory: LTM.Memory = {
69
+ id,
70
+ type: body.type,
71
+ content: body.content.slice(0, 2000),
72
+ summary: body.summary,
73
+ vector,
74
+ metadata: {
75
+ source: `external:${body.projectID ?? "unknown"}`,
76
+ timestamp: Date.now(),
77
+ projectID: body.projectID,
78
+ sessionID: body.sessionID,
79
+ tags: body.tags ?? [],
80
+ },
81
+ }
82
+ await LTM.Store.upsert(memory)
83
+ return c.json({ id, success: true })
84
+ },
85
+ )
86
+ .post(
87
+ "/ltm/search",
88
+ describeRoute({
89
+ summary: "Search LTM memories by query",
90
+ operationId: "ltm.search",
91
+ responses: { 200: { description: "Search results" } },
92
+ }),
93
+ async (c) => {
94
+ const body = await c.req.json<{ query: string; topK?: number; minScore?: number; type?: "episodic" | "semantic" | "procedural"; projectID?: string }>()
95
+ const embedderStatus = Embedder.status()
96
+ if (!embedderStatus || embedderStatus.status !== "running") {
97
+ return c.json({ memories: [], count: 0 })
98
+ }
99
+ const vector = await Embedder.embedOne(body.query)
100
+ const memories = await LTM.Store.search(vector, {
101
+ topK: body.topK ?? 5,
102
+ minScore: body.minScore ?? 0.7,
103
+ type: body.type,
104
+ })
105
+ const filtered = body.projectID
106
+ ? memories.filter((m) => m.metadata.projectID === body.projectID)
107
+ : memories
108
+ const lean = filtered.map((m) => ({
109
+ id: m.id,
110
+ type: m.type,
111
+ summary: m.summary,
112
+ content: m.content,
113
+ score: m.score,
114
+ metadata: { source: m.metadata.source, timestamp: m.metadata.timestamp, projectID: m.metadata.projectID, tags: m.metadata.tags },
115
+ }))
116
+ return c.json({ memories: lean, count: lean.length })
117
+ },
118
+ )
119
+ .post(
120
+ "/ltm/delete",
121
+ describeRoute({
122
+ summary: "Delete LTM memories by ID",
123
+ operationId: "ltm.delete",
124
+ responses: { 200: { description: "Deleted" } },
125
+ }),
126
+ async (c) => {
127
+ const body = await c.req.json<{ ids: string[] }>()
128
+ await LTM.Store.remove(body.ids)
129
+ return c.json({ removed: body.ids.length })
130
+ },
131
+ )
132
+ .get(
133
+ "/ltm/status",
134
+ describeRoute({
135
+ summary: "Get LTM status",
136
+ operationId: "ltm.status",
137
+ responses: { 200: { description: "LTM status" } },
138
+ }),
139
+ async (c) => {
140
+ const embedder = Embedder.status()
141
+ const count = await LTM.Store.count()
142
+ return c.json({ enabled: embedder?.status === "running", memoryCount: count })
143
+ },
144
+ )
50
145
  .post(
51
146
  "/instance/dispose",
52
147
  describeRoute({
@@ -0,0 +1,110 @@
1
+ === input-typed (280 bytes) ===
2
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
3
+
4
+
5
+ === input-cursor-lr (280 bytes) ===
6
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
7
+
8
+
9
+ === input-cursor-ud (280 bytes) ===
10
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
11
+
12
+
13
+ === input-cursor-home-end (280 bytes) ===
14
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
15
+
16
+
17
+ === input-ctrl-a (280 bytes) ===
18
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
19
+
20
+
21
+ === input-ctrl-e (280 bytes) ===
22
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
23
+
24
+
25
+ === input-ctrl-b (280 bytes) ===
26
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
27
+
28
+
29
+ === input-ctrl-f (280 bytes) ===
30
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
31
+
32
+
33
+ === input-alt-f (280 bytes) ===
34
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
35
+
36
+
37
+ === input-alt-b (280 bytes) ===
38
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
39
+
40
+
41
+ === input-ctrl-left (280 bytes) ===
42
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
43
+
44
+
45
+ === input-ctrl-right (280 bytes) ===
46
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
47
+
48
+
49
+ === input-select-lr (280 bytes) ===
50
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
51
+
52
+
53
+ === input-select-ud (280 bytes) ===
54
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
55
+
56
+
57
+ === input-alt-a (280 bytes) ===
58
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
59
+
60
+
61
+ === input-alt-e (280 bytes) ===
62
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
63
+
64
+
65
+ === input-backspace (280 bytes) ===
66
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
67
+
68
+
69
+ === input-delete (280 bytes) ===
70
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
71
+
72
+
73
+ === input-ctrl-k (280 bytes) ===
74
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
75
+
76
+
77
+ === input-ctrl-u (280 bytes) ===
78
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
79
+
80
+
81
+ === input-ctrl-w (280 bytes) ===
82
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
83
+
84
+
85
+ === input-ctrl-d (280 bytes) ===
86
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
87
+
88
+
89
+ === input-alt-d (280 bytes) ===
90
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
91
+
92
+
93
+ === input-clear-ctrl-c (280 bytes) ===
94
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
95
+
96
+
97
+ === input-undo-ctrl-minus (280 bytes) ===
98
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
99
+
100
+
101
+ === input-redo (280 bytes) ===
102
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
103
+
104
+
105
+ === input-submit (280 bytes) ===
106
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
107
+
108
+
109
+ === input-cleanup (280 bytes) ===
110
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
@@ -0,0 +1,70 @@
1
+ === leader-l-session-list (280 bytes) ===
2
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
3
+
4
+
5
+ === leader-m-model-list (280 bytes) ===
6
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
7
+
8
+
9
+ === leader-a-agent-list (280 bytes) ===
10
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
11
+
12
+
13
+ === leader-s-status (280 bytes) ===
14
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
15
+
16
+
17
+ === leader-t-theme-list (280 bytes) ===
18
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
19
+
20
+
21
+ === leader-g-timeline (280 bytes) ===
22
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
23
+
24
+
25
+ === leader-b-sidebar-open (280 bytes) ===
26
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
27
+
28
+
29
+ === leader-b-sidebar-close (280 bytes) ===
30
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
31
+
32
+
33
+ === leader-n-new-session (280 bytes) ===
34
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
35
+
36
+
37
+ === leader-c-compact (280 bytes) ===
38
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
39
+
40
+
41
+ === leader-h-conceal-toggle (280 bytes) ===
42
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
43
+
44
+
45
+ === leader-eq-feedback-up (280 bytes) ===
46
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
47
+
48
+
49
+ === leader-minus-feedback-down (280 bytes) ===
50
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
51
+
52
+
53
+ === leader-y-copy (280 bytes) ===
54
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
55
+
56
+
57
+ === leader-u-undo (280 bytes) ===
58
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
59
+
60
+
61
+ === leader-r-redo (280 bytes) ===
62
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
63
+
64
+
65
+ === leader-down-child-first (280 bytes) ===
66
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
67
+
68
+
69
+ === leader-q-exit (280 bytes) ===
70
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
@@ -0,0 +1,66 @@
1
+ === scroll-page-up (280 bytes) ===
2
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
3
+
4
+
5
+ === scroll-page-down (280 bytes) ===
6
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
7
+
8
+
9
+ === scroll-ctrl-page-up (280 bytes) ===
10
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
11
+
12
+
13
+ === scroll-ctrl-page-down (280 bytes) ===
14
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
15
+
16
+
17
+ === scroll-ctrl-up (280 bytes) ===
18
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
19
+
20
+
21
+ === scroll-ctrl-down (280 bytes) ===
22
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
23
+
24
+
25
+ === scroll-ctrl-g-first (280 bytes) ===
26
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
27
+
28
+
29
+ === scroll-home (280 bytes) ===
30
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
31
+
32
+
33
+ === scroll-end (280 bytes) ===
34
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
35
+
36
+
37
+ === nav-tab-agent-next (280 bytes) ===
38
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
39
+
40
+
41
+ === nav-shift-tab-agent-prev (280 bytes) ===
42
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
43
+
44
+
45
+ === nav-f2-model-next (280 bytes) ===
46
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
47
+
48
+
49
+ === nav-shift-f2-model-prev (280 bytes) ===
50
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
51
+
52
+
53
+ === nav-ctrl-p-palette (280 bytes) ===
54
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
55
+
56
+
57
+ === nav-ctrl-t-variant (280 bytes) ===
58
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
59
+
60
+
61
+ === nav-escape-interrupt (280 bytes) ===
62
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
63
+
64
+
65
+ === nav-ctrl-d-exit (280 bytes) ===
66
+ s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception