ac-storage 0.16.2 → 0.16.3

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.
Files changed (82) hide show
  1. package/afron/.vscode/launch.json +43 -0
  2. package/afron/.vscode/tasks.json +56 -0
  3. package/afron/LICENSE +674 -0
  4. package/afron/README.md +23 -0
  5. package/afron/_img/01.png +0 -0
  6. package/afron/_img/02.png +0 -0
  7. package/afron/package.json +40 -0
  8. package/afron/packages/chatai-models/package.json +34 -0
  9. package/afron/packages/core/package.json +65 -0
  10. package/afron/packages/core/vite.config.ts +17 -0
  11. package/afron/packages/electron/build/entitlements.mac.plist +33 -0
  12. package/afron/packages/electron/forge.config.js +66 -0
  13. package/afron/packages/electron/import-static.ps1 +14 -0
  14. package/afron/packages/electron/package.json +147 -0
  15. package/afron/packages/electron/rebuild.bat +1 -0
  16. package/afron/packages/front/.env.development +1 -0
  17. package/afron/packages/front/.github/copilot-instructions.md +88 -0
  18. package/afron/packages/front/eslint.config.js +33 -0
  19. package/afron/packages/front/index.html +13 -0
  20. package/afron/packages/front/package.json +74 -0
  21. package/afron/packages/front/public/favicon.icns +0 -0
  22. package/afron/packages/front/public/favicon.ico +0 -0
  23. package/afron/packages/front/public/favicon.png +0 -0
  24. package/afron/packages/front/public/robots.txt +3 -0
  25. package/afron/packages/front/public/vite.svg +1 -0
  26. package/afron/packages/front/tsconfig.app.json +44 -0
  27. package/afron/packages/front/tsconfig.node.json +24 -0
  28. package/afron/packages/front/vite.config.ts +53 -0
  29. package/afron/packages/locale/package.json +65 -0
  30. package/afron/packages/locale/vite.config.ts +17 -0
  31. package/afron/packages/types/index.js +3 -0
  32. package/afron/packages/types/package.json +6 -0
  33. package/afron/packages/types/types/chatai/chatai-model.d.ts +73 -0
  34. package/afron/packages/types/types/chatai/gemini-safety-setting.d.ts +15 -0
  35. package/afron/packages/types/types/chatai/index.d.ts +3 -0
  36. package/afron/packages/types/types/chatai/thinking-efforts.d.ts +4 -0
  37. package/afron/packages/types/types/event-pipe/global-event.d.ts +43 -0
  38. package/afron/packages/types/types/event-pipe/index.d.ts +1 -0
  39. package/afron/packages/types/types/index.d.ts +8 -0
  40. package/afron/packages/types/types/ipc/data.ts +114 -0
  41. package/afron/packages/types/types/ipc/declared.d.ts +1 -0
  42. package/afron/packages/types/types/ipc/index.ts +6 -0
  43. package/afron/packages/types/types/ipc/interface.d.ts +46 -0
  44. package/afron/packages/types/types/ipc/invokers.d.ts +181 -0
  45. package/afron/packages/types/types/ipc/listeners.d.ts +7 -0
  46. package/afron/packages/types/types/ipc/result.d.ts +3 -0
  47. package/afron/packages/types/types/ipc-invokers.d.ts +111 -0
  48. package/afron/packages/types/types/ipc-listeners.d.ts +6 -0
  49. package/afron/packages/types/types/prompt-form.d.ts +65 -0
  50. package/afron/packages/types/types/rt/event.d.ts +71 -0
  51. package/afron/packages/types/types/rt/flow.d.ts +63 -0
  52. package/afron/packages/types/types/rt/form.d.ts +41 -0
  53. package/afron/packages/types/types/rt/index.d.ts +4 -0
  54. package/afron/packages/types/types/rt/rt.d.ts +61 -0
  55. package/afron/packages/types/types/rt-var/index.ts +5 -0
  56. package/afron/packages/types/types/rt-var/rt-var-create.ts +39 -0
  57. package/afron/packages/types/types/rt-var/rt-var-stored.ts +30 -0
  58. package/afron/packages/types/types/rt-var/rt-var-update.ts +45 -0
  59. package/afron/packages/types/types/rt-var/rt-var.ts +36 -0
  60. package/afron/packages/types/types/rt-var/var-data.d.ts +108 -0
  61. package/afron/packages/types/types/storage-schema/ProfileStorageSchema.d.ts +2 -0
  62. package/afron/packages/types/types/storage-schema/RT/Flow.d.ts +20 -0
  63. package/afron/packages/types/types/storage-schema/RT/Metadata.d.ts +16 -0
  64. package/afron/packages/types/types/storage-schema/RT/Prompts.d.ts +39 -0
  65. package/afron/packages/types/types/storage-schema/RT/RT.d.ts +4 -0
  66. package/afron/packages/types/types/storage-schema/RT/index.d.ts +1 -0
  67. package/afron/packages/types/types/storage-schema/Session/Cache.d.ts +18 -0
  68. package/afron/packages/types/types/storage-schema/Session/Config.d.ts +7 -0
  69. package/afron/packages/types/types/storage-schema/Session/Data.d.ts +19 -0
  70. package/afron/packages/types/types/storage-schema/Session/Session.d.ts +3 -0
  71. package/afron/packages/types/types/storage-schema/Session/index.d.ts +1 -0
  72. package/afron/packages/types/types/storage-schema/index.d.ts +116 -0
  73. package/afron/packages/types/types/utils/index.ts +1 -0
  74. package/afron/packages/types/types.d.ts +3 -0
  75. package/afron/scripts/remove-dist.ps1 +10 -0
  76. package/afron/scripts/remove-install.ps1 +9 -0
  77. package/afron/scripts/win-vscode.ps1 +17 -0
  78. package/dist/bundle.cjs +5 -0
  79. package/dist/bundle.cjs.map +1 -1
  80. package/dist/bundle.mjs +5 -0
  81. package/dist/bundle.mjs.map +1 -1
  82. package/package.json +2 -2
@@ -0,0 +1,3 @@
1
+ # https://www.robotstxt.org/robotstxt.html
2
+ User-agent: *
3
+ Disallow:
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
@@ -0,0 +1,44 @@
1
+ {
2
+ "compilerOptions": {
3
+ // "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "ES2022",
5
+ "useDefineForClassFields": true,
6
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
7
+ "module": "ESNext",
8
+ "skipLibCheck": true,
9
+
10
+ /* Bundler mode */
11
+ "moduleResolution": "Bundler",
12
+ "allowImportingTsExtensions": true,
13
+ "isolatedModules": true,
14
+ "moduleDetection": "force",
15
+ "noEmit": true,
16
+ "jsx": "react-jsx",
17
+
18
+ /* Linting */
19
+ "strict": true,
20
+ "noUnusedLocals": false,
21
+ "noUnusedParameters": false,
22
+ // "noUncheckedSideEffectImports": true,
23
+
24
+ "noImplicitAny": false, // 암시적 any 타입 허용
25
+ "noImplicitReturns": false, // 모든 코드 경로에서 반환이 리턴 타입과 일치하는지 확인
26
+ "noFallthroughCasesInSwitch": false, // switch fall-through 허용
27
+ "noUncheckedIndexedAccess": false, // 배열 및 객체 필드 접근시 undefined 체크 없음
28
+ "noPropertyAccessFromIndexSignature": true, // 확인 불가한 key에 대한 dot 연산자 사용 금지
29
+ "noImplicitOverride": true, // 명시적 메서드 오버라이드
30
+ "allowUnreachableCode": true, // 도달할 수 없는 코드 허용
31
+ "forceConsistentCasingInFileNames": true,
32
+ "resolveJsonModule": true,
33
+
34
+ "baseUrl": "src",
35
+ "paths" : {
36
+ "@/*": ["*"],
37
+ "@shared/*": ["../../shared/*"]
38
+ },
39
+ "types" : [
40
+ "node",
41
+ ]
42
+ },
43
+ "include": ["src", "src/global.d.ts"],
44
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "ES2022",
5
+ "lib": ["ES2023"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+
9
+ /* Bundler mode */
10
+ "moduleResolution": "Bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "isolatedModules": true,
13
+ "moduleDetection": "force",
14
+ "noEmit": true,
15
+
16
+ /* Linting */
17
+ "strict": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "noFallthroughCasesInSwitch": true,
21
+ "noUncheckedSideEffectImports": true
22
+ },
23
+ "include": ["vite.config.ts"]
24
+ }
@@ -0,0 +1,53 @@
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+ import path from 'path'
4
+ import tailwindcss from '@tailwindcss/vite'
5
+
6
+ function alias(find:string, replacement:string) {
7
+ return {
8
+ find : find,
9
+ replacement : path.resolve(__dirname, replacement)
10
+ }
11
+ }
12
+
13
+ export default defineConfig({
14
+ base: './',
15
+ server: {
16
+ port : 3600,
17
+ },
18
+ plugins: [
19
+ react({
20
+ babel: {
21
+ plugins: [
22
+ ['babel-plugin-react-compiler'],
23
+ ],
24
+ },
25
+ }),
26
+ tailwindcss(),
27
+ ],
28
+ css: {
29
+ preprocessorOptions: {
30
+ scss: {
31
+ api: 'modern'
32
+ }
33
+ }
34
+ },
35
+ resolve: {
36
+ alias: [
37
+ alias('@', 'src'),
38
+ alias('data', 'src/data'),
39
+ alias('components', 'src/components'),
40
+ alias('context', 'src/context'),
41
+ alias('utils', 'src/utils'),
42
+ alias('lib', 'src/lib'),
43
+ alias('api', 'src/api'),
44
+ alias('types', 'src/types'),
45
+ alias('hooks', 'src/hooks'),
46
+ alias('assets', 'src/assets'),
47
+ alias('pages', 'src/pages'),
48
+ alias('features', 'src/features'),
49
+ alias('locales', 'src/locales'),
50
+ alias('modals', 'src/modals'),
51
+ ]
52
+ }
53
+ })
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@afron/locale",
3
+ "version": "1.0.0",
4
+ "main": "./dist/bundle.cjs",
5
+ "module": "./dist/bundle.mjs",
6
+ "types": "./dist/index.d.ts",
7
+ "type": "module",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/bundle.mjs",
11
+ "require": "./dist/bundle.cjs"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "rollup -c",
16
+ "test": "vitest run",
17
+ "coverage": "jest --coverage"
18
+ },
19
+ "license": "MIT",
20
+ "dependencies": {
21
+ "@afron/types": "1.0.0",
22
+ "@hve/channel": "^1.0.1",
23
+ "@hve/chatai": "^0.16.0",
24
+ "@hve/mime": "^1.0.0",
25
+ "ac-storage": "^0.14.1",
26
+ "advanced-prompt-template-lang": "^0.10.4",
27
+ "archiver": "^7.0.1",
28
+ "better-sqlite3": "^12.2.0",
29
+ "file-type": "^21.0.0",
30
+ "istextorbinary": "^9.5.0",
31
+ "js-tiktoken": "^1.0.20",
32
+ "sharp": "^0.34.2",
33
+ "systeminformation": "^5.23.23",
34
+ "tiktoken": "^1.0.21",
35
+ "tslib": "^2.8.1",
36
+ "unzipper": "^0.12.3",
37
+ "uuid": "^11.0.3",
38
+ "win-known-folders": "^1.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@babel/core": "^7.28.0",
42
+ "@babel/preset-env": "^7.28.0",
43
+ "@babel/preset-react": "^7.27.1",
44
+ "@electron/rebuild": "^4.0.1",
45
+ "@rollup/plugin-commonjs": "^28.0.1",
46
+ "@rollup/plugin-json": "^6.1.0",
47
+ "@rollup/plugin-node-resolve": "^15.3.0",
48
+ "@rollup/plugin-typescript": "^12.1.1",
49
+ "@types/archiver": "^6.0.3",
50
+ "@types/jest": "^29.5.14",
51
+ "@types/node": "^22.10.2",
52
+ "@types/unzipper": "^0.10.11",
53
+ "babel-jest": "^30.0.4",
54
+ "dotenv": "^16.5.0",
55
+ "jest": "^29.7.0",
56
+ "rollup": "^2.79.2",
57
+ "rollup-plugin-dts": "^6.1.1",
58
+ "rollup-plugin-terser": "^7.0.2",
59
+ "rollup-plugin-ts": "^3.4.5",
60
+ "ts-jest": "^29.2.5",
61
+ "ts-node": "^10.9.2",
62
+ "typescript": "^5.7.2",
63
+ "vitest": "^3.2.4"
64
+ }
65
+ }
@@ -0,0 +1,17 @@
1
+ /// <reference types="vitest" />
2
+ import { defineConfig } from 'vite';
3
+ import path from 'path';
4
+
5
+ export default defineConfig({
6
+ resolve: {
7
+ alias: {
8
+ '@': path.resolve(__dirname, 'src'), // src 경로 alias
9
+ },
10
+ },
11
+ test: {
12
+ globals: true,
13
+ environment: 'node',
14
+ include: ['src/**/*.test.ts'], // 테스트 경로
15
+ exclude: ['node_modules', 'dist'],
16
+ },
17
+ });
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+
3
+ export {}
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "@afron/types",
3
+ "version": "1.0.0",
4
+ "main": "index.js",
5
+ "types": "types/index.d.ts"
6
+ }
@@ -0,0 +1,73 @@
1
+ import {
2
+ SupportedThinkingEfforts,
3
+ SupportedVerbosity
4
+ } from './thinking-efforts';
5
+
6
+ export type ChatAIFlags = {
7
+ featured?: boolean;
8
+ stable?: boolean;
9
+ latest?: boolean;
10
+ deprecated?: boolean;
11
+ snapshot?: boolean;
12
+ highCost?: boolean;
13
+ }
14
+ export type ChatAIConfig = {
15
+ endpoint?: 'chat_completions' | 'responses' | 'generative_language' | 'anthropic' | 'vertexai_gemini' | 'vertexai_claude';
16
+ customEndpoint?: string;
17
+
18
+ // tokenizer?: 'default';
19
+
20
+ thinking?: 'enabled' | 'disabled' | 'optional';
21
+
22
+ allowStream?: boolean;
23
+ allowFunctionCall?: boolean;
24
+ allowStructuredOutput?: boolean;
25
+ allowCaching?: boolean;
26
+
27
+ supportGeminiSafetyFilter?: boolean;
28
+ supportThinkingBudget?: boolean;
29
+ supportThinkingEffort?: boolean;
30
+ supportThinkingSummary?: boolean;
31
+ supportVerbosity?: boolean;
32
+
33
+ supportedThinkingEfforts: readonly SupportedThinkingEfforts[]; // gpt 추론모델 적용, 기본값: ['low', 'medium', 'high']
34
+ supportedVerbosity: readonly SupportedVerbosity[]; // gpt-5 추론모델 적용, 기본값: ['low', 'medium', 'high']
35
+ thinkingDisableStrategy: 'omit' | 'set_to_zero'; // gemini 계열 적용, 기본값 'omit'
36
+
37
+ vertexAILocation?: string;
38
+
39
+ excludeParameter?: ExcludeParamter[];
40
+
41
+ advancedSettings?: {
42
+ extraHeaders?: Record<string, string>;
43
+ chatCompletionUseMaxTokens?: boolean; // ChatCompletions에서 max_completion_tokens 대신 max_tokens 사용 여부
44
+ }
45
+ }
46
+
47
+ export type ExcludeParamter = 'temperature' | 'max_tokens' | 'top_p';
48
+
49
+ export type ChatAIModel = {
50
+ metadataId: string;
51
+ modelId: string;
52
+ displayName: string;
53
+
54
+ config: ChatAIConfig;
55
+ flags: ChatAIFlags;
56
+ }
57
+
58
+ export type ChatAIModelGroup = {
59
+ groupName: string;
60
+
61
+ models: Array<ChatAIModel>;
62
+ }
63
+
64
+ export type ChatAIModelCategory = {
65
+ categoryId: string;
66
+ categoryName: string;
67
+
68
+ groups: Array<ChatAIModelGroup>;
69
+ }
70
+
71
+ export type ChatAIModelData = Array<ChatAIModelCategory>
72
+
73
+ export { };
@@ -0,0 +1,15 @@
1
+ export declare namespace GeminiSafetySetting {
2
+ type FilterNames = 'HARM_CATEGORY_HARASSMENT'
3
+ | 'HARM_CATEGORY_HATE_SPEECH'
4
+ | 'HARM_CATEGORY_SEXUALLY_EXPLICIT'
5
+ | 'HARM_CATEGORY_DANGEROUS_CONTENT'
6
+ | 'HARM_CATEGORY_CIVIC_INTEGRITY';
7
+
8
+ type Threshold = (
9
+ 'OFF'
10
+ | 'BLOCK_NONE'
11
+ | 'BLOCK_ONLY_HIGH'
12
+ | 'BLOCK_MEDIUM_AND_ABOVE'
13
+ | 'BLOCK_LOW_AND_ABOVE'
14
+ );
15
+ }
@@ -0,0 +1,3 @@
1
+ export * from './chatai-model';
2
+ export * from './thinking-efforts';
3
+ export * from './gemini-safety-setting';
@@ -0,0 +1,4 @@
1
+ export type SupportedThinkingEfforts = 'minimal' | 'low' | 'medium' | 'high';
2
+ export type SupportedVerbosity = 'low' | 'medium' | 'high';
3
+
4
+ export { };
@@ -0,0 +1,43 @@
1
+ import '../prompt-form';
2
+
3
+ type GlobalEventDataError = {
4
+ type: 'error'
5
+ detail: string[];
6
+ } & (
7
+ {
8
+ reason_id:
9
+ 'other';
10
+ }
11
+ )
12
+ type GlobalEventDataRTExport = {
13
+ type: 'rt_export';
14
+ state: 'ready' | 'cancel' | 'done' | 'block';
15
+ } | {
16
+ type: 'rt_export';
17
+ state: 'progress';
18
+ percent: number;
19
+ description: string;
20
+ }
21
+
22
+ type GlobalEventDataRTImport = {
23
+ type: 'rt_import';
24
+ state: 'ready' | 'cancel' | 'done' | 'block' | 'failed';
25
+ }
26
+
27
+ type GlobalEventDataClose = {
28
+ type: 'close';
29
+ }
30
+
31
+ export type GlobalEventDataWithoutId = (
32
+ GlobalEventDataRTImport
33
+ | GlobalEventDataRTExport
34
+ | GlobalEventDataError
35
+ | GlobalEventDataClose
36
+ );
37
+
38
+
39
+ export type GlobalEventData = {
40
+ id: string;
41
+ } & GlobalEventDataWithoutId;
42
+
43
+ export { };
@@ -0,0 +1 @@
1
+ export * from './global-event';
@@ -0,0 +1,8 @@
1
+ export * from './rt';
2
+ export * from './rt-var';
3
+ export * from './chatai';
4
+ export * from './event-pipe';
5
+ export * from './storage-schema';
6
+
7
+ export * from './ipc';
8
+ export * from './utils';
@@ -0,0 +1,114 @@
1
+
2
+ export type VersionInfo = {
3
+ name: string;
4
+ url: string;
5
+ version: string;
6
+ semver: StructuredVersion;
7
+ description: string;
8
+
9
+ prerelease: boolean;
10
+ isNewer: boolean;
11
+ }
12
+ export type StructuredVersion = {
13
+ isSemver: true;
14
+ major: number;
15
+ minor: number;
16
+ patch: number;
17
+ tag?: string;
18
+ } | {
19
+ isSemver: false;
20
+ identifier: string;
21
+ tag: string;
22
+ };
23
+
24
+ export type RequestRTData = {
25
+ type: 'result'
26
+ text: string;
27
+ response: unknown;
28
+ } | {
29
+ type: 'no_result' // result is not available, but the process is complete
30
+ } | {
31
+ type: 'stream';
32
+ text: string;
33
+ } | {
34
+ type: 'error';
35
+ message: string;
36
+ detail: string[];
37
+ } | {
38
+ type: 'output_clear';
39
+ } | {
40
+ type: 'input_update';
41
+ } | {
42
+ type: 'history_update';
43
+ } | {
44
+ type: 'close';
45
+ }
46
+
47
+ export type HistoryMetadata = {
48
+ id: number;
49
+ requestType: 'chat' | 'normal';
50
+ createdAt: number;
51
+ bookmark: boolean;
52
+
53
+ rtId: string;
54
+ rtUUID: string;
55
+ modelId: string;
56
+
57
+ form: Record<string, unknown>;
58
+
59
+ isComplete: boolean;
60
+ }
61
+
62
+ export type HistoryMessage = {
63
+ id: number;
64
+ input?: string;
65
+ output?: string;
66
+ }
67
+
68
+ export type HistorySearch = {
69
+ text: string;
70
+ searchScope: 'any' | 'input' | 'output';
71
+ }
72
+
73
+ export type VertexAIAuth = {
74
+ project_id: string;
75
+ private_key: string;
76
+ client_email: string;
77
+ }
78
+
79
+ export type UploadableFileType = 'image/webp' | 'image/png' | 'image/jpeg' | 'application/pdf' | 'text/plain';
80
+
81
+ export type InputFileMetadata = {
82
+ filename: string;
83
+ size: number; // bytes
84
+ type: UploadableFileType;
85
+ hash_sha256: string;
86
+ }
87
+ export type InputFile = InputFileMetadata & {
88
+ data: string;
89
+ thumbnail: string | null;
90
+ }
91
+ export type InputFilePreview = InputFileMetadata & {
92
+ thumbnail: string | null;
93
+ }
94
+
95
+ export type InputFilesUpdateInfo = {
96
+ updated: InputFileMetadata[];
97
+ removed: InputFileMetadata[];
98
+ }
99
+
100
+ export type InputFileHash = {
101
+ hash_sha256: string;
102
+ }
103
+
104
+ /** 커스텀 모델 정의 */
105
+ export interface CustomModel {
106
+ id: string;
107
+ name: string;
108
+ model: string;
109
+ url: string;
110
+ api_format: 'chat_completions' | 'generative_language' | 'anthropic_claude';
111
+ thinking: boolean;
112
+ secret_key?: string;
113
+ }
114
+ export type CustomModelCreate = Omit<CustomModel, 'id'> & { id?: string };
@@ -0,0 +1 @@
1
+ export type KeyValueInput = [string, any][] | Record<string, any>;
@@ -0,0 +1,6 @@
1
+ export * from './listeners';
2
+ export * from './invokers';
3
+ export * from './interface';
4
+ export * from './data';
5
+ export * from './result';
6
+ export * from './declared';
@@ -0,0 +1,46 @@
1
+ import { IPCInvokers } from './invokers';
2
+ import { ENoResult, EResult } from './result';
3
+
4
+ export type IPCInvokerInterface = {
5
+ general: IPCInvokers.General;
6
+ globalStorage: IPCInvokers.GlobalStorage;
7
+ masterKey: IPCInvokers.MasterKey;
8
+
9
+ profiles: IPCInvokers.Profiles;
10
+ profile: IPCInvokers.Profile;
11
+ profileStorage: IPCInvokers.ProfileStorage;
12
+ profileSessions: IPCInvokers.ProfileSessions;
13
+ profileSession: IPCInvokers.ProfileSession;
14
+ profileSessionStorage: IPCInvokers.ProfileSessionStorage;
15
+ profileSessionHistory: IPCInvokers.ProfileSessionHistory;
16
+
17
+ profileRTs: IPCInvokers.ProfileRTs;
18
+ profileRT: IPCInvokers.ProfileRT;
19
+ profileRTStorage: IPCInvokers.ProfileRTStorage;
20
+ profileRTPrompt: IPCInvokers.ProfileRTPrompt;
21
+ profileRTFlow: IPCInvokers.ProfileRTFlow;
22
+
23
+ request: IPCInvokers.Request;
24
+ }
25
+
26
+ export type IPCListenerInterface = {
27
+ /** @deprecated */
28
+ addRequestListener(listener: (event: any, token: string, data: any) => void): EResult<number>;
29
+ /** @deprecated */
30
+ removeRequestListener(bindId: number): ENoResult;
31
+
32
+ events: {
33
+ onRequest(listener: (event: any, token: string, data: any) => void): EResult<number>;
34
+ onGlobal(listener: (event: any, token: string, data: any) => void): EResult<number>;
35
+ onDebug(listener: (event: any, token: string, data: any) => void): EResult<number>;
36
+ off(bindId: number): ENoResult;
37
+ }
38
+ };
39
+
40
+ export type IPCInterface = IPCInvokerInterface & IPCListenerInterface;
41
+
42
+ export type IPCInvokerPath = {
43
+ [KEY in keyof IPCInvokerInterface]: {
44
+ [KEY2 in keyof IPCInvokerInterface[KEY]]: 0
45
+ };
46
+ };