akanjs 3.0.0-beta.17 → 3.0.0-beta.19
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/base/base.ts +1 -1
- package/base/baseEnv.ts +12 -3
- package/base/databaseModes.ts +76 -0
- package/base/index.ts +1 -0
- package/base/primitiveRegistry.ts +27 -7
- package/client/csrTypes.ts +1 -31
- package/client/frameConfig.ts +2 -2
- package/client/route/RootLayoutDefinition.ts +0 -6
- package/client/route/RouteDefinition.ts +1 -13
- package/common/CodeTranscript.ts +13 -2
- package/common/codeAgentProfile.ts +36 -0
- package/common/codeAgentWire.ts +17 -3
- package/common/index.ts +3 -0
- package/common/routeConvention.ts +0 -3
- package/constant/constantRegistry.ts +8 -11
- package/constant/getDefault.ts +21 -2
- package/constant/mask.ts +35 -3
- package/dictionary/agent.dictionary.ts +9 -0
- package/dictionary/base.dictionary.ts +5 -0
- package/document/dataLoader.ts +48 -15
- package/document/database.ts +39 -3
- package/document/loaderInfo.ts +28 -7
- package/document/queryEvaluator.ts +10 -1
- package/fetch/client/fetchClient.ts +14 -12
- package/fetch/client/httpClient.ts +1 -1
- package/index.ts +10 -1
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0001.log +44 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0002.log +42 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0003.log +43 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0004.log +44 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0005.log +50 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0006.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0007.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0008.log +47 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0009.log +47 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0010.log +6 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0011.log +14 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0012.log +6 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0013.log +35 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0014.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0015.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0016.log +47 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0017.log +47 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0018.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0019.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0020.log +47 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0021.log +47 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0022.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0023.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0024.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0025.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0026.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0027.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0028.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0029.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0030.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0031.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0032.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0033.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0034.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0035.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0036.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0037.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0038.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0039.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0040.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0041.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0042.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0043.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0044.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0045.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0046.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0047.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0048.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0049.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0050.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0051.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0052.log +46 -0
- package/local/apps/crossTest/runtime/logs/crossTest-testing-local-2026-09-25-all-0053.log +46 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/package.json +2 -1
- package/server/akanApp.ts +28 -1
- package/server/akanOption.ts +22 -1
- package/server/akanServer.ts +39 -5
- package/server/artifact/builderRpc.ts +7 -2
- package/server/artifact/ipcTypes.ts +1 -0
- package/server/artifact/routeClientCache.ts +5 -1
- package/server/console.ts +9 -9
- package/server/decorators.ts +3 -64
- package/server/devtools/depsSerializer.ts +1 -4
- package/server/di/diLifecycle.ts +32 -6
- package/server/di/predefinedAdaptor.ts +13 -3
- package/server/head.tsx +60 -0
- package/server/hmr/devHmrController.ts +8 -1
- package/server/imageOptimizer.ts +3 -1
- package/server/mcp/McpDispatcher.ts +7 -5
- package/server/mcp/McpRateLimiter.ts +67 -21
- package/server/mcp/McpRouter.ts +14 -8
- package/server/mcp/PagePromptComposer.ts +6 -2
- package/server/ops/ageEncryption.ts +322 -0
- package/server/ops/appInfo.ts +92 -0
- package/server/ops/opsCommand.ts +120 -0
- package/server/ops/opsRoute.ts +155 -0
- package/server/ops/opsToken.ts +97 -0
- package/server/ops/snapshotJobs.ts +137 -0
- package/server/ops/snapshotRestore.ts +127 -0
- package/server/ops/snapshotTypes.ts +54 -0
- package/server/ops/sqliteFiles.ts +43 -0
- package/server/ops/sqliteSnapshot.ts +153 -0
- package/server/resolver/database.resolver.ts +29 -26
- package/server/resolver/signal.resolver.ts +49 -10
- package/server/routeElementComposer.tsx +3 -3
- package/server/routeTreeBuilder.ts +1 -24
- package/server/routing/soloAppRoutes.ts +5 -0
- package/server/rscWorker.tsx +10 -21
- package/server/rscWorkerHost.ts +9 -1
- package/server/webRouter.ts +23 -11
- package/service/agent.service.ts +8 -1
- package/service/injectInfo.ts +105 -73
- package/service/ipcTypes.ts +3 -0
- package/service/predefinedAdaptor/anthropicLlm.ts +36 -10
- package/service/predefinedAdaptor/cache.adaptor.ts +260 -74
- package/service/predefinedAdaptor/database.adaptor.ts +357 -74
- package/service/predefinedAdaptor/documentTransfer.ts +91 -0
- package/service/predefinedAdaptor/index.ts +2 -0
- package/service/predefinedAdaptor/insightQuery.ts +113 -43
- package/service/predefinedAdaptor/llm.adaptor.ts +33 -0
- package/service/predefinedAdaptor/llmOverflow.ts +73 -0
- package/service/predefinedAdaptor/openaiDialect.ts +23 -2
- package/service/predefinedAdaptor/openaiLlm.ts +11 -17
- package/service/predefinedAdaptor/queue.adaptor.ts +40 -21
- package/service/predefinedAdaptor/schedule.adaptor.ts +69 -8
- package/service/predefinedAdaptor/searchIndex.ts +63 -288
- package/service/predefinedAdaptor/solidCache.adaptor.ts +135 -12
- package/service/predefinedAdaptor/solidPubsub.adaptor.ts +27 -12
- package/service/predefinedAdaptor/solidQueue.adaptor.ts +66 -10
- package/service/predefinedAdaptor/solidSqlite.ts +8 -2
- package/service/predefinedAdaptor/sql/PostgresInsightSession.ts +116 -0
- package/service/predefinedAdaptor/sql/QueryCompiler.ts +47 -19
- package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +256 -60
- package/service/predefinedAdaptor/sql/SqliteInsightSession.ts +89 -0
- package/service/predefinedAdaptor/sql/dialect/postgres.ts +139 -51
- package/service/predefinedAdaptor/sql/dialect/sqlite.ts +17 -13
- package/service/predefinedAdaptor/sql/driver/bunSqlite.ts +29 -4
- package/service/predefinedAdaptor/sql/driver/libsql.ts +26 -12
- package/service/predefinedAdaptor/sql/driver/postgres.ts +13 -7
- package/service/predefinedAdaptor/sql/search/fts5.ts +260 -0
- package/service/predefinedAdaptor/sql/search/mirror.ts +76 -0
- package/service/predefinedAdaptor/sql/search/postgres.ts +455 -0
- package/service/predefinedAdaptor/sql/search/types.ts +54 -0
- package/service/predefinedAdaptor/sql/types.ts +79 -16
- package/service/predefinedAdaptor/sql/values.ts +14 -1
- package/service/predefinedAdaptor/storage.adaptor.ts +22 -6
- package/service/predefinedAdaptor/websocket.adaptor.ts +157 -168
- package/signal/agent.signal.ts +8 -4
- package/signal/agentMeter.ts +49 -0
- package/signal/agentTurnStream.ts +18 -7
- package/signal/endpointCache.ts +75 -0
- package/signal/guard.ts +4 -3
- package/signal/index.ts +1 -0
- package/signal/internal.ts +2 -2
- package/signal/internalArg.ts +7 -0
- package/signal/mcp/McpDocument.ts +1 -1
- package/signal/middleware.ts +0 -77
- package/signal/schema/JsonSchemaBuilder.ts +27 -4
- package/signal/signalContext.ts +17 -16
- package/signal/types.ts +10 -5
- package/store/agent/index.ts +1 -1
- package/store/agentic/AgentValue.ts +9 -6
- package/store/agentic/formFields.ts +3 -0
- package/test/conformance.ts +313 -0
- package/test/index.ts +1 -0
- package/test/sampleOf.ts +19 -2
- package/test/signalTestRuntime.ts +2 -2
- package/test/testServer.ts +64 -12
- package/types/base/baseEnv.d.ts +2 -2
- package/types/base/databaseModes.d.ts +29 -0
- package/types/base/index.d.ts +1 -0
- package/types/base/primitiveRegistry.d.ts +21 -4
- package/types/client/csrTypes.d.ts +1 -31
- package/types/client/route/RootLayoutDefinition.d.ts +0 -1
- package/types/client/route/RouteDefinition.d.ts +1 -3
- package/types/common/codeAgentProfile.d.ts +37 -0
- package/types/common/codeAgentWire.d.ts +11 -1
- package/types/common/index.d.ts +1 -1
- package/types/constant/constantRegistry.d.ts +2 -2
- package/types/constant/getDefault.d.ts +10 -1
- package/types/constant/mask.d.ts +10 -1
- package/types/dictionary/agent.dictionary.d.ts +1 -1
- package/types/dictionary/base.dictionary.d.ts +1 -1
- package/types/dictionary/dictionary.d.ts +9 -9
- package/types/document/dataLoader.d.ts +6 -1
- package/types/document/database.d.ts +15 -3
- package/types/document/loaderInfo.d.ts +9 -4
- package/types/index.d.ts +9 -1
- package/types/server/akanOption.d.ts +10 -1
- package/types/server/artifact/builderRpc.d.ts +2 -1
- package/types/server/artifact/ipcTypes.d.ts +1 -0
- package/types/server/console.d.ts +1 -1
- package/types/server/decorators.d.ts +1 -8
- package/types/server/di/predefinedAdaptor.d.ts +5 -0
- package/types/server/head.d.ts +10 -0
- package/types/server/mcp/McpRateLimiter.d.ts +15 -5
- package/types/server/mcp/McpRouter.d.ts +1 -1
- package/types/server/ops/ageEncryption.d.ts +24 -0
- package/types/server/ops/appInfo.d.ts +36 -0
- package/types/server/ops/opsCommand.d.ts +9 -0
- package/types/server/ops/opsRoute.d.ts +28 -0
- package/types/server/ops/opsToken.d.ts +30 -0
- package/types/server/ops/snapshotJobs.d.ts +25 -0
- package/types/server/ops/snapshotRestore.d.ts +24 -0
- package/types/server/ops/snapshotTypes.d.ts +46 -0
- package/types/server/ops/sqliteFiles.d.ts +10 -0
- package/types/server/ops/sqliteSnapshot.d.ts +31 -0
- package/types/server/resolver/signal.resolver.d.ts +5 -0
- package/types/server/routeElementComposer.d.ts +1 -1
- package/types/server/routing/soloAppRoutes.d.ts +2 -1
- package/types/server/rscWorkerHost.d.ts +3 -1
- package/types/service/agent.service.d.ts +3 -0
- package/types/service/injectInfo.d.ts +26 -14
- package/types/service/ipcTypes.d.ts +6 -0
- package/types/service/predefinedAdaptor/anthropicLlm.d.ts +10 -1
- package/types/service/predefinedAdaptor/cache.adaptor.d.ts +46 -12
- package/types/service/predefinedAdaptor/database.adaptor.d.ts +20 -3
- package/types/service/predefinedAdaptor/documentTransfer.d.ts +17 -0
- package/types/service/predefinedAdaptor/index.d.ts +2 -0
- package/types/service/predefinedAdaptor/insightQuery.d.ts +14 -12
- package/types/service/predefinedAdaptor/llm.adaptor.d.ts +31 -0
- package/types/service/predefinedAdaptor/llmOverflow.d.ts +26 -0
- package/types/service/predefinedAdaptor/openaiDialect.d.ts +14 -1
- package/types/service/predefinedAdaptor/openaiLlm.d.ts +3 -1
- package/types/service/predefinedAdaptor/queue.adaptor.d.ts +12 -7
- package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +7 -2
- package/types/service/predefinedAdaptor/searchIndex.d.ts +12 -25
- package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +15 -6
- package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +6 -4
- package/types/service/predefinedAdaptor/solidSqlite.d.ts +1 -0
- package/types/service/predefinedAdaptor/sql/PostgresInsightSession.d.ts +23 -0
- package/types/service/predefinedAdaptor/sql/QueryCompiler.d.ts +7 -3
- package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +11 -2
- package/types/service/predefinedAdaptor/sql/SqliteInsightSession.d.ts +19 -0
- package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +20 -10
- package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +5 -2
- package/types/service/predefinedAdaptor/sql/driver/bunSqlite.d.ts +9 -3
- package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +9 -5
- package/types/service/predefinedAdaptor/sql/driver/postgres.d.ts +4 -4
- package/types/service/predefinedAdaptor/sql/search/fts5.d.ts +33 -0
- package/types/service/predefinedAdaptor/sql/search/mirror.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/search/postgres.d.ts +54 -0
- package/types/service/predefinedAdaptor/sql/search/types.d.ts +49 -0
- package/types/service/predefinedAdaptor/sql/types.d.ts +73 -15
- package/types/service/predefinedAdaptor/sql/values.d.ts +3 -0
- package/types/service/predefinedAdaptor/storage.adaptor.d.ts +7 -2
- package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +29 -13
- package/types/signal/agent.signal.d.ts +4 -1
- package/types/signal/agentMeter.d.ts +28 -0
- package/types/signal/agentTurnStream.d.ts +6 -1
- package/types/signal/endpointCache.d.ts +19 -0
- package/types/signal/guard.d.ts +4 -3
- package/types/signal/index.d.ts +1 -0
- package/types/signal/internalArg.d.ts +4 -0
- package/types/signal/middleware.d.ts +0 -20
- package/types/signal/schema/JsonSchemaBuilder.d.ts +11 -2
- package/types/signal/signalContext.d.ts +1 -6
- package/types/signal/types.d.ts +10 -5
- package/types/store/agent/index.d.ts +1 -1
- package/types/store/agentic/AgentValue.d.ts +3 -3
- package/types/test/conformance.d.ts +87 -0
- package/types/test/index.d.ts +1 -0
- package/types/test/sampleOf.d.ts +1 -1
- package/types/test/signalTestRuntime.d.ts +1 -1
- package/types/test/testServer.d.ts +4 -3
- package/types/ui/Agent/Chat.d.ts +4 -2
- package/types/ui/Agent/Menu.d.ts +2 -2
- package/types/ui/Button.d.ts +1 -1
- package/types/ui/CsrImage.d.ts +2 -1
- package/types/ui/Data/Item.d.ts +1 -1
- package/types/ui/Link/CsrLink.d.ts +1 -1
- package/types/ui/Link/types.d.ts +2 -0
- package/types/ui/System/CSR.d.ts +2 -2
- package/types/ui/System/Client.d.ts +2 -3
- package/types/ui/System/Common.d.ts +0 -2
- package/types/ui/System/SSR.d.ts +2 -2
- package/types/ui/recipe/inputRecipe.d.ts +1 -1
- package/types/vendor/use-agentic/AgentProgress.d.ts +12 -0
- package/types/vendor/use-agentic/AgentSession.d.ts +11 -1
- package/types/vendor/use-agentic/Compaction.d.ts +42 -5
- package/types/vendor/use-agentic/Transcript.d.ts +2 -0
- package/types/vendor/use-agentic/types.d.ts +29 -0
- package/ui/Agent/Bubble.tsx +47 -1
- package/ui/Agent/Chat.tsx +15 -6
- package/ui/Agent/Menu.tsx +2 -2
- package/ui/Agent/fetchRunner.ts +2 -1
- package/ui/Button.tsx +1 -1
- package/ui/Constant/Doc.tsx +121 -77
- package/ui/Constant/Graph.tsx +11 -3
- package/ui/CsrImage.tsx +9 -5
- package/ui/Data/Item.tsx +1 -1
- package/ui/Field/Choice.tsx +1 -1
- package/ui/Field/Collection.tsx +4 -3
- package/ui/Image.tsx +9 -10
- package/ui/Link/CsrLink.tsx +5 -1
- package/ui/Link/types.ts +2 -0
- package/ui/Portal.tsx +2 -3
- package/ui/Refresh.tsx +1 -3
- package/ui/ScreenNavigator.tsx +6 -4
- package/ui/System/CSR.tsx +1 -9
- package/ui/System/Client.tsx +2 -4
- package/ui/System/Common.tsx +0 -2
- package/ui/System/SSR.tsx +9 -14
- package/ui/recipe/inputRecipe.ts +1 -1
- package/vendor/use-agentic/AgentProgress.ts +13 -1
- package/vendor/use-agentic/AgentSession.ts +119 -27
- package/vendor/use-agentic/Compaction.ts +82 -8
- package/vendor/use-agentic/Transcript.ts +6 -1
- package/vendor/use-agentic/WIRE.md +16 -2
- package/vendor/use-agentic/httpRunner.ts +19 -4
- package/vendor/use-agentic/types.ts +33 -2
- package/webkit/bootCsr.tsx +0 -12
- package/webkit/useCamera.tsx +4 -3
- package/webkit/useCsrValues.ts +3 -3
- package/webkit/useFetch.ts +6 -7
- package/server/metadata.tsx +0 -198
- package/types/server/metadata.d.ts +0 -22
- package/types/ui/System/Gtag.d.ts +0 -4
- package/ui/System/Gtag.tsx +0 -69
package/constant/mask.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FIELD_META } from "akanjs/base";
|
|
1
|
+
import { type Cls, FIELD_META, getNonArrayModel, type PrimitiveAgentFace, PrimitiveRegistry } from "akanjs/base";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A model as masking reads it — the constructor, for the field metadata it carries at runtime.
|
|
@@ -14,7 +14,10 @@ export interface MaskModel {
|
|
|
14
14
|
interface MaskField {
|
|
15
15
|
fieldType?: string;
|
|
16
16
|
isClass?: boolean;
|
|
17
|
+
isMap?: boolean;
|
|
17
18
|
modelRef?: MaskModel;
|
|
19
|
+
of?: unknown;
|
|
20
|
+
arrDepth?: number;
|
|
18
21
|
visual?: boolean;
|
|
19
22
|
}
|
|
20
23
|
|
|
@@ -40,7 +43,8 @@ export const leakingFieldsOf = (model: MaskModel, value: Record<string, unknown>
|
|
|
40
43
|
/**
|
|
41
44
|
* Strips what a model marks `hidden`, `secret`, or `visual`, by the model the caller names rather than by the one
|
|
42
45
|
* the value happens to still carry. The first two are secrecy and the third is cost, but the answer is the same
|
|
43
|
-
* one — leave the field out — and this is the only place every AI-facing read already passes through.
|
|
46
|
+
* one — leave the field out — and this is the only place every AI-facing read already passes through. For the same
|
|
47
|
+
* reason it is where a primitive declaring an agent face is read into that face (`agentRead`).
|
|
44
48
|
*
|
|
45
49
|
* That distinction is the whole point. A check that reads the class off the value can only mask what arrives as an
|
|
46
50
|
* instance, so a `{ ...doc }` spread, a `toJSON()`, an `immerify()`, or a round-trip through `JSON.stringify` reaches
|
|
@@ -61,11 +65,39 @@ export const mask = (model: MaskModel, value: unknown): unknown => {
|
|
|
61
65
|
const masked: Record<string, unknown> = {};
|
|
62
66
|
for (const [key, field] of Object.entries(fields)) {
|
|
63
67
|
if (field.fieldType === "hidden" || field.fieldType === "secret" || field.visual || !(key in source)) continue;
|
|
64
|
-
masked[key] =
|
|
68
|
+
masked[key] = maskField(field, source[key]);
|
|
65
69
|
}
|
|
66
70
|
return masked;
|
|
67
71
|
};
|
|
68
72
|
|
|
73
|
+
/**
|
|
74
|
+
* What an agent reads of a primitive value: the primitive's `agent.read` when it declares an agent face, the value
|
|
75
|
+
* untouched otherwise. The read is applied through `arrDepth` levels of array, the way a field declares them.
|
|
76
|
+
*/
|
|
77
|
+
export const agentRead = (modelRef: unknown, value: unknown, arrDepth = 0): unknown => {
|
|
78
|
+
const face = PrimitiveRegistry.agentOf(modelRef);
|
|
79
|
+
return face ? readThrough(face, value, arrDepth) : value;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const readThrough = (face: PrimitiveAgentFace, value: unknown, arrDepth: number): unknown => {
|
|
83
|
+
if (value === null || value === undefined) return value;
|
|
84
|
+
if (arrDepth > 0 && Array.isArray(value)) return value.map((item) => readThrough(face, item, arrDepth - 1));
|
|
85
|
+
return face.read(value);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const maskField = (field: MaskField, value: unknown): unknown => {
|
|
89
|
+
if (field.isClass && field.modelRef) return mask(field.modelRef, value);
|
|
90
|
+
if (field.isMap) return maskMapValues(field.of, value);
|
|
91
|
+
return agentRead(field.modelRef, value, field.arrDepth ?? 0);
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const maskMapValues = (of: unknown, value: unknown): unknown => {
|
|
95
|
+
const [valueRef, arrDepth] = getNonArrayModel(of as Cls);
|
|
96
|
+
if (!PrimitiveRegistry.agentOf(valueRef) || value === null || typeof value !== "object") return value;
|
|
97
|
+
const entries = value instanceof Map ? [...value.entries()] : Object.entries(value);
|
|
98
|
+
return Object.fromEntries(entries.map(([key, item]) => [key, agentRead(valueRef, item, arrDepth)]));
|
|
99
|
+
};
|
|
100
|
+
|
|
69
101
|
/**
|
|
70
102
|
* Drops what a model marks `hidden` or `secret`, and nothing else.
|
|
71
103
|
*
|
|
@@ -29,4 +29,13 @@ export const agentDictionary = serviceDictionary(["en", "ko"])
|
|
|
29
29
|
"{provider} refused this turn with status {status}. Reason: {reason}",
|
|
30
30
|
"{provider}가 이번 턴을 거절했습니다 (status {status}). 사유: {reason}",
|
|
31
31
|
],
|
|
32
|
+
|
|
33
|
+
contextOverflow: [
|
|
34
|
+
"This conversation no longer fits the model's context window at {provider}. Use /compact to summarize it, or /new to start over",
|
|
35
|
+
"대화가 {provider} 모델의 컨텍스트 창을 넘었습니다. /compact로 요약하거나 /new로 새로 시작할 수 있습니다.",
|
|
36
|
+
],
|
|
37
|
+
quotaExceeded: [
|
|
38
|
+
"The agent's usage limit for this account has been reached",
|
|
39
|
+
"이 계정의 에이전트 사용 한도에 도달했습니다.",
|
|
40
|
+
],
|
|
32
41
|
});
|
|
@@ -109,6 +109,11 @@ export const baseDictionary = serviceDictionary(["en", "ko"])
|
|
|
109
109
|
agentToolRunning: ["Running", "실행 중"],
|
|
110
110
|
agentToolResult: ["Show what this tool returned", "이 툴이 반환한 값 보기"],
|
|
111
111
|
agentTokens: ["~{count} tokens", "약 {count} 토큰"],
|
|
112
|
+
agentTokensOf: ["~{count} / {limit} tokens", "약 {count} / {limit} 토큰"],
|
|
113
|
+
agentCompactsAt: [
|
|
114
|
+
"The conversation summarizes itself past {limit} tokens",
|
|
115
|
+
"{limit} 토큰을 넘으면 대화를 스스로 요약합니다",
|
|
116
|
+
],
|
|
112
117
|
agentSummarizing: ["Summarizing the conversation…", "대화를 요약하는 중…"],
|
|
113
118
|
agentContinue: ["This is taking a while. Keep going?", "시간이 걸리고 있습니다. 계속할까요?"],
|
|
114
119
|
agentKeepGoing: ["Keep going", "계속하기"],
|
package/document/dataLoader.ts
CHANGED
|
@@ -11,7 +11,12 @@ type BatchLoadFn<Key, Value> = (
|
|
|
11
11
|
) => PromiseLike<ReadonlyArray<Value | Error>> | ReadonlyArray<Value | Error>;
|
|
12
12
|
|
|
13
13
|
interface DataLoaderOptions<Key, CacheKey> {
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* How long a loaded key is answered from memory: `false` (the default) remembers nothing past its own batch,
|
|
16
|
+
* a number keeps each key for that many milliseconds, and `true` keeps it for the life of the loader. A model's
|
|
17
|
+
* loaders live as long as the process, so anything but `false` serves a stale document after it changes.
|
|
18
|
+
*/
|
|
19
|
+
cache?: boolean | number;
|
|
15
20
|
cacheKeyFn?: (key: Key) => CacheKey;
|
|
16
21
|
batch?: boolean;
|
|
17
22
|
batchScheduleFn?: (callback: () => void) => void;
|
|
@@ -27,20 +32,27 @@ interface BatchItem<Key, Value> {
|
|
|
27
32
|
|
|
28
33
|
/** Minimal DataLoader-compatible batch loader used by Akan document resolvers. */
|
|
29
34
|
export class DataLoader<Key, Value, CacheKey = Key> {
|
|
35
|
+
static readonly #minSweepSize = 1024;
|
|
30
36
|
readonly name?: string;
|
|
31
37
|
readonly #batchLoadFn: BatchLoadFn<Key, Value>;
|
|
32
|
-
readonly #
|
|
38
|
+
readonly #ttl: number;
|
|
33
39
|
readonly #cacheKeyFn: (key: Key) => CacheKey;
|
|
34
40
|
readonly #batch: boolean;
|
|
35
41
|
readonly #batchScheduleFn: (callback: () => void) => void;
|
|
36
42
|
readonly #maxBatchSize: number;
|
|
37
|
-
readonly #promiseCache = new Map<CacheKey, Promise<Value
|
|
43
|
+
readonly #promiseCache = new Map<CacheKey, { promise: Promise<Value>; expiresAt: number }>();
|
|
44
|
+
#sweepAt = DataLoader.#minSweepSize;
|
|
38
45
|
#queue: BatchItem<Key, Value>[] = [];
|
|
39
46
|
#scheduled = false;
|
|
40
47
|
|
|
41
48
|
constructor(batchLoadFn: BatchLoadFn<Key, Value>, options: DataLoaderOptions<Key, CacheKey> = {}) {
|
|
42
49
|
this.#batchLoadFn = batchLoadFn;
|
|
43
|
-
this.#
|
|
50
|
+
this.#ttl =
|
|
51
|
+
options.cache === true
|
|
52
|
+
? Number.POSITIVE_INFINITY
|
|
53
|
+
: typeof options.cache === "number" && options.cache > 0
|
|
54
|
+
? options.cache
|
|
55
|
+
: 0;
|
|
44
56
|
this.#cacheKeyFn = options.cacheKeyFn ?? ((key) => key as unknown as CacheKey);
|
|
45
57
|
this.#batch = options.batch !== false;
|
|
46
58
|
this.#batchScheduleFn = options.batchScheduleFn ?? ((callback) => queueMicrotask(callback));
|
|
@@ -50,17 +62,21 @@ export class DataLoader<Key, Value, CacheKey = Key> {
|
|
|
50
62
|
|
|
51
63
|
load(key: Key): Promise<Value> {
|
|
52
64
|
const cacheKey = this.#cacheKeyFn(key);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (cached) return cached;
|
|
56
|
-
}
|
|
65
|
+
const cached = this.#cached(cacheKey);
|
|
66
|
+
if (cached) return cached;
|
|
57
67
|
|
|
58
68
|
const promise = new Promise<Value>((resolve, reject) => {
|
|
59
69
|
this.#queue.push({ key, resolve, reject });
|
|
60
70
|
if (this.#batch) this.#schedule();
|
|
61
71
|
else this.#dispatch();
|
|
62
72
|
});
|
|
63
|
-
if (this.#
|
|
73
|
+
if (this.#ttl > 0) {
|
|
74
|
+
this.#remember(cacheKey, promise);
|
|
75
|
+
|
|
76
|
+
promise.catch(() => {
|
|
77
|
+
if (this.#promiseCache.get(cacheKey)?.promise === promise) this.#promiseCache.delete(cacheKey);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
64
80
|
return promise;
|
|
65
81
|
}
|
|
66
82
|
|
|
@@ -80,13 +96,30 @@ export class DataLoader<Key, Value, CacheKey = Key> {
|
|
|
80
96
|
}
|
|
81
97
|
|
|
82
98
|
prime(key: Key, value: Value | Error): this {
|
|
83
|
-
if (
|
|
99
|
+
if (this.#ttl <= 0) return this;
|
|
84
100
|
const cacheKey = this.#cacheKeyFn(key);
|
|
85
|
-
if (this.#
|
|
86
|
-
this.#
|
|
101
|
+
if (this.#cached(cacheKey)) return this;
|
|
102
|
+
this.#remember(cacheKey, value instanceof Error ? Promise.reject(value) : Promise.resolve(value));
|
|
87
103
|
return this;
|
|
88
104
|
}
|
|
89
105
|
|
|
106
|
+
#cached(cacheKey: CacheKey): Promise<Value> | undefined {
|
|
107
|
+
if (this.#ttl <= 0) return undefined;
|
|
108
|
+
const entry = this.#promiseCache.get(cacheKey);
|
|
109
|
+
if (!entry) return undefined;
|
|
110
|
+
if (entry.expiresAt > Date.now()) return entry.promise;
|
|
111
|
+
this.#promiseCache.delete(cacheKey);
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
#remember(cacheKey: CacheKey, promise: Promise<Value>) {
|
|
116
|
+
this.#promiseCache.set(cacheKey, { promise, expiresAt: Date.now() + this.#ttl });
|
|
117
|
+
if (this.#promiseCache.size < this.#sweepAt) return;
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
for (const [key, entry] of this.#promiseCache) if (entry.expiresAt <= now) this.#promiseCache.delete(key);
|
|
120
|
+
this.#sweepAt = Math.max(DataLoader.#minSweepSize, this.#promiseCache.size * 2);
|
|
121
|
+
}
|
|
122
|
+
|
|
90
123
|
#schedule() {
|
|
91
124
|
if (this.#scheduled) return;
|
|
92
125
|
this.#scheduled = true;
|
|
@@ -159,7 +192,7 @@ export const createLoader = <Key, Value>(model: LoaderModel, fieldName = "id", d
|
|
|
159
192
|
});
|
|
160
193
|
return data as unknown as Promise<Value[]>;
|
|
161
194
|
},
|
|
162
|
-
{ name: "dataloader"
|
|
195
|
+
{ name: "dataloader" },
|
|
163
196
|
);
|
|
164
197
|
};
|
|
165
198
|
export const createArrayLoader = <K, V>(model: LoaderModel, fieldName = "id", defaultQuery: QueryOf<unknown> = {}) => {
|
|
@@ -194,7 +227,7 @@ export const createArrayElementLoader = <K, V>(
|
|
|
194
227
|
});
|
|
195
228
|
return data as unknown as Promise<V[]>;
|
|
196
229
|
},
|
|
197
|
-
{ name: "dataloader"
|
|
230
|
+
{ name: "dataloader" },
|
|
198
231
|
);
|
|
199
232
|
};
|
|
200
233
|
|
|
@@ -214,7 +247,7 @@ export const createQueryLoader = <Key, Value>(
|
|
|
214
247
|
});
|
|
215
248
|
return data as unknown as Promise<Value[]>;
|
|
216
249
|
},
|
|
217
|
-
{ name: "dataloader"
|
|
250
|
+
{ name: "dataloader" },
|
|
218
251
|
);
|
|
219
252
|
};
|
|
220
253
|
|
package/document/database.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { MergedValues, PromiseOrObject } from "akanjs/base";
|
|
2
2
|
import { Logger } from "akanjs/common";
|
|
3
3
|
import type { DocumentModel, QueryOf } from "akanjs/constant";
|
|
4
|
-
import type { CacheAdaptor, CacheSetOptions } from "akanjs/service";
|
|
4
|
+
import type { CacheAdaptor, CacheSetOptions, CacheValue } from "akanjs/service";
|
|
5
5
|
import type { DataLoader } from "./dataLoader";
|
|
6
6
|
import type { DocumentUpdateInput } from "./documentQuery";
|
|
7
7
|
import type { ExtractQuery, ExtractSort, FilterInstance } from "./filterMeta";
|
|
@@ -16,15 +16,51 @@ export class CacheDatabase<T = unknown> {
|
|
|
16
16
|
) {
|
|
17
17
|
this.logger = new Logger(`${refName}Cache`);
|
|
18
18
|
}
|
|
19
|
-
async set(topic: string, key: string, value:
|
|
19
|
+
async set(topic: string, key: string, value: CacheValue, option: CacheSetOptions = {}) {
|
|
20
20
|
await this.cache.set(this.refName, `${topic}:${key}`, value, option);
|
|
21
21
|
}
|
|
22
|
-
async get<T extends
|
|
22
|
+
async get<T extends CacheValue = CacheValue>(topic: string, key: string): Promise<T | undefined> {
|
|
23
23
|
return await this.cache.get<T>(this.refName, `${topic}:${key}`);
|
|
24
24
|
}
|
|
25
25
|
async delete(topic: string, key: string) {
|
|
26
26
|
await this.cache.delete(this.refName, `${topic}:${key}`);
|
|
27
27
|
}
|
|
28
|
+
async getDel<T extends CacheValue = CacheValue>(topic: string, key: string): Promise<T | undefined> {
|
|
29
|
+
return await this.cache.getDel<T>(this.refName, `${topic}:${key}`);
|
|
30
|
+
}
|
|
31
|
+
async setIfAbsent(topic: string, key: string, value: CacheValue, option: CacheSetOptions = {}) {
|
|
32
|
+
return await this.cache.setIfAbsent(this.refName, `${topic}:${key}`, value, option);
|
|
33
|
+
}
|
|
34
|
+
async incr(topic: string, key: string, by = 1, option: CacheSetOptions = {}) {
|
|
35
|
+
return await this.cache.incr(this.refName, `${topic}:${key}`, by, option);
|
|
36
|
+
}
|
|
37
|
+
async hset(topic: string, key: string, subKey: string, value: CacheValue, option: CacheSetOptions = {}) {
|
|
38
|
+
await this.cache.hset(this.refName, `${topic}:${key}`, subKey, value, option);
|
|
39
|
+
}
|
|
40
|
+
async hget<T extends CacheValue = CacheValue>(topic: string, key: string, subKey: string): Promise<T | undefined> {
|
|
41
|
+
return await this.cache.hget<T>(this.refName, `${topic}:${key}`, subKey);
|
|
42
|
+
}
|
|
43
|
+
async hdelete(topic: string, key: string, subKey: string) {
|
|
44
|
+
await this.cache.hdelete(this.refName, `${topic}:${key}`, subKey);
|
|
45
|
+
}
|
|
46
|
+
async hkeys(topic: string, key: string) {
|
|
47
|
+
return await this.cache.hkeys(this.refName, `${topic}:${key}`);
|
|
48
|
+
}
|
|
49
|
+
async hentries<T extends CacheValue = CacheValue>(topic: string, key: string): Promise<[string, T][]> {
|
|
50
|
+
return await this.cache.hentries<T>(this.refName, `${topic}:${key}`);
|
|
51
|
+
}
|
|
52
|
+
async hclear(topic: string, key: string) {
|
|
53
|
+
await this.cache.hclear(this.refName, `${topic}:${key}`);
|
|
54
|
+
}
|
|
55
|
+
async hgetDel<T extends CacheValue = CacheValue>(topic: string, key: string, subKey: string): Promise<T | undefined> {
|
|
56
|
+
return await this.cache.hgetDel<T>(this.refName, `${topic}:${key}`, subKey);
|
|
57
|
+
}
|
|
58
|
+
async hsetIfAbsent(topic: string, key: string, subKey: string, value: CacheValue, option: CacheSetOptions = {}) {
|
|
59
|
+
return await this.cache.hsetIfAbsent(this.refName, `${topic}:${key}`, subKey, value, option);
|
|
60
|
+
}
|
|
61
|
+
async hincr(topic: string, key: string, subKey: string, by = 1, option: CacheSetOptions = {}) {
|
|
62
|
+
return await this.cache.hincr(this.refName, `${topic}:${key}`, subKey, by, option);
|
|
63
|
+
}
|
|
28
64
|
}
|
|
29
65
|
/**
|
|
30
66
|
* What `update<Filter>` returns. The patch cannot be a trailing parameter — a filter's own args may be optional,
|
package/document/loaderInfo.ts
CHANGED
|
@@ -15,25 +15,46 @@ export type ModelCls<
|
|
|
15
15
|
_libsOnSchema: (schema: SchemaOf<any, any>) => void;
|
|
16
16
|
}
|
|
17
17
|
>;
|
|
18
|
+
export interface LoaderOption {
|
|
19
|
+
/** `false` by default; a number of milliseconds, or `true` for as long as the process runs. */
|
|
20
|
+
cache?: boolean | number;
|
|
21
|
+
}
|
|
22
|
+
|
|
18
23
|
export class LoaderInfo<Doc = any, Key extends keyof Doc = keyof Doc, QueryArg = Doc[Key]> {
|
|
19
24
|
type: LoaderType;
|
|
20
25
|
field: Key | Key[];
|
|
21
26
|
defaultQuery: QueryOf<unknown>;
|
|
27
|
+
cache: boolean | number;
|
|
22
28
|
queryArg: QueryArg | undefined;
|
|
23
|
-
constructor(
|
|
29
|
+
constructor(
|
|
30
|
+
type: LoaderType,
|
|
31
|
+
field: Key | Key[],
|
|
32
|
+
defaultQuery: QueryOf<unknown> = {},
|
|
33
|
+
{ cache = false }: LoaderOption = {},
|
|
34
|
+
) {
|
|
24
35
|
this.type = type;
|
|
25
36
|
this.field = field;
|
|
26
37
|
this.defaultQuery = defaultQuery;
|
|
38
|
+
this.cache = cache;
|
|
27
39
|
}
|
|
28
40
|
}
|
|
29
41
|
|
|
30
42
|
export const makeLoaderBuilder = <Doc>() => ({
|
|
31
|
-
byField: <Key extends keyof Doc & string>(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
byField: <Key extends keyof Doc & string>(
|
|
44
|
+
fieldName: Key,
|
|
45
|
+
defaultQuery: QueryOf<unknown> = {},
|
|
46
|
+
option: LoaderOption = {},
|
|
47
|
+
) => new LoaderInfo<Doc, Key>("field", fieldName, defaultQuery, option),
|
|
48
|
+
byArrayField: <Key extends keyof Doc & string>(
|
|
49
|
+
fieldName: Key,
|
|
50
|
+
defaultQuery: QueryOf<unknown> = {},
|
|
51
|
+
option: LoaderOption = {},
|
|
52
|
+
) => new LoaderInfo<Doc, Key>("arrayField", fieldName, defaultQuery, option),
|
|
53
|
+
byQuery: <Key extends keyof Doc & string>(
|
|
54
|
+
queryKeys: readonly Key[],
|
|
55
|
+
defaultQuery: QueryOf<unknown> = {},
|
|
56
|
+
option: LoaderOption = {},
|
|
57
|
+
) => new LoaderInfo<Doc, Key, Pick<Doc, Key>>("query", queryKeys as Key[], defaultQuery, option),
|
|
37
58
|
});
|
|
38
59
|
|
|
39
60
|
export type LoaderBuilder<Doc = any> = (builder: ReturnType<typeof makeLoaderBuilder<Doc>>) => {
|
|
@@ -217,7 +217,12 @@ export class DocumentQueryEvaluator {
|
|
|
217
217
|
return this.#has(read, operand);
|
|
218
218
|
case "contains":
|
|
219
219
|
|
|
220
|
-
return
|
|
220
|
+
return (
|
|
221
|
+
read.value !== null &&
|
|
222
|
+
DocumentQueryEvaluator.#foldAscii(String(read.value)).includes(
|
|
223
|
+
DocumentQueryEvaluator.#foldAscii(String(operand)),
|
|
224
|
+
)
|
|
225
|
+
);
|
|
221
226
|
}
|
|
222
227
|
}
|
|
223
228
|
|
|
@@ -313,6 +318,10 @@ export class DocumentQueryEvaluator {
|
|
|
313
318
|
return leftPoints.length === rightPoints.length ? 0 : leftPoints.length < rightPoints.length ? -1 : 1;
|
|
314
319
|
}
|
|
315
320
|
|
|
321
|
+
static #foldAscii(text: string) {
|
|
322
|
+
return text.replace(/[A-Z]/g, (char) => char.toLowerCase());
|
|
323
|
+
}
|
|
324
|
+
|
|
316
325
|
static #isNode(value: unknown): value is DocumentQueryNode {
|
|
317
326
|
return !!value && typeof value === "object" && "kind" in value;
|
|
318
327
|
}
|
|
@@ -544,7 +544,7 @@ export class FetchClient {
|
|
|
544
544
|
|
|
545
545
|
const anyCruGuards = signal.cruGuards ?? signal.createGuards ?? signal.updateGuards ?? signal.removeGuards;
|
|
546
546
|
const updateGuards = signal.updateGuards ?? signal.cruGuards;
|
|
547
|
-
if (
|
|
547
|
+
if (signal.getGuards) {
|
|
548
548
|
this.#setHandlerFactory(names.viewModel, () =>
|
|
549
549
|
this.#makeModelHandleFn(refName, names.model, names.viewModel, `${refName}View`),
|
|
550
550
|
);
|
|
@@ -557,6 +557,8 @@ export class FetchClient {
|
|
|
557
557
|
return { refName, [`${refName}Obj`]: modelObj, [`${refName}ViewAt`]: new Date() };
|
|
558
558
|
}) as FetchHandler,
|
|
559
559
|
);
|
|
560
|
+
}
|
|
561
|
+
if (signal.getGuards && anyCruGuards) {
|
|
560
562
|
this.#setHandlerFactory(names.editModel, () =>
|
|
561
563
|
this.#makeModelHandleFn(refName, names.model, names.editModel, `${refName}Edit`),
|
|
562
564
|
);
|
|
@@ -569,17 +571,17 @@ export class FetchClient {
|
|
|
569
571
|
return { refName, [`${refName}Obj`]: modelObj, [`${refName}ViewAt`]: new Date() };
|
|
570
572
|
}) as FetchHandler,
|
|
571
573
|
);
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
574
|
+
}
|
|
575
|
+
if (updateGuards) {
|
|
576
|
+
this.#setHandlerFactory(
|
|
577
|
+
names.mergeModel,
|
|
578
|
+
() =>
|
|
579
|
+
(async (modelOrId: string | { id: string }, data: UnknownRecord, option?: FetchPolicy) => {
|
|
580
|
+
const id = typeof modelOrId === "string" ? modelOrId : modelOrId.id;
|
|
581
|
+
const updateFn = this.#requireHandler(names.updateModel, names.mergeModel);
|
|
582
|
+
return await updateFn(id, data, option);
|
|
583
|
+
}) as FetchHandler,
|
|
584
|
+
);
|
|
583
585
|
}
|
|
584
586
|
|
|
585
587
|
this.#setHandlerFactory(
|
|
@@ -207,7 +207,7 @@ export class HttpClient {
|
|
|
207
207
|
const searchPath = searchParams.size > 0 ? `?${searchParams.toString()}` : "";
|
|
208
208
|
const paramedPath = path.replace(/:(\w+)/g, (match, p1) => {
|
|
209
209
|
const value = argMap.get(p1);
|
|
210
|
-
return value === null || value === undefined ? match : String(value);
|
|
210
|
+
return value === null || value === undefined ? match : encodeURIComponent(String(value));
|
|
211
211
|
});
|
|
212
212
|
return `${paramedPath}${searchPath}`;
|
|
213
213
|
}
|
package/index.ts
CHANGED
|
@@ -229,9 +229,18 @@ export interface AkanApiConfig {
|
|
|
229
229
|
websocketPrefix: string;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
+
export interface AkanDatabaseConfig {
|
|
233
|
+
/**
|
|
234
|
+
* The modes this app's build can run in. `akan build` bundles the drivers of each, the image lets a deployment
|
|
235
|
+
* pick one of them with `AKAN_DATABASE_MODE` and no other, and `akan start` runs the first unless the shell names
|
|
236
|
+
* another. A deployment of a build carrying several has to name one.
|
|
237
|
+
*/
|
|
238
|
+
modes: DatabaseMode[];
|
|
239
|
+
}
|
|
240
|
+
|
|
232
241
|
export interface AppConfigResult {
|
|
233
242
|
docker: DockerConfig;
|
|
234
|
-
|
|
243
|
+
database: AkanDatabaseConfig;
|
|
235
244
|
/**
|
|
236
245
|
* Where this app mounts its endpoints. Declared here rather than only in `main.ts` because the value is baked
|
|
237
246
|
* into every client bundle: a prebuilt CSR shell or a mobile bundle never reaches the server that would tell
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[crossTest] 58035 - 09/25/2026, 16:51:41 PM VERBOSE crossTest is serving on port 47811 +114ms
|
|
2
|
+
[crossTest] 58035 - 09/25/2026, 16:51:41 PM VERBOSE 🚀 crossTest is running on port 47811 +117ms
|
|
3
|
+
[scheduler] 58035 - 09/25/2026, 16:52:41 PM DEBUG Schedule interval searchIndexRetry finished 2ms +60110ms
|
|
4
|
+
[scheduler] 58035 - 09/25/2026, 16:53:41 PM DEBUG Schedule interval searchIndexRetry finished 1ms +120110ms
|
|
5
|
+
[crossTest] 58035 - 09/25/2026, 16:53:57 PM DEBUG Received SIGTERM, starting graceful shutdown... +135947ms
|
|
6
|
+
[crossTest] 58035 - 09/25/2026, 16:53:57 PM INFO Shutting down gracefully... +135947ms
|
|
7
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Running destroy internals... +135947ms
|
|
8
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Destroy internals in 1ms +135948ms
|
|
9
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Destroying services... +135948ms
|
|
10
|
+
[BaseService] 58035 - 09/25/2026, 16:53:57 PM VERBOSE base service destroying... +135948ms
|
|
11
|
+
[AgentService] 58035 - 09/25/2026, 16:53:57 PM VERBOSE agent service destroying... +135948ms
|
|
12
|
+
[CrossItemService] 58035 - 09/25/2026, 16:53:57 PM VERBOSE crossItem service destroying... +135948ms
|
|
13
|
+
[BaseService] 58035 - 09/25/2026, 16:53:57 PM VERBOSE base service destroyed in 0ms +135948ms
|
|
14
|
+
[AgentService] 58035 - 09/25/2026, 16:53:57 PM VERBOSE agent service destroyed in 0ms +135948ms
|
|
15
|
+
[CrossItemService] 58035 - 09/25/2026, 16:53:57 PM VERBOSE crossItem service destroyed in 0ms +135948ms
|
|
16
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Destroy services in 0ms +135948ms
|
|
17
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Destroying adaptors... +135948ms
|
|
18
|
+
[crossItemModel] 58035 - 09/25/2026, 16:53:57 PM VERBOSE crossItemModel adaptor destroying... +135948ms
|
|
19
|
+
[crossItemModel] 58035 - 09/25/2026, 16:53:57 PM VERBOSE crossItemModel adaptor destroyed in 0ms +135948ms
|
|
20
|
+
[sqliteDatabase] 58035 - 09/25/2026, 16:53:57 PM VERBOSE sqliteDatabase adaptor destroying... +135948ms
|
|
21
|
+
[sqliteDatabase] 58035 - 09/25/2026, 16:53:57 PM VERBOSE sqliteDatabase adaptor destroyed in 5ms +135953ms
|
|
22
|
+
[bullQueue] 58035 - 09/25/2026, 16:53:57 PM VERBOSE bullQueue adaptor destroying... +135953ms
|
|
23
|
+
[scheduler] 58035 - 09/25/2026, 16:53:57 PM VERBOSE scheduler adaptor destroying... +135953ms
|
|
24
|
+
[wsRedis] 58035 - 09/25/2026, 16:53:57 PM VERBOSE wsRedis adaptor destroying... +135953ms
|
|
25
|
+
[scheduler] 58035 - 09/25/2026, 16:53:57 PM VERBOSE scheduler adaptor destroyed in 0ms +135953ms
|
|
26
|
+
[bullQueue] 58035 - 09/25/2026, 16:53:57 PM VERBOSE bullQueue adaptor destroyed in 0ms +135953ms
|
|
27
|
+
[wsRedis] 58035 - 09/25/2026, 16:53:57 PM VERBOSE WebSocket Redis adaptor destroyed +135957ms
|
|
28
|
+
[wsRedis] 58035 - 09/25/2026, 16:53:57 PM VERBOSE wsRedis adaptor destroyed in 4ms +135957ms
|
|
29
|
+
[redisCache] 58035 - 09/25/2026, 16:53:57 PM VERBOSE redisCache adaptor destroying... +135957ms
|
|
30
|
+
[blobStorage] 58035 - 09/25/2026, 16:53:57 PM VERBOSE blobStorage adaptor destroying... +135957ms
|
|
31
|
+
[consoleLogger] 58035 - 09/25/2026, 16:53:57 PM VERBOSE consoleLogger adaptor destroying... +135957ms
|
|
32
|
+
[jsonCompressor] 58035 - 09/25/2026, 16:53:57 PM VERBOSE jsonCompressor adaptor destroying... +135957ms
|
|
33
|
+
[openaiLlm] 58035 - 09/25/2026, 16:53:57 PM VERBOSE openaiLlm adaptor destroying... +135957ms
|
|
34
|
+
[llmAdaptorRole] 58035 - 09/25/2026, 16:53:57 PM VERBOSE llmAdaptorRole adaptor destroying... +135957ms
|
|
35
|
+
[redisCache] 58035 - 09/25/2026, 16:53:57 PM VERBOSE redisCache adaptor destroyed in 0ms +135957ms
|
|
36
|
+
[blobStorage] 58035 - 09/25/2026, 16:53:57 PM VERBOSE blobStorage adaptor destroyed in 0ms +135957ms
|
|
37
|
+
[consoleLogger] 58035 - 09/25/2026, 16:53:57 PM VERBOSE consoleLogger adaptor destroyed in 0ms +135957ms
|
|
38
|
+
[jsonCompressor] 58035 - 09/25/2026, 16:53:57 PM VERBOSE jsonCompressor adaptor destroyed in 0ms +135957ms
|
|
39
|
+
[openaiLlm] 58035 - 09/25/2026, 16:53:57 PM VERBOSE openaiLlm adaptor destroyed in 0ms +135957ms
|
|
40
|
+
[llmAdaptorRole] 58035 - 09/25/2026, 16:53:57 PM VERBOSE llmAdaptorRole adaptor destroyed in 0ms +135957ms
|
|
41
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Destroy adaptors in 9ms +135957ms
|
|
42
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Destroying uses... +135957ms
|
|
43
|
+
[DiLifecycle] 58035 - 09/25/2026, 16:53:57 PM VERBOSE Destroy uses in 0ms +135957ms
|
|
44
|
+
[crossTest] 58035 - 09/25/2026, 16:53:57 PM INFO Shutdown completed successfully in 10ms +135957ms
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[crossTest] 59872 - 09/25/2026, 16:53:58 PM VERBOSE crossTest is serving on port 47811 +109ms
|
|
2
|
+
[crossTest] 59872 - 09/25/2026, 16:53:58 PM VERBOSE 🚀 crossTest is running on port 47811 +112ms
|
|
3
|
+
[crossTest] 59872 - 09/25/2026, 16:54:10 PM DEBUG Received SIGTERM, starting graceful shutdown... +11999ms
|
|
4
|
+
[crossTest] 59872 - 09/25/2026, 16:54:10 PM INFO Shutting down gracefully... +11999ms
|
|
5
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Running destroy internals... +12000ms
|
|
6
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Destroy internals in 0ms +12000ms
|
|
7
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Destroying services... +12000ms
|
|
8
|
+
[BaseService] 59872 - 09/25/2026, 16:54:10 PM VERBOSE base service destroying... +12000ms
|
|
9
|
+
[AgentService] 59872 - 09/25/2026, 16:54:10 PM VERBOSE agent service destroying... +12000ms
|
|
10
|
+
[CrossItemService] 59872 - 09/25/2026, 16:54:10 PM VERBOSE crossItem service destroying... +12000ms
|
|
11
|
+
[BaseService] 59872 - 09/25/2026, 16:54:10 PM VERBOSE base service destroyed in 0ms +12000ms
|
|
12
|
+
[AgentService] 59872 - 09/25/2026, 16:54:10 PM VERBOSE agent service destroyed in 0ms +12000ms
|
|
13
|
+
[CrossItemService] 59872 - 09/25/2026, 16:54:10 PM VERBOSE crossItem service destroyed in 0ms +12000ms
|
|
14
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Destroy services in 0ms +12000ms
|
|
15
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Destroying adaptors... +12000ms
|
|
16
|
+
[crossItemModel] 59872 - 09/25/2026, 16:54:10 PM VERBOSE crossItemModel adaptor destroying... +12000ms
|
|
17
|
+
[crossItemModel] 59872 - 09/25/2026, 16:54:10 PM VERBOSE crossItemModel adaptor destroyed in 0ms +12000ms
|
|
18
|
+
[sqliteDatabase] 59872 - 09/25/2026, 16:54:10 PM VERBOSE sqliteDatabase adaptor destroying... +12000ms
|
|
19
|
+
[sqliteDatabase] 59872 - 09/25/2026, 16:54:10 PM VERBOSE sqliteDatabase adaptor destroyed in 5ms +12005ms
|
|
20
|
+
[bullQueue] 59872 - 09/25/2026, 16:54:10 PM VERBOSE bullQueue adaptor destroying... +12005ms
|
|
21
|
+
[scheduler] 59872 - 09/25/2026, 16:54:10 PM VERBOSE scheduler adaptor destroying... +12005ms
|
|
22
|
+
[wsRedis] 59872 - 09/25/2026, 16:54:10 PM VERBOSE wsRedis adaptor destroying... +12005ms
|
|
23
|
+
[scheduler] 59872 - 09/25/2026, 16:54:10 PM VERBOSE scheduler adaptor destroyed in 1ms +12006ms
|
|
24
|
+
[bullQueue] 59872 - 09/25/2026, 16:54:10 PM VERBOSE bullQueue adaptor destroyed in 1ms +12006ms
|
|
25
|
+
[wsRedis] 59872 - 09/25/2026, 16:54:10 PM VERBOSE WebSocket Redis adaptor destroyed +12010ms
|
|
26
|
+
[wsRedis] 59872 - 09/25/2026, 16:54:10 PM VERBOSE wsRedis adaptor destroyed in 5ms +12010ms
|
|
27
|
+
[redisCache] 59872 - 09/25/2026, 16:54:10 PM VERBOSE redisCache adaptor destroying... +12010ms
|
|
28
|
+
[blobStorage] 59872 - 09/25/2026, 16:54:10 PM VERBOSE blobStorage adaptor destroying... +12010ms
|
|
29
|
+
[consoleLogger] 59872 - 09/25/2026, 16:54:10 PM VERBOSE consoleLogger adaptor destroying... +12010ms
|
|
30
|
+
[jsonCompressor] 59872 - 09/25/2026, 16:54:10 PM VERBOSE jsonCompressor adaptor destroying... +12010ms
|
|
31
|
+
[openaiLlm] 59872 - 09/25/2026, 16:54:10 PM VERBOSE openaiLlm adaptor destroying... +12010ms
|
|
32
|
+
[llmAdaptorRole] 59872 - 09/25/2026, 16:54:10 PM VERBOSE llmAdaptorRole adaptor destroying... +12010ms
|
|
33
|
+
[redisCache] 59872 - 09/25/2026, 16:54:10 PM VERBOSE redisCache adaptor destroyed in 0ms +12010ms
|
|
34
|
+
[blobStorage] 59872 - 09/25/2026, 16:54:10 PM VERBOSE blobStorage adaptor destroyed in 0ms +12010ms
|
|
35
|
+
[consoleLogger] 59872 - 09/25/2026, 16:54:10 PM VERBOSE consoleLogger adaptor destroyed in 0ms +12010ms
|
|
36
|
+
[jsonCompressor] 59872 - 09/25/2026, 16:54:10 PM VERBOSE jsonCompressor adaptor destroyed in 0ms +12010ms
|
|
37
|
+
[openaiLlm] 59872 - 09/25/2026, 16:54:10 PM VERBOSE openaiLlm adaptor destroyed in 0ms +12010ms
|
|
38
|
+
[llmAdaptorRole] 59872 - 09/25/2026, 16:54:10 PM VERBOSE llmAdaptorRole adaptor destroyed in 0ms +12010ms
|
|
39
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Destroy adaptors in 10ms +12010ms
|
|
40
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Destroying uses... +12010ms
|
|
41
|
+
[DiLifecycle] 59872 - 09/25/2026, 16:54:10 PM VERBOSE Destroy uses in 0ms +12010ms
|
|
42
|
+
[crossTest] 59872 - 09/25/2026, 16:54:10 PM INFO Shutdown completed successfully in 11ms +12010ms
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
[crossTest] 60280 - 09/25/2026, 16:54:26 PM VERBOSE crossTest is serving on port 47811 +111ms
|
|
2
|
+
[crossTest] 60280 - 09/25/2026, 16:54:26 PM VERBOSE 🚀 crossTest is running on port 47811 +114ms
|
|
3
|
+
[scheduler] 60280 - 09/25/2026, 16:55:26 PM DEBUG Schedule interval searchIndexRetry finished 3ms +60108ms
|
|
4
|
+
[crossTest] 60280 - 09/25/2026, 16:56:12 PM DEBUG Received SIGTERM, starting graceful shutdown... +105905ms
|
|
5
|
+
[crossTest] 60280 - 09/25/2026, 16:56:12 PM INFO Shutting down gracefully... +105905ms
|
|
6
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Running destroy internals... +105905ms
|
|
7
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Destroy internals in 0ms +105905ms
|
|
8
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Destroying services... +105905ms
|
|
9
|
+
[BaseService] 60280 - 09/25/2026, 16:56:12 PM VERBOSE base service destroying... +105906ms
|
|
10
|
+
[AgentService] 60280 - 09/25/2026, 16:56:12 PM VERBOSE agent service destroying... +105906ms
|
|
11
|
+
[CrossItemService] 60280 - 09/25/2026, 16:56:12 PM VERBOSE crossItem service destroying... +105906ms
|
|
12
|
+
[BaseService] 60280 - 09/25/2026, 16:56:12 PM VERBOSE base service destroyed in 0ms +105906ms
|
|
13
|
+
[AgentService] 60280 - 09/25/2026, 16:56:12 PM VERBOSE agent service destroyed in 0ms +105906ms
|
|
14
|
+
[CrossItemService] 60280 - 09/25/2026, 16:56:12 PM VERBOSE crossItem service destroyed in 0ms +105906ms
|
|
15
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Destroy services in 1ms +105906ms
|
|
16
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Destroying adaptors... +105906ms
|
|
17
|
+
[crossItemModel] 60280 - 09/25/2026, 16:56:12 PM VERBOSE crossItemModel adaptor destroying... +105906ms
|
|
18
|
+
[crossItemModel] 60280 - 09/25/2026, 16:56:12 PM VERBOSE crossItemModel adaptor destroyed in 0ms +105906ms
|
|
19
|
+
[sqliteDatabase] 60280 - 09/25/2026, 16:56:12 PM VERBOSE sqliteDatabase adaptor destroying... +105906ms
|
|
20
|
+
[sqliteDatabase] 60280 - 09/25/2026, 16:56:12 PM VERBOSE sqliteDatabase adaptor destroyed in 4ms +105910ms
|
|
21
|
+
[bullQueue] 60280 - 09/25/2026, 16:56:12 PM VERBOSE bullQueue adaptor destroying... +105910ms
|
|
22
|
+
[scheduler] 60280 - 09/25/2026, 16:56:12 PM VERBOSE scheduler adaptor destroying... +105910ms
|
|
23
|
+
[wsRedis] 60280 - 09/25/2026, 16:56:12 PM VERBOSE wsRedis adaptor destroying... +105910ms
|
|
24
|
+
[scheduler] 60280 - 09/25/2026, 16:56:12 PM VERBOSE scheduler adaptor destroyed in 1ms +105911ms
|
|
25
|
+
[bullQueue] 60280 - 09/25/2026, 16:56:12 PM VERBOSE bullQueue adaptor destroyed in 1ms +105911ms
|
|
26
|
+
[wsRedis] 60280 - 09/25/2026, 16:56:12 PM VERBOSE WebSocket Redis adaptor destroyed +105912ms
|
|
27
|
+
[wsRedis] 60280 - 09/25/2026, 16:56:12 PM VERBOSE wsRedis adaptor destroyed in 2ms +105912ms
|
|
28
|
+
[redisCache] 60280 - 09/25/2026, 16:56:12 PM VERBOSE redisCache adaptor destroying... +105912ms
|
|
29
|
+
[blobStorage] 60280 - 09/25/2026, 16:56:12 PM VERBOSE blobStorage adaptor destroying... +105912ms
|
|
30
|
+
[consoleLogger] 60280 - 09/25/2026, 16:56:12 PM VERBOSE consoleLogger adaptor destroying... +105912ms
|
|
31
|
+
[jsonCompressor] 60280 - 09/25/2026, 16:56:12 PM VERBOSE jsonCompressor adaptor destroying... +105912ms
|
|
32
|
+
[openaiLlm] 60280 - 09/25/2026, 16:56:12 PM VERBOSE openaiLlm adaptor destroying... +105912ms
|
|
33
|
+
[llmAdaptorRole] 60280 - 09/25/2026, 16:56:12 PM VERBOSE llmAdaptorRole adaptor destroying... +105912ms
|
|
34
|
+
[redisCache] 60280 - 09/25/2026, 16:56:12 PM VERBOSE redisCache adaptor destroyed in 0ms +105912ms
|
|
35
|
+
[blobStorage] 60280 - 09/25/2026, 16:56:12 PM VERBOSE blobStorage adaptor destroyed in 0ms +105912ms
|
|
36
|
+
[consoleLogger] 60280 - 09/25/2026, 16:56:12 PM VERBOSE consoleLogger adaptor destroyed in 0ms +105912ms
|
|
37
|
+
[jsonCompressor] 60280 - 09/25/2026, 16:56:12 PM VERBOSE jsonCompressor adaptor destroyed in 0ms +105912ms
|
|
38
|
+
[openaiLlm] 60280 - 09/25/2026, 16:56:12 PM VERBOSE openaiLlm adaptor destroyed in 1ms +105913ms
|
|
39
|
+
[llmAdaptorRole] 60280 - 09/25/2026, 16:56:12 PM VERBOSE llmAdaptorRole adaptor destroyed in 1ms +105913ms
|
|
40
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Destroy adaptors in 7ms +105913ms
|
|
41
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Destroying uses... +105913ms
|
|
42
|
+
[DiLifecycle] 60280 - 09/25/2026, 16:56:12 PM VERBOSE Destroy uses in 0ms +105913ms
|
|
43
|
+
[crossTest] 60280 - 09/25/2026, 16:56:12 PM INFO Shutdown completed successfully in 8ms +105913ms
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[crossTest] 61977 - 09/25/2026, 16:56:22 PM VERBOSE crossTest is serving on port 47811 +113ms
|
|
2
|
+
[crossTest] 61977 - 09/25/2026, 16:56:22 PM VERBOSE 🚀 crossTest is running on port 47811 +116ms
|
|
3
|
+
[crossItemSliceEndpoint] 61977 - 09/25/2026, 16:56:22 PM DEBUG Before mutation-createCrossItem / 1790322982110 +171ms
|
|
4
|
+
[crossItemSliceEndpoint] 61977 - 09/25/2026, 16:56:22 PM DEBUG After mutation-createCrossItem / 2ms +173ms
|
|
5
|
+
[crossTest] 61977 - 09/25/2026, 16:57:03 PM DEBUG Received SIGTERM, starting graceful shutdown... +41514ms
|
|
6
|
+
[crossTest] 61977 - 09/25/2026, 16:57:03 PM INFO Shutting down gracefully... +41515ms
|
|
7
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Running destroy internals... +41515ms
|
|
8
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Destroy internals in 0ms +41515ms
|
|
9
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Destroying services... +41515ms
|
|
10
|
+
[BaseService] 61977 - 09/25/2026, 16:57:03 PM VERBOSE base service destroying... +41515ms
|
|
11
|
+
[AgentService] 61977 - 09/25/2026, 16:57:03 PM VERBOSE agent service destroying... +41515ms
|
|
12
|
+
[CrossItemService] 61977 - 09/25/2026, 16:57:03 PM VERBOSE crossItem service destroying... +41515ms
|
|
13
|
+
[BaseService] 61977 - 09/25/2026, 16:57:03 PM VERBOSE base service destroyed in 0ms +41515ms
|
|
14
|
+
[AgentService] 61977 - 09/25/2026, 16:57:03 PM VERBOSE agent service destroyed in 0ms +41515ms
|
|
15
|
+
[CrossItemService] 61977 - 09/25/2026, 16:57:03 PM VERBOSE crossItem service destroyed in 0ms +41515ms
|
|
16
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Destroy services in 0ms +41515ms
|
|
17
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Destroying adaptors... +41515ms
|
|
18
|
+
[crossItemModel] 61977 - 09/25/2026, 16:57:03 PM VERBOSE crossItemModel adaptor destroying... +41515ms
|
|
19
|
+
[crossItemModel] 61977 - 09/25/2026, 16:57:03 PM VERBOSE crossItemModel adaptor destroyed in 1ms +41516ms
|
|
20
|
+
[sqliteDatabase] 61977 - 09/25/2026, 16:57:03 PM VERBOSE sqliteDatabase adaptor destroying... +41516ms
|
|
21
|
+
[sqliteDatabase] 61977 - 09/25/2026, 16:57:03 PM VERBOSE sqliteDatabase adaptor destroyed in 3ms +41519ms
|
|
22
|
+
[bullQueue] 61977 - 09/25/2026, 16:57:03 PM VERBOSE bullQueue adaptor destroying... +41519ms
|
|
23
|
+
[scheduler] 61977 - 09/25/2026, 16:57:03 PM VERBOSE scheduler adaptor destroying... +41519ms
|
|
24
|
+
[wsRedis] 61977 - 09/25/2026, 16:57:03 PM VERBOSE wsRedis adaptor destroying... +41519ms
|
|
25
|
+
[scheduler] 61977 - 09/25/2026, 16:57:03 PM VERBOSE scheduler adaptor destroyed in 0ms +41519ms
|
|
26
|
+
[bullQueue] 61977 - 09/25/2026, 16:57:03 PM VERBOSE bullQueue adaptor destroyed in 0ms +41519ms
|
|
27
|
+
[wsRedis] 61977 - 09/25/2026, 16:57:03 PM VERBOSE WebSocket Redis adaptor destroyed +41521ms
|
|
28
|
+
[wsRedis] 61977 - 09/25/2026, 16:57:03 PM VERBOSE wsRedis adaptor destroyed in 2ms +41521ms
|
|
29
|
+
[redisCache] 61977 - 09/25/2026, 16:57:03 PM VERBOSE redisCache adaptor destroying... +41521ms
|
|
30
|
+
[blobStorage] 61977 - 09/25/2026, 16:57:03 PM VERBOSE blobStorage adaptor destroying... +41521ms
|
|
31
|
+
[consoleLogger] 61977 - 09/25/2026, 16:57:03 PM VERBOSE consoleLogger adaptor destroying... +41521ms
|
|
32
|
+
[jsonCompressor] 61977 - 09/25/2026, 16:57:03 PM VERBOSE jsonCompressor adaptor destroying... +41521ms
|
|
33
|
+
[openaiLlm] 61977 - 09/25/2026, 16:57:03 PM VERBOSE openaiLlm adaptor destroying... +41521ms
|
|
34
|
+
[llmAdaptorRole] 61977 - 09/25/2026, 16:57:03 PM VERBOSE llmAdaptorRole adaptor destroying... +41521ms
|
|
35
|
+
[redisCache] 61977 - 09/25/2026, 16:57:03 PM VERBOSE redisCache adaptor destroyed in 0ms +41521ms
|
|
36
|
+
[blobStorage] 61977 - 09/25/2026, 16:57:03 PM VERBOSE blobStorage adaptor destroyed in 0ms +41521ms
|
|
37
|
+
[consoleLogger] 61977 - 09/25/2026, 16:57:03 PM VERBOSE consoleLogger adaptor destroyed in 0ms +41521ms
|
|
38
|
+
[jsonCompressor] 61977 - 09/25/2026, 16:57:03 PM VERBOSE jsonCompressor adaptor destroyed in 0ms +41521ms
|
|
39
|
+
[openaiLlm] 61977 - 09/25/2026, 16:57:03 PM VERBOSE openaiLlm adaptor destroyed in 0ms +41521ms
|
|
40
|
+
[llmAdaptorRole] 61977 - 09/25/2026, 16:57:03 PM VERBOSE llmAdaptorRole adaptor destroyed in 0ms +41521ms
|
|
41
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Destroy adaptors in 6ms +41521ms
|
|
42
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Destroying uses... +41521ms
|
|
43
|
+
[DiLifecycle] 61977 - 09/25/2026, 16:57:03 PM VERBOSE Destroy uses in 0ms +41521ms
|
|
44
|
+
[crossTest] 61977 - 09/25/2026, 16:57:03 PM INFO Shutdown completed successfully in 6ms +41521ms
|