@xxmachina/common 19.51.0 → 19.81.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/fesm2022/xxmachina-common-_shared-ansi.mjs +0 -16
- package/fesm2022/xxmachina-common-_shared-ansi.mjs.map +1 -1
- package/fesm2022/xxmachina-common-_shared-meta-redis.mjs +0 -5
- package/fesm2022/xxmachina-common-_shared-meta-redis.mjs.map +1 -1
- package/fesm2022/xxmachina-common-_shared-meta.mjs +2 -3
- package/fesm2022/xxmachina-common-_shared-meta.mjs.map +1 -1
- package/fesm2022/xxmachina-common-auth-firebase.mjs +0 -4
- package/fesm2022/xxmachina-common-auth-firebase.mjs.map +1 -1
- package/fesm2022/xxmachina-common-domain-builder-screen-item.mjs +0 -15
- package/fesm2022/xxmachina-common-domain-builder-screen-item.mjs.map +1 -1
- package/fesm2022/xxmachina-common-domain-builder.mjs +1 -25
- package/fesm2022/xxmachina-common-domain-builder.mjs.map +1 -1
- package/fesm2022/xxmachina-common-domain-models.mjs +1 -19
- package/fesm2022/xxmachina-common-domain-models.mjs.map +1 -1
- package/fesm2022/xxmachina-common-infra-external-quick-js.mjs +0 -3
- package/fesm2022/xxmachina-common-infra-external-quick-js.mjs.map +1 -1
- package/fesm2022/xxmachina-common-infra-query-hasura.mjs +1 -0
- package/fesm2022/xxmachina-common-infra-query-hasura.mjs.map +1 -1
- package/fesm2022/xxmachina-common-infra.mjs +0 -19
- package/fesm2022/xxmachina-common-infra.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-domain-models.mjs +10 -1
- package/fesm2022/xxmachina-common-invoice-domain-models.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-usecase-invoice.mjs +0 -12
- package/fesm2022/xxmachina-common-invoice-usecase-invoice.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-usecase-order.mjs +0 -2
- package/fesm2022/xxmachina-common-invoice-usecase-order.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-usecase-partner.mjs +0 -2
- package/fesm2022/xxmachina-common-invoice-usecase-partner.mjs.map +1 -1
- package/fesm2022/xxmachina-common-services-device-profile.mjs +26 -0
- package/fesm2022/xxmachina-common-services-device-profile.mjs.map +1 -0
- package/fesm2022/xxmachina-common-services-graphql.mjs +1 -70
- package/fesm2022/xxmachina-common-services-graphql.mjs.map +1 -1
- package/fesm2022/xxmachina-common-services-speech.mjs +0 -17
- package/fesm2022/xxmachina-common-services-speech.mjs.map +1 -1
- package/fesm2022/xxmachina-common-usecase-database.mjs +0 -3
- package/fesm2022/xxmachina-common-usecase-database.mjs.map +1 -1
- package/fesm2022/xxmachina-common-usecase-graphql.mjs +0 -1
- package/fesm2022/xxmachina-common-usecase-graphql.mjs.map +1 -1
- package/fesm2022/xxmachina-common-usecase.mjs +0 -1
- package/fesm2022/xxmachina-common-usecase.mjs.map +1 -1
- package/fesm2022/xxmachina-common-utils.mjs +0 -8
- package/fesm2022/xxmachina-common-utils.mjs.map +1 -1
- package/package.json +15 -11
- package/types/xxmachina-common-_shared-ansi.d.ts +0 -15
- package/types/xxmachina-common-_shared-ansi.d.ts.map +1 -1
- package/types/xxmachina-common-auth-firebase.d.ts +0 -4
- package/types/xxmachina-common-auth-firebase.d.ts.map +1 -1
- package/types/xxmachina-common-domain-builder-screen-item.d.ts +0 -15
- package/types/xxmachina-common-domain-builder-screen-item.d.ts.map +1 -1
- package/types/xxmachina-common-domain-builder.d.ts +0 -21
- package/types/xxmachina-common-domain-builder.d.ts.map +1 -1
- package/types/xxmachina-common-domain-models-presenter.d.ts +0 -46
- package/types/xxmachina-common-domain-models-presenter.d.ts.map +1 -1
- package/types/xxmachina-common-domain-models.d.ts +0 -59
- package/types/xxmachina-common-domain-models.d.ts.map +1 -1
- package/types/xxmachina-common-invoice-domain-models.d.ts +6 -1
- package/types/xxmachina-common-invoice-domain-models.d.ts.map +1 -1
- package/types/xxmachina-common-services-device-profile.d.ts +13 -0
- package/types/xxmachina-common-services-device-profile.d.ts.map +1 -0
- package/types/xxmachina-common-services-graphql.d.ts +0 -40
- package/types/xxmachina-common-services-graphql.d.ts.map +1 -1
|
@@ -5,9 +5,6 @@ import { interval, filter } from 'rxjs';
|
|
|
5
5
|
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
|
7
7
|
/// <reference path="./speech-recognition.d.ts" />
|
|
8
|
-
/**
|
|
9
|
-
* SpeechRecognition APIの初期化
|
|
10
|
-
*/
|
|
11
8
|
function initializeSpeechRecognitionAPI() {
|
|
12
9
|
if (typeof window === 'undefined')
|
|
13
10
|
return null;
|
|
@@ -22,10 +19,6 @@ function initializeSpeechRecognitionAPI() {
|
|
|
22
19
|
recognition.lang = 'ja-JP';
|
|
23
20
|
return recognition;
|
|
24
21
|
}
|
|
25
|
-
/**
|
|
26
|
-
* SpeechRecognitionイベントをパースして中間結果と確定結果を返す
|
|
27
|
-
* @param startIndex - 読み取り開始インデックス(指定時はevent.resultIndexより優先)
|
|
28
|
-
*/
|
|
29
22
|
function parseSpeechRecognitionEvent(event, startIndex) {
|
|
30
23
|
const from = startIndex ?? event.resultIndex;
|
|
31
24
|
const results = [];
|
|
@@ -60,9 +53,7 @@ class SpeechService {
|
|
|
60
53
|
(('SpeechRecognition' in window) || ('webkitSpeechRecognition' in window));
|
|
61
54
|
finalized = computed(() => this.transcript().finalized, ...(ngDevMode ? [{ debugName: "finalized" }] : []));
|
|
62
55
|
finalized$ = toObservable(this.finalized);
|
|
63
|
-
// 自動モード: セッション選択時に自動的に音声入力を開始
|
|
64
56
|
autoModeEnabled = signal(false, ...(ngDevMode ? [{ debugName: "autoModeEnabled" }] : []));
|
|
65
|
-
// 選択中のセッションID(自動音声入力制御用)
|
|
66
57
|
selectedSessionId = signal(null, ...(ngDevMode ? [{ debugName: "selectedSessionId" }] : []));
|
|
67
58
|
constructor() {
|
|
68
59
|
interval(this.PAUSE_THRESHOLD).pipe(filter(() => this.isListening() && (Date.now() - this.lastSpeechTime()) >= this.PAUSE_THRESHOLD)).subscribe(() => {
|
|
@@ -109,11 +100,9 @@ class SpeechService {
|
|
|
109
100
|
clear() {
|
|
110
101
|
this.transcript.set({ interim: '', finalized: '' });
|
|
111
102
|
if (this.autoModeEnabled() && this.recognition && this.isListening()) {
|
|
112
|
-
// Auto mode: Speech APIを止めない。result indexで古い結果をフィルタ
|
|
113
103
|
this.resultIndexThreshold = this.lastKnownResultsLength;
|
|
114
104
|
return;
|
|
115
105
|
}
|
|
116
|
-
// Non-auto mode: stop → onend → restart で確実にリセット
|
|
117
106
|
this.ignoreResults = true;
|
|
118
107
|
if (this.recognition && this.isListening()) {
|
|
119
108
|
try {
|
|
@@ -124,11 +113,9 @@ class SpeechService {
|
|
|
124
113
|
}
|
|
125
114
|
}
|
|
126
115
|
}
|
|
127
|
-
// 自動モードのトグル
|
|
128
116
|
toggleAutoMode(enabled) {
|
|
129
117
|
this.autoModeEnabled.set(enabled);
|
|
130
118
|
if (enabled) {
|
|
131
|
-
// 自動モードON → セッション選択済みならSpeech API有効化
|
|
132
119
|
if (this.selectedSessionId()) {
|
|
133
120
|
this.isListening.set(true);
|
|
134
121
|
this.startRecognition();
|
|
@@ -138,7 +125,6 @@ class SpeechService {
|
|
|
138
125
|
this.stop();
|
|
139
126
|
}
|
|
140
127
|
}
|
|
141
|
-
// セッション選択時の自動音声入力制御(Speech APIは止めない)
|
|
142
128
|
selectSession(sessionId) {
|
|
143
129
|
const prevId = this.selectedSessionId();
|
|
144
130
|
this.selectedSessionId.set(sessionId);
|
|
@@ -148,12 +134,10 @@ class SpeechService {
|
|
|
148
134
|
this.stop();
|
|
149
135
|
return;
|
|
150
136
|
}
|
|
151
|
-
// セッション切り替え時: 前のテキストを確定→書き込み先は各コンポーネントが切り替える
|
|
152
137
|
if (prevId && prevId !== sessionId) {
|
|
153
138
|
this.finalizeCurrentTranscript();
|
|
154
139
|
}
|
|
155
140
|
}
|
|
156
|
-
// 書き込み先の切り替え専用(Speech APIは触らない)
|
|
157
141
|
activateComponent(componentId) {
|
|
158
142
|
if (this.activeComponentId() === componentId)
|
|
159
143
|
return;
|
|
@@ -176,7 +160,6 @@ class SpeechService {
|
|
|
176
160
|
if (this.ignoreResults)
|
|
177
161
|
return;
|
|
178
162
|
this.lastKnownResultsLength = event.results.length;
|
|
179
|
-
// auto mode clear後: threshold未満のresultをスキップ
|
|
180
163
|
const startIndex = Math.max(event.resultIndex, this.resultIndexThreshold);
|
|
181
164
|
if (startIndex >= event.results.length)
|
|
182
165
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-services-speech.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/speech/speech-recognition-utils.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/speech.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/xxmachina-common-services-speech.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\n\n/**\n * SpeechRecognition APIの初期化\n */\nexport function initializeSpeechRecognitionAPI(): SpeechRecognition | null {\n if (typeof window === 'undefined') return null;\n if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) {\n console.warn('[SpeechService] SpeechRecognition API is not supported in this browser');\n return null;\n }\n\n const SpeechRecognitionAPI = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\n const recognition = new SpeechRecognitionAPI();\n recognition.continuous = true;\n recognition.interimResults = true;\n recognition.lang = 'ja-JP';\n return recognition;\n}\n\n/**\n * SpeechRecognitionイベントをパースして中間結果と確定結果を返す\n * @param startIndex - 読み取り開始インデックス(指定時はevent.resultIndexより優先)\n */\nexport function parseSpeechRecognitionEvent(\n event: SpeechRecognitionEvent,\n startIndex?: number,\n): { interim: string; finalized: string } {\n const from = startIndex ?? event.resultIndex;\n const results: SpeechRecognitionAlternative[] = [];\n for (let i = from; i < event.results.length; i++) {\n results.push({\n transcript: event.results[i][0].transcript,\n confidence: event.results[i][0].confidence,\n isFinal: event.results[i].isFinal,\n } as any);\n }\n return {\n interim: results.filter((result: any) => !result.isFinal).map((result) => result.transcript).join(''),\n finalized: results.filter((result: any) => result.isFinal).map((result) => result.transcript).join(''),\n };\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\nimport { Injectable, signal, effect, computed } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { filter, interval } from 'rxjs';\nimport { initializeSpeechRecognitionAPI, parseSpeechRecognitionEvent } from './speech-recognition-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SpeechService {\n private static instanceCounter = 0;\n private readonly PAUSE_THRESHOLD = 1000;\n private recognition: SpeechRecognition | null = null;\n private lastSpeechTime = signal(Date.now());\n private ignoreResults = false;\n private lastKnownResultsLength = 0;\n private resultIndexThreshold = 0;\n\n readonly transcript = signal<{ finalized: string; interim: string }>({ finalized: '', interim: '' });\n readonly transcript$ = toObservable(this.transcript);\n readonly isListening = signal(false);\n readonly activeComponentId = signal<string | null>(null);\n readonly isSupported = typeof window !== 'undefined' &&\n (('SpeechRecognition' in window) || ('webkitSpeechRecognition' in window));\n\n readonly finalized = computed(() => this.transcript().finalized);\n readonly finalized$ = toObservable(this.finalized);\n\n // 自動モード: セッション選択時に自動的に音声入力を開始\n readonly autoModeEnabled = signal(false);\n // 選択中のセッションID(自動音声入力制御用)\n readonly selectedSessionId = signal<string | null>(null);\n\n constructor() {\n interval(this.PAUSE_THRESHOLD).pipe(\n filter(() => this.isListening() && (Date.now() - this.lastSpeechTime()) >= this.PAUSE_THRESHOLD),\n ).subscribe(() => {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n });\n\n effect(() => {\n if (!this.isListening()) {\n this.stopRecognition();\n }\n });\n }\n\n generateComponentId(): string {\n return `speech-${++SpeechService.instanceCounter}`;\n }\n\n isActiveComponent(componentId: string): boolean {\n return this.activeComponentId() === componentId;\n }\n\n start(componentId: string): void {\n if (!this.isSupported) {\n console.warn('[SpeechService] Speech recognition is not supported');\n return;\n }\n this.stopRecognition();\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n this.isListening.set(true);\n this.startRecognition();\n }\n\n stop(): void {\n this.isListening.set(false);\n this.activeComponentId.set(null);\n }\n\n toggle(componentId: string): void {\n if (this.isActiveComponent(componentId) && this.isListening()) {\n this.stop();\n } else {\n this.start(componentId);\n }\n }\n\n clear(): void {\n this.transcript.set({ interim: '', finalized: '' });\n\n if (this.autoModeEnabled() && this.recognition && this.isListening()) {\n // Auto mode: Speech APIを止めない。result indexで古い結果をフィルタ\n this.resultIndexThreshold = this.lastKnownResultsLength;\n return;\n }\n\n // Non-auto mode: stop → onend → restart で確実にリセット\n this.ignoreResults = true;\n if (this.recognition && this.isListening()) {\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error restarting recognition:', error);\n }\n }\n }\n\n // 自動モードのトグル\n toggleAutoMode(enabled: boolean): void {\n this.autoModeEnabled.set(enabled);\n if (enabled) {\n // 自動モードON → セッション選択済みならSpeech API有効化\n if (this.selectedSessionId()) {\n this.isListening.set(true);\n this.startRecognition();\n }\n } else {\n this.stop();\n }\n }\n\n // セッション選択時の自動音声入力制御(Speech APIは止めない)\n selectSession(sessionId: string | null): void {\n const prevId = this.selectedSessionId();\n this.selectedSessionId.set(sessionId);\n if (!this.autoModeEnabled()) return;\n\n if (!sessionId) {\n this.stop();\n return;\n }\n\n // セッション切り替え時: 前のテキストを確定→書き込み先は各コンポーネントが切り替える\n if (prevId && prevId !== sessionId) {\n this.finalizeCurrentTranscript();\n }\n }\n\n // 書き込み先の切り替え専用(Speech APIは触らない)\n activateComponent(componentId: string): void {\n if (this.activeComponentId() === componentId) return;\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n }\n\n private finalizeCurrentTranscript(): void {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n }\n\n private setupRecognition(): void {\n if (!this.isSupported) return;\n\n this.recognition = initializeSpeechRecognitionAPI();\n if (!this.recognition) return;\n\n this.recognition.onresult = (event: SpeechRecognitionEvent) => {\n if (this.ignoreResults) return;\n this.lastKnownResultsLength = event.results.length;\n\n // auto mode clear後: threshold未満のresultをスキップ\n const startIndex = Math.max(event.resultIndex, this.resultIndexThreshold);\n if (startIndex >= event.results.length) return;\n\n const { interim, finalized } = parseSpeechRecognitionEvent(event, startIndex);\n this.transcript.update((current) => ({\n interim,\n finalized: finalized.length ? `${current.finalized}${finalized}` : current.finalized\n }));\n this.lastSpeechTime.set(Date.now());\n };\n\n this.recognition.onerror = (event: SpeechRecognitionErrorEvent) => {\n console.error('[SpeechService] Recognition error:', event.error);\n if (event.error === 'not-allowed') {\n this.stop();\n }\n };\n\n this.recognition.onend = () => {\n if (this.isListening()) {\n this.startRecognition();\n }\n };\n }\n\n private startRecognition(): void {\n this.ignoreResults = false;\n this.resultIndexThreshold = 0;\n this.lastKnownResultsLength = 0;\n if (!this.recognition) {\n this.setupRecognition();\n }\n\n try {\n this.recognition?.start();\n } catch (error) {\n console.error('[SpeechService] Failed to start recognition:', error);\n this.recognition = null;\n this.setupRecognition();\n (this.recognition as SpeechRecognition | null)?.start();\n }\n }\n\n private stopRecognition(): void {\n if (this.recognition) {\n this.recognition.onend = null;\n this.recognition.onresult = null;\n this.recognition.onerror = null;\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error stopping recognition:', error);\n }\n this.recognition = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xxmachina-common-services-speech.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/speech/speech-recognition-utils.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/speech.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/xxmachina-common-services-speech.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\n\n\nexport function initializeSpeechRecognitionAPI(): SpeechRecognition | null {\n if (typeof window === 'undefined') return null;\n if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) {\n console.warn('[SpeechService] SpeechRecognition API is not supported in this browser');\n return null;\n }\n\n const SpeechRecognitionAPI = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\n const recognition = new SpeechRecognitionAPI();\n recognition.continuous = true;\n recognition.interimResults = true;\n recognition.lang = 'ja-JP';\n return recognition;\n}\n\n\nexport function parseSpeechRecognitionEvent(\n event: SpeechRecognitionEvent,\n startIndex?: number,\n): { interim: string; finalized: string } {\n const from = startIndex ?? event.resultIndex;\n const results: SpeechRecognitionAlternative[] = [];\n for (let i = from; i < event.results.length; i++) {\n results.push({\n transcript: event.results[i][0].transcript,\n confidence: event.results[i][0].confidence,\n isFinal: event.results[i].isFinal,\n } as any);\n }\n return {\n interim: results.filter((result: any) => !result.isFinal).map((result) => result.transcript).join(''),\n finalized: results.filter((result: any) => result.isFinal).map((result) => result.transcript).join(''),\n };\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\nimport { Injectable, signal, effect, computed } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { filter, interval } from 'rxjs';\nimport { initializeSpeechRecognitionAPI, parseSpeechRecognitionEvent } from './speech-recognition-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SpeechService {\n private static instanceCounter = 0;\n private readonly PAUSE_THRESHOLD = 1000;\n private recognition: SpeechRecognition | null = null;\n private lastSpeechTime = signal(Date.now());\n private ignoreResults = false;\n private lastKnownResultsLength = 0;\n private resultIndexThreshold = 0;\n\n readonly transcript = signal<{ finalized: string; interim: string }>({ finalized: '', interim: '' });\n readonly transcript$ = toObservable(this.transcript);\n readonly isListening = signal(false);\n readonly activeComponentId = signal<string | null>(null);\n readonly isSupported = typeof window !== 'undefined' &&\n (('SpeechRecognition' in window) || ('webkitSpeechRecognition' in window));\n\n readonly finalized = computed(() => this.transcript().finalized);\n readonly finalized$ = toObservable(this.finalized);\n\n \n readonly autoModeEnabled = signal(false);\n \n readonly selectedSessionId = signal<string | null>(null);\n\n constructor() {\n interval(this.PAUSE_THRESHOLD).pipe(\n filter(() => this.isListening() && (Date.now() - this.lastSpeechTime()) >= this.PAUSE_THRESHOLD),\n ).subscribe(() => {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n });\n\n effect(() => {\n if (!this.isListening()) {\n this.stopRecognition();\n }\n });\n }\n\n generateComponentId(): string {\n return `speech-${++SpeechService.instanceCounter}`;\n }\n\n isActiveComponent(componentId: string): boolean {\n return this.activeComponentId() === componentId;\n }\n\n start(componentId: string): void {\n if (!this.isSupported) {\n console.warn('[SpeechService] Speech recognition is not supported');\n return;\n }\n this.stopRecognition();\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n this.isListening.set(true);\n this.startRecognition();\n }\n\n stop(): void {\n this.isListening.set(false);\n this.activeComponentId.set(null);\n }\n\n toggle(componentId: string): void {\n if (this.isActiveComponent(componentId) && this.isListening()) {\n this.stop();\n } else {\n this.start(componentId);\n }\n }\n\n clear(): void {\n this.transcript.set({ interim: '', finalized: '' });\n\n if (this.autoModeEnabled() && this.recognition && this.isListening()) {\n \n this.resultIndexThreshold = this.lastKnownResultsLength;\n return;\n }\n\n \n this.ignoreResults = true;\n if (this.recognition && this.isListening()) {\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error restarting recognition:', error);\n }\n }\n }\n\n \n toggleAutoMode(enabled: boolean): void {\n this.autoModeEnabled.set(enabled);\n if (enabled) {\n \n if (this.selectedSessionId()) {\n this.isListening.set(true);\n this.startRecognition();\n }\n } else {\n this.stop();\n }\n }\n\n \n selectSession(sessionId: string | null): void {\n const prevId = this.selectedSessionId();\n this.selectedSessionId.set(sessionId);\n if (!this.autoModeEnabled()) return;\n\n if (!sessionId) {\n this.stop();\n return;\n }\n\n \n if (prevId && prevId !== sessionId) {\n this.finalizeCurrentTranscript();\n }\n }\n\n \n activateComponent(componentId: string): void {\n if (this.activeComponentId() === componentId) return;\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n }\n\n private finalizeCurrentTranscript(): void {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n }\n\n private setupRecognition(): void {\n if (!this.isSupported) return;\n\n this.recognition = initializeSpeechRecognitionAPI();\n if (!this.recognition) return;\n\n this.recognition.onresult = (event: SpeechRecognitionEvent) => {\n if (this.ignoreResults) return;\n this.lastKnownResultsLength = event.results.length;\n\n \n const startIndex = Math.max(event.resultIndex, this.resultIndexThreshold);\n if (startIndex >= event.results.length) return;\n\n const { interim, finalized } = parseSpeechRecognitionEvent(event, startIndex);\n this.transcript.update((current) => ({\n interim,\n finalized: finalized.length ? `${current.finalized}${finalized}` : current.finalized\n }));\n this.lastSpeechTime.set(Date.now());\n };\n\n this.recognition.onerror = (event: SpeechRecognitionErrorEvent) => {\n console.error('[SpeechService] Recognition error:', event.error);\n if (event.error === 'not-allowed') {\n this.stop();\n }\n };\n\n this.recognition.onend = () => {\n if (this.isListening()) {\n this.startRecognition();\n }\n };\n }\n\n private startRecognition(): void {\n this.ignoreResults = false;\n this.resultIndexThreshold = 0;\n this.lastKnownResultsLength = 0;\n if (!this.recognition) {\n this.setupRecognition();\n }\n\n try {\n this.recognition?.start();\n } catch (error) {\n console.error('[SpeechService] Failed to start recognition:', error);\n this.recognition = null;\n this.setupRecognition();\n (this.recognition as SpeechRecognition | null)?.start();\n }\n }\n\n private stopRecognition(): void {\n if (this.recognition) {\n this.recognition.onend = null;\n this.recognition.onresult = null;\n this.recognition.onerror = null;\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error stopping recognition:', error);\n }\n this.recognition = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -52,9 +52,6 @@ class DatabaseService {
|
|
|
52
52
|
return new ErBuilder().build(databases);
|
|
53
53
|
}
|
|
54
54
|
async getPageItems(dbId, name) {
|
|
55
|
-
// const dbDetails = await this.notion.retrieveDatabase(dbId);
|
|
56
|
-
// const items = listDatabaseProperties(dbDetails, name);
|
|
57
|
-
// return items;
|
|
58
55
|
return [];
|
|
59
56
|
}
|
|
60
57
|
async getParent(parent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-usecase-database.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/database/database.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/database/xxmachina-common-usecase-database.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { ErBuilder } from '@xxmachina/common/domain/builder';\nimport { ScreenItemBuilder } from '@xxmachina/common/domain/builder/screen-item';\nimport { Database, ScreenItem } from '@xxmachina/common/domain/models';\nimport { omit } from 'lodash-es';\nimport { injectNotion } from '@nx-ddd/notion';\n\nfunction listDatabaseProperties(database: Database, dbName: string): ScreenItem[] {\n return new ScreenItemBuilder().build(database).map(item => ({...item, dbName}));\n}\n\nexport interface DatabaseConfig {\n notionApiKey: string;\n databaseIdToName: { [key: string]: string };\n}\n\nconst DATABASE_CONFIG = new InjectionToken<DatabaseConfig>('DATABASE_CONFIG');\n\nexport function provideDatabaseConfig(useFactory: () => DatabaseConfig) {\n return { provide: DATABASE_CONFIG, useFactory };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DatabaseService {\n private config = inject(DATABASE_CONFIG);\n private notion = injectNotion();\n\n async get(databaseId: string) {\n return this.notion!.retrieveDatabase(databaseId);\n }\n\n async update(databaseId: string, body: any) {\n return this.notion!.updateDatabase(databaseId, omit({\n ...body.properties,\n }, []));\n }\n\n async listDatabases() {\n let start_cursor: string | undefined;\n const databases: any[] = [];\n\n while (true) {\n const _databases = await this.notion!.search({\n filter: {\n property: 'object',\n value: 'database',\n },\n start_cursor,\n });\n for (const db of _databases.results) {\n databases.push({\n ...db,\n _title: (db as any)['title']?.[0]?.plain_text,\n });\n }\n\n if (!_databases.has_more) break;\n start_cursor = _databases.next_cursor as string | undefined;\n }\n\n const resolve = async (item: any) => ({...item, path: await this.getPath(item)});\n\n return Promise.all(databases.map(db => resolve(db)));\n }\n\n async generateMermaidER(): Promise<string> {\n const databases = await this.listDatabases();\n return new ErBuilder().build(databases); \n }\n\n async getPageItems(dbId: string, name: string) {\n
|
|
1
|
+
{"version":3,"file":"xxmachina-common-usecase-database.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/database/database.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/database/xxmachina-common-usecase-database.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { ErBuilder } from '@xxmachina/common/domain/builder';\nimport { ScreenItemBuilder } from '@xxmachina/common/domain/builder/screen-item';\nimport { Database, ScreenItem } from '@xxmachina/common/domain/models';\nimport { omit } from 'lodash-es';\nimport { injectNotion } from '@nx-ddd/notion';\n\nfunction listDatabaseProperties(database: Database, dbName: string): ScreenItem[] {\n return new ScreenItemBuilder().build(database).map(item => ({...item, dbName}));\n}\n\nexport interface DatabaseConfig {\n notionApiKey: string;\n databaseIdToName: { [key: string]: string };\n}\n\nconst DATABASE_CONFIG = new InjectionToken<DatabaseConfig>('DATABASE_CONFIG');\n\nexport function provideDatabaseConfig(useFactory: () => DatabaseConfig) {\n return { provide: DATABASE_CONFIG, useFactory };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DatabaseService {\n private config = inject(DATABASE_CONFIG);\n private notion = injectNotion();\n\n async get(databaseId: string) {\n return this.notion!.retrieveDatabase(databaseId);\n }\n\n async update(databaseId: string, body: any) {\n return this.notion!.updateDatabase(databaseId, omit({\n ...body.properties,\n }, []));\n }\n\n async listDatabases() {\n let start_cursor: string | undefined;\n const databases: any[] = [];\n\n while (true) {\n const _databases = await this.notion!.search({\n filter: {\n property: 'object',\n value: 'database',\n },\n start_cursor,\n });\n for (const db of _databases.results) {\n databases.push({\n ...db,\n _title: (db as any)['title']?.[0]?.plain_text,\n });\n }\n\n if (!_databases.has_more) break;\n start_cursor = _databases.next_cursor as string | undefined;\n }\n\n const resolve = async (item: any) => ({...item, path: await this.getPath(item)});\n\n return Promise.all(databases.map(db => resolve(db)));\n }\n\n async generateMermaidER(): Promise<string> {\n const databases = await this.listDatabases();\n return new ErBuilder().build(databases); \n }\n\n async getPageItems(dbId: string, name: string) {\n \n \n \n return [];\n }\n\n async getParent(parent: {\n type: 'database_id',\n database_id: string\n } | {\n type: 'page_id',\n page_id: string\n } | {\n type: 'block_id',\n block_id: string\n }) {\n switch (parent.type) {\n case 'database_id': return this.notion!.retrieveDatabase(parent.database_id)\n case 'page_id': return this.notion!.retrievePage(parent.page_id);\n case 'block_id': return this.notion!.retrieveBlock(parent.block_id);\n }\n }\n\n async getPath(obj: any) {\n const objects = [obj];\n return objects.map(obj => getTitle(obj)).filter(Boolean).reverse().join('/');\n }\n}\n\nfunction getTitle(obj: any) {\n if (obj.object === 'page') {\n return obj.properties?.title?.title?.[0]?.plain_text;\n } else if (obj.object === 'database') {\n return obj._title;\n } else {\n return null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAOA,SAAS,sBAAsB,CAAC,QAAkB,EAAE,MAAc,EAAA;IAChE,OAAO,IAAI,iBAAiB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;AACjF;AAOA,MAAM,eAAe,GAAG,IAAI,cAAc,CAAiB,iBAAiB,CAAC;AAEvE,SAAU,qBAAqB,CAAC,UAAgC,EAAA;AACpE,IAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE;AACjD;MAGa,eAAe,CAAA;AAClB,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAChC,MAAM,GAAG,YAAY,EAAE;IAE/B,MAAM,GAAG,CAAC,UAAkB,EAAA;QAC1B,OAAO,IAAI,CAAC,MAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC;IAClD;AAEA,IAAA,MAAM,MAAM,CAAC,UAAkB,EAAE,IAAS,EAAA;QACxC,OAAO,IAAI,CAAC,MAAO,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;YAClD,GAAG,IAAI,CAAC,UAAU;SACnB,EAAE,EAAE,CAAC,CAAC;IACT;AAEA,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,IAAI,YAAgC;QACpC,MAAM,SAAS,GAAU,EAAE;QAE3B,OAAO,IAAI,EAAE;YACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAO,CAAC,MAAM,CAAC;AAC3C,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,KAAK,EAAE,UAAU;AAClB,iBAAA;gBACD,YAAY;AACb,aAAA,CAAC;AACF,YAAA,KAAK,MAAM,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE;gBACnC,SAAS,CAAC,IAAI,CAAC;AACb,oBAAA,GAAG,EAAE;oBACL,MAAM,EAAG,EAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU;AAC9C,iBAAA,CAAC;YACJ;YAEA,IAAI,CAAC,UAAU,CAAC,QAAQ;gBAAE;AAC1B,YAAA,YAAY,GAAG,UAAU,CAAC,WAAiC;QAC7D;QAEA,MAAM,OAAO,GAAG,OAAO,IAAS,MAAM,EAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,CAAC;AAEhF,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD;AAEA,IAAA,MAAM,iBAAiB,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QAC5C,OAAO,IAAI,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACzC;AAEA,IAAA,MAAM,YAAY,CAAC,IAAY,EAAE,IAAY,EAAA;AAI3C,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,SAAS,CAAC,MASf,EAAA;AACC,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,MAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC;AAC5E,YAAA,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,MAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAChE,YAAA,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,MAAO,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;;IAEvE;IAEA,MAAM,OAAO,CAAC,GAAQ,EAAA;AACpB,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;QACrB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9E;uGA1EW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AA8ElC,SAAS,QAAQ,CAAC,GAAQ,EAAA;AACxB,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;AACzB,QAAA,OAAO,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU;IACtD;AAAO,SAAA,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;QACpC,OAAO,GAAG,CAAC,MAAM;IACnB;SAAO;AACL,QAAA,OAAO,IAAI;IACb;AACF;;AC5GA;;AAEG;;;;"}
|
|
@@ -19,7 +19,6 @@ class GraphqlService {
|
|
|
19
19
|
dc = injectDataConnectService();
|
|
20
20
|
constructor() { }
|
|
21
21
|
async graphql(query) {
|
|
22
|
-
// return lastValueFrom(this.http.post('http://localhost:3330/api/dataConnect', {query}));
|
|
23
22
|
return this.dc.executeGraphqlRead(query);
|
|
24
23
|
}
|
|
25
24
|
async makeQuery(instructions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-usecase-graphql.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/xxmachina-common-usecase-graphql.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query!: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n
|
|
1
|
+
{"version":3,"file":"xxmachina-common-usecase-graphql.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/xxmachina-common-usecase-graphql.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query!: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n \n return this.dc.executeGraphqlRead(query);\n }\n\n async makeQuery(instructions: string) {\n const schemaQuery = `{ __schema { types { name fields { name type { name } } } } }`;\n const schemaResult = await this.graphql(schemaQuery);\n return this.anyFunc.call(instructions, Result, {\n instructions: `\n アシスタントはユーザーの要求を満たすGraphQLクエリを下記のサーバーのスキーマを元に生成します。\n\n ${JSON.stringify(schemaResult, null, 2)}\n `,\n model: 'gpt-4o-mini',\n validator: async (output: any) => this.graphql(output.query).then(() => []).catch(error => [error.message]),\n }).then((result: any) => result.query);\n }\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA,MAAM,MAAM,CAAA;AAEV,IAAA,KAAK;AACN;AADC,UAAA,CAAA;AADC,IAAA,QAAQ,EAAE;;AACI,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;MAIJ,cAAc,CAAA;AACf,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IACzB,OAAO,GAAG,aAAa,EAAE;IACzB,EAAE,GAAG,wBAAwB,EAAE;AAEzC,IAAA,WAAA,GAAA,EAAe;IAEf,MAAM,OAAO,CAAC,KAAa,EAAA;QAEzB,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC1C;IAEA,MAAM,SAAS,CAAC,YAAoB,EAAA;QAClC,MAAM,WAAW,GAAG,CAAA,6DAAA,CAA+D;QACnF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;AAC7C,YAAA,YAAY,EAAE;;;UAGV,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,MAAA,CAAA;AACD,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,SAAS,EAAE,OAAO,MAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5G,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,KAAK,CAAC;IACxC;uGAxBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;2FAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACXhC;;AAEG;;;;"}
|
|
@@ -136,7 +136,6 @@ class GraphqlService {
|
|
|
136
136
|
dc = injectDataConnectService();
|
|
137
137
|
constructor() { }
|
|
138
138
|
async graphql(query) {
|
|
139
|
-
// return lastValueFrom(this.http.post('http://localhost:3330/api/dataConnect', {query}));
|
|
140
139
|
return this.dc.executeGraphqlRead(query);
|
|
141
140
|
}
|
|
142
141
|
async makeQuery(instructions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-usecase.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/assistant/assistant.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/spec/spec.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/project/project.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/usecase.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/xxmachina-common-usecase.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { AssistantOperator } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n\n@Injectable({providedIn: 'root'})\nexport class AssistantService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<AssistantOperator[]> {\n return await this.infra.repo.redis.operator.list() as AssistantOperator[];\n }\n\n async create(assistant: AssistantOperator): Promise<AssistantOperator> {\n return this.infra.repo.redis.operator.create(assistant) as any;\n }\n\n async update(assistant: AssistantOperator): Promise<void> {\n return this.infra.repo.redis.operator.update(assistant);\n }\n\n async delete(assistantid: string): Promise<void> {\n return this.infra.repo.redis.operator.delete(assistantid);\n }\n\n async operate(assistantId: string, input: string): Promise<string> {\n const project = await this.infra.repo.redis.project.get('default');\n const assistant = await this.infra.repo.redis.operator.get(assistantId);\n const adapter = this.infra.external.getAiAdapter(project.settings.ai)\n const embeddings = await adapter.embedding(input);\n const specs = await this.infra.repo.redis.spec.search(assistant.id, embeddings);\n\n const messages = [\n {role: 'system', content: assistant.description},\n ...specs.map(spec => [\n {role: 'system', content: spec.input},\n {role: 'assistant', content: spec.output},\n ]).flat(),\n {role: 'user', content: input},\n ];\n\n console.debug('messages', messages);\n const output_ = await adapter.chatComplete(messages);\n const output = this.scrape(assistant.outputInterfaceId, output_);\n await this.infra.repo.redis.spec.create({\n input, output, embeddings, id: hash(input), operatorId: assistant.id,\n }).catch(() => {});\n\n return output;\n }\n\n private scrape(interface_: string, output: string): string {\n if (interface_ === 'interface:codeblock') {\n const [_, ...lines] = (output.split('```')?.[1] ?? '').split('\\n');\n return `\\`\\`\\`\\n${lines.join('\\n')}\\n\\`\\`\\``;\n } else {\n return output;\n }\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Spec } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n@Injectable({providedIn: 'root'})\nexport class SpecService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Spec[]> {\n return this.infra.repo.redis.spec.list();\n }\n\n async get(id: string): Promise<Spec> {\n return this.infra.repo.redis.spec.get(id);\n }\n\n async create(spec: Spec): Promise<Spec> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n return this.infra.repo.redis.spec.create({...spec, embeddings, id: hash(spec.input)});\n }\n\n async update(spec: Partial<Spec>): Promise<void> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n if (spec.id !== hash(spec.input as string)) throw new Error('id is not match with input hash');\n return this.infra.repo.redis.spec.update({...spec, embeddings});\n }\n\n async delete(id: string): Promise<void> {\n return this.infra.repo.redis.spec.delete(id);\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { Project } from \"@xxmachina/common/domain/models\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\n\n\n@Injectable({providedIn: 'root'})\nexport class ProjectService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Project[]> {\n return await this.infra.repo.redis.project.list() as Project[];\n }\n\n async get(projectId: string): Promise<Project> {\n return this.infra.repo.redis.project.get(projectId);\n }\n\n async create(project: Project): Promise<Project> {\n return this.infra.repo.redis.project.create(project);\n }\n\n async update(project: Project): Promise<void> {\n return this.infra.repo.redis.project.update(project);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query!: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n // return lastValueFrom(this.http.post('http://localhost:3330/api/dataConnect', {query}));\n return this.dc.executeGraphqlRead(query);\n }\n\n async makeQuery(instructions: string) {\n const schemaQuery = `{ __schema { types { name fields { name type { name } } } } }`;\n const schemaResult = await this.graphql(schemaQuery);\n return this.anyFunc.call(instructions, Result, {\n instructions: `\n アシスタントはユーザーの要求を満たすGraphQLクエリを下記のサーバーのスキーマを元に生成します。\n\n ${JSON.stringify(schemaResult, null, 2)}\n `,\n model: 'gpt-4o-mini',\n validator: async (output: any) => this.graphql(output.query).then(() => []).catch(error => [error.message]),\n }).then((result: any) => result.query);\n }\n\n}","import { inject, Injectable } from \"@angular/core\";\nimport { AssistantService } from \"./assistant\";\nimport { SpecService } from \"./spec\";\nimport { ProjectService } from \"./project\";\nimport { GraphqlService } from \"./graphql\";\n\n@Injectable({providedIn: 'root'})\nexport class UsecaseService {\n readonly assistant = inject(AssistantService)\n readonly project = inject(ProjectService)\n readonly spec = inject(SpecService)\n readonly graphql = inject(GraphqlService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xxmachina-common-usecase.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/assistant/assistant.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/spec/spec.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/project/project.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/usecase.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/xxmachina-common-usecase.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { AssistantOperator } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n\n@Injectable({providedIn: 'root'})\nexport class AssistantService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<AssistantOperator[]> {\n return await this.infra.repo.redis.operator.list() as AssistantOperator[];\n }\n\n async create(assistant: AssistantOperator): Promise<AssistantOperator> {\n return this.infra.repo.redis.operator.create(assistant) as any;\n }\n\n async update(assistant: AssistantOperator): Promise<void> {\n return this.infra.repo.redis.operator.update(assistant);\n }\n\n async delete(assistantid: string): Promise<void> {\n return this.infra.repo.redis.operator.delete(assistantid);\n }\n\n async operate(assistantId: string, input: string): Promise<string> {\n const project = await this.infra.repo.redis.project.get('default');\n const assistant = await this.infra.repo.redis.operator.get(assistantId);\n const adapter = this.infra.external.getAiAdapter(project.settings.ai)\n const embeddings = await adapter.embedding(input);\n const specs = await this.infra.repo.redis.spec.search(assistant.id, embeddings);\n\n const messages = [\n {role: 'system', content: assistant.description},\n ...specs.map(spec => [\n {role: 'system', content: spec.input},\n {role: 'assistant', content: spec.output},\n ]).flat(),\n {role: 'user', content: input},\n ];\n\n console.debug('messages', messages);\n const output_ = await adapter.chatComplete(messages);\n const output = this.scrape(assistant.outputInterfaceId, output_);\n await this.infra.repo.redis.spec.create({\n input, output, embeddings, id: hash(input), operatorId: assistant.id,\n }).catch(() => {});\n\n return output;\n }\n\n private scrape(interface_: string, output: string): string {\n if (interface_ === 'interface:codeblock') {\n const [_, ...lines] = (output.split('```')?.[1] ?? '').split('\\n');\n return `\\`\\`\\`\\n${lines.join('\\n')}\\n\\`\\`\\``;\n } else {\n return output;\n }\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Spec } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n@Injectable({providedIn: 'root'})\nexport class SpecService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Spec[]> {\n return this.infra.repo.redis.spec.list();\n }\n\n async get(id: string): Promise<Spec> {\n return this.infra.repo.redis.spec.get(id);\n }\n\n async create(spec: Spec): Promise<Spec> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n return this.infra.repo.redis.spec.create({...spec, embeddings, id: hash(spec.input)});\n }\n\n async update(spec: Partial<Spec>): Promise<void> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n if (spec.id !== hash(spec.input as string)) throw new Error('id is not match with input hash');\n return this.infra.repo.redis.spec.update({...spec, embeddings});\n }\n\n async delete(id: string): Promise<void> {\n return this.infra.repo.redis.spec.delete(id);\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { Project } from \"@xxmachina/common/domain/models\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\n\n\n@Injectable({providedIn: 'root'})\nexport class ProjectService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Project[]> {\n return await this.infra.repo.redis.project.list() as Project[];\n }\n\n async get(projectId: string): Promise<Project> {\n return this.infra.repo.redis.project.get(projectId);\n }\n\n async create(project: Project): Promise<Project> {\n return this.infra.repo.redis.project.create(project);\n }\n\n async update(project: Project): Promise<void> {\n return this.infra.repo.redis.project.update(project);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query!: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n \n return this.dc.executeGraphqlRead(query);\n }\n\n async makeQuery(instructions: string) {\n const schemaQuery = `{ __schema { types { name fields { name type { name } } } } }`;\n const schemaResult = await this.graphql(schemaQuery);\n return this.anyFunc.call(instructions, Result, {\n instructions: `\n アシスタントはユーザーの要求を満たすGraphQLクエリを下記のサーバーのスキーマを元に生成します。\n\n ${JSON.stringify(schemaResult, null, 2)}\n `,\n model: 'gpt-4o-mini',\n validator: async (output: any) => this.graphql(output.query).then(() => []).catch(error => [error.message]),\n }).then((result: any) => result.query);\n }\n\n}","import { inject, Injectable } from \"@angular/core\";\nimport { AssistantService } from \"./assistant\";\nimport { SpecService } from \"./spec\";\nimport { ProjectService } from \"./project\";\nimport { GraphqlService } from \"./graphql\";\n\n@Injectable({providedIn: 'root'})\nexport class UsecaseService {\n readonly assistant = inject(AssistantService)\n readonly project = inject(ProjectService)\n readonly spec = inject(SpecService)\n readonly graphql = inject(GraphqlService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
// JSONスキーマを受け取り、表示項目のリストを生成する関数
|
|
2
1
|
function extractDisplayFields(schema, prefix = '', childrenKey = 'children') {
|
|
3
2
|
const fields = [];
|
|
4
3
|
if (schema.type === 'object' && schema.properties) {
|
|
5
4
|
for (const key in schema.properties) {
|
|
6
5
|
const propertySchema = schema.properties[key];
|
|
7
6
|
const path = prefix ? `${prefix}.${key}` : key;
|
|
8
|
-
// anyOfを処理
|
|
9
7
|
if (propertySchema.anyOf) {
|
|
10
8
|
propertySchema.anyOf.forEach((subSchema) => {
|
|
11
9
|
if (subSchema.type === 'object' || subSchema.type === 'array') {
|
|
@@ -15,30 +13,24 @@ function extractDisplayFields(schema, prefix = '', childrenKey = 'children') {
|
|
|
15
13
|
});
|
|
16
14
|
}
|
|
17
15
|
else if (propertySchema.type === 'array' && propertySchema.items) {
|
|
18
|
-
// 配列を処理
|
|
19
16
|
if (key === childrenKey) {
|
|
20
|
-
// childrenKeyに一致する場合、再帰的に処理
|
|
21
17
|
const arrayFields = extractDisplayFields(propertySchema.items, '', childrenKey);
|
|
22
18
|
fields.push(...arrayFields);
|
|
23
19
|
}
|
|
24
20
|
}
|
|
25
21
|
else if (propertySchema.type !== 'object') {
|
|
26
|
-
// 基本的なプロパティはそのまま追加
|
|
27
22
|
fields.push(path);
|
|
28
23
|
}
|
|
29
24
|
else {
|
|
30
|
-
// ネストされたオブジェクトに対して再帰的に呼び出す
|
|
31
25
|
const nestedFields = extractDisplayFields(propertySchema, path, childrenKey);
|
|
32
26
|
fields.push(...nestedFields);
|
|
33
27
|
}
|
|
34
|
-
// 特定のプロパティ(costAttribute)を処理
|
|
35
28
|
if (key === 'costAttribute' && propertySchema.type === 'object') {
|
|
36
29
|
fields.push(path);
|
|
37
30
|
}
|
|
38
31
|
}
|
|
39
32
|
}
|
|
40
33
|
else if (schema.type === 'array' && schema.items) {
|
|
41
|
-
// ルートが配列の場合を処理
|
|
42
34
|
const arrayFields = extractDisplayFields(schema.items, '', childrenKey);
|
|
43
35
|
fields.push(...arrayFields);
|
|
44
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-utils.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/utils/extract-display-fields.ts","../../../../../packages/@xxmachina/common/src/lib/utils/xxmachina-common-utils.ts"],"sourcesContent":["import { JsonSchema } from 'json-schema-library';\n\n
|
|
1
|
+
{"version":3,"file":"xxmachina-common-utils.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/utils/extract-display-fields.ts","../../../../../packages/@xxmachina/common/src/lib/utils/xxmachina-common-utils.ts"],"sourcesContent":["import { JsonSchema } from 'json-schema-library';\n\n\nexport function extractDisplayFields(schema: JsonSchema, prefix = '', childrenKey = 'children'): string[] {\n const fields: string[] = [];\n\n if (schema.type === 'object' && schema.properties) {\n for (const key in schema.properties) {\n const propertySchema = schema.properties[key];\n const path = prefix ? `${prefix}.${key}` : key;\n\n \n if (propertySchema.anyOf) {\n propertySchema.anyOf.forEach((subSchema: any) => {\n if (subSchema.type === 'object' || subSchema.type === 'array') {\n const nestedFields = extractDisplayFields(subSchema, path, childrenKey);\n fields.push(...nestedFields);\n }\n });\n } else if (propertySchema.type === 'array' && propertySchema.items) {\n \n if (key === childrenKey) {\n \n const arrayFields = extractDisplayFields(propertySchema.items, '', childrenKey);\n fields.push(...arrayFields);\n }\n } else if (propertySchema.type !== 'object') {\n \n fields.push(path);\n } else {\n \n const nestedFields = extractDisplayFields(propertySchema, path, childrenKey);\n fields.push(...nestedFields);\n }\n\n \n if (key === 'costAttribute' && propertySchema.type === 'object') {\n fields.push(path);\n }\n }\n } else if (schema.type === 'array' && schema.items) {\n \n const arrayFields = extractDisplayFields(schema.items, '', childrenKey);\n fields.push(...arrayFields);\n }\n\n return [...new Set(fields).keys()]\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAGM,SAAU,oBAAoB,CAAC,MAAkB,EAAE,MAAM,GAAG,EAAE,EAAE,WAAW,GAAG,UAAU,EAAA;IAC5F,MAAM,MAAM,GAAa,EAAE;IAE3B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;AACjD,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;YACnC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7C,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,GAAG;AAG9C,YAAA,IAAI,cAAc,CAAC,KAAK,EAAE;gBACxB,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAc,KAAI;AAC9C,oBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;wBAC7D,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC;AACvE,wBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;oBAC9B;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE;AAElE,gBAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AAEvB,oBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/E,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;gBAC7B;YACF;AAAO,iBAAA,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;AAE3C,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB;iBAAO;gBAEL,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC;AAC5E,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;YAC9B;YAGA,IAAI,GAAG,KAAK,eAAe,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB;QACF;IACF;SAAO,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE;AAElD,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AACvE,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAC7B;IAEA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC;;AC/CA;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xxmachina/common",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.81.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"@nestjs/common": "10.2.8",
|
|
14
14
|
"@nestjs/graphql": "^11.0.0",
|
|
15
15
|
"@nestjs/passport": "^9.0.3",
|
|
16
|
-
"@ng-atomic/common": "19.
|
|
17
|
-
"@ng-atomic/components": "19.
|
|
18
|
-
"@ng-atomic/core": "19.
|
|
19
|
-
"@nx-ddd/common": "19.
|
|
20
|
-
"@nx-ddd/core": "19.
|
|
16
|
+
"@ng-atomic/common": "19.81.0",
|
|
17
|
+
"@ng-atomic/components": "19.81.0",
|
|
18
|
+
"@ng-atomic/core": "19.81.0",
|
|
19
|
+
"@nx-ddd/common": "19.81.0",
|
|
20
|
+
"@nx-ddd/core": "19.81.0",
|
|
21
21
|
"@tfarras/nestjs-firebase-auth": "^2.0.0",
|
|
22
22
|
"apollo-angular": "^7.0.2",
|
|
23
23
|
"class-transformer": "^0.5.1",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"validate-azure-ad-token": "^2.2.0"
|
|
44
44
|
},
|
|
45
45
|
"optionalDependencies": {
|
|
46
|
-
"@nx-ddd/any-func": "19.
|
|
47
|
-
"@nx-ddd/firestore": "19.
|
|
48
|
-
"@nx-ddd/google": "19.
|
|
49
|
-
"@nx-ddd/hasura": "19.
|
|
50
|
-
"@nx-ddd/notion": "19.
|
|
46
|
+
"@nx-ddd/any-func": "19.81.0",
|
|
47
|
+
"@nx-ddd/firestore": "19.81.0",
|
|
48
|
+
"@nx-ddd/google": "19.81.0",
|
|
49
|
+
"@nx-ddd/hasura": "19.81.0",
|
|
50
|
+
"@nx-ddd/notion": "19.81.0",
|
|
51
51
|
"@notionhq/client": "^2.2.15"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
@@ -211,6 +211,10 @@
|
|
|
211
211
|
"types": "./types/xxmachina-common-invoice-usecase-partner.d.ts",
|
|
212
212
|
"default": "./fesm2022/xxmachina-common-invoice-usecase-partner.mjs"
|
|
213
213
|
},
|
|
214
|
+
"./services/device-profile": {
|
|
215
|
+
"types": "./types/xxmachina-common-services-device-profile.d.ts",
|
|
216
|
+
"default": "./fesm2022/xxmachina-common-services-device-profile.mjs"
|
|
217
|
+
},
|
|
214
218
|
"./services/graphql": {
|
|
215
219
|
"types": "./types/xxmachina-common-services-graphql.d.ts",
|
|
216
220
|
"default": "./fesm2022/xxmachina-common-services-graphql.mjs"
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 「画面全体クリア相当」の ANSI エスケープシーケンス一覧。
|
|
3
|
-
*
|
|
4
|
-
* accumulator / outputBuffer を truncate する判定に使う。
|
|
5
|
-
* client 側 `session-qtp.feature.ts` と server 側 `pty-data-handler.ts` が
|
|
6
|
-
* 同じ semantics を持つため、ここで単一 source of truth として定義する。
|
|
7
|
-
*
|
|
8
|
-
* 除外されるもの(履歴欠落防止のため):
|
|
9
|
-
* - `\x1b[?1049h` / `\x1b[?1049l`: alt screen 切替。xterm では main/alt を両方保持。
|
|
10
|
-
* truncate すると main/alt の履歴が欠落し xterm が正しく切替復元できない。
|
|
11
|
-
* - `\x1b[H\x1b[J` / `\x1b[H\x1b[0J`: cursor home + eraseDown。Ink / log-update 系の
|
|
12
|
-
* 差分 rendering でも使われ、全画面クリアとは限らない。過剰検出で会話履歴が消える。
|
|
13
|
-
*
|
|
14
|
-
* 関連設計: `projects/@machina.at/components/docs/design/fix/20260425_qtp-clear-sequences-sync.md`
|
|
15
|
-
*/
|
|
16
1
|
declare const CLEAR_SEQUENCES: readonly string[];
|
|
17
2
|
|
|
18
3
|
export { CLEAR_SEQUENCES };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-_shared-ansi.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/_shared/ansi/clear-sequences.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"xxmachina-common-_shared-ansi.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/_shared/ansi/clear-sequences.ts"],"sourcesContent":[null],"names":[],"mappings":"AACA,cAAA,eAAA;;;;"}
|
|
@@ -2,10 +2,6 @@ import { EnvironmentProviders } from '@angular/core';
|
|
|
2
2
|
export { AuthService as FirebaseAuthService } from '@ng-atomic/common/services/auth';
|
|
3
3
|
|
|
4
4
|
declare const LOGOUT_CONFIRM_MESSAGE = "\u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3059\u304B\uFF1F";
|
|
5
|
-
/**
|
|
6
|
-
* SIGN_OUT effect factory。window.confirm で確認ダイアログを表示し、
|
|
7
|
-
* OK の時のみ signOut() を実行する。
|
|
8
|
-
*/
|
|
9
5
|
declare function createSignOutEffect(): () => Promise<void> | undefined;
|
|
10
6
|
declare function provideAuthService(config?: {}): EnvironmentProviders;
|
|
11
7
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-auth-firebase.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/auth/firebase/firebase-auth.di.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAMA,cAAA,sBAAA;
|
|
1
|
+
{"version":3,"file":"xxmachina-common-auth-firebase.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/auth/firebase/firebase-auth.di.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAMA,cAAA,sBAAA;AAGA,iBAAA,mBAAA,UAAA,OAAA;AAUA,iBAAA,kBAAA,eAAA,oBAAA;;;;"}
|
|
@@ -1,31 +1,16 @@
|
|
|
1
1
|
import { Database, ScreenItem } from '@xxmachina/common/domain/models';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* データベースから画面項目リストを構築するビルダー
|
|
5
|
-
*/
|
|
6
3
|
declare class ScreenItemBuilder {
|
|
7
4
|
build(database: Database): ScreenItem[];
|
|
8
5
|
}
|
|
9
6
|
|
|
10
|
-
/**
|
|
11
|
-
* Notionプロパティタイプ別の設定マッピング
|
|
12
|
-
*/
|
|
13
7
|
interface NotionPropertyConfig {
|
|
14
8
|
type: ScreenItem['type'];
|
|
15
9
|
notionPropType: string;
|
|
16
10
|
valueType: ScreenItem['valueType'];
|
|
17
11
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Notionプロパティタイプから画面項目設定へのマッピング
|
|
20
|
-
*/
|
|
21
12
|
declare const NOTION_PROPERTY_CONFIG_MAP: Record<string, NotionPropertyConfig>;
|
|
22
|
-
/**
|
|
23
|
-
* デフォルト設定(未知のプロパティタイプ用)
|
|
24
|
-
*/
|
|
25
13
|
declare const DEFAULT_PROPERTY_CONFIG: NotionPropertyConfig;
|
|
26
|
-
/**
|
|
27
|
-
* プロパティタイプから設定を取得
|
|
28
|
-
*/
|
|
29
14
|
declare function getPropertyConfig(propertyType: string): NotionPropertyConfig;
|
|
30
15
|
|
|
31
16
|
export { DEFAULT_PROPERTY_CONFIG, NOTION_PROPERTY_CONFIG_MAP, ScreenItemBuilder, getPropertyConfig };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-domain-builder-screen-item.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/screen-item.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/notion-property-config.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"xxmachina-common-domain-builder-screen-item.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/screen-item.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/notion-property-config.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;AAyBA;AACE;AAcD;;;ACpCC;;AAEA;AACD;AAGD;AAsBA;AAOA;;;"}
|
|
@@ -44,13 +44,7 @@ declare class CommandActionsBuilder {
|
|
|
44
44
|
buildItemActions<T>(): (item: T) => Action[];
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
/**
|
|
48
|
-
* コマンド用のナビゲーションアクションを作成
|
|
49
|
-
*/
|
|
50
47
|
declare function createCommandNavigateAction(command: Command, navigationExtras?: NavigationExtras, item?: any, options?: CommandActionFactoryOptions, overwrite?: Partial<Action>): Action | null;
|
|
51
|
-
/**
|
|
52
|
-
* コマンド用の実行アクションを作成
|
|
53
|
-
*/
|
|
54
48
|
declare function createCommandExecutionAction(command: Command, item?: any, options?: CommandActionFactoryOptions, overwrite?: Partial<Action>): Action | null;
|
|
55
49
|
|
|
56
50
|
interface Schema {
|
|
@@ -82,32 +76,17 @@ declare class QueryBuilder {
|
|
|
82
76
|
}, meta?: Partial<Omit<Query, 'graphql'>>): Query;
|
|
83
77
|
}
|
|
84
78
|
|
|
85
|
-
/**
|
|
86
|
-
* データベースから画面項目リストを構築するビルダー
|
|
87
|
-
*/
|
|
88
79
|
declare class ScreenItemBuilder {
|
|
89
80
|
build(database: Database): ScreenItem[];
|
|
90
81
|
}
|
|
91
82
|
|
|
92
|
-
/**
|
|
93
|
-
* Notionプロパティタイプ別の設定マッピング
|
|
94
|
-
*/
|
|
95
83
|
interface NotionPropertyConfig {
|
|
96
84
|
type: ScreenItem['type'];
|
|
97
85
|
notionPropType: string;
|
|
98
86
|
valueType: ScreenItem['valueType'];
|
|
99
87
|
}
|
|
100
|
-
/**
|
|
101
|
-
* Notionプロパティタイプから画面項目設定へのマッピング
|
|
102
|
-
*/
|
|
103
88
|
declare const NOTION_PROPERTY_CONFIG_MAP: Record<string, NotionPropertyConfig>;
|
|
104
|
-
/**
|
|
105
|
-
* デフォルト設定(未知のプロパティタイプ用)
|
|
106
|
-
*/
|
|
107
89
|
declare const DEFAULT_PROPERTY_CONFIG: NotionPropertyConfig;
|
|
108
|
-
/**
|
|
109
|
-
* プロパティタイプから設定を取得
|
|
110
|
-
*/
|
|
111
90
|
declare function getPropertyConfig(propertyType: string): NotionPropertyConfig;
|
|
112
91
|
|
|
113
92
|
export { ActionId, CommandActionsBuilder, CommandBuilder, DEFAULT_PROPERTY_CONFIG, ErBuilder, NOTION_PROPERTY_CONFIG_MAP, QueryBuilder, ScreenItemBuilder, createCommandExecutionAction, createCommandNavigateAction, getPropertyConfig };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-domain-builder.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/domain/builder/command/command.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.types.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.helpers.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/er/er.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/query/query.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/screen-item.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/notion-property-config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;AAEA;AACE;AAoBD;;ACrBD;AACE;AACA;AACD;AAEK;;;AAGL;AAEK;;;AAGJ;;;;AAID;;ACXD;;;;;;AAOE;AAUA;;AAYA;AAMA;;;;AAOA;AAMA;AAMA;AAmBA;;AA2BD;;
|
|
1
|
+
{"version":3,"file":"xxmachina-common-domain-builder.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/domain/builder/command/command.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.types.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.helpers.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/er/er.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/query/query.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/screen-item.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/notion-property-config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;AAEA;AACE;AAoBD;;ACrBD;AACE;AACA;AACD;AAEK;;;AAGL;AAEK;;;AAGJ;;;;AAID;;ACXD;;;;;;AAOE;AAUA;;AAYA;AAMA;;;;AAOA;AAMA;AAMA;AAmBA;;AA2BD;;ACrGD;AAiBA;;ACxBA;;;;AAIC;AAED;;;;;AAKC;AAgCD;AACE;;AAgBS;AAA4B;AAkDrC;AAmBD;;AC7HD;AACE;;;AAGE;AACA;;AAED;AAmBF;;ACLD;AACE;AAcD;;;ACpCC;;AAEA;AACD;AAGD;AAsBA;AAOA;;;"}
|