openhorse 0.2.6 → 0.2.9
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 +2 -2
- package/README.zh-CN.md +10 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +9 -16
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +69 -24
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/types.d.ts +7 -28
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/core/checkpoint.d.ts +42 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +222 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/tool-artifacts.d.ts.map +1 -1
- package/dist/core/tool-artifacts.js +19 -15
- package/dist/core/tool-artifacts.js.map +1 -1
- package/dist/framework/index.d.ts +1 -0
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/index.js +5 -1
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/tool-serializer.d.ts +21 -0
- package/dist/framework/tool-serializer.d.ts.map +1 -0
- package/dist/framework/tool-serializer.js +68 -0
- package/dist/framework/tool-serializer.js.map +1 -0
- package/dist/framework/tool.d.ts +5 -1
- package/dist/framework/tool.d.ts.map +1 -1
- package/dist/framework/tool.js.map +1 -1
- package/dist/harness/context-harness.d.ts.map +1 -1
- package/dist/harness/context-harness.js +5 -0
- package/dist/harness/context-harness.js.map +1 -1
- package/dist/harness/evidence.d.ts +5 -0
- package/dist/harness/evidence.d.ts.map +1 -1
- package/dist/harness/evidence.js +23 -0
- package/dist/harness/evidence.js.map +1 -1
- package/dist/harness/index.d.ts +1 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +2 -1
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/intent.d.ts.map +1 -1
- package/dist/harness/intent.js +8 -0
- package/dist/harness/intent.js.map +1 -1
- package/dist/harness/types.d.ts +4 -1
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/ink-ui/App.d.ts +2 -2
- package/dist/ink-ui/App.d.ts.map +1 -1
- package/dist/ink-ui/components/PixelHorseBanner.d.ts +2 -2
- package/dist/ink-ui/components/PixelHorseBanner.d.ts.map +1 -1
- package/dist/ink-ui/components/StatusLine.d.ts +2 -2
- package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
- package/dist/ink-ui/launch.d.ts +2 -2
- package/dist/ink-ui/launch.d.ts.map +1 -1
- package/dist/ink-ui/launch.js.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.d.ts +2 -2
- package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.js +4 -2
- package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
- package/dist/memory/storage.d.ts +2 -0
- package/dist/memory/storage.d.ts.map +1 -1
- package/dist/memory/storage.js +56 -32
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/vector-store.d.ts +23 -3
- package/dist/memory/vector-store.d.ts.map +1 -1
- package/dist/memory/vector-store.js +107 -37
- package/dist/memory/vector-store.js.map +1 -1
- package/dist/print-ui/launch.d.ts +44 -2
- package/dist/print-ui/launch.d.ts.map +1 -1
- package/dist/print-ui/launch.js +12 -0
- package/dist/print-ui/launch.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +3 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +12 -1
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +7 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +12 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/chat-controller.d.ts +4 -1
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +16 -0
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/runtime/ui-events.d.ts +29 -2
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js +34 -0
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/services/concurrent-sessions.d.ts.map +1 -1
- package/dist/services/concurrent-sessions.js +6 -7
- package/dist/services/concurrent-sessions.js.map +1 -1
- package/dist/services/config-dir.d.ts +29 -6
- package/dist/services/config-dir.d.ts.map +1 -1
- package/dist/services/config-dir.js +118 -17
- package/dist/services/config-dir.js.map +1 -1
- package/dist/services/config.d.ts +9 -2
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +22 -7
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +140 -4
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/format.d.ts +2 -0
- package/dist/services/format.d.ts.map +1 -0
- package/dist/services/format.js +20 -0
- package/dist/services/format.js.map +1 -0
- package/dist/services/global-config.d.ts +3 -3
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +42 -89
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/storage-maintenance.d.ts +53 -0
- package/dist/services/storage-maintenance.d.ts.map +1 -0
- package/dist/services/storage-maintenance.js +369 -0
- package/dist/services/storage-maintenance.js.map +1 -0
- package/dist/terminal-ui/launch.d.ts +30 -2
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +6 -14
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/tools/index.js +9 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tui-ui/launch.d.ts +2 -2
- package/dist/tui-ui/launch.d.ts.map +1 -1
- package/dist/tui-ui/launch.js +2 -0
- package/dist/tui-ui/launch.js.map +1 -1
- package/dist/tui-ui/layout.d.ts.map +1 -1
- package/dist/tui-ui/layout.js +2 -13
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/state.d.ts +13 -1
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +13 -0
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/ui/command-panel.d.ts +1 -1
- package/dist/ui/command-panel.d.ts.map +1 -1
- package/dist/ui/command-panel.js +37 -34
- package/dist/ui/command-panel.js.map +1 -1
- package/dist/ui/file-completion.d.ts +1 -1
- package/dist/ui/file-completion.d.ts.map +1 -1
- package/dist/ui/file-completion.js +4 -4
- package/dist/ui/file-completion.js.map +1 -1
- package/dist/ui/shared/command-palette.d.ts +3 -0
- package/dist/ui/shared/command-palette.d.ts.map +1 -0
- package/dist/ui/shared/command-palette.js +54 -0
- package/dist/ui/shared/command-palette.js.map +1 -0
- package/dist/ui/shared/command-suggestions.d.ts +19 -0
- package/dist/ui/shared/command-suggestions.d.ts.map +1 -0
- package/dist/ui/shared/command-suggestions.js +67 -0
- package/dist/ui/shared/command-suggestions.js.map +1 -0
- package/dist/ui/shared/input-frame.d.ts +19 -0
- package/dist/ui/shared/input-frame.d.ts.map +1 -0
- package/dist/ui/shared/input-frame.js +74 -0
- package/dist/ui/shared/input-frame.js.map +1 -0
- package/dist/ui/shared/text.d.ts +5 -0
- package/dist/ui/shared/text.d.ts.map +1 -0
- package/dist/ui/shared/text.js +55 -0
- package/dist/ui/shared/text.js.map +1 -0
- package/dist/ui/shared/types.d.ts +27 -0
- package/dist/ui/shared/types.d.ts.map +1 -0
- package/dist/ui/shared/types.js +3 -0
- package/dist/ui/shared/types.js.map +1 -0
- package/dist/ui/user-input.js +2 -2
- package/dist/ui/user-input.js.map +1 -1
- package/dist/ui-v2/components/command-palette.d.ts +1 -5
- package/dist/ui-v2/components/command-palette.d.ts.map +1 -1
- package/dist/ui-v2/components/command-palette.js +15 -54
- package/dist/ui-v2/components/command-palette.js.map +1 -1
- package/dist/ui-v2/components/shell.d.ts +1 -14
- package/dist/ui-v2/components/shell.d.ts.map +1 -1
- package/dist/ui-v2/components/shell.js +4 -55
- package/dist/ui-v2/components/shell.js.map +1 -1
- package/dist/ui-v2/runtime/text.d.ts +1 -7
- package/dist/ui-v2/runtime/text.d.ts.map +1 -1
- package/dist/ui-v2/runtime/text.js +15 -55
- package/dist/ui-v2/runtime/text.js.map +1 -1
- package/dist/ui-v2/state/sessions.d.ts +1 -1
- package/dist/ui-v2/state/sessions.d.ts.map +1 -1
- package/dist/ui-v2/state/sessions.js +5 -18
- package/dist/ui-v2/state/sessions.js.map +1 -1
- package/dist/ui-v2/state/suggestions.d.ts +1 -21
- package/dist/ui-v2/state/suggestions.d.ts.map +1 -1
- package/dist/ui-v2/state/suggestions.js +15 -67
- package/dist/ui-v2/state/suggestions.js.map +1 -1
- package/dist/ui-v2/types.d.ts +1 -32
- package/dist/ui-v2/types.d.ts.map +1 -1
- package/dist/ui-v2/types.js +15 -6
- package/dist/ui-v2/types.js.map +1 -1
- package/package.json +4 -1
|
@@ -24,7 +24,7 @@ class SessionManager {
|
|
|
24
24
|
};
|
|
25
25
|
(0, config_dir_1.ensureConfigDir)();
|
|
26
26
|
this.sessionId = this.generateSessionId();
|
|
27
|
-
this.sessionPath = (0, path_1.join)((0, config_dir_1.
|
|
27
|
+
this.sessionPath = (0, path_1.join)((0, config_dir_1.getCacheDir)(), 'active-sessions');
|
|
28
28
|
this.ensureSessionDir();
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
@@ -39,9 +39,8 @@ class SessionManager {
|
|
|
39
39
|
* 确保会话目录存在
|
|
40
40
|
*/
|
|
41
41
|
ensureSessionDir() {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
(0, fs_1.writeFileSync)(sessionsDir, ''); // 创建目录标记
|
|
42
|
+
if (!(0, fs_1.existsSync)(this.sessionPath)) {
|
|
43
|
+
(0, fs_1.mkdirSync)(this.sessionPath, { recursive: true, mode: 0o700 });
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
/**
|
|
@@ -118,7 +117,7 @@ class SessionManager {
|
|
|
118
117
|
*/
|
|
119
118
|
getActiveSessions() {
|
|
120
119
|
const sessions = [];
|
|
121
|
-
const sessionsDir =
|
|
120
|
+
const sessionsDir = this.sessionPath;
|
|
122
121
|
if (!(0, fs_1.existsSync)(sessionsDir)) {
|
|
123
122
|
return sessions;
|
|
124
123
|
}
|
|
@@ -182,7 +181,7 @@ class SessionManager {
|
|
|
182
181
|
* 获取会话文件路径
|
|
183
182
|
*/
|
|
184
183
|
getSessionFilePath(sessionId) {
|
|
185
|
-
return (0, path_1.join)(
|
|
184
|
+
return (0, path_1.join)(this.sessionPath, `${sessionId}.json`);
|
|
186
185
|
}
|
|
187
186
|
/**
|
|
188
187
|
* 启动心跳
|
|
@@ -206,7 +205,7 @@ class SessionManager {
|
|
|
206
205
|
*/
|
|
207
206
|
cleanup() {
|
|
208
207
|
let cleaned = 0;
|
|
209
|
-
const sessionsDir =
|
|
208
|
+
const sessionsDir = this.sessionPath;
|
|
210
209
|
if (!(0, fs_1.existsSync)(sessionsDir)) {
|
|
211
210
|
return cleaned;
|
|
212
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrent-sessions.js","sourceRoot":"","sources":["../../src/services/concurrent-sessions.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"concurrent-sessions.js","sourceRoot":"","sources":["../../src/services/concurrent-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,15 @@ export declare function getConfigDir(): string;
|
|
|
16
16
|
* 创建时使用 0o700 权限(仅用户可读写执行)
|
|
17
17
|
*/
|
|
18
18
|
export declare function ensureConfigDir(): void;
|
|
19
|
+
export declare const PROJECT_METADATA_SCHEMA_VERSION = 1;
|
|
20
|
+
/** Project-scoped storage metadata persisted in projects/<project-key>/project.json. */
|
|
21
|
+
export interface ProjectMetadata {
|
|
22
|
+
schemaVersion: number;
|
|
23
|
+
projectKey: string;
|
|
24
|
+
projectPath: string;
|
|
25
|
+
createdAt: string;
|
|
26
|
+
lastSeenAt: string;
|
|
27
|
+
}
|
|
19
28
|
/** 全局配置文件路径 */
|
|
20
29
|
export declare function getGlobalConfigPath(): string;
|
|
21
30
|
/** 运行时设置文件路径 */
|
|
@@ -24,28 +33,42 @@ export declare function getSettingsPath(): string;
|
|
|
24
33
|
export declare function getUserMemoryPath(): string;
|
|
25
34
|
/** 命令历史文件路径 (JSONL) */
|
|
26
35
|
export declare function getHistoryPath(): string;
|
|
27
|
-
/** 会话目录路径 */
|
|
28
|
-
export declare function getSessionsDir(): string;
|
|
29
|
-
/** 单个会话元数据文件路径 */
|
|
30
|
-
export declare function getSessionMetaPath(sessionId: string): string;
|
|
31
|
-
/** 单个会话对话记录文件路径 (JSONL) */
|
|
32
|
-
export declare function getSessionMessagesPath(sessionId: string): string;
|
|
33
36
|
/** 项目配置目录路径 */
|
|
34
37
|
export declare function getProjectsDir(): string;
|
|
35
38
|
/** Encode an absolute project path into a stable, readable directory key. */
|
|
36
39
|
export declare function encodeProjectPath(projectPath: string): string;
|
|
40
|
+
/** Resolve a project path for storage identity without depending on session-storage. */
|
|
41
|
+
export declare function resolveProjectStoragePath(projectPath: string): string;
|
|
42
|
+
/** Canonical project key used for all project-scoped storage. */
|
|
43
|
+
export declare function getCanonicalProjectKey(projectPath: string): string;
|
|
37
44
|
/** 项目状态目录路径 */
|
|
38
45
|
export declare function getProjectDir(projectPath: string): string;
|
|
46
|
+
/** Project metadata file path. */
|
|
47
|
+
export declare function getProjectMetadataPath(projectPath: string): string;
|
|
39
48
|
/** 项目会话目录路径 */
|
|
40
49
|
export declare function getProjectSessionsDir(projectPath: string): string;
|
|
41
50
|
/** 确保项目状态目录存在 */
|
|
42
51
|
export declare function ensureProjectDir(projectPath: string): void;
|
|
52
|
+
/** Read project metadata, returning null for missing or invalid files. */
|
|
53
|
+
export declare function readProjectMetadata(projectPath: string): ProjectMetadata | null;
|
|
54
|
+
/** Create or refresh project metadata without changing the project identity. */
|
|
55
|
+
export declare function updateProjectMetadata(projectPath: string, now?: Date): ProjectMetadata;
|
|
43
56
|
/** 项目内单个会话元数据文件路径 */
|
|
44
57
|
export declare function getProjectSessionMetaPath(projectPath: string, sessionId: string): string;
|
|
45
58
|
/** 项目内单个会话对话记录文件路径 */
|
|
46
59
|
export declare function getProjectSessionMessagesPath(projectPath: string, sessionId: string): string;
|
|
47
60
|
/** 项目内单个会话 Harness sidecar 路径 */
|
|
48
61
|
export declare function getProjectSessionHarnessPath(projectPath: string, sessionId: string): string;
|
|
62
|
+
/** 项目 Memory 目录路径 */
|
|
63
|
+
export declare function getProjectMemoryDir(projectPath: string): string;
|
|
64
|
+
/** Legacy hash-based project Memory 目录路径(只读兼容) */
|
|
65
|
+
export declare function getLegacyProjectMemoryDir(projectPath: string): string;
|
|
66
|
+
/** 项目工具 Artifact 目录路径 */
|
|
67
|
+
export declare function getProjectArtifactsDir(projectPath: string): string;
|
|
68
|
+
/** 项目 Checkpoint 目录路径 */
|
|
69
|
+
export declare function getProjectCheckpointsDir(projectPath: string): string;
|
|
70
|
+
/** 项目索引目录路径 */
|
|
71
|
+
export declare function getProjectIndexesDir(projectPath: string): string;
|
|
49
72
|
/** 成本记录目录路径 */
|
|
50
73
|
export declare function getCostDir(): string;
|
|
51
74
|
/** 每日成本记录文件路径 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-dir.d.ts","sourceRoot":"","sources":["../../src/services/config-dir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"config-dir.d.ts","sourceRoot":"","sources":["../../src/services/config-dir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,8BAA8B;AAC9B,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CActC;AAMD,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAe;AACf,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,gBAAgB;AAChB,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,sBAAsB;AACtB,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,uBAAuB;AACvB,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,eAAe;AACf,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAsBrE;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,eAAe;AACf,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,kCAAkC;AAClC,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,eAAe;AACf,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,iBAAiB;AACjB,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc1D;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAiB/E;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,eAAe,CA6BlG;AAED,qBAAqB;AACrB,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,sBAAsB;AACtB,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5F;AAED,iCAAiC;AACjC,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED,qBAAqB;AACrB,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,kDAAkD;AAClD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,yBAAyB;AACzB,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,yBAAyB;AACzB,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,eAAe;AACf,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,eAAe;AACf,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,iBAAiB;AACjB,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAIpD;AAED,aAAa;AACb,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAMD,gBAAgB;AAChB,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAWpE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7D"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* 支持 OPENHORSE_CONFIG_DIR 环境变量覆盖。
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PROJECT_METADATA_SCHEMA_VERSION = void 0;
|
|
9
10
|
exports.getConfigHome = getConfigHome;
|
|
10
11
|
exports.getConfigDir = getConfigDir;
|
|
11
12
|
exports.ensureConfigDir = ensureConfigDir;
|
|
@@ -13,17 +14,24 @@ exports.getGlobalConfigPath = getGlobalConfigPath;
|
|
|
13
14
|
exports.getSettingsPath = getSettingsPath;
|
|
14
15
|
exports.getUserMemoryPath = getUserMemoryPath;
|
|
15
16
|
exports.getHistoryPath = getHistoryPath;
|
|
16
|
-
exports.getSessionsDir = getSessionsDir;
|
|
17
|
-
exports.getSessionMetaPath = getSessionMetaPath;
|
|
18
|
-
exports.getSessionMessagesPath = getSessionMessagesPath;
|
|
19
17
|
exports.getProjectsDir = getProjectsDir;
|
|
20
18
|
exports.encodeProjectPath = encodeProjectPath;
|
|
19
|
+
exports.resolveProjectStoragePath = resolveProjectStoragePath;
|
|
20
|
+
exports.getCanonicalProjectKey = getCanonicalProjectKey;
|
|
21
21
|
exports.getProjectDir = getProjectDir;
|
|
22
|
+
exports.getProjectMetadataPath = getProjectMetadataPath;
|
|
22
23
|
exports.getProjectSessionsDir = getProjectSessionsDir;
|
|
23
24
|
exports.ensureProjectDir = ensureProjectDir;
|
|
25
|
+
exports.readProjectMetadata = readProjectMetadata;
|
|
26
|
+
exports.updateProjectMetadata = updateProjectMetadata;
|
|
24
27
|
exports.getProjectSessionMetaPath = getProjectSessionMetaPath;
|
|
25
28
|
exports.getProjectSessionMessagesPath = getProjectSessionMessagesPath;
|
|
26
29
|
exports.getProjectSessionHarnessPath = getProjectSessionHarnessPath;
|
|
30
|
+
exports.getProjectMemoryDir = getProjectMemoryDir;
|
|
31
|
+
exports.getLegacyProjectMemoryDir = getLegacyProjectMemoryDir;
|
|
32
|
+
exports.getProjectArtifactsDir = getProjectArtifactsDir;
|
|
33
|
+
exports.getProjectCheckpointsDir = getProjectCheckpointsDir;
|
|
34
|
+
exports.getProjectIndexesDir = getProjectIndexesDir;
|
|
27
35
|
exports.getCostDir = getCostDir;
|
|
28
36
|
exports.getDailyCostPath = getDailyCostPath;
|
|
29
37
|
exports.getCacheDir = getCacheDir;
|
|
@@ -32,6 +40,9 @@ exports.getExistingMemoryPaths = getExistingMemoryPaths;
|
|
|
32
40
|
const os_1 = require("os");
|
|
33
41
|
const path_1 = require("path");
|
|
34
42
|
const fs_1 = require("fs");
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
const crypto_1 = require("crypto");
|
|
45
|
+
const atomic_write_1 = require("./atomic-write");
|
|
35
46
|
// ============================================================================
|
|
36
47
|
// 配置目录根路径
|
|
37
48
|
// ============================================================================
|
|
@@ -56,7 +67,7 @@ function ensureConfigDir() {
|
|
|
56
67
|
(0, fs_1.mkdirSync)(dir, { recursive: true, mode: 0o700 });
|
|
57
68
|
}
|
|
58
69
|
// 确保子目录存在
|
|
59
|
-
const subdirs = ['
|
|
70
|
+
const subdirs = ['projects', 'cost', 'cache'];
|
|
60
71
|
for (const subdir of subdirs) {
|
|
61
72
|
const path = (0, path_1.join)(dir, subdir);
|
|
62
73
|
if (!(0, fs_1.existsSync)(path)) {
|
|
@@ -67,6 +78,7 @@ function ensureConfigDir() {
|
|
|
67
78
|
// ============================================================================
|
|
68
79
|
// 各文件/目录路径
|
|
69
80
|
// ============================================================================
|
|
81
|
+
exports.PROJECT_METADATA_SCHEMA_VERSION = 1;
|
|
70
82
|
/** 全局配置文件路径 */
|
|
71
83
|
function getGlobalConfigPath() {
|
|
72
84
|
return (0, path_1.join)(getConfigHome(), 'openhorse.json');
|
|
@@ -83,18 +95,6 @@ function getUserMemoryPath() {
|
|
|
83
95
|
function getHistoryPath() {
|
|
84
96
|
return (0, path_1.join)(getConfigHome(), 'history.jsonl');
|
|
85
97
|
}
|
|
86
|
-
/** 会话目录路径 */
|
|
87
|
-
function getSessionsDir() {
|
|
88
|
-
return (0, path_1.join)(getConfigHome(), 'sessions');
|
|
89
|
-
}
|
|
90
|
-
/** 单个会话元数据文件路径 */
|
|
91
|
-
function getSessionMetaPath(sessionId) {
|
|
92
|
-
return (0, path_1.join)(getSessionsDir(), `${sessionId}.json`);
|
|
93
|
-
}
|
|
94
|
-
/** 单个会话对话记录文件路径 (JSONL) */
|
|
95
|
-
function getSessionMessagesPath(sessionId) {
|
|
96
|
-
return (0, path_1.join)(getSessionsDir(), `${sessionId}.jsonl`);
|
|
97
|
-
}
|
|
98
98
|
/** 项目配置目录路径 */
|
|
99
99
|
function getProjectsDir() {
|
|
100
100
|
return (0, path_1.join)(getConfigHome(), 'projects');
|
|
@@ -107,9 +107,41 @@ function encodeProjectPath(projectPath) {
|
|
|
107
107
|
.replace(/^-+|-+$/g, '');
|
|
108
108
|
return encoded || 'root';
|
|
109
109
|
}
|
|
110
|
+
/** Resolve a project path for storage identity without depending on session-storage. */
|
|
111
|
+
function resolveProjectStoragePath(projectPath) {
|
|
112
|
+
const absolute = (0, path_1.resolve)(projectPath);
|
|
113
|
+
if ((0, fs_1.existsSync)(absolute)) {
|
|
114
|
+
try {
|
|
115
|
+
const root = (0, child_process_1.execFileSync)('git', ['-C', absolute, 'rev-parse', '--show-toplevel'], {
|
|
116
|
+
encoding: 'utf-8',
|
|
117
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
118
|
+
}).trim();
|
|
119
|
+
if (root)
|
|
120
|
+
return (0, fs_1.realpathSync)(root);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Not a git worktree, or git is unavailable.
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
return (0, fs_1.realpathSync)(absolute);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
// Fall through to absolute path.
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return absolute;
|
|
133
|
+
}
|
|
134
|
+
/** Canonical project key used for all project-scoped storage. */
|
|
135
|
+
function getCanonicalProjectKey(projectPath) {
|
|
136
|
+
return encodeProjectPath(resolveProjectStoragePath(projectPath));
|
|
137
|
+
}
|
|
110
138
|
/** 项目状态目录路径 */
|
|
111
139
|
function getProjectDir(projectPath) {
|
|
112
|
-
return (0, path_1.join)(getProjectsDir(),
|
|
140
|
+
return (0, path_1.join)(getProjectsDir(), getCanonicalProjectKey(projectPath));
|
|
141
|
+
}
|
|
142
|
+
/** Project metadata file path. */
|
|
143
|
+
function getProjectMetadataPath(projectPath) {
|
|
144
|
+
return (0, path_1.join)(getProjectDir(projectPath), 'project.json');
|
|
113
145
|
}
|
|
114
146
|
/** 项目会话目录路径 */
|
|
115
147
|
function getProjectSessionsDir(projectPath) {
|
|
@@ -126,6 +158,54 @@ function ensureProjectDir(projectPath) {
|
|
|
126
158
|
if (!(0, fs_1.existsSync)(sessionsDir)) {
|
|
127
159
|
(0, fs_1.mkdirSync)(sessionsDir, { recursive: true, mode: 0o700 });
|
|
128
160
|
}
|
|
161
|
+
updateProjectMetadata(projectPath);
|
|
162
|
+
}
|
|
163
|
+
/** Read project metadata, returning null for missing or invalid files. */
|
|
164
|
+
function readProjectMetadata(projectPath) {
|
|
165
|
+
const metadataPath = getProjectMetadataPath(projectPath);
|
|
166
|
+
if (!(0, fs_1.existsSync)(metadataPath))
|
|
167
|
+
return null;
|
|
168
|
+
try {
|
|
169
|
+
const parsed = JSON.parse((0, fs_1.readFileSync)(metadataPath, 'utf8'));
|
|
170
|
+
if (parsed?.schemaVersion !== exports.PROJECT_METADATA_SCHEMA_VERSION ||
|
|
171
|
+
typeof parsed.projectKey !== 'string' ||
|
|
172
|
+
typeof parsed.projectPath !== 'string') {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
return parsed;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/** Create or refresh project metadata without changing the project identity. */
|
|
182
|
+
function updateProjectMetadata(projectPath, now = new Date()) {
|
|
183
|
+
const resolvedPath = resolveProjectStoragePath(projectPath);
|
|
184
|
+
const projectKey = encodeProjectPath(resolvedPath);
|
|
185
|
+
const projectDir = (0, path_1.join)(getProjectsDir(), projectKey);
|
|
186
|
+
if (!(0, fs_1.existsSync)(projectDir)) {
|
|
187
|
+
(0, fs_1.mkdirSync)(projectDir, { recursive: true, mode: 0o700 });
|
|
188
|
+
}
|
|
189
|
+
const metadataPath = (0, path_1.join)(projectDir, 'project.json');
|
|
190
|
+
let createdAt = now.toISOString();
|
|
191
|
+
try {
|
|
192
|
+
const existing = JSON.parse((0, fs_1.readFileSync)(metadataPath, 'utf8'));
|
|
193
|
+
if (typeof existing.createdAt === 'string' && existing.createdAt) {
|
|
194
|
+
createdAt = existing.createdAt;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// Missing or invalid metadata is replaced below.
|
|
199
|
+
}
|
|
200
|
+
const metadata = {
|
|
201
|
+
schemaVersion: exports.PROJECT_METADATA_SCHEMA_VERSION,
|
|
202
|
+
projectKey,
|
|
203
|
+
projectPath: resolvedPath,
|
|
204
|
+
createdAt,
|
|
205
|
+
lastSeenAt: now.toISOString(),
|
|
206
|
+
};
|
|
207
|
+
(0, atomic_write_1.atomicWriteFileSync)(metadataPath, JSON.stringify(metadata, null, 2), { mode: 0o600 });
|
|
208
|
+
return metadata;
|
|
129
209
|
}
|
|
130
210
|
/** 项目内单个会话元数据文件路径 */
|
|
131
211
|
function getProjectSessionMetaPath(projectPath, sessionId) {
|
|
@@ -139,6 +219,27 @@ function getProjectSessionMessagesPath(projectPath, sessionId) {
|
|
|
139
219
|
function getProjectSessionHarnessPath(projectPath, sessionId) {
|
|
140
220
|
return (0, path_1.join)(getProjectSessionsDir(projectPath), `${sessionId}.harness.json`);
|
|
141
221
|
}
|
|
222
|
+
/** 项目 Memory 目录路径 */
|
|
223
|
+
function getProjectMemoryDir(projectPath) {
|
|
224
|
+
return (0, path_1.join)(getProjectDir(projectPath), 'memory');
|
|
225
|
+
}
|
|
226
|
+
/** Legacy hash-based project Memory 目录路径(只读兼容) */
|
|
227
|
+
function getLegacyProjectMemoryDir(projectPath) {
|
|
228
|
+
const hash = (0, crypto_1.createHash)('sha256').update(projectPath).digest('hex').slice(0, 16);
|
|
229
|
+
return (0, path_1.join)(getProjectsDir(), hash, 'memory');
|
|
230
|
+
}
|
|
231
|
+
/** 项目工具 Artifact 目录路径 */
|
|
232
|
+
function getProjectArtifactsDir(projectPath) {
|
|
233
|
+
return (0, path_1.join)(getProjectDir(projectPath), 'artifacts');
|
|
234
|
+
}
|
|
235
|
+
/** 项目 Checkpoint 目录路径 */
|
|
236
|
+
function getProjectCheckpointsDir(projectPath) {
|
|
237
|
+
return (0, path_1.join)(getProjectDir(projectPath), 'checkpoints');
|
|
238
|
+
}
|
|
239
|
+
/** 项目索引目录路径 */
|
|
240
|
+
function getProjectIndexesDir(projectPath) {
|
|
241
|
+
return (0, path_1.join)(getProjectDir(projectPath), 'indexes');
|
|
242
|
+
}
|
|
142
243
|
/** 成本记录目录路径 */
|
|
143
244
|
function getCostDir() {
|
|
144
245
|
return (0, path_1.join)(getConfigHome(), 'cost');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-dir.js","sourceRoot":"","sources":["../../src/services/config-dir.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"config-dir.js","sourceRoot":"","sources":["../../src/services/config-dir.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,14 @@
|
|
|
10
10
|
* 4. Agent 内部默认值
|
|
11
11
|
*
|
|
12
12
|
* UI renderer is intentionally not read from openhorse.json or env. The stable
|
|
13
|
-
* native terminal UI is the default; --ui tui
|
|
14
|
-
* available for explicit testing while
|
|
13
|
+
* native terminal UI is the default; --ui tui and --ui ink keep beta renderer
|
|
14
|
+
* experiments available for explicit testing while they mature.
|
|
15
15
|
*/
|
|
16
16
|
import { type ToolConfirmationPolicy, type UIConfig, type UIRenderer, type UIConfirmationMode, type WebSearchMcpConfig } from './global-config';
|
|
17
17
|
export type { ToolConfirmationPolicy, UIConfig, UIRenderer, UIConfirmationMode, WebSearchMcpConfig };
|
|
18
|
+
export declare const STABLE_UI_RENDERER: UIRenderer;
|
|
19
|
+
export declare const BETA_UI_RENDERERS: readonly ["tui", "ink"];
|
|
20
|
+
export declare const SUPPORTED_UI_RENDERERS: readonly ["terminal", "tui", "ink"];
|
|
18
21
|
/**
|
|
19
22
|
* OpenHorse 运行时配置
|
|
20
23
|
* 用户可配置核心项:apiKey, apiBaseUrl, model, fallbackModel, toolConfirmation
|
|
@@ -42,6 +45,10 @@ export interface OpenHorseCLIConfig {
|
|
|
42
45
|
/** 日志级别 */
|
|
43
46
|
logLevel: 'debug' | 'info' | 'warn' | 'error';
|
|
44
47
|
}
|
|
48
|
+
export declare function resolveUIRenderer(value: unknown): UIRenderer | undefined;
|
|
49
|
+
export declare function isSupportedUIRenderer(value: unknown): value is UIRenderer;
|
|
50
|
+
export declare function isInteractiveUIRenderer(value: unknown): value is UIRenderer;
|
|
51
|
+
export declare function isBetaUIRenderer(value: unknown): value is typeof BETA_UI_RENDERERS[number];
|
|
45
52
|
/**
|
|
46
53
|
* 从多源加载配置
|
|
47
54
|
* 优先级:命令行 > 配置文件 > 环境变量 > Agent 内部默认值
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;AAErG,eAAO,MAAM,kBAAkB,EAAE,UAAuB,CAAC;AACzD,eAAO,MAAM,iBAAiB,yBAA0D,CAAC;AACzF,eAAO,MAAM,sBAAsB,qCAAsF,CAAC;AAM1H;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAEjC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,sFAAsF;IACtF,EAAE,CAAC,EAAE,QAAQ,CAAC;IAGd,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,WAAW;IACX,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC/C;AA4BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAGxE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEzE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAE1F;AAoED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAAG,kBAAkB,CA+B1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAMpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAenF"}
|
package/dist/services/config.js
CHANGED
|
@@ -11,15 +11,23 @@
|
|
|
11
11
|
* 4. Agent 内部默认值
|
|
12
12
|
*
|
|
13
13
|
* UI renderer is intentionally not read from openhorse.json or env. The stable
|
|
14
|
-
* native terminal UI is the default; --ui tui
|
|
15
|
-
* available for explicit testing while
|
|
14
|
+
* native terminal UI is the default; --ui tui and --ui ink keep beta renderer
|
|
15
|
+
* experiments available for explicit testing while they mature.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.SUPPORTED_UI_RENDERERS = exports.BETA_UI_RENDERERS = exports.STABLE_UI_RENDERER = void 0;
|
|
19
|
+
exports.resolveUIRenderer = resolveUIRenderer;
|
|
20
|
+
exports.isSupportedUIRenderer = isSupportedUIRenderer;
|
|
21
|
+
exports.isInteractiveUIRenderer = isInteractiveUIRenderer;
|
|
22
|
+
exports.isBetaUIRenderer = isBetaUIRenderer;
|
|
18
23
|
exports.loadConfig = loadConfig;
|
|
19
24
|
exports.isConfigured = isConfigured;
|
|
20
25
|
exports.getConfigErrors = getConfigErrors;
|
|
21
26
|
exports.getConfigSummary = getConfigSummary;
|
|
22
27
|
const global_config_1 = require("./global-config");
|
|
28
|
+
exports.STABLE_UI_RENDERER = 'terminal';
|
|
29
|
+
exports.BETA_UI_RENDERERS = ['tui', 'ink'];
|
|
30
|
+
exports.SUPPORTED_UI_RENDERERS = [exports.STABLE_UI_RENDERER, ...exports.BETA_UI_RENDERERS];
|
|
23
31
|
// ============================================================================
|
|
24
32
|
// Agent 内部默认值(用户无需关心)
|
|
25
33
|
// ============================================================================
|
|
@@ -43,12 +51,19 @@ function normalizeToolConfirmationPolicy(value) {
|
|
|
43
51
|
? value
|
|
44
52
|
: undefined;
|
|
45
53
|
}
|
|
46
|
-
function
|
|
54
|
+
function resolveUIRenderer(value) {
|
|
47
55
|
if (value === 'stable')
|
|
48
56
|
return 'terminal';
|
|
49
|
-
return value
|
|
50
|
-
|
|
51
|
-
|
|
57
|
+
return isSupportedUIRenderer(value) ? value : undefined;
|
|
58
|
+
}
|
|
59
|
+
function isSupportedUIRenderer(value) {
|
|
60
|
+
return typeof value === 'string' && exports.SUPPORTED_UI_RENDERERS.includes(value);
|
|
61
|
+
}
|
|
62
|
+
function isInteractiveUIRenderer(value) {
|
|
63
|
+
return isSupportedUIRenderer(value);
|
|
64
|
+
}
|
|
65
|
+
function isBetaUIRenderer(value) {
|
|
66
|
+
return typeof value === 'string' && exports.BETA_UI_RENDERERS.includes(value);
|
|
52
67
|
}
|
|
53
68
|
function normalizeUIConfirmationMode(value) {
|
|
54
69
|
return value === 'config' || value === 'interactive'
|
|
@@ -96,7 +111,7 @@ function loadWebSearchConfig(globalConfig, overrides) {
|
|
|
96
111
|
function loadUIConfig(globalConfig, overrides) {
|
|
97
112
|
const envConfirmations = process.env.OPENHORSE_UI_CONFIRMATIONS;
|
|
98
113
|
return {
|
|
99
|
-
renderer:
|
|
114
|
+
renderer: resolveUIRenderer(overrides.ui?.renderer)
|
|
100
115
|
?? INTERNAL_DEFAULTS.ui.renderer,
|
|
101
116
|
confirmations: normalizeUIConfirmationMode(overrides.ui?.confirmations)
|
|
102
117
|
?? normalizeUIConfirmationMode(globalConfig.ui?.confirmations)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AA+EH,8CAGC;AAED,sDAEC;AAED,0DAEC;AAED,4CAEC;AAwED,gCA+BC;AAKD,oCAEC;AAKD,0CAMC;AAKD,4CAeC;AAzOD,mDAQyB;AAIZ,QAAA,kBAAkB,GAAe,UAAU,CAAC;AAC5C,QAAA,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,CAA0C,CAAC;AAC5E,QAAA,sBAAsB,GAAG,CAAC,0BAAkB,EAAE,GAAG,yBAAiB,CAA0C,CAAC;AAqC1H,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,iBAAiB,GAAG;IACxB,gCAAgC;IAChC,2CAA2C;IAC3C,yCAAyC;IACzC,0BAA0B;IAC1B,qCAAqC;IACrC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,MAAM;IAChB,gBAAgB,EAAE,OAAiC;IACnD,EAAE,EAAE;QACF,QAAQ,EAAE,UAAwB;QAClC,aAAa,EAAE,QAA8B;KAC9C;CACO,CAAC;AAEX,SAAS,+BAA+B,CAAC,KAAc;IACrD,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM;QAC7D,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAc;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,8BAA4C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC;AAED,SAAgB,uBAAuB,CAAC,KAAc;IACpD,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,yBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa;QAClD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAA0B,EAC1B,SAAsC;IAEtC,MAAM,MAAM,GAAuB;QACjC,GAAG,YAAY,CAAC,SAAS;QACzB,GAAG,SAAS,CAAC,SAAS;KACvB,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;IAC1G,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAC1D,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAE7E,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAClG,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IACD,IAAI,YAAY;QAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACrD,IAAI,gBAAgB;QAAE,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAEjE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CACnB,YAA0B,EAC1B,SAAsC;IAEtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAEhE,OAAO;QACL,QAAQ,EACN,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC;eACtC,iBAAiB,CAAC,EAAE,CAAC,QAAQ;QAClC,aAAa,EACX,2BAA2B,CAAC,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC;eACrD,2BAA2B,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC;eAC3D,2BAA2B,CAAC,gBAAgB,CAAC;eAC7C,iBAAiB,CAAC,EAAE,CAAC,aAAa;KACxC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E;;;GAGG;AACH,SAAgB,UAAU,CAAC,YAAyC,EAAE;IACpE,MAAM,YAAY,GAAG,IAAA,gCAAgB,GAAE,CAAC;IAExC,MAAM,MAAM,GAAuB;QACjC,SAAS;QACT,MAAM,EACJ,SAAS,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;QAChF,UAAU,EACR,SAAS,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS;QACtI,KAAK,EACH,SAAS,CAAC,KAAK,IAAI,YAAY,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,QAAQ;QACzF,aAAa,EACX,SAAS,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,SAAS;QAC5G,gBAAgB,EACd,+BAA+B,CAAC,SAAS,CAAC,gBAAgB,CAAC;eACxD,+BAA+B,CAAC,YAAY,CAAC,gBAAgB,CAAC;eAC9D,+BAA+B,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;eACxE,iBAAiB,CAAC,gBAAgB;QACvC,SAAS,EAAE,mBAAmB,CAAC,YAAY,EAAE,SAAS,CAAC;QACvD,EAAE,EAAE,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC;QAEzC,aAAa;QACb,IAAI,EACF,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC,IAAI;QACxE,IAAI,EACF,CAAC,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC,IAAI,CAAiC;QAC1G,QAAQ,EACN,CAAC,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,iBAAiB,CAAC,QAAQ,CAAmC;KAC1H,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,MAA0B;IACrD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAA0B;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAA0B;IACzD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,aAAa,IAAI,QAAQ;QAC1C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,kBAAkB;QACnD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW;QACvE,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,IAAI,iBAAiB,CAAC,EAAE,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,aAAa,IAAI,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE;QAC/H,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ;YAC7F,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,WAAW;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkC,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAKnF,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CACvC;AA6PD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,CA+DpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE/D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA6B/D"}
|